首页
学习
活动
专区
工具
TVP
发布

用户4480853的专栏

专栏作者
78
文章
52423
阅读量
12
订阅数
Theme Gravity 2024/02/17
Gravity 主题的灵感源自 spring.io 官网。Gravity 是一款专为技术写作型博客而打造的,适用于 Halo 平台的原创主题。Gravity 主题的设计沉稳而有力,没有过多的复杂的元素在内,这不仅使读者阅读文章时能有更好的体验,也能使撰写者创作出更好的wenzhang内容。
DioxideCN
2024-02-18
920
异步任务实战之远程拉取和风天气API 发布于
在上一篇文章《并发编排与响应式初步》,我们已经对CompletableFuture的功能进行了深入的探讨,并简要介绍了Reactor响应式流相关的概念。然而,要熟练掌握异步任务编排并非一朝一夕之事,尤其是在需要处理 I/O 密集型应用或者一些特殊场景,如:任务间无顺序依赖关系,或者需要在所有任务完成后一次性处理所有返回结果。
DioxideCN
2023-10-21
1950
Structured Concurrency 发布于
Structured Concurrency is avaiable as an incubator API in the JDK 19. This is still about Project Loom, probably one of the most anticipated features of the JDK 19.
DioxideCN
2023-10-21
1910
Virtual Thread 发布于
In traditional Java high-concurrency projects, context switching of threads brings huge memory overhead. The emergence of thread pools solved these problems to some extent, but Java threads still could not escape the control of the OS. Thus, virtual threads came into being.
DioxideCN
2023-10-21
1920
ToolBench插件指南 发布于 2
Tool Bench 是一款非常强大功能型插件,它为绝大多数主题、插件提供了更好的扩展能力和一些API支持。它包含了如下的一些功能:
DioxideCN
2023-10-21
2470
编排并发与响应式初步 发布于 2023
在前些阵子的《ThreadLocal与ScopedValue》文章中,已经详细地描述了ThreadLocal与ScopedValue的作用。不同的多线程应用环境造就了不一样的两个本地线程缓存方案,实际项目开发中仍然是与多线程环境相互结合才能发挥它们最大的作用。
DioxideCN
2023-10-21
2760
分布式与微服务 发布于 2023年06
微服务是基于分而治之的思想演化出来的。过去传统的一个大型而又全面的系统,随着互联网的发展已经很难满足市场对技术的需求,于是我们从单独架构发展到分布式架构,又从分布式架构发展到 SOA 架构,服务不断的被拆分和分解,粒度也越来越小,直到微服务架构的诞生。
DioxideCN
2023-10-21
1970
BukkitNMS开发中蕴含的混淆技术 发布于
Spigot的NMS是对net-minecraft-server包(也是nms缩写的由来)的一个综合性反射工具,即便读者可能不知道Minecraft是什么或者从未参与过Minecraft伺服器的插件开发工作,但我仍会为每一位读者详细介绍这其中所蕴含的一些技术和实现原理。读者需要知道的是:Spigot 更专注于 Minecraft 的插件开发和服务器功能扩展,而不是提供一个完整的企业级应用开发框架,因此虽然它不像Spring那样专业但是两者仍然存在着许多相似性很高的技术原理。
DioxideCN
2023-10-21
3470
ToolBench样式指南 发布于 2
本文主要展示Tool Beanch插件中的各种样式,方便大家写作的时候进行参考,部分样式可能会在迭代过程中有所变更,请及时关注最新信息。点击下方仓库链接,获取并下载最新的插件构建版本。
DioxideCN
2023-10-21
3010
混淆技术 发布于 2023年05月30
混淆是一种通过修改程序的源代码或二进制代码,在保障程序的功能不变的基础上,使得代码难以阅读和理解的技术。在Java中,混淆通常用于防止对源代码的逆向工程,从而保护知识产权和商业秘密。常见的Java混淆工具包括ProGuard和JGuard等。这些工具可以自动地对Java字节码进行混淆。
DioxideCN
2023-10-21
2670
synchronized锁升级 发布于
synchronized是一种用于修饰同步代码块或方法的关键字。当一个线程进入被synchronized修饰的代码块或方法时,会先尝试获取括号中对象(对于同步方法则是当前类的实例)的对象锁。在JDK 1.6及之后的版本,synchronized锁具有锁升级的机制,分为偏向锁、轻量级锁和重量级锁。
DioxideCN
2023-10-21
3120
ThreadLocal与ScopedValue 发布于
ThreadLocal是一种实现将变量在各线程之间隔离的方案,也叫线程局部变量表。在Java中每个线程都拥有一个ThreadLocal下的ThreadLocalMap类型的变量,它用来存储定义在线程中的ThreadLocal对象,ThreadLocalMap的键是一个弱引用,指向对应的ThreadLocal对象。但值得每一位Java开发者注意的是ThreadLocal变量如果不及时remove()会造成严重的内存泄露问题。 在JDK 20 Early-Access Build 28版本中便针对ThreadLocal类重新设计了一个ScopedValue类。ScopedValue是一个JDK孵化功能在已发布的JDK20版本中需要手动配置才能使用,ScopedValue的作用是在某些情况下作为ThreadLocal的替代。在同一线程上运行的不同代码可以通过ScopedValue共享不可变的值。ScopedValue主要是为了解决虚拟线程使用ThreadLocal时可能存在的一些问题。 在本期文章中讲会介绍几个ThreadLocal在开发实战中的案例背景以及详细介绍在JDK19中提出的新的并发工具和JDK20正在孵化的ScopedValue类。
DioxideCN
2023-10-21
3300
Thymeleaf目录页原理 发布于
为Halo搭建的博客配上如同《新华字典》那样的目录是一个不错的主意,不仅能让分类更加清晰,还能帮助读者更轻松地查找和理解文章的内容。在这篇文章中,《Thymeleaf目录页原理》将深入探讨如何实现这种目录结构的设计,从基本原理开始,逐步深入到实际操作。
DioxideCN
2023-10-21
2560
为什么要求开发者对Logger再封装 发布于
在《嵩山版阿里Java开发手册》的日志规约中第一条明确规定了:应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架 (SLF4J、JCL--Jakarta Commons Logging)中的 API,使用门面模式的日志框架开发。
DioxideCN
2023-10-21
1750
CAS与自旋锁的实现原理 发布于 20
CAS(Compare And Swap)比较并交换是JUC并发编程中最为重要的一个工具。它在处理并发问题时提供了一个非阻塞的解决方案,引入了一种全新的并发编程思维——乐观锁。这种思想预设所有线程在执行过程中都不会发生冲突,每一个线程都会乐观地认为自己能够成功执行,从而大大降低了线程之间的等待和阻塞,极大地提高了系统的并发性能。
DioxideCN
2023-10-21
2320
如何在Java项目中与C++混合开发 发布于
如果读者是Java领域的开发人员,在研究Java底层逻辑的时候一定离不开源码分析。以研究CAS为例,其底层实现来自Unsafe类中的public final native boolean compareAndSetInt方法,这里使用native显然是因为Java层面已经满足不了来自开发者需要操作计算机底层的需求了。而这种使用native本地方法来间接调用计算机底层实现的过程被称为JNI技术(Java Native Interface,Java本地接口)。
DioxideCN
2023-10-21
2150
Java词法树与自定义关键字 发布于
Java词法树(语法树)这种树形结构是Java源码的一种抽象表示,它以图形化的方式反映出代码的语法结构,从而帮助开发者更好地理解和解析程序的语义。
DioxideCN
2023-10-21
1400
JDK源码编译与版号控制 发布于 20
JDK(Java Development Kit)作为Java的核心开发工具包,其包含了许多Java开发者们日常所需的工具,比如编译器、运行时环境以及各种基础的类库。然而,对于大多数开发者来说,JDK可能只是一个黑盒工具。所有编写的Java代码最终都会被JDK转化为可执行的程序,但是JDK内部的工作原理可能对于大部分开发者来说仍然理解困难。更何况,如果想对JDK进行一些定制或者修改,那么不了解JDK的编译过程就无法开始。
DioxideCN
2023-10-21
3630
volatile与内存屏障 发布于 2
在Java中,volatile用于标记变量,而内存屏障又是volatile的底层实现。它们是Java中最基础也是最简单的两个概念,它们的出现使得开发者在多线程环境下能够保证更好的数据一致性和程序执行的正确性。volatile简单、轻量,相比于其他方式,如synchronized或直接加锁,有着更好的性能。能让开发者少些对锁的忧虑,多一些对实际问题的关注。
DioxideCN
2023-10-21
2780
运行时数据区
JVM 只有一个方法区,且是被所有 JVM 线程共享的,方法区的生命周期是与 JVM 互相绑定的。方法区拥有以下特点:
DioxideCN
2023-01-13
1810
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档