<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m00ndown]]></title><description><![CDATA[Just Write IT]]></description><link>https://blog.csdn.net/sumaoqing123</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; sumaoqing123]]></copyright><item><title><![CDATA[docker笔记]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/123485612</link><guid>https://blog.csdn.net/sumaoqing123/article/details/123485612</guid><author>sumaoqing123</author><pubDate>Mon, 14 Mar 2022 18:55:57 +0800</pubDate><description><![CDATA[容器是一个进程，这个进程与机器上的其他进程进行了隔离。对于linux来说，隔离技术使用的是namespace和cgroup。

镜像包含容器的文件系统，所以镜像中必须有运行应用所需的依赖。

停止容器： docker stop xxx
删除容器： docker rm xxx
如果容器还在运行，可以强制删除容器： docker rm -f xxx

创建镜像： `docker build -t 镜像名称 .`

创建命名卷： docker volume create xx
使用命名卷： docker run ]]></description><category></category></item><item><title><![CDATA[Spring使用三级缓存解决循环依赖]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/123485053</link><guid>https://blog.csdn.net/sumaoqing123/article/details/123485053</guid><author>sumaoqing123</author><pubDate>Mon, 14 Mar 2022 18:22:26 +0800</pubDate><description><![CDATA[创建单例bean的三个主要步骤：1. 实例化。2. 填充属性。3. 初始化。
第一级缓存：singletonObjects，存放经过初始化后的bean。当通过名字获取bean的时候，如果这个名字对应的bean在第一级缓存中，则直接从第一级缓存中获取返回，这样就不会导致多次创建bean了。
第二级缓存：earlySingletonObjects，存放不完整的bean，对象就是最终的对象，但是对象的属性可能不完整。当填充依赖对象的时候，先从一级二级缓存中查找，如果找到了，则直接拿出来赋值。如果没找到，则使用三级]]></description><category></category></item><item><title><![CDATA[王爽汇编13-17]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/88366163</link><guid>https://blog.csdn.net/sumaoqing123/article/details/88366163</guid><author>sumaoqing123</author><pubDate>Sat, 09 Mar 2019 14:53:40 +0800</pubDate><description><![CDATA[CPU执行int n指令，相当于引发一个n号中断的中断过程。

在PC机系统中，和CPU通过总线相连的芯片除各种存储器外，还有以下3种芯片。
1. 各种接口卡（比如，网卡、显卡）上的接口芯片，他们控制接口卡进行工作。
2. 主板上的接口芯片，CPU通过他们对部分外设进行访问。
3. 其他芯片，用来存储相关的系统信息，或进行相关的输入输出处理。
这些芯片的特点：
1. 都和CPU的总线相连。
2. ...]]></description><category></category></item><item><title><![CDATA[王爽汇编11-12]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/88365206</link><guid>https://blog.csdn.net/sumaoqing123/article/details/88365206</guid><author>sumaoqing123</author><pubDate>Sat, 09 Mar 2019 13:49:25 +0800</pubDate><description><![CDATA[CPU内部的寄存器中，有一种特殊的寄存器（对于不同的处理器，个数和结构都可能不同），具有以下3种作用：
1. 用来存储相关指令的某些执行结果；
2. 用来为CPU执行相关命令提供行为依据；
3. 用来控制CPU的相关工作方式；
这种特殊的寄存器在8086CPU中，被称为标志寄存器。8086CPU的标志寄存器有16位，其中存储的信息通常被称为程序状态字（PSW）。

ZF:
零标志位，它记录相关指令...]]></description><category></category></item><item><title><![CDATA[ssh 加密之前的过程]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/88323148</link><guid>https://blog.csdn.net/sumaoqing123/article/details/88323148</guid><author>sumaoqing123</author><pubDate>Thu, 07 Mar 2019 22:44:14 +0800</pubDate><description><![CDATA[当tcp连接建立后，双方都要发送identification string，格式为：
SSH-protoversion-softwareversion SP comments CR LF

在发送完identification string之后，会进行 key exchange。

兼容性：
在ssh2.0之前的版本没有正式的文档。
old client, new server:
服务端应该有一个...]]></description><category></category></item><item><title><![CDATA[ssl笔记]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/88208423</link><guid>https://blog.csdn.net/sumaoqing123/article/details/88208423</guid><author>sumaoqing123</author><pubDate>Tue, 05 Mar 2019 22:14:00 +0800</pubDate><description><![CDATA[ssl使用rsa算法的握手阶段：
1. alice给出协议版本号、一个客户端生成的随机数、以及客户端支持的加密方法。
2. bob确认双方使用的加密方法，并给出数字证书、以及一个服务器生成的随机数。
3. alice确认数字证书有效，然后生成一个新的随机数（Premaster secret），并使用数字证书中的公钥加密这个随机数，发给bob。
4. bob使用自己的私钥，获取alice发来的随机数...]]></description><category></category></item><item><title><![CDATA[rsa笔记]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/88101194</link><guid>https://blog.csdn.net/sumaoqing123/article/details/88101194</guid><author>sumaoqing123</author><pubDate>Mon, 04 Mar 2019 09:53:56 +0800</pubDate><description><![CDATA[互质的一些特征：
1. 任意两个质数构成互质关系，比如13和61。
2. 一个数是质数，另一个数只要不是前者的倍数，两者就构成互质关系，比如3和10。
3. 如果两个数之中，较大的那个数是质数，则两者构成互质关系，比如97和57。
4. 1和任意一个自然数是都是互质关系，比如1和99。
5. p是大于1的整数，则p和p-1构成互质关系，比如57和56。
6. p是大于1的奇数，则p和p-2构成互质...]]></description><category></category></item><item><title><![CDATA[王爽汇编9-10]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/87902860</link><guid>https://blog.csdn.net/sumaoqing123/article/details/87902860</guid><author>sumaoqing123</author><pubDate>Sun, 24 Feb 2019 14:20:07 +0800</pubDate><description><![CDATA[转移指令：
可以修改IP，或同时修改CS和IP的指令统称为转移指令。
8086CPU的转移行为有以下几类：
1. 只修改IP时，称为段内转移，比如： jmp ax。
2. 同时修改CS和IP时，称为段间转移，比如：jmp 1000:0.
由于转移指令对IP的修改范围不同，段内转移又分为：短转移和近转移。
短转移IP的修改范围为-128~127。
近转移IP的修改范围为-32768~32767。

...]]></description><category></category></item><item><title><![CDATA[王爽汇编7-8]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/87892542</link><guid>https://blog.csdn.net/sumaoqing123/article/details/87892542</guid><author>sumaoqing123</author><pubDate>Sat, 23 Feb 2019 15:06:48 +0800</pubDate><description><![CDATA[1. 在8086CPU中，只有4个寄存器可以用在&quot;[...]&quot;中来进行内存单元的寻址：bx, si, di, bp。
2. 在[...]中，这4个寄存器可以单个出现，或只能以4种组合出现：bx和si, bx和di, bp和si, bp和di。
3. 只要在[...]中使用寄存器bp，而指令中没有显性地给出段地址，段地址就默认在ss中。

在没有寄存器名存在的情况下，用操作符X ptr 指明内存单元...]]></description><category></category></item><item><title><![CDATA[王爽汇编5-6]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/87830610</link><guid>https://blog.csdn.net/sumaoqing123/article/details/87830610</guid><author>sumaoqing123</author><pubDate>Wed, 20 Feb 2019 23:02:50 +0800</pubDate><description><![CDATA[[bx]表示一个内存单元，它的偏移地址在bx中。只有bx可以这样写，ax,cx,dx不可以。
在masm中，mov al,[0]会解释为mov al, 0，为了要表达从内存中读取数据，则要写成mov al, ds:[0]

CPU执行loop指令的时候，要进行两步操作：
1. (cx) = (cx) - 1
2. 判断cx中的值，不为零则转至标号处执行程序，如果为零则向下执行。

在汇编语言中，标...]]></description><category></category></item><item><title><![CDATA[王爽汇编3-4]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/87738392</link><guid>https://blog.csdn.net/sumaoqing123/article/details/87738392</guid><author>sumaoqing123</author><pubDate>Tue, 19 Feb 2019 22:15:00 +0800</pubDate><description><![CDATA[比如我们要读取10000H单元的内容，可以用如下的程序段进行：
mov bx, 1000
mov ds, bx
mov al,[0]
为什么8086CPU不支持将数据直接送入段寄存器的操作？这属于8086CPU硬件设计的问题，我们只要知道这一点就行了。

add和sub指令同mov一样，都有两个操作对象。
mov 寄存器，数据
mov 寄存器，寄存器
mov 寄存器，内存单元
mov 内存单元，寄...]]></description><category></category></item><item><title><![CDATA[王爽汇编1-2]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/87561978</link><guid>https://blog.csdn.net/sumaoqing123/article/details/87561978</guid><author>sumaoqing123</author><pubDate>Sun, 17 Feb 2019 22:16:48 +0800</pubDate><description><![CDATA[每一种微处理器，由于硬件设计和内部结构的不同，就需要用不同的电平脉冲来控制，使它工作。所以每一种微处理器都有自己的机器指令集，也就是机器语言。

汇编语言由以下3类指令组成：
1. 汇编指令： 机器码的助记符，有对应的机器码。
2. 伪指令：没有对应的机器码，由编译器执行，计算机并不执行。
3. 其他符号：如+、-、*、/等，由编译器识别，没有对应的机器码。
汇编语言的核心是汇编指令，它决定了汇编...]]></description><category></category></item><item><title><![CDATA[linux秘钥保留服务笔记]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/86756646</link><guid>https://blog.csdn.net/sumaoqing123/article/details/86756646</guid><author>sumaoqing123</author><pubDate>Sun, 03 Feb 2019 11:11:00 +0800</pubDate><description><![CDATA[一个Key有如下属性：
序列号，Key类型，描述（又叫名字），荷载（又叫数据），访问权限，过期时间，引用数量。

Key类型：
Key类型的name字段，name以小数点开头的Key类型是保留的Key类型。
内核提供了几个类型，主要有如下几种：
keyring，keyring和key的关系类似目录与文件的关系。
user，荷载上限为32767，
logon，类似user，但是不提供用户态的读方法。...]]></description><category></category></item><item><title><![CDATA[实战Java虚拟机笔记 9-10]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/83479443</link><guid>https://blog.csdn.net/sumaoqing123/article/details/83479443</guid><author>sumaoqing123</author><pubDate>Sun, 28 Oct 2018 22:36:07 +0800</pubDate><description><![CDATA[class文件的结构并不是一成不变的，随着Java虚拟机的不断发展，总是不可避免地会对class文件结构做出一些调整，但是其基本的结构和框架是非常稳定的。

class文件的结构：
魔数、小版本号、大版本号、常量池、访问标记、
当前类、
父类、实现的接口、类的字段、类的方法、类的属性。

ClassFile {
u4 magic;
u2 minor_version;
u2 major_versio...]]></description><category></category></item><item><title><![CDATA[实战Java虚拟机笔记 7-8]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/82971316</link><guid>https://blog.csdn.net/sumaoqing123/article/details/82971316</guid><author>sumaoqing123</author><pubDate>Mon, 08 Oct 2018 17:44:39 +0800</pubDate><description><![CDATA[不变性可以提高多线程访问的性能。因为对象不可变，因此对于所有线程都是只读的，多线程访问时，即使不加同步也不会产生数据的不一致，故减小了系统开销。

浅堆：表示一个对象结构所占用的内存大小。
深堆：表示一个对象被GC回收后，可以真实释放的内存大小。
实际大小：表示一个对象所能触及的所有对象的浅堆大小之和。与深堆相比，似乎这个在日常开发中更为直观和被人接受，但实际上，这个概念和垃圾回收无关。

支配树...]]></description><category></category></item><item><title><![CDATA[实战Java虚拟机笔记 5-6]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/82909078</link><guid>https://blog.csdn.net/sumaoqing123/article/details/82909078</guid><author>sumaoqing123</author><pubDate>Sun, 30 Sep 2018 14:26:57 +0800</pubDate><description><![CDATA[串行回收器是指使用单线程进行垃圾回收的回收器。每次回收时，串行回收器只有一个工作线程，对于并行能力较弱的计算机来说，串行回收器的专注性和独占性往往有更好的性能表现。串行回收器可以在新生代和老年代使用，根据作用于不同的堆空间，分为新生代串行回收器和老年代串行回收器。
在串行收集器进行垃圾回收时，java应用程序中的线程都需要暂停，等待垃圾回收的完成。
新生代串行收集器使用复制算法。
老年代串行收集器...]]></description><category></category></item><item><title><![CDATA[实战Java虚拟机笔记 3-4]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/82791388</link><guid>https://blog.csdn.net/sumaoqing123/article/details/82791388</guid><author>sumaoqing123</author><pubDate>Thu, 20 Sep 2018 18:00:42 +0800</pubDate><description><![CDATA[常用Java虚拟机参数
-XX:+PrintGC，只要遇到GC，就会打印日志。
-XX:+PrintGCDetails，可以打印出更加详细的信息。
-XX:+PrintHeapAtGC，会在每次GC前后分别打印堆的信息。
-XX:+PrintGCTimeStamps，会在每次GC发生时，额外输出GC发生的时间。
-Xloggc:aaaaaaaaaa.log 将gc日志打印到文件。

-verbos...]]></description><category></category></item><item><title><![CDATA[实战Java虚拟机笔记 1-2]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/82744884</link><guid>https://blog.csdn.net/sumaoqing123/article/details/82744884</guid><author>sumaoqing123</author><pubDate>Mon, 17 Sep 2018 16:36:08 +0800</pubDate><description><![CDATA[Hotspot虚拟机

Java虚拟机的基本结构
类加载子系统、方法区、Java堆、直接内存、Java栈、本地方法栈、PC寄存器、垃圾回收系统、执行引擎。
类加载子系统负责从文件系统或者网络中加载Class信息，加载的类信息存放于一块称为方法区的内存空间。除了类的信息外，方法区中可能还会存放运行时常量池信息，包括字符串字面量和数字常量。
直接内存在Java堆外，因此它的大小不会直接受限于Xmx指定...]]></description><category></category></item><item><title><![CDATA[linux后台任务 初步]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/82683532</link><guid>https://blog.csdn.net/sumaoqing123/article/details/82683532</guid><author>sumaoqing123</author><pubDate>Thu, 13 Sep 2018 10:08:28 +0800</pubDate><description><![CDATA[前台任务变成后台任务的两种方法：
1. 执行命令的时候加上&amp;amp;
2. 正在运行的前台任务，按ctrl + z，然后执行bg。（bg是让最近一个暂停的后台任务继续执行）

后台任务两个特点：
1. 继承当前session的stdout和stderr。因此后台任务的所有输出依然会同步地在命令行下显示。
2. 不继承当前session的stdin。无法向这个任务输入指令了。如果它试图读取标准输入，...]]></description><category></category></item><item><title><![CDATA[nmcli 初步]]></title><link>https://blog.csdn.net/sumaoqing123/article/details/82660528</link><guid>https://blog.csdn.net/sumaoqing123/article/details/82660528</guid><author>sumaoqing123</author><pubDate>Wed, 12 Sep 2018 14:03:15 +0800</pubDate><description><![CDATA[RHEL7上管理网络的服务是 NetworkManager.

旧的网络管理服务是network，只能在systemctl下使用：
systemctl start|stop|restart|status network

在RHEL7上，NetworkManager先启动，然后/etc/init.d/network启动，并且检查NetworkManager以避免冲突。
NetworkManager...]]></description><category></category></item></channel></rss>