<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[记录]]></title><description><![CDATA[一步一个脚印，做更好的自己]]></description><link>https://blog.youkuaiyun.com/oDeviloo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; oDeviloo]]></copyright><item><title><![CDATA[新版IntelliJ IDEA个性化设置兼容老版习惯]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/135992585</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/135992585</guid><author>oDeviloo</author><pubDate>Tue, 28 Oct 2025 11:04:41 +0800</pubDate><description><![CDATA[升级新版IntelliJ IDEA后使用习惯大大不同，它改了很多页面布局，并且隐藏了大部分按钮，体验起来十分不习惯。]]></description><category></category></item><item><title><![CDATA[腾讯云入侵]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/131300330</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/131300330</guid><author>oDeviloo</author><pubDate>Tue, 14 Nov 2023 14:22:57 +0800</pubDate><description><![CDATA[早上8点左右收到腾讯云的相关短信，提示机器可能存在挖坑风险。]]></description><category></category></item><item><title><![CDATA[开源任务调度框架]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/133766515</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/133766515</guid><author>oDeviloo</author><pubDate>Wed, 11 Oct 2023 13:04:16 +0800</pubDate><description><![CDATA[本文主要介绍一下任务调度框架Flowjob的整体结构，以及整体的心路历程。]]></description><category></category></item><item><title><![CDATA[Lambda的使用和序列化]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/123406735</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/123406735</guid><author>oDeviloo</author><pubDate>Mon, 14 Mar 2022 12:51:53 +0800</pubDate><description><![CDATA[最近想给orm工具包增加Lambda支持，实现`User:getId`映射到表`id`字段，碰到了问题，进行总结。]]></description><category></category></item><item><title><![CDATA[Java类加载机制]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/115625507</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/115625507</guid><author>oDeviloo</author><pubDate>Wed, 14 Apr 2021 18:58:54 +0800</pubDate><description><![CDATA[一文搞懂java中类加载相关的知识内容，包含类加载过程、双亲委派机制、ClassLoader源码解析等]]></description><category></category></item><item><title><![CDATA[Jenkins基于k8s的CI/CD教程]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/114634767</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/114634767</guid><author>oDeviloo</author><pubDate>Wed, 10 Mar 2021 16:07:54 +0800</pubDate><description><![CDATA[1. 背景介绍
传统的主机方式部署的 Jenkins 集群在复杂场景中会经常碰到如下问题，如：

主 Master 发生单点故障时，会导致整个流程不可用；
Slave 的配置环境不一样，需要重复安装和配置维护麻烦，没办法定制差异化的配置管理；
资源分配不均衡，有的 Slave 要运行的 job 出现排队等待，而有的 Slave 处于空闲状态；
资源有浪费，每台 Slave 可能是实体机或者 VM，当 Slave 处于空闲状态时，也不会完全释放掉资源；


