Loading

摘要: 前提 JDK19于2022-09-20发布GA版本,该版本提供了虚拟线程的预览功能。下载JDK19之后翻看了一下有关虚拟线程的一些源码,跟早些时候的Loom项目构建版本基本并没有很大出入,也跟第三方JDK如鹅厂的Kona虚拟线程实现方式基本一致,这里分析一下虚拟线程设计与源码实现。 Platform 阅读全文
posted @ 2022-10-07 02:13 throwable 阅读(4783) 评论(4) 推荐(7) 编辑
摘要: 前提 Stream是JDK1.8中首次引入的,距今已经过去了接近8年时间(JDK1.8正式版是2013年底发布的)。Stream的引入一方面极大地简化了某些开发场景,另一方面也可能降低了编码的可读性(确实有不少人说到Stream会降低代码的可读性,但是在笔者看来,熟练使用之后反而觉得代码的可读性提高 阅读全文
posted @ 2021-10-06 16:37 throwable 阅读(10017) 评论(19) 推荐(32) 编辑
摘要: 前提 Lettuce是一个Redis的Java驱动包,初识她的时候是使用RedisTemplate的时候遇到点问题Debug到底层的一些源码,发现spring-data-redis的驱动包在某个版本之后替换为Lettuce。Lettuce翻译为生菜,没错,就是吃的那种生菜,所以它的Logo长这样: 阅读全文
posted @ 2019-09-28 09:33 throwable 阅读(76587) 评论(12) 推荐(22) 编辑
摘要: ## 前提 之前曾经写过一篇[《SpringBoot3.x 原生镜像-Native Image 尝鲜》](https://vlts.cn/post/spring-boot-native-image-demo),当时`SpringBoot`处于`3.0.0-M5`版本,功能尚未稳定。这次会基于`Spr 阅读全文
posted @ 2023-08-21 00:34 throwable 阅读(1979) 评论(2) 推荐(2) 编辑
摘要: ## 前提 开发小组在测试环境基于`docker`构建和迁移一个`MySQL8.x`实例,过程中大意没有记录对应的用户密码,然后发现某开发同事本地`Navicat`记录了根用户,于是搜索是否能够反解析`Navicat`中的密码掩码(这里可以基本断定`Navicat`对密码是采用了对称加密算法),于是 阅读全文
posted @ 2023-08-04 10:04 throwable 阅读(522) 评论(0) 推荐(1) 编辑
摘要: 前提 公司在做一些金融相关业务,某些时候由于数据提供商定期维护或者特殊原因需要暂停某些服务的消费者。之前选用的消息队列技术栈是RabbitMQ,用于微服务之间的消息投递,对于这类需要暂停消费者的场景是选用注释掉消费者Bean中的相应Spring(Boot)注解重新发布来实现,后面需要重新启动消费就是 阅读全文
posted @ 2023-02-12 21:13 throwable 阅读(817) 评论(3) 推荐(0) 编辑
摘要: 背景 笔者所在项目组在搭建一个全新项目的时候选用了SpringBoot3.x,项目中应用了很多SpringBoot2.x时代相关的第三方组件例如baomidou出品的mybatis-plus、dynamic-datasource等。在配置好相关依赖、最小启动类和配置之后,发现项目无法启动。于是根据启 阅读全文
posted @ 2022-12-04 18:22 throwable 阅读(6571) 评论(0) 推荐(1) 编辑
摘要: 前提 Spring团队致力于为Spring应用程序提供原生映像支持已经有一段时间了。在SpringBoo2.x的Spring Native实验项目中酝酿了3年多之后,随着Spring Framework 6和Spring Boot 3的发布,对应的项目就是Spring Native,原生镜像支持将会 阅读全文
posted @ 2022-10-30 11:08 throwable 阅读(5714) 评论(4) 推荐(3) 编辑
摘要: 前提 最近发现各个频道推荐了很多ULID相关文章,这里对ULID的规范文件进行解读,并且基于Java语言自行实现ULID,通过此实现过程展示ULID的底层原理。 笔者尝试把ULID基于Java实现的代码工程化,见仓库ulid4j,欢迎star或者提交PR ULID出现的背景 ULID全称是Unive 阅读全文
posted @ 2022-10-17 23:13 throwable 阅读(2388) 评论(0) 推荐(3) 编辑
摘要: 前提 趁着国庆前后阅读了虚拟线程相关的源码,写了一篇《虚拟线程 - VirtualThread源码透视》,里面介绍了虚拟线程的实现原理和使用示例。需要准备做一下前期准备: 安装OpenJDK-19或者Oracle JDK-19 准备好嵌入式Tomcat的依赖,需要引入三个依赖包,分别是tomcat- 阅读全文
posted @ 2022-10-08 00:05 throwable 阅读(1005) 评论(0) 推荐(1) 编辑
摘要: 前提 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 阅读(1822) 评论(0) 推荐(1) 编辑
摘要: 背景 在日常写一些小工具或者小项目的时候,有依赖管理和依赖注入的需求,但是Spring(Boot)体系作为DI框架过于重量级,于是需要调研一款微型的DI框架。Guice是Google出品的一款轻量级的依赖注入框架,使用它有助于解决项目中的依赖注入问题,提高了可维护性和灵活性。相对于重量级的Sprin 阅读全文
posted @ 2022-02-22 22:55 throwable 阅读(3643) 评论(2) 推荐(2) 编辑