<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[H_Expect的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/H_Expect</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; H_Expect]]></copyright><item><title><![CDATA[第一个只出现一次的字符]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/101170889</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/101170889</guid><author>H_Expect</author><pubDate>Sun, 22 Sep 2019 20:41:01 +0800</pubDate><description><![CDATA[题目描述：

在一个字符串(0&lt;=字符串长度&lt;=10000，全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1（需要区分大小写）。

这道题在面试的时候被问到，当时只写出来时间复杂度为O(N^2)的代码，面试官说时间复杂度太大，让我优化一下，结果没有写出来最优代码。

回来一翻剑指offer才发现是原题（面试题50），太后悔了，都怪自己没有好好看书！！...]]></description><category></category></item><item><title><![CDATA[数组中只出现一次的两个数字]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/101170613</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/101170613</guid><author>H_Expect</author><pubDate>Sun, 22 Sep 2019 20:17:49 +0800</pubDate><description><![CDATA[题目描述：

一个整型数组里除了两个数字之外，其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。

解题思路：

（1）将整个数组的数字从头到尾异或，得到一个结果数字

（2）找到结果数字二进制表示中最右边为1的位

（3）根据（2）中找到的位置，判断数组中每个数字该位置是否为1，将数组分为两组，这样每组数字中都有一个只出现一次的数字

（4）将分好的两组数字分别异或，最终各得到一个数字...]]></description><category></category></item><item><title><![CDATA[合并两个排序的链表]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/100128670</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/100128670</guid><author>H_Expect</author><pubDate>Wed, 28 Aug 2019 23:28:47 +0800</pubDate><description><![CDATA[问题描述：

输入两个单调递增的链表，输出两个链表合成后的链表，当然我们需要合成后的链表满足单调不减规则。

对于这个问题，可以有两种解法：一是递归实现，而是非递归实现。

代码如下：


    //递归实现
    ListNode* Merge(ListNode* pHead1, ListNode* pHead2)
    {
        if(pHead1 == NULL)
     ...]]></description><category></category></item><item><title><![CDATA[IP地址及划分子网]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/99999211</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/99999211</guid><author>H_Expect</author><pubDate>Fri, 23 Aug 2019 23:52:41 +0800</pubDate><description><![CDATA[目录

IP地址

IP地址的分类

IP地址的分类

点分十进制记法

常用的三种类别的IP地址

IP地址和硬件地址

划分子网

从两级IP地址到三级IP地址

子网掩码

子网掩码的应用

默认子网掩码

子网划分的方法

IP地址

是在互联网上给主机编址的方式，为每个计算机分配一个在全世界范围是唯一的32位的标识符，这样不但能够对计算机进行识别，还能进行信息共享。

IP地址的分类

...]]></description><category></category></item><item><title><![CDATA[HTTP协议为什么是无状态的？如何让HTTP“有状态”？]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/99967490</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/99967490</guid><author>H_Expect</author><pubDate>Wed, 21 Aug 2019 17:33:25 +0800</pubDate><description><![CDATA[在面试中被问到HTTP协议是有状态还是无状态的，当场就有点懵，因为不会就没答出来。还是得总结一下啵！

一、HTTP协议的状态

HTTP是一种无状态协议，即服务器不保留与客户交易时的任何状态。

也就是说，上一次的请求对这次的请求没有任何影响，服务端也不会对客户端上一次的请求进行任何记录处理。

二、HTTP协议的无状态性带来的问题：

用户登录后，切换到其他界面，进行操作，服务器端是无法判断是...]]></description><category></category></item><item><title><![CDATA[Linux | 线程同步--信号量、互斥锁和条件变量]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/99841269</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/99841269</guid><author>H_Expect</author><pubDate>Tue, 20 Aug 2019 20:10:35 +0800</pubDate><description><![CDATA[一、线程

线程是程序中完成一个独立任务的完整执行序列，即一个可调度的实体。

Linux线程库：

Linux上两个最有名的线程库是 LinuxThreads 和NPTL。

用户可以使用如下命令来查看当前系统上所使用的的线程库


getconf GNU_LIBPTHREAD_VERSION

（我查了下自己的，发现我系统上使用的线程库是NPTL2.12）



二、线程同步

多线程程序...]]></description><category></category></item><item><title><![CDATA[MySQL--事务]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/99607927</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/99607927</guid><author>H_Expect</author><pubDate>Fri, 16 Aug 2019 12:14:07 +0800</pubDate><description><![CDATA[什么是事务？

事务由单独单元的一个或多个SQL语句组成，在这个单元中，每个MySQL语句是相互依赖的。而整个单独单元作为一个不可分割的整体，如果单元中某条SQL语句一旦执行失败或产生错误，整个单元将会回滚。所有受到影响的数据将返回到事物开始以前的状态；如果单元中的所有SQL语句均执行成功，则事物被顺利执行。

1. 为什么要讲InnoDB的事务呢？

严格上来说，事务必须同时满足4个特性，即通常...]]></description><category></category></item><item><title><![CDATA[MySQL--索引]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/99598919</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/99598919</guid><author>H_Expect</author><pubDate>Wed, 14 Aug 2019 20:37:37 +0800</pubDate><description><![CDATA[索引的概念

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分)，它们包含着对数据表里所有记录的引用指针。

更通俗的说，数据库索引好比是一本书前面的目录，能加快数据库的查询速度。

索引的建立是基于字段的（存储引擎的建立是基于表的）。

一、基于两种存储引擎的索引

1. 基于MyISAM的索引

底层实现为B+树；

数据和索引分离开，是非聚集索引；

叶子节点上存放数据...]]></description><category></category></item><item><title><![CDATA[MySQL--存储引擎]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/99572575</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/99572575</guid><author>H_Expect</author><pubDate>Wed, 14 Aug 2019 19:42:14 +0800</pubDate><description><![CDATA[存储引擎

是一种基于表的对于文件的存取机制

1. MyISAM

不支持外键，不支持事务，支持全文索引；

对于一些在线分析处理操作速度快，特点是表锁设计；

采用非聚集索引的方式；

文件组成：.myd 存放数据 

         .myi 存放索引

2. InnoDB

支持外键，支持事务，不支持全文索引；

主要是面向在线事务处理方面的应用，特点是行锁...]]></description><category></category></item><item><title><![CDATA[Git的安装及使用]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/99056586</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/99056586</guid><author>H_Expect</author><pubDate>Sat, 10 Aug 2019 11:36:42 +0800</pubDate><description><![CDATA[Git

是一个开源的分布式版本控制系统，可以有效、高速地处理从很小到非常大的项目版本管理。Git 是Linus Torvalds为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

安装Git 

最早Git是在Linux上开发的，很长一段时间内，Git也只能在Linux和Unix系统上跑。不过，慢慢地有人把它移植到了 Windows上。现在，Git可以在Linux、Un...]]></description><category></category></item><item><title><![CDATA[MD5算法实现原理]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/98882739</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/98882739</guid><author>H_Expect</author><pubDate>Thu, 08 Aug 2019 23:04:48 +0800</pubDate><description><![CDATA[最近知道了一个加密算法，在校验文件、验证签名安全等很有用。整理一下关于MD5的相关知识。

（我不是知识的创造者，我只是知识的搬运工╭(●｀∀´●)╯）

MD5消息摘要算法

（MD5 Message-Digest Algorithm）

是一种被广泛使用的密码散列函数，可以产生出一个128位（16字节）的散列值（hash value），用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维...]]></description><category></category></item><item><title><![CDATA[Linux | TCP拥塞控制原理]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/98513532</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/98513532</guid><author>H_Expect</author><pubDate>Mon, 05 Aug 2019 21:49:48 +0800</pubDate><description><![CDATA[在学习TCP拥塞控制之前，我想向大家分享两个知识点。不知道大家有没有跟我一样的困惑，我们整天说着网络协议、TCP/IP协议了的，那么协议到底是什么呢？（是计算机领域的协议啦，不是其他方面的）


协议：为进行网络中的数据交换而建立的规则、标准或约定称为网络协议，简称为协议。

另外，还有一个专业术语“协议栈”，那么，这个又是什么呢？


协议栈：网络中各层协议的总和；由于网络各层画在一起很像一个栈...]]></description><category></category></item><item><title><![CDATA[C++ | 顺序容器（vector、list、deque）]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/98473988</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/98473988</guid><author>H_Expect</author><pubDate>Sun, 04 Aug 2019 21:21:02 +0800</pubDate><description><![CDATA[C++标准模板库提供三种顺序容器：vector，list 和deque。

vector 类和 deque 类是以数组为基础的，list 类是以双向链表为基础的。

1.vector

图1 vector底层结构

如图1所示，矢量 vector 类提供顺序表。下标运算符[ ] 有效。

矢量可以用来实现队列、堆栈、列表和其他更复杂的结构。

vector支持随机访问迭代子 。vector的迭...]]></description><category></category></item><item><title><![CDATA[C++ | 继承]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/98256230</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/98256230</guid><author>H_Expect</author><pubDate>Fri, 02 Aug 2019 23:46:00 +0800</pubDate><description><![CDATA[继承作为C++三大特性之一，有着举足轻重的地位。

下面是关于继承的一些知识点，可以帮助我们更好地学习和理解继承！！

1. 继承的本质：代码复用 

2. 继承和派生



3. 派生类继承了基类的什么?

派生类继承了基类除构造函数和析构函数以外的所有成员

4. 派生类的内存布局

如下图，base为基类，derive为派生类，派生类的内存布局如右边图形所示：



在命令界面查看...]]></description><category></category></item><item><title><![CDATA[Linux | 三种I/O函数（select，poll和epoll）]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/98092641</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/98092641</guid><author>H_Expect</author><pubDate>Thu, 01 Aug 2019 20:32:30 +0800</pubDate><description><![CDATA[在Linux下，实现IO复用的系统调用主要有 select，poll 和 epoll。

1. select

用途：在一段时间内，监听用户感兴趣的文件描述符上的可读、可写和异常等事件。

（1）函数原型：


int select(int nfds, struct fd_set *readfds, struct fd_set *writefds,

struct fd_set *execptfd...]]></description><category></category></item><item><title><![CDATA[HTTP与HTTPS的区别]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/97951514</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/97951514</guid><author>H_Expect</author><pubDate>Wed, 31 Jul 2019 19:50:29 +0800</pubDate><description><![CDATA[HTTP与HTTPS的概念

1. HTTP

HTTP，超文本传输协议，是互联网上应用最为广泛的一种网络协议，是一个客户端和服务器端请求和应答的标准（TCP），用于从WWW服务器传输超文本到本地浏览器的传输协议，它可以使浏览器更加高效，使网络传输减少。

（1）HTTP请求方法



（2）HTTP协议的响应

响应由三个部分组成：状态行、消息报头、响应正文。

（3）HTTP应答状态码及状态信...]]></description><category></category></item><item><title><![CDATA[数值的整数次方]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/97810941</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/97810941</guid><author>H_Expect</author><pubDate>Tue, 30 Jul 2019 19:36:22 +0800</pubDate><description><![CDATA[题目描述：

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

解题思路：

这个题要求类似于库函数pow的功能。

1. 在编写代码前，首先需要考虑三种情况：

（1）输入的指数大于0；

（2）输入的指数等于0；

（3）输入的指数小于0；

在数学中，我们学过任何数的0次方都为1；任何数的1次方都为它本身。

2. 考虑完可能出...]]></description><category></category></item><item><title><![CDATA[高性能服务器程序框架3——并发模式]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/97797448</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/97797448</guid><author>H_Expect</author><pubDate>Tue, 30 Jul 2019 18:51:21 +0800</pubDate><description><![CDATA[在探讨并发模式前，我们需要知晓什么是并发编程。

并发编程的目的：让程序“同时”执行多个任务，提高效率。

当一个程序是计算密集型时，并发编程并没有优势，反而由于任务的切换使效率降低。

但是，当一个程序是I/O密集型时，采用并发编程会极大地提高CPU的利用率。

因为I/O操作的速度远远小于CPU的计算速度，所以让程序阻塞于I/O操作上会浪费大量的CPU时间。而并发编程可以让阻塞于I/O操作的线...]]></description><category></category></item><item><title><![CDATA[高性能服务器程序框架2——事件处理模式]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/97671633</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/97671633</guid><author>H_Expect</author><pubDate>Mon, 29 Jul 2019 20:28:55 +0800</pubDate><description><![CDATA[服务器程序通常需要处理三类事件：I/O事件、信号事件、定时事件。

那我就有了一点疑惑，服务器是怎么来处理这些事件的呢？

所以今天呢，就来说说两种高效的事件处理模式：Reactor模式和Proactor模式。

通常使用同步I/O模型(select，poll，epoll 等)用来实现Reactor模式，而异步(aio_read 或aio_write 等)用来实现Proactor模式，不过还可以使...]]></description><category></category></item><item><title><![CDATA[高性能服务器程序框架1——I/O模型]]></title><link>https://blog.youkuaiyun.com/H_Expect/article/details/97617836</link><guid>https://blog.youkuaiyun.com/H_Expect/article/details/97617836</guid><author>H_Expect</author><pubDate>Sun, 28 Jul 2019 23:46:58 +0800</pubDate><description><![CDATA[在学习Linux高性能服务器程序框架时，学到了I/O模型。

Linux下的五种I/O模型：

阻塞I/O（blocking I/O）
	非阻塞I/O （nonblocking I/O）
	I/O复用（I/O multiplexing）
	信号驱动I/O （(SIGIO)signal driven I/O ）
	异步I/O （asynchronous I/O
关于同步与异步，阻塞与非阻塞的概念，在...]]></description><category></category></item></channel></rss>