- 博客(22)
- 收藏
- 关注
原创 LeetCode 121 Best Time to Buy and Sell Stock 买卖股票的最佳时机
方法一 方法一是《算法导论》上最大子数组一节介绍的方法。虽然也是线性时间,但是在构造与前一天的价格差这个步骤多花了时间。方法二 方法二是题解里介绍的方法。如《算法导论》上所讲,不一定是最低价买入,也不一定是最高价卖出。想到的方法是穷举买入卖出的时间 (i,j)(i,j)(i,j),但时间复杂度是 O(...
2019-04-23 16:11:34
221
原创 LeetCode 373. Find K Pairs with Smallest Sums 【优先队列】
优先队列 堆的一个常见应用是作为高效的优先队列。优先队列是一种用来维护维护由一组元素构成的集合 SSS 的数据结构,其中的每一个元素都有一个相关值,称为关键字。一个最大优先队列支持以下操作:INSERT(S,x)INSERT(S,x)INSERT(S,x): 把元素 xxx 插入集合 SSS 中。MAXIMUM(S)MAXIMUM(S)MAXI...
2019-04-21 14:21:01
600
1
原创 堆排序
堆 (二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左到右填充。heap_size表示有多少个堆元素存储在该数组中。 当根结点下标为0时,结点 iii 的左孩子、右孩子和父亲的下标为:#define LEFT(i) ...
2019-04-21 10:17:10
158
原创 原始套接字发送IP数据报
IP是TCP/IP协议族中的核心协议。所有TCP、UDP、ICMP和IGMP数据都通过IP数据报传输。IP提供了一种尽力而为、无连接的数据报交付服务。IPv4头部图1 IPv4头部 图1显示了IPv4数据报的头部,各个字段的如下:版本:IP数据报的版本号。IPv4为4。Internet头...
2019-04-16 10:24:30
3985
3
原创 原始套接字发送ARP数据包
什么是ARP协议 ARP协议是Address Resolution Protocol(地址解析协议)的缩写。在局域网中,网络中实际传输的是数据帧,数据帧里面有目的主机的MAC地址。但这个目的MAC地址是如何获取的呢?就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送数据帧之前将目标IP地址转化成目标MAC地址的过程。ARP协议的基本功能就是通...
2019-04-14 10:42:29
4886
1
原创 KMP算法
KMP算法 在朴素字符串匹配算法中如果某次匹配失败,则每次把字符串的指针回溯到最开头,这造成了效率低的后果。KMP算法是利用要匹配的模板字符串自身的信息来进行比较,进而移动模板字符串的指针。 图1 如图1所示,在ababa已经匹配的情况下,下一字符不匹配的时候,发现aba是ababa的真后缀同...
2019-03-28 13:21:00
198
原创 DNS协议抓包分析
Wireshark抓包 只需通过浏览器访问一个网页,然后在Wireshark里过滤DNS协议。解析解析 DNS有两种报文,分别是查询报文和回答报文。它们的格式相同。查询数据包Domain Name System (query)Transaction ID: 0xfe27Flags: 0x010...
2019-03-02 14:40:30
5720
原创 栈溢出实践(2)
在之前《栈溢出实践》里,所有地址都是现场获得并填入的,这篇进行一点改进。获取’JMP ESP’指令 函数调用完之后,栈相较于调用之前都是平衡的,栈帧指向保存返回地址的下一帧。如果我们将返回地址指向‘jmp esp’指令,并且在保存返回地址的下一帧起始处填入代码,就无需定位运行代码的起始地址。&nbs...
2019-03-01 15:33:41
312
原创 遍历导出表
1.通过DOS头部找到PE头部    DOS头部的数据结构如下:_IMAGE_DOS_HEADER+0x000 e_magic : Uint2B+0x002 e_cblp : Uint2B+0x004 e_cp : Uint2B+0x006 e_crlc
2019-02-28 13:19:17
771
原创 DHCP协议抓包分析
DHCP协议操作Wireshark抓包Windows系统,输入命令来断开连接:ipconfig /release再输入命令恢复连接:ipconfig /renew期间可用wireshark捕获到DHCP数据包。1.DISCOVERBootstrap Protocol (Discover)Message type: Boot Request (1)Hardware type...
2019-02-26 15:21:44
1500
原创 获取DLL的基地址
(1)首先通过段选择器FS在内存中找到当前的线程环境块TEB。(2)线程环境块中找到进程环境块PEB的指针。(3)进程环境块中找到指向PEB_LDR_DATA结构体的指针,其中存放着已经被进程装载的动态链接库的信息。(4)PEB_LDR_DATA结构体中找到指向模块信息LIST_ENTRY链表的头指针。(5)遍历_LIST_ENTRY链表,找到想要获取DLL的基地址。1.TEB&nbs...
2019-02-24 18:11:59
2997
1
原创 TCP连接的建立与终止
图示实验    服务器端原本开启了FTP服务,服务端口号21,IP地址为192.168.182.132。    在客户端执行以下命令:telnet 192.168.182.132 21连接成功后输入quit断开连
2019-02-22 14:55:17
1561
原创 栈溢出实践
实验代码实验环境为Win10,编译工具为VS2017(Release)。#define _CRT_SECURE_NO_WARNINGS#include <Windows.h>#include <stdio.h>#include <string.h>#def
2019-02-21 14:37:57
416
原创 IP分片
实验环境搭建  配置一台虚拟机。本次实验中主机的IP地址为192.168.182.1,虚拟机的IP地址为192.168.182.133。  通过主机ping虚拟机,指令如下:ping -l 3000 192.168.182.133-l 指定包的数据大小为3000字节,使之分片传输。Wireshark抓包第一帧IP层内容如下:Intern...
2019-02-20 14:38:56
2101
原创 IDA修改汇编指令
写一段小程序#include <stdio.h>#include <string.h>int main(){ char password[1024]; while (true) { printf("please input password:\t"); scanf("%s", password);
2019-01-21 18:56:47
32463
3
原创 ARP协议抓包分析
ARP缓存表一、查看ARP缓存表指令arp -a二、删除ARP缓存表指令比如删除接口为192.168.182.128的ARP记录:arp -d 192.168.182.128Windows下也可清空所有ARP条目:arp -d实验环境搭建配置两个虚拟机,IP地址分为192.168.182.128和192.168.182.132。清除与对方相关的APR条目。在192.16...
2018-12-23 15:50:02
2537
原创 牛客-字典序 解题报告 【树】
牛客-字典序 解题报告 【树】题目描述 牛客OJ链接:字典序 给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。 对于n=11, m=4, 按字典序排列依次为1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9, 因此第4个数是2. 对于n=200, m=25,...
2018-10-02 16:27:38
340
原创 POJ 2559-Largest Rectangle in a Histogram 解题报告 【笛卡尔树与单调栈】
POJ 2559-Largest Rectangle in a Histogram 结题报告 【笛卡尔树与单调栈】
2018-09-29 15:19:21
624
原创 Github如何绑定域名
Github如何绑定域名第1步:  申请github账号,并建立新仓库,仓库的名字为 用户名.github.io 。我的用户名为DoubleTongTong,所以要新建的仓库名为 DoubleTongTong.github.io 。  我是通过GitHub Desktop
2018-09-17 22:05:02
3537
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人