自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Spring和Mybatis中的拦截器区别

结论:Spring拦截器在请求进入Controller进行拦截添加自己的处理逻辑,Mybatis拦截器在Mapper层的方法上进行拦截添加自己的处理逻辑。

2024-04-10 20:30:55 3846

原创 Java项目中代码各层级划分

数据持久层,也有叫mapper层,属于一种比较底层,比较基础的操作,具体到对于某个表的增删改查,也就是说某个DAO一定是和数据库的某一张表一 一对应的,其中封装了增删改查基本操作,建议DAO只做原子操作,增删改查。控制器层,负责具体的业务模块流程的控制,接受前端页面过来的参数,请求转发传给Service处理,再接到Service层的返回结果,传给前端页面显示。业务逻辑层,接收Controller层数据,进行业务处理,并与Dao层交互,调用Dao层进行数据存储。7、config层,存放配置文件类。

2024-03-12 14:39:45 2676

原创 自定义幂等注解

*** 幂等拦截器*/@Component@Autowired/*** 预处理* @return*/@Overrideif (!//被ApiIdempotment标记的扫描= null) {try {// 幂等性校验, 校验通过则放行, 校验失败则抛出异常, 并通过统一异常处理返回友好提示throw ex;//必须返回true,否则会被拦截一切请求@Override@Override/*** 返回的json值*/

2024-03-12 11:10:49 3516

原创 SpringBoot项目加载配置文件的6种方式

5.2、实例化完PropertySourcesPlaceholderConfigurer类之后,就可以配合@value注解实现属性注入或者@ConfigurationProperties注解实现批量注入。5.1、自定义配置类,实例化PropertySourcesPlaceholderConfigurer类,使用该类进行属性值的注入。4.2、配合@value注解实现属性注入或者@ConfigurationProperties注解实现批量注入。

2024-03-06 20:44:14 4092

原创 Linux安装jdk8环境

【代码】Linux安装jdk8环境。

2023-12-12 10:46:58 4100

原创 Mysql索引优化

2、特点:非叶子节点不存储数据,相对B树增加每层存放的节点数,降低了B+树的高度,高度越低查询效率越高,MySQL高版本所有非叶子节点全部缓存在内存大大提高查询效率;覆盖索引是联合索引的特殊情况,索引字段包含了查询语句中需要的所有列,不需要回表操作就能够获取到所需的数据。(a、b、c)三个字段,查询条件中abc字段无论顺序如何都会走索引,ab,ac,a会部分走索引,其他情况不走索引(参考图2)。2、查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询(select_type)

2023-11-03 15:30:14 2460

原创 微服务无法注册到Nacos

一、Nacos客户端升级为2.x版本后,新增了gRPC的通信方式,新增了两个端口。分别是9848、9849端口,在启动Nacos时需要加上。2、版本:Nacos2.0.3、SpringCloud 2.2.7.RELEASE、SpringBoot2.3.12.RELEASE。-p 8848:8848 -p 9848:9848 -p 9849:9849 开放虚拟机端口和宿主机间的端口。3、虚拟机关闭防火墙(推荐)或者开放8849、9848、9849端口。

2023-09-04 15:53:23 6405

原创 Nacos2.0.3搭建及数据持久化

我们将nacos的配置数据持久化到docker搭建的MySQL数据库,本人的虚拟机网络和电脑网络在同一网段,自己可以修改。1、参考Nacos2.0.3搭建。2、安装mysql数据库,参考:

2023-08-30 17:33:55 7535

原创 JVM内存调优

描述:进行Minor GC的时候,发现Survivor空间不够,需要移动一些新生带的对象到老年代,尽管老年代有足够的空间,但是CMS采用标记除算法,默认并不使用标记整理算法,可能会产生很多碎片,因此,这些碎片导致大对象不能向老年带转移,因此需要进行CMS在老年带的Full GC来合并碎片。(1)增大年轻代内存空间,让大对象或数组在年轻代回收,避免进入老年代。4、老年代出现过多浮动垃圾,导致大对象不能存放到老年代,CMS GC才会出现。1、老年代空间不足,触发老年代空间分配担保机制。措施:增大老年代空间。

2023-08-13 16:13:22 5206

原创 Java中基本数据类型

由一个字符数组 char[] 来存储的,由于数组的长度及索引是整数,且 String 类中返回字符串长度的方法 length() 的返回值也是 int ,所以通过查看 java 源码中的类 Integer 我们可以看到 Integer 的最大长度不能超过。之后把引用交给栈中的s。3、内存中存储的方式不同:int 在内存中直接存储的是数据值,而 Integer 实际存储的是对象引用,当 new 一个 Integer 时生成一个指针指向对象(堆);所以在最坏的情况下,一个最大的字符串要占用4GB的内存。

2023-08-07 16:46:51 3134

原创 Docker常用命令(个人)

docker logs 容器id/容器名称。# remove删除所有容器。#查找关于redis的镜像。# stop停止所有容器。#安装最新的redis。#删除指定id的镜像。

2023-07-27 15:56:20 2896

原创 Docker Compose 快速构建 TiDB 集群

IP填写错误(我这里写了127.0.0.1报错,改成虚拟机IP,因为我是利用容器搭建的mysql服务;需要具备mysql客户端,不然报错:“-bash: mysql: 未找到命令。STATUS为Up代表启动成功。默认mysql没有密码。

2023-07-27 15:55:49 3523

原创 Docker安装mysql

注意:启动完容器后(第五步)直接使用mysql -h localhost -u root -p连接会报错:“这里直接设置密码123456,可以不设置,默认会生成密码,查询初始密码并修改。先输入exit退出mysql,再输入exit退出容器。42d6d493d778为上图mysql容器id。“-bash: mysql: 未找到命令”

2023-07-27 12:22:54 4559

原创 Linux常用命令

两者在编程方面,对编辑源文件会产生重要影响。因为文件没有修改,":wq"强制更新文件的修改时间,使用make编译整个项目时文件被修改了,重新编译链接生成可执行文件。容易让人误解,产生了不必要的系统资源花销。:x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间;否则不会更新文件修改时间。:wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。

2023-07-18 08:58:31 4986

原创 springboot集成sharding-jdbc

3、水平分片:(1)数据库分片;yml文件会爆红,不影响项目启动。3、更新数据库内容自己测试。yml文件中采用的是。

2023-07-13 15:07:19 12421

原创 SpringBoot集成Netty

NettyClient类中ch.pipeline().addLast(new NettyClientHandler());NettyServer类中的channel.pipeline().addLast(new。粘包和拆包问题,可以自己手写通过固定长度发送数据,或者使用。客户端和服务端都是固定的框架,我们只需写处理器。

2023-07-04 17:50:26 14462

原创 电话号码的字母组合-思路

第四个参数index,从0开始获取对应的字符串参与遍历过程,而且是递归停止的标识(index == num.length()),多说一句,递归方法停止的判断条件一般都是放在方法开始位置。第三个参数num,输入的数字,利用charAt方法获取到每一个数字,根据数字在map中获取对应的字符串,每次递归都要传入。输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]第二个参数list,用户存放结果集,依次添加结果,每次递归都要传入。输入:digits = ""

2023-06-21 15:47:33 1140

原创 SpringBoot集成RocketMQ实现延时消费

运行项目需要具备环境,参考。

2023-06-14 17:31:57 14564 2

原创 解决RocketMQ消息重复消费场景

在broker端对Queue加锁(synchronized),Consumer监听的Queue存在已投递但未收到ack且未超时的消息,不允许获取锁,直到该Queue投递的消息全部ack或者消费超时,才允许新的Consumer获取锁,拉取消息。在broker端对Queue加锁(synchronized),Consumer监听的Queue存在已投递但未收到ack且未超时的消息,不允许获取锁,直到该Queue投递的消息全部ack或者消费超时,才允许新的Consumer获取锁,拉取消息。2、为什么在消费者做去重?

2023-06-11 07:35:38 15639

原创 SpringBoot集成RocketMQ实现三种消息发送方式

以上输出:发送者向MQ 执行发送消息API 时,指定消息发送成功后的回调函数,然后调用消息发送API 后,立即返回,消息发送者线程不阻塞,直到运行结束,消息发送成功或失败的回调任务在一个新的线程中返回。以上输出:消息发送者向MQ 执行发送消息API 时,直接返回,不等待消息服务器的结果,也不注册回调函数,只管发,不管是否成功存储在消息服务器上。以上输出可以看到:同步消息发送后,消息发送到broker后就返回结果了,消费端还未处理完,两者互互不影响。运行项目需要具备RocketMQ环境,参考。

2023-06-08 16:24:51 19061

转载 Docker搭建RocketMQ集群

服务器环境:centos7安装用户:root,关闭防火墙使用一键式搭建docker环境下的RocketMQ集群及其管理工具,实现rocketmq在docker环境容器外部访问。

2023-06-04 19:04:12 18804 1

空空如也

空空如也

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

TA关注的人

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