Loading

摘要: 前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的)。Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性(确实有不少人说到Stream会降低代码的可读性,但是在笔者看来,熟练使用之后反而觉得代码的可读性提高 阅读全文
posted @ 2021-10-06 16:37 throwable 阅读(6581) 评论(18) 推荐(29) 编辑
摘要: 前提 Lettuce是一个Redis的Java驱动包,初识她的时候是使用RedisTemplate的时候遇到点问题Debug到底层的一些源码,发现spring-data-redis的驱动包在某个版本之后替换为Lettuce。Lettuce翻译为生菜,没错,就是吃的那种生菜,所以它的Logo长这样: 阅读全文
posted @ 2019-09-28 09:33 throwable 阅读(58411) 评论(11) 推荐(20) 编辑
摘要: 前提 本文主要内容是分析JDK中的BitMap实现之java.util.BitSet的源码实现,基于JDK11编写,其他版本的JDK不一定合适。 文中的图比特低位实际应该是在右边,但是为了提高阅读体验,笔者把低位改在左边了。 什么是BitMap BitMap,直译为位图,是一种数据结构,代表了有限域 阅读全文
posted @ 2022-01-03 17:14 throwable 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 前提 之前在写一个通用HTTP组件的时候遇到过媒体(Media)类型multipart/form-data的封装问题,这篇文章主要简单介绍一下HTTP协议中媒体类型multipart/form-data的定义、应用和简单实现。 multipart/form-data的定义 媒体类型multipart 阅读全文
posted @ 2021-12-28 14:21 throwable 阅读(377) 评论(0) 推荐(2) 编辑
摘要: 前提 笔者在下班空余时间想以Javassist为核心基于JDBC写一套摒弃反射调用的轻量级的ORM框架,过程中有研读mybatis、tk-mapper、mybatis-plus和spring-boot-starter-jdbc的源代码,其中发现了mybatis-plus中的LambdaQueryWr 阅读全文
posted @ 2021-11-27 12:51 throwable 阅读(377) 评论(0) 推荐(2) 编辑
摘要: 前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的)。Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性(确实有不少人说到Stream会降低代码的可读性,但是在笔者看来,熟练使用之后反而觉得代码的可读性提高 阅读全文
posted @ 2021-10-06 16:37 throwable 阅读(6581) 评论(18) 推荐(29) 编辑
摘要: 前提 之前很长一段时间关注JDK协程库的开发进度,但是前一段时间比较忙很少去查看OpenJDK官网的内容。Java协程项目Loom(因为项目还在开发阶段,OpenJDK给出的官网https://openjdk.java.net/projects/loom中只有少量Loom项目相关的信息)已经在201 阅读全文
posted @ 2021-08-20 00:15 throwable 阅读(1191) 评论(0) 推荐(0) 编辑
摘要: 前提 某一天点开掘金的写作界面的时候,发现了内置Markdown编辑器有一个Github的图标,点进去就是一个开源的Markdown编辑器项目bytemd(https://github.com/bytedance/bytemd): 这是一个NodeJs项目,由字节跳动提供。联想到之前业余的时候做过一 阅读全文
posted @ 2021-08-15 16:34 throwable 阅读(485) 评论(0) 推荐(0) 编辑
摘要: 前提 最近在看Netty相关的资料,刚好SOFA-BOLT是一个比较成熟的Netty自定义协议栈实现,于是决定研读SOFA-BOLT的源码,详细分析其协议的组成,简单分析其客户端和服务端的源码实现。 吐槽一下:SOFA-BOLT的代码缩进和FastJson类似,变量名称强制对齐,对于一般开发者来说看 阅读全文
posted @ 2021-08-07 21:23 throwable 阅读(359) 评论(0) 推荐(0) 编辑
摘要: 前提 某一天巧合打开了sofa-bolt项目,查找部分源码,看到了项目中使用bit数组实现功能开关的特性,感觉这种方式可以借鉴,于是写下这篇文章。 原理 bit数组的布局如下: 由于每个bit都可以表示1或者0,刚好对应于开关的ON和OFF。只需要定义好每个开关所在的bit数组下标和开关的状态(ON 阅读全文
posted @ 2021-07-31 10:30 throwable 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 前提 这是《冷饭新炒》系列的第六篇文章。 本文会翻炒一个用途比较广的算法 - 布隆过滤器算法。 布隆过滤器的一些概念 主要包括: 简介 算法 参数 优势和劣势 布隆过滤器简介 布隆过滤器是一种空间高效概率性的数据结构(百科中原文是a space-efficient probabilistic dat 阅读全文
posted @ 2021-03-06 12:56 throwable 阅读(1114) 评论(0) 推荐(1) 编辑
摘要: 前提 这是《冷饭新炒》系列的第五篇文章。 本文会翻炒一个用以产生访问令牌的开源标准JWT,介绍JWT的规范、底层实现原理、基本使用和应用场景。 JWT规范 很可惜维基百科上没有搜索到JWT的条目,但是从jwt.io的首页展示图中,可以看到描述: JSON Web Tokens are an open 阅读全文
posted @ 2021-02-20 08:55 throwable 阅读(3193) 评论(10) 推荐(9) 编辑