<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[admin_cxz的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/admin_cxz</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; admin_cxz]]></copyright><item><title><![CDATA[java-消息队列（中间件）]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/150581091</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/150581091</guid><author>admin_cxz</author><pubDate>Wed, 03 Sep 2025 14:17:41 +0800</pubDate><description><![CDATA[指已经成功消费的消息，由于业务上的需求需要进行重新消费，在RocketMQ中，broker在向Comsumer投递成功消息后，消息仍需保留，可以按照时间维度回退消费进度如何保证高性能读写？零拷贝技术mmap，是一种内存映射文件的方法，简单来说就是内核缓冲区和应用缓冲区共享，宠儿减少从读缓冲区到用户缓冲区的一个CPU拷贝sendfile也是减少一次CPU拷贝，同时减少两次上下文切换。]]></description><category></category></item><item><title><![CDATA[java-并发-线程池]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/150203312</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/150203312</guid><author>admin_cxz</author><pubDate>Mon, 11 Aug 2025 20:59:54 +0800</pubDate><description><![CDATA[线程池就是管理一系列线程的资源池。当有任务需要处理时，直接从线程池中获取线程进行处理，处理完成后不会销毁，而是等待下一个任务。]]></description><category></category></item><item><title><![CDATA[java-Raft协议]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/149981840</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/149981840</guid><author>admin_cxz</author><pubDate>Wed, 06 Aug 2025 22:33:25 +0800</pubDate><description><![CDATA[是什么？有啥用（应用）？集群架构通常会面临维护多个副本进行容若，提高系统可用性的要求。要实现这个目标就必须解决最核心的问题那就是一致性。而Raft就是为了实现这一目标指定的协议，他将一致性协议的核心内容拆分成几个关键阶段，包括领导人选举，日志复制和安全性保证。]]></description><category></category></item><item><title><![CDATA[java-Nginx]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/149784910</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/149784910</guid><author>admin_cxz</author><pubDate>Wed, 06 Aug 2025 16:17:05 +0800</pubDate><description><![CDATA[如果没有过期，则将信息直接返回回去，如果过期了，则将请求发送到服务端，此时request的头信息中带着ETag和Last-Modified信息，responose头信息中也带着这两个参数，如果一致，则表示要访问的资源没有发生改变，直接返回304，如果不一致，则表明资源改变，会请求服务端，返回200。4.fair（第三方插件）：需要安装upstream_fire模块，相对于权重，iphash来说，fire的负载均衡算法更加智能，可以根据页面的大小和加载时长进行负载均衡，响应时间短的优先分配。]]></description><category></category></item><item><title><![CDATA[java-IO网络模型]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/149595999</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/149595999</guid><author>admin_cxz</author><pubDate>Wed, 30 Jul 2025 15:53:00 +0800</pubDate><description><![CDATA[用户线程发起IO请求（传递的信息包含描述符，缓冲区指针，和read相同的参数及文件的偏移），内核立马返回表示接收到请求了，不会对用户线程产生任何阻塞，后面的事全部由内核独自完成，内核在数据准备就绪后，将数据直接拷贝至用户线程，然后再给用户线程发送一个信号，告知它IO操作已经完成，可以直接使用数据了。用户进程不断的询问内核数据是否准备就绪，如果没有内核返回error，如果准备就绪就会立马把数据拷贝之用户进程，用户进程不会放弃CPU的占用，是一种极其浪费资源的操作，很少使用。典型就是BIO，socket。]]></description><category></category></item><item><title><![CDATA[java基础-常用知识点]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/149427488</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/149427488</guid><author>admin_cxz</author><pubDate>Wed, 23 Jul 2025 10:42:38 +0800</pubDate><description><![CDATA[什么时volitile关键字？修饰变量以保证变量的可见性（不同线程）和有序性（禁止指令重排序）。那么什么是可见性和有序性呢？这就不得不聊一下JMM（java内存模型）了。JMM是什么呢？JMM也就是java内存模型，是为了解决各自硬件和操作系统的内存访问差异，让java程序在各种平台上都能达到一致得到内存访问效果。简单来说就是为了解决cpu快内存访问慢的问题。JMM规定所有的变量都是存在主存中的，类似于普通内存，每个线程又有自己的工作内存。]]></description><category></category></item><item><title><![CDATA[java基础-jvm]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/148543531</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/148543531</guid><author>admin_cxz</author><pubDate>Tue, 15 Jul 2025 00:27:35 +0800</pubDate><description><![CDATA[G1收集器：垃圾优先的收集器，JDK7正式使用，JDK9默认使用，出现是为了替代CMS收集器，G1最大的变化就是分代概念，它只是逻辑分代，物理结构上已经不再分代，他将java堆划分成多个大小不等的Region，每个Region扮演根据需要扮演Eden区，Survivor区，或者老年代，G1对扮演不同分区的Region使用不同的回收算法进行回收？引用计数法：在对象中添加一个引用计数器，每引用一次计数器加一，每取消一次引用计数器就减一，当计数器为0时，说明对象不再被引用，此时就可以将对象回收了。]]></description><category></category></item><item><title><![CDATA[java基础-数据结构]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/148291719</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/148291719</guid><author>admin_cxz</author><pubDate>Wed, 28 May 2025 22:43:07 +0800</pubDate><description><![CDATA[每个元素存储再一个单独的小内存中，知道后一个元素的地址就是单项链表，知道前后元素的地址就是双向链表。3.再hash：当发生hash冲突时使用一个新的hash函数计算出新的哈希值存放在新的桶里。vector：是基于数组array的一个list，时同步线程（syn）都是基于数组的，但是ArrayList是线程不安全的，所以性能会好一些。arraylist是基于数组的linkedlist是基于链表的。查询慢，插入和修改速度快，存储空间不连续，不浪费资源。linkedlist：基于链表，增删快，查询慢。]]></description><category></category></item><item><title><![CDATA[java基础-锁]]></title><link>https://blog.youkuaiyun.com/admin_cxz/article/details/148265206</link><guid>https://blog.youkuaiyun.com/admin_cxz/article/details/148265206</guid><author>admin_cxz</author><pubDate>Wed, 28 May 2025 00:58:06 +0800</pubDate><description><![CDATA[syn是java语言关键字，用于实现同步控制，基于JVM实现，底层实现较为复杂，设计互斥锁（mutex），AQS是java并发包中的一个抽象类（队列的管理和唤醒实现）用于构建锁和其他同步组件的基础框架，syn较为简单且性能低，AQS性能好且可定制。如果被请求的资源是空闲状态那么，请求线程获取资源并将资源设置为锁状态，若被请求资源处于锁状态，那么就需要一套线程阻塞等待和唤醒的机制，这个机制是AQS通过CLH队列（三个发明队列人的首字母）来实现的，即暂时获取不到资源的线程加入队列中。]]></description><category></category></item></channel></rss>