<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cuitldlsn的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cuitldlsn</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cuitldlsn]]></copyright><item><title><![CDATA[JVM内存结构]]></title><link>https://blog.youkuaiyun.com/cuitldlsn/article/details/123869919</link><guid>https://blog.youkuaiyun.com/cuitldlsn/article/details/123869919</guid><author>cuitldlsn</author><pubDate>Fri, 01 Apr 2022 18:15:39 +0800</pubDate><description><![CDATA[程序计数器-PC-Register
程序计数器的作用

源代码经过编译之后会成为jvm指令，Java的跨平台性其实就是基于这套jvm指令而来的，指令通过解释器之后会转换为机器码，CPU可以识别机器码做出响应的反应，而程序计数器的作用就是记住jvm的吓一跳执行地址，然后按照一定的顺序去执行命令。它的物理实现是寄存器。
特点

程序计数器是线程私有的

因为Java是支持多线程的，所以如果所有线程都是公用一个程序计数器，那么执行的流程就会非常混乱，导致执行错误。

程序计数器是没有内存溢出的

Java虚拟机栈]]></description><category></category></item><item><title><![CDATA[关于Spring使用代理模式进行AOP实现]]></title><link>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776891</link><guid>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776891</guid><author>cuitldlsn</author><pubDate>Mon, 28 Mar 2022 12:57:03 +0800</pubDate><description><![CDATA[AOP实现方式之利用Proxy代理

我们的aop可以说是Spring中的一个非常具有特色的东西了，非常流行的实现是利用proxy实现代理对象，但是这种操作其实也有两种不同的实现方法，一种是利用jdk的代理，另外一种是利用cglib这种第三方的包进行的。

jdk代理

jdk的代理是有一些限制的，它只能面向接口进行代理。我们来看一个例子


import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import]]></description><category></category></item><item><title><![CDATA[反射-注解-类加载器知识]]></title><link>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776622</link><guid>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776622</guid><author>cuitldlsn</author><pubDate>Sun, 27 Mar 2022 16:56:23 +0800</pubDate><description><![CDATA[反射知识
概念
反射机制就是将类的各个组成部分（属性，方法，构造器）封装为其他对象

Class
Method
Constructor

相关的核心类

java.lang.Class(这个就是类的对象)
java.lang.reflect.Constructor（构造器）
java.lang.reflect.Method（方法）
java.lang.reflect.Modifier（修饰词）

Class对象的三种获取方法
Java代码在计算机中经历的三个阶段

注意这个源代码阶段并不是我们的.java文]]></description><category></category></item><item><title><![CDATA[HashMap入门]]></title><link>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776586</link><guid>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776586</guid><author>cuitldlsn</author><pubDate>Sun, 27 Mar 2022 16:54:56 +0800</pubDate><description><![CDATA[HashMap集合介绍

HashMap是基于哈希表的Map接口实现，是以Key-Value存储形式存在的，主要是键值对。

对于hash冲突的解决方案
1.8之前
1.8 之前哈希Map是一个数组，计算哈希值之后按照取模运算之后放位置，但是如果位置已经被占用了，那么就会在数组下标的地方变为一个链表，利用链表进行存储。
1.8之后
1.8 之后哈希Map也还是一个数组，并且对于哈希冲突也是用链表，但是如果链表长度大于8并且整个数组大于了64的话，那么就会把数组下标位置的链表变为红黑树，因为红黑树的查找效率比]]></description><category></category></item><item><title><![CDATA[Java线程池入门]]></title><link>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776514</link><guid>https://blog.youkuaiyun.com/cuitldlsn/article/details/123776514</guid><author>cuitldlsn</author><pubDate>Sun, 27 Mar 2022 16:53:03 +0800</pubDate><description><![CDATA[线程池基础

什么是线程池



为什么使用线程池



使用线程池有哪些优势


线程池的使用
Java内置线程池

内置线程池是一个叫做ThreadPoolExecutor的一个类我们来看看它的构造方法



参数详解



流程图


参数设计


这里稍微用个人理解去解释一下，核心线程数说白了就是在80%的情况下能够处理系统任务的线程数量，任务队列长度的设计核心线程数量/单个任务执行时间*2 说白了就是单位时间内可以执行的任务数量2，其实对应的就是上面的80%情况下系统任务数量2
然后最大线程数量，]]></description><category></category></item></channel></rss>