自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

树叶的一生,只是为了归根么?

欢迎一起交流学习的朋友

  • 博客(69)
  • 收藏
  • 关注

原创 SPI一主多从实现之OLED展示

博主参与的项目中,有个需要接OLED屏的功能,打算用SPI通信去实现,然后原本的板子上已经有一个从机和SPI有连接了,故将原本的一主一从的架构改成了一主多从。由于发送缓冲区和接收缓冲区用的都是M0P_SPI1->DATA,如果不取出从机返回的数据的话,可能会影响下一次主机数据的发送。其他像oled初始化代码、字库可以找对应的商家要,一般都有会,这个就不浪费篇幅贴出了。PS: 这里有个很关键的点,就是虽然我只是往从机发数据,但是。最后展示下OLED的效果把~必须要将从机返回的数据取出。

2025-02-28 16:58:43 453

原创 DMA发送全部历史记录数据到串口

博主参与的项目中,有个读取全部历史记录的功能,如果下位机在主程序中将全部历史记录单纯地通过串口传输会比较占用cpu资源,影响主程序中别的功能。

2025-02-28 15:36:05 338

原创 轻松理解Mysql事务的隔离级别和MVCC

如果是REPEATABLE READ级别的事务执行上述语句的话,由于只会在第一次select的时候生成READ VIEW,那么两次查询到的结果应该都是刘备那一条数据,这样就不会出现不可重复读的情况了。每次更新后,都会将旧值放到一个undo日志中(算是该记录的一个旧版本),随着次数的增多,所有的版本都会被roll_pointer属性连接成一个链表,这个链表就是版本链。:在生成Read View的时,系统应该分配给下一个事务的事务id值(不是已经分配的事务id的最大值)。

2023-08-15 20:30:50 162

原创 Jenkins+Docker+Maven+gitlab实现自动构建、远程发布

一个项目完整的生命周期是从开发的coding阶段和coding阶段的质量测试,再到多次发布投入使用。目前大部分的测试阶段并不是从coding结束后开始的,而是和coding同步进行的。可能今天早上coding完成一个功能,下午就要投入测试。在这期间,我们可能会因为需求发生变化功能需要改进缺陷需要修复等问题要更新服务。这个过程是重复而且是复杂的,也容易出现部署、更新失误的情况。因此我们有了自动构建的需求,和CI/CD(持续构建/持续发布)差不多类似。选择安装推荐的插件。

2023-03-10 15:44:29 2052 2

原创 Springboot日志埋点、问题追踪

实现平时项目中出现报错的时候,打印报错那次方法调用的详情。

2023-02-24 16:34:42 721

原创 Mysql基础篇(12)—— MySQL8.0新特性之公用表表达式

又叫通用表表达式,简称CTE(Common Table Expression)。CTE是一个命名的临时结果集,作用范围是当前语句。CTE可以理解成一个可以复用的子查询,当然跟子查询还是有点区别的,CTE可以引用其他CTE,但是子查询不能引用其他子查询。所以可以考虑代替子查询。根据语法结构和执行方式不同,共用表表达式分为普通公用表表达式和递归公用表表达式2种。

2023-01-18 14:36:49 1085

原创 Mysql基础篇(11)—— MySQL8.0新特性之窗口函数

需求:需要计算这个网站在每个城市的销售总额、在全国的销售总额、每个区的销售额占所在城市销售额中的比率,以及占总销售额中的比率。比如,计算 goods 数据表中名称为“女装/女士精品”的类别下的商品的PERCENT_RANK值。比如,使用RANK()函数获取goods表中各类别的价格从高到低排序的各商品信息。其中,rank就是使用RANK()函数产生的序号,rows为当前窗口的总记录数。返回第n个expr的值,n为1的时候和FIRST_VALUE()效果一样。返回当前行的后n行的expr的值。

2023-01-18 14:35:54 916

原创 Mysql基础篇(10)—— MySQL8.0新特性概览

