<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[liubintao的扫盲之路]]></title><description><![CDATA[liubintao的技术扫盲之路，一步一个脚印]]></description><link>https://blog.youkuaiyun.com/jiushiNeil</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jiushiNeil]]></copyright><item><title><![CDATA[VMware ESXi 6.7搭建]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/108273145</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/108273145</guid><author>jiushiNeil</author><pubDate>Fri, 28 Aug 2020 09:25:10 +0800</pubDate><description><![CDATA[参考文章
https://blog.youkuaiyun.com/QQ1006207580/article/details/88799489

]]></description><category></category></item><item><title><![CDATA[Ubuntu 安装搜狗输入法及Clion无法使用问题]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/108139865</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/108139865</guid><author>jiushiNeil</author><pubDate>Fri, 21 Aug 2020 09:01:38 +0800</pubDate><description><![CDATA[中文输入法首选搜狗
血的教训，Ubuntu系统中文输入法乖乖的装搜狗输入法吧，其他谷歌拼音、Chinese-pinyin 用起来都是泪。 以下步骤请严格按照顺序执行，每次的重启都不要跳过，否则可能导致安装不成功。没办法，用户少的操作系统就是这么尴尬，很多操作都需要通过重启来生效。
1）设置系统支持中文
2）重启
3）安装输入法框架fcitx
4）重启
5）设置Ubuntu键盘输入法框架为fcitx
6）安装搜狗输入法
7）重启
安装步骤

设置系统支持中文
鼠标依次点击System Settings–&gt]]></description><category></category></item><item><title><![CDATA[通信方式]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/108102939</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/108102939</guid><author>jiushiNeil</author><pubDate>Wed, 19 Aug 2020 15:57:16 +0800</pubDate><description><![CDATA[FC
函数调用
SC
系统调用  80中断
RPC
远程过程调用
IPC
进程间通信(Inter-Process Communication)

]]></description><category></category></item><item><title><![CDATA[如何发现代码质量问题-checklist]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107779053</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107779053</guid><author>jiushiNeil</author><pubDate>Tue, 04 Aug 2020 09:26:12 +0800</pubDate><description><![CDATA[1.常规checklist

目录设置是否合理、模块划分是否清晰、代码结构是否满足"高内聚，松耦合"?
是否遵循经典的设计原则和设计思想(SOLID、DRY、KISS、YAGNI、LOD等)?
设计模式是否应用得当，是否过度设计？
代码是否容易扩展?如果要添加新功能，是否容易实现?
代码是否可以复用？是否可以复用已有的项目代码或类库？是否有重复造轮子？
代码是否容易测试？单元测试是否全面覆盖各种正常和异常的情况？
代码是否易读？是否符合编码规范(比如命名和注释是否恰当、代码风格是否一致等)？

2.业务ch]]></description><category></category></item><item><title><![CDATA[gradle使用maven库设置]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107607333</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107607333</guid><author>jiushiNeil</author><pubDate>Mon, 27 Jul 2020 11:10:30 +0800</pubDate><description><![CDATA[1.找的maven仓库的位置复制路径I:\repository,由于我是使用idea设置的maven仓库位置

2.配置环境变量GRADLE_USER_HOME 将上面的I:\repository配置进去

3.重启idea验证  是否生效 可以看到Gradle模块的Service directory path变成了我们设置的GRADLE_USER_HOME环境的变量的位置,说明gradle用maven的仓库 生效了

4.配置gradle工程文件加载jar包仓库的优先级,让其先从本地仓库找,如果找不到,再]]></description><category></category></item><item><title><![CDATA[xtrabackup备份Mysql]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107456675</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107456675</guid><author>jiushiNeil</author><pubDate>Mon, 20 Jul 2020 16:41:28 +0800</pubDate><description><![CDATA[安装
官网地址
官网2.4版本下载列表
此篇文章使用的版本下载
主库和从库都需要安装
[root@sit-mysql1 local]# cd /usr/local
[root@sit-mysql1 local]# tar -xf percona-xtrabackup-2.4.20-Linux-x86_64.el6.tar.gz 
[root@sit-mysql1 local]# mv percona-xtrabackup-2.4.20-Linux-x86_64 xtrabackup


主从同步：关闭从库的]]></description><category></category></item><item><title><![CDATA[Linux-IO模型之多路复用器]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107183236</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107183236</guid><author>jiushiNeil</author><pubDate>Wed, 08 Jul 2020 10:27:32 +0800</pubDate><description><![CDATA[NIO的优劣
优势:通过1个或几个线程,解决N个IO连接的处理问题
劣势:每循环一次,O(N)的时间复杂度,有多少个客户端连接就有多少次系统调用recv，每次系统调用都会涉及到软中断，线程在用户态和内核态的切换保护现场等操作
多路复用解决了什么：只对有事件发生的客户端连接发起系统调用
多路复用器的实现
目前linux下只有同步模型下的多路复用器


POXIS协议的select



man 2 select
可以看到如下的函数

int pselect(int nfds, fd_set *readfds,]]></description><category></category></item><item><title><![CDATA[Linux-IO模型之NIO]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107169039</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107169039</guid><author>jiushiNeil</author><pubDate>Tue, 07 Jul 2020 15:27:57 +0800</pubDate><description><![CDATA[C10K问题
BIO的弊端
accept阻塞
服务端新建线程调用系统调用clone阻塞
因为内核提供给我们调用的API是阻塞的，所以优化也就是选择新的API
NIO
在kernel层面，比如BIO中用的socket，可通过参数设置成非阻塞

使用man 2 socket 查看系统调用socket函数的设置
可以看到下面这句话，可以对socket设置成非阻塞

SOCK_NONBLOCK   Set the O_NONBLOCK file status flag on the new open file de]]></description><category></category></item><item><title><![CDATA[Linux-IO模型之BIO]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107159110</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107159110</guid><author>jiushiNeil</author><pubDate>Mon, 06 Jul 2020 21:58:27 +0800</pubDate><description><![CDATA[说到IO模型，先来了解几个专用术语：
我们平时说的阻塞或非阻塞是指应用程序在发起 I/O 操作时，是立即返回还是等待。而同步和异步，是指应用程序在与内核通信时，数据从内核空间到应用空间的拷贝，是由内核主动发起还是由应用程序来触发。
有异步阻塞模型吗？
没有，都异步了，还要阻塞？有病吧！
观察IO模型过程中用到的指令：

strace -ff -o out cmd
-ff 捕捉所有线程
-o 捕捉到的每个线程的输出文件以什么开头
cmd 捕捉的命令，比如 java -jar

服务端code
import j]]></description><category></category></item><item><title><![CDATA[Linux-文件IO]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107026929</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107026929</guid><author>jiushiNeil</author><pubDate>Mon, 06 Jul 2020 14:49:15 +0800</pubDate><description><![CDATA[pagecache刷盘策略
1.跟随内核设置
2.每秒一次
3.每操作一次写一次
对应的丢数据就是：
1.丢一个缓冲区
2.丢一秒的数据
3.丢一条数据
那一个缓冲区多大呢？
可以配置是多少字节或者多大比率
根据
vm.dirty_bytes = 0
vm.dirty_ratio = 30
[root@optimize ~]# sysctl -a | grep dirty
sysctl: reading key "net.ipv6.conf.all.stable_secret"
sysctl: readin]]></description><category></category></item><item><title><![CDATA[Linux-网络IO之TCP三次握手阶段]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107044309</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107044309</guid><author>jiushiNeil</author><pubDate>Mon, 06 Jul 2020 10:32:47 +0800</pubDate><description><![CDATA[BIO的连接建立及文件描述符分配
首先准备两台linux：node01和node02，用来做client和server
需要用到的几个命令：

lsof -p 可以看到某一个进程里的文件描述符是否已经有了，以及什么时候才能看到这个文件描述符
netstat -antp 查看内核里面socket的建立过程
tcpdump 抓取网络通信数据包

BIO一些参数介绍：
	//server socket listen property:
    private static final int RECEIVE_BU]]></description><category></category></item><item><title><![CDATA[Linux-文件类型]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/107006191</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/107006191</guid><author>jiushiNeil</author><pubDate>Mon, 29 Jun 2020 19:16:57 +0800</pubDate><description><![CDATA[文件类型
当我们使用命令查看linux目录下的内容时，如下：
[root@optimize ~]# ll
total 4
-rw-------. 1 root root 1246 Jun 11 10:54 anaconda-ks.cfg

左侧第一个字符代表的就是文件类型
-：普通文件(可执行、图片、文本) REG
d：目录
l：链接
b：块设备- 硬盘
c：字符设备- 键盘  CHR
s：socket
p：pipeline
[eventpoll]：
…
示例：
[root@optimize opt]# l]]></description><category></category></item><item><title><![CDATA[mysql gtid格式和存储]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/105439504</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/105439504</guid><author>jiushiNeil</author><pubDate>Sat, 11 Apr 2020 22:54:20 +0800</pubDate><description><![CDATA[什么是 GTID

从MySQL 5.6.5 开始新增了一种基于 GTID 的复制方式。通过 GTID 保证了每个在主库上提交的事务在集群中有一个唯一的ID。这种方式强化了数据库的主备一致性，故障恢复以及容错能力。


GTID (Global Transaction ID)是全局事务ID,当在主库上提交事务或者被从库应用时，可以定位和追踪每一个事务，对DBA来说意义就很大了，我们可以适当的解放出...]]></description><category></category></item><item><title><![CDATA[mysql GTID介绍]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/105461666</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/105461666</guid><author>jiushiNeil</author><pubDate>Sat, 11 Apr 2020 22:52:19 +0800</pubDate><description><![CDATA[GTID是什么，可以用来做什么，以及GTID的格式和存储
GTID生命周期 (未完待续)
GTID自动复制 (未完待续)
使用GTID设置复制 (未完待续)
使用GTID进行故障转移和横向扩展 (未完待续)
使用GTID复制的限制 (未完待续)
操纵GTID的函数示例 (未完待续)


...]]></description><category></category></item><item><title><![CDATA[Linux配置ssh免密码互相通信]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/104956515</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/104956515</guid><author>jiushiNeil</author><pubDate>Wed, 18 Mar 2020 23:01:56 +0800</pubDate><description><![CDATA[假设有3台Linux虚拟机，那么应该如何配置免密码通信呢？
node01，node02，node03
（1）首先在三台机器上配置对本机的ssh免密码登录
ssh-keygen -t rsa
生成本机的公钥，过程中不断敲回车即可，ssh-keygen命令默认会将公钥放在/root/.ssh目录下
cd /root/.ssh
cp id_rsa.pub authorized_keys
将公钥复制为au...]]></description><category></category></item><item><title><![CDATA[二进制基础及位运算]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/103374043</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/103374043</guid><author>jiushiNeil</author><pubDate>Wed, 04 Dec 2019 16:06:09 +0800</pubDate><description><![CDATA[二进制计算
每一位上的数基数的索引次幂相加之和
例如：0101=12º+12²=5
第一位1基数2的索引0次幂+第三位1*基数2的2次幂等于5
其他进制计算等同
十进制转2进制：除2求余法
除2求余倒序表示

简便算法：记住2的10次幂1024内的次幂值


...]]></description><category></category></item><item><title><![CDATA[有符号右移和无符号右移]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/103380525</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/103380525</guid><author>jiushiNeil</author><pubDate>Wed, 04 Dec 2019 09:46:25 +0800</pubDate><description><![CDATA[计算机表示数字正负不是用+ -加减号来表示，而是用最高位数字来表示，0表示正，1表示负
有符号右移
若正数,高位补0,负数,高位补1 -&gt; 一句话概括：高位补符号位


正数
例如：8 &gt;&gt; 2
偶数情况
8的二进制为 0000 0000 0000 0000 0000 0000 0000 1000
右移两位后   0000 0000 0000 0000 0000 0000 000...]]></description><category></category></item><item><title><![CDATA[java类的加载机制]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/103351811</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/103351811</guid><author>jiushiNeil</author><pubDate>Tue, 03 Dec 2019 11:29:19 +0800</pubDate><description><![CDATA[概述
我们平时写的java文件编译后都会生成对应的class文件，那java虚拟机又是如何加载class文件到内存并运行的呢？这些都是本章将要讲解的内容。

与那些在编译时需要进行连接工作的语言不同，在Java语言里面，类型的加载、连接和初始化过程都是在程序运行期间完成的(也就是说是lazyLoading的)，这种策略虽然会令类加载时稍微增加一些性能开销，但是会为Java应用程序提供高度的灵活性，...]]></description><category></category></item><item><title><![CDATA[java类的初始化]]></title><link>https://blog.youkuaiyun.com/jiushiNeil/article/details/74941425</link><guid>https://blog.youkuaiyun.com/jiushiNeil/article/details/74941425</guid><author>jiushiNeil</author><pubDate>Tue, 11 Jul 2017 10:23:54 +0800</pubDate><description><![CDATA[##什么情况下会触发初始化

初始化一个类，包括执行这个类的静态初始化和初始化在这个类中声明的静态字段。根



据Java语言规范，在首次发生下列任意一种情况时，一个类或接口类型T将被立即初始化。





1）T是一个类，而且一个T类型的实例被创建。

2）T是一个类，且T中声明的一个静态方法被调用。

3）T中声明的一个静态字段被赋值。

4）T中声明的一个静态字段被使用，而且这个字段...]]></description><category></category></item></channel></rss>