自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JDK动态代理和CGLIB代理的区别

总的来说JDK动态代理利用接口实现,CGLIB动态代理基于继承实现。

2023-08-09 21:01:35 565

原创 RabbitMQ中ACK机制的潜在的问题

自动确认ACK:假设消费端收到很多消息,这时消费端就会自动回复给服务器ACK,但是若此时发生了宕机,则消息回全部丢失。此时就需要我们进行手动ACK进行消费端确认。

2023-06-25 09:49:01 117

原创 rabbitmq工作流程

2023-06-24 16:10:03 129

原创 HashMap中put()方法流程

首先判断键值对数组是否还有空间,如果没有空间的话需要进行resize扩容。 然后根据key的值计算出key所要插入的位置,如果该位置已经有元素,判断已有元素的key和将要插入的key的hash是否相同,若相同则直接覆盖。 若hash不同,首先判断hashMap底层是否位红黑树,如果为红黑树,则直接插入; 若不为红黑树,则计算链表的长度,判断长度是否大于8,若大于8,就将链表转为红黑树并进行插入;否则进行链表的插入操作; 插入成功后,判断实际存在的键值对数量size是否超多了最大容量threshold

2023-05-29 15:18:45 120

原创 服务治理和注册

当服务器启动的时候,会把当自己服务器的信息比如:服务地址通讯等以别名的方式注册到注册中心上。另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到的实际的服务通讯地址,然后再实现本地RPC调用远程RPC远程调用框架的设计思想,在于注册中心,因为注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在传统的RPC远程调用框架中,管理每个服务之间的依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务与服务之间的依赖关系,可以实现服务调用,负载均衡,容错等,实现服务发现与注册。

2023-03-22 22:22:38 68

原创 JVM知识栈

java是不能直接操作底层操作系统的,需要利用c/c++语言来操作,java中来调用其他语言的方法就是本地方法。如果变量是方法内的局部变量(对多个线程是私有的),则不会出现线程安全,因为每个方法执行时都会由自己的栈帧空间。如果没有逃离方法的作用范围,就是线程安全的。不会,栈内存无非就是一次次方法调用产生的栈帧内存,随着方法的执行完毕,内存会被释放。如果变量是方法外的共有变量(对多个线程是共享的),会出现线程安全问题。它是线程共享的,堆中的对象都需要考虑线程安全的问题。方法内的局部变量是否线程安全?

2023-03-12 20:23:34 289

原创 redis内存淘汰策略

redis内存淘汰策略

2023-02-06 23:45:27 57

原创 Redis过期key处理

惰性删除:当ttl到期之后,当访问一个key的时候,检查该key的存活时间,如果已经过期才执行删除;b. redis的每个事件循环前调用beforeSleep函数,执行过期key清理,模式为Fast。利用两个Dict,一个记录key-value键值对,一个记录key-ttl键值对。redis会设置一个定时任务,按照指定的频率来执行过期key清理,模式为slow;周期删除:顾名思义就是设置一个定时任务,周期性的抽样删除部分过期的key;

2023-02-06 23:27:24 116

原创 Redis数据结构类型

如果存储的SDS长度小于44字节,则会采用embstr编码,此时RedisObject中Object Head和要存储的SDS是一段连续空间,申请内存时只需要调用一次内存分配函数即可;在3.2版本之前,List底层实现方式LinkedList加上ZipList,当元素数量小于512并且元素大小小于63字节时采用ZipList,超过则采用LinkedList;当元素数量不多的时候,Dict和SkipList的优势不明显,而且更耗费内存,此时ZSet底层会采用ZipList结构;

2023-02-06 15:32:33 92

原创 Redis为什么是单线程?

抛开持久化不谈,redis是纯内存操作,执行速度非常快,它的性能瓶颈是网络延迟而并不是执行速度,因此多线程并不会带来巨大的性能提升。redis v4.0:引入多线程异步处理一些耗时较长的任务,例如异步删除bigkey的unlink命令。引入多线程会面临线程安全的问题,必然要引入线程锁这样的安全手段,实现复杂度增高,而且性能也会大大打折扣。redis v6.0:在核心网络模型中引入多线程,进一步提高对多核CPU的利用率。多线程会导致过多的上下文切换,带来不必要的开销。若考虑整个redis,则是多线程。