【代码】Mysql基础篇(10)——MySQL8.0新特性概览。

2023-01-17 15:32:53 1003

原创 Mysql基础篇(9)—— 触发器

MySQL从 5.0.2 版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由 事件来触发 某个操作,这些事件包括 INSERT 、 UPDATE 、 DELETE 事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句时候,就相当于事件发生了,就会 自动 激发触发器执行相应的操作。当对数据表中的数据执行插入、更新和删除操作,需要自动执行一些数据库逻辑时,可以使用触发器来实现。

2023-01-17 15:31:27 308

原创 Mysql基础篇(8)—— 变量、流程控制和游标

SET @变量名 = 变量值;SET @变量名 := 变量值;SELECT @变量名 := 表达式;如:(select @var := count(*) from t1)SELECT 表达式 into @变量名 [FROM 等子句];BEGIN#声明局部变量(必须是BEGIN下的第一句)DECLARE 变量名1 变量数据类型 [DEFAULT 变量默认值];DECLARE 变量名2,变量名3,... 变量数据类型 [DEFAULT 变量默认值];#为局部变量赋值SET 变量名1 = 值;

2023-01-17 15:24:53 758

原创 Mysql基础篇(7)—— 存储过程和存储函数

指明存储过程执行的结果是否确定。每次执行存储过程时,相同的输入会得到相同的输出。NOT DETERMINISTIC表示结果是不确定的,相同的输入可能得到不同的输出。存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。结束表记,因为存储过程提里面的sql结束标记;:说明存储过程执行体是由SQL语句组成的,当前系统支持的语言为SQL。:执行当前存储过程的权限,即指明哪些用户能够执行当前存储过程。

2023-01-17 15:23:53 535

原创 Mysql基础篇(6)—— 视图

SHOW CREATE VIEW 视图名称;

2023-01-17 15:22:24 575

原创 Mysql基础篇(5)—— 约束

为了保证数据的完整性,防止数据库中存在不符合语义的数据存在,是表级的强制规定。

2023-01-17 15:21:27 860

原创 Mysql基础篇(4)—— 创建和管理表

在mysql5.7中,结果是:报t2不存在的错误且会删除t1表。在mysql8中,结果是:报t2不存在的错误且不会删除t1表。例如:删除t1表和t2表,其中t2是不能存在的。执行语句:drop table t1,t2;user 数据库名;

2023-01-17 15:20:01 107

原创 Mysql基础篇(3)—— MySQL数据库类型

这里的地理特征表示世界上具有位置的任何东西,可以是一个实体,例如一座山;在某些环境中,如果把这些数据列移动到第二张数据表中,可以让你把原数据表中的数据列转换为固定长度的数据行格式,那么它就是有意义的。这会 减少主表中的碎片 ,使你得到固定长度数据行的性能优势。BLOB和TEXT值也会引起自己的一些问题,特别是执行了大量的删除或更新操作的时候。尾数是二进制存储的,除了以5结尾的小数,其他的都会有精度上的缺失。底层是以字符串的形式存储的,这就决定了它是精确的。

2023-01-17 15:18:57 539

原创 Mysql基础篇(2)—— 单行函数和聚合函数

作用于一组数据,并对一组数据返回一个值,往往搭配Group By … HAVING使用。

2023-01-17 15:17:24 524

原创 Mysql基础篇(1)—— 基础概念、DML基本语法和表连接

Mysql基础篇相关的内容是看了康师傅的视频做的笔记吧。

2023-01-17 15:15:07 346

原创 SpringMVC

模型(Model)视图(View):数据模型,提供要展示的数据。:负责进行模型展示。:接受用户的请求,委托给处理器进行处理,处理完毕后把返回的模型数据返回给视图。

2022-11-12 17:14:14 312

原创 Classloader整理

类加载器简介

2022-11-08 22:11:04 319

原创 SpringIOC、AOP

SpringIOC和AOP的介绍

2022-11-06 20:38:03 384

原创 Java 代理模式

java代理模式总结

