自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 git常用命令

8.合并分支,合并其它分支到当前分支。7.创建并切换到该分支。3.取消commit。

2024-05-09 08:51:33 89

原创 无须关注看文章

直接上方法。首先鼠标放到关注博主即可阅读全文上面,然后右键鼠标选择检查,在Elements下面搜索 article_content,会定位到id="article_content"的一个div然后在Styles下面找到element.style代码块,我们需要手动取消掉height和overflow前面的勾选框。然后就可以阅读全文啦。

2022-12-15 10:15:25 161

原创 关于git的commit提交回退的三种命令模式

git reset --mixed HEAD^使用 git reset HEAD^ 命令默认的就是mixed模式,此命令表示保留对工作区的修改,但是修改未进入暂存区。git reset --soft HEAD^此命令也表示保留对工作区的修改,并且修改已进入暂存区。git reset --hard HEAD^此命令表示不保留对工作区的修改,也即工作区完全回退到上个版本的样子。此命令注意慎用。...

2022-01-06 00:48:41 6950 1

原创 Autowired注解与Resource注解的区别

两者的用法其实这两个注解的作用都一样,都是在做bean的注入,在使用过程中,两个注解有时候可以替换使用.两者的共同点@Resource注解和@Autowired注解都可以用作bean的注入. 在接口只有一个实现类的时候,两个注解可以互相替换,效果相同.两者的不同点@Resource注解是Java自身的注解,@Autowired注解是Spring的注解. @Resource注解有两个重要的属性,分别是name和type,如果name属性有值,则使用byName的自动注入策略,将值作为需要

2021-09-09 20:40:14 48791 25

原创 Consul部分服务注册失败

该服务配置了心跳检查,然而consul访问不到心跳检查接口(该接口由配置文件配置consul心跳检查时指定)然后将maven重新导入一下,再重启服务即可。这是因为该服务没有添加心跳检查的依赖包。部分服务注册成功,部分服务注册失败。

2024-05-20 18:22:49 99

原创 线上问题回溯

原因:启动类未添加该api的hystrix接口的包扫描。因为@EnableFeignClients注解里添加的包路径只会扫描到@FeignClint注解定义的接口,而扫描不到由@Component 注解定义Hystrix接口。项目启动时提示找不到该Api,该Api接口用于其它服务服务pretreatment服务。1.关于项目启动时找不到自定义的FeignApi。解决:启动类添加该api目录的包扫描。

2024-05-20 09:12:54 193

原创 常用反射方法

getActualTypeArguments():返回表示此类型实际类型参数的 Type对象的数组。【一般不直接使用该方法,而是在该方法后加一个下标,如下两行】getGenericSuperclass():返回当前类父类的类型(即:包名.类名)getActualTypeArguments()[0]:返回当前类父类泛型的第一个参数。getActualTypeArguments()[1]:返回当前类父类泛型的第二个参数。getClass():返回当前类的包名.类名。

2024-05-09 15:55:47 101

原创 Java实体类之间的转换

通常在后端开发中经常不直接返回实体Entity类,经过处理转换返回前端,前端提交过来的对象也需要经过转换Entity实体才做存储。

2024-03-26 14:00:19 787

原创 @Scheduled的使用

Scheduled是springboot自带的定时任务注解,可以快速实现任务的定时执行,使用方法是直接在要实现定时任务的方法上加上@Scheduled注解。但是需要特别注意的是,在使用这个注解时应现在启动类上加上@EnableScheduling注解,表示可以开启定时任务的注解。

2024-03-21 10:08:31 857

原创 死记硬背spring bean 的生命周期

spring bean的生命周期主要会经过3个关键步骤,即实例化对象、给对象进行属性注入、对象初始化,只不过在进行对象初始化之前或之后有可能会进行一些自定义的处理,比如对象实现了BeanNameWare接口,可以用来设置bean对象的名称,也比如对象实现了BeanPostProcessor接口,就可以增加一些自定义的逻辑在该接口的两个方法中。当然对象初始化完成后,最后还可以增加对象的销毁方法,让对象在销毁时进行一些自定义的操作。

2024-02-29 21:45:29 608

原创 bat脚本打开多个黑窗口并执行不同的命令

