<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MpenggegeM的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MpenggegeM</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MpenggegeM]]></copyright><item><title><![CDATA[TCPIP协议总结]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/136845113</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/136845113</guid><author>MpenggegeM</author><pubDate>Tue, 19 Mar 2024 15:47:28 +0800</pubDate><description><![CDATA[假设网络是不可靠的，被动断开方发送FIN+ACK报文后，其主动方的ACK响应报文有可能丢失，这时候的被动断开方处于LAST-ACK状态的，由于收不到ACK确认被动方一直不能正常的进入CLOSED状态。关闭连接时，被动断开方在收到对方的FIN结束请求报文时，很可能业务数据没有发送完成，并不能立即关闭连接，被动方只能先回复一个ACK响应报文，告诉主动断开方：“你发的FIN报文我收到了，只有等到我所有的业务报文都发送完了，我才能真正的结束，在结束之前，我会发你FIN+ACK报文的，你先等着”。]]></description><category></category></item><item><title><![CDATA[springcloud整合Gateway]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/128327382</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/128327382</guid><author>MpenggegeM</author><pubDate>Thu, 15 Dec 2022 16:31:54 +0800</pubDate><description><![CDATA[springcloud整合Gateway]]></description><category></category></item><item><title><![CDATA[springcloud整合Hystrix]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/128321192</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/128321192</guid><author>MpenggegeM</author><pubDate>Thu, 15 Dec 2022 11:09:26 +0800</pubDate><description><![CDATA[springcloud整合Hystrix]]></description><category></category></item><item><title><![CDATA[springcloud整合OpenFeign]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/128315906</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/128315906</guid><author>MpenggegeM</author><pubDate>Wed, 14 Dec 2022 19:43:45 +0800</pubDate><description><![CDATA[springcloud 整合OpenFeign]]></description><category></category></item><item><title><![CDATA[springcloud整合consul]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/128118055</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/128118055</guid><author>MpenggegeM</author><pubDate>Wed, 30 Nov 2022 17:32:55 +0800</pubDate><description><![CDATA[springcloud整合consul]]></description><category></category></item><item><title><![CDATA[springcloud整合zookeeper]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/128116285</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/128116285</guid><author>MpenggegeM</author><pubDate>Wed, 30 Nov 2022 16:38:44 +0800</pubDate><description><![CDATA[springcloud整合zookeeper]]></description><category></category></item><item><title><![CDATA[spring cloud 整合 eureka]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/127354657</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/127354657</guid><author>MpenggegeM</author><pubDate>Tue, 01 Nov 2022 10:23:30 +0800</pubDate><description><![CDATA[spring cloud 整合eureka]]></description><category></category></item><item><title><![CDATA[spring cloud 订单、支付微服务构建]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/126814577</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/126814577</guid><author>MpenggegeM</author><pubDate>Wed, 28 Sep 2022 14:26:55 +0800</pubDate><description><![CDATA[apring cloud 多模块搭建]]></description><category></category></item><item><title><![CDATA[spring cloud整体架构]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/126813513</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/126813513</guid><author>MpenggegeM</author><pubDate>Mon, 12 Sep 2022 10:28:03 +0800</pubDate><description><![CDATA[spring cloud整体技术栈架构]]></description><category></category></item><item><title><![CDATA[elasticsearch写入原理]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/126031308</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/126031308</guid><author>MpenggegeM</author><pubDate>Thu, 28 Jul 2022 12:10:47 +0800</pubDate><description><![CDATA[elasticsearch写入原理]]></description><category></category></item><item><title><![CDATA[es单节点部署]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/126002295</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/126002295</guid><author>MpenggegeM</author><pubDate>Tue, 26 Jul 2022 20:27:50 +0800</pubDate><description><![CDATA[es单节点部署]]></description><category></category></item><item><title><![CDATA[java final]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123514953</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123514953</guid><author>MpenggegeM</author><pubDate>Tue, 15 Mar 2022 23:11:17 +0800</pubDate><description><![CDATA[final
概念：
	final在Java中是一个保留的关键字，可以声明成员变量、方法、类以及本地变量。
	一旦你将引用声明作final，你将不能改变这个引用了，编译器会检查代码，如果你试图将变量再次初始化的话，编译器会报编译错误。
final关键字的好处：
（1）final关键字提高了性能。JVM和Java应用都会缓存final变量。
（2）final变量可以安全的在多线程环境下进行共享，而不需要额外的同步开销。
（3）使用final关键字，JVM会对方法、变量及类进行优化。
final原理:
	写屏障保]]></description><category></category></item><item><title><![CDATA[CAS无锁并发]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123492104</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123492104</guid><author>MpenggegeM</author><pubDate>Tue, 15 Mar 2022 00:59:38 +0800</pubDate><description><![CDATA[CAS 与 volatile
cas：
	保证对共享变量操作的原子性
	CAS 必须借助 volatile 才能读取到共享变量的最新值来实现【比较并交换】的效果
volatile：
	保证共享变量的可见性
	volatile 仅仅保证了共享变量的可见性，让其它线程能够看到最新值，但不能解决指令交错问题（不能保证原子性）
为什么无锁效率高：
	无锁情况下，即使重试失败，线程始终在高速运行，没有停歇，而 synchronized 会让线程在没有获得锁的时候，发生上下文切换，进入阻塞。
	但无锁情况下，因为线程要]]></description><category></category></item><item><title><![CDATA[JMM java内存模型]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123489499</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123489499</guid><author>MpenggegeM</author><pubDate>Mon, 14 Mar 2022 23:39:41 +0800</pubDate><description><![CDATA[java内存模型
即 java memory model，它定义了主存、工作内存抽象概念，底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。
JMM 体现在以下几个方面：
	原子性 - 保证指令不会受到线程上下文切换的影响
	可见性 - 保证指令不会受 cpu 缓存的影响
	有序性 - 保证指令不会受 cpu 指令并行优化的影响

可见性
当jit编译器频繁从主存中读得共享变量时，会将共享变量的值缓存到工作内存中。直接从工作内存中读取，提升效率。而主存中的值改变了，也不管，失掉了可见性。
解决]]></description><category></category></item><item><title><![CDATA[线程安全集合类概述]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123485447</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123485447</guid><author>MpenggegeM</author><pubDate>Mon, 14 Mar 2022 20:28:39 +0800</pubDate><description><![CDATA[HashTable和Vector
遗留的线程安全实现：效率较低
	HashTable:map的实现
	Vector：list的实现

Collections中的带synchronized修饰实现类
如synchronizedMap。synchronizedList等
方法内部都加一个synchronized修饰，同步块中调用原来的方法。属于装饰器模式，对原来的List或者Map功能进行装饰

JUC
java.util.concurrent.*下面的集合类
	主要分为三类：
		Blocking类：大部分实]]></description><category></category></item><item><title><![CDATA[线程池实现]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123456152</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123456152</guid><author>MpenggegeM</author><pubDate>Sun, 13 Mar 2022 13:07:05 +0800</pubDate><description><![CDATA[线程池状态
ThreadPoolExecutor 用高3位保存状态，低29位表示线程数量
RUNNING:可接受新任务
SHUTDOWN:不会接受新任务，但会处理完队列中的任务
STOP：暴力停止
TIDYING：任务都执行完毕，会执行钩子函数terminated()，可进行相应处理
TERMINATED：终止状态

线程池有哪些参数
1、核心线程数(corePoolSize)：线程中的核心线程数量
2、最大线程数(maximumPoolSize)：线程中允许存在的最大线程=核心线程+救急线程
3、救急线程]]></description><category></category></item><item><title><![CDATA[java最理想的单例模式-枚举]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123415319</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123415319</guid><author>MpenggegeM</author><pubDate>Fri, 11 Mar 2022 01:09:05 +0800</pubDate><description><![CDATA[饿汉式
public final class SingleEhan {
	
	private static final SingleEhan singleEhan = new SingleEhan();
	
	private SingleEhan() {
		
	}
	
	public static SingleEhan getSingleEhan() {
		return singleEhan;
	}
}

懒汉式
public final class SingleLanHan {
	private st]]></description><category></category></item><item><title><![CDATA[ReentrantLock]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123366965</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123366965</guid><author>MpenggegeM</author><pubDate>Wed, 09 Mar 2022 00:44:36 +0800</pubDate><description><![CDATA[ReentrantLock
1、reentrantlock 默认是非公平锁，设置公平锁需要传入true，比较影响效率
2、是可打断的，打断后，打断标记为false
3、和synchronized一样可重入
4、trylock可以设置超时，可加锁成功或者失败实现逻辑控制
5、可使用不同类型的condition变量实现不同线程任务的分类，使用condition.await 和singnal方法来暂停和唤醒线程
6、非公平锁：不考虑线程的等待队列直接获得锁。当竞争失败时，再加到等待队列后面。等待队列第一个也不一定]]></description><category></category></item><item><title><![CDATA[java synchronized原理]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123343179</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123343179</guid><author>MpenggegeM</author><pubDate>Tue, 08 Mar 2022 00:18:40 +0800</pubDate><description><![CDATA[临界区
对共享资源读写的代码块，如synchronized内的代码

竞态条件
多线程访问共享资源而导致结果不同，则称为发生了竞态条件、

Monitor原理
Monitor 被翻译为监视器或管程
1、对象头：正常对象头为64bit（位）8个字节，markword占32bit，klassword为对象指针占32bit
2、数组对象头为96bit，另外32bit为array length所有
3、正常markword中包含25bit hashcode码，age分代年龄4bit，biased_lock 偏向锁1]]></description><category></category></item><item><title><![CDATA[java 多线程基础]]></title><link>https://blog.youkuaiyun.com/MpenggegeM/article/details/123341498</link><guid>https://blog.youkuaiyun.com/MpenggegeM/article/details/123341498</guid><author>MpenggegeM</author><pubDate>Mon, 07 Mar 2022 22:48:52 +0800</pubDate><description><![CDATA[进程和线程
进程是程序执行的过程，进程是线程的容器，一个进程包含多个线程
线程是一个指令流，就是一条条指令交给cpu执行

并发和并行
并行是指多个cpu分别分配给多个线程时间片使各个线程真正的并行执行，线程之间互不干扰
并发是多个线程同一时间竞争同一个cpu时间片

线程的上下文切换
1、线程调用了阻塞的方法
2、 垃圾回收
3、cpu分配的时间片用完
4、有更高优先级的线程运行

线程5大状态
从操作系统层面来说：
	初始状态
	可运行状态
	运行状态
	阻塞状态
	终止状态

线程6大状态
从java]]></description><category></category></item></channel></rss>