<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[疯狂撸代码的奋青博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Junna_zeng</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Junna_zeng]]></copyright><item><title><![CDATA[「Endless Embrace」]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/130990827</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/130990827</guid><author>Junna_zeng</author><pubDate>Sat, 20 May 2023 21:53:46 +0800</pubDate><description><![CDATA[今年的520，用一首特殊的歌，纪念不久前先后故去的外祖父母。
愿他们在天堂安好。
愿我们在还来得及的时候，去爱与被爱。
I still love you, even though I miss you.

2022年7月动画《来自深渊 烈日的黄金乡》片尾曲https://y.qq.com/n/ryqq/songDetail/0001f9ju0jMfW6





「Endless Embrace」...]]></description><category></category></item><item><title><![CDATA[在Ubuntu主机上使用USB无线网卡]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/130430049</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/130430049</guid><author>Junna_zeng</author><pubDate>Mon, 17 Apr 2023 02:02:55 +0800</pubDate><description><![CDATA[前言
上个月冲动消费攒了一台华擎DeskMini X300小主机，装了Ubuntu 22.04，用来解决M1芯片MacBook Pro上无法编译x86_64架构的StarRocks和ClickHouse的问题。




因为没什么特殊需求所以没用Zen 3的5600G / 5700G

当时图便宜买了不带无线网卡的版本(书房有网线，并且自带的AC3168比较emm)。但是最近想把它拿到卧室使用，又...]]></description><category></category></item><item><title><![CDATA[常用限流算法]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/122403573</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/122403573</guid><author>Junna_zeng</author><pubDate>Fri, 10 Feb 2023 14:08:19 +0800</pubDate><description><![CDATA[时间窗口、漏斗算法、令牌桶算法

]]></description><category></category></item><item><title><![CDATA[反射获取泛型类型]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/125187395</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/125187395</guid><author>Junna_zeng</author><pubDate>Wed, 08 Jun 2022 16:58:52 +0800</pubDate><description><![CDATA[运行时，使用反射获取泛型类型]]></description><category></category></item><item><title><![CDATA[Java中CAS操作]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121849653</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121849653</guid><author>Junna_zeng</author><pubDate>Tue, 29 Mar 2022 16:08:41 +0800</pubDate><description><![CDATA[一个线程获取值为a，另一个线程将数值由a改成了b，接着又改成了a，此时线程b的CAS操作认为是没有变化，但其实已经变化过了，这种过程就叫ABA问题。]]></description><category></category></item><item><title><![CDATA[Springboot统一给redisKey加前缀]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/123800862</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/123800862</guid><author>Junna_zeng</author><pubDate>Mon, 28 Mar 2022 17:30:59 +0800</pubDate><description><![CDATA[@Slf4j
@Order
@Configuration
public class PreKeyRedisConfig {
    public static final String DEFUAL_PREFIX = "XXX##";
    @Autowired
    private StringRedisTemplate stringRedisTemplate;
    @Autowired
    private RedisTemplate redisTemplate;

    class Pre]]></description><category></category></item><item><title><![CDATA[解决InheritableThreadLocal线程池复用线程时，取值错误]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/123655718</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/123655718</guid><author>Junna_zeng</author><pubDate>Tue, 22 Mar 2022 11:19:15 +0800</pubDate><description><![CDATA[解决InheritableThreadLocal线程池复用线程时，取值错误]]></description><category></category></item><item><title><![CDATA[自定义WebMvcConfigurer、WebMvcConfigurationSupport失效之谜]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/123537881</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/123537881</guid><author>Junna_zeng</author><pubDate>Wed, 16 Mar 2022 23:22:18 +0800</pubDate><description><![CDATA[注解-@EnableWebMVC
源码
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Documented
@Import(DelegatingWebMvcConfiguration.class)
public @interface EnableWebMvc {
}

意思就是说：如果引用了@EnableWebMVC注解，就会往spring容器中注入了一个DelegatingWebMvcConfiguration来统一管理所有的]]></description><category></category></item><item><title><![CDATA[时区问题解决]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/123414381</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/123414381</guid><author>Junna_zeng</author><pubDate>Thu, 10 Mar 2022 23:47:40 +0800</pubDate><description><![CDATA[1、我们设置mysql连接，在连接语句后面加上
&amp;serverTimezone=GMT+8

2、然后修改jackson配置
#spring
spring:
  jackson:
    date-format: yyyy-MM-dd HH:mm:ss
    time-zone: GMT+8

3、修改启动类
在启动类中，添加这个方法
    /**
     * 设置时区
     */
    @PostConstruct
    void setDefaultTimezone() {
   ]]></description><category></category></item><item><title><![CDATA[Mysql核心内容]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121650588</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121650588</guid><author>Junna_zeng</author><pubDate>Thu, 06 Jan 2022 10:53:33 +0800</pubDate><description><![CDATA[MySQL日志类型：
binlog：自带的二进制数据
redolog：缓存也日志
undolog：事务日志
MySQL，innodb可重复读的实现原理
就是使用使用了mvcc多版本控制，就是同一份数据同时保留多版本的一种方式，进而实现并发控制
innodb引擎中，表的隐藏列
db_row_id（rowid）：长度6byte，隐藏的自增id，如果表没有主键m，innodb会自动以db_row_id产生一个聚族索引
db_trx_id：长度byte，最近修改（insert / update）的事务id
db_r]]></description><category></category></item><item><title><![CDATA[Java对象内存布局 & 对象头Monitor]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/122305090</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/122305090</guid><author>Junna_zeng</author><pubDate>Wed, 05 Jan 2022 22:48:14 +0800</pubDate><description><![CDATA[Java对象内存布局
对象头
Monitor监听器]]></description><category></category></item><item><title><![CDATA[可靠传输的工作原理（一篇讲完TCP可用性）]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121996090</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121996090</guid><author>Junna_zeng</author><pubDate>Tue, 21 Dec 2021 16:09:58 +0800</pubDate><description><![CDATA[一、前言
因为在TCP发送的报文段是交给 IP层（可以理解为网络层）传送的。但是IP层只能提供最大努力服务，就是并不能保证传输的可靠（错误、丢包）。所以我们可以使用一些可靠传输协议，来处理出错、丢失、慢回复等问题。
可靠的传输协议包含：

停止等待协议
连续ARQ协议
选择重传ARQ

二、停止等待协议
就是每发送完一个分组就停止放松，等待对方的确认，在收到确认后在发送下一个分组。
工作原理

这种方式简单来说就是 发送方A发一个，接收方B接一个并且给A应答，但是传输过程会有这几种情况：

A发M1给B，B]]></description><category></category></item><item><title><![CDATA[linux文件删除正在读写的文件]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121969289</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121969289</guid><author>Junna_zeng</author><pubDate>Thu, 16 Dec 2021 10:40:56 +0800</pubDate><description><![CDATA[背景知识
多进程环境下，打开同一个文件，进行读写操作过程中，如果其中一个进程删除这个文件，那么，另外正在读写这个文件会发生什么呢？

因为文件被删除了，正在读写的进程发生异常？
正在读写的进程仍然正常读写，好像没有发现发生了什么？

Linux 是通过 link 的数量来控制文件删除，只有当一个文件不存在任何 link 的时候，这个文件才会被删除。
每个文件都有 2 个 link 计数器 —— i_count 和 i_nlink。i_count 的意义是当前使用者的数量，i_nlink 的意义是介质连接的数]]></description><category></category></item><item><title><![CDATA[树的按层遍历]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121967952</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121967952</guid><author>Junna_zeng</author><pubDate>Thu, 16 Dec 2021 09:55:11 +0800</pubDate><description><![CDATA[给定一个二叉树，需要按层来输出各个节点。

]]></description><category></category></item><item><title><![CDATA[网络协议汇总与终极详细解析]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121951631</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121951631</guid><author>Junna_zeng</author><pubDate>Wed, 15 Dec 2021 17:48:37 +0800</pubDate><description><![CDATA[OSI七层协议 比较完整，但是既复杂又不实用。
TCP/IP协议 则不同，他现在已经得到了非常广泛的应用。
五层协议 采用折中的的办法，既简介又能将概念阐述清楚。
参考：通过“表白”，让我们快速了解网络七层协议




OSI层
功能
协议




应用层
文本传输，电子邮件，文件服务，虚拟终端
FTP,HTTP,SNMP,DNS等


表示层
数据格式化，代码转换，数据加密
没有协议


会话层
解除或建立与其他节点的联系
没有协议


传输层
提供端对端的接口
TCP,UDP


网络层
为数据包选择.]]></description><category></category></item><item><title><![CDATA[volatile的底层实现原理]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121855359</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121855359</guid><author>Junna_zeng</author><pubDate>Wed, 15 Dec 2021 11:52:44 +0800</pubDate><description><![CDATA[是使用了lock锁汇编指令实现，让副本数据主动刷新主内存数据，从而实现缓存数据一致性问题
对于老式的CPU，LOCK执行会阻塞CPU读取共享变量，对于新式的CPU会采用MESI协议
CPU 中的 MESI 缓存一致性协议
MESI分别代表缓存行数据所处的四种状态（使用额外的两位(bit)表示），通过对这四种状态的切换，来达到对缓存数据进行管理的目的：




状态
描述
监听




M 修改（Modify）
该缓存行有效，数据被修改了，和内存中的数据不一致，数据只存在于本缓存行中
缓存行必须时刻监听所有.]]></description><category></category></item><item><title><![CDATA[Java内存模型(Java Memory Model，JMM)]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121850076</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121850076</guid><author>Junna_zeng</author><pubDate>Tue, 14 Dec 2021 11:12:01 +0800</pubDate><description><![CDATA[定义
JMM主要是为了规定了线程和内存之间的一些关系。
根据JMM的设计，系统存在一个主内存(Main Memory)，Java中所有变量都储存在主存中，对于所有线程都是共享的。每条线程都有自己的工作内存(Working Memory)，工作内存中保存的是主存中某些变量的拷贝，线程对所有变量的操作都是在工作内存中进行，线程之间无法相互直接访问，变量传递均需要通过主存完成。
JMM模型下的线程间通信

lock（锁定）：作用于主内存的变量，把一个变量标识为一条线程独占状态。
unlock（解锁）：作用于主内存]]></description><category></category></item><item><title><![CDATA[Redis中ZSET的底层数据结构]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121677362</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121677362</guid><author>Junna_zeng</author><pubDate>Thu, 02 Dec 2021 14:57:21 +0800</pubDate><description><![CDATA[https://www.cnblogs.com/wuyizuokan/p/11108417.html
ZSet数据结构类似于Set结构，只是ZSet结构中，每个元素都会有一个分值，然后所有元素按照分值的大小进行排列，相当于是一个进行了排序的链表。
如果ZSet是一个链表，而且内部元素是有序的，在进行元素插入和删除，以及查询的时候，就必须要遍历链表才行，时间复杂度就达到了O(n),这个在以单线程处理的Redis中是不能接受的。所以ZSet采用了一种跳跃表的实现。这个实现有点类似于Kafka存储消息是使用的稀疏]]></description><category></category></item><item><title><![CDATA[4种常用线程池介绍]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121656047</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121656047</guid><author>Junna_zeng</author><pubDate>Wed, 01 Dec 2021 15:19:05 +0800</pubDate><description><![CDATA[文章目录一. 线程池简介线程池的概念：线程池的工作机制使用线程池的原因：二. 四种常见的线程池详解线程池的返回值ExecutorService简介：具体的4种常用的线程池实现如下：（返回值都是ExecutorService）Executors.newCacheThreadPool()Executors.newFixedThreadPool(int n)Executors.newScheduledThreadPool(int n)Executors.newSingleThreadExecutor()！！核心线]]></description><category></category></item><item><title><![CDATA[Redis的基本类型、实战]]></title><link>https://blog.youkuaiyun.com/Junna_zeng/article/details/121593572</link><guid>https://blog.youkuaiyun.com/Junna_zeng/article/details/121593572</guid><author>Junna_zeng</author><pubDate>Mon, 29 Nov 2021 12:38:50 +0800</pubDate><description><![CDATA[数据类型

string（字符串）
hash（哈希）
list（列表）
set（集合）
zset(sorted set：有序集合)

使用场景
1. string（字符串）
可以用于保存对象、图像、字符
2. hash（哈希）

存储用户、对象信息（可针对字段进行更新）
存购物车，key存商品id，value存数量

3. list（列表）
双向链表的结构，默认插入的方式是头插法（也可尾插），获得元素的是从头开始遍历到尾
4. set（集合）

可算两集合交集（利用redisTemplate.opsForS]]></description><category></category></item></channel></rss>