<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[weixin_58660573的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/weixin_58660573</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; weixin_58660573]]></copyright><item><title><![CDATA[网络编程 总结]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377378</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377378</guid><author>weixin_58660573</author><pubDate>Sat, 01 Jun 2024 18:00:28 +0800</pubDate><description><![CDATA[IO描述了计算机系统和外部设备通信的过程。常见IO有磁盘IO和网络IO。从应用程序角度来理解IO,进程的地址空间分成用户空间和内核空间，我们平时使用的应用程序都是运行在用户空间，当需要操作系统级别的资源的时候（如内存管理、文件管理、进程通信），就需要依赖内核空间。当用户进程需要执行IO操作，需要向内核发起系统调用，由内核执行具体IO操作。执行具体IO读操作，内核经历两个步骤：1.等待数据读到内核缓冲区2.将内核缓冲区的数据从内核空间拷贝到用户空间的用户缓冲区中。]]></description><category></category></item><item><title><![CDATA[设计模式 总结]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377364</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377364</guid><author>weixin_58660573</author><pubDate>Sat, 01 Jun 2024 17:59:28 +0800</pubDate><description><![CDATA[1、职责要单一，类和接口的粒度要适中，类要有内聚性 （单一职责，接口隔离） 高内聚2、面向抽象编程，要依赖抽象，而不依赖具体 要解耦合、（开闭原则，依赖倒置，迪米特法则） 低耦合 可扩展，可维护3、类和类之间的关联要紧凑，只依赖必要的接口（迪米特法则） 低耦合4、组合优于继承，继承后最好不要重写（最好保证继承的作用是代码复用），如果重写不要采用一些手段禁用方法（里式替换原则）]]></description><category></category></item><item><title><![CDATA[Spring 知识总结]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377353</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377353</guid><author>weixin_58660573</author><pubDate>Sat, 01 Jun 2024 17:58:38 +0800</pubDate><description><![CDATA[然后B要属性注入A，就会去三级缓存中调用A的对象工厂来获得A的半成品对象，然后把这个对象注入到B中，然后把A存入二级缓存，清除A的三级缓存，然后再走完B的生命周期的流程，当B创建完之后，把B加入到一级缓存，清除B的三级缓存，然后A进行属性注入，把一级缓存的B注入到A中，然后走完A的生命周期的流程，然后把A加到一级缓存，清除A的二级缓存。@Autowired默认是根据接口类型注入的，如果没找到这个类型或找到多个类型，就会改成根据名称注入，这里的名称是指根据变量的名称，将首字母大写，然后去匹配实现类的类名。]]></description><category></category></item><item><title><![CDATA[Java 并发编程 总结]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377325</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377325</guid><author>weixin_58660573</author><pubDate>Sat, 01 Jun 2024 17:57:12 +0800</pubDate><description><![CDATA[Java的线程一对一 对应了内核线程提供的接口：轻量级进程，所以可以说一个Java线程对应一个内核线程，因此Java线程进行创建、阻塞、唤醒等操作，都需要由内核来操作，也就是需要系统调用，就需要从用户态切换到核心态，开销是比较大的，并且Java线程数量受到内核线程数量的约束。虚拟线程是JDK实现的轻量级线程，它不再是Java线程一对一内核线程，而是将多个虚拟线程映射到少量的操作系统线程，通过一些调度方式来避免上下文切换。没有了上下文切换，开销就很小。]]></description><category></category></item><item><title><![CDATA[MySQL 总结]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377296</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377296</guid><author>weixin_58660573</author><pubDate>Sat, 01 Jun 2024 17:55:45 +0800</pubDate><description><![CDATA[索引是一种可以快速查询数据的、有序的数据结构。]]></description><category></category></item><item><title><![CDATA[Java 集合]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377278</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377278</guid><author>weixin_58660573</author><pubDate>Sat, 01 Jun 2024 17:54:20 +0800</pubDate><description><![CDATA[hash值需要映射到数组上的索引位置，要进行取模操作，也就是。]]></description><category></category></item><item><title><![CDATA[Redis 学习总结]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377211</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/139377211</guid><author>weixin_58660573</author><pubDate>Sat, 01 Jun 2024 17:52:26 +0800</pubDate><description><![CDATA[假如项目刚上线，那大多数用户肯定都没有申请，那请求都会打到数据库，这就是一个缓存穿透现象，如果我们把空值存到redis缓存里面，那缓存过期时间也不好设置，而且用户如果后面申请了试用，刷了一下数据库，又会带来缓存一致性问题，还需要同步缓存，虽然说也能弄，但是会麻烦很多，缓存同步还得引入新的中间件，可能会带来更大的维护成本。线程A删除缓存后，还没能操作完数据库，线程B来查询缓存，发现缓存为空，则去查询数据库，并更新缓存，此时更新的缓存是旧数据，然后A线程再操作数据库，数据库数据变成新的了。]]></description><category></category></item><item><title><![CDATA[轻松搞定JUC包-Java并发编程]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/129820514</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/129820514</guid><author>weixin_58660573</author><pubDate>Tue, 28 Mar 2023 17:42:19 +0800</pubDate><description><![CDATA[在创建了线程池后，默认情况下，线程池中并没有任何线程，而是等待有任务到来才创建线程去执行任务，除非调用了 prestartAllCoreThreads()或者 prestartCoreThread()方法，从这 2 个方法的名字就可以看出，是预创建线程的意思，即在没有任务到来之前就创建 corePoolSize 个线程或者一个线程。默认情况下，在创建了线程池后，线程池中的线程数为 0，当有任务来之后，就会创建一个线程去执行任务，若添加失败（一般来说是任务缓存队列已满），则会尝试创建新的线程去执行这个任务；]]></description><category></category></item><item><title><![CDATA[JMM（Java 内存模型）总结]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/129819925</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/129819925</guid><author>weixin_58660573</author><pubDate>Tue, 28 Mar 2023 17:03:37 +0800</pubDate><description><![CDATA[一个变量在同一时刻只允许一条线程对其进行 lock 操作，lock 和unlock 必须成对出现如果对一个变量执行 lock 操作，将会清空工作内存中此变量的值，在执行引擎使用这个变量前需要重新执行 load 或 assign 操作初始化变量的值。线程的工作内存中保存了该线程使用到的变量到主内存副本拷贝，线程对变量的所有操作（读取、赋值）都必须在工作内存中进行，而不能直接读写主内存中的变量。：作用于工作内存的变量，把工作内存中的一个变量的值传送到主内存中，以便随后的 write 的操作。]]></description><category></category></item><item><title><![CDATA[JVM详解-类加载机制、类加载器、双亲委派模型]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/129819214</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/129819214</guid><author>weixin_58660573</author><pubDate>Tue, 28 Mar 2023 16:53:20 +0800</pubDate><description><![CDATA[双亲委派模型工作过程：如果一个类加载器收到了类加载的请求，它首先不会自己去尝试加载这个类，而是把这个请求委派给父类加载器去完成 ，每一个层次的类加载器都是如此，因此所有的加载请求最终都应该传送到顶层的启动类加载器中，只有当父类加载器反馈自己无法完成这个加载请求时，子类才会尝试加载。比较两个类是否相等，只有在这两个类是由同一个类加载器加载的前提下才有意义，否则，即使这两个类来源于同一个Class 文件，被同一个虚拟机加载，只要加载它们的类加载器不同，那这两个类就必定不相等。会初始化该类及该类的所有父类；]]></description><category></category></item><item><title><![CDATA[JVM详解-垃圾回收机制]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/129793111</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/129793111</guid><author>weixin_58660573</author><pubDate>Mon, 27 Mar 2023 15:31:42 +0800</pubDate><description><![CDATA[目录

垃圾收集算法

1、标记-清除算法（Mark-Sweep）

2、复制算法

3、标记-整理算法

JVM垃圾收集器 

1、Serial

2、ParNew

3、Parallel Scavenge 收集器

4、Serial Old 收集器

5、Parallel Old 收集器

6、CMS（Concurrent Mark Sweep）收集器

7、G1（Garbage-First）收集器

JVM 垃圾回收机制



垃圾收集算法

1、标记-清除算法（Mark-Sweep）

]]></description><category></category></item><item><title><![CDATA[JVM详解-Java虚拟机运行时内存]]></title><link>https://blog.youkuaiyun.com/weixin_58660573/article/details/129781759</link><guid>https://blog.youkuaiyun.com/weixin_58660573/article/details/129781759</guid><author>weixin_58660573</author><pubDate>Sun, 26 Mar 2023 17:49:05 +0800</pubDate><description><![CDATA[JVM运行时内存]]></description><category></category></item></channel></rss>