
java
文章平均质量分 92
01Byte空间
做过开发,创过业,踩过坑。从Java后台开发,PL/SQL开发,Pro*C开发,到shell脚本,再到兼职开发的MySQL DBA。
为人友善诚恳,工作踏实,吃苦耐劳,富有朝气,激情,以及团队合作意识。
专注后端技术:Java、Shell、Socket、MySQL、Oracle、Linux、中间件、分布式、微服务。偶尔扯扯淡、分享技术干货。
https://github.com/zhouxx1055
https://zhouxx.blog.youkuaiyun.com/
展开
-
科普文:一文搞懂Maven【JDK、Maven、Spring Boot、Spring Cloud版本对应关系详解】
以下是详细的版本对应关系和搭配建议,可以帮助开发者更好地选择和配置JDK、Maven、Spring Boot和Spring Cloud的版本,确保项目的顺利开发和稳定的运行。在实际项目中,建议根据项目的具体需求和团队的技术栈熟悉度,结合上述指导选择合适的版本搭配,既能保障项目的高效开发,又能确保系统的稳定性和可维护性。:对于生产环境,建议选择Spring Boot和Spring Cloud的LTS版本,这些版本通常会有更长的维护周期和更稳定的功能。原创 2025-03-25 13:47:29 · 1069 阅读 · 0 评论 -
科普文:一文搞懂Maven
Maven基于项目对象模型 (POM) 的概念,Maven 可以通过中央信息来管理项目的构建、报告和文档。Maven(读作“马文”)是一个软件项目管理和构建工具,主要用于Java项目。它简化了项目的构建、依赖管理和项目信息管理。Maven 是一个意第绪语单词,意思是 知识的积累器,最初是为了简化 Jakarta Turbine 项目的构建过程。有几个项目,每个项目都有自己的 Ant 构建文件,但都略有不同。JAR 已签入 CVS。我们需要一种构建项目的标准方法、项目组成的清晰定义、发布项目信息的简单方法以原创 2025-03-25 13:43:36 · 1052 阅读 · 0 评论 -
科普文:2025 年3月18日Java Development Kit (JDK) 24正式发布
Oracle 正式发布,这是备受欢迎的编程语言和开发平台推出的全新版本。Java 24 () 提供了数千项改进,可帮助开发人员提高工作效率并推动创新。此外,平台提升了性能、稳定性和安全性,可帮助企业加快业务增长。敬请关注 2025 年 3 月 18 日至 20 日在美国加利福尼亚州红木海岸举办的会议,了解有关新的 Java 24 版本的更多信息。原创 2025-03-23 17:07:52 · 1000 阅读 · 0 评论 -
科普文:【支持信创、宣传国产】通过JCK认证的国产JDK梳理
未通过JCK 认证的 OpenJDK 发行版阿里巴巴 Dragonwell:未明确标注通过 JCK 认证。腾讯 Tencent Kona JDK:未明确标注通过 JCK 认证,一组工具,和其它的一些需求,用来检查一个实现是否和Java平台规范和软件参考实现兼容。JCK (或TCK for Java SE)用于验证一个Java的运行和开发环境是否符合JavaSE标准。另一方面,JCK包含海量的测试用例,通过了JCK也代表了质量保证,其他组织可以放心地使用通过了JCK测试的Java虚拟机。原创 2025-03-23 13:39:39 · 709 阅读 · 0 评论 -
实战:一文搞懂JVM原理(八):startup.sh分享一个springboot启动脚本
3. 支持新特性:JDK8、JDK11和JDK17都引入了很多新的语言特性和API,如Lambda表达式、Stream API、新的日期时间API、Var关键字等,这些新特性能够提高代码的可读性、可维护性和灵活性,也使得开发更加高效和简便。4. 生态支持:JDK8、JDK11和JDK17都有丰富的生态支持,包括各种开源框架、库、工具和平台,可以帮助企业快速开发和上线应用,提升开发效率和质量。涵盖 TLAB、逃逸分析、数据共享、锁优化、大对象处理、堆内存分配 等核心优化点,原创 2025-03-19 11:26:50 · 339 阅读 · 0 评论 -
科普文:一文搞懂JVM原理(八):对于微服务springboot进程的jvm大小如何设置?
微服务JVM配置需结合业务负载、容器资源及GC特性综合设计,核心原则为:。建议通过压力测试验证配置合理性,并持续监控运行时指标动态优化。注:实际选型需结合压力测试验证,例如通过。分析各阶段耗时及Full GC频率。原创 2025-03-19 11:17:31 · 963 阅读 · 0 评论 -
科普文:一文搞懂JVM原理(七):垃圾回收之CMS、G1、ZGC对比 (补充 )
垃圾回收(Garbage Collection,简称GC)是内存管理的核心组成部分,它负责自动回收不再使用的内存空间。在Java中,程序员不需要手动释放对象占用的内存,一旦对象不再被引用,垃圾回收器就会在适当的时机回收它们所占用的内存。 这样可以避免内存泄漏和野指针,从而大大减轻了程序员的负担,也使得Java成为一个相对安全、易于开发的编程语言。防止内存泄漏:手动管理内存容易导致内存泄漏,而GC可以自动回收不再使用的对象,防止内存泄漏的发生。提高开发效率。原创 2025-03-19 11:12:01 · 757 阅读 · 0 评论 -
科普文:一文搞懂JVM原理(七):如何选择JDK和GC收集器
前面做了汇总,继续看看如何选择jdk和垃圾收集器?选择jdk,就一个标准收费和不收费。有钱任性的选择甲骨文高版本jdk,性能肯定会有提升,毕竟甲骨文是企业,挣的就是卖软件的钱;没钱的,老老实实的用jdk8U211,jdk11.0.2,基本没得选。所以jdk不用选,确定了jdk之后,比如不想被甲骨文收割的那么就只能这两个版本。jdk8:支持cms、Parallel GC、G1;jdk11:支持G1、以及早期版本的ZGC。原创 2025-03-19 10:56:38 · 1178 阅读 · 0 评论 -
科普文:一文搞懂JVM原理(六)总结
JVM内存结构堆(Heap):存放对象实例,分为新生代(Young Generation)与老年代(Old Generation)。新生代:包含Eden区、两个Survivor区(From/To),采用复制算法(G1、ZGC不是简单的复制)老年代:存储长期存活对象,采用标记-整理或标记-清除算法方法区(Metaspace):存储类元数据(JDK8后替代永久代)虚拟机栈:线程私有的方法调用栈帧本地方法栈:Native方法执行栈程序计数器。原创 2025-03-19 10:35:58 · 822 阅读 · 0 评论 -
科普文:Java基础之JVM虚拟机系列【万字总结16种OOM问题】
前面我们梳理了6种OOM及其危害和现象,今天在这里我们对oom问题做一个汇总。Java虚拟机(JVM)在内存不足时会抛出16种常见的OutOfMemoryError(OOM)错误,每种错误都有其特定的原因和解决方法。以下是这16种OOM错误的详细汇总:1.Java heap space:当堆内存(Heap Space)没有足够空间存放新创建的对象时,会抛出java.lang.OutOfMemoryError: Java heap space错误。常见原因包括请求创建一个超大对象(如大原创 2024-12-28 15:34:33 · 1201 阅读 · 0 评论 -
科普文:Java基础系列【问题:长整数数组long[]是否可以装下全部长整数数据?】OutOfMemoryError: Requested array size exceeds VM limit
先说结论:不可以。由上面代码,可以看出发生 java.lang.OutOfMemoryError: Requested array size exceeds VM limit 错误的原因可能是:数组太大, 最终长度超过平台限制值, 但小于 Integer.MAX_INT为了测试系统限制, 故意分配长度大于 2^31-1 的数组。原创 2024-12-27 23:20:13 · 386 阅读 · 0 评论 -
科普文:Java基础系列【一文搞懂字节、位运算、及其应用】
Java中的位运算是一类直接对整数的二进制位进行操作的运算符,包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移()。这些运算符能够高效地执行数值计算和状态控制,特别适用于性能优化、权限控制、数据处理等场景。这些运算符能够高效地执行数值计算和状态控制,特别适用于性能优化、权限控制、数据处理等场景。原创 2024-12-27 21:36:12 · 1198 阅读 · 1 评论 -
科普文:Java基础系列之【新版JDK的Java许可NFTC:不定时的甲骨文炸弹】
Oracle Java 可能存在以下一些潜在的风险:最具创新精神的收费策略:人头费(根据最新的许可条款,企业不仅需要为使用的Java软件支付费用,而且还要按照总员工数量来收取费用,这种模式被称为“人头费”)。如果企业不合规,Oracle 可能会要求企业补购相应许可证,并支付可能的罚款或费用。这对于大公司来说可能是一笔不小的开支。此外,不合规使用还可能引发法律纠纷和声誉风险。许可:Oracle 对 Java 的商业使用有特定的许可要求,对于大规模的商业部署,可能需要支付许可费用,这会增加成本。版原创 2024-12-04 20:24:45 · 1544 阅读 · 2 评论 -
实战:Java基础系列之【国密SM:SM2、SM3、SM4的java实现bcprov-jdk】
前面详细介绍了国密SM:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9,ZUC。这里我们详细看一下SM2、SM3、SM4的java实现bcprov-jdk。国际上通用的非对称加密算法有RSA、D-H算法;SM2属于椭圆曲线加密算法(ECC)。SM2加密和解密是不同的秘钥,需要提前生成一对公钥和私钥,公钥用来加密,私钥用来解密。原创 2024-12-04 17:26:27 · 1949 阅读 · 0 评论 -
科普文:Java基础系列之【java加密/解密、签名之国密SM:SM1(SCB2)、SM2、SM3、SM4、SM7、SM9,ZUC】
商用密码的应用领域十分广泛,主要用于对不涉及国家秘密内容但又具有敏感性的内部信息、行政事务信息、经济信息等进行加密保护。,是指能够实现商用密码算法的加密、解密和认证等功能的技术。(包括密码算法编程技术和密码算法芯片、加密卡等的实现技术)。商用密码技术是商用密码的核心,国家将商用密码技术列入国家秘密,任何单位和个人都有责任和义务保护商用密码技术的秘密。,包括SM1(SCB2)、SM2、SM3、SM4、SM7、SM9、祖冲之密码算法(ZUC)等。,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。原创 2024-12-04 11:18:39 · 1425 阅读 · 0 评论 -
科普文:Java基础系列之【java加密/解密、签名】
哈希函数(Hash function),又称散列函数、散列算法,也叫摘要算法,它是一种不可逆的信息摘要算法。好的散列算法具备如下特性:单向性(one-way)即不可逆抗冲突性(collision-resistant)即产生两个相同散列值的概率很低(但输入相同,则输出的结果一定相同)雪崩效应(avalanche effect)即原始数据的微小改动,会导致散列值的巨大差异常见的用途:密码保护:把用户密码通过散列函数加密保存(保存散列值),只有用户自己知道密码的明文。原创 2024-12-04 05:59:29 · 762 阅读 · 0 评论 -
科普文:Java基础系列之【搞懂Oracle JDK的License协议:BCL、OTN、NFTC】
OracleJDK 主要有三种许可协议:BCL 协议:Oracle Binary Code License Agreement;JDK9/JDK10以及JDK86202之前的免费许可协议。OTN 协议:Oracle Technology Network License Agreement;JDK11/JDK12以及JDK8u211之后的商业收费许可协议。NFTC 协议:Oracle No-Fee Terms and Conditions License;最新的JDK17及其之后的商业收费许可协议。原创 2024-12-03 10:13:59 · 1832 阅读 · 1 评论 -
科普文:软件架构系列之【一文读懂进程、线程、协程、纤程和Virtual Threads之间的区别与关系】作者|疯狂的KK
Virtual Threads是Java 17中引入的一项新功能,它是一种轻量级的并发执行模型。与传统的线程相比,Virtual Threads具有更小的内存开销和更高的并发性能。它通过在一个或多个物理线程上运行多个虚拟线程来实现并发执行。Virtual Threads的核心概念是Continuation,即继续执行的上下文。每一个Virtual Thread都包含一个Continuation,它可以被暂停和恢复。当Virtual Thread被暂停时,其状态将被保存,而不会占用物理线程的资源。原创 2024-12-01 17:39:11 · 851 阅读 · 0 评论 -
科普文:软件架构系列之【彻底搞懂:单核/多核、线程/进程、串行/并行、并行/并发、同步/异步、阻塞/非阻塞】
协程、虚拟线程、伪线程和纤程的区别主要在于它们的定义、实现方式、调度方式以及适用场景。协程:用户态的轻量级线程,手动控制切换,适合I/O密集型任务。虚拟线程:基于Java线程的轻量级实现,由JVM自动管理,适合需要大量并发处理但不希望创建太多真实线程的场景。伪线程:在用户空间实现的轻量级线程,调度和切换由用户程序控制,适用于高并发且对系统资源消耗要求低的场景。纤程:在用户模式下运行的轻量级线程,调度和切换完全在用户空间完成,适用于高并发且对性能要求较高的场景。原创 2024-12-01 17:28:41 · 1682 阅读 · 0 评论 -
科普文:Java基础系列之【梳理 Java 日志框架:Log4j、Log4j2、Logback、java.util.logging (JUL) 等】
日志技术是一种记录和存储应用程序运行时信息的技术。它可以捕获应用程序的状态、事件、错误和警告等信息,并将其保存到日志文件或其他存储介质中。日志技术可以帮助开发人员和运维团队了解应用程序的运行情况,进行故障排查、性能优化、安全监控和运营分析等工作。日志技术的基本概念日志级别:日志级别用于标识日志的重要性和严重程度。常见的日志级别包括DEBUG、INFO、WARN、ERROR和FATAL等。开发人员可以根据需要选择适当的日志级别来记录不同类型的信息。日志格式:日志格式定义了日志记录的结构和内容。原创 2024-11-29 21:18:33 · 1260 阅读 · 0 评论 -
科普文:Java基础系列之【How much faster is Java 17?】
通过OptaPlanner的基准测试,我们得出以下结论:在使用G1GC(默认)时,Java 17相较于Java 11提升了8.66%的性能,相较于Java 16则提升了2.41%。在使用ParallelGC时,Java 17比Java 11快6.54%,比Java 16快0.37%。此外,高吞吐量的Parallel GC在性能上优于低延迟的G1 GC,高出16.39%。由此可见,最新版的JDK确实带来了显著的性能提升。更重要的是,Java 17不仅免费供商业使用,还是LTS(长期支持)版本。原创 2024-11-28 23:15:42 · 815 阅读 · 0 评论 -
科普文:Java基础系列之【截止2024年9月30日JDK17免费License结束】
从2019年1月份开始,Oracle JDK 开始对 Java SE 8 之后的版本开始进行商用收费,确切的说是 8u201/202 之后的版本。如果你用 Java 开发的功能如果是用作商业用途的,如果还不想花钱购买的话,能免费使用的最新版本是 8u201/202。JDK17、JDK18、JDK19、JDK20,全版本(二进制版本)免费。JDK11,免费版本到 11.0.2,从 11.0.3 版本开始商用收费。JDK8 免费版本到 8u202,从 8u211版本开始收费。JDK9、JDK10,全版本免费。原创 2024-11-28 22:59:46 · 1554 阅读 · 0 评论 -
科普文:软件架构系列【规则引擎及java规则引擎概叙】
它能够将业务决策从应用程序代码中分离出来,并使用预定义的语义模块编写业务决策的组件,它接受数据输入,解释业务规则,并根据特定条件和上下文自动执行这些规则,从而做出业务决策。这些规则通常用一种名为规则语言的专用语言来书写。定义:是指对业务系统的规则进行抽象,使之成为通用模型。作用:帮助应用程序开发人员构建一套标准化的业务规则和算法。规则引擎可以简化业务架构,让开发人员更容易理解业务逻辑,并在一个开发环境中提供一致易用的工具。原创 2024-11-27 20:29:03 · 1341 阅读 · 0 评论 -
科普文:软件架构系列【软件架构五大模式概叙】
软件架构是指软件系统中各个组成部分之间的关系和组织方式,涵盖了软件的结构、行为和性能等方面。它为软件系统的设计和开发提供了一个框架性的指导,帮助开发人员有效地分配工作,确保软件的可维护性和可扩展性。软件架构定义了软件系统的整体框架,包括系统中的组件、模块、接口以及它们之间的关系。它不仅显示了软件需求和软件结构之间的对应关系,还指定了整个软件系统的组织和拓扑结构,提供了一些设计决策的基本原理。良好的软件架构可以提高开发效率、可维护性和软件质量。本文将深入探讨软件架构的五大模式:分层架构模式、微内核原创 2024-11-23 17:58:44 · 1260 阅读 · 0 评论 -
科普文:Java基础系列之【2024年9月17日JDK23正式发布】
JDK 23 在这方面迈出了重要的一步,推出了初步的值类型支持,允许开发者使用更加轻量的对象模型,减少内存消耗并提升性能。JDK 23 进一步优化了虚拟线程的性能,特别是在 I/O 密集型任务和并发任务中的应用。JDK 23 在此基础上进行了更多的优化,使得模块系统更具可扩展性,尤其在大型应用程序的构建与维护方面,带来了更加灵活的模块依赖和增强的模块版本控制。LTS 版本更加注重稳定性,安全性,性能改进,默认支持是 8 年,其中 JDK 8 延长至 2030 年(16年),延长支持期间不再提供新的功能。原创 2024-11-11 02:47:27 · 2333 阅读 · 0 评论 -
实战:java基础系列之【Exception:如何处理异常】
异常:在Java语言中, 将程序执行中发生的不正常情况称为“异常”。Error: Java虚拟机无法解决的严重问题。如: JVM系统内部错误、 资源耗尽等严重情况。比如: StackOverflowError和OOM。一般不编写针对性的代码进行处理。Exception: 其它因编程错误或偶然的外在因素导致的一般性问题, 可以使用针对性的代码进行处理。例如: 1、空指针访问 2、试图读取不存在的文件 3、网络连接中断 4、数组角标越界一种是遇到错误就终止程序的运行。原创 2024-10-24 19:59:48 · 1218 阅读 · 0 评论 -
实战:java基础系列之【 Nio:zero copy零拷贝MappedByteBuffer和FileChannel】
从前面文章我们可以知道,零拷贝是Linux提供的io性能优化技术,而java并不完全都支持。目前只支持两种:内存映射(mmap)和发送文件(sendfile)。其方法都在java.nio包下面,对应java.nio.channels.FileChannel和java.nio.MappedByteBuffer;对应底层实现是两个核心本地方法:transferTo0、map0。总结:利用 FileChannel获取MappedByteBuffer操作大文件效率明显高于普通IO流。文件过大时会报错( Exce),原创 2024-10-23 18:48:42 · 1076 阅读 · 0 评论 -
科普文:软件架构之【并发理论基础:并发问题产生的三大根源】
并发问题变幻莫测,一谈到并发就显得非常高深,一般的程序员对于并发问题也是头疼不已,但是随着网络互联越来越普遍,大规模用户访问网站程序也越来越频繁,并发问题又无法避免。众所周不知,java并发编程的罪魁祸首有三个:可见性,原子性以及有序性。原创 2024-10-21 00:29:40 · 946 阅读 · 0 评论 -
科普文:Java基础系列之【IO面试一问一答】
常见IO面试题梳理:字节流、字符流;IO模型有几种?阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。原创 2024-10-07 09:32:53 · 1199 阅读 · 0 评论 -
科普文:Java面试一问一答系列之九
锁是多线程编程中的同步机制,用于控制多个线程对共享资源的访问。锁可以防止多个线程同时访问临界区,从而保证数据的一致性和正确性。ReentrantLock: 是一个可重入的锁,支持公平和非公平两种模式。它提供了更丰富的功能,如条件变量、可中断的锁获取以及超时获取等。synchronized: 是Java中的内置锁,用于实现基本的同步。每个对象都有一个内置的监视器锁,可以通过synchronized关键字来获取和释放锁。死锁是指多个线程相互等待彼此持有的资源而无法继续执行的情况。原创 2024-08-20 00:25:42 · 933 阅读 · 0 评论 -
科普文:Java面试并发编程一问一答系列之八
BlockingQueue接口是Queue的子接口,它的主要用途并不是作为容器,而是作为线程同步的的工具,因此他具有一个很明显的特性,当生产者线程试图向BlockingQueue放入元素时,如果队列已满,则线程被阻塞,当消费者线程试图从中取出一个元素时,如果队列为空,则该线程会被阻塞,正是因为它所具有这个特性,所以在程序中多个线程交替向BlockingQueue中放入元素,取出元素,它可以很好的控制线程之间的通信。这样,原来只能一个线程进入,现在却能同时有16个写线程执行,并发性能的提升是显而易见的。原创 2024-08-17 00:05:57 · 728 阅读 · 0 评论 -
科普文:Java面试基础一问一答系列之七
它的原理是,使用CGLIB创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调用a.getB().getName(),拦截器invoke()方法发现a.getB()是null值,那么就会单独发送事先保存好的查询关联B对象的sql,把B查询上来,然后调用a.setB(b),于是a的对象b属性就有值了,接着完成a.getB().getName()方法的调用。当然,从 RabbitMQ 的全局角度,vhost 可以作为不同权限隔离的手段(一个典型的例子就是不同的应用可以跑在不同的 vhost 中)。原创 2024-08-17 00:05:19 · 589 阅读 · 0 评论 -
科普文:Java面试基础一问一答系列之六
这种方法也是使用 token 并进行验证,和上一种方法不同的是,这里并不是把 token 以参数的形式置于 HTTP 请求之中,而是把它放到 HTTP 头中自定义的属性里。通过 XMLHttpRequest 这个类,可以一次性给所有该类请求加上 csrftoken 这个 HTTP 头属性,并把 token 值放入其中。原创 2024-08-17 00:04:32 · 946 阅读 · 0 评论 -
科普文:Java面试基础一问一答系列之五
JVM 调用方法是通过方法签名来判断到底要调用哪个方法,而方法签名 = 方法名称+参数类型+参数个数组成的一个唯一值,这个唯一值就是方法签名。方法重载:在同一个类中定义多个方法,它们具有相同的名称但参数列表不同。方法重写:发生在两个类之间,这两个类具有父子关系,也就是子类继承父类。当子类需要改变从父类继承来的方法的行为时,子类可以定义一个与父类方法签名完全相同(方法名、参数列表、返回类型)的方法,这样,子类就重写了父类的方法。原创 2024-08-15 00:11:04 · 724 阅读 · 0 评论 -
科普文:Java基础系列之【线程池Executors类的9种创建线程池的方法及应用场景分析】
在Java中,Executors 类提供了多种静态工厂方法来创建不同类型的线程池。: 创建一个可缓存的线程池,如果线程池中的线程超过60秒没有被使用,它们将被终止并从缓存中移除。: 创建一个固定大小的线程池,其中 nThreads 指定了线程池中线程的数量。: 创建一个单线程的执行器,它创建单个工作线程来执行任务。: 创建一个固定大小的线程池,它可以根据需要创建新线程,但会按照固定延迟执行具有给定初始延迟的任务。: 创建一个工作窃取线程池,它使用多个队列,每个线程都从自己的队列中窃取任务。转载 2024-08-15 00:09:58 · 725 阅读 · 0 评论 -
科普文:Java基础系列之【线程池参数调优与技巧】
Java 中的线程池实现在Executor:线程池顶层接口,定义了线程池的 execute()方法,提交任务到线程池去执行。:线程池的具体实现接口,通过 submit()方法向线程池提交任务,返回 Future,可以通过 Future 获得任务的执行情况。:实现类似于 Timer 的计划任务调度功能。:是 ExecutorService 的一个实现类,也是 Java 中的线程池实现的核心实现类。通常情况下,我们是使用 ThreadPoolExecutor 来实现线程池功能。原创 2024-08-15 00:09:22 · 994 阅读 · 0 评论 -
科普文:Java基础系列之【Java代码性能优化实践】
Java 性能优化是一个涵盖代码编写、内存管理、垃圾回收、数据库访问等多个方面的过程。结合实际案例不断进行实践与总结,并依据实际情况采用适当的优化策略。在实际编码过程中,保持对性能优化的关注,不断反思和改进代码,有助于获得高性能 Java 应用。Java 作为一种广泛应用的编程语言,性能优化在很大程度上决定了程序的运行效率。优化 Java 性能可以大幅提高程序执行速度、减少程序资源占用,从而满足现代复杂软件系统的需求。本文将介绍一些 Java 性能优化的关键技术和实践要点。原创 2024-08-15 00:08:52 · 1250 阅读 · 0 评论 -
科普文:Java基础系列之【JUC常见的java并发容器原理解析与应用】
在Java中,并发容器是专门设计用于多线程环境的数据结构,能够提供线程安全的操作。除了以上7种并发容器,还有CopyOnWriteArrayList,来代替Vector、synchronizedList,CopyOnWriteArraySet来代替synchronizedSet,基于CopyOnWriteArrayList实现,ConcurrentSkipListSet可以代替synchronizedSortedSet,内部基于ConcurrentSkipListMap实现。前面的文章有对JUC下的并发转载 2024-08-15 00:08:17 · 526 阅读 · 0 评论 -
科普文:Java基础系列之【java正则表达式】
在java中,通过适当命名的Pattern类可以容易确定String是否匹配某种模式.模式可以象匹配某个特定的String那样简单,也可以很复 杂,需要采用分组和字符类,如空白,数字,字母或控制符.因为Java字符串基于统一字符编码(Unicode),正则表达式也适用于国际化的应用程序.首先一个Pattern实例订制了一个所用语法与 PERL的类似的正则表达式经编译后的模式,然后一个Matcher实例在这个给定的Pattern实例的模式控制下进行字符串的匹配工作。)的更复杂的模式上.原创 2024-08-14 12:11:33 · 891 阅读 · 0 评论 -
科普文:Java基础系列之【java框架基础:字节码增强技术框架ASM#ClassReader实现原理及源码分析】
ASM是Java中比较流行的用来读写字节码的类库,用来基于字节码层面对代码进行分析和转换。在读写的过程中可以加入自定义的逻辑以增强或修改原来已编译好的字节码,比如CGLIB用它来实现动态代理。ASM被设计用于在运行时对Java类进行生成和转换,当然也包括离线处理。ASM短小精悍、且速度很快,从而避免在运行时动态生成字节码或转换时对程序速度的影响,又因为它体积小巧,可以在很多内存受限的环境中使用。它又一个很小,但设计良好并且模块化的API,且易于使用。它具有很好的文档,并且还有eclipse插件。原创 2024-08-14 04:05:58 · 728 阅读 · 0 评论