- 博客(8)
- 收藏
- 关注
原创 浅聊线程安全可见性问题
L1,L2,L3为cpu的高速缓存,程序代码的中的变量(例如i=0)存储在主内存中,不同cpu的线程进行先从主内存中进行读取,经过高速缓存通过cpu的指令调度完成对变量i的操作后,将操作后的值回写到主内存中,再回写到主内存之后其他的cpu的线程拿到的值为旧值时(可以理解为脏数据),通过cpu各个厂商统一设定的MESI协议,通过嗅探机智强制将另一个cpu线程读的旧值待操作,设置为无效数据从而从主内存中重现获取最新的值。如果在构造函数中设置字段后发生读取,则会看到该final字段分配的值,否则它将看到默认值;
2023-12-12 22:08:19
51
原创 浅聊java线程通信死锁的产生
进行对其进行状态的变更,wait和notfiyAll和前俩者相比,在死锁方面做出了优化可以避免锁不释放的情况下所产生的死锁。伪唤醒在线程中进行条件判断时,禁止使用if()进行判断,官方表示此种写法,会产生伪唤醒,线程的唤醒不是由notfiyAll,unpark通信进行唤醒的,而是由硬件更底层的导致唤醒的在线程中条件判断推荐使用while(),进行条件判断,if只进行了一次条件判断从而不能避免伪唤醒,而while()会多次进行对条件进行判断,从而可以避免由于更底层或者硬件层面导致的伪唤醒问题.
2023-12-04 08:31:12
47
原创 浅聊spring和spring boot框架的设计思想
springboot相当于spring而言,针对繁杂的XML文件的配置和Bean的配置进行了优化,采用了注解的形式进行替换,@Configuration,@Bean,@ConditionalOnClas,@ConditionalOnBean几个核心注解完成XML文件的替换以及Bean的配置。同时MVC的C(控制层同时也有一些,请求访问return的对象),@Configuration,@Bean注解就是进行为了区分,那类是spring容器管理的对象。问题1:对象的存放是不是需要一个容器进行存放?
2023-10-04 18:29:13
64
原创 java中注解和反射的运用
0){ //实体字段被赋值,需要作为查询条件。log.info("反射获取类中的方法:::"+method.getName());log.info("获取类名:::::"+acls1.getSimpleName());log.info("获取类中方法上得注解的内容 :::::"+name1);log.info("获取类中属性上得注解的内容 :::::"+name1);
2023-10-03 18:07:38
75
原创 Dubbo核心思路梳理
ServiceProvider(服务提供者)--------->通过Netty网络通信框架暴露服务(处理通信,数据传递,编解码得问题)------->并将暴露后Netty的服务端口以及Host,保存在注册中心的实现中(例如:redis,eurka,consul,nacos等)-------->ServiceConsumer(服务消费者)调用,根据注册中心保存暴露的Netty服务进行,数据的传递,编解码,拆包,分包,固定协议格式的解析等一些列逻辑处理。手写RPC框架核心流程。
2023-07-12 19:25:26
96
原创 Docker环境下Jenkins结合Gitee搭建流程总结
jenkins实现了项目CI/CD,更好的体现了持续交付,解决了在手动打包部署项目的繁杂
2022-12-07 17:30:58
1928
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人