在使用java -jar运行jar包之前,需要先启动redis,而redis的安装目录与jar包不在同一目录下,所以每次启动项目的时候都需要来回的切换目录。现写了一个bat脚本,用来一键启动redis和jar包。start cmd /k "cd /d redis安装目录 && redis-server redis.windows.conf"其中,cmd /k命令是不关闭黑窗口的命令,timeout /T 3表示等待3秒,/NOBREAK表示键盘输入不会中断等待。

2024-01-26 15:41:30 273

原创 关于数据库切换的麻烦

现项目使用了两个数据源,分别为A、B,两个数据库的数据结构并不相同,数据库A是用来做查询一些基本信息的,数据库B是用来保留业务操作数据的。后端是在mapper层用@DS注解来区分哪些地方用数据库A,而哪些地方用数据库B的。现在有个新需求,业务新增一个功能,用户可以在界面选择,有两个选项,分别是,而业务需要展示对应模式的数据,也就是说需要新增一个数据库C,用来保留训练模式下的数据,原本的数据库B用来保留作战模式下的数据,但是不管在哪种模式下,数据库A是不需要切换的。

2024-01-09 11:43:51 571

原创 教你一招解决:no active profile set,falling back to default profiles:default.

本来代码已经完成,现需要重新打包上传到服务器,我之前的打包步骤一直都是 重启项目-maven package,今天也不知咋的,我嫌重启太慢了,就直接 先clean-再package,结果就是项目在服务器上运行不起来了,当时我就知道肯定是打包出问题了。然后我就奇了怪了啊,我明明配置yml文件使用prod,怎么就告诉我没有配置呢?在网上溜达了一圈回来,检查了一下打包的target文件夹,发现target下面果然缺失了很多文件,包括资源文件(yml文件在该文件夹里面)。

2023-12-22 15:07:55 1762

原创 如何防止接口被恶意请求?添加时间戳检验?

Autowired@Autowired@Autowired@Overridethrow new UserException(ReturnCode.PARAMETERS_ERROR, "缺少session");//获取方法中的注解,看是否有该注解= null){//从redis中获取用户访问的次数// 有可能ip是代理的//第一次访问//加1}else{//超出访问次数。

2023-08-01 10:41:30 623

原创 自定义Controller接口参数的值不能为空的校验

需求:在进入到相应Controller控制器前,需要先校验参数是否符合规范要求,如是否为空等等。有人说,可以使用@PathVariable里面的required属性控制,然而该属性只是代表参数是否必填,并不能校验参数的值是否满足要求。

2023-07-31 17:15:16 989

原创 Java解决new date出现的时区问题(差8小时)

这样就不用专门在各个地方设置时区了,即可以取消format.setTimeZone()的设置。创建一个全局配置类,用于配置项目全局时区。

2023-07-19 16:58:03 2679

原创 java -jar后出现中文乱码

网上说dos窗口出现中文乱码有两种情况,一是运行jar包后程序输出的日志出现乱码,二是运行jar包后程序返回的数据出现乱码。第一种情况的解决办法(dos窗口输出的日志出现乱码),先在黑窗口执行下面命令,将控制台输出的编码改为utf8。今天在黑窗口执行一个jar包,发现程序运行后打印的日志全部出现中文乱码的情况,现记录一下解决的办法。第二种情况的解决办法(程序返回的数据出现乱码),运行jar包时指定编码为utf8,如:java -Dfile.encoding=utf-8 -jar xxx.jar。

2023-06-29 10:21:46 4781 1

原创 windows系统配置多个redis端口实例

找到redis的配置文件redis.windows-service.conf,复制一份该配置文件到该目录下面,更改文件名为redis.windows-service-6380.conf(自定义)。打开redis管理工具RedisDesktopManager连接到6380这个端口的redis服务,确认是否可以连接成功。右键此电脑-管理-服务和应用程序-服务,查看是否有名称为redis_6380的服务实例。1)、右键上述redis_6380的服务实例,点击启动或者关闭。4、启动和关闭redis服务。

2023-06-26 19:49:30 812 1

原创 项目中根据对象属性来去重的方法Collectors.collectingAndThen()

如有一个Person列表,项目中需要根据Person类里面的name属性去重。//赋值初始化过程省略。

2023-03-20 11:44:34 759 1

原创 3年Java经验面试题回顾总结

