<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_43527397的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_43527397</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_43527397]]></copyright><item><title><![CDATA[JAVA自动装箱拆箱]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/147852778</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/147852778</guid><author>qq_43527397</author><pubDate>Sat, 10 May 2025 20:55:48 +0800</pubDate><description><![CDATA[Java 中的**装箱（Boxing）和拆箱（Unboxing）**是自动类型转换的机制，用于在基本数据类型（如 、 等）和其对应的包装类（如 、 等）之间进行转换。这种机制简化了代码的编写，但也可能引发一些性能问题或意外行为。通过以下案例和字节码分析，我们将深入探讨装箱和拆箱的原理及其在实际开发中的应用。
输出结果：


逐行解析与字节码分析
1.  输出 

原因： 和  都是  类型，值为 。
装箱过程： 实际上被编译器翻译为 。
缓存机制： 方法会对  范围内的整数使用缓存池。因此， 和  指向同一]]></description><category></category></item><item><title><![CDATA[docker ubuntu:20.04构建c++ grpc环境]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/145300467</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/145300467</guid><author>qq_43527397</author><pubDate>Wed, 22 Jan 2025 14:58:45 +0800</pubDate><description><![CDATA[docker ubuntu20.04构建c++ grpc环境]]></description><category></category></item><item><title><![CDATA[JAVA实现全排列和组合排列]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/131332035</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/131332035</guid><author>qq_43527397</author><pubDate>Wed, 21 Jun 2023 17:48:00 +0800</pubDate><description><![CDATA[JAVA通过递归实现全排列和组合排列]]></description><category></category></item><item><title><![CDATA[解决在树状结构节点共用同个对象的问题]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/129878495</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/129878495</guid><author>qq_43527397</author><pubDate>Fri, 31 Mar 2023 14:14:20 +0800</pubDate><description><![CDATA[深拷贝的实际运用。]]></description><category></category></item><item><title><![CDATA[合理利用泛型擦除]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/128961215</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/128961215</guid><author>qq_43527397</author><pubDate>Thu, 09 Feb 2023 22:51:27 +0800</pubDate><description><![CDATA[泛型擦除]]></description><category></category></item><item><title><![CDATA[ThreadLocal讲解(包含使用不当导致的内存泄漏问题)]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/127187781</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/127187781</guid><author>qq_43527397</author><pubDate>Thu, 06 Oct 2022 22:53:01 +0800</pubDate><description><![CDATA[ThreadLocal讲解]]></description><category></category></item><item><title><![CDATA[获取泛型对应的类]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/126476209</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/126476209</guid><author>qq_43527397</author><pubDate>Sun, 04 Sep 2022 01:40:15 +0800</pubDate><description><![CDATA[获取泛型对应的类。]]></description><category></category></item><item><title><![CDATA[Optional的应用]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/126256193</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/126256193</guid><author>qq_43527397</author><pubDate>Tue, 09 Aug 2022 22:08:14 +0800</pubDate><description><![CDATA[Optional的应用]]></description><category></category></item><item><title><![CDATA[浅析Spring浅拷贝 BeanUtils.copyProperties方法]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/126238564</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/126238564</guid><author>qq_43527397</author><pubDate>Tue, 09 Aug 2022 00:39:19 +0800</pubDate><description><![CDATA[浅析BeanUtils.copyProperties方法]]></description><category></category></item><item><title><![CDATA[浅析java String类型]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/125583285</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/125583285</guid><author>qq_43527397</author><pubDate>Sun, 03 Jul 2022 18:46:08 +0800</pubDate><description><![CDATA[浅析String]]></description><category></category></item><item><title><![CDATA[根据Apache Poi写了个基于Web的Excel文件生成工具]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/125409457</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/125409457</guid><author>qq_43527397</author><pubDate>Wed, 22 Jun 2022 15:25:42 +0800</pubDate><description><![CDATA[基于Apache poi工具包封装了ExcelUtils工具包。]]></description><category></category></item><item><title><![CDATA[简单介绍Optional用法]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/125091971</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/125091971</guid><author>qq_43527397</author><pubDate>Thu, 02 Jun 2022 00:21:10 +0800</pubDate><description><![CDATA[java8新特性，Optional]]></description><category></category></item><item><title><![CDATA[简单举例JAVA回调函数的实现]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/123414481</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/123414481</guid><author>qq_43527397</author><pubDate>Fri, 11 Mar 2022 00:17:50 +0800</pubDate><description><![CDATA[来自维基百科的对回调（Callback）的解释：In computer programming, a callback is any executable code that is passed as an argument to other code, which is expected to call back (execute) the argument at a given time. This execution may be immediate as in a synchronous call.]]></description><category></category></item><item><title><![CDATA[手动构建starter组件]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/123035120</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/123035120</guid><author>qq_43527397</author><pubDate>Sun, 20 Feb 2022 22:13:54 +0800</pubDate><description><![CDATA[之前的帖子说过，使用依赖尽量使用starter相关的依赖。因为这些相关的依赖会根据配置文件配置相关的类。比如在Spring中整合使用redis。那么在快速开发中，推荐使用spring-boot-starter-data-redis依赖，它会根据配置文件默认配置好redisTemplate等相关类。
那么接下来介绍如何构建starter组件。
首先对于自定义的starter（第三方），官方推荐的命名是xx-spring-boot-starter，只有Spring官方的starter命名是spring-boot]]></description><category></category></item><item><title><![CDATA[简单了解泛型＜T＞ T的用法]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/122813338</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/122813338</guid><author>qq_43527397</author><pubDate>Mon, 07 Feb 2022 19:32:03 +0800</pubDate><description><![CDATA[此处的&lt;T&gt;类似于占位符，告诉编译器我返回的是泛型，而不是T类。只有搭配了&lt;T&gt;之后，后面的T才是泛型，而不是某个T.class。
下面介绍&lt;T&gt; T的两种用法。
1.方法参数带T
public class Test {
    //这里的泛型受入参类型影响，跟入参类型保持一致
    public static &lt;E&gt; List&lt;E&gt; getListFromArray(E[] array) {
        List&lt;E&gt; resu]]></description><category></category></item><item><title><![CDATA[使用@Autowired实现工厂模式]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/122649668</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/122649668</guid><author>qq_43527397</author><pubDate>Sun, 23 Jan 2022 12:58:19 +0800</pubDate><description><![CDATA[首先一个大前提，这些“商品”都有统一的标准和行为（因为不知道具体要的哪个实现类，所以要有个抽象类或者接口，因此需要统一的标准和行为）。
所以首先设计抽象类或者接口
public abstract class Animal {
    private String name ="animals";
    //getName()和say()可以写成抽象的，但是这么写可以保证即使拿不到对应的产品，也有默认的方法实现。
    public void say(){
        System.out.print]]></description><category></category></item><item><title><![CDATA[Spring快速开发推荐使用starter相关的依赖]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/122640969</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/122640969</guid><author>qq_43527397</author><pubDate>Sat, 22 Jan 2022 17:48:46 +0800</pubDate><description><![CDATA[因为在Spring的约定中，starter的组件是提供开箱即用的组件，他会默认配置好一些参数，所以依赖使用推荐优先选择starter相关的，可以简化配置。

]]></description><category></category></item><item><title><![CDATA[tomcat环境的jdk版本跟Spring项目的jdk版本不一致也可能导致404]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/122590344</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/122590344</guid><author>qq_43527397</author><pubDate>Wed, 19 Jan 2022 21:38:16 +0800</pubDate><description><![CDATA[最近在docker tomcat中部署项目时，ip:（tomcat）端口号能跳到tomcat的信息。 然后ip:端口号/项目名 404，看了下目录，项目是解压的了。但是却404，排查了下，发现原来是tomcat jdk版本与项目版本不一致。 docker下载最新的tomcat没有使用我本地的jdk，而是使用了最新版的jdk，导致jdk版本不一致无法解析项目，然后页面报404。最后指定tomcat的jdk版本即可。
指定tomcat的jdk

...]]></description><category></category></item><item><title><![CDATA[善用泛型实现接收JSON数据（含公共参数的）]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/122587790</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/122587790</guid><author>qq_43527397</author><pubDate>Wed, 19 Jan 2022 19:37:22 +0800</pubDate><description><![CDATA[在接收含有公共参数的多个JSON数据时，可以善用泛型简化定义对象。
比如以下两个json对象。
{userId:"",  #用户ID
 num:"",     #购买数量
 car:{       #具体的产品
	 name:"",
	 type:""
	 }	
}
{userId:"",
 num:"",
 phone:{
		 name:"",
		 rom:""
	   }	
}

假设有以上两种json的数据，他们都包含相同的参数userId,num,但是产品不相同，产生的JSON对象不同，所以可以]]></description><category></category></item><item><title><![CDATA[独立Tomcat运行多Spring项目]]></title><link>https://blog.youkuaiyun.com/qq_43527397/article/details/122523053</link><guid>https://blog.youkuaiyun.com/qq_43527397/article/details/122523053</guid><author>qq_43527397</author><pubDate>Sun, 16 Jan 2022 15:33:26 +0800</pubDate><description><![CDATA[这里使用的是Tomcat监听多端口， 而非单一端口，若是单一端口，可以直接在Tomcat安装目录下的webapps下放入相应的war项目，然后通过ip:端口号/项目名/ ,进行访问。
而这里因为Spring项目使用了不同的端口，所以要修改Tomcat的Server.xml文件，使得单一	Tomcat监听对应的端口。
首先先复制多n份项目，直接从原始的webapps目录中复制，要多添加几个Spring项目就复制多几份，并且修改对应的目录名。 我的目录如下：

复制完之后在对应的webapps下添加你所要部署的]]></description><category></category></item></channel></rss>