自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 Top K问题

题目描述从arr[1,n]这n个数中,找出最大的k个数。例子:input:[1,5,3,2,4,7,6], k=4output: [5,7,4,6]解题思路这题是很多面试官都喜欢问的一题。最基础的就是将数组升序排序,返回最后k个数(这个解法务必掌握)。但是面试官不会喜欢这个解法。他们更希望听到,你能说出一下时间复杂度更低,更高效的算法。下面介绍两种比较高效的算法。1. 将全局排序转为局部排序若将数组整体排序再返回,时间复杂度很高。由于冒泡排序的特性,冒泡一遍,我们可以得到最大值。所以,可用

2022-02-22 14:59:08 173

原创 TCP/UDP 特点和报文格式

TCPtcp是一种面向连接的、可靠的、基于字节流的传输层协议。面向连接:使用TCP传输数据前必须建立连接。可靠性:TCP通过切片,确认应答,重传,校验和,流量控制等手段保证可靠性。字节流:应用程序通过TCP连接交换8 bit字节构成的字节流。且TCP不对字节流的内容做任何解释,TCP不知道传输的是二进制数据,ASCII字符或者其他类型数据,对字节流内容的解释由应用层完成。TCP报文源端口(Source Port):源计算机上的应用程序的端口号,占 16 位。目的端口(Destination

2022-02-17 11:03:50 1958

原创 IP报文格式

IP报文格式如下,为IP报文格式:字段解释版本:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。报头长度:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。区分服务:占8比特。以3:4:1的比例分开,其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用,置0。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐

2022-02-15 22:30:55 2439

原创 WiFi连接过程简要分析

本文通过抓取的WiFi空口包WiFi空口包抓包方式汇总,简要分析下WiFi的连接过程。如下图可见,WiFi连接过程可大致分为 探测(Probe)-> 认证(Authentication) -> 关联(Association) -> EAPOL 四个阶段。其中EAPOL不是必要阶段,当加密方式为none或wep时,没有此阶段。下面逐一分析各个阶段。1 探测此阶段的作用是扫描所在区域目前有哪些802.11网络,好让sta获取AP能力,以决定是否加入网络。一共有两个帧:1.1 Prob

2022-01-24 20:44:43 10246 2

原创 抓取WiFi空口包的方式总结

依赖特定设备抓包某些路由器,支持把无线网卡设置成monitor模式。因此,可通过此类设备,抓取WiFi空口包。步骤如下:打开WiFi配置文件(/etc/config/wireless),增加如下字段:如图表示,抓取149信道上的空口包,可根据实际信道修改此值。(设置完后最好重启WiFi)通过tcpdump抓包。如:tcpdump -i ath1 -w ath1.pcap。 -i 后面跟网卡名称,-w后面跟抓包文件名称。用智能设备连接待测AP,连接成功后,结束tcpdump抓包,导出抓包文件

2022-01-24 20:21:21 12456

原创 C语言实现简单哈希表

什么是哈希表哈希表,也叫散列表,是根据关键码值而直接进行访问的数据结构。通俗点说,就是通过关键值(key)映射到表中的某个位置,以便可以直接访问该节点,以提高查找速度。这个映射函数就是散列函数。举个例子,我们有很多员工的信息需要存储,比如张三,李四,王五;一般来说我们可以用链表将他们的信息存储起来,当我们需要某个员工的信息时,遍历链表查找出其信息即可。这样的弊端可想而知:查找效率太低。而如果我们有个函数f(x),能将张三,李四,王五分别映射成1,2,3。那我们可以直接将张三,李四,王五的信息分别存储在链

2022-01-06 21:31:59 5288

原创 每日一题之删除链表重复元素II

题目描述存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中没有重复出现的数字。返回同样按升序排列的结果链表。示例输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]解题思路因为是已排序链表,所以重复元素一定是连续出现的,我们可以以相邻的元素是否相等作为其是否为重复元素的判断依据。具体做法为,使用指针cur指向链表的头节点,随后开始遍历链表,如果当前节点与下一个节点对应的元素相同,那么则删除当前节点及后面所

2022-01-05 10:39:50 368

原创 Linux 提升权限方法(一) —— sudo

在Linux系统中,为了系统安全,通常程序不会直接以root用户运行,而是以它所需要的最小权限的用户运行。但是程序中有部分代码,却必须要root权限运行,此时,就必须在程序中进行提权操作,暂时将权限提升至root权限。执行完对应代码后,降回原来权限。这样,既能保证程序功能正常,也能保证系统安全。此文介绍通过sudo的方式来提升程序权限。sudosudo是Linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具。简单来说,就是普通用户可以通过sudo执行root用户才能

2022-01-04 20:53:27 10590

原创 每日一题之单词拆分

题目描述给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。字典中的所有单词互不相同。例子:输入: s = "applepenapple", wordDict = ["apple", "pen"]输出: true解释: 返回 true 因为 "applepenapple" 可以由 "apple" "pen" "apple" 拼接成。 注意,你可以重复使用

2022-01-04 15:07:48 447

原创 每日一题之寻找两个升序数组的中位数

