<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[plante的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/plante</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; plante]]></copyright><item><title><![CDATA[关于c语言中的基本数据类型]]></title><link>https://blog.youkuaiyun.com/plante/article/details/140761412</link><guid>https://blog.youkuaiyun.com/plante/article/details/140761412</guid><author>plante</author><pubDate>Mon, 29 Jul 2024 08:35:10 +0800</pubDate><description><![CDATA[在c语言中，其自由度很高的一点体现于，基本数据类型可以在其size范围内进行整型或字符型附值，这意味着，你可以把一个字符附值给int或者long类型，可以输出对应ascii的值，或者对char类型附值一个整型的值输出一个对应的字符。而在内存里，他们的值是相同的，只是输出时表现形式不一样。]]></description><category></category></item><item><title><![CDATA[悲观锁和乐观锁]]></title><link>https://blog.youkuaiyun.com/plante/article/details/123589427</link><guid>https://blog.youkuaiyun.com/plante/article/details/123589427</guid><author>plante</author><pubDate>Sat, 19 Mar 2022 09:53:45 +0800</pubDate><description><![CDATA[悲观锁是对访问资源的线程不信任，默认资源会被修改，所以同一时间，同一资源只能够被同一个线程访问，为资源加锁关键字，syconized.

乐观锁对线程信任，默认线程不会改写资源，所以同一时间，同一资源能够被不同线程访问，但是资源被归还时，回主动检验是否被改写，这部分基于CAS(compare and swaped)实现，这个算法是cpu底层使用汇编实现的。

所以在代码过程中，如果数据的写操作比较多，就使用悲观锁，如果对读的需求比较大，就使用乐观锁。
...]]></description><category></category></item><item><title><![CDATA[Spring静态成员变量注入]]></title><link>https://blog.youkuaiyun.com/plante/article/details/123536875</link><guid>https://blog.youkuaiyun.com/plante/article/details/123536875</guid><author>plante</author><pubDate>Wed, 16 Mar 2022 21:36:23 +0800</pubDate><description><![CDATA[静态成员变量属于类本身，而不属于对象，所以spring创建bean的时候，不会对静态成员填充属性，一般有两个基于注解的解决方法：

postConstruct 添加到初始化方法上，使属性注入后会再添加一次。
	在类上添加@Component注解，通过在setter方法上添加@Autowired实现依赖注入
...]]></description><category></category></item><item><title><![CDATA[Spring循环依赖]]></title><link>https://blog.youkuaiyun.com/plante/article/details/123514167</link><guid>https://blog.youkuaiyun.com/plante/article/details/123514167</guid><author>plante</author><pubDate>Tue, 15 Mar 2022 22:48:14 +0800</pubDate><description><![CDATA[要理解循环依赖，首先要了解spring的生命周期。

spring生命周期大致可以分为：实例化，填充属性，初始化三个步骤。

对于一个普通的单例对象a，经过实例化后会被提前暴露到二级缓存中，走完三个步骤，才会被添加到一级缓存中，这个时候，如果和另一个对象b循环依赖，则在属性填充阶段,对b进行走初始化，在b的属性填充阶段，填充a的提前暴露对象，走完初始化三个步骤后，回到上一层，继续对a完成初始化步骤。这是二级缓存对循环依赖的解决。

当存在aop代理的情况，需要使用三级缓存解决。存在代理的情况下，a在实例化后]]></description><category></category></item><item><title><![CDATA[java 死记硬背kits]]></title><link>https://blog.youkuaiyun.com/plante/article/details/123464707</link><guid>https://blog.youkuaiyun.com/plante/article/details/123464707</guid><author>plante</author><pubDate>Sun, 13 Mar 2022 20:32:13 +0800</pubDate><description><![CDATA[1.面向对象和面向过程区别：

面向过程的语言性能更高因为不需要创建对象，但是我觉得不适合中大型项目的实现，因为不像面向对象的语言有着封装，继承，多态的特性，不便维护。

2.java语言的特性：

面向对象，可移植性(靠jvm虚拟机实现)，可靠性，支持多线程，编译与解释并存

3.jvm,jdk,jre略介绍

jvm虚拟机，java编译字节码由jvm虚拟机运行，针对不同的系统，jvm有着特定的实现，保证同样的字节码能够在不同平台上顺利运行，这就是java跨平台性的原因。

jdk使java develo]]></description><category></category></item><item><title><![CDATA[java八股文(一) java面向对象特征]]></title><link>https://blog.youkuaiyun.com/plante/article/details/123446665</link><guid>https://blog.youkuaiyun.com/plante/article/details/123446665</guid><author>plante</author><pubDate>Sun, 13 Mar 2022 09:11:15 +0800</pubDate><description><![CDATA[java是一种面向对象的编程语言，其特征有：封装，继承，多态

1.代码封装起来，便于调用和修改，提高复用性和可维护性，封装起来的代码在事实上固定了传输的数据，便于复用；使数据受到保护，也确定了代码后续维护思路。在看《代码整洁之道》的第三章明白，方法命名和参数设置对于提高代码的整洁度，可读性，可用性的重要性。我觉得这也是对封装这一特性的尊重和善加利用。

2.继承从代码看来，子类继承父类非私有的属性
...]]></description><category></category></item></channel></rss>