<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Cofer源]]></title><description><![CDATA[搬运+创造，让你简单学会计算机技巧]]></description><link>https://blog.youkuaiyun.com/Albert_J</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Albert_J]]></copyright><item><title><![CDATA[【Java】一文了解spring的三级缓存]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/145627267</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/145627267</guid><author>Albert_J</author><pubDate>Fri, 14 Feb 2025 10:17:35 +0800</pubDate><description><![CDATA[【代码】一文了解spring的三级缓存。]]></description><category></category></item><item><title><![CDATA[【Java】一文读懂逃逸分析]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/135785396</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/135785396</guid><author>Albert_J</author><pubDate>Tue, 23 Jan 2024 20:01:22 +0800</pubDate><description><![CDATA[逃逸分析（Escape Analysis）是一种编译器优化技术，它分析程序中的对象分配，以确定对象的作用域和生命周期。具体来说，逃逸分析要确定一个对象是否会逃逸出它被创建的方法或者作用域，换句话说，就是判断对象的引用是否会被传递到当前方法或作用域之外。**栈上分配：**如果逃逸分析确定某个对象不会逃逸出方法，那么这个对象可以在栈上分配内存，而不是在堆上。栈上分配的好处是当方法执行完毕后，对象的内存可以立即被释放，这样可以避免垃圾收集器的介入，减少垃圾回收的开销。不进行逃逸分析的情况下，每次调用。]]></description><category></category></item><item><title><![CDATA[vue和react的差异梳理]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/135759900</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/135759900</guid><author>Albert_J</author><pubDate>Mon, 22 Jan 2024 22:33:17 +0800</pubDate><description><![CDATA[vue和react的差异梳理]]></description><category></category></item><item><title><![CDATA[一文讲清楚js中的this指向]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/135759654</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/135759654</guid><author>Albert_J</author><pubDate>Mon, 22 Jan 2024 22:23:36 +0800</pubDate><description><![CDATA[js中this的指向问题]]></description><category></category></item><item><title><![CDATA[如何将git的commit进行聚合？？一文搞懂如何用rebase将commit合并！！]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/135759398</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/135759398</guid><author>Albert_J</author><pubDate>Mon, 22 Jan 2024 22:10:27 +0800</pubDate><description><![CDATA[将git的commit进行合并]]></description><category></category></item><item><title><![CDATA[还在为git分支回滚发愁吗？？一文了解git分支回滚操作全流程！！]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/135759175</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/135759175</guid><author>Albert_J</author><pubDate>Mon, 22 Jan 2024 21:54:35 +0800</pubDate><description><![CDATA[git分支混滚]]></description><category></category></item><item><title><![CDATA[还不懂git rebase和git merge吗？？ 一文读懂如何使用！！]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/135757954</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/135757954</guid><author>Albert_J</author><pubDate>Mon, 22 Jan 2024 20:46:08 +0800</pubDate><description><![CDATA[git rebase和git merge的使用差异]]></description><category></category></item><item><title><![CDATA[mac好用的软件整理]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/120855662</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/120855662</guid><author>Albert_J</author><pubDate>Tue, 19 Oct 2021 21:54:36 +0800</pubDate><description><![CDATA[本人后端开发，mac好用的一些软件，分享给大家。会不定期更新。软件没有排名先后。

