java入门到失业
文章平均质量分 77
多线程并发,类加载机制,内存模型,对象内存布局,锁原理,垃圾回收,java agent技术,cas原理
艾特小小
这个作者很懒,什么都没留下…
展开
-
基于netty实现简易版rpc服务-代码实现
这样就实现了简单的rpc服务,通过公共部分的接口、注册中心、编解码器、服务端的服务映射,客户端就能进行远程过程调用了。原创 2024-10-19 22:09:54 · 415 阅读 · 0 评论 -
基于netty实现简易版rpc服务-理论分析
通过netty实现rpc服务,需要定义rpc协议,用来客户端和服务端数据交互,服务端通过监听端口,客户端tcp连接服务端,然后发送和接收数据,这个数据交互的过程,需要把数据序按照rpc协议的格式进行编解码,客户端通过动态代码封装网络请求,产生接口的代理对象。原创 2024-10-19 20:36:45 · 485 阅读 · 0 评论 -
spring循环依赖通过三级缓存解决过程分析-其二
使用三级缓存,前提就是spring觉得大部分程序,都应该是没有循环依赖,或者说循环依赖很少。基于这个理念,理想情况就是大部分的bean都是直接完成整个生命周期,在初始化中检查是否创建代理对象,然后把bean存入一级缓存,为了完成这个理想,加入了二级、三级缓存,尤其是三级缓存,延迟bean的代理创建时机,只有当发生循环依赖的时候不得已提前创建bean的代理放入二级缓存,最好的情况就是二级缓存永远都是空的,创建一个bean加入一级缓存然后就移除对应三级缓存中的lambda。原创 2024-10-10 13:36:27 · 835 阅读 · 0 评论 -
spring循环依赖通过三级缓存解决过程分析-其一
我用的sprin-boot 2.7版本,这个版本(没查是哪个版本开始的)默认情况下是不会解决循环依赖,而是启动程序会报错,如果需要spring帮我们解决循环依赖,需要加上一个配置spring.main.allow-circular-references=true。原创 2024-10-10 11:29:43 · 584 阅读 · 0 评论 -
spring程序员前置知识-ApplicationContext执行过程分析-其二
实例化 初始化 BeanpostProcessor BeanFactorypostProcessor bean工厂后置处理器 bean后置处理器 主要就是两种方式:BeanFactoryPostProcessor和BeanPostProcessor》》》》》》其中BeanFactoryPostProcessor可以向spring容器中添加一些bean定义信息。经常会说springboot自动配置,如何能做到自动配置,就是通过BeanFactoryPostProcessor的功能实现的。》》》》》》原创 2024-09-26 20:58:40 · 659 阅读 · 0 评论 -
spring程序员前置知识-ApplicationContext执行过程分析-其一
实例化 初始化 BeanpostProcessor BeanFactorypostProcessor bean工厂后置处理器 bean后置处理器 BeanDefinition 大概分析了前面几个过程,梳理一下这几个过程大概就是:》》》》》加入spring内部BeanFactoryPostProcessor和BeanPostProcessor对应的BeanDefinition到beanDefinitionMap中》》》》》原创 2024-09-26 20:07:23 · 904 阅读 · 0 评论 -
dubbo微服务开发-服务间调用上下文参数传递
2.定义服务接口2.1 服务提供方实现代码2.2 服务消费方调用代码3.注意事项setAttachment 设置的 KV 对,在完成下面一次远程调用会被清空,即多次远程调用要多次设置。这个跟Threadlocal里面set有点类似,不同的是,tl中在每次请求完成以后需要手动remove保存的数据,避免内存泄漏。在dubbo自动清空传递的上下文参数,不需要程序员操心了。下面是dubbo中服务间上下文参数传递的设计:有时候我们微服务之间需要调用的时候用户信息(token),这些用户信息往往就是原创 2024-09-22 16:24:38 · 875 阅读 · 0 评论 -
java-cas原子操作
正所谓,java虐我千百遍,我待java如初恋。cas时compareAndSwap的缩写(也有说compareAndSet)。cas操作时系统提供的原子命令,java在原子整数、AQS锁内部都使用了cas提高并发效率。像常用的i++操作;看起来一行代码,实际上是三个原子操作:1.读取i;2.执行i+1;3.把i+1的值赋给i。cas就是把这个三个操作合并成一个原子操作,这样在并发时也不会出现问题。java中cas操作需要使用到Unsafe类的compareAndSwapXxx()方法,需要四个参数,第一原创 2024-09-07 20:31:52 · 246 阅读 · 0 评论 -
synchronized加锁机制-偏向锁、轻量级锁、重量级锁
synchronized 加锁机制 偏向锁 轻量级锁 重量级锁原创 2024-09-07 17:21:40 · 894 阅读 · 1 评论 -
ThreadPoolExecutor线程池异常处理分析
结论:用execute执行任务,在任务抛出异常以后,线程会异常结束,线程池创建新的线程来执行后续任务。用submit执行任务,在任务抛出异常以后,线程池会复用任务抛异常的线程来执行后续任务。**## 所以建议实现run或者call方法的时候,确保里面的业务代码被正确try-catch了,因为线程外部拿不到抛出异常的任务。## 好了,ThreadPoolExecutor异常处理分析完了,下面是基于源码分析异常的处理逻辑。## 使用execute。原创 2024-08-03 22:28:07 · 438 阅读 · 0 评论