我在一月初的时候从上一家公司离职,放肆玩了一个多月,大概从2月10日的样子开始刷题。其实没有什么规划,只是在B站上面搜一下,直接上手看视频,先是从Java基础开始,然后是三大框架,其次是微服务,最后简单回顾了一下前端知识,大概就是这样。大概学习了半个月的样子(期间包括简历的制作),然后开始投简历是在2月27日。在看公司的招聘要求的时候,我发现我无了,感觉好多技术都不会,甚至是没有听过,比如Netty、Activiti、ERP等等,心想肯定是找不到工作了,心态崩了好几天。

2023-03-12 00:41:06 427

原创 如何保证RabbitMQ消息顺序消费

所谓顺序消费,即保证消息的发送顺序要与消息的消费顺序保持一致。

2023-03-06 23:23:25 5877 2

原创 Spring 中,有两个 id 相同的 bean,会报错吗

在这种情况下,(如图)如果我们在同一个配置类里面声明多个相同名字的bean,在Spring IOC容器中只会注册第一个声明的Bean的实例。我们知道,spring容器里面的bean默认是单例的,所以id是唯一的。如果使用@Autowired注解根据类型实现依赖注入,因为IOC容器只有UserService01的实例,所以启动的时候会提示找不到UserService02这个实例。首先,在同一个XML配置文件里面,不能存在id相同的两个bean,否则spring容器启动的时候会报错。

2023-02-16 19:19:41 5273

原创 MySQL为什么要改进LRU算法?

LRU = Least Recently Used(最近最少使用):也就是末尾淘汰法,新数据从链表头部加入,释放空间时从末尾淘汰数据。1.当要访问某个页时,如果不在Buffer Pool中,需要把该页加载到缓冲池,并且把该缓冲页对应的控制块作为节点添加到LRU链表的头部。2.当要访问某个页时,如果在Buffer Pool中,则直接把该页对应的控制块移动到LRU链表的头部。3.当需要释放空间时,直接从末尾淘汰。

2023-02-09 14:13:41 560

原创 为什么写缓冲区仅适用于非唯一普通索引页?

change Buffer:写缓冲区,是针对二级索引(辅助索引)页的更新优化措施。作用:在进行DML操作时,如果请求的辅助索引(二级索引)没有在缓冲池中时,并不会立刻将磁盘页加载到缓冲池,而是在change Buffer中记录缓冲变更,等未来数据被读取时,再从磁盘中读取旧数据并与change Buffer中对应数据进行合并恢复到Buffer Pool中。change Buffer更新流程如下。

2023-02-09 13:30:26 303 1

原创 大白话理解cookie、session和token

名词介绍cookie:浏览器访问服务器,服务器返回cookie给浏览器,浏览器在本地存储cookie,下次带着cookie访问服务器,服务器返回相应的数据。session:浏览器访问服务器,服务器会存储浏览器的数据value,并把key返回给浏览器,浏览器下次带着key(session ID)来访问服务器,服务器能根据key来获取数据。如果有负载均衡,则是session的一个痛点 。token:浏览器访问服务器,服务器保留一份密钥并返回一个加密之后的token给浏览器,浏览器拿着token访问服

2022-12-22 15:14:36 1654

原创 Spring事务失效,同一个类中的内部方法调用事务失效

声明式事务实现方式所谓声明式事务,也就是通过配置的方式,比如通过配置文件xml或者注解的方式,来告诉Spring哪些方法需要Spring帮忙管理事务,然后开发者只需要关注业务代码,而事务的事情则由Spring自动帮我们控制。配置文件的方式:即在spring.xml文件中进行统一配置,开发者基本不用关注事务的事情了,一切交给spring处理。基于注解的方式:只需要在想要添加事务的方法上加上@Transaction注解就可以了。实际工作中,基于配置文件的方式用的很少,我们工作中主要还是用注解的方

2022-12-12 12:57:02 7819 1

原创 CSDN不用登录也可以复制代码,解决登录后才能复制的办法

