<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Zero's Zone]]></title><description><![CDATA[迟到的一堆博客]]></description><link>https://blog.youkuaiyun.com/hl_zzl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; hl_zzl]]></copyright><item><title><![CDATA[vector的reserve的使用（避免内存重新分配以及内存分配的方式）]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84944494</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84944494</guid><author>hl_zzl</author><pubDate>Mon, 10 Dec 2018 18:40:43 +0800</pubDate><description><![CDATA[文章目录vector的reserve的作用Demo：对比使用reserve的区别Demo运行结果分析新的疑问：大于capacity指定之后的动态分配重新分配空间后内存地址的变化

vector的reserve的作用
之前提到vector中不断的push_back，会进行内存的重新自动分配的问题
（详见：https://blog.youkuaiyun.com/hl_zzl/article/details/847...]]></description><category></category></item><item><title><![CDATA[vector中push_back后iterator失效程序崩溃的原因]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84798804</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84798804</guid><author>hl_zzl</author><pubDate>Tue, 04 Dec 2018 21:05:58 +0800</pubDate><description><![CDATA[vector的push_back操作
在c++ reference中，对push_back的描述如下：
void push_back（const value_type＆val）;
void push_back（value_type &amp;amp;amp;amp;&amp;amp;amp;amp; val）;

