客快物流大数据项目(二十六):客户关系管理服务器
目录
客户关系管理服务器
一、MySQL
1、Mysql部署
2、Mysql开启binlog日志
3、可能遇到的问题
二、Canal介绍
1、Canal简介
2、Mysql的主备复制原理
3、Canal的工作原理
4、Canal的架构
三、Canal安装部署
1、Canal部署
2、Canal测试
3、常见错误
四、Canal采集业务数据到Kafka
1、配置Canal-Server
2、导入业务数据到Mysql
五、初始化业务数据
1、初始化数据库结构
客户关系管理服务器
客户关系关系服务器需要部署Docker环境,将Mysql与Canal部署到Docker容器中
一、MySQL
1、Mysql部署
操作步骤 | 说明 |
1 | #Docker hub上查找mysql镜像 |
| |
2 | #从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7 |
docker pull mysql:5.7 | |
| |
3 | #创建容器 |
docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 | |
| |
-p 代表端口映射,格式为宿主机映射端口:容器运行端口 | |
-e 代表添加环境变量,MYSQL_ROOT_PASSWORD是root用户的登录密码 | |
4 | #使用mysql客户端连接 |
5 | #进入MySQL容器 |
docker exec -it mysql bash | |
|
2、Mysql开启binlog日志
- 用来记录mysql中的增加 、 删除 、 修改、清空操作,select操作 不会 保存到binlog中
- 必须要 打开 mysql中的binlog功能,才会生成binlog日志
- binlog日志就是一系列的二进制文件
-rw-rw---- 1 mysql mysql 669 11⽉月 10 21:29 mysql-bin.000001
-rw-rw---- 1 mysql mysql 126 11⽉月 10 22:06 mysql-bin.000002
-rw-rw---- 1 mysql mysql 11799 11⽉月 15 18:17 mysql-bin.00000
开启步骤:
操作步骤 | 说明 |
1 | #进入MySQL容器 |
docker exec -it mysql bash | |
| |
2 | #安装vim、ifconfig等命令 |
#更新软件包 | |
apt-get update | |
| |
#安装vim | |
apt-get install -y vim | |
| |
#安装ifconfig | |
apt-get install net-tools | |
3 | #配置my.cnf |
root@dfbf3fdefbdf:/# vim /etc/mysql/my.cnf | |
| |
[mysqld] log-bin=mysql-bin #添加这一行就ok binlog-format=ROW #选择row模式 server_id=1 #配置mysql replaction需要定义,不能和canal的slaveId重复 expire_logs_days=7 # binlog文件保存7天 max_binlog_size = 500m # 每个binlog日志文件大小 | |
vim中使用鼠标右键粘贴,失败。vim的模式: 普通模式下输入“:set mouse-=a”,有效 | |
4 | #重启mysql容器(dfbf3fdefbdf是容器id) |
docker restart dfbf3fdefbdf | |
| |
5 | #进入sql命令行 |
docker exec -it mysql bash | |
mysql -uroot -p123456 | |
| |
6 | #验证 my.cnf 配置是否生效: |
show variables like 'binlog_format'; | |
show variables like 'log_bin'; | |
show master status; | |
|
3、可能遇到的问题
1 | 创建容器时报错: WARNING: IPv4 forwarding is disabled. Networking will not work. ab71b3f089ff3a7538811e79fd3d989b5958383968b1f1eb8ba1dc6f1da3335b |
| |
解决方式: | |
vim /usr/lib/sysctl.d/00-system.conf 添加如下代码:net.ipv4.ip_forward=1 重启网络:systemctl restart network 完成以后,删除当前容器,重新创建新容器。 |
二、Canal介绍
1、Canal简介
canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费
早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。
基于日志增量订阅和消费的业务包括
- 数据库镜像
- 数据库实时备份
- 索引构建和实时维护(拆分异构索引、倒排索引等)
- 业务 cache 刷新
- 带业务逻辑的增量数据处理
当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.x , 5.7.x , 8.0.x
2、Mysql的主备复制原理
- MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫做二进制日志事件binary log events,可以通过 show binlog events 进行查看)
- MySQL slave 将 master 的 binary log events 拷贝到它的中继日志(relay log)
- MySQL slave 重放 relay log 中事件,将数据变更反映它自己的数据
3、Canal的工作原理
- canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave ,向 MySQL master 发送dump 协议
- MySQL master 收到 dump 请求,开始推送 binary log 给 slave (即 canal )
- canal 解析 binary log 对象(原始为 byte 流)
4、Canal的架构
- server 代表一个 canal 运行实例,对应于一个 jvm
- instance 对应于一个数据队列 (1个 canal server 对应 1..n 个 instance )
- instance 下的子模块
- eventParser: 数据源接入,模拟 slave 协议和 master 进行交互,协议解析
- eventSink: Parser 和 Store 链接器,进行数据过滤,加工,分发的工作
- eventStore: 数据存储
- metaManager: 增量订阅 & 消费信息管理器
EventParser在向mysql发送dump命令之前会先从Log Position中获取上次解析成功的位置(如果是第一次启动,则获取初始指定位置或者当前数据段binlog位点)。mysql接受到dump命令后,由EventParser从mysql上pull binlog数据进行解析并传递给EventSink(传递给EventSink模块进行数据存储,是一个阻塞操作,直到存储成功 ),传送成功之后更新Log Position。流程图如下:
- EventSink起到一个类似channel的功能,可以对数据进行过滤、分发/路由(1:n)、归并(n:1)和加工。EventSink是连接EventParser和EventStore的桥梁。
- EventStore实现模式是内存模式,内存结构为环形队列,由三个指针(Put、Get和Ack)标识数据存储和读取的位置。
- MetaManager是增量订阅&消费信息管理器,增量订阅和消费之间的协议包括get/ack/rollback,分别为:
- Message getWithoutAck(int batchSize),允许指定batchSize,一次可以获取多条,每次返回的对象为Message,包含的内容为:batch id[唯一标识]和entries[具体的数据对象]
- void rollback(long batchId),顾名思义,回滚上次的get请求,重新获取数据。基于get获取的batchId进行提交,避免误操作
- void ack(long batchId),顾名思议,确认已经消费成功,通知server删除数据。基于get获取的batchId进行提交,避免误操作
三、Canal安装部署
服务器 | 主机名 | IP | Canal |
客户关系管理服务器 | node1 | 192.168.88.10 | 源端 |
大数据服务器 | node2 | 192.168.88.20 | 目标端 |
1、Canal部署
操作步骤 | 说明 |
1 | #安装canalserver镜像 |
docker pull canal/canal-server:v1.1.2 | |
| |
2 | #通过镜像生成canal-server容器 |
docker run -d --name canal-server \ -e canal.instance.master.address=192.168.88.10:3306 \ -e canal.instance.dbUsername=root \ -e canal.instance.dbPassword=123456 \ -p 11111:11111 \ -d canal/canal-server:v1.1.2 | |
| |
3 | #进入canal-server容器 |
docker exec -it canal-server bash | |
| |
4 | #执行/export/servers/canal/bin目录中的 startup.sh 启动canal |
cd /home/admin/canal-server/bin | |
[root@a9ec635e5c35 bin]# ./startup.sh | |
| |
控制台如果输出如上,表示canal已经启动成功 | |
5 | #进入example日志文件查看是否有报错 |
cd canal-server/logs/example/ cat example.log | |
|
2、Canal测试
- 需求:
将mysql的数据写入到kafka集群
1)创建测试数据库
操作步骤 | 说明 |
1 | #进入sql命令行 |
docker exec -it mysql bash | |
mysql -uroot -p123456 | |
2 | #创建mysql数据库 |
create database if not EXISTS test DEFAULT charset utf8 COLLATE utf8_general_ci; | |
3 | #切换到test数据库 |
use test; | |
4 | #在test数据库创建表 |
DROP TABLE IF EXISTS `userinfo`; CREATE TABLE `userinfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
2)配置canalserver端
操作步骤 | 说明 |
1 | #进入canal-server容器 |
docker exec -it canal-server bash | |
| |
2 | #修改 canal/conf目录中的 canal.properties 文件 |
vi /home/admin/canal-server/conf/canal.properties | |
################################################# ######### common argument ############# ################################################# canal.id = 1 canal.ip = canal.port = 11111 #canal-server监听的端口(TCP模式下,非TCP模式不监听1111端口) canal.metrics.pull.port = 11112 #canal-server metrics.pull监听的端口 canal.zkServers = #集群模式下要配置zookeeper进行协调配置,单机模式可以不用配置 # flush data to zk canal.zookeeper.flush.period = 1000 canal.withoutNetty = false # tcp, kafka, RocketMQ canal.serverMode = kafka #canal-server运行的模式,TCP模式就是直连客户端,不经过中间件。kafka和mq是消息队列的模式 # flush meta cursor/parse position to file canal.file.data.dir = ${canal.conf.dir} #存放数据的路径 canal.file.flush.period = 1000 ## memory store RingBuffer size, should be Math.pow(2,n) canal.instance.memory.buffer.size = 16384 ## memory store RingBuffer used memory unit size , default 1kb canal.instance.memory.buffer.memunit = 1024 ## meory store gets mode used MEMSIZE or ITEMSIZE canal.instance.memory.batch.mode = MEMSIZE canal.instance.memory.rawEntry = true ## detecing config #这里是心跳检查的配置,做HA时会用到 canal.instance.detecting.enable = false #canal.instance.detecting.sql = insert into retl.xdual values(1,now()) on duplicate key update x=now() canal.instance.detecting.sql = select 1 canal.instance.detecting.interval.time = 3 canal.instance.detecting.retry.threshold = 3 canal.instance.detecting.heartbeatHaEnable = false # support maximum transaction size, more than the size of the transaction will be cut into multiple transactions delivery canal.instance.transaction.size = 1024 # mysql fallback connected to new master should fallback times canal.instance.fallbackIntervalInSeconds = 60 # network config canal.instance.network.receiveBufferSize = 16384 canal.instance.network.sendBufferSize = 16384 canal.instance.network.soTimeout = 30 # binlog filter config #binlog过滤的配置,指定过滤那些SQL canal.instance.filter.druid.ddl = true canal.instance.filter.query.dcl = false canal.instance.filter.query.dml = false canal.instance.filter.query.ddl = false canal.instance.filter.table.error = false canal.instance.filter.rows = false canal.instance.filter.transaction.entry = false # binlog format/image check #binlog格式检测,使用ROW模式,非ROW模式也不会报错,但是同步不到数据 canal.instance.binlog.format = ROW,STATEMENT,MIXED canal.instance.binlog.image = FULL,MINIMAL,NOBLOB # binlog ddl isolation canal.instance.get.ddl.isolation = false # parallel parser config #并行解析配置,如果是单个CPU就把下面这个true改为false canal.instance.parser.parallel = true ## concurrent thread number, default 60% available processors, suggest not to exceed Runtime.getRuntime().availableProcessors() #canal.instance.parser.parallelThreadSize = 16 ## disruptor ringbuffer size, must be power of 2 canal.instance.parser.parallelBufferSize = 256 # table meta tsdb info canal.instance.tsdb.enable = true canal.instance.tsdb.dir = ${canal.file.data.dir:../conf}/${canal.instance.destination:} canal.instance.tsdb.url = jdbc:h2:${canal.instance.tsdb.dir}/h2;CACHE_SIZE=1000;MODE=MYSQL; canal.instance.tsdb.dbUsername = canal canal.instance.tsdb.dbPassword = canal # dump snapshot interval, default 24 hour canal.instance.tsdb.snapshot.interval = 24 # purge snapshot expire , default 360 hour(15 days) canal.instance.tsdb.snapshot.expire = 360 # aliyun ak/sk , support rds/mq canal.aliyun.accesskey = canal.aliyun.secretkey = ################################################# ######### destinations ############# ################################################# #canal-server创建的实例,在这里指定你要创建的实例的名字,比如test1,test2等,逗号隔开 canal.destinations = example # conf root dir canal.conf.dir = ../conf # auto scan instance dir add/remove and start/stop instance canal.auto.scan = true canal.auto.scan.interval = 5 canal.instance.tsdb.spring.xml = classpath:spring/tsdb/h2-tsdb.xml #canal.instance.tsdb.spring.xml = classpath:spring/tsdb/mysql-tsdb.xml canal.instance.global.mode = spring canal.instance.global.lazy = false #canal.instance.global.manager.address = 127.0.0.1:1099 #canal.instance.global.spring.xml = classpath:spring/memory-instance.xml canal.instance.global.spring.xml = classpath:spring/file-instance.xml #canal.instance.global.spring.xml = classpath:spring/default-instance.xml ################################################## ######### MQ ############# ################################################## #kafka为bootstrap.servers rocketMQ中为nameserver列表 canal.mq.servers = 192.168.88.20:9092 #发送失败重试次数 canal.mq.retries = 0 #kafka为ProducerConfig.BATCH_SIZE_CONFIG rocketMQ无意义 canal.mq.batchSize = 16384 #kafka为ProducerConfig.MAX_REQUEST_SIZE_CONFIG rocketMQ无意义 canal.mq.maxRequestSize = 1048576 #kafka为ProducerConfig.LINGER_MS_CONFIG , 如果是flatMessage格式建议将该值调大, 如: 200 rocketMQ无意义 canal.mq.lingerMs = 1 #kafka为ProducerConfig.BUFFER_MEMORY_CONFIG rocketMQ无意义 canal.mq.bufferMemory = 33554432 #获取canal数据的批次大小 canal.mq.canalBatchSize = 50 #获取canal数据的超时时间 canal.mq.canalGetTimeout = 100 #是否为json格式 如果设置为false,对应MQ收到的消息为protobuf格式 需要通过CanalMessageDeserializer进行解码 canal.mq.flatMessage = true canal.mq.compressionType = none canal.mq.acks = all | |
修改内容如下 | |
#默认为TCP,也就是你通过官方的example可以在终端查看数据,我们修改为kafka canal.serverMode = kafka canal.destinations = example #kafka地址 canal.mq.servers = 192.168.88.20:9092 | |
3 | #修改 canal/conf/example目录中的 instance.properties 文件 |
vi /home/admin/canal-server/conf/example/instance.properties | |
################################################# ## mysql serverId , v1.0.26+ will autoGen # canal.instance.mysql.slaveId=0 # enable gtid use true/false canal.instance.gtidon=false # position info canal.instance.master.address=192.168.88.10:3306 canal.instance.master.journal.name= canal.instance.master.position= canal.instance.master.timestamp= canal.instance.master.gtid= # rds oss binlog canal.instance.rds.accesskey= canal.instance.rds.secretkey= canal.instance.rds.instanceId= # table meta tsdb info canal.instance.tsdb.enable=true #canal.instance.tsdb.url=jdbc:mysql://127.0.0.1:3306/canal_tsdb #canal.instance.tsdb.dbUsername=canal #canal.instance.tsdb.dbPassword=canal #canal.instance.standby.address = #canal.instance.standby.journal.name = #canal.instance.standby.position = #canal.instance.standby.timestamp = #canal.instance.standby.gtid= # username/password canal.instance.dbUsername=root canal.instance.dbPassword=123456 canal.instance.connectionCharset = UTF-8 # 连接默认数据库 canal.instance.defaultDatabaseName =test # enable druid Decrypt database password canal.instance.enableDruid=false #canal.instance.pwdPublicKey=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBALK4BUxdDltRRE5/zXpVEVPUgunvscYFtEip3pmLlhrWpacX7y7GCMo2/JM6LeHmiiNdH1FWgGCpUfircSwlWKUCAwEAAQ== # table regex canal.instance.filter.regex=test\\..* # table black regex canal.instance.filter.black.regex= # mq config #mq里的topic名 canal.mq.topic=example canal.mq.partition=0 # hash partition config #canal.mq.partitionsNum=3 #散列规则定义 库名.表名 : 唯一主键,比如mytest.person: id 1.1.3版本支持新语法 #canal.mq.partitionHash=mytest.person:id,mytest.role:id ################################################# | |
修改内容如下 | |
# position info canal.instance.master.address=192.168.88.10:3306 # username/password canal.instance.dbUsername=root canal.instance.dbPassword=123456 # 数据库及表过滤,这里我只抽取sourcedb的日志 canal.instance.filter.regex=test\\..* # mq config canal.mq.topic=example | |
4 | #重启canal-server |
bin/restart.sh | |
| |
5 | #启动大数据服务器的kafka集群 |
bin/kafka-server-start.sh config/server.properties > /dev/null 2>&1 & | |
6 | #启动kafka的消费者命令行 |
cd /export/services/kafka | |
./kafka-simple-consumer-shell.sh --broker-list node2:9092 --topic example | |
或者 | |
./kafka-console-consumer.sh --bootstrap-server node2:9092 --topic example --from-beginning | |
7 | #在mysql数据库中插入一条sql语句 |
8 | #观察kafka消费者命令行的输出 |
3、常见错误
1 | #启动canal-server后,example.log日志错误如下 |
| |
错误原因: | |
启动docker时,docker进程会创建一个名为docker0的虚拟网桥,用于宿主机与容器之间的通信。当启动一个docker容器时,docker容器将会附加到虚拟网桥上,容器内的报文通过docker0向外转发。 如果docker容器访问宿主机,那么docker0网桥将报文直接转发到本机,报文的源地址是docker0网段的地址。而如果docker容器访问宿主机以外的机器,docker的SNAT网桥会将报文的源地址转换为宿主机的地址,通过宿主机的网卡向外发送。 因此,当docker容器访问宿主机时,如果宿主机服务端口会被防火墙拦截,从而无法连通宿主机,出现No route to host的错误。 而访问宿主机所在局域网内的其他机器,由于报文的源地址是宿主机ip,因此,不会被目的机器防火墙拦截,所以可以访问。 因此,也可以通过开放相对应的端口即可。 | |
解决方式: | |
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload | |
确认下防火墙是否关闭,如果没有关闭需要关掉 | |
查看防火墙状态:firewall-cmd --state 停止firewall:systemctl stop firewalld.service 禁止firewall开机启动:systemctl disable firewalld.service |
四、Canal采集业务数据到Kafka
将客户关系数据库导入到mysql数据库中
1、配置Canal-Server
- 操作步骤
操作步骤 | 说明 |
1 | #进入canal-server容器 |
docker exec -it canal-server bash | |
| |
2 | #修改 canal/conf目录中的 canal.properties 文件 |
vi canal-server/conf/canal.properties | |
canal.mq.servers = 192.168.88.20:9092 | |
3 | #修改 canal/conf/example目录中的 instance.properties 文件 |
canal.instance.master.address=192.168.88.20:3306 canal.instance.dbUsername=root canal.instance.dbPassword=123456 canal.instance.defaultDatabaseName =itcast_crm canal.instance.filter.regex=itcast_crm\\..* | |
4 | #重启canal-server |
/home/admin/canal-server/bin/restart.sh | |
|
2、导入业务数据到Mysql
- 操作步骤
操作步骤 | 说明 |
1 | 打开DBeaver客户端软件 |
2 | 新建连接 |
3 | 配置远程连接参数 |
4 | 点击测试是否连接成功 |
5 | 创建数据库,库名:it_crm |
6 | 打开:4.资料\2.数据库脚本\it_crm.sql |
五、初始化业务数据
1、初始化数据库结构
操作步骤 | 说明 |
1 | 打开mysql客户端程序 |
2 | 创建crm数据库 |
3 | 执行数据表创建脚本 |
-- 客户地址表 | |
4 | 插入一条数据 |
INSERT INTO `crm_address` VALUES ('10001', '葛秋红', null, '17*******47', '恒大影城南侧小金庄', '130903', null, '2020-02-02 18:51:39', '2020-02-02 18:51:39', null); | |
- 📢博客主页:https://lansonli.blog.csdn.net
- 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
- 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
- 📢大数据系列文章会每天更新,停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 2022学习目标
flag: 1.找到实习 2.毕设实验完成 3.找到好工作 4.持续写博客...
2024/4/25 21:50:47 - 【JQuery Mobile移动应用开发实战】JQuery Mobile基础——工具栏的使用
文章目录2. 工具栏的使用2.1 稍微复杂的界面2.2 方便的快捷键2.3 失效的按钮2.4 导航栏的应用2.5 导航栏的全屏属性2.6 内容栏的使用2.7 会弹出的面板2. 工具栏的使用 本章节主要介绍JQuery Mobile开发中用于实现导航功能的控件,一般称之为工具栏。工具栏主要包括头…...
2024/5/5 8:08:16 - 云炬金融每日一题20210919
自由浮动:又称“清洁浮动",是指政府对外汇市场不加任何干预,完全听任外汇市场供求状况自发地决定本国货币的对外汇率。这种汇率制度在第一次世界大战以后曾短暂地被某些西方国家采用过,但实施的结果是汇率波动频繁而剧烈&…...
2024/5/5 16:10:39 - DTMF的原理:为什么选择这些频率?
简 介: 通过一个简单的实验来验证一下为什么DTMF的频率选取这些数值的频率。它们的存在使得低频频的二倍频与高频频率的差异达到最小。具体原因可以通过Bell实验室的报告进行检索,回答为什么DTMF这样选择频率。 关键词: DTMF,谐波…...
2024/5/5 12:47:34 - mtcnn_pytorch完美复现
一、算法介绍 MTCNN,Multi-task convolutional neural network(多任务卷积神经网络),将人脸区域检测与人脸关键点检测放在了一起,它的主题框架类似于cascade。总体可分为P-Net、R-Net、和O-Net三层网络结构。 二、实…...
2024/4/27 13:28:21 - 工业元宇宙的解读 第3版
工业元宇宙可以理解为元宇宙在工业领域的应用与发展,也可以理解成是元宇宙的一部分,或者说是微观、中观的元宇宙。工业元宇宙是目前三维设计、虚拟现实、增强现实、人工智能、数据孪生、物联网、5G网络、大数据、云计算等新兴技术的发展优化乃至升级并有…...
2024/4/27 13:57:52 - LeetCode 热题 HOT 100 第29天:“爬楼梯”
继续刷LeetCode 热题 HOT 100 的题目,并且在博客更新我的solutions。在csdn博客中我会尽量用文字解释清楚,相关Java代码大家可以前往我的个人博客jinhuaiyu.com中查看。 题目:爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以…...
2024/4/27 16:20:11 - 软件开发的流程是怎样的?
1、我们在做一个项目之前,首先是要和客户进行交流,和客户交流的目的是什么?就是要了解用户的需要,根据客户的需要做出一个软件要实现的基本功能,这个也称之为客户需要分析。这一步在整个的开发流程中是非常重要的&…...
2024/4/27 20:01:43 - LeetCode算法入门之双指针—977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组 nums,返回每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。示例 1:输入:nums [-4,-1,0,3,10] 输出:[0,1,9,16,100] 解释:平方后,数组变为 [16,1…...
2024/4/27 15:37:08 - VS Code 字体推荐
1、推荐字体 ( 排名不分先后 ) ① Consolas ② Roboto Mono ③ Monaco ④ Office Code Pro ⑤ Fira Code ⑥ Source Code Pro 7. Hack ⑧ JetBrains Mono 2、以上字体已整理打包, 需要的朋友可以点此下载: fonts_for_code.zip(640KB) 3、如果希望测试更多的编程字体,…...
2024/4/27 14:56:22 - serverlet的生命周期?
Servlet运行在Servlet容器中,其生命周期由容器来管理。Servlet的生命周期通过javax.servlet.Servlet接口中的init()、service()和destroy()方法来表示。 Servlet的生命周期包含了下面4个阶段: (1)加载和实例化 Servlet容器负责…...
2024/4/27 15:24:56 - 【从零开始的嵌入式生活】LinuxC语言——shell命令
前言 今天是2021年的第三天,差点就断更了呀,我放弃了LOL陪大家一起学习0.0。 三连即可提高学习效率0.0 🧑🏻作者简介:一个学嵌入式的年轻人 ✨联系方式:2201891280(QQ) 📔源码地址:…...
2024/4/27 13:26:15 - [剑指 Offer 50. 第一个只出现一次的字符]
[剑指 Offer 50. 第一个只出现一次的字符] 题解: 寻找字符串中仅出现一次的字符,如果有多个仅出现一次的字符就选取的一个。 解法: 方法一:(垃圾解法,很菜,但思路和官方差不多) …...
2024/4/27 20:46:36 - AM335x片上ecap驱动移植
基于AM335x移植ecap驱动,驱动出至一下链接。 https://github.com/teknoman117/beaglebot 移植完成后出现不能操作相关寄存器的现象,后面发现是ECAP的时钟没有打开,现象如下。 在ecap的上游设备pwmss,加入以下电源管理的代码&…...
2024/4/27 19:40:38 - C++学习——模板与泛型编程
C学习——模板与泛型编程定义模板函数模板类模板模板参数成员模板控制实例化模板实参推断类型转换与模板类型参数函数模板显式实参函数指针和实参推断定义模板 函数模板 可以定义一个通用的函数模板,而不是为每个类型都定义一个新函数。 一个函数模板就是一个公式…...
2024/4/27 19:12:34 - 极简hooks实现,与react的思路一样的useState
使用App函数模拟根组件 function App() {const [num, updateNum] useState(0);console.log(${isMount ? "mount" : "update"} num: , num);button.textContent num;return {click() {updateNum((num) > num 1);updateNum((num) > num 1);},};}使…...
2024/4/27 13:31:11 - MYSQL 寒假自学 2022 八(一)
-- 分页查询 -- 1,查询product的前五条记录 select * from product limit 5; -- 2,从第四条开始,显示五条 select * from product limit 3,5;-- 3,分页显示 select * from product limit 0,60;# 第一页 select * from product l…...
2024/4/27 20:14:44 - c#:Task.Run() 和 Task.Factory.StartNew()有何不同
待续。。。 internal class Program {static void Main(string[] args){var counter 0;var list new List<int>();var tasks new List<Task>();for (int i 0; i < 10; i){var task Task.Factory.StartNew(async () >{await Task.Delay(1000);var tmp …...
2024/4/29 3:46:13 - 基于resnet训练flower图像分类模型(p31-p37)
概述 本文属于跟着b站学习pytorch笔记系列。网上很多大佬 关于renet模型图像识别的分类文章很多,但是图像部分通常就是一笔带过,给个链接。还是看了知乎的文章从头准备了数据集。 一 数据集准备 该数据集由102类产自英国的花卉组成。每类由40-258张图片…...
2024/4/27 16:42:58 - LeetCode算法入门之二分查找—35. 搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。 如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例 2: 输入: num…...
2024/4/27 21:06:06
最新文章
- QX-mini51单片机学习(1)---电子电路基础
目录 1电平特性 2单片机io口简绍 3初识电容电阻 4初识电路原理图 5单片机最小系统结构 6单片机工作基本时序 1电平特性 单片机是一种数字集成芯片,数字电路中两种电平,高电平与低电平 高电平:5v 低电平:0v TTL电平信号…...
2024/5/8 5:31:00 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 【Redis】安装Redis后报ERR Client sent AUTH, but no password is set
一、问题描述 安装Redis后使用auth验证是否安装成功(或者其它应用访问redis时报错),报ERR Client sent AUTH, but no password is set 127.0.0.1:6379> auth 123456 (error) ERR Client sent AUTH, but no password is set二、问题解决 …...
2024/5/6 8:12:38 - Docker实战教程 第1章 Linux快速入门
2-1 Linux介绍 为什么要学Linux 三个不得不学习 课程需要:Docker开发最好在Linux环境下。 开发需要:作为一个后端程序员,是必须要掌握Linux的,这是找工作的基础门槛。 运维需要:在服务器端,主流的大型服…...
2024/5/7 4:40:32 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/7 5:50:09 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57