基于k8s编排和Docker容器技术，可以很好的解决]]></description><category></category></item><item><title><![CDATA[Gitlab基于k8s简单部署]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/113617540</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/113617540</guid><author>oDeviloo</author><pubDate>Wed, 03 Feb 2021 19:17:36 +0800</pubDate><description><![CDATA[主要参考官方文档基于docker的部署，进行k8s文件的配置
添加链接描述
1.

]]></description><category></category></item><item><title><![CDATA[分布式锁演变思路（基于Redis）]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/109856419</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/109856419</guid><author>oDeviloo</author><pubDate>Thu, 10 Dec 2020 16:24:19 +0800</pubDate><description><![CDATA[简易版本
最基本的要求就是保证唯一性。
这里的唯一性是指线程A加锁后，线程B对同一把锁加锁不会产生新的锁数据。
那么redis里面的过程就是：使用redis命令setnx(set if not exist)，即只能被一个客户端占坑,如果redis实例存在唯一键，如果再想在该key上设置值，就会被拒绝。业务执行成功后，执行 del命令删除锁。

增加过期时间
上面这个版本存在的问题就是，释放锁需要客户端的操作，如果此时客户端突然挂了，就没有释放锁的操作了，其他客户端想要重新加锁就加不了了。所以利用redis的]]></description><category></category></item><item><title><![CDATA[ThreadLocal内存泄漏问题和解决方法]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/108486049</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/108486049</guid><author>oDeviloo</author><pubDate>Tue, 15 Sep 2020 11:19:13 +0800</pubDate><description><![CDATA[ThreadLocal内存泄漏问题和解决方法]]></description><category></category></item><item><title><![CDATA[JUC并发编程---异步处理神器Future]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/107818454</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/107818454</guid><author>oDeviloo</author><pubDate>Fri, 21 Aug 2020 10:15:10 +0800</pubDate><description><![CDATA[ExecutorService executorService = Executors.newSingleThreadExecutor();
Future&lt;String&gt; future = executorService.submit(() -&gt; {
    Thread.sleep(1000L);
    return "success";
});
new Thread(() -&gt; {
    try {
        System.out.println(future.get(]]></description><category></category></item><item><title><![CDATA[Mysql执行计划Explain]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/103463600</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/103463600</guid><author>oDeviloo</author><pubDate>Fri, 10 Jan 2020 10:06:38 +0800</pubDate><description><![CDATA[列
描述




id
1. id相同时，执行顺序由上至下2. 如果是子查询，id的序号会递增，id值越大优先级越高，越先被执行3. id如果相同，可以认为是一组，从上往下顺序执行；在所有组中，id值越大，优先级越高，越先执行


select_type
(1) SIMPLE(简单SELECT，不使用UNION或子查询等)(2) PRIMARY(子查询中最外层查询，查询中若包含任何复杂的子...]]></description><category></category></item><item><title><![CDATA[JUC并发编程---简单聊聊LockSupport与Unsafe]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/102815083</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/102815083</guid><author>oDeviloo</author><pubDate>Wed, 30 Oct 2019 13:58:31 +0800</pubDate><description><![CDATA[LockSupport主要提供了一些park和unpark公有的静态方法，用来阻塞和唤醒线程。




方法
介绍




park()
阻塞当前线程，如果掉用unpark(Thread)方法或被中断，才能从park()返回


park(Object blocker)
阻塞当前线程，等待blocker释放


parkNanos(long nanos)
阻塞当前线程，nanos是超时时间


p...]]></description><category></category></item><item><title><![CDATA[spring事务传播性源码解析]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/101757711</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/101757711</guid><author>oDeviloo</author><pubDate>Tue, 08 Oct 2019 14:29:46 +0800</pubDate><description><![CDATA[spring中事务传播性如何理解？spring 事务处理中，一个类中的A方法（无事务）调B方法（有事务），事务是否生效？]]></description><category></category></item><item><title><![CDATA[spring aop源码分析代理创建过程]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/101428775</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/101428775</guid><author>oDeviloo</author><pubDate>Sun, 29 Sep 2019 14:36:35 +0800</pubDate><description><![CDATA[通过源码以及实例解读Spring Aop，解答各个Advice执行顺序。]]></description><category></category></item><item><title><![CDATA[源码解析JDK动态代理原理]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/101384718</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/101384718</guid><author>oDeviloo</author><pubDate>Wed, 25 Sep 2019 21:47:11 +0800</pubDate><description><![CDATA[通过解析JDK动态原理的Class文件，借助源码，理解JDK动态代理的实现过程。]]></description><category></category></item><item><title><![CDATA[Mysql事务隔离级别]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/100992185</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/100992185</guid><author>oDeviloo</author><pubDate>Thu, 19 Sep 2019 14:35:30 +0800</pubDate><description><![CDATA[主要讲解了事务的特性、事务隔离级别、mysql为什么使用可重复读作为默认隔离级别、为什么一般工作中使用读已提交作为事务隔离级别。]]></description><category></category></item><item><title><![CDATA[JUC并发编程---ReentrantLock源码分析]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/100654118</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/100654118</guid><author>oDeviloo</author><pubDate>Mon, 09 Sep 2019 17:07:03 +0800</pubDate><description><![CDATA[ReentrantLock重入锁是java中比较常用的锁，其中包含了公平/非公平的概念，通过本文可以了解其中的实现原理。]]></description><category></category></item><item><title><![CDATA[一文搞定ThreadLocal、InheritableThreadLocal和ThreadLocalMap]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/100581553</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/100581553</guid><author>oDeviloo</author><pubDate>Sun, 08 Sep 2019 23:11:06 +0800</pubDate><description><![CDATA[ThreadLocal可以在指定的线程中存储数据,并只有在指定的线程中可以获取到存储的数据。平时我们有使用，现在就看看如何实现的。]]></description><category></category></item><item><title><![CDATA[JUC并发编程---ThreadPoolExecutor线程池的状态、机制与原理源码解读]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/100543408</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/100543408</guid><author>oDeviloo</author><pubDate>Fri, 06 Sep 2019 12:50:15 +0800</pubDate><description><![CDATA[结合源码解读关键变量，线程池状态变更，任务提交及执行流程。]]></description><category></category></item><item><title><![CDATA[图解HashMap源码]]></title><link>https://blog.youkuaiyun.com/oDeviloo/article/details/100516579</link><guid>https://blog.youkuaiyun.com/oDeviloo/article/details/100516579</guid><author>oDeviloo</author><pubDate>Wed, 04 Sep 2019 10:19:59 +0800</pubDate><description><![CDATA[1. 基础变量
这些变量可能会在源码阅读中反复出现

capacity： 桶的数量 也就是table长度
threshold：默认16  capacity*loadFactor 当size大于threshold的时候会进行resize
loadFactor：加载因子 默认 0.75 减少hash冲突
modCount：数据修改次数 Iterator初始化的时候（HashIterator构造函数）e...]]></description><category></category></item></channel></rss>