Loading

摘要: 前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟线程的预览功能。下载JDK19之后翻看了一下有关虚拟线程的一些源码,跟早些时候的Loom项目构建版本基本并没有很大出入,也跟第三方JDK如鹅厂的Kona虚拟线程实现方式基本一致,这里分析一下虚拟线程设计与源码实现。 Platform 阅读全文
posted @ 2022-10-07 02:13 throwable 阅读(777) 评论(0) 推荐(4) 编辑
摘要: 前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的)。Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性(确实有不少人说到Stream会降低代码的可读性,但是在笔者看来,熟练使用之后反而觉得代码的可读性提高 阅读全文
posted @ 2021-10-06 16:37 throwable 阅读(7962) 评论(18) 推荐(31) 编辑
摘要: 前提 Lettuce是一个Redis的Java驱动包,初识她的时候是使用RedisTemplate的时候遇到点问题Debug到底层的一些源码,发现spring-data-redis的驱动包在某个版本之后替换为Lettuce。Lettuce翻译为生菜,没错,就是吃的那种生菜,所以它的Logo长这样: 阅读全文
posted @ 2019-09-28 09:33 throwable 阅读(65868) 评论(11) 推荐(22) 编辑
摘要: 背景 笔者所在项目组在搭建一个全新项目的时候选用了SpringBoot3.x,项目中应用了很多SpringBoot2.x时代相关的第三方组件例如baomidou出品的mybatis-plus、dynamic-datasource等。在配置好相关依赖、最小启动类和配置之后,发现项目无法启动。于是根据启 阅读全文
posted @ 2022-12-04 18:22 throwable 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 前提 Spring团队致力于为Spring应用程序提供原生映像支持已经有一段时间了。在SpringBoo2.x的Spring Native实验项目中酝酿了3年多之后,随着Spring Framework 6和Spring Boot 3的发布,对应的项目就是Spring Native,原生镜像支持将会 阅读全文
posted @ 2022-10-30 11:08 throwable 阅读(922) 评论(4) 推荐(1) 编辑
摘要: 前提 最近发现各个频道推荐了很多ULID相关文章,这里对ULID的规范文件进行解读,并且基于Java语言自行实现ULID,通过此实现过程展示ULID的底层原理。 笔者尝试把ULID基于Java实现的代码工程化,见仓库ulid4j,欢迎star或者提交PR ULID出现的背景 ULID全称是Unive 阅读全文
posted @ 2022-10-17 23:13 throwable 阅读(691) 评论(0) 推荐(2) 编辑
摘要: 前提 趁着国庆前后阅读了虚拟线程相关的源码,写了一篇《虚拟线程 - VirtualThread源码透视》,里面介绍了虚拟线程的实现原理和使用示例。需要准备做一下前期准备: 安装OpenJDK-19或者Oracle JDK-19 准备好嵌入式Tomcat的依赖,需要引入三个依赖包,分别是tomcat- 阅读全文
posted @ 2022-10-08 00:05 throwable 阅读(429) 评论(0) 推荐(1) 编辑
摘要: 前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟线程的预览功能。下载JDK19之后翻看了一下有关虚拟线程的一些源码,跟早些时候的Loom项目构建版本基本并没有很大出入,也跟第三方JDK如鹅厂的Kona虚拟线程实现方式基本一致,这里分析一下虚拟线程设计与源码实现。 Platform 阅读全文
posted @ 2022-10-07 02:13 throwable 阅读(777) 评论(0) 推荐(4) 编辑
摘要: 前提 JDK19于2022-09-20发布GA版本,本文将会详细介绍JDK19新特性的使用。 新特性列表 新特性列表如下: JPE-405:Record模式(预览功能) JPE-422:JDK移植到Linux/RISC-V JPE-424:外部函数和内存API(预览功能) JPE-425:虚拟线程, 阅读全文
posted @ 2022-09-24 22:07 throwable 阅读(1073) 评论(0) 推荐(0) 编辑
摘要: 背景 在日常写一些小工具或者小项目的时候,有依赖管理和依赖注入的需求,但是Spring(Boot)体系作为DI框架过于重量级,于是需要调研一款微型的DI框架。Guice是Google出品的一款轻量级的依赖注入框架,使用它有助于解决项目中的依赖注入问题,提高了可维护性和灵活性。相对于重量级的Sprin 阅读全文
posted @ 2022-02-22 22:55 throwable 阅读(1280) 评论(2) 推荐(2) 编辑
摘要: 前提 当前(2022-02前后)日志框架logback的最新版本1.3.0已经更新到1.3.0-alpha14版本,此版本为非stable版本,相对于最新稳定版1.2.10来说,虽然slf4j-api版本升级了,但使用的API大体不变,对于XML配置来看提供了import标签对于多appender来 阅读全文
posted @ 2022-02-13 18:25 throwable 阅读(703) 评论(2) 推荐(1) 编辑
摘要: 前提 本文主要内容是分析JDK中的BitMap实现之java.util.BitSet的源码实现,基于JDK11编写,其他版本的JDK不一定合适。 文中的图比特低位实际应该是在右边,但是为了提高阅读体验,笔者把低位改在左边了。 什么是BitMap BitMap,直译为位图,是一种数据结构,代表了有限域 阅读全文
posted @ 2022-01-03 17:14 throwable 阅读(486) 评论(0) 推荐(1) 编辑
摘要: 前提 之前在写一个通用HTTP组件的时候遇到过媒体(Media)类型multipart/form-data的封装问题,这篇文章主要简单介绍一下HTTP协议中媒体类型multipart/form-data的定义、应用和简单实现。 multipart/form-data的定义 媒体类型multipart 阅读全文
posted @ 2021-12-28 14:21 throwable 阅读(942) 评论(0) 推荐(2) 编辑