Number of Islands
Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands...
Given a 2d grid map of ‘1’s (land) and ‘0’s (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands...
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.
Given a 2D board and a list of words from the dictionary, find all words in the board.
Implement a trie with insert, search, and startsWith methods.
Given a 2D board and a word, find if the word exists in the grid.
LeetCode好久没有总结过了,今天来看一道二叉树Medium题目
本篇是LeetCode DP类别的高级(Hard)题目:
本篇是LeetCode DP类别的中级(Medium(前四) + Hard)题目:
LeetCode上动态规则类题目有23个,其中
这里是LeetCode BFS类型后半部分题目:
这里是LeetCode BFS类型前半部分题目:
下面是DFS Hard级别题目,只有3个:
下面是DFS Medium级别题目的后5道,列表目录:
DFS Medium级别题目有10道,本篇解题如下:
LeetCode上目前关于DFS的题目有19个,其中有18道是二叉树相关的,只有一道是图方面的。DFS系列解题报告按难度分为上中下三部分,下面是第一部分Easy.
做LeetCode题目有3周了,完成了113/166,感觉LeetCode最大的特点就是题目简洁,不像Codeforces, CodeChef等,在进入正题之前先说个小故事,对我这样英语不好的人,理解题意就要半天,其次LeetCode比较规范,定义好了函数接口。以前总是搞C, Python, 这段时间也熟悉了C+...
在CF上做题时,碰到”Time limit exceeded”错误,程序中频繁的遍历连续子序列,当序列长度增加时,程序效率急剧下降,在此学习一种高效的数据结构——树状数组。
“最后的答案: 首先,排除一种特殊的情况,就是3个元素的链表中第2个元素的后面是第1个元素。设置两个指针p1和p2,p1指向第1个元素,p2指向第3个元素,看看 它们是否相等。如果相等就属于上述这种特殊情况。如果不等,把p1向后移一个元素,p2向后移两个元素。检查两个指针的值,如果相等,说明链表中存在循环。如果不...
并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。
ILP问题是0-1背包问题扩展
引言 网上搜索一下“DNS放大攻击模拟”,发现只是一个python scapy脚本,实现DNS查询功能,且不说那个查询记录有问题,DNS放大攻击能够成功实施的一个关键是控制DNS服务器,在DNS服务器上设置一条特别大的文本记录,以此达到放大的目的。本文使用3台机器模拟完整的DNS放大攻击过程。 实验环境 DNS服...
0. 引言 snort的sfportscan插件将端口扫描分为Portscan, Decoy Portscan, Distributed Portscan, Portsweep四种类型,其中Portscan最简单,也最容易被检测,本文介绍一种检测portscan的思路,并实现一个检测工具。 1. portscan...
Event-based signaling mechanisms: they allow to deliver events so that user-space processes do not have to poll for data to make sure that have up-to-date...
上一篇《Netlink 监听 XFRM 状态消息》学习了抓包和解包,本文来学习构造包和发包
XFRM是 Linux 2.6 内核为安全处理引入的一个可扩展功能框架,用来在数据包经过路由路径的过程中对其进行修改,包含 3 种数据结构:策略(xfrm policy),模板(template)和状态(xfrm state)。策略是通过模板和状态发生联系的。 ——http://goo.gl/ek9dJM
绑定NETLINK_ROUTE协议,加入内核提供的RTMGRP_IPV4_ROUTE 广播组,接收监听路由变化消息。
通过libnl能够很快的编写一个netlink程序框架,隐藏了socket,bind,send/recv等复杂调用, 但是数据的构造和解析还是很头疼的,尤其对于我这样的初学者来说,下面按TCP/IP分层模型来学学Netlink消息格式。
Taskstats is a netlink-based interface for sending per-task and per-process statistics from the kernel to userspace. –https://goo.gl/aTdgpp
本文介绍了netlink和libnl。
Trusted Path Execution (TPE) is an old and simple concept. It dates back to at least 1998 with route’s Phrack 62 article linked below. The goal of TPE is ...
下面是Linux fs 相关数据结构的一些笔记,列出的是我开发中经常用到的一些结构成员,以linux 3.12为例。
#fork
在学习LSM过程中,发现有的系统为实现特定功能,需要在进程上附加自定义的信息,其中一个系统laminar基于内核2.6,定义一个新的 struct task_security_struct,然后挂接到task_struct的void *security指针上,security指针是LSM框架的辅助信息。
##1. LSM 学习资料
本文内容包括
Linux下的proc目录有什么用途,我们查看内核版本号、加载的模块、CPU和内存使用等信息,甚至修改路由转发都是通过/proc目录进行的,本文在揭示/proc本质的基础上,对比了/proc编程的新老接口,以及一个应用实例。
本文的主要内容包括
开学有3周了,还没写过博客,一方面是项目上的事,另一方面是阿里、腾讯都开始内推实习了,准备简历,复习一下。在准备找工作实习, 以及在面试中,能慢慢发现自己的短处和长处,有些面试的很惨,但是这不能说明你很low,只是你投的职位不是你所擅长的领域,职位选择失误。
##struct list_head
本文不讲lex编程细节,主要是总结一下Lex能做什么,展现一下Lex和Yacc结合的威力,Lex编程技术可以参考《felx与bison(中文版)》和lex&yacc学习资料。 ###目录
前些日子编译内核碰到一个根文件系统加载失败的问题,困扰了我好久,终于在昨天完美解决了:)
ubuntu 9.10下编译内核时,在执行make menuconfig时,由于屏幕太小,导致打不开配置菜单,屏幕有多小,小的连打开System->Preferences->Display看不到’Apply’按键,所以只能通过修改配置文件来完成了
#任务
Linux Kernel邮件列表上问的最多的一个问题就是:如何给Linux内核打补丁,更具体点就是,诸多trees/branches的一个补丁应该应用于哪个base kernel。希望这个文档能帮你解答这些疑问。
Linux内核是Linux系统的核心。它管理用户输入/输出,硬件,并且控制计算机的电源。通常Linux发行版使用的内核功能是丰富全面的(sufficient,可理解为面向大众的,功能丰富全面,有很多功能对你都没有用处),这允许你定制自己的专业内核!
RevSh简介 当你需要远程控制一台服务器时,这个服务器有防火墙保护着,阻止外来的TCP连接,这时就需要Reverse Shell技术,reverse shell技术如其名,也叫逆向shell,反弹shell,也在就是说在服务器端发起TCP连接,当连接建立成功后,你就获得服务器的一个shell,可以操纵远程服务器...
内核中有好多处类似下面的汇编代码(保护模式下) movl $0x10,%eax mov %ax,%ds mov %ax,%es mov %ax,%fs mov %ax,%gs 我就纳闷啊,内核加载时,BIOS在运行在实模式下,段寄存器是16位,段寄存器存储的是段基址,左移4位加上段偏移就是实际的物理内存...
今天开始学习Linux内核,睡前梳理一下Linux内核被加载到内存的过程,内核版本linux0.11
1、首先写一个模拟登录的脚本,需要用户输入用户名和密码进行交互
“一个现有的进程可以调用fork函数创建一个新进程,fork函数被调用一次,返回两次,两次返回唯一的区别是子进程返回值是0,而父进程的返回值则是新子进程的进程ID”——《APUE》
源码阅读辅助小工具
python threading.Timer()
网络编程的一个大作业《编写网络聊天工具》,拿出来和大家分享一下实现思路。 1.简介 模仿QQ来写的一个工具,使用Python+PyQt开发,为快速实现网络聊天工具的基本逻辑,服务器端没有实用数据库,客户端有登录窗口、注册窗口、好友列表窗口和对话框。主要功能包括: 注册、登录; 添加好友; 支持多会话; ...
1. LJ简介 LJ类似于飞秋,使用Python + PyQt开发,有一个主界面和对话框,在主界面可以显示局域网内的在线主机,切换网卡等,在对话框可以进行一对一聊天和文件传输。主要包括功能包括: 自动扫描在线主机,动态显示在好友列表; 对于多网卡主机,可以自由切换网卡; 文字聊天; 文件传输; 支持多...
一、引言 中国气象局提供了3个开放API,用来查询实时天气数据和预测数据:
getopt模块可以帮助脚本解析sys.argv的命令行参数,它遵守和Unix getopt()函数相同的约定,该模块提供两个函数和一个异常。
scapy中有一个rdpcap函数,它读取一个标准pcap文件,返回一个数据包列表(数组),可通过数组下标读取每个数据包。
生产者消费者问题(Producer-consumer problem),,也称有限缓冲问题(Bounded-buffer problem),是一个多线程同步问题的经典案例。
引言 作为一个码农,由于工作性质,需要整天坐在电脑前,长时间坐着,如果不能有规律的锻炼运动,会影响腰椎和颈椎的健康,长此以往,就会严重伤害身体健康。
一、pickle模块概述 pickle 这个单词的中文意思为 n. 腌菜,泡菜;腌制食品; v. 腌渍
1. lambda函数
一、ubuntu12.04下pyinstller安装及使用步骤 下载PyInstaller
qrc文件是xml格式的资源配置文件,扩展名为qrc,应用程序通过qrc文件来关联使用硬盘上的图片等资源。
pyqt入门任务:用pyqt显示一个新年快乐的对话框
引言 ARP协议为IP地址到硬件地址提供动态映射。 ARP欺骗<==>ARP spoofing<==>ARP病毒<==>ARP poisoning<==>ARP攻击。
0.引言 为什么要了解snort插件的接口呢?有3个出发点:
0.引言 sfportscan插件将端口扫描分为四种类型,分析每一种扫描类型的特点,抽象出四个流量特征来描述每一种扫描类型,用简单的统计方法来检测扫描。首先有一个时间窗口,统计每一个时间窗口内4个特征值的大小,当这4个特征值满足一定条件(超出阈值)时,判定为某一扫描类型,其中的阈值是根据经验人为设定的。
0.源码学习 snort 作为世界上最流行的开源入侵检测系统,至今已有15的历史了,最新release2.9.6.1的源码有近5MB大小,使用命令
本文分析了w3af的xss插件,旨在理解w3af检测xss漏洞的原理。
本文以menu切换,插件加载与启动为主线,分析w3af源代码中函数调用和各类之间的继承与组合关系,阅读之前请先有一个DFS(深度优先遍历)的准备。 一、menu切换 1.menu类继承关系
#0.引言
#w3af简介
###不能解析硬件地址 昨天配置好libtins之后,又尝试了另外一个ExampleArp Spoofing, 一些跨平台引起的编译错误排除后,运行时出现MAC地址解析错误。 执行 arpspoof.exe gateway_ip, victim_ip
Linux下使用C库libnet,跨平台的Python库scapy都是不错的选择,Windows平台一直没有找到理想的C/C++数据包构造库, 今天就来学习一下libtins,libtins是一个跨平台的C++数据包构造和嗅探库。
0.引言 arbitrary DWORD reset 在0day安全中叫做DWORD SHOOT,本文是参考《0 day安全》第5章的学习笔记。
如何计算一条指令在PE文件中的偏移地址?
不知什么原因,我在win7下安装好VMware Workstation 9.0.2后,网络连接中并没有多出VMnet1,VMnet8两个虚拟网卡,我在虚拟机中安装的BackTrack5,需要更新一些软件,网上查了很多 资料,大多复制过来,粘贴过去的,都讲VMware网络连接的三种模式原理,不知所云。
.ini 文件是Initialization File的缩写,即初始化文件,是windows系统配置文件所采用的存储格式.
堆是用于动态内存分配的内存空间,malloc和new函数都是在堆上分配的内存。堆的另一含义就是数据结构中的大根堆、小根堆(也叫优先级队列)。 缓冲区溢出分为栈溢出和堆溢出。使用malloc等在堆上申请内存时,分配两部分,一部分是堆头信息,另一部分是数据区。
>>游戏简介<< NineRings是根据中国古典益智游戏九连环规则,抽象出来的一款休闲益智游戏!
CodeViz provides the ability to generate call graphs to aid the task of understanding code. 其原理是通过修改gcc,在编译过程中生成函数调用关系,然后用grapviz工具绘图。 生成简单的函数调用图可以用gprof实现...
##1. gprof简介
简介 应用场景 配置 实例 C++相关特性 相关资料
##1. 判断平台的宏
在leetcode刷题时,有一个链表加法的问题,我用指针引用技术减少了代码冗余。
题目:输入一颗二元查找树,将该树转换为它的镜像,
阿里巴巴一道笔试题
题目
题目 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
##1.终端的color命令
在Linux的终端下更新、下载、安装工具时,会有一个类似68%这样动态变化的进度值,这是如何做到的呢
在C语言中,在程序开始运行时,系统自动打开3个标准文件:标准输入、标准输出、标准出错输出,对应的文件指针分别为 stdin、stdout、 stderr,这3个文件都与终端(命令行)相联系,所以在使用stdin、stdout、stderr时不需要进行打开操作,直接使用就行。
编程测试时的一个bug
“函数只不过是变量…….把函数主体看成值,函数名则为变量名称”——《head first javascript》
《APUE》10.3节开头的一个函数就打击了我,这个函数是就最简单的信号函数signal。它是第一个让我连声明都看不懂的函数。
常见的goto语句也可以实现跳转,但是仅限于当前函数内,使用setjmp()和longjmp()函数可以实现跨函数跳转,主要用途是实现C语言的异常处理机制,这两个函数包含在头文件setjmp.h中。数据类型jmp_buf用于保存恢复调用环境所需的信息,即程序调用环境上下文,运行时的堆栈信息。
使用socket编写发送邮件的程序非常简单,只需要按照smtp协议的过程,一步步来即可。
研究TCP流重组方式
###问题
Vim源码分析环境搭建好了here,今天拿libnids练练手,虽然cscope命令才掌握几个常用的,但是阅读速度已经很快了,相对于source insight,至少不用担心成为鼠标手了。
最近搞了一个监听神器,尽管使用了网卡混杂模式,不过监听到的几乎全是本地流量, 为了获取更多有用的数据,搞一下中间人攻击,最基本的就是arpspoof + IP转发,这样就可以获得局域网内任何人的上网流量, 难得的是实验室没有做ARP防护,给arpspoof一个大行其道的机会。
nc实现后门 在《reverse shell原理》讲过用bash和python实现reverse shell的原理.
hping简介 hping is a command-line oriented TCP/IP packet assembler/analyzer.
反射攻击 反射攻击利用网络协议(UDP,ICMP)的无连接性,向服务器发送一个NTP/DNS请求,在这个请求数据报中,伪造源IP(这个源IP就是你要攻击的主机IP),服务器收到请求后,正常情况下返回一个应答,应答报文的目的IP就是你伪造的源IP,即被攻击的主机IP。比较著名的反射型DDoS攻击有smurf.
KDD CUP 99数据集是什么,为什么很多入侵检测领域的科研论文都用该数据集进行实验?
视频云服务端
视频云服务端
实现了负载均衡器的常用功能: 一致哈希、RoundRobin、SSL卸载、服务发现、启动/停止/增加/删除VirtualServer的REST API
通过枚举37种细分牌型,制作一个花色无关、顺序无关的字典,字典规模大小是34152,能够在O(1)时间内判断出牌是否有效、比较大小
重构不见得是一个技术成长的好方法,只代表了你的当前水平
Just record.
整理一些例子,备忘!
只要在本地安装了git包,搭建Git服务器并不需要再安装额外的软件,为了简单,本文没有进行用户权限设置, 下面对使用github.com和使用本地git服务器创建新项目的步骤进行对比。
Protocol Buffers
看问题要抓本质,前戏都是浮云,高潮才是关键!
人不能在同一个地方跌倒两次 人不能踏进同一条河流
###MSL MSL(Maximum Segment Lifetime, 报文最大生存时间)他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。 RFC 793中规定MSL为2分钟,实际应用中常用的是30秒,1分钟和2分钟等。 TCP的TIME_WAIT状态也称为2MSL等待状态,当TCP...
##函数对比
Hugepages是DPDK使用的一项技术,它为什么能提高包处理的速度呢? 正确答案是:使用huge page(如ubuntu14 下2M page)代替传统的4K page,减少VPN (Virtual page number)数目, 进而减少TLB(快表)管理的VPN到PPN(Physical page n...
关闭TCP连接的面试问题三境界
快速排序最坏情况运行时间为O(n^2),虽然这个最坏情况运行时间比较差,但快速排序通常是用于排序的最佳的实用选择,这是因为其平均性能相当好:期望运行时间为O(nlgn),而且O(nlgn)记号中隐含的常数因子很小。 ——《算法导论》
这次VMware电话面试聊了30多分钟,主要涉及四个方面C语言,Python,Linux,TCP/IP. 详细考查知识点如下:
我将收藏的计算机经典书籍整理了一下,托管在Github上,项目主页. 分成四大类别
这里是evernote中近3个月来的零碎笔记,没有时间先后之分。
前些日子忙着项目验收,最近忙着整理成果,好久没有写文章了,下面主要是一些认知上的改变。
玩wordpress有一年了,购买一年的虚拟主机快到期了,是续费还是转移,基于下面3个原因
山穷水尽 2014年6月9日,本博客租用虚拟主机出现一次严重故障,导致数据库数据全部丢失,虚拟主机提供商给出的解释是: “磁盘阵列卡报错,向硬盘写入垃圾数据,导致操作系统、文件系统和用户文件出现不同程度不可逆转的损坏。” 而本人以前疏于备份,致使近100多篇文章全部丢失!故障发生后,我立即采取了“应急响应”措施...
一、引言
仔细思考一个问题
解决“大”问题的诀窍,就在于将其分解成较小、较易管理的问题。如果分解后的问题还是太庞大,再进一步分解。 ——《Head First Javascript》
乔布斯创业阶段——电影的前半部分的一些感触
一、认识SSL SSL指Secure Sockets Layer,即安全套接层。 SSL是网络安全通讯的基础,广泛应用于网上银行、网上支付、电子商务等重要网络服务中。 SSL在传输层对网络连接进行加密。 SSL采用公开密钥技术,保证两个应用间通信的保密性和可靠性。 SSL在服务器和客户机两端可同时被...
一个古典密码破解题目,挺有意思的。
压死骆驼的是最后一根稻草,
针对常见问题,介绍一些实用的Django开发技巧
从Jekyll-bootstrap切换到Minimal Mistakes
1.建议 建议新手先看完一本django开发入门书籍,熟悉manage.py -h常用命令!