
java
文章平均质量分 88
wenyuan65
很多看似难如登天的事情,一旦真的下定决心去做,你会发现难度并没有想象中的那么高,只是我们往往缺乏一颗勇于挑战的心!
展开
-
关于雪花算法的设计与思考
优化雪花算法以应对频繁生成全局唯一id导致阻塞的问题原创 2022-12-16 17:01:23 · 704 阅读 · 1 评论 -
ThreadLocal那点事
目录1.ThreadLocal原理2.ThreadLocal内存泄漏3.ThreadLocal最佳实践4.FastThreadLocal原理5.FastThreadLocal最佳实践6.ThreadLocal与FastThreadLocal性能比较7.总结1.ThreadLocal原理ThreadLocal是用在多线程中,用于保存当前线程的上下文信息。在任意需要...原创 2019-10-20 20:25:07 · 928 阅读 · 0 评论 -
缓存行填充与@sun.misc.Contended注解
1.缓存模型CPU和主内存之间有好几层缓存,因为与cpu的速度相比,访问主内存的速度是非常慢的。如果频繁对同一个数据做运算,每次都从内存中加载,运算完之后再写回到主内存中,将会严重拖累cpu的计算资源。因此,为了充分发挥CPU的计算性能和吞吐量,平衡CPU和主内存之间的速度差距,现代CPU引入了一级缓存、二级缓存和三级缓存,结构如下图所示:越靠近CPU的缓存存储速度越快,但是容量也越小...原创 2019-10-13 18:46:12 · 1777 阅读 · 0 评论 -
Netty服务器可以重复启动的原因探索
1.起因前几天下午,测试服务平台接口的接口时发现:接口可以调用,但是服务器下没有任何调用接口的日志;然后重启服务器,可以正常重启,并且有启动日志。再次调测试接口,还是没有调用日志,这种诡异的现象还是第一次碰到。后来查询所有服务器进程的时候,发现了一个遗留的进程,解开了心头的疑惑。事情是这样的:这个服务器(这里叫A_1)刚刚改过一次名字比如叫A_2;伴随名字的变化,服务器所在的文件夹...原创 2019-06-27 02:03:23 · 1576 阅读 · 0 评论 -
java热更新机制
java热更新机制1. 类加载实现方式2. JVM代理实现方式1. 类加载实现方式Java虚拟机的类加载是指通过一个类的全限定名来获取描述此类的二进制字节流,将其转化为方法区的运行时数据结构,最终形成可以被虚拟机直接使用的java类型的过程。实现类加载功能的代码模块就称为“类加载模型”。类加载限制每一个类加载器,都拥有一个独立的类名空间,确保任意一个类都只能被同一个类加载器加载...原创 2019-06-07 18:24:07 · 94 阅读 · 1 评论 -
java线程未捕获异常处理 -- UncaughtExceptionHandler
在java中,Exception分为两种:RuntimeException和其他需要显式捕获的异常,例如在创建文件时,FileNotFoundException 必须 使用try/catch捕获,而RuntimeException是不需要捕获的,最常见的可能就是NullPointerException。想想一下,在线上环境中,一个线程突然抛出了一个RuntimeException而没有捕获,...原创 2019-03-14 11:57:37 · 1004 阅读 · 0 评论 -
理解Sharding jdbc原理,看这一篇就够了
相比于Spring基于AbstractRoutingDataSource实现的分库分表功能,Sharding jdbc在单库单表扩展到多库多表时,兼容性方面表现的更好一点。例如,spring实现的分库分表sql写法如下:select id, name, price, publish, intro from book${tableIndex}where id = #{id,jdbcType...原创 2018-11-04 17:29:06 · 23860 阅读 · 1 评论 -
快速查看java动态生成class内容的方法
在阅读框架代码的时候,我们经常碰到自动生成的class类,例如jdk中动态代理类、cglib代理类、spring AOP代理以及method.invoke()方法中自动生成的类GeneratedMethodAccessor1、以及lambda表达式等等。其中jdk、cglib以及lamb解析中都会提供一个系统配置,在生成代理类的时候,会将类的字节码写入到项目文件夹的文件中。例如:jdk中生成动...转载 2018-09-12 00:47:12 · 2194 阅读 · 2 评论 -
A*寻路算法之解决路径多拐点问题
1.问题描述最近公司正在开发的游戏涉及到了寻路算法,然后我从网上找了一份A*算法代码,整理了一下写了一个A*算法基础实现。然而,在真正实用时A*寻路时,却发现了几个问题: 基础实现版的A*寻路算法在大地图的搜索上,耗时较长; 使用最小堆实现的OpenList来优化A*算法后,发现最后得到的路径往往是S型的; 然后策划看到效果后,提出了两点要求:1)寻路的路径中,拐点必须最少...原创 2018-08-11 23:23:40 · 10762 阅读 · 20 评论