<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[timerzip的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/timerzip</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; timerzip]]></copyright><item><title><![CDATA[幻读（phantom read）详解]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/124647170</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/124647170</guid><author>timerzip</author><pubDate>Sun, 08 May 2022 14:05:04 +0800</pubDate><description><![CDATA[基本定义（也是来自网络）

当某个事务a范围查询数据时，另一个事务b在该范围内插入了数据，当事务a再次范围查询时，会产生幻行（即多了事务b插入的那行数据）。

网络上的其他定义

看看幻读的正确理解


			时间点
			
			
			事务A
			
			
			事务B
			
		
			1
			
			
			开启事务
			
			
			
			
		
			2
			
			
			
			
			
			开启事务
			
		
			3
			
			
			查询数据“张三”，不存在
	]]></description><category></category></item><item><title><![CDATA[转java的第248天：聊聊java的泛型（一）]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/114713664</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/114713664</guid><author>timerzip</author><pubDate>Sat, 13 Mar 2021 23:00:43 +0800</pubDate><description><![CDATA[List&lt;? extends T&gt;

表示元素为T的某个子类，具体是什么子类，不确定。
不可使用add（因为不知道是哪个子类）
可使用get（get出来的是object）

List&lt;? super T&gt;

表示元素为T的某个基类，不确定是哪个基类.
可以使用add，添加T及其子类（因为T及其子类，一定的T的基类的子类）
可使用get（get出来的是object）


...]]></description><category></category></item><item><title><![CDATA[转java的第241天：聊聊java的类型信息]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/114437581</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/114437581</guid><author>timerzip</author><pubDate>Sat, 06 Mar 2021 15:11:20 +0800</pubDate><description><![CDATA[类型信息
所谓类型信息，就是标识这个类的信息：类名是什么？类是怎么构造的？有哪些成员变量和成员函数？有没有继承关系？等等。我们经常会用到多态，java是如何知道一个父类的引用究竟是指向哪个类的呢？靠的就是类型信息。]]></description><category></category></item><item><title><![CDATA[转java的第234天：聊聊内部类]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/114172143</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/114172143</guid><author>timerzip</author><pubDate>Sat, 27 Feb 2021 13:46:48 +0800</pubDate><description><![CDATA[转java的第234天：聊聊内部类

### flag
2020年7月8日，入职第一天就迎来了一个噩耗：用java。这一天已过去234天了，现在的我已经可以熟练的使用java（的ifelse语法）了，不过对更为细节的语法、jvm原理、多线程编程等各方面均需要深入学习。因而我在此告知诸位，本人立帖为证，每日头悬梁锥刺股，努力学习it技术，保持帖子周更。倘若没有做到，那就当我没说过。

# java内部类
所谓内部类，就是类中类。内部类的定义放在了另外一个类中。基本形式如下：
public class Te..]]></description><category></category></item><item><title><![CDATA[快照是什么？]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/106063717</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/106063717</guid><author>timerzip</author><pubDate>Mon, 11 May 2020 22:02:06 +0800</pubDate><description><![CDATA[https://www.cnblogs.com/qcloud1001/p/9322321.html
]]></description><category></category></item><item><title><![CDATA[字符编码]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/99673100</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/99673100</guid><author>timerzip</author><pubDate>Fri, 16 Aug 2019 10:36:48 +0800</pubDate><description><![CDATA[ASCII码值编码英文字符
	Unicode是万国码，可以编码任意字符，但是对于任意字符（即使是英文字符）它都用两个字符来存储，造成浪费。
	utf-8是unicode的一种实现方法，它用变长字符长度来存储不同的字符，例如对于英文字符用一个字符来存储，对于中文字符则用两个字符存储。

...]]></description><category></category></item><item><title><![CDATA[MD5加密算法]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/99672525</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/99672525</guid><author>timerzip</author><pubDate>Fri, 16 Aug 2019 10:15:04 +0800</pubDate><description><![CDATA[一种消息摘要算法，输入二进制内容，对这些内容进行计算，得出一个128位的散列值。
]]></description><category></category></item><item><title><![CDATA[数据库——事务&分布式]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/98652415</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/98652415</guid><author>timerzip</author><pubDate>Tue, 06 Aug 2019 20:47:27 +0800</pubDate><description><![CDATA[事务的概念

事务，我的理解就是一个完整的事件，它可能由许多小的操作组成。比如select选取数据，是事务，select之后继续drop数据二者结合起来也算是一个事务。

事务的特性（ACID）

原子性：事务是一个包含一系列操作的原子操作。事务的原子性确保这些操作全部完成或者全部失败。
	一致性：一旦事务的所有操作结束，事务就被提交。然后你的数据和资源将处于遵循业务规则的一直状态。
	隔离性：因...]]></description><category></category></item><item><title><![CDATA[n个骰子——剑指offer]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/89523229</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/89523229</guid><author>timerzip</author><pubDate>Thu, 25 Apr 2019 19:26:58 +0800</pubDate><description><![CDATA[暴力求解，n个骰子和为s就等于n-1个骰子和分别为s-1~s-6时次数的总和。据此写出代码如下：


int baoli(int n, int s)
{
	if (n &lt; 1)
		return 0;
	if (n == 1)
	{
		if (s &lt; 1 || s &gt; 6)
			return 0;
		else
			return 1;
	}
	int count = 0;
...]]></description><category></category></item><item><title><![CDATA[STL容器的接口]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88794189</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88794189</guid><author>timerzip</author><pubDate>Mon, 25 Mar 2019 14:27:02 +0800</pubDate><description><![CDATA[stack接口：


bool empty() const;
size_type size() const;
reference top(); //reference为引用
const_reference top() const;
void push(const value_type&amp; x);
void pop();


stack默认使用deque来实现。通过stack&lt;T,lis...]]></description><category></category></item><item><title><![CDATA[头文件中使用static关键字]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88741829</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88741829</guid><author>timerzip</author><pubDate>Fri, 22 Mar 2019 15:36:54 +0800</pubDate><description><![CDATA[static关键字主要修饰两种东西：变量和函数。

在头文件中定义static变量和static函数：

变量：众所周知，static变量只能在定义它的文件中使用。这里的文件指的是cpp源文件。如果在头文件中定义了static变量，那么，所有包含这个头文件的源文件都会定义自己的static变量，而不是使用该头文件中的static变量。所以也就造成了，在头文件定义static变量，其他包含头文件的...]]></description><category></category></item><item><title><![CDATA[关于select调用过程的一点理解]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88614340</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88614340</guid><author>timerzip</author><pubDate>Sun, 17 Mar 2019 10:21:43 +0800</pubDate><description><![CDATA[select、poll、epoll的介绍请参考：https://blog.youkuaiyun.com/zymill/article/details/79998593

epoll详解：https://www.cnblogs.com/lojunren/p/3856290.html



其中select实现中讲的select调用步骤，我的理解如下：

1.将设定好的fd_set从用户态拷贝到内核态。监听fd...]]></description><category></category></item><item><title><![CDATA[muduo库的摸索（3）——TCP网络库的结构]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88535407</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88535407</guid><author>timerzip</author><pubDate>Wed, 13 Mar 2019 16:30:03 +0800</pubDate><description><![CDATA[TCP网络库结构如下：



1. TcpServer占用一个主loop线程，来处理新的连接。

2. TcpServer用Acceptor来接受新的连接，Acceptor通过一个channel来监测套接字（channel类参见我另一篇文章）。

3. TcpServer会将建立的新的连接TcpConnection对象，绑定到一个次一级的loop线程，也就是TcpLoopThreadPool里的...]]></description><category></category></item><item><title><![CDATA[SIGPIPE、RST]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88526582</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88526582</guid><author>timerzip</author><pubDate>Wed, 13 Mar 2019 10:15:32 +0800</pubDate><description><![CDATA[理解SIGPIPE的产生：

当一个进程向某个已收到RST的套接字执行写操作时，内核向该进程发送一个SIGPIPE信号。默认行为是终止进程。

理解RST的产生：

当服务器close（而不是shutdown）一个连接时，如果客户端接着向连接发送数据。根据TCP协议的规定，服务器端会响应一个RST给客户端。

理解：

客户可能在读回任何数据之前执行两次针对服务器的写操作，而第一次引起RST，第二...]]></description><category></category></item><item><title><![CDATA[&*迭代器]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88416458</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88416458</guid><author>timerzip</author><pubDate>Tue, 12 Mar 2019 10:57:32 +0800</pubDate><description><![CDATA[vector&amp;lt;int&amp;gt; buffer_{1,2,3};
auto a = &amp;amp;*buffer_.begin();


代码中，*buffer_.begin()，会获取buffer_的首元素的引用，而后的&amp;amp;操作获取该元素的地址。有以下关系


&amp;amp;*buffer_.begin() == &amp;amp;buffer_[0]

关于迭代器，指针，引用的知识点见下：

htt...]]></description><category></category></item><item><title><![CDATA[muduo库的摸索（2）——Reactor结构的类分析]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88379407</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88379407</guid><author>timerzip</author><pubDate>Sun, 10 Mar 2019 15:49:09 +0800</pubDate><description><![CDATA[EventLoop类



Poller类



Channel类



定时器类




]]></description><category></category></item><item><title><![CDATA[makefile的VPATH坑]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/88040842</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/88040842</guid><author>timerzip</author><pubDate>Thu, 28 Feb 2019 18:40:24 +0800</pubDate><description><![CDATA[源问题链接：https://bbs.youkuaiyun.com/topics/380178411

问题：

我的文件目录结构是：
./
makefile
header
globe.h
src
main.c
现在我写的简单makefile的一部分是：
#开始
vpath%.c./src
vpath%.h./header
main.o:main.cglobe.h
.PHONYcl...]]></description><category></category></item><item><title><![CDATA[多文件的linux编译]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/87990445</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/87990445</guid><author>timerzip</author><pubDate>Wed, 27 Feb 2019 21:10:52 +0800</pubDate><description><![CDATA[编译虐我千百遍，我待编译如初恋。

1，艰难的allinone.cc编译。

我想要编译一个单文件allinone.cc。这个文件包含了其他的头文件，目录如下。



为此，我在 shell中输入


g++ allinone.cc -std=c++11 -lmuduo_net -lmuduo_base -lpthread

结果编译失败，报错：



2.原因分析。

虽然allinone.c...]]></description><category></category></item><item><title><![CDATA[code::blocks添加库文件]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/87979493</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/87979493</guid><author>timerzip</author><pubDate>Wed, 27 Feb 2019 16:52:26 +0800</pubDate><description><![CDATA[1. bash命令行


g++ timeclient.cc -std=c++11 -lmuduo_net -lmuduo_base -lpthread

2. 相应的code::blocks设置。

设置-std=c+=11



 设置静态库，直接点击add，输入muduo_net、muduo_base、pthread就可以了。注意对顺序依然有要求，底层的放到下边。

...]]></description><category></category></item><item><title><![CDATA[muduo库的摸索（1）]]></title><link>https://blog.youkuaiyun.com/timerzip/article/details/87976602</link><guid>https://blog.youkuaiyun.com/timerzip/article/details/87976602</guid><author>timerzip</author><pubDate>Wed, 27 Feb 2019 16:24:26 +0800</pubDate><description><![CDATA[muduo库的安装

1. 从https://github.com/chenshuo/muduo下载muduo文件。（只要download会自动打包一个muduo_master.zip文件）

2.接下来是在linux中的命令行了


sudo apt-get install cmake（安装cmake）

sudo apt-get install libboost-dev libboost-te...]]></description><category></category></item></channel></rss>