- 博客(38)
- 资源 (23)
- 收藏
- 关注
原创 leetcode-1.Two Sum
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sam
2017-02-04 22:52:47 329
原创 深入浅出设计模式python版——观察者模式(observer)
书中第二个设计模式——观察者模式首先,祭出类图然后是java内置的观察者模式类图书中举得例子:
2016-04-24 22:51:16 4729
原创 深入浅出设计模式python版——策略模式(stratery)
书中第一个设计模式是策略模式:书中以模拟鸭子应用问题作为实例,一款游戏应用中要求有各种各样的鸭子。 先用继承来实现了这一个应用,其设计如下: 这个设计主要是以Duck类作为基类,后面所有的鸭子类均以此类派生而来,刚开始在应用还不是很复杂的时候,似乎还没有什么问题,但当派生出来的类(鸭子的类型)越来越多时,问题就出现了。并不是
2016-03-24 20:10:16 789
原创 python核心编程-第六章习题答案
6.1 字符串.string 模块中是否有一种字符串方法或者函数可以帮我鉴定一下一个字符串是否是另一个大字符串的一部分?有#No.1sour = "ABCDEFG"des = "CD"print sour.find(des)print sour.index(des)print sour.rfind(des)print sour.rindex(des)
2016-02-10 10:57:06 1557
原创 剑指offer 实现数组的全排列
思路:递归实现: 交换元素->递归->交换元素。递归到数组末尾是打印所有元素,所以得记住数组头。#include void printAll(int a[], int n);void printInt(int a[], int n);int *g;int num;int main(int argc, char *argv[]){ int a[] = {1,2,3};
2014-12-11 21:42:16 664
原创 剑指offer 面试题20 顺时针打印矩阵
E:\arithmetic\PrintRotateArray#include #define MIN(a, b) ( (a) < (b) ? a : b )void printArray(int **arr, int row, int col);int main(int argc, char *argv[]){ int arr[4][4]; int i = 0 ,
2014-08-31 21:37:13 433
原创 剑指offer 面试题19 二叉树的镜像
E:\arithmetic\SubTree#include #define END (-2000)typedef struct BinaryTreeNode{ int value; struct BinaryTreeNode *lChild; struct BinaryTreeNode *rChild;}TreeNode;TreeNode* insertNodePre(in
2014-08-27 22:19:18 453
原创 剑指offer 面试题14 调整数组顺序使奇数位于偶数前面
#include void toOddEven(int arr[], int n);void printfArray(int a[], int n);int main(int argc, char *argv[]){//测试用例:奇偶都有,只有奇数或只有偶数,只有一个数, 所有奇数都在前面,所有偶数都在前面 int a[] = {0,1,3,4,2,6,8,9,7,5} ; pr
2014-08-24 19:32:22 430
原创 剑指offer 面试题12 打印1到最大的n个数
E:\arithmetic\PrintN注意用int 或者long可能不能满足范围 所以要用char[],
2014-08-23 18:54:08 485
原创 剑指offer 面试题9 斐波那契数列
E:\arithmetic\FibonacciO(n)注意性能的要求 ,数特别大的时候要用long long 或者更大要
2014-07-15 13:07:01 391
原创 剑指offer 面试8 旋转数组的最小数组
#include void rotateArray(int a[],int length);int main(int argc, char *argv[]){ //测试用例 正常; 只有1个元素;最小元素在开头;头尾和中间都是相等的元素 ;NULL int a[] = {3,4,5,1,2}; rotateArray(a, sizeof(a)/sizeof(int)); int
2014-07-15 11:31:09 325
原创 剑指offer 单向链表增删
#include #include //molloc freestruct LinkNode;void printLink(struct LinkNode *head);void addToLink(struct LinkNode **head, int value);void deleteLink(struct LinkNode **head, int value);
2014-07-12 21:10:32 308
原创 剑指offer 面试题3 二维数组的查找
#include void find(int **arr, int row, int colume, int k);int main(int argc, char *argv[]){ /*测试用例 a:k值在数组里(中间值 最大值 最小值),b:k值不在数组里(超过最大值 或者最小值 或者在之间但是没有) , c:传入的数组为null*/
2014-07-12 19:38:46 330
原创 剑指offer 面试题4 替换空格
E:\arithmetic\BlankTo#include #include void blankToSymbol(char a[]);int main(int argc, char *argv[]){ /*²âÊÔÓÃÀý£ºa)¹¦ÄܲâÊÔ£» b,c,d,e£¬f)ÌØÊâÖµ£¨¿Õ¸ñÔÚ¿ªÍ·£¬ÔÚ½á⣬ Á¬ÐøÁ½¸ö¿Õ¸ñ,È«¿Õ¸ñ,û¿Õ¸ñ
2014-07-11 19:31:29 509
原创 linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)6 UDP扫描
一、原理给一个端口发送UDP报文,如果端口是开放的,则没有响应,如果端口是关闭的,对方会回复一个ICMP端口不可达报文(对应ICMP首部前两个字段:类型3 代码3)。这种方式扫描速度慢;不可靠(udp和icmp都是不可靠协议)。二、实现方式及遇到的问题每个扫描线程(udpIcmpScanPort)会建立一个线程池,对每个要扫描的端口都创建一个线程udpIcmpScanEach(线程
2013-12-27 15:58:44 3899 1
原创 linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)5 TCP FIN方式
一、原理众所周知,当调用close()时要经历四次挥手的过程FIN-ACK-FIN-ACK.当我们发送FIN帧给一个非监听的端口时,会有RST应答,反之,发给一个正在监听的端口时,不会有任何回应。这种扫描方式速度快、隐蔽性好,但是不能用在windows系统中。二、实现方法及遇到的问题跟SYN扫描方式差不多,直接上代码吧。三、实现代码
2013-12-27 15:24:34 1957 3
原创 linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)4 TCP SYN方式
1.原理众所周知,当调用connect()时要经历三次握手的过程SYN-SYN&ACK-ACK,而这种SYN扫描方式又叫半开放式扫描,即客户端只发送SYN帧,端口开放回应SYN&ACK帧,端口关闭回应RST帧,缺点就是不可靠,可能会丢包。2.实现方式及遇到的问题前面架构篇有讲过,每个扫描线程(tcpSynScanPort)会建立一个线程池,对每个要扫描的端口都创建一个线程tcpSynS
2013-12-25 19:09:59 4169 1
原创 linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)3 TCP connect方式
1.原理前面原理篇有讲过,开放的TCP端口会等待客户端connect自己,所以我的客户端程序connect目标端口,根据返回值得不同判断对方是否开放了监听端口(connec()返回-1说明连接失败,则端口关闭;否则,成功,说明端口开放),扫面时间会比其他方式长,因为对于失败的端口不止connect一次。2.实现方式及遇到的的问题前面架构篇有讲过,每个扫描线程(tcpConScanPor
2013-12-25 15:24:52 2123 1
原创 linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)2整体架构篇
一.概述该程序在linux下用c语言实现TCP的三种端口扫描方式(connect、SYN、FIN)和UDP端口扫描;我用一个函数数组存放四个实现函数,根据选择的端口扫描方式,在创建线程的时候选择不同的函数来执行,主线程挂起等待扫描线程结束,最后打印开放的端口。我用一个全局的队列来存放存在的指针,链表实现。除了connect方式,其它的方式需要知道源主机的ip,因此在创建扫描线程之前,先获得本机
2013-12-19 22:34:39 2749 7
原创 linux下端口扫描的实现(TCP connect、TCP SYN、TCP FIN、UDP四种方式)1 原理篇
常用的端口扫描方式有以下三种:1.connect扫描我们知道,常见的TCP的socket实现过程为更本质的连接和结束的过程是如下这个样子的:从上面两个图我们可以看出来目标主机的一个端口如果是监听状态(LISTENING或者LINSTEN),那么当我connect目标主机时就能成功,否则说明端口是关闭的。优点: 编程简单,是需要一个API connect(),比较可靠
2013-12-19 21:28:30 14479
原创 Linux ping简单实现
需要在局域网内探测目标主机是否存在,基于icmp协议实现。1.icmp协议概述 我们平时用ping命令来查看网络上的另一个主机是否可达。工作原理:向目标主机发送icmp报文,目标主机得到后会把报文的数据加上icmp帧头传回给源主机。 当然,icmp协议的典型应用除了ping还有traceroute(侦测主机到目的主机之间所经路由情况),这里就不详细说了。
2013-11-28 16:56:37 4266
原创 linux抓包(基于libpcap)
linux下实现简单sniffer,要求同上一篇。这里基于llibcap实现,网上讲解的很详细,这里记录一下以备以后查看。参考:libpcap安装与例程这篇讲的很详细libpcap详解安装与配置就省略了。1.libpcap抓包框架 pcap_lookupdev():函数用于查找网络设备,返回可被pcap_open_live()函数调用的网络设备名指针。
2013-11-21 14:46:44 5430
原创 linux实现抓包 (使用原始套接字数据连路层协议)
网络作业2 IP分组流量分析程序 开发一个IP分组流量分析程序,实现以下功能:捕获并分析通过本地网卡的IP分组,输入捕获IP分组的时间限制,输出每个IP分组头部的主要字段(包括版本、总长度、协议、源地址与目的地址等),协议字段需要区分出具体类型(例如TCP、UDP、ICMP、IGMP、IPv6等)。实现方案: 1.原始套接字抓包 2.linux信
2013-11-18 15:06:46 3973
人民银行招考资料(2021年最新版)
2020-10-09
python网络编程书籍和配套代码
2016-07-21
fences 2.1破解版
2016-06-26
PYTHON高分入门书合集
2015-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人