<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cuotieken4635的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cuotieken4635</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cuotieken4635]]></copyright><item><title><![CDATA[【Netty】Netty入坑：一、全网最清晰图解、NIO简单介绍]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133111324</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133111324</guid><author>cuotieken4635</author><pubDate>Wed, 07 Apr 2021 16:35:00 +0800</pubDate><description><![CDATA[一、什么是Java NIO 的非阻塞模式

连接层(即Selector层，所谓的多路复用)：

一个线程，从某通道发送请求或者读取数据的时候，它仅能得到当前可用的数据。
如果当前没有数据可用的话，就什么都不获取。并且它不会阻塞起来，他可以去轮训其他通道，
直达当前通道有数据变动之前，它都可以去做其他事情，或者说它都可以去轮训其他通道。

I/O层(即Buffer层)：

当某一个通道有数据传输过...]]></description><category></category></item><item><title><![CDATA[【JVM】【常用工具】【MAT】macbook安装MAT（独立版，非eclipse插件）]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994720</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994720</guid><author>cuotieken4635</author><pubDate>Wed, 04 Nov 2020 00:17:00 +0800</pubDate><description><![CDATA[MAC版本MAT下载地址如下：

https://www.eclipse.org/mat/downloads.php


下载后解压，直接打开软件：

提示报错

查看该日志文件,提示该目录无法写入，可以使用-data参数
java.lang.IllegalStateException: The platform metadata area could not be written



...]]></description><category></category></item><item><title><![CDATA[【Canal】【MySQL】解密阿里Canal ：（一）Canal工作原理]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994719</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994719</guid><author>cuotieken4635</author><pubDate>Sun, 25 Oct 2020 16:03:00 +0800</pubDate><description><![CDATA[我们先回顾一下，传统MySQL主从复制工作原理：


1、现在有一个客户端，往主库(Master)中写入一条数据；

2、主库(Master)会记录一条数据变化，向BinLog中插入一条数据日志；

3、I/O Thread会不停的调度(即过一会执行一下)，向BinLog中发起一个请求，读取一下BinLog中的二进制日志

4、BinLog接收到请求后，把数据发送到从库(Slave)中的；

...]]></description><category></category></item><item><title><![CDATA[【Docker】docker mongo 持久化存储]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994717</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994717</guid><author>cuotieken4635</author><pubDate>Thu, 08 Oct 2020 18:00:00 +0800</pubDate><description><![CDATA[先创建好mongo的持久化目录：


mkdir -p ~/docker_data/mongo/{data,conf}



拉取mongo镜像：


docker pull mongo


创建一个docker-mongo实例：


docker run -idt  --name mongo --privileged=true \
-p 27017:27017 \
-v ~/docker_d...]]></description><category></category></item><item><title><![CDATA[【常用工具】①②③④⑤⑥⑦⑧⑨⑩]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133072503</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133072503</guid><author>cuotieken4635</author><pubDate>Mon, 28 Sep 2020 21:58:00 +0800</pubDate><description><![CDATA[①②③④⑤⑥⑦⑧⑨⑩
⑪⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳
]]></description><category></category></item><item><title><![CDATA[【ElasticSearch】【Docker】docker 容器添加ik分词插件]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133069498</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133069498</guid><author>cuotieken4635</author><pubDate>Tue, 22 Sep 2020 14:23:00 +0800</pubDate><description><![CDATA[这里不建议进入容器下载插件，因为是在是太慢了！并且容器提供的指令是有限的！！！
先去github下载ik分词器的插件：
https://github.com/medcl/elasticsearch-analysis-ik/releases
必须下载和当前es对应的版本，例如：我当前es是7.6.2，对应的ik分词插件也应该是7.6.2版本
我这里已经下载好了，然后进行解压，然后拷贝到docker...]]></description><category></category></item><item><title><![CDATA[【Mysql】Linux mysql如何开启binlog？]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133043216</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133043216</guid><author>cuotieken4635</author><pubDate>Wed, 22 Jul 2020 23:02:00 +0800</pubDate><description><![CDATA[先登录mysql，查看看binlog日志是否开启？


[root@bogon etc]# mysql -u root -p



mysql&gt; show variables like '%log_bin%';



开启binlog日志：

退出当前sql指令：

mysql&gt; quit;


在my.cnf文件中添加两行配置：

server-id表示单节点的id，这里由于只...]]></description><category></category></item><item><title><![CDATA[【Spring】大白话聊聊代理模式 —— 动态代理]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994715</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994715</guid><author>cuotieken4635</author><pubDate>Sun, 05 Jul 2020 16:17:00 +0800</pubDate><description><![CDATA[为什么要使用代理模式呢？

打个比方，我虽然不会打篮球，但我很喜欢A锥，可是国内我又买不起，
发现海淘的A锥，既经济又实惠(咱也不知道是不是真货，咱也不敢问)，
不过我发现我去访问海外电商极度费劲，此时我该怎么办？
我突然想到了代购老黄，我们可以通过老黄啊，来帮我们获取到我们心仪的A锥。

从静态代理的角度我们分析一下老黄代理如何运作：

所以对于老黄，也就代理来说，其实就是一个搬运工。
也...]]></description><category></category></item><item><title><![CDATA[【操作系统】在网络编程中，什么是C10K问题？]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994712</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/132994712</guid><author>cuotieken4635</author><pubDate>Wed, 01 Jul 2020 23:12:00 +0800</pubDate><description><![CDATA[10K，顾名思义就是10000，C可以理解为【Client】，
个人理解就是此时有10000个客户端，并发连接同一个服务器上，
导致服务器过多，使得服务器崩溃的问题。
...]]></description><category></category></item><item><title><![CDATA[【Redis】大白话聊聊Redis如何实现持久化]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133047160</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133047160</guid><author>cuotieken4635</author><pubDate>Sun, 28 Jun 2020 22:13:00 +0800</pubDate><description><![CDATA[Redis两种持久化方式：
1》RDB(snapshotting快照)

是Redis的默认持久化方式(把数据做一个备份，将数据存放到磁盘中)

这种方式是将内存中的数据，以快照的方式写入到二进制文件中，存放默认文件是【dump.rbd】。
可以通过配置文件来配置这个持久的方式，说白了就是持久化频率，缓存数据我多久做一个持久化，每次持久化多少数据。
主要就是通过遍历所有缓存数据，通过【save】...]]></description><category></category></item><item><title><![CDATA[【MySQL】究竟什么是MVCC呢？]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133055084</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133055084</guid><author>cuotieken4635</author><pubDate>Sat, 13 Jun 2020 18:36:00 +0800</pubDate><description><![CDATA[一、MVCC是什么呢？
MVCC其实就是一个多版本并发控制，即多个不同版本的数据实现并发控制的技术，其基本思想是为每次事务生成一个新版本的数据，
在读数据时选择不同版本的数据即可以实现对事务结果的完整性读取。
二、MVCC主要有什么作用呢？
提高并发读写性能，操作时会生成事务id
1》每条记录都会保存两个隐藏列：【trx_id】(事务id)和roll_pointer(回滚指针
2》每次操作都会生...]]></description><category></category></item><item><title><![CDATA[【Redis】如何使用sort对hash进行排序]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133053981</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133053981</guid><author>cuotieken4635</author><pubDate>Thu, 11 Jun 2020 11:08:00 +0800</pubDate><description><![CDATA[我们先插入几条hash数据：


127.0.0.1:6379&gt; hmset soft:1 id 1 title mobile download 123 created 122
OK
127.0.0.1:6379&gt; hmset soft:2 id 2 title android download 456 created 77
OK
127.0.0.1:6379&gt; hmset ...]]></description><category></category></item><item><title><![CDATA[【Java】Sychronized的作用范围和注意事项]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133105847</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133105847</guid><author>cuotieken4635</author><pubDate>Wed, 10 Jun 2020 19:26:00 +0800</pubDate><description><![CDATA[一共分为三个范围：

作用某对象上，例如


synchronized (this)、synchronized (object)


作用在某方法上，例如：


public void test()


作用在类上，例如：


① public synchronized static void test()

② synchronized(SynchronizeDemo.class) {
   ...]]></description><category></category></item><item><title><![CDATA[【Java】唠唠synchronized中的重量级锁]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133055080</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133055080</guid><author>cuotieken4635</author><pubDate>Wed, 10 Jun 2020 16:31:00 +0800</pubDate><description><![CDATA[说到轻量级锁，我们必须先说一下轻量级锁是什么？

synchronized在JDK1.6之后的优化锁后，一共有四种锁阶段：

无锁 --&gt; 偏向锁 --&gt; 轻量级锁 --&gt; 重量级锁

而重量级锁，正处于是第四种阶段，即当某个线程长时间占有锁资源，而其他线程一直处于自旋状态并竞争激烈，锁将会升级为重量级锁。

子曾经曰过，“Don't BB，Look at the pictu...]]></description><category></category></item><item><title><![CDATA[【Java】是时候了解一波如何排除堆内存溢出了？]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005100</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005100</guid><author>cuotieken4635</author><pubDate>Mon, 08 Jun 2020 21:42:00 +0800</pubDate><description><![CDATA[在排查之前，我想小伙伴对JVM内存结构都应该是了解的吧，不了解的传送门走一波：
《堆区域的一个详细了解并附带调优案例》
《帧栈核心组成部分详解》


排查之前，我脚的我们必须得了解一波啥是内存溢出？(传送门在这里：《你必须了解的内存溢出和内存泄漏》)


 内存溢出：系统已经不能再分配出多余的空间给你所使用了。

 内存泄漏：在你使用一块资源时，给他分配了一部分空间；当你不再使用了之后，并没有...]]></description><category></category></item><item><title><![CDATA[【Java】【JVM】你必须了解的内存溢出和内存泄漏]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133053980</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133053980</guid><author>cuotieken4635</author><pubDate>Mon, 08 Jun 2020 20:09:00 +0800</pubDate><description><![CDATA[什么是内存溢出和内存泄漏呢？

内存溢出(Out Of Memory —— 也就是常说的OOM)


系统已经不能再分配出多余的空间给你所使用了。

比如：你从数据库查询出了100M的数据，但是系统只有90M的数据了，boom！！！没那么多内存了，所以就炸了



内存泄漏(Memory Leak)


在你使用一块资源时，给他分配了一部分空间；当你不再使用了之后，并没有回收它，但是它确实没有用...]]></description><category></category></item><item><title><![CDATA[【Java】唠唠synchronized中的轻量级锁]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005098</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005098</guid><author>cuotieken4635</author><pubDate>Sat, 06 Jun 2020 16:33:00 +0800</pubDate><description><![CDATA[说到轻量级锁，我们必须先说一下轻量级锁是什么？

synchronized在JDK1.6之后的优化锁后，一共有四种锁阶段：

无锁 --&gt; 偏向锁 --&gt; 轻量级锁 --&gt; 重量级锁

而轻量级锁，正处于是第三种阶段。
那么如何才会触发偏向锁升级为轻量级锁？偏向锁又是如何升级为轻量级锁的呢？

1》如何触发偏向锁升级为轻量级锁呢？
①线程A此时已占有锁对象资源，锁对象【Ma...]]></description><category></category></item><item><title><![CDATA[【Redis】为什么通常说Redis是单线程的？并且Redis为什么这么快！]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005099</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005099</guid><author>cuotieken4635</author><pubDate>Thu, 04 Jun 2020 15:43:00 +0800</pubDate><description><![CDATA[多线程有什么好处呢？使用多线程它不香么？


对于单纯的网络IO来说，当请求量达到一定程度之后，多线程的确会有很大的优势，

不过并不是单纯的多线程，而是每个线程都有自己的多路复用模型(如：select、poll、epoll)

也就是多线程和多路复用模型混合。


那Redis为什么是单线程的呢？(这里指Redis4.0版本之前)


但是我们还要考虑Redis操作的对象，毕竟Redis是直...]]></description><category></category></item><item><title><![CDATA[【Java】【HashMap】JDK1.7中ConcurrentHashMap是如何解决调用size时的一致性问题呢？...]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005097</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133005097</guid><author>cuotieken4635</author><pubDate>Tue, 02 Jun 2020 15:24:00 +0800</pubDate><description><![CDATA[再调用【size()】时，会出现什么样的一致性问题呢？

1》在没有put的情况下，调用concurrentHashMap的size()方法，可以直接获取到表的长度

2》在线程A调用size()方法的同时，线程B试图PUT了一个数据，那么线程A如何保证size()结果一致性呢？


当然，JDK设计人员一定也想到了这个问题，官方源码如下：


public int size() {
    ...]]></description><category></category></item><item><title><![CDATA[【Java】手动模拟实现一个AQS]]></title><link>https://blog.youkuaiyun.com/cuotieken4635/article/details/133055078</link><guid>https://blog.youkuaiyun.com/cuotieken4635/article/details/133055078</guid><author>cuotieken4635</author><pubDate>Fri, 29 May 2020 22:52:00 +0800</pubDate><description><![CDATA[什么是AQS?

synchronized(基于底层C++，语言实现的同步机制)
Aqs同步器(Java实现)

【Unsafe】魔法类

绕过虚拟机，直接操作底层的内存

话不多说，我们手动模拟一个AQS：

1》锁对象：

package com.example.demo.thread.current;

import com.example.demo.util.UnsafeInstanc...]]></description><category></category></item></channel></rss>