1.SwitchResX
这个插件可以调整各个屏幕的分辨率设置Hidpi等等，比内置的功能强很多。
如果你想要外接显示器，但是又要用mac的触摸板，这时候你需要关掉mac自带的显示器。该怎么操作呢？这个软件就可以解决。
2.Scroll Reveser
当你外接鼠标的时候，你会发现鼠标的滚轮与默认方向相反，这是mac的触摸板需要所决定的。这个软件可以帮助你实现触摸板和鼠标的反向滚动，让你同时方便地使用触摸板和鼠标。
To .]]></description><category></category></item><item><title><![CDATA[公平锁和非公平锁]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119574055</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119574055</guid><author>Albert_J</author><pubDate>Tue, 10 Aug 2021 17:00:49 +0800</pubDate><description><![CDATA[我们知道，公平锁是在抢锁过程中排队，而非公平锁是在抢锁过程中不排队。但其实不好理解，不排队，就是插队放到队伍的头位置吗？？ 肯定不是，为了进一步理解，下面有一段代码。

  //非公平锁
 final boolean nonfairTryAcquire(int acquires) {
      final Thread current = Thread.currentThread();
      int c = getState();
      if (c == 0) {
        //区别重.]]></description><category></category></item><item><title><![CDATA[线程池keepAliveTime参数的进一步解读]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119573092</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119573092</guid><author>Albert_J</author><pubDate>Tue, 10 Aug 2021 16:45:53 +0800</pubDate><description><![CDATA[在读线程池源码，对keepAliveTime有了进一步的理解，这里记录一下。从源码一步步往下走吧。

ThreadPoolExecutor中Worker子类
    // 循环查看并运行thread的一个核心方法
    final void runWorker(Worker w) {
        Thread wt = Thread.currentThread();
        Runnable task = w.firstTask;
        w.firstTask = null;
  .]]></description><category></category></item><item><title><![CDATA[SpringBoot 自动写Starter]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119568113</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119568113</guid><author>Albert_J</author><pubDate>Tue, 10 Aug 2021 13:48:18 +0800</pubDate><description><![CDATA[springboot自动装配原理
第一次使用springboot的时候，都感觉很神奇。只要加入一个maven的依赖，写几行配置，就能注入redisTemple，rabbitmqTemple等对象。
这一切要从spring的的@bean和@Configuration注解说起
如果spring扫描到一个类加了@Configuration注解，那么这个类下面的@bean注解的返回对象就会注册到spring的容器里面
然后就能通过@Autowired注解获取bean

spring容器
以springboot里面的]]></description><category></category></item><item><title><![CDATA[彻底理解三级缓存和循环依赖（二）]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119522831</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119522831</guid><author>Albert_J</author><pubDate>Sun, 08 Aug 2021 23:24:01 +0800</pubDate><description><![CDATA[又读了一遍源码现在对三级缓存有了新的理解，才发现网上很多写的三级缓存相关的东西都是错的，包括我自己之前的第一篇，也有理解不准确的地方，这里我简单描述一下正确的理解过程。
但是还是建议在阅读上一篇彻底理解三级缓存和循环依赖文章之后，再对此文进行阅读。

三级缓存
singletonObjects 保存了所有完整的bean对象。
earlySingletonObjects 保存了调用过三级缓存中getEarlyBeanReference()的，且还未完全创建的bean对象。
singletonFactorie.]]></description><category></category></item><item><title><![CDATA[Spring源码阅读(一)]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119481322</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119481322</guid><author>Albert_J</author><pubDate>Sat, 07 Aug 2021 15:00:20 +0800</pubDate><description><![CDATA[Spring源码阅读，我们直接用idea，maven，然后通过Spring最基本的xmlApplicationContext进行xml加载获取bean的形式进行处理，通过断点执行，进行源码的阅读。本文需要一定的Spring编程经验，内容都是博主理解和整理的，如有问题请指出。

0、准备阶段

首先构建项目，用最原始的方法使用Spring。

目录

User
package com.yin.demo.bean;

import lombok.AllArgsConstructor;
import lombo.]]></description><category></category></item><item><title><![CDATA[Mybatis如何执行一个SQL命令]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119445650</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119445650</guid><author>Albert_J</author><pubDate>Fri, 06 Aug 2021 10:11:24 +0800</pubDate><description><![CDATA[平时我们在spring中用Mybatis的时候，都是用一个Mapper接口，然后通过xml或者注解进行配置。

ServiceImpl
    @Override
    public List&lt;Map&lt;String, Object&gt;&gt; getSignImgs(Map&lt;String, Object&gt; params) {
        return modulesMapper.getSignImgs(params);
    }

ModulesMapper
    @.]]></description><category></category></item><item><title><![CDATA[sql中的explain]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119387978</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119387978</guid><author>Albert_J</author><pubDate>Wed, 04 Aug 2021 17:04:30 +0800</pubDate><description><![CDATA[id
id列数字越大越先执行，如果说数字一样大，那么就从上往下依次执行，id列为null的就表是这是一个结果集，不需要使用它来进行查询。
select_type
A：simple：表示不需要union操作或者不包含子查询的简单select查询。有连接查询时，外层的查询为simple，且只有一个
B：primary：一个需要union操作或者含有子查询的select，位于最外层的单位查询的select_type即为primary。且只有一个
C：union：union连接的两个select查询，第一个查询是.]]></description><category></category></item><item><title><![CDATA[springboot事件机制]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119386840</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119386840</guid><author>Albert_J</author><pubDate>Wed, 04 Aug 2021 16:25:31 +0800</pubDate><description><![CDATA[因为ApplicationContest实现了ApplicationEventPublisher，所以实现了spring的事件通知机制
ApplicationEvent    ApplicationListener::onApplicationEvent
// 定义一个事件
public class EventDemo extends ApplicationEvent {
    private String message;
    public EventDemo(Object source, Stri]]></description><category></category></item><item><title><![CDATA[完全弄懂spring中的事务传播机制（required,require_new,nested）]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/119385456</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/119385456</guid><author>Albert_J</author><pubDate>Wed, 04 Aug 2021 15:48:16 +0800</pubDate><description><![CDATA[Spring中的事务传播机制

spring中的事务传播机制之前一直不是很懂，这次整理了一下，对于难理解的三种传播机制做了比较分析，这三个在项目中还是比较常用的，建议理解消化，对比记忆。下面先把整理好的表格放上来。主要应对的三种情况的异常：外层正常try-catch内层，内层出错；外层正常，内层出错，外层不try-catch；外层出错，内层正常。


下面我把测试代码块放上来
目录结构

数据库表结构

TestMapper
package com.example.demo.mapper;

import ]]></description><category></category></item><item><title><![CDATA[Java全栈面试思维导图]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/118582546</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/118582546</guid><author>Albert_J</author><pubDate>Thu, 08 Jul 2021 21:09:16 +0800</pubDate><description><![CDATA[https://www.yuque.com/u12631128/nlyoo8/inp1y3

]]></description><category></category></item><item><title><![CDATA[优快云文章复制]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/118405836</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/118405836</guid><author>Albert_J</author><pubDate>Fri, 02 Jul 2021 10:13:23 +0800</pubDate><description><![CDATA[有时候看到一篇好文章，可能希望把其md格式复制下来，并做一些修改。但是优快云做了限制，不能长篇复制，这里提供一个技巧。
因为这种限制都是js进行控制的，chome浏览器提供了禁用js的功能（不知道其他浏览器引擎有没有提供），禁用js，然后可以复制了。

Step1 F12

Step 2 打开设置

Step 3 勾选disable js

完成，然后你可以试试复制md了

注意需要先跳转到博客页面，再进行复制。因为禁用js之后，许多页面跳转也都不管用了


...]]></description><category></category></item><item><title><![CDATA[彻底讲懂Spring singletonBean循环依赖与三级缓存]]></title><link>https://blog.youkuaiyun.com/Albert_J/article/details/118087568</link><guid>https://blog.youkuaiyun.com/Albert_J/article/details/118087568</guid><author>Albert_J</author><pubDate>Mon, 21 Jun 2021 15:59:38 +0800</pubDate><description><![CDATA[这里指的是单例的、非构造依赖的循环引用。很多人都知道Spring用了三层缓存来解决循环依赖，但是不知道其原因，为什么是三级缓存？二级缓存不行吗？一级缓存不可以 ？如果是构造函数中存在循环依赖，则报错。

bean的流程：
beanDefinition-&gt;bean实例化-&gt;填充属性-&gt;aware-&gt;beanPostprocessor.before-&gt;init-&gt;beanPostProcessor.after-&gt;单例池+
三级缓存
Spring 解决循环依赖的核心就是.]]></description><category></category></item></channel></rss>