深入浅出索引

2021-02-21
阅读 1 分钟
138

Wireshark 抓包工具介绍

2020-12-13
阅读 5 分钟
5k
Wireshark 抓包工具介绍这篇文章主要介绍一下 Wireshark 这个工具是如何抓包的,学习和使用抓包工具对于学习各种网络协议都很有帮助。1.如何抓取报文(1) 打开 Wireshark 抓包工具之后,点击 捕获->选项:(2)在新打开的 捕获选项 可以看到如下界面:(3)在 捕获选项 界面点击 Output 可以看到如下界面:(4)在 ...

简单理解TCP套接字

2020-12-13
阅读 2 分钟
1.6k
套接字实际上和固定电话并无太大区别,。电话机可以同时用来拨打或接听,但对套接字而言,拨打和监听是有区别的。描述Python用于接听的套接字创建过程1.调用 socket函数(安装电话机)时进行的对话问:"接电话需要准备什么"?答:“当然是电话机!”有了电话机才能安装电话,创建相当于电话机的套接字 {代码...} 2. 调用bind...

PHP 归并排序(Merge Sort)

2020-12-12
阅读 3 分钟
2.1k
​归并排序 时间复杂度属于 O(nlogn) 级别的,相比于 O(n^2) 级别的排序算法,在处理大的数据量时,它的优势非常明显,下面通过原理图和代码演示介绍归并排序是如何实现 O(nlogn) 时间复杂度级别的。

HTTP 协议(包体的传输方式&缓存的工作原理)

2020-12-11
阅读 5 分钟
2.5k
这篇文章主要了解一下 HTTP 协议中定长包体传输的格式和不定长包体传输的格式,然后简单介绍一下 HTTP 协议中缓存的工作原理和应用场景。

数据结构-PHP 字典树(Trie)的实现

2020-12-10
阅读 4 分钟
2.2k
​这篇文章介绍一下字典树的实现原理,又称单词查找树、Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

HTTP 协议(上下文介绍和多断点续传原理)

2020-12-10
阅读 5 分钟
3.3k
HTTP 请求和响应都有一些表示 上下文 的常用头部,所谓 上下文 指的就是某个请求(或响应)从哪里来,或者说某个请求(或响应)对后续请求(或响应)产生哪些影响,后面从 HTTP 协议的角度分析大文件(大的包体)如何做到 断点续传 的,下载大文件(大的包体)的时候是如何做到 多线程 并发下载的。

链表的翻转&判断链表是否有环

2020-12-09
阅读 3 分钟
2.3k
​通过学习 链表的翻转 和 判断链表是否有环 这两个简单的例子加深对链表这种数据结构的理解。1.链表翻转1.1 链表翻转原理图1.2 链表翻转代码 {代码...} 演示输出如下图:2.判断链表是否有环2.1 链表环示意图2.2 问题分析在遍历链表的时候可以维护 快 和 慢 两个指针赋值,可以将这两个快慢插设为 1,当遍历到环上面的时...

http爬虫浅谈

2020-12-04
阅读 5 分钟
2k
因兴趣写了一点点爬虫,浅谈爬虫的一些简单操作吧。1. 第一步先确定要爬取的url无论接口还好,还是html文本也好,获取其他的数据,先通过抓包工具确定好要爬取的url地址2. 使用 Python 构造请求,然后开始爬取数据对于互联网上的站点,接口等,模拟人类操作构造响应的请求,设置对应的请求头,来获取想要的数据3. 对于第...

http分片请求-python分片下载文件

2020-11-30
阅读 1 分钟
2.9k
源文件http://theday.guohongfu.top/letter.txt内容为abcdefghijklmnopqrstuvwxyz获取第20字节及以后的内容 {代码...} 设置 If-Match 判断文件在两次请求间是否发生了改变 {代码...} 得到结果: {代码...} 使用 Python 分片下载文件 {代码...} 每次以512字节进行下载数据,防止下载文件过大而被一次性读取到内存中,导致...

web协议之Cookie

2020-11-30
阅读 2 分钟
2.1k
Cookie 是什么RFC6256,HTTP State Management Mechanism保存在客户端、由浏览器维护、表示应用的HTTP头部存放在内存或者磁盘中服务器生成Cookie在响应中通过Set-Cookie头部告知客户端(允许多个Set-Cookie头部传递多个值)客户端得到Cookie后,后续请求都会自动将Cookie头部携带至请求中Cookie 与 Set-Cookie 头部的定义C...

Mysql普通索引和唯一索引的选择分析

2020-11-29
阅读 5 分钟
8.6k
假设一个用户管理系统,每个人注册都有一个唯一的手机号,而且业务代码已经保证了不会写入两个重复的手机号。如果用户管理系统需要按照手机号查姓名,就会执行类似这样的 SQL 语句:

http协议uri编码

2020-11-27
阅读 1 分钟
1.2k
{代码...}

记录一下 redis 连接数过多和 read error on connection 问题

2020-11-24
阅读 1 分钟
237
问题1: redis连接数过多问题。 问题2: 在公司长连接业务服务器经常 偶然会出现 read error on connection 报错。

Redis 迭代器(间断遍历)

2020-11-21
阅读 4 分钟
139
我们都知道 redis 是单进程、单线程、一个命令执行完、才会执行下一个命令、如果数据库中有海量的数据、当使用 keys 命令,会直接造成服务器的短暂不可用等现象,所以在 redis 2.8.0 之后新增了 scan 操作,也就是 间断遍历。

网络协议-HTTP 协议(一)

2020-11-20
阅读 3 分钟
2.5k
​HTTP协议 是一种无状态的、应用层的、以请求/应答方式运行的协议,它使用可拓展的语义和自描述消息格式,与基于网络的超文本信息系统灵活地互动。

