- 博客(89)
- 收藏
- 关注
原创 redis的key莫名失踪?
在线上环境下,发现redis中key被莫名奇妙的删除了,起初怀疑是key过期但是查询了TTL并没有,在日志上加了删除key操作的打印 但是并没有看到产出这个key的日志记录,而且每次都是这个key被莫名奇妙删除掉,感觉很诡异。首先我们发现redis中key莫名消失了,第一反应肯定是过期了,被打满了?在日志对应的时间这里可以看到affect=3,也就是对应上了我们redis monitor中看到的del三个key。就是这个方法,异步的把我所有1开头的后缀的key都删掉了,日志上面又看不出来。
2024-08-05 10:42:15
752
原创 nginx代理gitee
若干台agv设备,这些设备都是没有公网的(无法访问百度等)。一台服务器(ubuntu20.04)有线可以公网,无线可以实现内部通信(agv,plc等设备)。
2024-07-12 14:33:48
772
原创 ubuntu20.04设置开机自启动jar(依赖其他服务)
有的时候我们的项目是部署在物理机上给其他公司员工使用,对于他们来说操作越简单越好。所以我需要实现将我的jar部署在ubuntu上,实现开机自启。(我的项目依赖emqx服务)。
2023-12-08 10:47:29
1278
原创 策略模式demo
策略模式(Strategy Pattern)是一种行为设计模式,它允许你定义一组算法,将每个算法封装在单独的类中,并且使它们可以互相替换,而不影响客户端代码。策略模式使得算法的选择独立于使用算法的客户端代码,从而提高了代码的灵活性和可维护性。
2023-09-20 14:33:00
306
原创 fallback与fallbackFactory
在Spring Cloud中,当使用Feign或Hystrix等工具进行微服务调用时,可以处理远程服务调用失败或抛出异常的情况。为了处理这些故障情况,通常使用。来提供降级处理逻辑。
2023-09-19 11:08:08
4263
1
原创 事务的优化
举例:假设我们有一个文件上传的uploadFile方法,在这个方法中我们会先执行上传一个文件到分布式文件系统中的方法addMediaFilesToMinIO( ),上传成功后执行文件资源数据入库的addMediaFilesToDb( ),那么这个时候事务应该加在哪个方法上?是否会有事务失效的问题?
2023-09-05 14:43:53
224
原创 springcloud-gateway简述
Spring Cloud Gateway是一个反应式API网关,用于构建和管理微服务架构中的网关层。它通过一组过滤器(Filters)和路由(Routes)来处理传入的HTTP请求,允许开发人员定义复杂的请求处理逻辑和路由规则。Spring Cloud Gateway支持反应式编程模型,可以在高负载环境下提供出色的性能和可伸缩性。它还提供了强大的断路器、负载均衡、安全性和监控功能,使其成为构建现代微服务应用程序的关键组件之一。
2023-08-29 15:48:53
1015
原创 try-with-resource语法使用
是 Java 7 引入的一种语法结构,用于更方便地管理需要关闭的资源(如 I/O 流、数据库连接等)。它可以在代码块结束后自动关闭资源,无需显式调用close()方法,从而避免资源泄漏。
2023-08-18 10:37:11
514
原创 C++学习 结构体
定义:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。语法:struct 结构体名称结构体成员列表(struct 关键字不可省略)创建结构体实例的三种方式: 推荐使用第一种、第二种。我个人喜欢使用第一种① struct 结构体名 变量名;(struct 关键字可省略)。② struct 结构体名 变量名 = {成员值1,成员值2...}eg: struct Student s2 ={ "李四",20, 95};(struct 关键字可省略)。
2023-07-11 12:21:34
246
原创 C++学习 指针
作用:内存管理:通过指针,可以直接访问和操作内存中的数据。通过动态分配内存,使用new操作符创建对象并返回其地址,然后将地址存储在指针中,可以动态地管理内存,创建和销毁对象。传递参数:指针可用于通过引用传递参数。通过将变量的地址传递给函数,函数可以直接访问并修改变量的值,而不是传递变量的副本。这种传递方式可以避免复制大量数据,提高性能,并允许函数对原始变量进行更改。数据结构:指针在实现数据结构(如链表、树和图等)时起着重要作用。
2023-07-07 15:25:38
408
原创 C++学习 函数
返回值类型函数名形参列表函数体语句return表达式语法:返回值类型 函数名(形参列表)函数体语句return表达式int add(int num1, int num2) //函数的定义return sum;// 定义一个返回值类型为int,函数名称为add,传递参数为两个int类型的形式参数num1,num2// 函数体内定义了一个int类型的sum 用于实现两个传递参数的求和,并将求和结果返回// 函数的定义a : b;
2023-07-06 16:05:11
337
原创 C++学习 数组
数据类型 数组名[数组长度] = {值1,值2.....};数据类型 数组[ ] = {值1,值2.....};数组名是常量,定义完就无法修改,不可以进行赋值操作。数组就是一个集合,里面存放了相同类型的数据元素。下面的数字对应为数组的下标(索引),可以看到。数组中数据元素的数据类型相同。数据类型 数组名[数组长度];由连续的内存空间 位置组成。索引范围为0~数组长度-1。数组元素是一维数组的数组。
2023-07-06 10:25:54
1350
原创 C++学习 程序控制结构
if-elseif-else结构:f中表达式为真则执行if表达式后接的{}中内容,不为真继续向下判断下一个elseif,为真则执行elseif{}中内容,前面的都不满足,执行最后一个else{}中内容。if-else 结构: if中表达式为真则执行if表达式后接的{}中内容,不为真则执行else{}中内容。if 结构:if (表达式){} 表达式为真则执行,不为真则不执行。表达式1为真则执行表达式2,表达式1不为真则执行表达式3。case中没有break,程序会继续向下执行,不终止。
2023-06-29 18:54:49
215
原创 C++学习 运算符
一种用于执行特定操作的符号或关键字,例如加法、减法、赋值、比较等操作。运算符定义了不同数据类型之间的操作规则和结果,执行代码的运算。
2023-06-27 17:00:26
334
原创 C++学习 变量与常量
C++变量是用来存储和管理数据的内存位置,必须在使用前声明,并指定数据类型。变量名大小写敏感,可以包含字母、数字和下划线,但必须以字母或下划线开头。变量可以被赋予不同的值,且作用域可以是全局或局部。C++常量是固定不变的值,通过const关键字声明,并在声明时必须初始化。常量用于表示固定值或特定属性,提高代码可读性和维护性。常量包括普通常量、枚举常量和宏常量。选择:使用变量存储可变值,使用常量表示不变值。命名规范和常量的使用有助于提高代码质量和可维护性。
2023-06-20 14:41:29
219
原创 Centos7搭建sftp服务
切记:如果你还想使用ssh连接,那么下面这个配置ForceCommand internal-sftp可以不写,如果你不需要建立远程ssh,那么建议注释。如果后面有ssh需求忘了哪里的问题,可以回来看一下这句。如果你也可以看到上面的类似信息,那么恭喜你,已经完成了sftp服务的搭建,可以指定用户对指定目录进行文件的读写操作了。提示你输入密码,正常输入就行了,隐码形式,例如我上面密码是123456,输完回车。注意:这里你如果想拉取到制定文件目录下,可以提前cd切换到你想要的的目录。
2023-06-14 17:43:00
1621
原创 为什么使用MQ
在我们平日里无论是通过各种方式学习MQ最先看到的都是MQ的三大优点:异步、削峰、解耦。那么下面我们进行一下这三点的分析,在面试时可靠性和扩展性往往是我们提出来后去引导面试官问下面的问题。
2023-05-30 16:30:36
1137
原创 修改git已经push到远端的最近一次提交的commit
push 到远端时,若执行git push, 则只会在之前的commit记录后追加一条记录,但不会更新之前的commit信息.因为我们的需求时实现不新增额外的commit记录,所以就强推覆盖了上一次commit提交的记录。最新一次提交的message写错了且已经push到远程仓库,但是又不想重新创建一个commit记录。这个时候你就已经可以编辑了,编辑修改为你要更改的message,修改完毕 按。如果是多人协同开发,使用强推前一定确保当前版本最新,期间无人提交代码。
2023-05-26 19:08:58
866
原创 idea中git Directory消失
依次点击File->Settings->Version Controller->commit->勾选Use non-modal commit interface->apply-ok。
2023-05-26 18:51:03
372
原创 Mysql-存储过程简单入门
存储过程的英文是 Stored Procedure。它的思想很简单,就是一组经过 预先编译 的 SQL 语句 的封装。执行过程:存储过程预先存储在 MySQL 服务器上,需要执行的时候,客户端只需要向服务器端发出调用 存储过程的命令,服务器端就可以把预先存储好的这一系列 SQL 语句全部执行。
2023-05-22 16:02:05
968
原创 约束等级-mysql
Cascade方式:在父表上update/delete记录时,同步update/delete掉子表的匹配记录Set null方式:在父表上update/delete记录时,将子表上匹配记录的列设为null,但是要注意子表的外键列不能为not nullNo action方式:如果子表中有匹配的记录,则不允许对父表对应候选键进行update/delete操作Restrict方式:同no action, 都是立即检查外键约束。
2023-05-17 16:57:36
111
转载 jdbc-plus
🚀 jdbc-plus是一款基于JdbcTemplate增强工具包,基于JdbcTemplate已实现分页、多租户、动态表名等插件,可自定义扩展插件,可与mybatis、mybatis-plus等混合使用。GitHub - deeround/jdbc-plus: JdbcTemplate增强工具包,基于JdbcTemplate已实现分页、多租户等插件,可自定义扩展插件。
2023-05-12 16:20:15
170
原创 设计模式概要
依赖倒转原则是程序要依赖于抽象接口,不要依赖于具体实现。(方法定义的参数采用的都是接口类型而不是实现类的具体数据类型,这样可以提高方法的扩展性)。一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。继承父类而不是改变父类(使用父类的已定义方法,不是在父类上进行方法的修改,而是继承于父类扩展方法)。一个对象应该对其他对象保持最少的了解(高内聚,低耦合)。原则是尽量使用合成/聚合的方式,而不是使用继承。各个类建立自己的专用接口,而不是万能接口。每个类只负责自己的事情,而不是变成万能。
2023-05-12 16:11:02
81
原创 SELECT执行顺序
在 SELECT 语句执行这些步骤的时候,每个步骤都会产生一个 虚拟表 ,然后将这个虚拟表传入下一个步 骤中作为输入。需要注意的是,这些步骤隐含在 SQL 的执行过程中,对于我们来说是不可见的。
2023-05-11 18:33:51
1113
原创 大话数据结构-C(2)
判断一个算法的效率时,函数中的常数和其他次要项常常可以忽略,而更应该关注主项(最高阶项)的阶数。算法具有零个或多个输入,至少有一个或多个输出。没有输出用这个算法就没有意义。算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。算法在执行有限步骤后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。算法的每一步骤都有确定的含义,不会出现二义性。输入、输出、有穷性、确定性、可行性。
2023-04-11 15:21:31
797
原创 大话数据结构-C(1)
描述客观事物的符号,计算机中可以操作的对象,能被计算机识别并输入给计算机处理的符号集合。 是组成数据的、有一定意义的基本单位,在计算机中通常作为整体处理。也被称为记录。 一个与数据元素可以由若干个数据项组成。数据项是数据不可分割的最小单位。但是数据元素才是数据结构中建立数据模型值得讨论分析的。 性质相同(数据元素具有相同数量和类型的数据项)的数据元素的集合,是数据的子集。 相互之间存在一种或多种特定关系的数据元素的集合。 是指数据
2023-04-11 13:00:51
438
原创 springboot集成flyway
Spring boot项目启动后没有该数据库则先创建数据库然后执行flyway脚本创建相应表数据,其中可能存在bean加载顺序问题,比如我的安全框架会先去加载我的resouece表,但是flyway在其后面执行,所以我们需要自定义bean加载顺序,即先创建数据库-》加载flyway配置-》其他调用表数据资源配置。application.yml创建脚本 这里是我们要执行的脚本,命名要符合规范,开头V与R区别自己可以去flyway官网查看。自动创建数据库FlywayConfi
2023-02-07 17:33:50
393
原创 开机自启动Emqx与jar脚本
上图所示中可以看到server.bat,这个bat脚本就是启动emqx的,名称自己随便起,直接看内容。这里jar包开机自启动已经完成。
2023-01-28 17:03:33
533
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人