自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [Instant Note] LinklistReverse

这几天写算法的时候碰到这个坑了好长时间的题,第一次自己写出来了,做一个记录思路长度为1,2时单独处理长度大于等于三时:简单画了一下,看个意思更详细的解答看https://leetcode-cn.com/problems/fan-zhuan-lian-biao-lcof/solution/fan-zhuan-lian-biao-by-leetcode-solution-jvs5/代码# Definition for singly-linked list.# class ListNode.

2021-09-18 15:02:39 197

原创 [Remaster] 传输层

功能提供进程之间的通信,即端口到端口的通信。传输层将报文加上端口信息后传给链路层。Description:端到端的透明数据传输,差错控制,流量控制过程:进程-端口-主机-路由-主机-端口-进程其中,IP协议作用于主机之间,传输层协议(TCP/UDP)作用于端口之间.端口略Socket=(IP:Port)面向连接和不TCP:面向连接 可靠性强 报文体积大UDP:无:不保证送达 速度快UDP在IP的基础上添加了复用,分用和差错检测复用:多个源端口都走IP分用:一条IP分给多个目

2021-09-17 15:20:49 280

原创 [Remaster] 应用层

网络应用模型C/S模型P2P模型DNS用的是UDP域名解析树根域名->顶级域名->授权域名DNS的解析过程主机查DNS是递归查询DNS服务器查DNS是迭代查询主机向本地DNS服务器递归查询本地DNS服务器向更高级的域名服务器查询更高级的服务器返回域名所在的较低级服务器查询较低级服务器,返回域名所在的更低级DNSLoop…Until 有域名-IP的记录,返回以上步骤是基于本地没有DNS Cache的 有的话直接返回完事.这个图比书上的图好使多了.注意,这

2021-09-17 15:16:59 172

原创 生产-消费者问题基本框架代码

//基本变量mutex=1;//临界区锁变量empty=n;//空闲缓冲区数量,给producer校验full=0;//有内容的缓冲区数量,给consumer校验,恒有full+empty=n//生产者void producer(){ p(empty);//校验是否有空缓冲区 p(mutex);//校验通过,锁闭临界区 save();//事务代码 v(full); v(mutex);//释放临界区}//消费者void consumer(){ p(full); p(mutex

2021-07-09 20:24:30 169

原创 浮点数相关问题简记

浮点数相关问题简记浮点数的基本问题用于表示不定精度的有符号小数,使用科学计数法,即:x=(sign)×2exp×basinx=(sign)\times 2^{exp}\times basinx=(sign)×2exp×basin一个典型的浮点数包括符号,阶码,basin的尾数。float类型32位,8位阶码;double类型64位,11位阶码浮点数的表示表示公式如上。在IEEE754标准中,阶码为带符号的整数,并且以移码(该数补码的符号位取反)的形式表示;basin强制为1.xxxxxxx

2021-06-18 21:42:36 560

原创 [INSTANT NOTE] 模式匹配KMP算法

0x00使用场景字符串匹配:给定模板串aaa和目标串bbb,求bbb是否为aaa的子串;如果是,返回开始的indexindexindex。0x01暴力算法基本思想:如果当前字符匹配成功(S[i]==P[j]S[i] == P[j]S[i]==P[j]),则i++,j++,继续匹配下一个字符;如果失配(即S[i]!=P[j]S[i]! = P[j]S[i]!=P[j]),i=i−(j−1),j=0i = i - (j - 1),j = 0i=i−(j−1),j=0。相当于每次匹配失败时,i 回溯,j

2021-06-09 20:21:58 91

原创 [Leetcode Daily] 80. 删除有序数组中的重复项 II

Description给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 最多出现两次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。输入:nums = [1,1,1,2,2,3]输出:5, nums = [1,1,2,2,3]解释:函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。 不需要考虑数组中超出新长度后面的元素。思路这个思路还有点难想

2021-04-18 16:59:26 113

原创 [Leetcode Daily] 208. 实现 Trie (前缀树)

DescriptionTrie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。boolean

2021-04-15 20:36:07 141

原创 [Leetcode Daily] 61. 旋转链表