2023-02-06 13:49:30 223

原创 解决Spring方法内调用导致事务失效的一种方法

然后在调用已经添加玩事务的方法中获取sping提供给我们的代理对象。这样就可以完美的解决方法内调用导致事务失效的问题了。首先在pom文件中添加aspectj的依赖。

2022-12-22 22:03:50 374

原创 线程的6种状态

线程各种状态之间的关系如下图:

2022-12-18 22:46:49 61

原创 线程池原理(源码)

如果想看懂线程池的核心源码,需要查看的就是线程池的核心属性。在shutdown状态下,空闲的线程要执行interrupt中断,正在工作状态的线程不能执行interrrupt。工作线程执行任务之前,会先执行lock方法(将state从0改为1),正在工作的线程,state为1。在中断线程之前,判断每一个线程的state,如果为0,直接interrupt,如果为1,什么也不干。线程池里面的工作线程就是Worker对象,查看一下Worker里面做了什么事情。在工作中,核心线程数,最大线程数,空闲时间怎么设置?

2022-12-11 15:59:06 333

原创 SpringBoot中@EnableConfigurationProperties失效

解决办法,在application上面添加注解。

2022-10-17 21:37:19 813

原创 SpringBoot2中的一个更新

在SpringBoot2中的配置类里面有一个属性proxyBeanMethods,默认为true。为true的情况下默认创建对象时先检查IOC容器中是不是有该对象,如果有该对象,则从容器里面直接拿。否则的话proxyBeanMethods为false,不提供代理对象。proxyBeanMethods为true称为full模式,每次启动SpringBoot创建对象都会对IOC容器进行检查。如果proxyBeanMethods为false,则调用配置类中的方法创建对象的时候,直接new出来一个新对象。

2022-10-17 21:35:20 90

原创 SpringBoot中的4级配置文件

config下面的application.yml。

2022-10-16 16:18:37 193

原创 Mybatis缓存

只要是同一个SqlSession,执行相同的方法,查询一样的结果。那么只有第一次会走Sql语句,后面的查询会走缓存,一级缓存默认是开启的。在mapper文件的cache标签中可以设置以下属性。

2022-09-27 21:07:54 217

原创 SpringMVC工作过程

前端控制器会读取SpringMVC的核心配置文件,通过扫描组件找到控制器,将请求地址和控制器中@RequestMapping注解的value属性值进行匹配,若匹配成功,该注解所标识的控制器方法就是处理请求的方法。处理请求的方法需要返回一个字符串类型的视图名称,该视图名称会被视图解析器解析,加上前缀后缀组成视图的路径,通过Thymeleaf对视图进行渲染,最终将视图转发到对应的页面。

2022-09-11 14:56:55 99

原创 Maven常用命令

会把本土工程打包,并且按照本土工程的坐标保存到本地仓库,并且还会保存到私服仓库中。还会自动把项目部署到web容器当中。会编译,编译测试,测试,并且按照pop.xml配置把主程序打包生成jar包或者war包。会在当前目录下生成一个target,里面存放编译主程序之后的字节码文件。会自动生成一个目录surefire-reports,保存测试结果。即target目录,里面存放的是编译测试程序之后的字节码文件。会把本土工程打包,并且按照本土工程的坐标保存到本地仓库。字节码文件也是同样地存放在target里面。

2022-09-10 14:35:08 84

原创 Spring管理事务

添加到类上面代表对该类的所有方法开启事务,添加到方法上面表示只针对该方法开启事务。(3)repeatable read(mysql默认):解决了脏读,不可重复读,幻读仍然有可能出现。(2)read comitted:解决了脏读,不可重复读,幻读都有可能出现。(1)read uncomitted:脏读,不可重复读,幻读都有可能出现。指的是一个事务去调用另一个事务中的方法,主要有以下传播机制。默认值是-1,表示不提交,设置的值都是以秒为单位。(1)创建事务管理器,并注入数据源。解决措施(设置事务隔离级别)

2022-09-07 22:18:53 743

