- 博客(36)
- 收藏
- 关注
原创 利用Hostapd搭建无线wifi
网上这类文章一大堆,但都有一些问题,应该是环境不一样,所以在搭建之前,先说下我的环境:1.Linux系统:ubuntu 10.042.无线网卡:TP-LINK WN822N(需要网卡支持Master模式,其他网卡请自行搜索)ok, 下面介绍如何搭建:step1:安装网卡驱动,网卡都不识别的话就gg了,请参见我的博文《TL-WN822N TL-WN722N linux安装驱动
2013-08-26 10:02:20
2411
原创 makefile 编写问题记录
最近写了个小程序,用到了pow()函数,我们都知道需要添加头文件,以及在gcc编译的侍侯加上-lm选项,但是这个-lm选项的位值也是有讲究的,我之前的makefile如下:solution:solution.o gcc -lm solution.o -o solution solution.o:solution.c gcc -c solution.c
2013-08-24 11:19:10
788
原创 Iptables 配置学习笔记
1.配置准备#iptables -F //清除原有规则#iptables -X //清除自定义链 2.定义策略#iptables -P INPUT DROP //默认丢弃,即丢弃所有的包#iptables -P OUTPUT DROP#iptables -P FORWARD DROP 3.典型的规则配置实例
2013-08-24 11:13:37
746
原创 IPSec的两种工作模式及其报文封装格式
隧道(tunnel)模式:用户的整个IP数据包被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中。通常,隧道模式应用在两个安全网关之间的通讯。传输(transport)模式:只是传输层数据被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被放置在原IP包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯
2013-08-24 11:12:09
9500
原创 fluentd 插件开发
fluentd默认支持了一些插件,如apache,但是最近做项目对squid日志进行分析时,发现fluentd没有这个默认插件,需要自己开发,方法如下自己编写一个ruby脚本,比如:in_mytail.rb,将他放到/etc/td-agent/plugin 即可修改/etc/td-agent/td-agent.conf插件开发" title="fluentd 插件开发" style="
2013-08-24 11:10:24
2239
原创 Mongodb的备份与恢复
坑爹的保密检查需要擦除硬盘,所有环境都需要重新安装,Mongodb数据库需要进行备份,还好Mongodb为我们提供了mongodump和mongorestore两种方法,非常方便。进到mongodb的bin目录下:备份:mongodump -d Injection //Injection 就是你要备份的数据库执行之后会生成dump文件夹,里面子目录Injec
2013-08-24 11:06:19
689
原创 TL-WN822N TL-WN722N linux安装驱动
这两款的芯片都是AR系列的芯片,所以只要安装这款芯片的驱动:ath9k_htc即可:只需要两步1.安装compat-drivers-3.7.9-1.tar.gz,这类似于万能驱动,里面包含了很多芯片的驱动,很好用,编译时间有点长,耐心等待地址:https://www.kernel.org/pub/linux/kernel/projects/backports/stable/v3.7
2013-08-24 11:04:21
3944
原创 使用ip route命令实现多链路负载均衡
其实在linux下实现多链路负载均衡很简单,只需借助ip route命令即可。环境:ubuntu 10.04 ,两个3G网卡,分别为CDMA2000 和 WCDMA1.分别将两个网卡拨号上网,方法不再具体描述,拨号成功后会多出两条链路ppp0和ppp1,注意拨号脚本里不要添加默认网关,(具体请参见《pppd拨号与默认网关》),而是手动添加两条默认路由。2.利
2013-08-24 11:02:35
5137
转载 描述C,C++编译和链接过程
文章转自:http://my.oschina.net/anyway/blog/11262详解link 有 些人写C/C++(以下假定为C++)程序,对unresolved external link或者duplicated external simbol的错误信息不知所措(因为这样的错误信息不能定位到某一行)。或者对语言的一些部分不知道为什么要(或者不要)这样那样设计。了解本文之后, 或许
2013-07-01 15:41:41
2070
转载 浅谈GCC预编译头技术
文章转自:http://lych.yo2.cn/articles/%E6%B5%85%E8%B0%88gcc%E9%A2%84%E7%BC%96%E8%AF%91%E5%A4%B4%E6%8A%80%E6%9C%AF.html其实刚开始编程的时候,我是丝毫不重视编译速度之类的问题的,原因很简单,因为那时我用BASICA。后来一直用到C++ Builder,尽管Borland的广告无时无刻不在吹
2013-06-18 11:13:28
750
转载 客户端 用不用 bind 的区别
文章转自:http://blog.chinaunix.net/uid-23193900-id-3199173.html无连接的socket的客户端和服务端以及面向连接socket的服务端通过调用bind函数来配置本地信息。使用bind函数时,通过将my_addr.sin_port置为0,函数会自动为你选择一个未占用的端口来使用。 Bind()函数在成功被调用时返回0;出现错误时返
2013-06-17 17:26:36
754
转载 死锁
文章转自http://www.cnblogs.com/simonhaninmelbourne/archive/2012/11/24/2786215.html什么叫死锁?所谓死锁: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 那么为什么会产生死锁呢?1.因为系统资源不足。2.进程运行推进的顺序
2013-06-14 16:38:07
743
原创 DP实例之最长上升子序列LIS
/* LIS:最长递增子序列,例如:23453267,最长递增子序列为:234567 lis(i)表示以a[i]结束的递增子序列的长度 lis(i)=max{lis(k)+1,1} k from 0 to i-1 最长递增子序列长度为max(lis[]);*/int LIS(int a[],int len){ int *p=(int *)mallo
2013-06-13 11:21:57
742
原创 DP实例之最长公共子序列LCS
/* LCS:求最长公共子序列 例如:s1="abdrge",s2="adreg",则LCS="adre" 状态方程:lcs(i,j)=lcs(i-1,j-1)+1,其中s1[i]=s2[j] 或者 lcs(i,j)=max{lcs(i,j-1),lcs(i-1,j)}*/int LCS(char *a,char *b){ int len_a=strl
2013-06-13 11:18:34
919
原创 关于回调函数
关于回调函数,搜集了一些网上的说法:1.形象的例子: 你饿了,想吃饭,就一会去问你妈一声"开饭没有啊?"这就正常函数调用. 但是今天你妈包饺子,花的时间比较长,你跑啊跑啊,就烦了.于是你给你妈说,我先出去玩会,开饭的时候打我手机.等过了一阵,你妈给你打电话说"开饭啦,快回来吃饭吧!" 其中,你告诉你妈打手机找你,就是个你把回调函数句柄保存到你妈的动作.你妈打电话叫
2013-06-09 10:21:39
787
转载 extern "C" 的用意
文章转自:http://blog.csdn.net/wujian53/article/details/706975前些天,编程序是用到了很久以前写的C程序,想把里面的函数利用起来,连接发现出现了找不到具体函数的错误:以下是假设旧的C程序库C的头文件/*-----------c.h--------------*/#ifndef _C_H_#define _C_H_
2013-06-04 16:21:42
578
转载 构造函数为何不能为虚函数
文章部分转自:http://blog.csdn.net/lmsnju/article/details/5386617构造函数不能声明为虚函数的原因是:解释一:所谓虚函数就是多态情况下只执行一个。而从继承的概念来讲,总是要先构造父类对象,然后才能是子类对象。如果构造函数设为虚函数,那么当你在构造父类的构造函数时就不得不显示的调用构造。还有一个原因就是为了防错,试想如果你在
2013-05-30 19:55:18
868
原创 双向链表操作大全C语言实现
双向链表的操作和单链表很像,主要包括创建,删除,插入;只要注意下指针的操作即可,废话不多说,直接上代码:typedef struct dnode{ int num; struct dnode *pre; struct dnode *next;}Dnode,*pDnode;pDnode Create() //用户输入创建,-1表示结束{ pDnode he
2013-05-30 15:53:15
772
原创 单链表操作大全C语言实现
单链表的操作一般包括:建立,删除节点,插入节点,链表反转1.单链表建立,包括从终端输入和由数组转换而来两种:typedef struct node{ int num; struct node * next;}Node,*pNode;pNode CreateLink(){ pNode head=(pNode)malloc(sizeof(Node));
2013-05-30 11:08:53
828
转载 C++类中成员变量的初始化总结
文章转自:http://buptdtt.blog.51cto.com/2369962/7818301、普通的变量:一般不考虑啥效率的情况下 可以在构造函数中进行赋值。考虑一下效率的可以再构造函数的初始化列表中进行。class CA{public:int data;public:CA();};CA::CA():data(0)//……#1……初始化列表方式{/
2013-05-29 09:58:19
857
转载 浮点数的二进制表示
文章转自:http://www.ruanyifeng.com/blog/2010/06/ieee_floating-point_representation.html1.前几天,我在读一本C语言教材,有一道例题: #include void main(void){ int num=9; /* num是整型变量,设为9 */
2013-05-28 15:29:57
705
原创 2013微软暑期实习笔试错题、疑题整理
参加了微软“智在未来”暑期实习笔试,跪了,将错题、疑题整理如下,方便后面复习整理。2. What's the output of the following code?(3 Points)[cpp] view plaincopyclass A { public: virtual void f()
2013-05-28 10:13:53
910
原创 根据二叉树的先序和中序遍历还原二叉树
#include#includetypedef struct node{ int value; struct node *left; struct node *right;}Node,*pNode;/* *根据二叉树的先序遍历和中序遍历,还原二叉树 *先序:1,2,4,7,3,5,6,8;中序:4,7,2,1,5,3,8,6*/pNode BuildTree(int p
2013-05-27 19:27:50
1449
原创 获取二叉树的叶子数、高度以及左右子树的交换的C语言实现
二叉树的一些操作具有天然的递归性,本文实现了获取二叉树的叶子总数、获取二叉树高度以及交换二叉树的左右子树,代码均已编译通过。 1.获取二叉树叶子总数:左子树叶子总数+右子树叶子总数typedef struct BNode{ char value; //类型假设为char struct BNode *left; struct BNode *right
2013-05-25 15:58:47
2235
1
原创 二叉树的创建、前/中/后序遍历、按层遍历C语言实现
二叉树的概念、性质等就不多介绍了,这里用C语言实现了二叉树的建立(1.用户输入,2.给数组参数),前中后序遍历和按层遍历。 1.二叉树的建立typedef struct BNode{ char value; //类型假设为char struct BNode *left; struct BNode *right;} Node,*pNode,*
2013-05-23 19:14:18
1724
转载 内存泄露终极分析
文章转自http://www.360doc.com/content/11/0302/18/5404234_97525468.shtml 内存泄漏是主内存分配了部分内存后而没有释放,逐渐耗尽内存资源,导致系统崩溃。它的后果甚至是会影响到以后内存的正常运行或使用内存损坏~~~ 它主要是指程序中间动态分配了内存,但是在程序结束时没有释放这部分内存,从而造成那一部分内存不可用的情况,重起
2013-05-23 10:07:54
1685
转载 getchar,scanf以及缓冲区的概念!
博客转自http://blog.csdn.net/weinixugeyuan/article/details/3980498getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了。getch()和getche()是conio.h中的库函数,它的作用是从键盘接收字符。getchar带有显示。
2013-05-22 21:20:00
876
1
原创 vim 备份还原
vim是编辑神器,配置成IDE风格,用起来十分顺手,但是配置过程比较麻烦,前几天配置完了,重做系统还需要再配一遍吗,答案是否定的,如何还原vim环境呢?我的实验环境:ubuntu10.04.2 step0:安装vim:sudo apt-get install vimstep1:备份文件:1. 文件夹:/.vim 2.配置文件:/etc/vimrcstep2:sudo apt-g
2013-05-22 11:02:49
1515
原创 分段和分页内存管理
两者描述 打个比方,比如说你去听课,带了一个纸质笔记本做笔记。笔记本有100张纸,课程有语文、数学、英语三门,对于这个笔记本的使用,为了便于以后复习方便,你可以有两种选择。 第一种是,你从本子的第一张纸开始用,并且事先在本子上做划分:第2张到第30张纸记语文笔记,第31到60张纸记数学笔记,第61到100张纸记英语笔记,最后在第一张纸做个列表,记录着三门笔记各
2013-05-17 14:29:55
9123
3
原创 二分搜索递归与非递归C语言实现
据说90%的程序员都无法正确的写出二分搜索,试了下果然如此,需要注意的地方挺多,所以讲递归与非递归的写法记录下来,以便于复习int binary_search(int array[],int n,int key) //非递归{ int low=0; int high=n-1; while(low<=high) //请注意= { if
2013-05-17 11:00:51
1220
原创 归并排序C语言实现
void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void merge_array(int a[],int low,int mid,int high,int result[]){ int i,j,k; i=low; j=mid+1; k=0; while(i<=mid
2013-05-17 10:55:06
787
原创 DP实例之01背包问题C语言实现
问题描述: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=m
2013-05-17 10:47:52
1885
原创 快速排序C语言实现
void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}int partition (int input[],int low,int high){ int position=low-1; int key=input[high]; while(low<high) { i
2013-05-16 10:52:07
711
原创 堆排序C语言实现
堆的概念这里不再描述,这里主要实现堆排序,堆排序主要分为两步:1.堆化数组(最小堆);2.交换首尾元素,(则最后一个元素为最小),调整前n-1个元素,使前n-1个元素仍为为最小堆,循环,直到还剩一个元素;这样排序下来,数组为倒序。代码如下:void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}v
2013-05-16 09:27:52
756
原创 冒泡排序C语言实现
即将找工作,打算将各个排序算法复习一遍,便于以后复习,代码均在codeblock下编译通过,重要的地方有注释提醒,第一篇:冒泡排序void swap(int *a,int *b){ int temp=*a; *a=*b; *b=temp;}void bubble_sort(int input[],int length){ int i,j,flag=
2013-05-15 19:39:14
855
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人