自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (12)
  • 收藏
  • 关注

原创 Leetcode 215 Kth Largest Element in an Array

1. 问题描述  找出数组中第k大的数,注意:数组为无序数组。   2. 方法与思路  是一道经典算法题。解法也有好几种,一种是先进行排序,然后取出第k大的数;由于排序算法最快效率为O(nlogn)O(nlogn),所以整体效率为O(nlogn)O(nlogn)。二是使用优先队列,SLT中有优先队列的用法,内部是以堆的方式实现。时间效率也比较高,O(nlogn)O(nlogn)。   class

2015-06-28 18:29:56 5393

原创 Leetcode 216 Combination Sum III

1. 问题描述  找出所有k个数字的组合,使它们的和为n。设所有的数都为1~9,且没有重复数。结果要保持升序。   2. 方法与思路  采用回溯法可以很好地解决这个问题。   class Solution {public: int target,kk; vector<vector<int> > v;public: void traceback(int start, i

2015-06-28 17:38:51 5624

原创 渗透测试之学习使用metasploit

1. 介绍  Metasploit为渗透测试人员提供了大量友好、容易使用的工具。metasploit最初有HD Moore创建,后来被Nexpose漏洞扫描器的Radid7公司收购。在渗透测试过程中,可以手工完成的一些工作都可以通过metasploit来做。   Metasploit需要经常地更新,已维护最新的攻击库。可以每周运行以下命令更新metasploit。   # msfupdate2

2015-06-28 15:01:23 9176 1

原创 leetcode 1 Two Sum

1. 问题描述  在给定的数组nums[]nums[]中找出两个数,他们的和target。(满足numsi+numsj=targetnums_i + nums_j = target。返回这两个数在数组中的位置,起始位置为1。且i<ji < j。   2. 方法与思路  第一遍扫描,建立hash映射;考虑到数组中可能有numsi=numsjnums_i = nums_j的情况,映射结构为map<in

2015-06-27 15:31:21 5604

原创 Leetcode 6 ZigZag Conversion

1. 问题描述  给定一个字符串和一个行数,表示按照zigzag的方式扫描的结果,编写算法输出按行扫描的结果。   2. 方法与思路  首先要先明白zigzag的顺序,            明白了zigzag扫描后,要确定zigzag中字符和按行扫描字符的对应关系。有两点:   1). 每行中的列元素都会有对应的间隔span =2∗row−22*row-2,例如行为4的zigzag扫描

2015-06-27 11:46:18 5731

原创 Leetcode 227 Basic Calculator II

1. 问题描述  给遗传字符串类型的表达式,计算表达式的值。表达式只包含+、-、*、/和空格。   2. 方法与思路  此题和Basic Calculator I类似,只是左右括号换成了乘除符号。基本的做法依然是先转成后缀表达式的形式,然后在进行计算。   后缀表达式用vector<long> postfix的结构存储,为了方便,操作符和操作数都保存在postfix向量中,为了区分,操作数都以负

2015-06-27 11:10:43 6401

原创 Leetcode 228 Summary Ranges

1. 问题描述  给定一个升序的数组nums[](不包含重复数),求出数组中数字的范围。例如给定[0,1,2,4,5,7],返回[“0->2”,”4->5”,”7”]。2. 方法与思路  此题比较容易,只需要设一个计数器cnt,初值为nums0nums_0,然后循环遍历数组,cnt累加并与numsinums_i比较,如果相同则继续,否则将范围插入到要返回的向量中。注意处理只有一个数的情况。   c

2015-06-26 13:34:50 6049

原创 python 解析HTML

1. 理解网页上的数据网页上的数据主要有: HTMLXHTMLXMLJSON需要一个接受数据并解析的机制需要一个产生数据并发送的机制2. 解析HTML层次化的数据有多个解析HTML的第三方库,例如:LXML,BeautifulSoup,HTMLParser等等。解析HTML所面临的问题: 没有统一的标准。很多网页并没有遵循HTML文档2.1 BeautifulSoup

2015-06-25 21:36:07 9949

原创 Leetcode 217 Contains Duplicate

1. 问题描述  在一个给定的数组中,判断是否含有重复的数。2. 方法与思路  很容易的一个题目,直接hash判断即可,没有难度。   class Solution {public: bool containsDuplicate(vector<int>& nums) { if(nums.size() <= 0) return false; unordered

2015-06-25 17:04:19 5530

原创 Leetcode 218 The Skyline Problem

1. 问题描述   Notes:The number of buildings in any input list is guaranteed to be in the range [0, 10000].The input list is already sorted in ascending order by the left x position Li.The output list m

2015-06-25 16:44:14 8326

原创 Leetcode 219 Contains Duplicate II

1. 问题描述  给定一个整数数组nums[],查找是否存在两个下标i和j,满足numsi=numsjnums_i = nums_j 且|i−j|≤k|i-j| \le k。2. 思路与方法  这个问题比Contains Duplicate III要简单一些,思路方面可以参考上一篇文章Contains Duplicate III。采用“滑动窗口”+哈希的方法。不同的是,在窗口范围内只要找到满足has

2015-06-24 21:45:12 6136

原创 Leetcode 220 Contains Duplicate III

1. 问题描述  给定一个整数数组nums[],查找是否存在两个下标i和j,满足|numsi−numsj|≤t|nums_i-nums_j| \le t 且 |i−j|≤k|i-j| \le k。2. 方法与思路  总得思路就是:“滑动窗口”+unordered_map。   推理过程如下:   |numsi−numsj|≤t⇒|numsi/t−numsj/t|≤1|nums_i-nums_j|

2015-06-24 19:38:02 8932 1

原创 Leetcode 221 Maximal Square

1. 问题描述  给出一个二维的01矩阵,计算出包含1做多的方阵,并返回包含1的个数。   2. 方法与思路  利用动态规划的思想。以右下角基准,找出最大边长。状态转移方程如下:   dp[i][j] = min(d][i-1][j], dp[i][j-1], dp[i-1][j-1]) +1;   其中dp[i][j]表示以(i,j)为右下角的全1矩阵的最大边长。   class Solu

2015-06-23 11:19:27 6871

原创 leetcode 222 Count Complete Tree Nodes (计算完全二叉树节点数)

1. 问题描述  计算完全二叉树的节点数。对于完全二叉树的定义可参考wikipedia上面的内容。2. 方法与思路  最简单也最容易想到的方法就是使用递归,分别递归计算左右子树的节点数的和。但此方法最容易超时,一般不可取。   int countNodes(TreeNode* root) { if(root == NULL) return 0; else if(ro

2015-06-22 14:17:37 8568

原创 Leetcode 223 Rectangle Area

1. 问题描述  求两个矩形并的面积。   2. 方法与思路  可以先求出两个矩形的交面积,然后用两个矩形面积的和减去交面积即为矩形并面积。   注意:虽然面积不超过int的最大值,但中间边长运算时可能超过,注意处理细节,否则容易溢出。   class Solution {public: int computeArea(int A, int B, int C, int D, int

2015-06-21 12:27:50 7208

原创 leetcode 224 Basic Calculator

1. 问题描述  计算字符串表达式的值,表达式中只含有(,),+,-,空格和非负整数。例如:   “1 + 1” = 2   ” 2-1 + 2 ” = 3   “(1+(4+5+2)-3)+(6+8)” = 23   原文链接:https://leetcode.com/problems/basic-calculator/2. 方法与思路2.1 利用后缀表达式计算  一种思路是按照常规的方法

2015-06-21 00:39:33 7629 2

原创 leetcode 225 Implement Stack using Queues

1. 问题描述  用队列来模拟栈的操作。实现如下栈操作:   push(x) 将元素x入栈。pop() 出栈。top() 获取栈顶元素。empty() 判断是否为空。  注意:只能用队列的标准操作,队头取元素,队尾插入元素,获取队列的大小,以及队列是否为空。2 方法和思路  可以用两个队列q1和q2来实现栈的操作,设q2为辅助队列。   入栈时将元素都存入q1队列中。出栈时将q1中

2015-06-20 10:17:25 7033

原创 Leetcode 226 Invert Binary Tree

1.问题描述  交换二叉树的左右子树。   2. 方法思路  直接递归交换左右子树即可,c代码如下:   /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * };

2015-06-19 23:23:51 7248

原创 找出数组a[]中符合a[i]+a[j]=K的数对

1.问题描述  在一个整数数组中,元素都为整数,没有重复数。设计一个算法找出满足两个数的和等于k值得数对。例如a[]={1,3,8,6,4}中两个数的和为7的数对为(1,6)和(3,4)。2. 解决方案2.1 暴力法  首先先到的可能就是暴力法,暴力没举出所有的数对然后再判对他们的和是否为K,但这种方法的时间复杂度为O(n^2),效率比较低,一般不可取。代码也就不写了。、2.2 二分法  先对数组进

2015-06-19 19:18:11 10589

原创 python 抓取网页

1. 主要内容  此部分的主要内容包括:抓取网页的的基本方法。使用urllib和urllib2库。可以使用参数编码。2. 代码举例2.1 基本的抓取  使用sudo python命令,进入python环境。在此之前可以自己搭一个web服务器,专门做测试用。我在我的一个Ubuntu系统中搭建了LNMP环境,地址为192.168.1.33。   其实python代码很简洁,抓取一个网页只需要两

2015-06-18 21:18:34 7881

原创 mac OS X下终端使用tree命令列目录

1. 问题描述  相信很多使用过Linux的用户都用过tree命令,它可以像windows的文件管理器一样清楚明了的显示目录结构。不过有是有并不是系统本身就自带的,如果需要的话,Ubuntu下可执行下列命令安装。      sudo apt-get install tree            那么在mac的OS X系统中如果还想使用tree这个命令,可以参考下下面的解决方案。2. 解

2015-06-18 17:39:38 17729

原创 求连续数组中唯一重复的元素

1. 问题描述  数组a[n],1到n-1这n-1个数放在这个数组中,其中有一个数重复一次。写一个算法找出这个数来。2. 方法与思路2.1 累加和法  采用数学求和的方法,由于数组中只有一个数是重复的,且又是连续的,根据累加和原理,对数组求和然后减去1到n-1的和即为所求的重复数。   int OnlyRepeat_Sum(int a[],int len){ int i,re = 0;

2015-06-15 10:49:18 8624 2

原创 渗透测试漏洞利用之漏洞攻击

1. 查找目标系统的相关漏洞  在前一篇渗透测试的博文中,介绍了目标系统相关信息的收集方法。接下来,任意Kioptrix靶机为例,具体介绍下相关漏洞的详细利用过程。   在exploit-db.com网站上,一般能够找到已知漏洞的有价值的信息,以及验证其有效性的概念验证代码(POC)。概念验证代码可以帮助你理解这个漏洞的原理和形成机制,从而让你能够确定防护措施是否正常工作。2. 离线的漏洞库  在

2015-06-14 23:47:50 14260

原创 渗透测试之手动漏洞利用

1. 实验环境描述  为了做漏洞利用的实验,前一片文章我已经介绍了Kioptrix靶机的安装和网络的配置。现在看一下虚拟机里必要的两个系统:Kioptrix虚拟机和Kali Linux虚拟机。前者为靶机,后者作为攻击机使用。网络拓扑如下图所示:   2. 列举服务  首先我们使用nmap命令对网络中的机器进行扫描,输入以下命令对192.168.50.0/24网段上所有的IP和TCP端口进行扫描。

2015-06-11 01:24:55 11784

原创 渗透测试之漏洞利用开启篇

1. 漏洞利用目的   简单的了解网络中已知的漏洞,对网络和系统的综合安全控制是不够的。进行针对性的,全面的漏洞测试是有很多好处的。    跳出安全工作的猜测和怀疑。   通过提供关键基础设备的入侵而导致敏感数据泄露或更改,使安全问题引起重视,管理团队也可以获得实施补救措施的必要细节。验证防护措施的安全性。   漏洞利用渗透测试可以验证理论上防御控制的安全性,是管理者能够证明采取的

2015-06-09 23:26:28 8928

原创 求数组中重复次数最多的元素

1.问题描述  例如:数组a={2,3,1,5,5,5,5,7,8,1},元素2、3、7、8各出现1次,1出现两次,5出现4次,则重复次数最多的元素为5.2. 方法与思路2.1 以空间换时间,索引法  定义一个数组int cnt[MAX],将其元素全部初始化为0。然后遍历数组a,执行cnt[a[i]]++操作。最后在cnt数组中找最大的数,对应的数即为重复次数最多的数。   代码示例如下:

2015-06-08 21:32:05 16381 4

原创 python 使用scapy编写DNS Fuzzer

1. 描述  使用scapy库,编写一个DNS Fuzzer工具,并测试。在这之前,先说明一下DNS协议请求包是封装在IP包中的UDP包(有些情况也可使用TCP)中,且UDP的端口为53。进入scapy,查看一下UDP和DNS包的封装情况。   2. 代码示例  代码中,我们需要对输入的IP地址做合法性校验。这需要用到netaddr中的valid_ipv4,可以执行sudo pip install

2015-06-08 10:35:28 12026 1

原创 python 使用scapy进行ARP扫描

一. 描述  使用scapy第三方库,编写一个可以对一个网段进行ARP扫描,获得该往段内活跃主机的IP地址和MAC地址。二. 分析与方案首先,从scapy导入相关的模块。Ether()/ARP()构造ARP包。srp1()发送与接收ARP包。代码示例如下:#!/usr/bin/env python# _*_ coding=utf-8 _*_from scapy.all import *i

2015-06-08 09:16:58 20351

原创 求两个有序整型数组的交集

1. 问题描述  有两个有序的整型数组a和b(没有重复元素),他们的长度分别为lenA和lenB,求出他们的共同元素。   例如:a = 0,1,3,5,7,9,11;b = 2,3,4,7,11;   它们的交集为{3,7,11}。2. 方法思路  求交集的方法有很多种,但数组的长度会影响算法的效率。2.1 长度相当时,可采取的算法2.1.1 二路归并  对于数组a,b分别以i,j从头遍历数组

2015-06-06 22:55:58 15521 2

原创 python 使用scapy进行帧注入

1. 描述  使用scapy进行以太网帧的注入,相对于RAW_SOCKET还是比较简单的。在讲述packet注入之前,先了解一下scapy伪造以太网帧的相关知识。下图为以太网帧格式和scapy对应的封装包格式。   2. 示例2.1 使用scapy构造IP数据包  进入scapy环境,输入以下代码:    >>> >>> pkt = IP()/ICMP()/”hello” >>

2015-06-06 20:23:05 11444

原创 二分法计算有序数组中数字出现的次数

1. 问题描述  在给定的一个已经排好序的数组中,找出指定数字出现的次数。例如数组[1,2,3,4,4,4,4,6,8,9]中4出现的次数为4次。2. 思路与方法  此问题可以在二分法的基础上进行改进。假设数组a为递增的数列,需要查找的数字为num,可以分别查找num在数组a中出现的起始位置和最后一次的位置,通过二者的差计算出数字num在数组a中出现的次数。   c++代码如下:#include

2015-06-03 21:12:09 11116 1

c++ HTTP协议库 httplib

c++封装的http协议库,里面有详细的样例,可作为不错的学习参考资料。

2015-04-03

c++ 可靠udp协议 reliableudp

udp本身是一种无连接的传输协议,不能够保证数据的可靠传输。但是可以通过一定的方法控制,做到数据的可靠传输;此代码仅作学习使用。

2015-04-03

Qt入门案例记事本

用Qt creator开发的一个类似于windows记事本的软件。 能够实现新建,打开,保存,退出,关闭,查找,复制,黏贴等功能。对学习Qt开发的人来说,十个不错的参考。内含菜单栏,工具栏,布局管理,如何加入图标等。

2014-01-20

fragstats4.2

fragstats4.2 景观格局分析 景观破速度分析等等。

2014-01-16

ACM 编程竞赛模板

ACM编程竞赛模板 浙大内部资料 含各种常用算法

2013-11-15

七种qsort排序方法c++代码 排序算法模板

七种qsort排序方法c++代码 排序算法模板

2013-11-15

LanScanner(MFC程序)扫描局域网内主机Mac地址和主机名

计算机网络编程,扫描局域网内活动主机的Mac地址,可以获取本机mac,IP,子网掩码,网关mac等。

2013-11-12

arping获得目的主机的mac地址

输入可执行文件名和目的Ip地址,ping到mac地址,含有C++源码。

2013-11-12

《计算机网络高分笔记》

考点与要点分析 核心考点 ****掌握计算机网络协议、接口、服务等概念; *** 掌握计算机网络体系结构的概念,分层的必要性; ** OSI和TCP/IP体系结构的比较;

2012-02-08

应用JSP开发过程 动态网页开发过程

利用Javascript语言,动态网页开发

2010-12-06

空空如也

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

TA关注的人

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