<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[LittleWhite_Ling的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/LittleWhite_Ling</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; LittleWhite_Ling]]></copyright><item><title><![CDATA[构造函数和初始化列表的执行顺序]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/120608322</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/120608322</guid><author>LittleWhite_Ling</author><pubDate>Mon, 04 Oct 2021 21:19:12 +0800</pubDate><description><![CDATA[先执行基类初始化列表，再执行基类的构造函数，再执行派生类参数初始化列表，再执行派生类的构造函数内。
代码如下：
#include &lt;iostream&gt;

using namespace std;

#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Bound {
    public:
        Bound(int line) {
            cout&lt;&lt;"Bo]]></description><category></category></item><item><title><![CDATA[fread函数使用]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113604297</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113604297</guid><author>LittleWhite_Ling</author><pubDate>Wed, 03 Feb 2021 15:32:55 +0800</pubDate><description><![CDATA[#include &lt;stdio.h&gt;

int main(int argc, const char *argv[])
{
    char b[10];

    FILE *fp = fopen("C:\\Users\\j30008655\\Desktop\\kexin_testcode\\testet\\fread_test\\bin\\test.bin","rb");
    size_t ret_code = fread(b, 10, 1, fp);
    if(ret_code =.]]></description><category></category></item><item><title><![CDATA[字符串数组初始化]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113446121</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113446121</guid><author>LittleWhite_Ling</author><pubDate>Sat, 30 Jan 2021 20:43:14 +0800</pubDate><description><![CDATA[int main(int argc, const char *argv[])
{   
    char *strs[] = {"dog","racecar","car"};

    printf("%s\n", strs[1]);
    int len = strlen(strs[1]);
    printf("len = %d", len);

    return 0;
}

/*
&gt; Executing task: .\bin\demon.exe &lt;

racecar
len =.]]></description><category></category></item><item><title><![CDATA[C语言字符串赋值给数组/char *]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113249530</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113249530</guid><author>LittleWhite_Ling</author><pubDate>Wed, 27 Jan 2021 19:22:20 +0800</pubDate><description><![CDATA[字符串(c语言)：

以“abcd”为例，解释如下：

1. 申请了空间(在常量区)，存放了字符串
2. 在字符串尾加上了'/0'
3. 返回地址

一定记清楚！！



1. 字符串赋值给char * 


int main(int argc, const char *argv[])
{
    char *p1 = "hello";
    printf("p1[0] = %c\n", *p1);
    printf("%s\n", p1);

    char *p2 = NULL;
...]]></description><category></category></item><item><title><![CDATA[静态库和动态库]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113122380</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/113122380</guid><author>LittleWhite_Ling</author><pubDate>Mon, 25 Jan 2021 18:46:05 +0800</pubDate><description><![CDATA[定义：











静态库：这类库的名字一般是libxxx.a，xxx为库的名字。利用静态函数库编译成的文件比较大，因为整个函数库的所有数据都会被整合进目标代码中，他的优点就显而易见了，即编译后的执行程序不需要外部的函数库支持，因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点，因为如果静态函数库改变了，那么你的程序必须重新编译。

动态库：这类库的名字一般是libxxx.M.N.so，同样的xxx为库的名字，M是库的主版本号，N是库的副版本号。当然也可以不要版本号，但名字必须有。相对.]]></description><category></category></item><item><title><![CDATA[vector的 capacity / size / shrink_to_fit 函数使用（上代码看结果）]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112978755</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112978755</guid><author>LittleWhite_Ling</author><pubDate>Fri, 22 Jan 2021 10:30:38 +0800</pubDate><description><![CDATA[#include &lt;iostream&gt;
#include &lt;vector&gt;

int main(int argc, const char *argv[])
{
    int sz = 200;
    std::vector&lt;int&gt; v1;
 
    auto cap = v1.capacity();
    std::cout &lt;&lt; "initial capacity=" &lt;&lt; cap &lt;&lt; '\n';
 
    for (.]]></description><category></category></item><item><title><![CDATA[C++头文件与C头文件（math/string）]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112599980</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112599980</guid><author>LittleWhite_Ling</author><pubDate>Fri, 22 Jan 2021 09:56:40 +0800</pubDate><description><![CDATA[math

“math.h”是C语言中数学函数库，包含我们常用的一些数学计算上会使用到的函数。C++中有对应相同作用的头文件“cmath”，当然C++中两个头文件都可以使用，C++向C兼容。

string

1. #include &lt;string.h&gt;

C语言的头文件，包含比如strcpy之类的字符串处理函数。注意C语言里没有string类的概念，不要弄混。



2. #include &lt;string&gt;

C++的头文件，包含std::string的定义，属于STL范畴

..]]></description><category></category></item><item><title><![CDATA[静态全局变量和全局变量]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112838808</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112838808</guid><author>LittleWhite_Ling</author><pubDate>Fri, 22 Jan 2021 09:48:32 +0800</pubDate><description><![CDATA[静态全局变量和全局变量的区别：

全局变量(外部变量)的说明之前再冠以static就构成了静态的全局变量。

全局变量本身就是静态存储方式， 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。

这两者的区别在于非静态全局变量的作用域是整个源程序， 当一个源程序由多个源文件组成时，非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域， 即只在定义该变量的源文件内有效， 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内，只能为该源文件内的函.]]></description><category></category></item><item><title><![CDATA[C/C++函数传参]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112693648</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112693648</guid><author>LittleWhite_Ling</author><pubDate>Fri, 22 Jan 2021 09:38:35 +0800</pubDate><description><![CDATA[在C语言中我们的解决方案：

如果不想修改我们就直接传递实参，如果对象太大我们就传递指针，并且声明指针是指向const对象的；如果想修改实参的值，我们只能传递实参的指针，然而此时指针就不能用const修饰了。

在C++中，我们仍然可以使用C中的方式，然而也可以使用“引用”方式：如果不想修改实参的值，我们使用const引用（就是“常量引用”）方式，这样就不可以通过引用修改被引用对象的值；如果想修改实参的值，则使用平常性的引用实参就可以了
...]]></description><category></category></item><item><title><![CDATA[一个class的大小计算]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112977540</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/112977540</guid><author>LittleWhite_Ling</author><pubDate>Fri, 22 Jan 2021 09:35:10 +0800</pubDate><description><![CDATA[1. 空类
class A
{
};

void main()
{
  printf("sizeof(A): %d\n", sizeof(A));
  getchar();
}
得到结果为：1。
类的实例化就是给每个实例在内存中分配一块地址。空类被实例化时，会由编译器隐含的添加一个字节。所以空类的size为1。2.虚函数
class A
{
  virtual void FuncA();&lt;br&gt;    virtual void FuncB();
};
得到结果：...]]></description><category></category></item><item><title><![CDATA[C中自动加“\0“的情况]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/111474319</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/111474319</guid><author>LittleWhite_Ling</author><pubDate>Mon, 21 Dec 2020 14:30:32 +0800</pubDate><description><![CDATA[一、‘\0’ 的本质：


'\0'就是8位的00000000，因为字符类型中并没有对应的这个字符，所以这么写。'\0'就是 字符串结束标志。

'\0'是转译字符，意思是告诉编译器，这不是字符0，而是空字符。空字符\0对应的二进制为00000000，而数字0为00110000

原来，在C语言中没有专门的字符串变量，通常用一个字符数组来存放一个字符串。字符串总是以'\0'作为串的结束符。因此当把一个字符串存入一个数组时，也把结束符 '\0'存入数组，并以此作为该字符串是否结束的标志。有了'\0'标志后，.]]></description><category></category></item><item><title><![CDATA[socket()函数用法详解：创建套接字]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/107556689</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/107556689</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 11:03:35 +0800</pubDate><description><![CDATA[socket()函数用法详解：创建套接字

不管是 Windows 还是 Linux，都使用socket() 函数来创建套接字。socket() 在两个平台下的参数是相同的，不同的是返回值。
在《socket是什么》一节中我们讲到了 Windows 和 Linux 在对待 socket 方面的区别。
Linux 中的一切都是文件，每个文件都有一个整数类型的文件描述符；socket 也是一个文件，也有文件描述符。使用 socket() 函数创建套接字以后，返回值就是一个 int 类型的文件描述符。
Wind.]]></description><category></category></item><item><title><![CDATA[TCP套接字----半队列连接和全队列连接]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/107695035</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/107695035</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 11:03:15 +0800</pubDate><description><![CDATA[我们知道当服务器绑定、监听了指定端口后，内核通常会为每一个LISTEN状态的socket维护两个队列：

SYN队列（半连接队列）：由/proc/sys/net/ipv4/tcp_max_syn_backlog指定，表示处于 SYN_RECV 状态的队列
	ACCEPT队列（全连接队列）：由listen()函数的第二个参数 backlog 指定，内核硬限制由 net.core.somaxconn 限制，即实际的值由min(backlog,somaxconn) 来决定。表示已完成连接的队列，等待被 accep]]></description><category></category></item><item><title><![CDATA[套接字类型]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/107556139</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/107556139</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 11:02:56 +0800</pubDate><description><![CDATA[这个世界上有很多种套接字（socket），比如 DARPA Internet 地址（Internet 套接字）、本地节点的路径名（Unix套接字）、CCITT X.25地址（X.25 套接字）等。但本教程只讲第一种套接字——Internet 套接字，它是最具代表性的，也是最经典最常用的。以后我们提及套接字，指的都是 Internet 套接字。
根据数据的传输方式，可以将 Internet 套接字分成两种类型。通过 socket() 函数创建连接时，必须告诉它使用哪种数据传输方式。

Internet ...]]></description><category></category></item><item><title><![CDATA[“并发” 与 “并行” 概念理解]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108362480</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108362480</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 11:02:38 +0800</pubDate><description><![CDATA[个人理解总结：
	
并发指多进程或多线程在逻辑上的同时运行；并行是并发的真子集，即多进程或多线程在真正意义上独立运行在不同的CPU上；
	并发与CPU个数无关，单CPU存在并发，多CPU也存在并发的情况；

	网络搜集理解如下：
	

	深入理解计算机系统CSAPP的回答。
	并发：是说进程B的开始时间是在进程A的开始时间与结束时间之间，我们就说A和B是并发的。
	并行：是并发的真子集，指同一时间两个进程运行在不同的机器上或者同一个机器不同的核心上。
	
	
	只有当CPU至少有两个核心的时候才有可能并..]]></description><category></category></item><item><title><![CDATA[并行和并发的区别]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108363416</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108363416</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 11:02:16 +0800</pubDate><description><![CDATA[并行和并发的区别

并发：

并发（Concurrent），在操作系统中，是指一个时间段中有几个程序都处于已启动运行到运行完毕之间，且这几个程序都是在同一个处理机上运行。

并发不是真正意义上的“同时进行”，只是CPU把一个时间段划分成几个时间片段（时间区间），然后在这几个时间区间之间来回切换，由于CPU处理的速度非常快，只要时间间隔处理得当，即可让用户感觉是多个应用程序同时在进行。如：打游戏和听音乐两件事情在同一个时间段内都是在同一台电脑上完成了从开始到结束的动作。那么，就可以说听音乐和打游戏是并发的。
]]></description><category></category></item><item><title><![CDATA[TCP/IP协议族]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108364603</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108364603</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 11:02:03 +0800</pubDate><description><![CDATA[上节《OSI网络七层模型简明教程》中讲到，目前实际使用的网络模型是 TCP/IP 模型，它对 OSI 模型进行了简化，只包含了四层，从上到下分别是应用层、传输层、网络层和链路层（网络接口层），每一层都包含了若干协议。
协议（Protocol）就是网络通信过程中的约定或者合同，通信的双方必须都遵守才能正常收发数据。协议有很多种，例如 TCP、UDP、IP 等，通信的双方必须使用同一协议才能通信。协议是一种规范，由计算机组织制定，规定了很多细节，例如，如何建立连接，如何相互识别等。

协议仅仅是一种规范，必须由]]></description><category></category></item><item><title><![CDATA[IP、MAC和端口号——网络通信中确认身份信息的三要素]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108365878</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/108365878</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 11:01:44 +0800</pubDate><description><![CDATA[在茫茫的互联网海洋中，要找到一台计算机非常不容易，有三个要素必须具备，它们分别是IP 地址、MAC 地址和端口号。

IP地址

IP地址是Internet Protocol Address 的缩写，译为“网际协议地址”。
目前大部分软件使用 IPv4 地址，但 IPv6 也正在被人们接受，尤其是在教育网中，已经大量使用。
一台计算机可以拥有一个独立的 IP 地址，一个局域网也可以拥有一个独立的 IP 地址（对外就好像只有一台计算机）。对于目前广泛使用 IPv4 地址，它的资源是非常有限的，一台计算机一..]]></description><category></category></item><item><title><![CDATA[gcc编译—inclue文件和库文件链接]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/110522387</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/110522387</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 10:56:12 +0800</pubDate><description><![CDATA[gcc编译器搜索头文件路径

   本文介绍在Linux下gcc编译器是如何找到程序中的头文件的。头文件是一种文本文件，使用文本编辑器将代码编写好之后，以扩展名.h保存就行了。头文件中一般放一些重复使用的代码，例如函数声明、变量声明、常数定 义、宏的定义等等。当使用＃include语句将头文件引用时，相当于将头文件中所有内容，复制到＃include处。

1.#include有两种写法形式， 分别是：

#include &lt;&gt;  ： 直接到系统指定的某些目录中去找某些头文件。

#in...]]></description><category></category></item><item><title><![CDATA[new/delete和mallco/free的区别，及malloc详细解释]]></title><link>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/110522169</link><guid>https://blog.youkuaiyun.com/LittleWhite_Ling/article/details/110522169</guid><author>LittleWhite_Ling</author><pubDate>Thu, 03 Dec 2020 10:43:44 +0800</pubDate><description><![CDATA[一、区别

其实在使用的大部分场景下，两者是可以通用的，但是我们还是要知道他两的区别。

1、malloc与free是c++/c语言的标准函数，new/delete是C++的运算符。

2、他们都可用于申请动态内存和释放内存。new/delete比malloc/free更加智能，其实底层也是执行的malloc/free。为啥说new/delete更加的智能？因为new和delete在对象创建的时候自动执行构造函数，对象消亡之前会自动执行析构函数。

既然new/delete的功能完全覆盖了malloc和fr]]></description><category></category></item></channel></rss>