原创 JdbcTemplate操作数据库

【代码】JdbcTemplate操作数据库。

2022-09-07 00:05:08 280

原创 AOP通知

注解里面的数字越小,说明优先级越高(整个类的优先级高哦)

2022-09-06 19:46:29 81

原创 AOP面向切面编程

通过不修改源代码的方式,在主干里面添加新功能。(1)有接口,使用JDK动态代理需要创建接口实现类代理对象(2)没有接口,使用CGLIB动态代理创建当前类的子类的代理对象类里面的哪些方法可以被增强,这些方法称为连接点。实际真正被增强的方法,称为切入点。实际增强的逻辑部分,称为通知。把通知应用到切入点的过程,称为通知。

2022-09-05 20:35:04 95

原创 使用注解方式管理bean

【代码】使用注解方式管理bean。

2022-09-04 21:56:12 166

原创 bean生命周期

如果重写了BeanPostProcessor里面中的两个方法,那么这两个方法分别会在bean初始化之前和之后执行。

2022-09-04 19:48:18 60

原创 singleton和prototype

IOC中怎样创建单例对象和多实例对象

2022-09-04 17:09:52 905

原创 IOC注入外部bean和内部bean

同时dao层有一个UserDao对象,并定义其实现类为UserDaoImpl。通过上面两个步骤,就相当于将UserServiceImpl中的userDao属性赋值为UserDaoImpl,也就是用多态的方式创建了一个UserDao对象。这样做的好处是,在UserServiceImpl中,我们只需要定义相关的属性接口即可,这样即使其实现类发生了变化,也不会影响UserServiceImpl的正常使用。需要注意的是,在xml文件中配置创建对象时,必须是实体类,不能是接口。

2022-09-03 19:51:10 202

原创 IOC注入属性(xml方式)

(1)Spring创建对象(XML方式):创建对象的时候默认执行无参数构造方法,如果类中只提供了有参构造方法,那么无参构造方法就没有了,此时会报错。(id属性:唯一标识;class属性:类全路径)IOC和DI的区别:DI是IOC中一种具体实现,注入属性需要在对象创建的基础之上进行完成。注意事项:使用set方法注入,与配置信息相关的类中一定要有set方法。注意:此时与spring配置文件相关的类可以不提供无参构方法。DI:依赖注入,就是注入属性。

2022-09-03 16:33:06 163

原创 IOC容器

IOD容器原理

2022-09-03 15:55:38 51

原创 MVC架构模式

MVC(Model View Controller)架构模式不属于23种设计模式,应该称其为软件开发架构模式,它的出现可以帮助后端程序员从繁杂的后端开发中抽离出来,在不同的层面只需要关注特定的需求即可。如果用jsp+servlet进行开发,那么业务逻辑的编写,数据库的连接以及CRUD操作,都需要在一个Servlet中完成,这样代码复用性太低,而且看起来十分繁杂。

2022-09-02 14:52:33 1217

原创 Cookie对象实现原理

【代码】Cookie对象实现原理。

2022-08-26 17:12:35 202

原创 Session对象实现原理

【代码】Session对象实现原理。

2022-08-25 21:43:46 541

原创 Http协议

协议实际上就是某些人或某些组织指定好的一套规范,大家都按照这个规范来,就可以沟通无障碍。(比方说大家都能听懂普通话)(1)Http协议:W3C组织指定的一种超文本传输协议。是一种通信协议,发送消息的模板提前被指定好。(超文本,不是普通文本,例如声音,图像等)。(2)Http协议游走在Browser和Server之间,B向S发送数据要遵守Http协议,S向B发送数据也要遵守Http协议,以实现B/S结构的解耦合,解耦合就是指Br不依赖于S,S不依赖于B。.........

2022-08-18 12:20:59 55

原创 认识ServletContext

初步认识ServletConetxt

2022-08-16 21:54:14 106

原创 适配器设计模式Adapter

Adapter模式

2022-08-12 17:11:55 82

原创 Servlet对象的生命周期

Servlet对象的创建与销毁

2022-08-12 12:50:37 178 1

空空如也

空空如也

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

TA关注的人

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