数据结构
文章平均质量分 90
Java常见的数据结构源码分析,数据结构的本质和运用的算法
fenglllle
这个作者很懒,什么都没留下…
展开
-
mapstruct和lombok同时使用的问题解析
mapstruct实际使用过程一言难尽啊,本身与idea有兼容性问题,不过新版本确实在一定程度上规避了问题,不过与lombok一起使用必须依赖lombok-mapstruct-binding才行,否则因为与lombok的顺序问题,运行过程并不会报错,结果很难保证。建议还是自己写getter和setter吧,性能没区别。原创 2024-11-13 23:11:34 · 960 阅读 · 0 评论 -
springboot kafka多数据源,通过配置动态加载发送者和消费者
如果消费者或者发送者逻辑需要写在当前kafka网关应用,那么只能通过自定义扫描方式支持配置不同,所有配置的生成者和消费者必须代码实现逻辑,通过配置加载方式,自定义扫描注入bean即可。以消费者为例,生产者不涉及注解发送方式相对简单。});写了一个初始化的bean,用于通过配置加载bean。消费者是注解方式扫描,bean需要根据配置加载,不能写在代码里面这里仅仅是注册bean,并不会被beanpostprocessor处理关于第1点。原创 2024-10-07 15:55:46 · 1171 阅读 · 0 评论 -
hutool 解压缩读取源文件和压缩文件大小失败导致报错
最近处理老项目中的问题,升级安全jar,发现hutool的jar在解压缩的时候报错了,实际上是很简单的防御zip炸弹攻击的手段,但是却因为hutool的工具包取文件大小有bug,造成了解压缩不能用,报错:invalid sizes: compressed -1, uncompressed -1,理论上使用这个API的所有方法都有问题。影响范围hutool 5.8.11~5.8.16,5.8.17修复。demo准备构建一个demo吧:JDK8+hutool 5.8.16没考虑流关闭问题,实际生原创 2024-09-21 14:23:11 · 1287 阅读 · 0 评论 -
关于数字存储和byte[]数组的一些心得
实际上这次是一些碎碎念,核心还是计算机的原理,计算机因为电气性能只设计有0、1,所以是2进制,存算都是2进制。而且计算机在设计之初只设计了加法,没设计或者设计减法有问题,导致数据相减运算都是加运算,所以需要存储和运算负数,那么就需要定义负数的存储和相加逻辑,就设计了反码和补码来存储负数。另外一个字节存储能力有限,往往需要很多字节来存储一个内容,那么符号位的定义在总体结构很明晰,但是对于字节数组的单个字节就会存在歧义,造成数据可读性很迷惑,因为符号位的特殊意义。原创 2024-08-31 23:07:13 · 1287 阅读 · 0 评论 -
雪花算法的一些问题解析
雪花算法实际上设计极为巧妙,通过时间戳,机器码,序列号(自增)来达到某个时间段(默认1毫秒)在某个并发下(并发超出自增ID就会重复或者阻塞等问题,不过我们一般达不到,且可以通过负载均衡增加资源规避),不重复ID。实现了加资源的方式来达到分布式ID不重复,且自增的特性。原创 2024-07-29 18:05:59 · 769 阅读 · 0 评论 -
M2 Mac mini跑Llama3
在4-19左右,Meta 宣布正式推出下一代开源大语言模型Llama 3;共包括 80 亿和 700 亿参数两种版本,号称 “是 Llama 2 的重大飞跃”,并为这些规模的 LLM 确立了新的标准。实际上笔者早就体验过,只不过自己电脑没什么显卡(核显),所以一直没跑llama,但是最近听说m2芯片可以运行,就体验了一下。看图表8B的数据可以在本地运行,70B就不用想了。试了一下真的可行。原创 2024-04-29 22:04:53 · 2681 阅读 · 0 评论 -
sonar-java 手写一个规则-单元测试分析
最近做项目,定制sonar规则,提高Java代码质量,在编写的sonar规则,做验证时,使用单元测试有一些简单的心得感悟,分享出来。sonar的自定义规则很简单,一般而言有2种模式可以使用:1. 自定义扫描代码逻辑,并对分类的Tree的结构处理2. 使用已扫描的分类,对分好类的Tree进行分析。原创 2024-02-25 15:09:54 · 1965 阅读 · 0 评论 -
JDK8 CopyOnWrite容器(COW)
前言CopyOnWrite,写复制容器,一种延时懒惰策略。JDK5开始提供了两个写复制容器CopyOnWriteArrayList和CopyOnWriteArraySet。CopyOnWrite即写复制容器。体现读写分离的思想,即add或者set元素的时候,copy一个容器用于写,以前的容器仍然可以读取,当添加完成元素之后,将复制的容器作为新的容器,废弃以前的容器GC掉。1. Co...原创 2018-08-28 11:04:21 · 359 阅读 · 0 评论 -
JDK8 ArrayList源码解析
1. ArrayList的设计思路。直接看源码/** <p>This class is a member of the * <a href="{@docRoot}/../technotes/guides/collections/index.html"> * Java Collections Framework</a>. * * @author ...原创 2018-08-30 14:57:03 · 251 阅读 · 0 评论 -
JDK8 LinkedList源码解析
1. LinkedList的设计思路。直接看源码/** * Doubly-linked list implementation of the {@code List} and {@code Deque} * interfaces. Implements all optional list operations, and permits all * elements (includ...原创 2018-08-31 16:21:54 · 382 阅读 · 0 评论 -
LRU算法,以及Apache LRUMap源码解析
1. 什么是LRULRU(least recently used) : 最近最少使用LRU就是一种经典的算法,在容器中,对元素定义一个最后使用时间,当新的元素写入的时候,如果容器已满,则淘汰最近最少使用的元素,把新的元素写入。1.1 自定义实现LRU的要求比如redis,如何自己实现简易版的redis缓存。那么我们需要一种数据结构,支持set和get操作。1) get操作时...原创 2018-09-13 11:01:47 · 2795 阅读 · 0 评论 -
Java基本数据类型存储与包装类源码解析
1. 首先,字节即byte,是二进制,最小的存储单位;位即bit,比特流,常用于网络传输:1byte=8bit。2. 8种基本数据类型为:byte、short、int、long、float、double、char、boolean。Java中没有类似C语言中的sizeof()函数,该函数的功能是计算变量的字节数。但是Java中有包装类定义了8种基本数据类型的size(单位bit,...原创 2018-09-14 12:17:54 · 573 阅读 · 0 评论 -
JDK8 HashSet源码解析
前言HashSet我们使用很多,但仅仅在使用的角度,用法很简单,现在分析原理1. 总体概览public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable{ static final long ...原创 2018-10-24 22:33:05 · 567 阅读 · 0 评论
分享