Description给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]思路非常直观的思路,就是先遍历到最后,连接成为一个循环链表,然后双指针移动一定的步数,断开循环链表返回头部。一点优化注意到0<=k<=2∗1090 <= k <= 2 * 10^90<=k<=2∗109,Nodes∈[0,500]Nodes\in[0,500]Nodes∈[0

2021-03-27 12:43:05 139

原创 [INSTANT NOTE] Python求补码模板代码

来源于剑指11,二进制中1的个数。补码正数:原码负数: Abs(n)+1~Abs(n)+1 Abs(n)+1实现假定需要32位补码。正数很好实现,主要是负数。n=-nn=~n+1这两步都没有问题,但最后显示的是-1。为了修正答案,应该进行一个mask,即n=n&0xffffffff完事。完整代码def NumberOf1(self, n): if n>=0: a=bin(n) count=0 fo

2021-03-25 13:33:56 311

原创 [LeetcodeDaily] 705. 设计哈希集合

Description不使用任何内建的哈希表库设计一个哈希集合(HashSet)。实现 MyHashSet 类:void add(key) 向哈希集合中插入值 key 。bool contains(key) 返回哈希集合中是否存在这个值 key 。void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。示例:输入:[“MyHashSet”, “add”, “add”, “contains”, “contains”, “add”, “cont

2021-03-13 13:26:41 121

原创 [Leetcode Daily] 1047. 删除字符串中的所有相邻重复项

Description给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在 S 上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。示例:输入:“abbaca”输出:“ca”解释:例如,在 “abbaca” 中,我们可以删除 “bb” 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 “aaca”,其中又只有 “aa” 可以执行重复项删除操作,所以最后的字符串为 “ca”。T

2021-03-09 11:07:12 132

原创 [Leetcode Daily] 232. 用栈实现队列

Description请你仅使用两个栈实现先入先出队列。队列应当支持一般队列的支持的所有操作(push、pop、peek、empty):实现 MyQueue 类:void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除并返回元素int peek() 返回队列开头的元素boolean empty() 如果队列为空,返回 true ;否则,返回 false说明:你只能使用标准的栈操作 —— 也就是只有 push to top, peek/pop from

2021-03-05 09:42:03 106 1

原创 [Leetcode Daily] 354. 俄罗斯套娃信封问题

Description给你一个二维整数数组 envelopes ,其中 envelopes[i] = [wi, hi] ,表示第 i 个信封的宽度和高度。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算 最多能有多少个 信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。注意:不允许旋转信封。示例 1:输入:envelopes = [[5,4],[6,4],[6,7],[2,3]]输出:3解释:最多信封的个数为 3,

2021-03-04 21:30:48 159 1

原创 [Leetcode Daily] 338. 比特位计数

Description给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。示例 1:输入: 2输出: [0,1,1]示例 2:输入: 5输出: [0,1,1,2,1,2]要求:给出时间复杂度为O(n*sizeof(integer))的解答非常容易。但你可以在线性时间O(n)内用一趟扫描做到吗?要求算法的空间复杂度为O(n)。 你能进一步完善解法吗?要求在C++或任何其他语言中不使用任何内置函数(如 C++

2021-03-03 09:22:32 82

原创 [Leetcode Daily] 304. 二维区域和检索 - 矩阵不可变

Description给定一个二维矩阵,计算其子矩形范围内元素的总和,该子矩阵的左上角为 (row1, col1) ,右下角为 (row2, col2) 。示例:给定 matrix = [[3, 0, 1, 4, 2],[5, 6, 3, 2, 1],[1, 2, 0, 1, 5],[4, 1, 0, 1, 7],[1, 0, 3, 0, 5]]sumRegion(2, 1, 4, 3) -> 8sumRegion(1, 1, 2, 2) -> 11sumRegion(1

2021-03-02 23:57:01 98 1

原创 [Leetcode daily] 303. 区域和检索 - 数组不可变

Description给定一个整数数组 nums,求出数组从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点。实现 NumArray 类:NumArray(int[] nums) 使用数组 nums 初始化对象int sumRange(int i, int j) 返回数组 nums 从索引 i 到 j(i ≤ j)范围内元素的总和,包含 i、j 两点(也就是 sum(nums[i], nums[i + 1], … , nums[j]))示例:输入:["NumArray",

2021-03-01 20:15:39 124

原创 [Leetcode Daily]896. 单调数列

Description如果数组是单调递增或单调递减的,那么它是单调的。如果对于所有 i <= j,A[i] <= A[j],那么数组 A 是单调递增的。 如果对于所有 i <= j,A[i]> = A[j],那么数组 A 是单调递减的。当给定的数组 A 是单调数组时返回 true,否则返回 false。思路第一反应是玩点骚的,使用python的sort()方法。具体使用方法是sort之后该list就变成了有序的,可以在reverse参数中选择升序或降序,而不是返回一个有序

2021-02-28 12:05:44 154 1

原创 [Leetcode Daily] 395. 至少有 K 个重复字符的最长子串

Description给你一个字符串 s 和一个整数 k ,请你找出 s 中的最长子串, 要求该子串中的每一字符出现次数都不少于 k 。返回这一子串的长度。示例 1:输入:s = “aaabb”, k = 3输出:3解释:最长子串为 “aaa” ,其中 ‘a’ 重复了 3 次。示例 2:输入:s = “ababbc”, k = 2输出:5解释:最长子串为 “ababb” ,其中 ‘a’ 重复了 2 次, ‘b’ 重复了 3 次。提示:1 <= s.length <= 104

2021-02-27 22:41:10 279

原创 [Leetcode Daily] 867. 转置矩阵

Description给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。Tips:矩阵不一定是n×nn\times nn×n的。思路本来是一个很简单的实现题,结果卡在实现上了。。。初始化一个转置后尺寸的矩阵,然后遍历一个个填进去。代码class Solution: def transpose(self, matrix: List[List[int]]) -> List[List[int

2021-02-25 21:31:34 112

原创 [Leetcode Daily] 832. 翻转图像

Description给定一个二进制矩阵 A,我们想先水平翻转图像,然后反转图像并返回结果。水平翻转图片就是将图片的每一行都进行翻转,即逆序。例如,水平翻转 [1, 1, 0] 的结果是 [0, 1, 1]。反转图片的意思是图片中的 0 全部被 1 替换, 1 全部被 0 替换。例如,反转 [0, 1, 1] 的结果是 [1, 0, 0]。示例 1:输入:[[1,1,0],[1,0,1],[0,0,0]]输出:[[1,0,0],[0,1,0],[1,1,1]]解释:首先翻转每一行: [[0,

2021-02-24 10:55:50 101

原创 [Leetcode Daily] 1052. 爱生气的书店老板

Description今天,书店老板有一家店打算试营业 customers.length分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X分钟不生气,但却只能使用一次。 请你返回这一天营业下来

2021-02-23 12:41:18 82

原创 [INSTANT NOTE] 多媒体加密范例分析

概述为防止多媒体数据在传输过程中被破解而衍生的加密技术(e.g. 电影的枪版)主要特点:需要防止选择明文攻击(因为攻击者会根据常识进行内容猜测(比如电影的片头))主要是内容加密(即视觉上保密)需要满足一定的需求(例如加密状态下的运动检测),所以不能直接用常规的数据加密手段质量上的扩展对码流的随机访问编码过程中的不同阶段?压缩前加密:数据丢失压缩中:性能问题压缩...

2021-01-21 20:27:40 322

原创 [INSTANT NOTE] GBN的累计重传

BakGBN,后退N个重传协议,在发送数据报时出现超时,则重传该数据报剩余全部分组。0x01GBN的接收方采用累计ACK机制,即接收方对序号n之前包括n在内的所有分组进行确认。当发送ACK n时即为确认之前所有数据报送达。0x02 exp注意接收方,在收到pkt1,pkt3而没有pkt2时,发送的ACK为ACK1,即仅确认0,1两个数据报,并丢弃失序的pkt3(因为不是期望的pkt2)。同时发送方忽略重复的ACK1。0x02应该重发4567帧,这个题目很诡异,这种情况很难见到吧。。。.

2020-11-13 19:23:25 734

原创 CHAPTER Ⅳ网络层

文章目录功能虚电路和数据报IPV4 ProtocolIP地址和子网划分DHCP/NAT/ICMPIPV6 Protocol路由算法功能向下:分片,向链路层交付数据报(datagram)向上:重组,向传输层交付数据段(segment)转发:路由器将一个输入端口的数据报转发至某输出端口 依据:转发表(Address:Port)路由:跨局域网的通信方式,确定分组从源到目的地的路径 路由算法传输前建立主机间的虚拟连接,传输层面的连接是进程间的。无连接服务:不确定的传输路径,每个分组独立传输有连

2020-11-03 21:51:33 197

原创 [INSTANT NOTE] NAT和PAT

目的节约公网IP隐藏内部网络拓扑结构综述由路由器执行.路由器的映射表控制转换.当报文发出时,路由器根据映射表修改报文头.收到报文时,路由器根据映射表修改并传输至对应主机.NAT静态NAT:内部网络中的每个主机都被永久的映射成外部网络中的某个合法地址;动态NAT:在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络;多对多,从每个内网IP对应一个外网...

2020-04-15 14:40:03 276

原创 [INSTANT NOTE]视频流编码基础及后置隐写基础

视频编码基础视频是一系列图像基于时间的集合.相邻帧差异一般情况下较小.为了最大限度压缩,一般采用偏差的编码思想.P1P2=P1+offset2P3=P1+offset3P_1\\P_2=P_1+offset_2\\P_3=P_1+offset_3P1​P2​=P1​+offset2​P3​=P1​+offset3​此处P1称作基准帧或参照帧.帧间压缩每一个帧组的帧具有较强的联系...

2020-03-23 20:01:36 360

原创 [INSTANT NOTE] Jsteg系列算法速查手册

重要参考: https://fennudehaogua.top/2019/03/21/Steganography-basic/前言从Jsteg到F5,这一系列算法是因应前面算法的缺点逐步改进的.所以在这里也使用增量的办法进行说明.基础:DCT系数的特征基本关于0对称分布0系数最多,向两边逐渐减小.示例:Jsteg算法Jsteg是基于DCT的最低位进行隐写的.优点是正常情况...

2020-03-17 16:54:58 1019 1

原创 [NOTE]底层协议安全

文章目录基本协议及简述协议的安全隐患IP协议IP地址欺骗IP路由欺骗IP分片攻击定向广播攻击网络监听被动监听技术ARP协议TCP协议SYN Flood序号攻击TCP序号劫持UDP协议UDP FloodUDP欺骗ICMP协议DosICMP重定向DNS协议基本协议及简述IP:无状态无连接(不支持上下文)不可靠(尽力送达)无序(送达顺序不固定)支持分片(分片字段)路由不固定地址由报...

2020-03-15 21:41:35 311

原创 [BUUCTF-misc] 二维码

拿到一个二维码.使用WEBQR没扫出什么.暗示从文件包含入手(本来就是1分题能有啥Trick)binwalk拿到一个压缩包有密码,暗示4位数字.那直接上fcrackzip暴力破.fcrackzip -b -l 4-4 -c 1 -p 0000 /root/桌面/Chanel/_QR_code.png.extracted/1D7.zip也不是很多.但是懒得手输直接上脚本.源...

2020-01-14 17:50:02 4358

原创 主存管理[未完成]

文章目录存储管理主存共享方式逻辑组织一维结构二维结构地址映射主存扩充虚拟存储器存储保护动态分区存储分配分配数据结构分区的分配分区回收优化:首次适应算法最佳适应算法最坏适应算法队列链表结构页式存储页表虚地址结构虚实地址转换取址译码的自动化硬件机构页面调取的机制请求式系统的页表改装缺页处理淘汰策略页表改装抖动最佳替换算法最久未使用近似淘汰算法存储管理主存共享方式大小不等的划分分区存储段式...

2020-01-05 17:01:51 231

原创 CHARPTER Ⅲ传输层

CHARPTER Ⅲ运输层概述和运输层服务多路复用与多路分解无连接传输 : UDP可靠数据传输的原理面向连接的传输 : TCP拥塞控制原理TCP拥塞控制重要参考: https://zhuanlan.zhihu.com/p/34925520功能和内容为主机上运行的进程之间提供逻辑通信.划分报文段下发网络层重组为数据交给应用层针对的是HTTP报文中的DATA部分,这一...

2019-12-26 15:23:30 670

原创 CCF-CSP Python Cheat Sheet

这里写自定义目录标题Python Cheat Sheetstring字符串的运算格式化输出三引号其他ListDictionarySetGraph邻接表形式DFSBFS杂项无向图的联通判断序列中出现最多的元素生成定长0列表二叉树生成和遍历AlgorithmDPBackpack01背包多重背包最长公共子序列DJSTL/floydPRIM/KRUSKAL:最小生成树拓扑排序Python Cheat S...

2019-12-15 10:35:48 253

原创 CHARPTER Ⅱ应用层

CHARPTER Ⅱ 应用层协议体系架构C/S结构P2P结构混合结构应用层协议主要控制不同主机上的进程通信.数据是端到端的,操作系统如何确认该数据应该下发给哪个进程?应用层协议定义了:交换的报文类型报文的语法字段的语义可靠传输?带宽控制?实时反馈?安全性?TCP面向连接 : 在客户端和服务器进程之间需要建立连接可靠传输 : 在发送和接受进程之间流量...

2019-12-03 21:01:56 407

原创 CHARPTER Ⅰ计算机网络和因特网

CHARPTER Ⅰ计算机网络和因特网出于个人恶趣味和复制粘贴需要,可能文章中会间歇性出现繁体段落/繁体中文表述方式.综述主机-服务器通信链路传输速率:带宽向应用程序提供服务的设施向应用程序提供编程接口网路边缘:主机,伺服器,用户机网路核心:路由接入网,物理介质:通信链路网络边缘端系统(用户机)伺服器C/S模型中有分别,而P2P模型不存在分别.接入网:...

2019-11-29 22:49:06 467

原创 数据库的查询优化 Ⅱ

Written with StackEdit.About B+ Tree Index: https://blog.csdn.net/xlgen157387/article/details/79450295代价及优化:See https://qiuzhenyuan.github.io/2018/02/15/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3%E6%9F%...

2019-11-09 17:38:09 355

原创 自顶向下的语法分析(1)

自顶向下的语法分析(1)输入一个终结符串,求解该串是否合法,并指出转换路径.自顶向下语法分析方法(即推导法)是从文法开始符S出发,逐步进行推导,以证实S→αS\rightarrow\alphaS→α的推导过程是否存在的方法。推导哪一个非终结符选取哪条路径(1)通常使用最左推导原则.问题⑵通常需要穷举每一个规则的可能推导,即不确定的自顶向下语法分析。具体思想是:一旦寻找到一个符号串...

2019-11-06 21:12:35 916

原创 二叉堆/并查集

Written with StackEdit.二叉堆完全二叉树优先从左边开始填充empty或最小元素在根上子树也是堆储存方式一维数组从[1]开始层序排列[k]的左儿子是2k右是[2k+1]操作Delete Minimum删除根最后一个元素代替根元素向下调整:选取当前节点和较小/大儿子(参考是小顶堆还是大)(通过下标定位),如果顺序不对则交换,直到顺序正确停...

2019-11-01 17:46:10 145

原创 背包问题的0-1化

Written with StackEdit.Reference:https://leomalik.github.io/01%E8%83%8C%E5%8C%85%E3%80%81%E5%AE%8C%E5%85%A8%E8%83%8C%E5%8C%85%E3%80%81%E5%A4%9A%E9%87%8D%E8%83%8C%E5%8C%85.htmlSee Also: https://www...

2019-11-01 10:32:33 190

原创 DP完全背包

Written with StackEdit.特征每件物品不限数量思路转化为0/1背包(?)每个物体尽可能多放(Why?)递推式为:F(i,j)=Max{F(i−1,w−kw[i])+kv[i]},∀kw[i]<wF(i,j)=Max\{F(i-1,w-kw[i])+kv[i]\} ,\forall kw[i]<wF(i,j)=Max{F(i−1,w−kw[i])...

2019-10-31 22:48:15 111 1

forensics.zip

本文用到的资源文件;供结束之后练习使用

2019-10-09

空空如也

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

TA关注的人

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