<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[杰尼龟的小龟壳的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_39052339</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_39052339]]></copyright><item><title><![CDATA[JDK更新系列之JDK7]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/148075687</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/148075687</guid><author>qq_39052339</author><pubDate>Mon, 19 May 2025 22:09:54 +0800</pubDate><description><![CDATA[Java 引入了多项新特性以增强异常处理、资源管理和I/O操作。suppress异常允许记录多个异常，避免异常信息丢失；捕获多个异常简化了异常处理代码；try-with-resources自动管理资源释放，减少finally块的使用。新规范如JSR341和JSR203分别增强了表达式语言和I/O API的功能，提供了更灵活的编程方式。此外，Path接口、DirectoryStream、Files和WatchService等工具类进一步简化了文件操作。jcmd、fork/join framework和Java]]></description><category></category></item><item><title><![CDATA[JDK更新系列之JDK6]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/148075665</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/148075665</guid><author>qq_39052339</author><pubDate>Mon, 19 May 2025 22:03:59 +0800</pubDate><description><![CDATA[本文介绍了Java平台中的几项关键技术与规范，包括JSR223脚本引擎、JSR199 Java Compiler API、JSR269 Pluggable Annotation Processing API，以及对JDBC4.0和JAX-WS 2.0规范的支持。通过示例代码，详细展示了如何在Java中使用JSR223脚本引擎进行脚本执行和上下文绑定操作。此外，文章还简要介绍了Java Compiler API的使用方法，以及注解处理和程序静态结构建模的相关API。这些技术与规范为Java开发者提供了强大的工]]></description><category></category></item><item><title><![CDATA[JDK更新系列之JDK5]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/148075565</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/148075565</guid><author>qq_39052339</author><pubDate>Mon, 19 May 2025 22:02:13 +0800</pubDate><description><![CDATA[本文介绍了Java编程中的几个重要特性。首先，泛型在编译时进行类型擦除，类型参数被替换为Object类型，使用时再强制转换。通配符类型和限制类型用于增强类型安全性。其次，枚举类型通过EnumMap和switch语句实现高效管理。自动装箱和拆箱简化了基本类型与包装类型之间的转换。变长参数允许方法接受不定数量的参数。最后，注解通过元数据为代码提供额外信息，支持继承、目标指定和保留策略，并通过反射获取元信息。这些特性共同提升了Java的灵活性和可维护性。]]></description><category></category></item><item><title><![CDATA[并发系列之Java锁的分类]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/148075435</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/148075435</guid><author>qq_39052339</author><pubDate>Mon, 19 May 2025 21:54:04 +0800</pubDate><description><![CDATA[Java中的锁机制主要用于多线程环境下确保共享资源的同步访问，防止数据不一致或损坏。锁可以分为内置锁（通过synchronized关键字实现，自动管理锁的获取与释放）和显式锁（如ReentrantLock，提供更灵活的控制）。按功能分类，锁可分为互斥锁（确保同一时间只有一个线程访问资源）和共享锁（允许多个线程同时读取资源）。此外，锁还可以分为乐观锁（操作时不加锁，提交时检查数据是否被修改）和悲观锁（每次访问资源时先加锁）。根据等待锁的方式，锁又可分为自旋锁（线程忙循环等待锁）和阻塞锁（线程直接阻塞）。最后，]]></description><category></category></item><item><title><![CDATA[IO多路复用模型原理]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/147246862</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/147246862</guid><author>qq_39052339</author><pubDate>Tue, 15 Apr 2025 13:39:00 +0800</pubDate><description><![CDATA[在linux没有实现epoll事件驱动机制之前，常规的手段是选择select和poll等IO多路复用的方法来实现并发服务程序。但是在大数据、高并发、集群情况下，select和poll的性能瓶颈就出现了，于是epoll就诞生了。]]></description><category></category></item><item><title><![CDATA[JavaIO之IO常见类使用]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146524500</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146524500</guid><author>qq_39052339</author><pubDate>Wed, 26 Mar 2025 11:32:02 +0800</pubDate><description><![CDATA[ArrayList 中存储数据的数组 elementData 是用 transient 修饰的，因为这个数组是动态扩展的，并不是所有的空间都被使用，因此就不需要所有的内容都被序列化。通过重写序列化和反序列化方法，使得可以只序列化数组中有内容的那部分数据。序列化的类需要实现 Serializable 接口，它只是一个标准，没有任何方法需要实现，但是如果不去实现它的话而进行序列化，会抛出异常。不会对静态变量进行序列化，因为序列化只是保存对象的状态，静态变量属于类的状态。DatagramSocket: 通信类。]]></description><category></category></item><item><title><![CDATA[JavaIO之IO源码：OutputStream]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146522197</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146522197</guid><author>qq_39052339</author><pubDate>Wed, 26 Mar 2025 10:28:17 +0800</pubDate><description><![CDATA[对比下JDK8中，close方法是没有加锁处理的。这种情况下你可以看JDK8源码中，直接利用java7的try with resources方式，优雅的调用flush方法后对out进行关闭。补充下JDK11为什么会增加nullOutputStream方法的设计？梳理部分OutputStream及其实现类的源码分析。ByteArrayOutputStream 源码如下。BufferedOutputStream 源码如下。FilterOutputStream 源码如下。]]></description><category></category></item><item><title><![CDATA[JavaIO之IO源码：InputStream]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146522062</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146522062</guid><author>qq_39052339</author><pubDate>Wed, 26 Mar 2025 10:25:35 +0800</pubDate><description><![CDATA[类 java.io.InputStream 中增加了新的方法来读取和复制 InputStream 中包含的数据。的, 而readNbytes(s,0,10)会一直（while循环）查找直到stream尾为止，并返回。：读取 InputStream 中的全部字节并写入到指定的 OutputStream 中。read(byte[], int, int)是尝试读到最多len个bytes，但是。： 从 InputStream 中读取指定数量的字节到数组中。：读取 InputStream 中的所有剩余字节。]]></description><category></category></item><item><title><![CDATA[JavaIO之IO流基础概述]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146521607</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146521607</guid><author>qq_39052339</author><pubDate>Wed, 26 Mar 2025 10:20:22 +0800</pubDate><description><![CDATA[I/O：是的缩写，指的是某个设备或环境进行数据的输入和输出，java将输入输出问题(如：读写文件，网络传输等)抽象成流对象(Stream)来解决Java环境<=>某个设备或环境数据<=>文本、图片、音频、视频等输入和输出<=>读取文件就是输入，写入文件就是输出Java.io包下提供了各种流的类和接口，用以获取不同种类的数据，并通过标准的方法输入或输出Java中IO流使用了一种。]]></description><category></category></item><item><title><![CDATA[JDK24更新了，更新内容给你们全部放在这里了]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146464381</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146464381</guid><author>qq_39052339</author><pubDate>Sun, 23 Mar 2025 23:20:10 +0800</pubDate><description><![CDATA[JDK22的JEP463又作为第二次的预览，JDK23的JEP477作为第三次预览，本次作为第四次预览版，其中main方法选择的优先顺序是static的优于非static的，其次是有args的优于没有args的。去年浅浅尝试了一波JDK21，今年刚开始就已经到JDK24了，不得不感慨Java的发展速度已经让我们跟不上了，甚至还有人戏谑称：“它发任它发，我用Java8”，但是作为开发人员，就算你不用，也得知道它做了什么，才能让自己不会被out。:永久禁用安全管理器，简化安全模型，减少相关复杂性。]]></description><category></category></item><item><title><![CDATA[序列化和反序列化]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146319935</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146319935</guid><author>qq_39052339</author><pubDate>Mon, 17 Mar 2025 17:04:40 +0800</pubDate><description><![CDATA[ObjectOutputStream 类用来序列化一个对象，如下的 SerializeDemo 例子实例化了一个 Employee 对象，并将该对象序列化到一个文件中。类 ObjectInputStream 和 ObjectOutputStream 是高层次的数据流，它们包含反序列化和序列化对象的方法。该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的，则该属性必须注明是短暂的(transient)。当序列化一个对象到文件时， 按照 Java 的标准约定是给文件一个 .ser 扩展名。]]></description><category></category></item><item><title><![CDATA[集合--Map系列之冷门Map(WeakHashMap和IdentityHashMap)]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146318666</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146318666</guid><author>qq_39052339</author><pubDate>Mon, 17 Mar 2025 16:34:40 +0800</pubDate><description><![CDATA[适合生命周期短暂且需自动清理的场景，如缓存、临时数据存储。需注意避免值对象间接引用键。用于严格区分对象实例的场景，如框架中的元数据管理。避免滥用，优先考虑HashMap。]]></description><category></category></item><item><title><![CDATA[集合--Map系列之EnumMap]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146318541</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146318541</guid><author>qq_39052339</author><pubDate>Mon, 17 Mar 2025 16:30:21 +0800</pubDate><description><![CDATA[EnumMap是Java集合框架中针对枚举类型作为Key设计的高效映射容器，通过结合枚举天然特性(例如：固定的实例集合、有序性)实现比HashMap更优的性能和内存利用率核心定位：类型安全：键严格限定为同一枚举类型空间紧凑：底层基于数组存储，无hash冲突性能卓越：操作时间复杂度接近O(1)//创建枚举集合对象--将枚举类加载到EnumMap集合 em.put(Season.Spring,"春暖花开");em.put(Season.Summer,"夏日炎炎");]]></description><category></category></item><item><title><![CDATA[集合--Map系列之LinkedHashMap]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146317900</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146317900</guid><author>qq_39052339</author><pubDate>Mon, 17 Mar 2025 16:18:10 +0800</pubDate><description><![CDATA[LinkedHashMap是HashMap的子类，并在HashMap的基础上引入了双向链表来维护键值对的插入顺序或访问顺序。与普通的HashMap不同，LinkedHashMap能够记住元素的插入顺序或访问顺序。]]></description><category></category></item><item><title><![CDATA[Java引用类型]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146091650</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146091650</guid><author>qq_39052339</author><pubDate>Fri, 07 Mar 2025 11:37:49 +0800</pubDate><description><![CDATA[Java 具有四种强度不同的引用类型。]]></description><category></category></item><item><title><![CDATA[第一个Java程序]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146090603</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146090603</guid><author>qq_39052339</author><pubDate>Fri, 07 Mar 2025 11:06:05 +0800</pubDate><description><![CDATA[了解了Java运行机制，如果是刚入门，必然是一知半解，但是Java运行机制我更建议是先了解，等读完Java入门这一整篇内容后再回过头复习必然是对你的成长大有裨益。]]></description><category></category></item><item><title><![CDATA[Java文件结构分析]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146088566</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146088566</guid><author>qq_39052339</author><pubDate>Fri, 07 Mar 2025 10:21:05 +0800</pubDate><description><![CDATA[首先根据安装后的jdk8和JDK21目录，对比分析文件结构，然后分析JDK\JRE\JVM三者之间的区别。]]></description><category></category></item><item><title><![CDATA[Linux安装配置Java]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146088458</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146088458</guid><author>qq_39052339</author><pubDate>Fri, 07 Mar 2025 10:16:57 +0800</pubDate><description><![CDATA[上传到linux服务器上【这篇主要是Java安装教程，所以不会把上传的方式一一说明，本文是通过WSL虚拟服务器演示】博主正在更新Java全栈知识体系，有兴趣可以关注博主微信公众号，搜索“爱编程的杰尼龟”或扫描下方二维码。首先是将其放置在一个合适的位置，这个位置自己决定，目前我是放在/user/local目录下进行演示的。rpm和yum方式都无需配置环境变量，所以主要以tar包的方式来写这一篇安装教程。安装部署linux版本的JDK，方式有三种：rpm、yum和tar包的方式。手动配置Java环境变量。]]></description><category></category></item><item><title><![CDATA[Windows安装配置Java]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/146088098</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/146088098</guid><author>qq_39052339</author><pubDate>Fri, 07 Mar 2025 10:11:31 +0800</pubDate><description><![CDATA[当然，现在的开发工具已经支持指定JDK版本，所以不用担心。原先的JDK8在调整安装目录那一步，提供了选择安装内容的功能，在JDK11的版本之后都取消了。如果不想下载这最新的版本，就要切换到Java archive，选择你所需要的版本即可。打开Java下载官网地址，以JDK21的exec为例，如下图所示。调整安装目录(看自己喜好)，无需调整或已经调整点击“下一步”并且现在的JDK版本安装之后，无需进行环境变量配置，即可食用。即使先前用的版本是8，安装完成之后也会使用JDK21版本哦！]]></description><category></category></item><item><title><![CDATA[SpringBoot配置热部署Dev-tools]]></title><link>https://blog.youkuaiyun.com/qq_39052339/article/details/144435436</link><guid>https://blog.youkuaiyun.com/qq_39052339/article/details/144435436</guid><author>qq_39052339</author><pubDate>Thu, 12 Dec 2024 20:30:01 +0800</pubDate><description><![CDATA[热部署和热加载是在应用正在运行的时候，自动更新（重新加载或者替换class等）应用的一种能力。spring-boot-devtools提供的方案也是要重启的，只是无需手动重启能实现自动加载而已。热部署在服务器运行时重新部署项目它是直接重新加载整个应用，这种方式会释放内存，比热加载更加干净彻底，但同时也更费时间。热加载在运行时重新加载class，从而升级应用。热加载的实现原理主要依赖类加载器子系统。]]></description><category></category></item></channel></rss>