java
文章平均质量分 64
百里度
这个作者很懒,什么都没留下…
展开
-
SnowFlake雪花算法
SnowFlake算法生成id的结果是一个64bit大小的整数1、1bit不用,因为二进制中最高位是符号位,1表示负数,0表示正数。生成的id一般都是用整数,所以最高位固定为0。2、41bit时间戳,毫秒级。可以表示的数值范围是 (2^41-1),转换成单位年则是69年。3、10bit工作机器ID,用来表示工作机器的ID,包括5位datacenterId和5位workerId。4、12bit序列号,用来记录同毫秒内产生的不同id,12位可以表示的最大整数为4095,来表示同一机器同一时间截(毫秒)内原创 2022-06-07 22:10:09 · 423 阅读 · 0 评论 -
jvm内存模型教程
一、java各个版本jvm内存模型区别1.7及之前版本,如上图其中,虚拟机栈,本地方法栈以及程序计数器为线程隔离。方法区和堆是所有线程共享的数据区域。1.8版本主要的区别是移除了方法区,方法区用于存储已被虚拟机加载的类信息、常量、静态变量、动态生成的类等数据。实际上在Java虚拟机的规范中方法区是堆中的一个逻辑部分,但是它却拥有一个叫做非堆(Non-Heap)的别名。对于方法区的实现,不同虚拟机中策略也不同。以我们常用的HotSpot虚拟机为例,其设计团队使用永久带来实现方法区,并把GC的分代收集扩原创 2021-10-08 16:17:01 · 156 阅读 · 0 评论 -
使用cxf发布webservice接口,以及调用webservice接口
一、cxf发布webservice接口添加maven依赖<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.4.3</version> </dependency> <de原创 2021-04-28 16:53:17 · 10518 阅读 · 1 评论 -
java单列模式深入分析
首先我们要先了解下单例的四大原则:1.构造私有。2.以静态方法或者枚举返回实例。3.确保实例只有一个,尤其是多线程环境。4.确保反序列换时不会重新构建对象。我们常用的单例模式有:饿汉模式、懒汉模式、双重锁懒汉模式、静态内部类模式、枚举模式,我们来逐一分析下这些模式的区别。单例模式在单线程下一般分为懒汉模式,和饿汉模式,总体来说,懒汉模式的优点可以突出的显现;但是当变成多线程时,饿汉模式可以很好的避免安全隐患,而懒汉模式则不可以。1.饿汉模式:public class .原创 2021-02-26 18:42:29 · 160 阅读 · 0 评论 -
Git将多个commit合并成一个commit
1、查看提交历史,git log这里使用到一个命令:git rebase -i,我们合并21和22提交记录,那么git rebase -i 后面跟的参数应该是想要合并的最前面commit id的上一个,就是7690fbee9fb9df0a6d4226e81523acc5d421a3da这个git rebase -i 7690fbee9fb9df0a6d4226e81523acc5d421a3da这是弹出编辑框这里除了第一个外,其他的pick改成s,意思就是把第二条往下的记录全部合并到第一条原创 2021-02-24 11:47:54 · 2695 阅读 · 0 评论 -
itextpdf获取关键字所在坐标位置以及添加印章、水印等
一、简介iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。maven依赖导入<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId>原创 2021-01-02 14:55:37 · 5090 阅读 · 1 评论 -
使用jackson把java对象转成xml格式
一、maven依赖引入<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.12.0</version> </dependency>原创 2020-12-25 11:35:40 · 5387 阅读 · 2 评论 -
java线程池关闭问题
一、线程池关闭问题1、我们知道下面这段代码,线程池作为局部变量使用,是没有意义的。每次进来请求都是创建一个线程池后,销毁线程,关闭线程池。然后在来一个请求,再次创建一个线程池,在关闭线程。 @RequestMapping("/test") public String test() { ThreadPoolExecutor executorService = new ThreadPoolExecutor(5, 5, 10, TimeUnit.SECO原创 2020-10-16 11:37:23 · 1450 阅读 · 0 评论