2022-11-06 20:02:46 338

原创 mybatis-plus配置(包含分页插件)

mybatis-plus的配置,包含单数数据源、多数据源的分页插件

2022-08-25 18:52:50 992

原创 kafka connector使用(Docker一键启动版)

前言结合博主之前写的一篇《kafka connector使用(单机手动启动版)》一起看版本kafka: confluentinc/cp-kafka:7.0.1zookeeper: confluentinc/cp-zookeeper:7.0.1思路将该连接器做成一个镜像。实现一、制作镜像DockerfileFROM confluentinc/cp-kafka:7.0.1COPY connect-redis.jar /usr/share/java/connect-redis.jarC

2022-05-10 14:55:00 1697

原创 kafka connector使用(单机手动启动版)

背景需要将redis 某个/类频道推送的数据写入到kafka topic中。实现一、编写kafka source connector代码和配置文件我这里是在github上找了一个别人已经实现了的kafka-redis-connector,选取了source的部分。git地址。连接器配置文件xx.properties介绍:name=定义连接器名字connector.class=连接器的类名(例如:com.curtain.source.RedisSourceConnector或者RedisSour

2022-05-10 14:10:16 1682 3

原创 docker-compose实现滚动更新

背景平时我们在用docker-compose更新服务的时候,当我们敲下docker-compose up -d service回车之后到服务成功启动起来之前的这段时间,该service是不会提供服务的。这还是建立在服务正常启动的情况下,如果服务没有正常启动,那该service停止服务的时间会更长。有没有一种可以在更新的时候不打扰原本服务的运行,在更新结束后替换调原本的服务呢?思路命令行输入docker-compose up --help回车我们会发现:相信看到这,大家或多或少都有点思路了吧~那就是

2022-04-20 14:19:28 8092 11

原创 docker-compose部署单机版nacos(自定义数据库)

版本nacosnacos/nacos-server:v2.0.4mysql5.7初始化数据库1.下载对应nacos版本的sql脚本2.在你自定义的数据库中创建一个数据库用来存放nacos相关配置数据3.在创建好的数据库中执行下载下来的sql脚本docker-compose文件version: "3.0"services: nacos: image: nacos/nacos-server:v2.0.4 environment: MODE: stan

2022-04-15 15:49:26 3356

原创 Kafka——创建无消费者组的消费者消费订阅主题

前景最近在编写了一个websocket+kafka的推送订阅组件,类似之前的一篇wesocket+redis的推送订阅组件。在实现完功能后,发现一个问题就是从websocket接收到订阅信息到websocket推送接收到的kafka数据这期间花了3s多,排查了一个,这3s用在了这里:也就是Request joining group due to: need to re-join with the given member-id。当我创建一个带消费者组的消费者后,它会经历一次需要分配member-id的组

2022-04-12 10:25:03 5661

原创 kafka数据清理配置——删除篇

前言本意利用kafka实现一个类似redis发布订阅的模式,比redis多了一个数据分区的功能。kafka里面的数据我们是不需要存储的,因此我们需要配置对应的删除策略Kafka版本号2.8.1数据清理策略kafka有两种数据清理策略,delete删除和compact压缩,默认是删除。delete:一般是使用按照时间保留的策略,当不活跃的segment的时间戳是大于设置的时间的时候,当前segment就会被删除compact: 日志不会被删除,会被去重清理,这种模式要求每个record都必须

2022-02-25 16:27:57 11179

原创 docker-compose安装kafka

docker-compose.ymlversion: "3.0"services: zookeeper: image: wurstmeister/zookeeper container_name: zookeeper restart: always ports: - 2181:2181 kafka: image: wurstmeister/kafka container_name: kafka ports: - 90

2022-02-24 19:45:16 1483

原创 java编写websocket客户端

前言webSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。本次介绍的是websocket客户端的编写,至于websocket服务端的编写可以看我之前写的websockt+redis实现动态订阅和取消订阅的博客正文核心依赖 <dependency> <groupId>org.java-websocket</groupId> <artifactId>Java-WebSocket&l

2021-12-03 17:10:31 8049 4

原创 git操作

删除本地分支git branch -d 分支名删除远程分支git push origin --delete 分支名查看本地(所有)分支git branch (-a)

2021-11-17 14:42:32 331

原创 Mybaits-Plus Invalid bound statement (not found) 问题

公司决定统一mybatis的工具为mybatis-plus,博主本来用的tk.mybatis。因此需要改些代码…依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </de

2021-11-03 16:53:22 169

原创 Java整合Jsonpath解析Json字符串

JsonPath是一种简单的方法来提取给定JSON文档的部分内容引入依赖 <dependency> <groupId>com.jayway.jsonpath</groupId> <artifactId>json-path</artifactId> <version>2.5.0</version> </dependency>编写配置文件import com

2021-09-26 17:14:21 779

原创 监听springboot进程,如果关闭就重启

@echo off set AppName=jar包名称set AppPath=启动jar包的批处理文件(start.bat)路径(例如: C:\start.bat)title 进程监听clsecho.echo 进程 start...echo.:startjc jps -l |findstr /i %AppName% >nul if %errorlevel%==0 ( echo ^>%date:~0,10% %time:~0,8% 进程 i

2021-09-13 15:05:18 308

原创 java程序制作成可执行.exe文件

下载制作工具链接: https://pan.baidu.com/s/1V4UeC4rdxRhaeJUETq21fg 提取码: xvd2下载完解压就运行,网上找个注册码自行注册下页面配置到这就可以点击finish啦,这样可执行文件就差不多完成了。最后在可执行文件的统计目录加个项目的配置文件application.yml以及java的运行环境包(jre)。如图:双击可执行文件,就可以正常运行啦~...

2021-07-16 16:51:45 198 1

原创 mysql统计近n天每天的数据量

第一步查询近n天的日期(以查询最近七天为例)SELECT @s :=@s + 1 AS _index, DATE( DATE_SUB(CURRENT_DATE, INTERVAL @s DAY) ) AS _dateFROM information_schema. TABLES, (SELECT @s := - 1) tempWHERE @s < 6ORDER BY _date第二步**以第一步查询的查询左表left join我们要统计的表SELECT tbl._

2021-07-15 14:59:29 699

原创 Api接口请求体和返回体驼峰和下划线的相互转换

java的实体类属性命名都是驼峰的方式,而前端的json串属性都是下划线的方式,这个时候就需要灵活的转换。在实体类头部加上这个注解即可@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)

2021-06-10 19:41:22 2291

原创 websocket+redis动态订阅和动态取消订阅

原理websocket的订阅就是在前后端建立ws连接之后,前端通过发送一定格式的消息,后端解析出来去订阅或者取消订阅redis频道。订阅频道消息格式:{ "cmd":"subscribe", "topic":[ "topic_name" ]}取消订阅格式{ "cmd":"unsubscribe", "topic":[ "topic_name" ]}两个核心类,一个是redis的订阅监听类,一个是websock

2021-05-31 15:37:19 3746 16

原创 docker容器时区问题

在使用docker部署的过程中,我们会遇到一些关于时区的问题,比如查看日志的时候发现左侧的时间比目前时间早八小时、或者mysql的CURRENT_TIMESTAMP查出来比目前早八小时等等解决方法在Dockerfile中加个红色圈住的代码:RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtimeRUN echo "Asia/Shanghai" >> /etc/timezone"-Duser.timezone=GMT+08"

2021-05-27 20:31:02 485

原创 docker常用命令记录

启动dockersystemctl start docker 关闭dockersystemctl stop docker重启dockersystemctl restart docker查看docker状态systemctl status docker拉取镜像docker pull 镜像名:版本号(latest)例如:mobz/elasticsearch-head:5运行镜像docker run -p 容器内的端口号:暴露的端口号 镜像名:版本号例如:docker run

2021-05-13 16:52:11 199 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除