数据结构-PHP 哈希表(Hash Table)的实现

2020-11-16
阅读 11 分钟
4.7k
​这篇文章主要介绍一下哈希表(Hash Table)的实现原理,哈希表(Hash Table) 也叫散列表,它通过把关键码值(key-value)映射到表中一个位置来访问,以加快其查找的速度。这个映射函数叫做哈希函数,存放记录的数组叫哈希表(Hash Table)。

8. 数据结构(PHP实现) -- 线段树的实现

2020-11-15
阅读 3 分钟
1.8k
1. 特征不一定是完全二叉树一定是平和二叉树叶子结点存储的是实际的值,非叶子结点存的是自定义的内容2. 时间复杂度操作时间复杂度查询O(logn)3. 线段树的图解4. 代码 {代码...} 5.示例 {代码...} {代码...}

Redis 迭代器(全遍历)

2020-11-09
阅读 6 分钟
304
字典迭代器主要用于迭代整个字典(dict)中的数据,必然会出现一个问题,如果在迭代的过程中出现的数据增删改查,则可能导致 字典的 rehash操作,从而导致一条数据可能会被多次遍历。一、迭代器数据结构

7. 数据结构(PHP实现) -- 优先队列的底层实现(堆)

2020-11-09
阅读 5 分钟
1.3k
1. 说明:是基于二叉树来实现2. 时间复杂度操作时间复杂度入队O(logn)出队O(logn)3. 插入结点的上浮操作(为了将最大值放在最顶部)(在代码siftUp方法中)4. 弹出最大结点后对最小值的下沉操作(在代码siftDown方法中)5. 代码 {代码...} 6. 示例 {代码...} {代码...}

链表

2020-11-08
阅读 8 分钟
2k
<?phpdeclare(strict_types=1);​class Node{ // 该节点的元素值 public $e; // 下一个节点的指针 public $next;​ public function __construct($e = null, $next = null) { $this->e = $e; $this->next = $next; }​ // 将该节点对象的元素值用字符串输出 public function __toString(): string { return (strin...

Redis 数据结构(dict)实现

2020-11-05
阅读 11 分钟
277
字典又称为hash、或者映射(map)、是一种保存键值对的数据结构。 字典中的每一个key都是独一无二的,可以通过key进行、查询、添加、删除、修改操作。

数据结构-PHP 平衡二叉树(AVL)的平衡原理

2020-11-05
阅读 18 分钟
1.4k
这篇文章主要介绍一下 平衡二叉树(AVL),对于 二分搜索树 来说,如果树上的 元素 是顺序 添加的,会导致数据退化成一个 链表,这样就会造成很严重的性能问题,此时就需要在 二分搜索树 的基础上,保证元素插入时平衡,在了解 AVL 之前,需要您对 二分搜索树 有一定的了解,可以参考之前的文章。

6. 数据结构(PHP实现) -- 图 (用链表来实现)

2020-11-04
阅读 4 分钟
1.8k
1. 特征每个结点都是以key-value的形式存储2. 时间复杂度操作时间复杂度添加O(1)更新O(n)删除O(n)查询O(n)3. 代码结点代码 {代码...} 图的代码 {代码...} 4. 示例 {代码...} {代码...}

5. 数据结构(PHP实现) -- 集合 (用链表来实现)

2020-11-03
阅读 4 分钟
2.2k
1. 特征集合内的元素不会重复,所以在添加的时候就需要判断是否有元素存在2. 时间复杂度分析操作时间复杂度添加O(1)删除O(n)查询O(n)3. 代码元素结点 {代码...} 集合的代码 {代码...} 4. 示例 {代码...} {代码...}

4.4 数据结构(PHP实现) -- 二分搜索树的结点删除

2020-11-02
阅读 4 分钟
1.3k
1. 删除逻辑删除的结点不存在左儿子:删除的结点不存在右儿子:删除的结点存在左儿子和右儿子:删除的结点的左边所有值都会比该结点小,所以只要在其中拿出最大的一个值替换成该节点即可2. 代码 {代码...}

数据结构-PHP 并查集(Union Find)

2020-11-02
阅读 3 分钟
2.5k
这篇文章主要介绍一下 并查集,并查集 支持合并(Union) 和 查询(Find)两种操作,其中 合并(Union) 表示把两个不相交的集合合并为一个集合,查询(Find) 表示查询两个元素是否在同一个集合中。

4.3 数据结构(PHP实现) -- 二分搜索树的遍历(非递归实现)

2020-11-02
阅读 9 分钟
1.2k
基于4.2章节做的延伸,采用非递归的方式来实现前序遍历、中序遍历和后序遍历1. 二分搜索树(本章节都基于该二分搜索树做举例)2. 代码 (在traversalByStack方法中实现了非递归的遍历二叉树) {代码...} 3. 前序遍历代码块 {代码...} 代码流程解析4. 中序遍历代码块 {代码...} 代码流程解析5. 后序遍历代码块 {代码...} 代...

数组

2020-11-01
阅读 10 分钟
1.3k
数组简介静态数组:是在声明时已经确定子数组大小的数组,即数组元素的个数固定不变。动态数组:在声明时没有确定数组大小的数组,即数组元素的个数可以发生变化。(其实也是静态数组,使用扩容resize()方法进行动态调整)构建创建静态数组类创建一个类,类名为”ArrayClass“声明属性data:数组所存具体数据capacity:数...

数据结构-PHP 字典树(Trie)的实现

2020-11-01
阅读 4 分钟
1.6k
​这篇文章介绍一下字典树的实现原理,又称单词查找树、Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。