Loading

摘要: 前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的)。Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性(确实有不少人说到Stream会降低代码的可读性,但是在笔者看来,熟练使用之后反而觉得代码的可读性提高 阅读全文
posted @ 2021-10-06 16:37 throwable 阅读(5506) 评论(17) 推荐(25) 编辑
摘要: 前提 Lettuce是一个Redis的Java驱动包,初识她的时候是使用RedisTemplate的时候遇到点问题Debug到底层的一些源码,发现spring-data-redis的驱动包在某个版本之后替换为Lettuce。Lettuce翻译为生菜,没错,就是吃的那种生菜,所以它的Logo长这样: 阅读全文
posted @ 2019-09-28 09:33 throwable 阅读(54941) 评论(11) 推荐(18) 编辑
摘要: 前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的)。Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性(确实有不少人说到Stream会降低代码的可读性,但是在笔者看来,熟练使用之后反而觉得代码的可读性提高 阅读全文
posted @ 2021-10-06 16:37 throwable 阅读(5506) 评论(17) 推荐(25) 编辑
摘要: 前提 之前很长一段时间关注JDK协程库的开发进度,但是前一段时间比较忙很少去查看OpenJDK官网的内容。Java协程项目Loom(因为项目还在开发阶段,OpenJDK给出的官网https://openjdk.java.net/projects/loom中只有少量Loom项目相关的信息)已经在201 阅读全文
posted @ 2021-08-20 00:15 throwable 阅读(480) 评论(0) 推荐(0) 编辑
摘要: 前提 某一天点开掘金的写作界面的时候,发现了内置Markdown编辑器有一个Github的图标,点进去就是一个开源的Markdown编辑器项目bytemd(https://github.com/bytedance/bytemd): 这是一个NodeJs项目,由字节跳动提供。联想到之前业余的时候做过一 阅读全文
posted @ 2021-08-15 16:34 throwable 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 前提 最近在看Netty相关的资料,刚好SOFA-BOLT是一个比较成熟的Netty自定义协议栈实现,于是决定研读SOFA-BOLT的源码,详细分析其协议的组成,简单分析其客户端和服务端的源码实现。 吐槽一下:SOFA-BOLT的代码缩进和FastJson类似,变量名称强制对齐,对于一般开发者来说看 阅读全文
posted @ 2021-08-07 21:23 throwable 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 前提 某一天巧合打开了sofa-bolt项目,查找部分源码,看到了项目中使用bit数组实现功能开关的特性,感觉这种方式可以借鉴,于是写下这篇文章。 原理 bit数组的布局如下: 由于每个bit都可以表示1或者0,刚好对应于开关的ON和OFF。只需要定义好每个开关所在的bit数组下标和开关的状态(ON 阅读全文
posted @ 2021-07-31 10:30 throwable 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 前提 这是《冷饭新炒》系列的第六篇文章。 本文会翻炒一个用途比较广的算法 - 布隆过滤器算法。 布隆过滤器的一些概念 主要包括: 简介 算法 参数 优势和劣势 布隆过滤器简介 布隆过滤器是一种空间高效概率性的数据结构(百科中原文是a space-efficient probabilistic dat 阅读全文
posted @ 2021-03-06 12:56 throwable 阅读(786) 评论(0) 推荐(1) 编辑
摘要: 前提 这是《冷饭新炒》系列的第五篇文章。 本文会翻炒一个用以产生访问令牌的开源标准JWT,介绍JWT的规范、底层实现原理、基本使用和应用场景。 JWT规范 很可惜维基百科上没有搜索到JWT的条目,但是从jwt.io的首页展示图中,可以看到描述: JSON Web Tokens are an open 阅读全文
posted @ 2021-02-20 08:55 throwable 阅读(2923) 评论(10) 推荐(9) 编辑
摘要: 前提 UUID是Universally Unique IDentifier的缩写,翻译为通用唯一标识符或者全局唯一标识符。对于UUID的描述,下面摘录一下规范文件A Universally Unique IDentifier (UUID) URN Namespace中的一些描述: UUID(也称为G 阅读全文
posted @ 2021-01-29 09:06 throwable 阅读(943) 评论(2) 推荐(1) 编辑
摘要: 前提 在很早很早之前,写过一篇文章介绍过Redis中的red lock的实现,但是在生产环境中,笔者所负责的项目使用的分布式锁组件一直是Redisson。Redisson是具备多种内存数据网格特性的基于Java编写的Redis客户端框架(Redis Java Client with features 阅读全文
posted @ 2021-01-11 22:40 throwable 阅读(1599) 评论(5) 推荐(5) 编辑
摘要: 前提 半年前(2020-06)左右,疫情触底反弹,公司的业务量不断提升,运营部门为了方便短信、模板消息推送等渠道的投放,提出了一个把长链接压缩为短链接的功能需求。当时为了快速推广,使用了一些比较知名的第三方短链压缩平台,存在一些问题: 收费贵 一些情况下,短链域名在部分第三方平台例如微信会被封杀 回 阅读全文
posted @ 2020-12-27 22:38 throwable 阅读(739) 评论(0) 推荐(3) 编辑