背景我司对外网使用了拦截,导致CSDN无法登录,但是工作中时不时会参考一下CSDN的代码(一键复制),而鼠标放到代码上面则会提示登陆后复制,这就很伤心难过了。解决CSDN登陆后复制的2种办法方法一1、鼠标右键想要复制的代码(一定要将光标放到代码上面),然后选择检查,进入到开发者模式。2、选择Elements进入元素。3、选择Styles进入样式。4、在styles下方有个filter筛选器,输入select。5、搜索结果里面有一些user-select:none(包括webk

2022-12-09 16:31:01 17613

原创 为什么要使用双重校验锁来实现单例模式?

大家应该都听说过双重校验锁来实现单例模式,但是我突然产生了一个疑问,就是为什么要使用双重校验来实现呢?只用一个校验不行吗?经过几番查找与思索,终于搞清楚了原因。第一次校验:也就是代码中的第一个if(singleton == null),这就是为了提高代码执行效率。当有了一个实例之后,就无需再进行下一步的同步代码块,可以直接返回已经创建好的实例。第二次校验:也就是第二个if(singleton == bull),这个是为了防止多次创建实例。假如有这种场景,当singleton还没有被创建时,线程t

2022-12-06 11:13:42 1171 2

原创 Windows修改系统时间和文件的修改日期的cmd命令

echo 2022/11/28 | date

2022-11-29 14:23:27 15412

原创 关于Cannot resolve xxx的解决办法

有时候,我们明明没做其它什么配置,只是升级了某些依赖软件的版本,但是当我们下载依赖的时候,会出现Cannot resolve xxx的情况,即本地没有找到对应版本的依赖包。常规解决办法如下:1)检查idea设置里面的maven设置,查看相关maven的配置路径是否正确。2)清除缓存并重启idea很多时候重启可以解决一大部分问题3)刷新pom文件我遇到的问题用上面方案都不能解决,我的问题是:pom文件升级了某个开源软件,但是在reload项目的时候会报Cannot resolve

2022-11-18 15:18:52 22744 2

原创 idea将unicode转中文失败原因分析,勾选Transparent xxx失效

今天早上有同事咨询了一个问题,说是参照了我的工作文档,并没有将unicode码转为中午。听到这个问题,我立马与她拉会议对齐了具体情况,向她确认了以下3件事情:1、文件后缀是否正确。是看她自己创建的文件是否以properties为后缀。2、是否勾选Transparent native-to-ascii conversion勾选框。在idea设置里面的file encodings下面。3、File Encodings里面涉及的encoding编码是否都设置成了UTF-8。均得到了肯定的答复之

2022-11-01 15:04:49 883

原创 我们公司使用Log4j将项目日志输出到指定文件

一大早来到公司,刚打开电脑就发现有很多消息提示,不出所料都是来找我解决问题定位的,我也还是按照以往的套路,直接甩给他们一个项目的日志路径,让他们把日志发给我瞅瞅,然后开始定位。突然我想到,我这个日志文件是咋产生的呢?我们知道,在IDEA上运行项目的时候,控制台会输出我们的日志信息,刚开始我还以为我们是搞了一个流,异步的将控制台信息输出到日志文件里面,但是全量搜索了一下整个项目,并没有发现有任何关于把控制台内容输出的相关流已经代码。接着问了一下老同事,他也只是说了我们项目应该用的是Log4j把日志

2022-10-24 10:11:14 1371 1

原创 Spring的编程式事务和声明式事务

