<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[kidck的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kidck</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kidck]]></copyright><item><title><![CDATA[MySQL学习笔记二之事务]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/106314136</link><guid>https://blog.youkuaiyun.com/kidck/article/details/106314136</guid><author>kidck</author><pubDate>Sun, 24 May 2020 13:44:41 +0800</pubDate><description><![CDATA[标题
]]></description><category></category></item><item><title><![CDATA[MySQL学习笔记一之基础架构]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/106314080</link><guid>https://blog.youkuaiyun.com/kidck/article/details/106314080</guid><author>kidck</author><pubDate>Sun, 24 May 2020 13:40:01 +0800</pubDate><description><![CDATA[MySQL学习笔记一之架构@TOC
架构图如下

Server层
连接器

负责跟客户端建立连接、获取权限、维持和管理连接
客户端如果太长时间没有动静，连接器会将其自动断开，时间由参数wait_timeout控制，默认值八小时
长连接是指连接成功后，如果客户端持续有请求，则一直使用同一个连接

使用长连接后内存会涨的特别快，因为mysql执行过程中临时使用的内存是管理在连接对象里的，这些资源会在连接断开的时候才释放

解决方案：

定期断开长连接
5.7以上的版本，可以在每次执行一个比较大的操作之后通过执行]]></description><category></category></item><item><title><![CDATA[好久不见]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/78500071</link><guid>https://blog.youkuaiyun.com/kidck/article/details/78500071</guid><author>kidck</author><pubDate>Fri, 10 Nov 2017 15:22:18 +0800</pubDate><description><![CDATA[晃晃悠悠如今已到了2017年11月10日，翻看之前的东西真是感慨万千。上一篇博客，还是在大四找工作的时候写的，想想找工作的时候是真的辛苦啊，天天看面经看算法看乱七八糟的东西就为了能找到一个工作。现在，完成了从学生到程序员身份的转换，领域上还从C++语言转到了PHP语言，现在是一个PHPer啦！咦很神奇的发现自己的csdn上还多了几个粉丝？哈哈虽然不知道是不是僵尸粉。工作之后，感觉有了很大的不同，学]]></description><category></category></item><item><title><![CDATA[小数在计算机中的表示]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/78456132</link><guid>https://blog.youkuaiyun.com/kidck/article/details/78456132</guid><author>kidck</author><pubDate>Mon, 06 Nov 2017 14:42:49 +0800</pubDate><description><![CDATA[运行如下代码得到结果


你猜是多少呢？


嗯你没有看错得到的答案是57.
所以为什么会出现这种情况呢？首先需要探究的是0.58这个数字是如何在计算机中存储的。我们一般用下面格式表示浮点数。



S
P
M




其中S是符号位,P是阶码,M是尾数。
单精度浮点数是32位，双精度浮点数是64位。





S

P

M

表示公]]></description><category></category></item><item><title><![CDATA[《深度探索C++对象模型》学习笔记之Data语意学]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51340476</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51340476</guid><author>kidck</author><pubDate>Sat, 07 May 2016 22:26:50 +0800</pubDate><description><![CDATA[在写这个之前，我为毛觉得莫名激动，为何上篇文章阅读量都破三百了，难道是提到了什么了不得的关键字啊啊哈哈哈我不啰嗦了 
你觉得一下代码结果是什么呢？#include<iostream>
using namespace std;
class A
{
};
class Y:public virtual A
{};
class X:public virtual A
{};
class Z:public X,]]></description><category></category></item><item><title><![CDATA[《Linux内核设计的艺术》学习笔记(一)从开机加电到执行main函数之前的过程]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51337988</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51337988</guid><author>kidck</author><pubDate>Sat, 07 May 2016 14:57:52 +0800</pubDate><description><![CDATA[分享一个最近丢了手机心塞到爆炸的我,现在穷的只剩下满脑子的智慧了,好了,我要开始学习了. 
首先,搭建一个linux0.11的系统环境,贴出结果图. 
从开机加电到执行main函数之前的过程. 
1. 启动BIOS,准备实模式下的中断向量表和中断服务程序; 
2.  从启动盘加载操作系统程序到内存,加载操作系统程序的工作就是利用第一步中断服务程序实现的; 
3.  为执行32位的main函数做过渡工]]></description><category></category></item><item><title><![CDATA[《More Effective C++》学习笔记之一引用与指针]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51314145</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51314145</guid><author>kidck</author><pubDate>Wed, 04 May 2016 13:23:41 +0800</pubDate><description><![CDATA[《More Effective C++》学习笔记之一引用与指针
引用没有空引用 
首先要认识到，在任何情况下都不能使用指向空值的引用，引用应该被初始化，这也就意味着使用引用代码的效率比使用指针的要高，因为在使用引用之前不需要测试它的合法性。
指针可以被重新赋值 
这也就是说，指针可以被重新赋值以指向另一个不同的对象，但是引用则总是指向在初始化时被指向的对象，以后不能改变。
重载某个操作符时应该使用引]]></description><category></category></item><item><title><![CDATA[《第一行代码》学习笔记之服务]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51302689</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51302689</guid><author>kidck</author><pubDate>Tue, 03 May 2016 10:40:38 +0800</pubDate><description><![CDATA[好吧我也不知道为什么自己要写这篇文章，大概这就是传说中的被逼无奈吧。 
提到android的多线程编程，那么不得不提的就是服务（service）。服务是android实现程序后台运行的解决方案，其运行不依赖于用户界面，需要注意的一点是服务并不是运行在一个独立的进程当中的，而是依赖于创建服务时所在的应用程序进程，当某个应用程序进程被杀掉时，所有依赖于该进程的服务也会停止运行。这个就说到这里了。 
多线]]></description><category></category></item><item><title><![CDATA[基础知识之在浏览器中输入网址之后发生了什么]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51295822</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51295822</guid><author>kidck</author><pubDate>Mon, 02 May 2016 12:00:36 +0800</pubDate><description><![CDATA[1. 首先是输入网址　　以www.facebook.com为例1. 浏览器查找域名对应IP2.1 浏览器发起DNS查询请求：
在广域网中，我们是基于IP地址进行通信的。但通常客户访问的是一个网址，为此，我们需要先得到网址对应的IP地址，这就需要域名服务系统将域名转换成IP地址。如下图所示，在客户端浏览器中输入网址：http://www.cricode.com时，浏览器会根据本地客户端DNS服务器配置]]></description><category></category></item><item><title><![CDATA[《linux高性能服务器编程》学习笔记（三）之I/O复用,信号,定时器]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51277306</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51277306</guid><author>kidck</author><pubDate>Thu, 28 Apr 2016 20:23:08 +0800</pubDate><description><![CDATA[今天是个好日子!所以让我们在这大好的日子里来做点有意义的事情吧!比如说,学习,哈哈,我真是熬得一手好鸡汤. 
服务器通常需要处理三类事件:I/O事件,信号和定时事件.这就是今天要开这篇文章的原因. 
unix下有可用的5种I/O模型: 
 - 阻塞式I/O; 
 - 非阻塞式I/O; 
 - I/O复用; 
 - 信号驱动式I/O; 
 - 异步I/O； 
首先,我们来聊聊I/O事件. 
I/0复用]]></description><category></category></item><item><title><![CDATA[基础知识之深入分析malloc和new]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51170116</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51170116</guid><author>kidck</author><pubDate>Sat, 16 Apr 2016 20:58:50 +0800</pubDate><description><![CDATA[今天这篇文章，主要是分析malloc和new的区别。1. malloc()函数1.1 malloc的全称是memory allocation，中文叫动态内存分配。 
原型：extern void *malloc(unsigned int num_bytes);  
说明：分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针，分配失败返回空指针NULL。当内存不再使用时，应]]></description><category></category></item><item><title><![CDATA[linux进程间通讯学习总结]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51148855</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51148855</guid><author>kidck</author><pubDate>Thu, 14 Apr 2016 09:27:03 +0800</pubDate><description><![CDATA[管道,信号,消息队列,共享内存,信号量,套接口. 
管道:可用于具有亲缘关系进程间的通信，有名管道克服了管道没有名字的限制，因此，除具有管道所具有的功能外，它还允许无亲缘关系进程间的通信； 
信号:信号是比较复杂的通信方式，用于通知接受进程有某种事件发生，除了用于进程间通信外，进程还可以发送信号给进程本身； 
消息队列:消息队列是消息的链接表，包括Posix消息队列system V消息队列。有足够权]]></description><category></category></item><item><title><![CDATA[《linux高性能服务器编程》学习笔记（二）之拥塞控制]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51147467</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51147467</guid><author>kidck</author><pubDate>Wed, 13 Apr 2016 22:25:42 +0800</pubDate><description><![CDATA[上一篇写着写着电脑就崩了,估计嫌我太罗嗦了啦哈哈哈 
换个地方继续罗嗦,可可,我就是这么一个罗嗦的人~~~~啦啦啦 
今天让我们接着上篇开始唠叨. 
拥塞控制: 
由于接收方缓存的限制，发送窗口不能大于接收方接收窗口。在报文段首部有一个字段就叫做窗口(rwnd)，这便是用于告诉对方自己的接收窗口，可见窗口的大小是可以变化的。那么窗口的大小是如何变化的呢？TCP 对于拥塞的控制总结为“慢启动、加性增、]]></description><category></category></item><item><title><![CDATA[《linux高性能服务器编程》学习笔记（一）]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51146690</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51146690</guid><author>kidck</author><pubDate>Wed, 13 Apr 2016 21:00:36 +0800</pubDate><description><![CDATA[一。tcp/ip协议族 
四层协议系统： 
    应用层：ping telnet OSPF DNS(用户空间) 
    传输层：TCP UDP SCTP(流控制传输协议) 
    网络层:ICMP  IP 
    数据链路层:ARP   RARP 数据链路层：实现了网卡家口的网络驱动程序，以处理数据在物理媒介上的传输。网络层：实现数据包的选路和转发。由于通信的两台主机一般不是直接相连的，而是]]></description><category></category></item><item><title><![CDATA[基础知识之内存管理基础]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/51057121</link><guid>https://blog.youkuaiyun.com/kidck/article/details/51057121</guid><author>kidck</author><pubDate>Mon, 04 Apr 2016 16:30:59 +0800</pubDate><description><![CDATA[内存分配方式有三种: 
(1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static 变量。 
(2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 
(3) 从堆上分配,亦称动态内存分配。程序在运行的时]]></description><category></category></item><item><title><![CDATA[《STI源码剖析》学习笔记之空间配置器]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/50889893</link><guid>https://blog.youkuaiyun.com/kidck/article/details/50889893</guid><author>kidck</author><pubDate>Mon, 14 Mar 2016 21:08:48 +0800</pubDate><description><![CDATA[C++中的new包含两个动作：调用operaotr new分配内存；然后调用构造函数构建对象。delete也包含两个过程：调用析构函数；然后调用operator delete释放内存。 
在STL中allocator将这两个动作分开。分配内存由alloc:allocate()负责，释放内存由alloc:deallocate()负责，创建对象由::construct()负责，析构对象由::destro]]></description><category></category></item><item><title><![CDATA[Linux下gcc,g++,makefile的使用]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/50880026</link><guid>https://blog.youkuaiyun.com/kidck/article/details/50880026</guid><author>kidck</author><pubDate>Sun, 13 Mar 2016 20:42:44 +0800</pubDate><description><![CDATA[流程： 
预处理->编译->汇编->链接。 
预处理文件.i; 
编译文件.s; 
汇编文件.o; 
-E 选项指示编译器仅对输入文件进行预处理。当这个选项被使用时，预处理器的输出被送到标准输出而不是存储在文件里。 
-S 
选项告诉gcc在为c代码产生了汇编语言文件后停止编译。GCC产生的汇编语言文件的缺省扩展名是.s 
-c 
选项告诉gcc仅把源代码编译为目标代码。缺省时建立的目标代码文件有一]]></description><category></category></item><item><title><![CDATA[C++学习笔记之多态与虚函数，虚函数表]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/50868238</link><guid>https://blog.youkuaiyun.com/kidck/article/details/50868238</guid><author>kidck</author><pubDate>Sat, 12 Mar 2016 22:57:59 +0800</pubDate><description><![CDATA[封装，继承和多态是C++语言的三大特性。而虚函数的作用就是实现多态性，多态性又包含编译时的多态和运行时的多态两大类，即静态多态性和动态多态性。 
静态多态性是指定义在一个类或一个函数中的同名函数，根据参数表区别语义，并通过静态联编来实现，静态联编在编译时就已经确定好了。 
动态多态性： 
当程序发现虚函数名前的关键字virtual后，会自动将其作为动态联编处理，即在程序运行时动态的选择合适的成员函数]]></description><category></category></item><item><title><![CDATA[C语言笔记之关键字（二）]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/50849190</link><guid>https://blog.youkuaiyun.com/kidck/article/details/50849190</guid><author>kidck</author><pubDate>Thu, 10 Mar 2016 18:54:32 +0800</pubDate><description><![CDATA[柔性数组： 
    结构中的最后一个元素是未知大小的数组，这就叫做柔性数组成员，但结构体中的柔性数组成员之前必须至少一个其他成员。sizeof返回的这种结构的大小是不包括柔性数组的内存。包含柔性数组成员的结构用malloc()函数进行内存的动态分配，并且分配的内存应该大于结构的大小，以适应柔性数组的预期大小。typedef struct st_type
{
    int i;
    int a]]></description><category></category></item><item><title><![CDATA[C语言笔记之关键字（一）]]></title><link>https://blog.youkuaiyun.com/kidck/article/details/50847549</link><guid>https://blog.youkuaiyun.com/kidck/article/details/50847549</guid><author>kidck</author><pubDate>Thu, 10 Mar 2016 16:01:29 +0800</pubDate><description><![CDATA[register： 
    请求编译器尽可能的将变量存储在CPU内部寄存器，提高访问效率。补充：寄存器是一块一块小的存储空间，其存取速度比内存（大地址）要快得多，离CPU很近。register变量可能不存放在内存中，所以不能用取地址运算符 
static： 
    修饰变量，但又分为局部变量和全局变量，但都存在内存的静态区，不过作用域不同。前者在函数体里面定义的，之鞥在这个函数里调用了，即使该函]]></description><category></category></item></channel></rss>