题目描述给定两个大小分别为 m 和 n 的升序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个升序数组的中位数 。注意 : 1 <= m+n <= 2000, 即两个数组不同时为空。解题思路此题暴力解法为合并两个数组,重新排序,返回中间位置的数,即为中位数。此处不讨论此方法。另一个思路是不用合并两个数组,直接找到中位数的位置,由于两个数组长度已知,因此中位数的位置也是已知的((m+n)/ 2);可以维护两个指针,初始化执行数组起始位置,每次将较小值的指针后移一位(若一

2021-12-27 10:04:33 1134

原创 DHCP应用——获取下挂设备列表信息

大部分路由器,CPE都会显示下挂设备列表,即lan侧设备。通常做法是通过读取arp表和DHCP租期文件,以获取lan侧设备的ip,mac,hostname等信息。但这种方式有两个弊端:1 . arp表有老化时间,意味着arp表不是实时更新的,即可能出现设备已经断开,但arp表还有其IP和MAC的对应信息。导致显示错误。2 . 通过读取DHCP租期文件获取数据,当设备为桥接模式时,会获取不到任何数据。解决方法arp老化时间此问题可通过arping解决,从arp获取到lan侧设备IP,先通过arpin

2021-12-26 14:58:13 3331

原创 网络协议 - DHCP

DHCP简介DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。DHCP交互流程先来看wireshark的抓包截图可以看到大致交互流程为Discover ->Offer -> Request -> ACK。实际交互流程如下:DHCP Client以广播的方式发出DHCP Dis

2021-12-25 23:46:31 324 1

原创 每日一题之合并K个升序链表

题目描述给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。例子:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解题思路和合并两个升序链表的解法几乎相同,难点是怎么处理K个值,将K个链表头的最小值找出,指针指向该链表头,链表头往前一位,继续遍历,直到K-1个链表全部遍历完推出循环,最后将指针指向没遍历完的链表即可。解题代码/** * Definition for singly-li

2021-12-25 21:28:59 419

原创 每日一题之翻转字符串里的单词

题目描述给你一个字符串 s ,逐个翻转字符串中的所有单词 。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。说明:输入字符串 s 可以在前面、后面或者单词间包含多余的空格。翻转后单词间应当仅用一个空格分隔。删除线格式翻转后的字符串中不应包含额外的空格。输入:s = "the sky is blue"输出:"blue is sky the"解题思路可以利用栈先进后出的特性,翻转单词。整体思路是从后往前

2021-12-24 15:49:09 926

原创 每日一题之反转链表 II

题目描述给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。解题思路想要反转链表部分节点可分为以下两步:反转第left个到第right个节点将反转后的链表和原来的链表重新连接为了实现第二步,我们需要在遍历过程,找到4个位置:left节点的前一个节点:此节点需要重新指向反转后的链表的第一个节点left节点:开始反转的节点right节点:需要反转的最

2021-12-23 14:55:33 550

原创 浅谈软连接和硬链接

Linux 把每个文件的权限与属性记录在 inode("索引节点:index node ") 中,而且每个文件占用一个独立的 inode 表格,该表格的默认大小为 128 字节。里面记录着如下信息 :1 文件的访问权限(read、write、execute)2 该文件的所有者与所属组(owner、group)3 该文件的大小(size)4 该文件的创建或内容修改时间(ctime)5 该文件的最后一次访问时间(atime)6 该文件的修改时间(mtime)7 文件的特殊权限(SUID、SGID、

2021-12-22 17:58:20 649

原创 每日一题之旋转链表

题目描述给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。解题思路右移k个位置,实际上就是把最后k个节点,放到链表头前面。所以,可用快慢指针,找到链表的倒数k+1个节点,将其指向NULL,作为新链表结尾。将链表最后一个节点指向原链表头,最后返回倒数第k个节点的地址。设链表长度为n,右移n个位置,就会得到原链表。所以当k > n时,右移k个位置,实际上是右移 k % n个位置。解题代码/** * Definition for singly-linked

2021-12-22 15:28:06 476

原创 位运算应用

取n的第k位(n >> k) & 1取n的末4位n & 15将n的k位置1n & (1 >> k)将n的k位清0n | ~(1 >> k)判断奇偶性n & 1判断是否为2的幂(x != 0) && (x & (x-1) == 0)求平均值(x & y) + ((x ^ y) >> 1)交换两个数的值x ^= y;y ^= x;x ^= y;交换符

2021-12-21 19:51:26 63

原创 每日一题之排序链表

1. 题目描述给定单向链表的头节点head,将其升序排列后并返回排序后的链表。2. 暴力解法将排序链表转化为排序数组,创建数组存储链表中的值,对数组进行升序排序,最后将数组中的值写到链表中。typedef struct node{ int val; struct node *next;}ListNode;int cmp(const void *_a, const void *_b){ int *a = (int *)_a; int *b = (int *)

2021-12-21 15:20:51 204

原创 网络协议-DNS组包实例

DNS应用根据DNS报文格式,可以通过自组DNS请求报文,判断当前设备是否已连接外网。DNS报文格式链接: DNS报文格式.1. 结构体构造DNS请求报文为header + 正文,其中正文为name+type+class。所以我们需要构造的DNS请求报文格式为header+name+type+class,header可用一个结构体表示,长度为16 * 6位,type+class可用一个结构体表示,长度为16 * 2位。具体如下:typedef struct{ u16 id; u1

2021-12-21 14:25:00 1720

原创 网络协议 - DNS基础知识

1. DNS简介域名解析是把域名指向网站空间IP,让人们通过注册的域名可以方便的访问到网站的一种服务。简单说,就是将形如“www.baidu.com”的域名解析为形如“14.215.177.38”的IP地址。2. DNS报文格式2.1 请求报文其中报文头的格式如下:ID:16位的消息ID,标示一次正常的交互,该ID由消息请求者设置,消息响应者回复请求时带上该ID。flag:16位的标志位,格式如下:OR:标识是请求消息还是应答消息。该位为0则为请求,该位为1为应答。opcode:请求类型

2021-12-21 11:56:32 3655

hashtable.txt

哈希表C语言实现

2022-01-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除