windows+Anaconda环境下安装BERT成功安装方法及问题汇总
前言
在Windows+Anaconda环境下安装BERT,遇到各种问题,几经磨难,最终成功。接下来,先介绍成功的安装方法,再附上遇到的问题汇总
成功的安装方法
1、创建虚拟环境
注意:必须加上python=3.7.12以创建环境,否在在虚拟环境里直接使用pip会遇到很多问题,有可能导致pip安装的包会挂到其他环境里,导致无法使用
conda create --name bert python=3.7.12
2、切换到创建的虚拟环境
conda activate bert
查看pip 的位置,确保是在虚拟环境下:
(bert) C:\Users\Carino\BERT练习>pip -V
pip 23.0.1 from C:\Users\Carino\.conda\envs\bert\lib\site-packages\pip (python 3.10)
从上面可以看出,pip已经在创建的bert虚拟环境里,因此,接下来可以直接使用pip安装依赖包
3、 安装依赖包,最好使用conda安装
注意:由于使用conda安装招不到BERT相关的依赖包,只能使用pip安装
pip install bert-serving-server -i https://pypi.tuna.tsinghua.edu.cn/simple #服务端
pip install bert-serving-client -i https://pypi.tuna.tsinghua.edu.cn/simple # 客户端
4、下载并解压预训练模型文件
[BERT-Base, Chinese]
5、启动服务
bert-serving-start -model_dir ./chinese_L-12_H-768_A-12/ -num_worker=2
6、服务启动成功
运行成功后,会显示:
I:[33mWORKER-0[0m:use device cpu, load graph from C:\Users\Carino\AppData\Local\Temp\tmpm2mrl2ke
I:[33mWORKER-1[0m:use device cpu, load graph from C:\Users\Carino\AppData\Local\Temp\tmpm2mrl2ke
I:[33mWORKER-0[0m:ready and listening!
I:[33mWORKER-1[0m:ready and listening!
I:[35mVENTILATOR[0m:all set, ready to serve request!
7、编写服务调用程序
编程服务程序BertClient.py
,并将其放在模型文件所在的目录:
from bert_serving.client import BertClient
bc = BertClient()
value = bc.encode(['你真的很优秀', '你很厉害啊'])
print(value)
8、调用服务
启动另一个Anaconda prompt,切换到刚刚创建的bert虚拟环境,运行:
python BertClient.py
9、服务调用成功
服务调用成功后,在服务端会显示:
I:[35mVENTILATOR[0m:new config request req id: 1 client: b'c736012d-9e44-4cdd-8861-55bc0bd762ff'
I:[32mSINK[0m:send config client b'c736012d-9e44-4cdd-8861-55bc0bd762ff'
I:[35mVENTILATOR[0m:new encode request req id: 2 size: 3 client: b'c736012d-9e44-4cdd-8861-55bc0bd762ff'
I:[32mSINK[0m:job register size: 3 job id: b'c736012d-9e44-4cdd-8861-55bc0bd762ff#2'
I:[33mWORKER-1[0m:new job socket: 0 size: 3 client: b'c736012d-9e44-4cdd-8861-55bc0bd762ff#2'
I:[33mWORKER-1[0m:job done size: (3, 768) client: b'c736012d-9e44-4cdd-8861-55bc0bd762ff#2'
I:[32mSINK[0m:collect b'EMBEDDINGS' b'c736012d-9e44-4cdd-8861-55bc0bd762ff#2' (E:3/T:0/A:3)
I:[32mSINK[0m:send back size: 3 job id: b'c736012d-9e44-4cdd-8861-55bc0bd762ff#2'
在客户端会显示:
(bert) C:\Users\Carino\BERT练习\chinese_L-12_H-768_A-12>python BertClient01.py
[[ 0.47229123 -0.4915491 0.43824643 ... 0.07783739 0.4108253-0.7585359 ][ 0.29905218 0.11368733 0.25767356 ... 0.04950948 0.35148147-0.97578394]]
问题汇总及解决办法
1、 NumPy版本过低
当尝试启动服务时,出现错误提示:
FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.
这个是numpy的版本过低导致的,实际测试下来,不影响bert的适应,因此也没有管它
2、protoc版本过低
当尝试启动服务时,出现错误提示:
---以上省略---File "C:\Users\Carino\.conda\envs\bert\lib\site-packages\tensorflow\core\framework\resource_handle_pb2.py", line 41, in <module>serialized_options=None, file=DESCRIPTOR),File "C:\Users\Carino\.conda\envs\bert\lib\site-packages\google\protobuf\descriptor.py", line 561, in __new___message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:1. Downgrade the protobuf package to 3.20.x or lower.2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).More information: https://developers.google.com/protocol-buffers/docs/news/2022-05-06#python-updates
这个是protobuf版本太高导致,需要调整其版本,
查看现有版本:
pip show protobuf(bert) C:\Users\Carino\BERT练习>pip show protobuf
Name: protobuf
Version: 4.22.1
Summary:
Home-page: https://developers.google.com/protocol-buffers/
Author: protobuf@googlegroups.com
Author-email: protobuf@googlegroups.com
License: 3-Clause BSD License
Location: c:\users\carino\.conda\envs\bert\lib\site-packages
Requires:
Required-by: tensorboard, tensorflow
删除现有版本,
pip uninstall protobuf
然后安装低版本
pip install protobuf==3.19.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
3、启动服务失败,缺tensorflow模块
在conda prompt里运行:
bert-serving-start -model_dir ./chinese_L-12_H-768_A-12/ -num_worker=2
报错:
(bert) C:\Users\Carino\BERT练习\chinese_L-12_H-768_A-12>bert-serving-start -model_dir ./chinese_L-12_H-768_A-12/ -num_worker=2
Traceback (most recent call last):File "C:\Users\Carino\.conda\envs\bert\lib\runpy.py", line 196, in _run_module_as_mainreturn _run_code(code, main_globals, None,File "C:\Users\Carino\.conda\envs\bert\lib\runpy.py", line 86, in _run_codeexec(code, run_globals)File "C:\Users\Carino\.conda\envs\bert\Scripts\bert-serving-start.exe\__main__.py", line 4, in <module>File "C:\Users\Carino\.conda\envs\bert\lib\site-packages\bert_serving\server\__init__.py", line 29, in <module>_tf_ver_ = check_tf_version()File "C:\Users\Carino\.conda\envs\bert\lib\site-packages\bert_serving\server\helper.py", line 170, in check_tf_versionimport tensorflow as tf
ModuleNotFoundError: No module named 'tensorflow'
解决办法就是安装TensorFlow
4、已安装TensorFlow,但是启动bert-serving-server失败,提示 self.graph_path, self.bert_config = pool.apply(optimize_graph, (self.args,))TypeError: cannot unpack non-iterable NoneType object
pip install tensorflow==2.10.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
继续尝试启动服务,报错:
(bert) C:\Users\Carino>bert-serving-start -model_dir ./chinese_L-12_H-768_A-12/ -num_worker=2
C:\Users\Carino\.conda\envs\bert\lib\site-packages\bert_serving\server\helper.py:175: UserWarning: Tensorflow 2.10.0 is not tested! It may or may not work. Feel free to submit an issue at https://github.com/hanxiao/bert-as-service/issues/warnings.warn('Tensorflow %s is not tested! It may or may not work. '
usage: C:\Users\Carino\.conda\envs\bert\Scripts\bert-serving-start -model_dir ./chinese_L-12_H-768_A-12/ -num_worker=2ARG VALUE
__________________________________________________ckpt_name = bert_model.ckptconfig_name = bert_config.jsoncors = *cpu = Falsedevice_map = []do_lower_case = Truefixed_embed_length = Falsefp16 = Falsegpu_memory_fraction = 0.5graph_tmp_dir = Nonehttp_max_connect = 10http_port = Nonemask_cls_sep = Falsemax_batch_size = 256max_seq_len = 25model_dir = ./chinese_L-12_H-768_A-12/
no_position_embeddings = Falseno_special_token = Falsenum_worker = 2pooling_layer = [-2]pooling_strategy = REDUCE_MEANport = 5555port_out = 5556prefetch_size = 10priority_batch_size = 16
show_tokens_to_client = Falsetuned_model_dir = Noneverbose = Falsexla = FalseI:[35mVENTILATOR[0m:freeze, optimize and export graph, could take a while...
C:\Users\Carino\.conda\envs\bert\lib\site-packages\bert_serving\server\helper.py:175: UserWarning: Tensorflow 2.10.0 is not tested! It may or may not work. Feel free to submit an issue at https://github.com/hanxiao/bert-as-service/issues/warnings.warn('Tensorflow %s is not tested! It may or may not work. '
E:[36mGRAPHOPT[0m:fail to optimize the graph!
Traceback (most recent call last):File "C:\Users\Carino\.conda\envs\bert\lib\runpy.py", line 196, in _run_module_as_mainreturn _run_code(code, main_globals, None,File "C:\Users\Carino\.conda\envs\bert\lib\runpy.py", line 86, in _run_codeexec(code, run_globals)File "C:\Users\Carino\.conda\envs\bert\Scripts\bert-serving-start.exe\__main__.py", line 7, in <module>File "C:\Users\Carino\.conda\envs\bert\lib\site-packages\bert_serving\server\cli\__init__.py", line 4, in mainwith BertServer(get_run_args()) as server:File "C:\Users\Carino\.conda\envs\bert\lib\site-packages\bert_serving\server\__init__.py", line 71, in __init__self.graph_path, self.bert_config = pool.apply(optimize_graph, (self.args,))
TypeError: cannot unpack non-iterable NoneType object
查找原因,说是因为TensorFlow的版本过高,需要降低到TensorFlow==1.*版本,首先卸载已经安装好的TensorFlow,
pip uninstall tensorflow
下载TensorFlow1.* 的.whl安装文件:tensorflow · PyPI
切换到.whl
文件所在路径,执行安装命令:
pip install tensorflow-1.13.1-cp37-cp37m-win_amd64.whl
5、使用pip安装.whl文件失败
虽然已经将.whl
文件下载到本地,但在使用pip安装.whl
文件时,仍然会从https://pypi.org/
上下载其他的依赖包,在这过程中,因为网络的原因,要么提示无法连接,要么提示无法找到指定版本的依赖包,真的很沮丧。
但是,经过多次在Anaconda prompt里反复执行安装命令,
pip install tensorflow-1.13.1-cp37-cp37m-win_amd64.whl
最终安装成功。
6、如果遇到各种依赖库版本的问题,最好的办法就是建一个新的虚拟环境,选择其他的版本,重新安装
其他可能会遇到的问题
anaconda删除虚拟环境
conda remove -n <env-name> --all
anaconda查看环境包
conda info --envs
查看pip安装包的依赖包及版本
使用pipdeptree -p <pkg-name>
查看
为什么conda的base环境里明明有pip,但在创建的其他虚拟环境里使用pip安装依赖包时,却安装到了系统环境的Python路径下
原因是因为在创建虚拟环境时,没有添加python=3.8
类似的参数,导致没有在虚拟环境里安装Python,因此无法使用base环境下的pip
conda安装依赖包如何添加镜像源
要添加镜像源以加速conda包的下载,可以按照以下步骤操作:
- 打开终端或Anaconda Prompt。
- 输入以下命令:
conda config --add channels <镜像源地址>
其中,<镜像源地址>是你想要添加的镜像源地址,可以是国内的镜像源如清华大学、中科大等,也可以是其他自行维护的镜像源。
例如,假设要添加清华大学的镜像源,可以输入以下命令:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- 通过以下命令验证是否添加成功:
conda config --show channels
会打印出当前的镜像源列表,包括官方和你刚刚添加的镜像源。
现在,当你使用conda安装依赖包时,它们将从你添加的镜像源中下载,大大加快下载速度。
如何查看conda安装的依赖包
你可以使用conda env export
命令来查看当前环境中所有包及其依赖关系。
conda env export --name myenv > myenv.yml
这将导出确认许可的环境myenv
并将其保存在名为myenv.yml
的文件中。
你还可以使用conda list
命令来列出当前环境中安装的所有包,包括其版本和构建信息。
conda list
这将列出所有包的名称、版本和构建信息。
你可以学习如何使用conda
的其他功能。
conda里如何安装bert-serving-server
- 首先需要确保已经在conda中安装了bert-serving-server的依赖包:
conda install tensorflow-gpu
- 接着,在conda中安装bert-serving-server:
conda install -c anaconda bert-serving-server
- 确认是否安装成功
bert-serving-start -version
输出的版本号即为服务器版本,如果输出了版本号,则说明安装成功,可以开始使用bert-serving-server。
CMD里如何启动bert-server
- 安装bert-serving-server模块,可以使用pip命令安装:
pip install bert-serving-server
。 - 下载需要使用的BERT模型并解压缩,可以在官方GitHub仓库中找到。例如,下载中文BERT模型:
wget https://storage.googleapis.com/bert_models/2018_11_03/chinese_L-12_H-768_A-12.zip
unzip chinese_L-12_H-768_A-12.zip -d chinese_L-12_H-768_A-12/
- 在命令行中进入解压缩后的BERT模型目录下执行bert-serving-start命令,启动BERT Server:
bert-serving-start -model_dir chinese_L-12_H-768_A-12/ -num_worker=4 -max_seq_len=50
其中,-num_worker表示启动的进程数,-max_seq_len表示最大处理文本长度。 4. 启动成功后,可以通过HTTP请求访问BERT Server提供的API接口进行使用。例如,使用Python代码:
from bert_serving.client import BertClient
bc = BertClient()
bc.encode(['输入文本'])
这将返回一个嵌套列表,每个列表代表一个输入。列表中包含一个NumPy数组,表示该输入文本的特征表示。
如何查看BERT-SERVING-SERVER是否启动
为了指导bert-serving-server是否启动,你可以尝试以下步骤:
- 检查是否安装了bert-serving-server。在命令行中输入
bert-serving-start
,如果出现“命令未找到”的错误消息,则需要先安装bert-serving-server。 - 在命令行中输入以下命令启动bert-serving-server:
bert-serving-start -model_dir /path/to/bert_model/ -num_worker=4
请将上述命令中的 /path/to/bert_model/
替换为你实际的BERT模型文件路径,并根据需要指定 -num_worker
参数(默认值是1,可以增加多个工作线程来提高性能)。
- 查看命令行输出以确认BERT服务器是否已经启动。如果一切正常,应该看到类似以下的输出:
[2019-12-19 02:01:53,810] INFO:root:initialize variables ...
[2019-12-19 02:01:56,667] INFO:tensorflow:Saver not created because there are no variables in the graph to restore
[2019-12-19 02:01:56,812] INFO:root:running at localhost:5555...
这表明bert-serving-server已经成功启动,并正在监听端口5555上的请求。
- 在另一个终端窗口中运行BERT客户端代码,以测试BERT服务器是否正常运行。例如,你可以使用bert-client Python库来构建一个客户端程序:
from bert_serving.client import BertClient
bc = BertClient()
result = bc.encode(['Hello, World!'])
print(result)
如果BERT服务器正常运行,应该会输出一组向量值,可用于执行文本分类、情感分析等NLP任务。
相关文章:
windows+Anaconda环境下安装BERT成功安装方法及问题汇总
前言 在WindowsAnaconda环境下安装BERT,遇到各种问题,几经磨难,最终成功。接下来,先介绍成功的安装方法,再附上遇到的问题汇总 成功的安装方法 1、创建虚拟环境 注意:必须加上python3.7.12以创建环境&a…...
git - 简易指南
git - 简易指南 创建新仓库 创建新文件夹,打开,然后执行 git init 以创建新的 git 仓库。 检出仓库 执行如下命令以创建一个本地仓库的克隆版本: git clone /path/to/repository 如果是远端服务器上的仓库,你的命令会是这个样…...
[论文笔记]Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context
引言 我们知道Transformer很好用,但它设定的最长长度是512。像一篇文章超过512个token是很容易的,那么我们在处理这种长文本的情况下也想利用Transformer的强大表达能力需要怎么做呢? 本文就带来一种处理长文本的Transformer变种——Transf…...
华为OD机试题 - 找目标字符串(JavaScript)| 机考必刷
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:找目标字符串题目输入输出示例一输入输出说明Code解题思路版权说…...
C++面向对象编程之六:重载操作符(<<,>>,+,+=,==,!=,=)
重载操作符C允许我们重新定义操作符(例如:,-,*,/)等,使其对于我们自定义的类类型对象,也能像内置数据类型(例如:int,float,double&…...
JS_wangEditor富文本编辑器
官网:https://www.wangeditor.com/ 引入 CSS 定义样式 <link href"https://unpkg.com/wangeditor/editorlatest/dist/css/style.css" rel"stylesheet"> <style>#editor—wrapper {border: 1px solid #ccc;z-index: 100; /* 按需定…...
Django实践-06导出excel/pdf/echarts
文章目录Django实践-06导出excel/pdf/echartsDjango实践-06导出excel/pdf/echarts导出excel安装依赖库修改views.py添加excel导出函数修改urls.py添加excel/运行测试导出pdf安装依赖库修改views.py添加pdf导出函数修改urls.py添加pdf/生成前端统计图表修改views.py添加get_teac…...
java并发入门(一)共享模型—Synchronized、Wait/Notify、pack/unpack
一、共享模型—管程 1、共享存在的问题 1.1 共享变量案例 package com.yyds.juc.monitor;import lombok.extern.slf4j.Slf4j;Slf4j(topic "c.MTest1") public class MTest1 {static int counter 0;public static void main(String[] args) throws InterruptedEx…...
Ast2500增加用户自定义功能
备注:这里使用的AMI的开发环境MegaRAC进行AST2500软件开发,并非openlinux版本。1、添加上电后自动执行的任务在PDKAccess.c中列出了系统启动过程中的所有任务,若需要添加功能,在相应的任务中添加自定义线程。一般在两个任务里面添…...
用Python暴力求解德·梅齐里亚克的砝码问题
文章目录固定个数的砝码可称量重量砝码的组合方法40镑砝码的组合问 一个商人有一个40磅的砝码,由于跌落在地而碎成4块。后来,称得每块碎片的重量都是整磅数,而且可以用这4 块来称从1 至40 磅之间的任意整数磅的重物。问这4 块砝码片各重多少&…...
离散Hopfield神经网络的分类——高校科研能力评价
离散Hopfield网络离散Hopfield网络是一种经典的神经网络模型,它的基本原理是利用离散化的神经元和离散化的权值矩阵来实现模式识别和模式恢复的功能。它最初由美国物理学家John Hopfield在1982年提出,是一种单层的全连接神经网络,被广泛应用于…...
Retrofit核心源码分析(三)- Call逻辑分析和扩展机制
在前面的两篇文章中,我们已经对 Retrofit 的注解解析、动态代理、网络请求和响应处理机制有了一定的了解。在这篇文章中,我们将深入分析 Retrofit 的 Call 逻辑,并介绍 Retrofit 的扩展机制。 一、Call 逻辑分析 Call 是 Retrofit 中最基本…...
源码分析spring如和对@Component注解进行BeanDefinition注册的
Spring ioc主要职责为依赖进行处理(依赖注入、依赖查找)、容器以及托管的(java bean、资源配置、事件)资源声明周期管理;在ioc容器启动对元信息进行读取(比如xml bean注解等)、事件管理、国际化等处理;首先…...
C语言--字符串函数1
目录前言strlenstrlen的模拟实现strcpystrcatstrcat的模拟实现strcmpstrcmp的模拟实现strncpystrncatstrncmpstrstrstrchr和strrchrstrstr的模拟实现前言 本章我们将重点介绍处理字符和字符串的库函数的使用和注意事项。 strlen 我们先来看一个我们最熟悉的求字符串长度的库…...
Webstorm使用、nginx启动、FinalShell使用
文章目录 主题设置FinalShellFinalShell nginx 启动历史命令Nginx页面发布配置Webstorm的一些常用快捷键代码生成字体大小修改Webstorm - gitCode 代码拉取webstorm 汉化webstorm导致CPU占用率高方法一 【忽略node_modules】方法二 【设置 - 代码编辑 - 快速预览文档 - 关闭】主…...
源码分析Spring @Configuration注解如何巧夺天空,偷梁换柱。
前言 回想起五年前的一次面试,面试官问Configuration注解和Component注解有什么区别?记得当时的回答是: 相同点:Configuration注解继承于Component注解,都可以用来通过ClassPathBeanDefinitionScanner装载Spring bean…...
vector的使用及模拟实现
目录 一.vector的介绍及使用 1.vector的介绍 2.vector的使用 1.vector的定义 2.vector iterator的使用 3. vector 空间增长问题 4.vector 增删查改 3.vector 迭代器失效问题(重点) 1. 会引起其底层空间改变的操作 2.指定位置元素的删除操作--erase 3. Li…...
“华为杯”研究生数学建模竞赛2007年-【华为杯】A题:基于自助法和核密度估计的膳食暴露评估模型(附获奖论文)
赛题描述 我国是一个拥有13亿人口的发展中国家,每天都在消费大量的各种食品,这批食品是由成千上万的食品加工厂、不可计数的小作坊、几亿农民生产出来的,并且经过较多的中间环节和长途运输后才为广大群众所消费,加之近年来我国经济发展迅速而环境治理没有能够完全跟上,以…...
刷题(第三周)
目录 [CISCN2021 Quals]upload [羊城杯 2020]EasySer [网鼎杯 2020 青龙组]notes [SWPU2019]Web4 [Black Watch 入群题]Web [HFCTF2020]BabyUpload [CISCN2021 Quals]upload 打开界面以后,发现直接给出了源码 <?php if (!isset($_GET["ctf"]))…...
新C++(14):移动语义与右值引用
当你在学习语言的时候,是否经常听到过一种说法,""左边的叫做左值,""右边的叫做右值。这句话对吗?从某种意义上来说,这句话只是说对了一部分。---前言一、什么是左右值?通常认为:左值是一个表示数据的表达式(…...
TCP相关概念
目录 一.滑动窗口 1.1概念 1.2滑动窗口存在的意义 1.3 滑动窗口的大小变化 1.4丢包问题 二.拥塞控制 三.延迟应答 四.捎带应答 五.面向字节流 六.粘包问题 七.TIME_WAIT状态 八.listen第2个参数 九.TCP总结 一.滑动窗口 1.1概念 概念:双方在进行通信时&a…...
MySQL锁篇
MySQL锁篇 一、一条update语句 我们的故事继续发展,我们还是使用t这个表: CREATE TABLE t (id INT PRIMARY KEY,c VARCHAR(100) ) EngineInnoDB CHARSETutf8;现在表里的数据就是这样的: mysql> SELECT * FROM t; —------- | id | c | —…...
SWF (Simple Workflow Service)简介
Amazon Simple Workflow Service (Amazon SWF) 提供了给应用程序异步、分布式处理的流程工具。 SWF可以用在媒体处理、网站应用程序后端、商业流程、数据分析和一系列定义好的任务上。 举个例子,下图表明了一个电商网站的工作流程,其中涉及了程序执行的…...
java(Class 常用方法 获取Class对象六种方式 动态和静态加载 类加载流程)
ClassClass常用方法获取Class对象六种方式哪些类型有Class对象动态和静态加载类加载流程加载阶段连接阶段连接阶段-验证连接阶段-准备连接阶段-解析初始化阶段获取类结构信息Class常用方法 第一步:创建一个实体类 public class Car {public String brand "宝…...
【数据结构】线性表和顺序表
Yan-英杰的主页 悟已往之不谏 知来者之可追 目录 1.线性表 2.顺序表 2.1 静态顺序表 2.2 动态顺序表 2.3移除元素 1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构,常见的线…...
Ubuntu数据库安装(mysql)
##1.下载mysql-apt-config_0.8.22-1_all.deb并且安装 wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb##2.更新apt-updata sudo apt update##3.如果出现如下图情况执行以下命令 [外链图片转存失败,源站可…...
MyBatis-Plus的入门学习
MyBatis-Plus入门学习简介特性快速开始MyBatis-Plus的注解详解Tableld主键生成策略1、数据库自动增长 AUTO2、UUID3、Redis生成id4、MP主键自动生成TableNameTableField自动填充测试方法:update乐观锁select查所有根据id查多个id批量查询简单条件查询(通…...
华为OD机试题 - 内存池(JavaScript)
更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:内存池题目输入输出示例一输入输出说明Code解题思路版权说明华为…...
数据库索引原理
数据库索引的作用是做数据的快速检索,而快速检索实现的本质是数据结构。像二叉树、红黑树、AVL树、B树、B树、哈希等数据结构都可以实现索引,但其中B树效率最高。MySQL数据库索引使用的是B树。二叉树:二叉树中,左子树比根节点小&a…...
字符函数和字符串函数详解(1)
目录前言strlen函数strlensizeofstrcpy函数strcat函数strcmp函数总结前言 最近要调整状态,写的文章质量不佳让大家失望,我现在也在反思我在做什么,我会什么,我学了什么。等我想明白的那天,我一定能跟大家顶峰相见的&a…...
璧山职教中心示范校建设网站/济南最新消息
localStorage简介 使用localStorage可以在浏览器中存储键值对的数据。经常被和localStorage一并提及的是sessionStorage,它们都可以在当浏览器中存储键值对的数据。但是它们之间的区别是:存储在localStorage的数据可以长期保留;而当页面会话结…...
营销策划方案网站/免费发布信息网平台
①在CExampleDlgDlg的头文件中,添加一CBrush的成员变量: class CExampleDlgDlg : public CDialog {... protected: CBrush m_brush; ... }; ---- ②在OnInitDialog()函数中添加如下代码: BOOL CExampleDlgDlg::O…...
防水网站建设/站长工具seo综合查询权重
孙广东 2018.5.12 工具地址: https://sharplab.io/ https://github.com/ashmind/SharpLab 试用一些新语法,观察某些语法糖的实现,还有测试看某些结构生成的MSIL的样子。 在线的工具,...
wordpress主题手机/seo实战密码
1、SPI MSB优先,8Bit寄存器地址与内容; 2、寄存器结构与之前使用的LT8900不同,分为R、W寄存器与特殊功能寄存器; 3、特别注意:在TX、RX、RT中断或者轮询后置1,必须写1清零与清除相应的FIFO,否则…...
政府网站建设如何做/北京seo报价
a) Docker images 命令docker images : 列出本地镜像。docker images [OPTIONS] [REPOSITORY[:TAG]]-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);--digests :显示镜像的摘要信息;-f…...