Add element at the end
Adds a new element at the end of the vector...]]></description><category></category></item><item><title><![CDATA[I/O多路复用的select、poll，以及epoll的区别]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84778574</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84778574</guid><author>hl_zzl</author><pubDate>Mon, 03 Dec 2018 20:12:38 +0800</pubDate><description><![CDATA[问题提出
在Linux2.6中，加入了新的api：epoll，对比以前使用select和poll，epoll的增加使得性能大大提升，这是如何实现的？epoll的工作模式有哪几种？其内部原理是什么？

相关
文件描述符：索引值，指向记录表，当程序打开或者创建一个文件时，内核向进程返回一个文件描述符。
在网络编程中，很多函数是阻塞的，利用IO复用可以用非阻塞的形式来执行代码。同时处理读写、监听多端口等...]]></description><category></category></item><item><title><![CDATA[CDN的关键技术（内容路由、内容分发、内容存储、内容管理）]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84776093</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84776093</guid><author>hl_zzl</author><pubDate>Mon, 03 Dec 2018 17:48:00 +0800</pubDate><description><![CDATA[CDN的关键技术主要有内容路由技术、内容分发技术、内容存储技术、内容管理技术等。
随着宽带网络和宽带流媒体应用的兴起，CDN(通常被称为内容分发网络Content distribution network，有时也被称作内容传递网络Contentdeliverynetwork)作为一种提高网络内容，特别是提高流媒体内容传输的服务质量、 节省骨干网络带宽的技术，在国内外得到越来越广泛的应用。

一、内...]]></description><category></category></item><item><title><![CDATA[C++多线程的原子操作、线程阻塞]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84640760</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84640760</guid><author>hl_zzl</author><pubDate>Thu, 29 Nov 2018 21:55:59 +0800</pubDate><description><![CDATA[头文件#include &amp;lt;Thread&amp;gt;及原子操作
在C++11中，&amp;lt;Thread&amp;gt;头文件包含了Thread类，提供线程的管理。
原子操作：不可被中断的一个或者一系列操作，这些操作要一次性执行完毕，或者一个都不执行。


多线程存在的问题
在多线程中，由于进程的多个线程都是共享该进程的所有资源，那么如果有多个线程访问同一个资源时，可能会出现问题。
如果多个线程都是只读操作，...]]></description><category></category></item><item><title><![CDATA[线程安全、C++多线程的管理（detach、join、get_id）]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84637415</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84637415</guid><author>hl_zzl</author><pubDate>Thu, 29 Nov 2018 18:06:28 +0800</pubDate><description><![CDATA[线程安全
线程安全函数：当一个函数被多个并发线程反复调用的时候，它的结果始终是正确的
一般线程不安全的情况，是由于同一个进程的不同线程共享进程内存空间中的全局/静态存储区和堆，如果一个函数中包含全局变量和静态变量，那么可能会线程不安全，导致程序错误。但是如果对全局变量和静态变量的操作只有读，没有修改的话，也可以将这个函数看做是线程安全的。

C++多线程（C++11）
多线程demo
C++11的...]]></description><category></category></item><item><title><![CDATA[如何获取vector的一个迭代器iterator的地址]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84575713</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84575713</guid><author>hl_zzl</author><pubDate>Tue, 27 Nov 2018 23:56:23 +0800</pubDate><description><![CDATA[在使用vector时，使用*iterator可以读出迭代器指向vector中的值，那如果想读出iterator的地址，该怎么表示呢？
思考
对于常规的指针而言，可以用int *ptr来表示一个指向整型变量的指针，*ptr即指向整型变量的值，ptr即地址
代码如下
#include &amp;lt;iostream&amp;gt;
using namespace std;

int main(){
	int i =...]]></description><category></category></item><item><title><![CDATA[vector中使用erase操作删除迭代器的问题（避免野指针）以及end的地址变化]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84570652</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84570652</guid><author>hl_zzl</author><pubDate>Tue, 27 Nov 2018 17:48:32 +0800</pubDate><description><![CDATA[在vector中，使用erase来剔除对应的元素，但是使用iterator的时候需要注意不要让iterator变成野指针

vector的erase
在C++ Reference 中，对erase的说明如下：
vector::erase - C++ Reference http://www.cplusplus.com/reference/vector/vector/erase/
//c++98
i...]]></description><category></category></item><item><title><![CDATA[面试知识点总结（Part 2：数据库、网络、操作系统、Nginx）]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84558598</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84558598</guid><author>hl_zzl</author><pubDate>Mon, 26 Nov 2018 23:41:33 +0800</pubDate><description><![CDATA[本文涉及：

数据库：范式、索引、MySQL主备
网络：TCP/IP（三次握手、滑动窗口）、流量控制和拥塞控制、网络层次结构、http状态码、局域网通信原理、http和https、http1.0和http1.1、浏览器访问页面的整个过程
操作系统：线程和进程、进程通信、进程状态转化、银行家算法、死锁，Linux命令（cd、ls、top、ps、netstat -anp、lsof -i、grep、ca...]]></description><category></category></item><item><title><![CDATA[面试知识点——数据库]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84558371</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84558371</guid><author>hl_zzl</author><pubDate>Mon, 26 Nov 2018 23:16:02 +0800</pubDate><description><![CDATA[1. SQL事务


事务概念
事务是一种机制、是一种操作序列，它包含了一组数据库操作命令，
这组命令要么全部执行，要么全部不执行。因此事务是一个不可分割的工作逻辑单元。
在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。
这特别适用于多用户同时操作的数据通信系统。
eg:订票、银行、保险公司以及证券交易系统等。


事务属性1.
事务4大属性：

原子性(Atomicity):事务是...]]></description><category></category></item><item><title><![CDATA[面试知识点总结（Part 1）]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84558340</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84558340</guid><author>hl_zzl</author><pubDate>Mon, 26 Nov 2018 23:14:06 +0800</pubDate><description><![CDATA[总结一下自己之前面试的时候准备的和问到的知识点。写的比较浅，还需要自己深入展开
1.自我介绍
专业及研究方向、小论文，项目经验

2.排序算法的原理
常见的排序算法主要是冒泡排序、插入排序、选择排序、快速排序、归并排序、堆排序、希尔排序
稳定性：如果a在b之前，且a=b，排序之后a仍然在b之前。称为稳定。
冒泡排序（稳定）
前后两个相邻的元素对比和调整位置，小上大下，
时间复杂度：最好O(n)，当...]]></description><category></category></item><item><title><![CDATA[C++基类的虚析构函数(virtual)与内存泄露]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84345428</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84345428</guid><author>hl_zzl</author><pubDate>Thu, 22 Nov 2018 17:23:39 +0800</pubDate><description><![CDATA[一、C++ 内存泄露
C++本身没有GC机制，所以需要开发人员做好内存管理。一般情况，C++内存泄露主要原因为：
1. 在构造和析构函数中，没有匹配new和delete；
2. 没有将基类的析构函数定义为virtual（如果没有定义virtual的话，析构函数只清理自己的成员）


二、虚析构函数的作用
下面根据三个场景来说明基类中virtual虚析构函数的作用

1. 派生类指针指向派生类对象
...]]></description><category></category></item><item><title><![CDATA[C++ Primer（第五版） 第三章Chap.3 课后代码题 答案]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84329007</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84329007</guid><author>hl_zzl</author><pubDate>Wed, 21 Nov 2018 20:00:57 +0800</pubDate><description><![CDATA[C++ Primer （第五版）》
最近在补基础，在看《C++ Primer （第五版）》，先把 第三章Chap.3 自己写的代码题发上来。。不定期更新
3.4
#include &amp;amp;lt;iostream&amp;amp;gt; 
#include &amp;amp;lt;string&amp;amp;gt;
using namespace std;

int main(){
	string str1, str2;
	cin &amp;amp;gt;&amp;amp;gt;]]></description><category></category></item><item><title><![CDATA[多维数组中下标的含义]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84306131</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84306131</guid><author>hl_zzl</author><pubDate>Tue, 20 Nov 2018 17:15:42 +0800</pubDate><description><![CDATA[多维数组
一、多维数组定义
  数组名，代表数组的第一个元素存放的地址，对于int arr[10]; 来说，arr即指向arr[0]地址。
定义一个多维数组:
	int matrix[3][4] = {0,1,2,3, 4,5,6,7, 8,9,10,11};

  数组的元素是顺序存储的。把这个二维数组理解为矩阵的话，matrix即3行4列的矩阵。（矩阵的概念只是更好的理解二维数组，数据在内存中...]]></description><category></category></item><item><title><![CDATA[指针、指针常量、常量指针的概念和区分]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84294810</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84294810</guid><author>hl_zzl</author><pubDate>Tue, 20 Nov 2018 12:33:24 +0800</pubDate><description><![CDATA[在学习指针的时候，经常会遇到指针常量、常量指针这两个概念。
指针常量： 就是说指针自己是常量，指针本身的地址不能变，但是指针指向地址的值可以变
常量指针： 指针指向地址的值，是常量不能修改。但是指针本身可以修改，可以让指针指向其他地址。
这两个概念比较绕，下面通过代码对他们进行区分。
指针：
#include &amp;amp;amp;lt;iostream&amp;amp;amp;gt;
using namespace std;
int ma...]]></description><category></category></item><item><title><![CDATA[Unix/Linux的用户态与内核态]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/84191554</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/84191554</guid><author>hl_zzl</author><pubDate>Sat, 17 Nov 2018 19:20:46 +0800</pubDate><description><![CDATA[一、Unix/Linux的体系架构
  Linux操作系统的体系架构分为用户态和内核态。
  内核：本质是一种软件，控制计算机的硬件资源，并提供给上层应用程序运行的环境。
  用户态：上层应用程序的活动空间。为了是上层应用能访问CPI资源、存储资源、I/O资源等，内核必须为上层应用提供访问的接口：系统调用。
  系统调用：是OS的最小功能单位，库函数通过对系统调用的封装，将简单的业务逻辑呈现给上层...]]></description><category></category></item><item><title><![CDATA[C++中 string作为参数的传递（string类型的引用 ）]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/83747469</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/83747469</guid><author>hl_zzl</author><pubDate>Mon, 05 Nov 2018 12:46:25 +0800</pubDate><description><![CDATA[C++ string作为参数的传递（string类型的引用 ）
在传递参数的时候，如果参数是string类型，可以用string类型的引用，减少内存的拷贝。
例如：
void func(const string&amp;amp; para){}
int main(int agrc, char **argv){
	//...
	string str = &quot;test&quot;;
	func(test);
	//......]]></description><category></category></item><item><title><![CDATA[Xshell中vim编辑时，数字小键盘不能用的解决办法]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/83542547</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/83542547</guid><author>hl_zzl</author><pubDate>Tue, 30 Oct 2018 15:23:14 +0800</pubDate><description><![CDATA[问题：
后台开发人员经常使用Xshell来访问远程服务器，在用vim（或vi）编辑文件的时，使用小键盘数字键的时候，可能会输入一堆字母和换行，并不是数字。

修改：
1.修改会话属性

2.选择类别“终端”-VT模式
3.选择“初始数字键盘模式”为“设置为普通”。

确定即可。

...]]></description><category></category></item><item><title><![CDATA[用uint64来表示IP+Port]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/83380772</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/83380772</guid><author>hl_zzl</author><pubDate>Thu, 25 Oct 2018 17:32:17 +0800</pubDate><description><![CDATA[uint64_t
这是uint64在&amp;lt;stdint.h&amp;gt;(/usr/include/stdint.h)中的定义
/* Unsigned.  */
typedef unsigned char           uint8_t;
typedef unsigned short int      uint16_t;
#ifndef __uint32_t_defined
typedef uns...]]></description><category></category></item><item><title><![CDATA[C++ —— 封装(1)]]></title><link>https://blog.youkuaiyun.com/hl_zzl/article/details/83246287</link><guid>https://blog.youkuaiyun.com/hl_zzl/article/details/83246287</guid><author>hl_zzl</author><pubDate>Mon, 22 Oct 2018 01:14:14 +0800</pubDate><description><![CDATA[（部分内容来自慕课网）
类和对象

根据不同的目的抽象不同的信息
封装：选择性暴露 访问限定符：public、protected、private
对象实例化
从栈中实例化（自动回收）

从堆中实例化（需要手动将申请的内存释放）

对象的访问
栈中使用

栈中使用

new申请一个对象，使用完之后需要delete，并指向NULL
Demo

定义了一个类，通过栈和堆两种不同的方式对类的对象进行实例化...]]></description><category></category></item></channel></rss>