<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LIJINGPO的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LIJINGPO</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LIJINGPO]]></copyright><item><title><![CDATA[redis穿透、雪崩、击穿及其解决方案]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/136634871</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/136634871</guid><author>LIJINGPO</author><pubDate>Mon, 11 Mar 2024 20:59:09 +0800</pubDate><description><![CDATA[布隆过滤器其实采用的是哈希思想来解决这个问题，通过一个庞大的二进制数组，走哈希思想去判断当前这个要查询的这个数据是否存在，如果布隆过滤器判断存在，则放行，这个请求会去访问redis，哪怕此时redis中的数据过期了，但是数据库中一定存在这个数据，在数据库中查询出来这个数据后，再将其放入到redis中，假设布隆过滤器判断这个数据不存在，则直接返回，这种方式优点在于节约内存空间，存在误判，误判原因在于：布隆过滤器走的是哈希思想，只要哈希思想，就可能存在哈希冲突。]]></description><category></category></item><item><title><![CDATA[Spring的Bean的生命周期 | 有图有案例]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/136436400</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/136436400</guid><author>LIJINGPO</author><pubDate>Sun, 03 Mar 2024 19:20:44 +0800</pubDate><description><![CDATA[Spring框架会取出BeanDefinition的信息进行判断当前Bean的范围是否是singleton的， 是否不是延迟加载的，是否不是FactoryBean等，最终将一个普通的singleton的Bean通过反射进行实例化；如果这个Bean的Spring配置中配置了destroy-method属性，会自动调用其配置的销毁方法。：从Bean的实例化之后，通过反射创建出对象之后，到Bean称为一个完整的对象，接着被存储到singletonObjects中，最后被销毁的全过程。]]></description><category></category></item><item><title><![CDATA[mysql在服务器中的主从复制Linux下]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/136176095</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/136176095</guid><author>LIJINGPO</author><pubDate>Mon, 19 Feb 2024 18:26:35 +0800</pubDate><description><![CDATA[从库I/O线程：当START SLAVE语句在从库开始执行之后，从库创建一个I/O线程，该线程连接到主库并请求主库发送binlog里面的更新记录到从库上。从库I/O线程读取主库的binlog输出线程发送的更新并拷 贝这些更新到本地文件，其中包括relay log文件。MySQL主从复制是一个异步的复制过程，主库发送更新事件到从库，从库读取更新记录，并执行更新记录，使得从库的内容与主库保持一致。在从库中，当复制开始时，从库就会创建从库I/O线程和从库的SQL线程进行复制处理。配置mysql权限账户。]]></description><category></category></item><item><title><![CDATA[Java同步代码块、线程的生命周期、同步方法、Lock锁、死锁、线程中常用的方法]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/136088462</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/136088462</guid><author>LIJINGPO</author><pubDate>Sat, 10 Feb 2024 20:30:00 +0800</pubDate><description><![CDATA[要想实现多线程，必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程，在它的一个完整的生命周期中通常要经历如下的。]]></description><category></category></item><item><title><![CDATA[java多线程的四种创建方式、程序、线程、进程、并行、串行、Thread、Runnable、Callable、线程池技术]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/136086996</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/136086996</guid><author>LIJINGPO</author><pubDate>Fri, 09 Feb 2024 17:38:41 +0800</pubDate><description><![CDATA[单核CPU，其实是一种假的多线程，因为在一个时间单元内，也只能执行一个线程的任务。（现在的服务器都是多核的）一个Java应用程序java.exe，其实至少有三个线程：main()主线程，gc()垃圾回收线程，异常处理线程。Java的JVM允许程序运行多个线程，使用java.lang.Thread类代表线程，所有的线程对象都必须是Thread类或子类的实例。现代的操作系统，大都是支持多进程的，支持同时运行多个程序。程序是静态的，进程是动态的 如：运行中的QQ，运行中的MP3播放器。提高应用程序的响应。]]></description><category></category></item><item><title><![CDATA[JFinal项目搭建]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135791999</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135791999</guid><author>LIJINGPO</author><pubDate>Tue, 23 Jan 2024 21:59:18 +0800</pubDate><description><![CDATA[这时候访问http://localhost/demo/mimi就直接访问的首页；如果访问http://localhost/demo；如果需要方法其他方法则需要在Path后面添加方法名，例如：需要访问test方法（Action）；也可以在Action(方法)上加@ActionKey(“/test”)，这时候可以直接访问http://localhost/test。java下创建com.li.conf包包内创建config类并继承JFinalConfig；]]></description><category></category></item><item><title><![CDATA[Maven下载及安装，集成eclipse中，配置环境变量，创建maven项目等]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135755899</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135755899</guid><author>LIJINGPO</author><pubDate>Mon, 22 Jan 2024 19:16:10 +0800</pubDate><description><![CDATA[配置Maven的jdk版本；我用的是jdk1.8版本。Finish后就好了。]]></description><category></category></item><item><title><![CDATA[Filter过滤器、使用场景、使用办法、创建和配置等]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135685799</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135685799</guid><author>LIJINGPO</author><pubDate>Thu, 18 Jan 2024 22:32:14 +0800</pubDate><description><![CDATA[过滤器实际上就是对 web资源进行拦截，做一些处理后再交给下一个过滤器或 servlet处理通常都是用来拦截request进行处理的，也可以对返回的response进行拦截处理。（Mybatis的插件分页也是面向切面的思想）]]></description><category></category></item><item><title><![CDATA[mybatis分页、延迟加载、立即加载、一级缓存、二级缓存]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135663127</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135663127</guid><author>LIJINGPO</author><pubDate>Wed, 17 Jan 2024 23:57:16 +0800</pubDate><description><![CDATA[缓存（cache），数据交换的缓冲区，当应用程序需要读取数据时，先从数据库中将数据取出，放置在缓冲区中，应用程序从缓冲区读取数据。]]></description><category></category></item><item><title><![CDATA[mybtis动态SQL注解 脚本动态SQL\方法中构建SQL\SQL语句构造器]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135638186</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135638186</guid><author>LIJINGPO</author><pubDate>Tue, 16 Jan 2024 23:31:42 +0800</pubDate><description><![CDATA[mybtis动态SQL注解动态SQL注解脚本动态SQL方法中构建SQLSQL语句构造器
动态SQL注解
分类：

脚本动态SQL：XML配置方式的动态SQL，是用&lt;script&gt;的方式把它照搬过来，用注解来实现。适用于xml配置转换到注解配置
方法中构建SQL：@SelectProvider 、@InsertProvider、@UpdateProvider、@DeleteProvider 这些方法的使用
SQL语句构造器：实现动态 SQL 的内容

脚本动态SQL
在sql语句中加入&lt;sc]]></description><category></category></item><item><title><![CDATA[mybatis基本注解、增删改查、结果集映射、一对一、一对多]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135610388</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135610388</guid><author>LIJINGPO</author><pubDate>Mon, 15 Jan 2024 20:35:56 +0800</pubDate><description><![CDATA[完成数据库字段和 JavaBean 属性的映射关系,主要解决数据库中的字段和实体类中的属性名不一致；：新增时所用的参数取值是接口方法的入参，可以是对象，也可以是 Map 集合。：删除时所用的参数取值是接口方法的入参，可以是对象，也可以是 Map 集合。：更新时所用的参数取值是接口方法的入参，可以是对象，也可以是 Map 集合。：查询时所用的参数取值是接口方法的入参，可以是对象，也可以是 Map 集合。：@Insert完成新增操作，类似配置文件的  元素；：完成查询操作，类似配置文件的  元素；]]></description><category></category></item><item><title><![CDATA[mybatis之动态sql、if\choose\when\otherwise\trim\where\set\foreach\bind有案例]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135577314</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135577314</guid><author>LIJINGPO</author><pubDate>Sat, 13 Jan 2024 22:44:46 +0800</pubDate><description><![CDATA[根据不同条件拼接SQLy语句，实现对数据库更准的操作。]]></description><category></category></item><item><title><![CDATA[java中String的两种创建方法、字符串常量池]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135560857</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135560857</guid><author>LIJINGPO</author><pubDate>Fri, 12 Jan 2024 19:59:05 +0800</pubDate><description><![CDATA[​		创建1或2个字符串。如果常量池中已存在字符串常量“abc”，则只会在堆空间创建一个字符串常量“abc”。如果常量池中没有字符串常量“abc”，那么它将首先在池中创建，然后在堆空间中创建，因此将创建总共2个字符串对象。**这句代码里创建了几个字符串对象？检查指定字符串在常量池中是否存在？如果存在，则返回地址，如果不存在，则在常量池中创建。]]></description><category></category></item><item><title><![CDATA[JVM 元空间、java中的元空间]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135541745</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135541745</guid><author>LIJINGPO</author><pubDate>Fri, 12 Jan 2024 00:12:50 +0800</pubDate><description><![CDATA[​		上述运行结果可以看出，相同的代码，在JDK 1.6会出现“PermGen Space”的永久代内存溢出，而在JDK 1.7和JDK 1.8中，会出现"Java heap space"堆内存溢出，并且DK 1.8中 PermSize和MaxPermGen参数已经无效。因此，在JDK 1.7和JDK 1.8中，已经将字符串常量由永久代转移到堆中，并且JDK 1.8中已经完全移除了永久代，采用元空间来代替。因此，默认情况下，元空间的大小仅受本地内存限制，但可以通过运行参数来指定元空间的大小。]]></description><category></category></item><item><title><![CDATA[JDBC多表联查]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135515517</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135515517</guid><author>LIJINGPO</author><pubDate>Wed, 10 Jan 2024 23:20:21 +0800</pubDate><description><![CDATA[在进行多表联查时会遇到第一个问题就是在实体类中不存在从表的字段，紧接着第二个问题在就是主表与从表的对应关系是一对一还是一对多关系。在单一表进行查询时，只需要对表中的单个字段进行解析即可；以学生和班级表为例：从图中可以看出表对应关系。]]></description><category></category></item><item><title><![CDATA[MySQL连接池、C3P0、Druid德鲁伊连接池技术]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135491133</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135491133</guid><author>LIJINGPO</author><pubDate>Tue, 09 Jan 2024 22:19:22 +0800</pubDate><description><![CDATA[druid的一个jar包。c3p0两个jar包。]]></description><category></category></item><item><title><![CDATA[JVM，Java堆区、新生代、老年代，创建对象的内存分配，分代垃圾收集思想、堆区产生的错误]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135468373</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135468373</guid><author>LIJINGPO</author><pubDate>Mon, 08 Jan 2024 22:51:17 +0800</pubDate><description><![CDATA[​		Java世界中“几乎”所有的对象都在堆中分配，但是，随着JIT编译器的发展与逃逸分析技术逐渐成熟，栈上分配、标量替换优化技术将会导致一些微妙的变化，所有的对象都分配到堆上也渐渐变得不那么“绝对”了。​		大部分情况下，对象会在Eden区生成，当Eden区装填满的时候，会触发Young Garbage Collection,即YGC垃圾回收的时候，在Eden区实现清楚策略，没有被引用的对象则直接收回。堆空间的内存大小是可以修改的，默认情况下，初始堆内存为物理内存的1/64，最大为物理内存的1/4。]]></description><category></category></item><item><title><![CDATA[JVM中虚拟机栈和本地方法栈等]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135430419</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135430419</guid><author>LIJINGPO</author><pubDate>Sun, 07 Jan 2024 20:45:00 +0800</pubDate><description><![CDATA[​		native关键字修饰的本地方法被执行的时候，在本地方法栈中也会创建一个栈帧，用于存放该native本地方法的局部变量表、操作数栈、动态链接、方法出口信息。虚拟机栈也是线程私有的区域，每个Java方法被调用的时候，都会在虚拟机栈中创建出一个栈帧，而每个栈帧又由局部变量表、操作数栈、动态链接和方法返回四部分组成，有些虚拟机的栈帧还包括了一些附加信息。虚拟机栈通过pop和push 的方式，对每个方法对应的活动栈帧进行运算处理，方法正常执行结束，肯定会跳转到另一个栈帧上。例如:-Xss 1m。]]></description><category></category></item><item><title><![CDATA[JVM之内存模型、运行时的数据区域的划分、java的程序计数器作用等]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135430355</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135430355</guid><author>LIJINGPO</author><pubDate>Sat, 06 Jan 2024 18:56:19 +0800</pubDate><description><![CDATA[​		JVM虚拟机在执行Java程序的过程中，会把它管理的内存区域划分为若干个不同的区域，每个区域有各自不同的用途、创建方式及管理方式。​		程序执行过程中，会不断的切换当前执行线程，切换后，为了能让当前线程恢复到正确的执行位置，每条线程都需要有一个独立的程序计数器，并且各线程之间计数器互不影响，独立存储。由方法区、堆区、虚拟机栈、本地方法栈、程序计数器五部分组成。​		2.在多线程的情况下，程序计数器用于记录当前线程执行的位置，从而当线程被切换回来的时候，能够知道当前线程的运行位置，恢复当前线程的执行。]]></description><category></category></item><item><title><![CDATA[Java对象的创建过程、类加载的检查、内存分配、初始化零值、设置对象头、执行init构造方法]]></title><link>https://blog.youkuaiyun.com/LIJINGPO/article/details/135352829</link><guid>https://blog.youkuaiyun.com/LIJINGPO/article/details/135352829</guid><author>LIJINGPO</author><pubDate>Fri, 05 Jan 2024 21:45:00 +0800</pubDate><description><![CDATA[初始化零值完成后，虚拟机要对新对象进行必要的设置，例如这个对象是哪个类的实例、如何才能找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息。内存分配完成后，虚拟机需要将分配到的内存空间都初始化为零值（不包括对象头），这一步操作保证了对象的实例字段在Java代码中可以不赋初始值就直接使用，程序能访问到这些字段的数据类型所对应的零值。选择以上两种方式中的哪一种，取决于Java堆内存是否规整。在上面工作都完成后，从虚拟机的视角来看，一个新的对象已经产生了，但从Java程序的视角来看，对象创建才开始，]]></description><category></category></item></channel></rss>