解释声明式事务:通过AOP(面向切面)的方式,本质就是使用环绕通知对方法执行前后进行拦截,即在目标方法执行之前开启事务,在执行完目标方法之后根据实际情况提交或回滚事务。有基于注解的方案(@Transactional)和基于XML配置文件的方案(AspectJ框架)。编程式事务:需要手动开启、提交、回滚事务。也就是需要自己编写一下开启、提交和回滚事务的方法。比较声明式事务优点:不需要通过编程的方式管理事务。也就是不需要在业务逻辑代码中掺杂事务管理的代码,只需要在配置文件中做相关的事务规则声明(

2022-10-18 10:52:05 553

原创 Spring循环依赖的随手记

Spring中创建Bean的步骤在Spring中创建Bean大概分三步:1、实例化,就是new了个对象(不完整的对象)2、属性注入3、初始化,执行一些aware接口中的方法,如AOP代理等如何解决循环依赖关键步骤是 提前暴露未完全创建完毕的Bean。在Spring中,只有同时满足一下两点才能解决循环依赖的问题:1、依赖的Bean必须都是单例。2、依赖注入的方式,不能全是构造器注入且beanName字母序在前的不能是构造器注入。为什么必须都是单例看了源码就会知道,循

2022-10-11 21:25:11 465

原创 面试官问我为啥B+树一般都不超过3层?3层B+树能存多少数据?redo log与binlog的两阶段提交?

我今天逛了一下CSDN,又发现了一条显眼的数据,大概是说3层B+树足以容纳2000w条数据。我当时就蒙了,3层对2000w,心想这B+树也太厉害了吧,由此勾起了我求知的欲望,我一定要搞明白他这2000w是怎么来的。B+树结构关于B+树的结构,我在之前的文章有讲过,在这里就不细说了,简而言之,B+树的分支非常多,而且每个非叶子节点只存主键值(主键索引)和指针,数据存在于叶子节点。也就是说,磁盘的IO次数与树的高度是相同的。3层B+树可以存多少数据?进入正题,前面说了,3层B+树大概可以存2

2022-09-20 21:24:55 6491 5

原创 Redis缓存满了咋办?什么叫近似LRU算法?为啥不使用真实LRU?

Redis缓存满了怎么办?那还用说吗,满了就删除一些旧数据不就有空间了嘛。只是不能瞎删,要遵循策略删。由此,就产生了下图所示的Redis内存淘汰策略:下面详细介绍一下Redis使用的LRU算法(近似)。近似LRU算法什么叫LRU算法呢?LRU的全称是Least Recently Used,也就是 最近最少使用 策略,判断数据最近被使用的时间,距离目前时间最远的数据优先被淘汰,是根据访问时间来更改链表顺序从而实现缓存淘汰的算法。它的核心思想是:如果该数据最近被访问,那么将来被访问的几

2022-09-15 10:32:51 528

原创 简单说一下Zookeeper分布式锁

前言实现分布式锁有很多方式,其中最常用的应该是Redis分布式锁和Zookeeper分布式锁。初识Zookeeper还是在学习SpringCloud微服务的时候,当时只是把它拿来做分布式配置中心和注册中心的,没想到它的应用场景还挺多的,如分布式锁、集群选举等等。今天简单了解了一下它的分布式锁的场景,这篇文章只是用来记录一下个人对Zookeeper分布式锁原理的简单理解。Zookeeper的分布式锁的实现唯一节点特性Zookeeper分布式锁的实现是基于它的唯一节点特性来的。唯一节点特性:

2022-08-26 17:20:03 553

原创 面试官让我讲一下Redis缓存的一致性hash算法

前提:我们应该知道,使用Redis缓存是为了提高系统性能,而且当数据量特别大的时候,单台缓存服务器也会显得比较吃力,所以我们需要用到多台缓存服务器来降低单台缓存服务器的压力。这就会出现一个问题:我们如何保证数据可以均匀的分布在这几台缓存服务器上?为了解决这个问题,就出现了普通hash算法和一致性hash算法。下面会对这两种方法进行介绍。普通hash算法普通hash算法其实就是我们平时经常说的取模算法。普通hash算法的应用场景假设我们有三台缓存服务器,分别设置编号为0号、1号和2号,现在

2022-08-25 14:18:30 601

原创 面试官:你是如何保障MySQL数据库与Redis缓存的数据一致性?

什么是数据库与缓存的一致性?数据一致性?数据一致性是值:1)缓存中存有数据,并且该数据在缓存中的数据值=数据库中的数据值。2)缓存中没有该数据,那么数据库中的值=最新值。为什么会有一致性问题?在我们把Redis作为缓存的时候,如果数据需要更改,我们就得经过双写来保证缓存与数据库的数据一致性。如果要保证强一致性的话,势必要引入2PC等分布式一致性协议,或者引入分布式锁等技术,但是这肯定也会对性能有影响,这也违背了我们使用Redis缓存的目的 -- 提高性能。所以我们现在谈的数据

2022-08-24 16:28:49 396 4

原创 MySQL场景面试,你是如何进行SQL优化的?

在面试的时候,极有可能会问到SQL优化相关的问题,下面模拟一下面试场景。面试官:你们平时是怎么来优化SQL的?答:关于SQL的优化,我主要从以下4个方面考虑。1、表结构优化表结构的优化包括给字段设计合适的类型、尽可能使用varchar代替char、取消无效索引。给字段设计合适的数据类型:也就是尽量使用数字型字段。比如某个字段只含数字信息,那么就不要将该字段设置为字符类型,因为这样会降低查询和连接的性能,也会增加存储开销。因为存储引擎在进行查询和连接时会逐个比较字符串中的每一个字符,而对于

2022-08-23 10:29:47 439

空空如也

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

TA关注的人

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