<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lbhj15h的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/lbhj15h</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; lbhj15h]]></copyright><item><title><![CDATA[C语言学习总结]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109091393</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109091393</guid><author>lbhj15h</author><pubDate>Thu, 15 Oct 2020 09:59:36 +0800</pubDate><description><![CDATA[指针：
可执行程序是由指令、数据和地址组成的。内存单元的地址就是所谓的“指针”的值。指针本身是一种变量，和常见的整型变量、浮点型变量、字符变量等没有什么本质的区别，只是它们的类型和值得含义不同，具有不同的解释方式。在二进制层面上，指针的值实际上就是内存单元的地址，而指针变量又是引用内存单元的值的别名，因此，在语言层面上，指针的值就是变量的地址。
指针的类型为一个类型名和一个字符“”的组合。
int   一个int类型的指针，也即为一个类型为int的指针。
可以使用typedef把不同的指针类型定义，然后..]]></description><category></category></item><item><title><![CDATA[C语言-题目]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109091073</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109091073</guid><author>lbhj15h</author><pubDate>Thu, 15 Oct 2020 09:50:27 +0800</pubDate><description><![CDATA[C语言-题目

单选题：
32位机系统关于sizeof 的使用不正确的是 __
【A】 int count=0;         【B】 int count=0;
sizeof(count);            sizeof int;
【C】 int count=0;          【D】 int count=0;
sizeof count ;             sizeof(int);
【参考答案】B不正确 sizeof作为C语言的关键字，当计算变量的大小时，括号可以省略，但是计算数据类型的]]></description><category></category></item><item><title><![CDATA[C语言-编程题]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109091054</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109091054</guid><author>lbhj15h</author><pubDate>Thu, 15 Oct 2020 09:45:50 +0800</pubDate><description><![CDATA[C语言编程题


链表题

实现函数ListNode *ReverseList(ListNode *pHead);，输入一个单向链表的头节点，反转该链表，并返回反转后链表的头节点；如果输入链表为NULL，或者链表中存在环路，则返回NULL。
已有函数(可直接调用)BOOL CircleInList(ListNode *pList);，判断输入的单向链表是否存在环路；如果输入节点为NULL，返回FALSE。
ListNode类型定义如下：
​	typedef struct list_node_tag
​	{
]]></description><category></category></item><item><title><![CDATA[C语言-改错题]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109091042</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109091042</guid><author>lbhj15h</author><pubDate>Thu, 15 Oct 2020 09:45:24 +0800</pubDate><description><![CDATA[C语言改错题

1、指出错误并****改正****：
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;
#include &lt;stdio.h&gt;
enum { MAX_ALLOCATION = 1000 };
int main(int argc, const char *argv[]) {
char *c_str = NULL;
size_t len;
if (argc == 2) {
​    len = strlen(argv[1]) + 1]]></description><category></category></item><item><title><![CDATA[C语言-填空题]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109091027</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109091027</guid><author>lbhj15h</author><pubDate>Thu, 15 Oct 2020 09:44:42 +0800</pubDate><description><![CDATA[C语言填空题

1、完善以下升序插入排序的代码：
插入排序：通过构建有序序列，对于未排序数据，在已排序序列中从后向前扫描，找到相应位置并插入。
void insertSort(int *a, int n)
{
int tmp = 0, p = 0;
for (int i = 1; i &lt; n; i++)
{
​    tmp = a[i];
​    p = i - 1;
​    while (p &gt;= 0 &amp;&amp; tmp &lt; a[p])
​    {
​      a[p]]></description><category></category></item><item><title><![CDATA[C语言-多选题]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109091015</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109091015</guid><author>lbhj15h</author><pubDate>Thu, 15 Oct 2020 09:44:08 +0800</pubDate><description><![CDATA[C语言多选题

1、若有字符串char *string和缓冲区char buf[MAX_LEN]，string非空，并且缓冲区长度MAX_LEN大于string的长度，则将字符串string复制到缓冲区buf，下列做法正确的是(  AB )
A) sprintf(buf, “%s”, string);
B) strncpy(buf, string, MAX_LEN - 1);
C) snprintf(buf, MAX_LEN,  string);
D) strncpy(buf, string, strlen]]></description><category></category></item><item><title><![CDATA[C语言-单选题]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109090961</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109090961</guid><author>lbhj15h</author><pubDate>Thu, 15 Oct 2020 09:42:46 +0800</pubDate><description><![CDATA[C语言单选题

1、64位系统下，以下代码输出结果是(  B  )
void func ( ) {
char a[10];
int x = (int *)&amp;a[10];
int y = (int *)&amp;a[40];
printf ("%d\n", y - x);
}
A) 8  B) 30  C) 120  D) 以上都不对
2、下列关于字符串拷贝函数说法错误的是( B )
原型声明：
char strcpy(char dest, const char *src);
char *strncp]]></description><category></category></item><item><title><![CDATA[Redis命令]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109068125</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109068125</guid><author>lbhj15h</author><pubDate>Wed, 14 Oct 2020 10:58:06 +0800</pubDate><description><![CDATA[Redis部署
解压
tar -xzvf redis-5.0.5.tar.gz

重命名
mv redis-5.0.5 redis

安装编译
#安装到指定目录
make
make PREFIX=/usr/local/redis install

修改相关配置
#创建存放数据的目录
mkdir -p /data/db_redis
配置文件中“dir ./”修改为“dir /data/db_redis”
#绑定ip修改
配置文件中注释掉“bind 127.0.0.1”
#允许远程访问
配置文件中“protec]]></description><category></category></item><item><title><![CDATA[Linux命令]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109068003</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109068003</guid><author>lbhj15h</author><pubDate>Wed, 14 Oct 2020 10:57:15 +0800</pubDate><description><![CDATA[Linux命令
关机
poweroff

显示隐藏文件
ls/ll -d

显示全部文件
ls/ll -a

使用 du查看某个文件或目录占用磁盘空间的大小
du -ah --max-depth=1

查找文件
查找目录：find /（查找范围） -name '查找关键字' -type d
查找文件：find /（查找范围） -name 查找关键字 -print
-name filename             #查找名为filename的文件

建立快捷方式
view .bashrc 
alias s]]></description><category></category></item><item><title><![CDATA[Mongodb学习-命令]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109067127</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109067127</guid><author>lbhj15h</author><pubDate>Wed, 14 Oct 2020 10:47:50 +0800</pubDate><description><![CDATA[mongodb数据库操作
进入数据库
use erde

认证
db.auth('admin', 'admin')

db.siglib_bin_file.files.find({"key":"value"})

常用操作
查看各个表的容量
db.d1.find().count()
db.https_sni.find().count()
db.ip_database.find().count()
db.dns_ip.find().count()
db.signature_record.find().coun]]></description><category></category></item><item><title><![CDATA[Git学习-命令]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/109067009</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/109067009</guid><author>lbhj15h</author><pubDate>Wed, 14 Oct 2020 10:18:20 +0800</pubDate><description><![CDATA[Git命令
提交Gerrit评审
git push origin HEAD:refs/for/master

直接推入Git库
git push origin HEAD:refs/heads/master

更新代码重新触发修改
git fetch origin master:tmp
git rebase tmp
git commit --amend

已有代码修改，再次修改
git add 修改文件
git commit --amend

git fetch origin master:tmp
git r]]></description><category></category></item><item><title><![CDATA[一个网络数据传输流程的例子]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108884433</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108884433</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 14:20:16 +0800</pubDate><description><![CDATA[一个网络数据传输流程的例子
以使用某app软件为例，来分析它的具体数据传输流程。

DNS

首先，当我们第一次登陆该app时候，需要进行数据初始化，此时，我们需要连接到服务器，我们需要查询DNS服务器来获取域名所对应的IP，下图为DNS请求报文。


图1 DNS请求报文
该报文要通过本地的局域网网关才能将请求报文转发出去，因此我们查找本地路由表，将数据发送往网关。

图2 本地路由表
本地网关为192.168.1.121，因此，我们需要将报文发往121。

ARP

通过查询arp缓存，发现没有存储12]]></description><category></category></item><item><title><![CDATA[TCP分段重组和IP分片重组]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108882811</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108882811</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 11:39:10 +0800</pubDate><description><![CDATA[TCP分段重组过程
​	TCP分段，数据传输到传输层的时候，受MSS（为MTP-IP首部长度）限制，将对数据进行分段。每一段分别添加TCP首部，数据1的长度=MSS-TCP首部长度。
​	TCP重组时，先依次解每一层的头部，到达传输层时，按照之前分段的序列号seq进行报文重组。
​	例如，当前数据总长度为500，MTU=500，TCP头部20字节，IP头部20字节，数据1对应报文的当前序列号seq = 1，则：MSS = 480，sdulen1 = 460，sdulen2 = 40，数据2对应的报文...]]></description><category></category></item><item><title><![CDATA[TCP/IP协议栈相关问题总结]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108882638</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108882638</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 11:36:34 +0800</pubDate><description><![CDATA[TCP/IP协议栈相关问题总结
 


以太网帧有最小长度要求，要求最少有46个字节，而ARP协议请求或应答分组格式固定为28个字节，怎么满足以太网帧要求的最小长度？
答：为了满足以太网帧要求的最小长度，在ARP协议分组报文之后插入填充（pad）字节，通常为18个字节的填充位。


  


IP数据报的检验和是如何计算的？
答：首先把检验和字段置为0，然后对首部中每个16bit进行二进制反码求和，将结果存在检验和字段中，当接收方收到一份IP数据报后，同样对首部中的每个16bit进行二进制反码求和，如果结果]]></description><category></category></item><item><title><![CDATA[HTTPS加密协议学习总结]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108881789</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108881789</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 10:58:42 +0800</pubDate><description><![CDATA[HTTPS协议
1 HTTPS协议基本概念
HTTPS（全称：Hypertext Transfer Protocol over Secure Socket Layer），就是HTTP下加入SSL层，HTTPS的安全基础是SSL，因此加密的详细内容就需要SSL。 它是一个URI scheme（抽象标识符体系），句法类同http，用于安全的HTTP数据传输。https:URL表明它使用了HTTP，但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层（在HTTP与TCP之间）。这个系统的最初研发由网景公]]></description><category></category></item><item><title><![CDATA[HTTP超文本传输协议学习总结]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108881307</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108881307</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 10:38:37 +0800</pubDate><description><![CDATA[HTTP协议
1 HTTP协议基本概念
HTTP是一个属于应用层的面向对象的协议，由于其简捷、快速的方式，适用于分布式超媒体信息系统。
HTTP协议的主要特点可概括如下：
1.支持客户/服务器模式。
2.简单快速：客户向服务器请求服务时，只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单，使得HTTP服务器的程序规模小，因而通信速度很快。
3.灵活：HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以]]></description><category></category></item><item><title><![CDATA[FTP文件传输协议学习总结]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108881181</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108881181</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 10:31:44 +0800</pubDate><description><![CDATA[FTP协议
1.1 FTP协议基本概念
互联网文件传输协议(File Transfer Protocol ,FTP) 标准是在RFC959说明的。该协议定义了一个从远程计算机系统和本地计算机系统之间传输文件的一个标准。一般来说，传输文件的用户需要先经过认证以后才能登录网站，然后方能访问在远程服务器的文件。而大多数的FTP服务器往往提供一个GUEST的公共帐户来允许没有远程服务器的用户可以访问该FTP服务器。
一个FTP会话通常包括五个软件元素的交互。如图1.1展示了FTP的一种基本框架。

图1.1 FTP]]></description><category></category></item><item><title><![CDATA[TCP传输控制协议学习总结]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108880909</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108880909</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 10:21:14 +0800</pubDate><description><![CDATA[TCP传输控制协议
TCP协议是一种面向连接的、可靠的字节流服务。TCP协议提供了多种机制来保证数据传输的可靠性。
1 .TCP报文格式




16位源端口号
16位目的端口号











32位序列号










32位确认号










4位首部长度
保留（6位）
URG
ACK
PSH
RST
SYN
FIN
16位窗口大小


16位TCP检验和
16位紧急指针









选项（若有）










数据（若有）










源端口:标识主机上发起传]]></description><category></category></item><item><title><![CDATA[TCP/IP协议栈学习总结]]></title><link>https://blog.youkuaiyun.com/lbhj15h/article/details/108880470</link><guid>https://blog.youkuaiyun.com/lbhj15h/article/details/108880470</guid><author>lbhj15h</author><pubDate>Wed, 30 Sep 2020 10:04:21 +0800</pubDate><description><![CDATA[*TCP/IP学习总结_1*
*1.TCP/IP协议概述*
*1.1 TCP/IP分层*
通常分不同层次进行开发，每一层负责不同的通信功能。TCP/IP协议族就是一组不同层次上的多个协议的组合。TCP/IP通常被认为是一个四层协议系统。如图1.1所示。

图1.1 TCP/IP协议族4个层次
每一层分别负责不同的通信功能：
链路层通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆（或其他任何传输媒介）的物理接口细节。
网络层，主要是做路由的功能，有时也称作互联网层，处理分组在网络]]></description><category></category></item></channel></rss>