<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[李江林的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/impossble_2017</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; impossble_2017]]></copyright><item><title><![CDATA[IPSec协议技术分析文档]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/158926972</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/158926972</guid><author>impossble_2017</author><pubDate>Wed, 11 Mar 2026 15:13:09 +0800</pubDate><description><![CDATA[IPSec（IP Security，IP安全协议）是IETF定义的【网络层安全协议簇】，是IPv6的强制内置安全机制，在IPv4中为可选扩展，旨在为IP报文提供端到端的安全防护，对上层协议（TCP/UDP/ICMP等）完全透明。]]></description><category></category></item><item><title><![CDATA[TTC协议（TTS即ORACLE DATA）协议分析]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/150608065</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/150608065</guid><author>impossble_2017</author><pubDate>Fri, 22 Aug 2025 13:09:14 +0800</pubDate><description><![CDATA[定义 (输出): 在 `DESCRIBE` (可选) 或第一次 `FETCH` 之后，服务器使用 `0x22` (DEFINE) 参数描述每个返回列（名称、数据类型、最大长度等）。其他常见操作码: `0x04` (描述信息), `0x05` (错误信息), `0x07` (状态信息), `0x0A` (认证), `0x0E` (提交/回滚), `0x4B` (LOB 操作) 等。`0x02`: OCI 函数调用 (通常用于 SQL 操作，如 `PARSE`, `EXECUTE`, `FETCH`)。]]></description><category></category></item><item><title><![CDATA[TNS（ORACLE）协议分析]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/150606638</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/150606638</guid><author>impossble_2017</author><pubDate>Fri, 22 Aug 2025 11:44:50 +0800</pubDate><description><![CDATA[这是一个复杂的结构，包含目标数据库服务名、发起方和接收方的TNS协议版本、全局数据库名、字符集、协议特性协商数据（如`SDU`/`TDU`大小）等。可以在`tnsnames.ora`和`listener.ora`中配置更大的值（例如`SDU=32767`）以提高大批量数据传输的效率。例如，`CONNECT`和`ACCEPT`包包含连接描述符信息，而`DATA`包包含实际的SQL语句或结果集。`0x0020`: 等待服务器响应 (``TTC`` ``Piggyback`` ``Status``)]]></description><category></category></item><item><title><![CDATA[leetcode top100之两数之和（时间复杂度O(n)）]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/125682669</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/125682669</guid><author>impossble_2017</author><pubDate>Tue, 12 Jul 2022 20:39:11 +0800</pubDate><description><![CDATA[leetcode top100之两数之和（时间复杂度O(n)）]]></description><category></category></item><item><title><![CDATA[如何使用wireshark分析mongodb协议，windows 源码编译 wireshark-3.4.7]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/124234856</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/124234856</guid><author>impossble_2017</author><pubDate>Sun, 17 Apr 2022 20:33:24 +0800</pubDate><description><![CDATA[]]></description><category></category></item><item><title><![CDATA[剑指offer JZ76 删除链表中重复的节点]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/122066735</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/122066735</guid><author>impossble_2017</author><pubDate>Tue, 21 Dec 2021 16:47:07 +0800</pubDate><description><![CDATA[描述

在一个排序的链表中，存在重复的结点，请删除该链表中重复的结点，重复的结点不保留，返回链表头指针。 例如，链表 1-&gt;2-&gt;3-&gt;3-&gt;4-&gt;4-&gt;5 处理后为 1-&gt;2-&gt;5

数据范围：链表长度满足 1 &lt;= n &lt;=1000 ，链表中的值满足 1&lt;=val&lt;=1000

进阶：空间复杂度O(n) ，时间复杂度 O(n)

描述

给定的排序列表会有三种情况：

 1、pHead == NULL,...]]></description><category></category></item><item><title><![CDATA[剑指offer JZ18 删除链表的节点]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/122049436</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/122049436</guid><author>impossble_2017</author><pubDate>Mon, 20 Dec 2021 20:37:26 +0800</pubDate><description><![CDATA[描述

给定单向链表的头指针和一个要删除的节点的值，定义一个函数删除该节点。返回删除后的链表的头节点。

1.此题对比原题有改动

2.题目保证链表中节点的值互不相同

3.该题只会输出返回的链表和结果做对比，所以若使用 C 或 C++ 语言，你不需要 free 或 delete 被删除的节点

数据范围:

0&lt;=链表节点值&lt;=10000

0&lt;=链表长度&lt;=10000



思路

给定的定向链表会有三种情形：

 1、head == NULL 即...]]></description><category></category></item><item><title><![CDATA[DNS协议报文详解]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/117039914</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/117039914</guid><author>impossble_2017</author><pubDate>Wed, 19 May 2021 19:48:46 +0800</pubDate><description><![CDATA[我们通常使用机器的域名来访问这台机器，而不是直接使用其IP地址，比如访问因特网上的各种网站。那么如何将机器的域名转换成IP地址呢？这就需要使用DNS域名解析服务。

一、DNS查询和应答报文详解

  DNS是一套分布式的域名服务系统。每个DNS服务器上都存放着大量的机器名和IP地址 的映射，并且是动态更新的。DNS查询和应答报文的格式如下表格所示：

0                        15 16        ...]]></description><category></category></item><item><title><![CDATA[C语言 基础知识之static（static是什么，static的好处，static的使用和作用）]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/116772612</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/116772612</guid><author>impossble_2017</author><pubDate>Fri, 14 May 2021 12:51:23 +0800</pubDate><description><![CDATA[一、static是什么？

 static是C/C++中的修饰符，可以用来修饰变量，也可以用来修饰函数。

二、static的好处是什么？

 1、隐藏变量或函数、隔离错误，有利于模块化程序

    在编程中，难免会用到全局变量，全局变量的作用域是整个源程序，当一个源程序由多个源文件组成时，全局变量在所有的源文件中都是有效的。如果希望全局变量仅限于在本源文件中使用，在其他源文件中不能引用，也就是说限制其作用域只在定义该变量的源文件内有效，而在同一源程序的其他源文件中不能使用，这时，就可以通过在...]]></description><category></category></item><item><title><![CDATA[C语言 基础知识之const（const是什么，const的作用，const的使用）]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/116377599</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/116377599</guid><author>impossble_2017</author><pubDate>Wed, 05 May 2021 12:12:23 +0800</pubDate><description><![CDATA[一、const是什么

  const是C/C++中的类型修饰符。

二、const的作用

  1、对变量声明只读特性，保护变量值以防被修改

  2、节省空间，避免不必要的内存分配。const修饰的变量在程序运行过程中只有一份拷贝

  3、提高程序运行效率。编译器不为普通const常量分配存储空间，而是将他们保存在符号表中，这使得它成为一个编译期间的常量，没有了存储和读取内存的操作。

三、const的使用

  1、const和普通变量

   （1）编译器在编译过程中把...]]></description><category></category></item><item><title><![CDATA[L2TP协议笔记]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/109558959</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/109558959</guid><author>impossble_2017</author><pubDate>Sun, 08 Nov 2020 14:13:57 +0800</pubDate><description><![CDATA[一、概述

L2TP是第二层隧道协议。隧道建立在LAC（L2TP客户端）和LNS（L2TP服务器）之间。隧道由一个控制连接和0-n个L2TP会话（用来传输PPP数据包的会话）组成。一对LAC和LNS之间可以有若干个隧道。L2TP由两种类型的报文，一种是控制报文一种是数据报文。控制报文用于隧道和通话的建立、维护和清除。数据报文封装PPP帧，并在隧道上传输。

形象点说是这样的，隧道是一条有N条车道的高速公路，一台拨号PC的数据流就是一条会话，占用了一条公路，这条公路上只能传输这台PC的报文，运载报文在...]]></description><category></category></item><item><title><![CDATA[wireshark抓包分析POP3协议]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/108322410</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/108322410</guid><author>impossble_2017</author><pubDate>Mon, 31 Aug 2020 17:15:07 +0800</pubDate><description><![CDATA[一、工具

wireshark

链接：https://pan.baidu.com/s/1uOAGBrwbsmzFXLnpw6EHaA
提取码：vs59

pop3.pcap

链接：https://pan.baidu.com/s/1Yl_B6Cs5LLi2oSImyjh5NA
提取码：li1f

二、分析

1.用wireshark打开pop3.pcap后，在下图过滤器位置输入ip.addr==183.3.225.42，点击右侧的小箭头。其中183.3.225.42是qq的pop服务器的ip

 ...]]></description><category></category></item><item><title><![CDATA[Linux基础知识之压缩包管理]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/104153819</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/104153819</guid><author>impossble_2017</author><pubDate>Mon, 03 Feb 2020 11:18:29 +0800</pubDate><description><![CDATA[压缩包管理

1.gzip 压缩后不保留原文件且不能打包压缩，不能压缩目录

压缩 gzip 文件名

解压缩 gunzip 文件名

2.bzip2 不能打包压缩，不能压缩目录

压缩 bzip2 文件名

解压缩 bunzip2 文件名 (加 -k 压缩时保留原文件)

3.tar（不使用z/j参数，该命令只能对文件或目录打包）

参数：

c 压缩

x 解压缩

v 显示提示信息

f 指...]]></description><category></category></item><item><title><![CDATA[Linux基础知识之文件和目录的操作]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/104148232</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/104148232</guid><author>impossble_2017</author><pubDate>Sun, 02 Feb 2020 19:28:36 +0800</pubDate><description><![CDATA[1.文件和目录操作

（1）命令解析器

根据输入的字符串调用相应的程序

（2）Linux快捷键

history:查看之间做过的操作

ctrl p:命令向上滚动

ctrl n:命令向下滚动

光标移动：向前移动 ctrl+b 向后移动 ctrl+f 移动到命令头部 ctrl +a 移动到命令尾部 ctrl+e

删除：删除光标前的一个字符ctrl+h 删除光标后的一个字符ctrl+d 删除...]]></description><category></category></item><item><title><![CDATA[查找链表中倒数第k个结点（C++实现）]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/103967838</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/103967838</guid><author>impossble_2017</author><pubDate>Tue, 14 Jan 2020 09:42:54 +0800</pubDate><description><![CDATA[时间限制：C/C++ 1秒，其他语言2秒空间限制：C/C++ 32M，其他语言64M热度指数：926369

本题知识点：链表

题目描述

输入一个链表，输出该链表中倒数第k个结点。



思路：

如果链表为空，返回NULL
如果pListHead-&gt;next为NULL，说明该链表只有一个结点，当k不等于1时，倒数第k个结点不存在，返回NULL；如果k等于1,返回pListHea...]]></description><category></category></item><item><title><![CDATA[ubuntu使用g++编译c++程序]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/90084999</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/90084999</guid><author>impossble_2017</author><pubDate>Fri, 10 May 2019 22:29:11 +0800</pubDate><description><![CDATA[g++ helloworld.cpp(源文件) -o(制定编译结果的输出文件) helloworld

./helloworld (执行编译后的程序)
]]></description><category></category></item><item><title><![CDATA[第八届蓝桥杯C/C++B组个人决赛36进制]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/88826901</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/88826901</guid><author>impossble_2017</author><pubDate>Tue, 26 Mar 2019 19:58:42 +0800</pubDate><description><![CDATA[36进制

对于16进制，我们使用字母A-F来表示10及以上的数字。
如法炮制，一直用到字母Z，就可以表示36进制。

36进制中，A表示10，Z表示35，AA表示370

你能算出 MANY 表示的数字用10进制表示是多少吗?

请提交一个整数，不要填写任何多余的内容（比如，说明文字）



结果：1040254



思路：A表示10，Z表示35，我们需要将英文字母和数字对应起来，显然我们...]]></description><category></category></item><item><title><![CDATA[PAT1002写出这个数]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/88760509</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/88760509</guid><author>impossble_2017</author><pubDate>Sat, 23 Mar 2019 15:05:14 +0800</pubDate><description><![CDATA[/*
1002 写出这个数
读入一个正整数 n，计算其各位数字之和，用汉语拼音写出和的每一位数字。

输入格式：
每个测试输入包含 1 个测试用例，即给出自然数 n 的值。这里保证 n 小于 10的100次方

输出格式：
在一行内输出 n 的各位数字之和的每一位，拼音数字间有 1 空格，但一行中最后一个拼音数字后没有空格。

输入样例：
1234567890987654321123456789...]]></description><category></category></item><item><title><![CDATA[PAT1001害死人不偿命的(3n+1)猜想]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/88759357</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/88759357</guid><author>impossble_2017</author><pubDate>Sat, 23 Mar 2019 13:09:59 +0800</pubDate><description><![CDATA[1001 害死人不偿命的(3n+1)猜想

卡拉兹(Callatz)猜想：

对任何一个正整数 n，如果它是偶数，那么把它砍掉一半；如果它是奇数，那么把 (3n+1) 砍掉一半。这样一直反复砍下去，最后一定在某一步得到 n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想，传说当时耶鲁大学师
生齐动员，拼命想证明这个貌似很傻很天真的命题，结果闹得学生们无心学业，一心只证 (3n+1)，以...]]></description><category></category></item><item><title><![CDATA[每日一道面试题－－编程判断大小端]]></title><link>https://blog.youkuaiyun.com/impossble_2017/article/details/83386736</link><guid>https://blog.youkuaiyun.com/impossble_2017/article/details/83386736</guid><author>impossble_2017</author><pubDate>Thu, 25 Oct 2018 21:20:13 +0800</pubDate><description><![CDATA[1 //小端数据模式与内存增长方向一致，大端数据模式与内存增长方式相反
 2 //大端　寄存器的低地址存放字节数据的高位
 3 //小端　寄存器的低地址存放字节数据的低位
 4 //联合方法判断 Ｃ语言中的数据类型都是从内存的低地址向高地址扩展，小端方式中i所分配的内存那个最小地址中就存着１，其他字节是０.     大端的话则1在i的最高地址字节处存放，char是一个字节，联合...]]></description><category></category></item></channel></rss>