自定义博客皮肤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)
  • 收藏
  • 关注

原创 内核模块加载

近来搭建实验环境,需要换一下系统的拥塞控制算法。一般的linux系统默认的tcp拥塞控制算法是cubic和reno,但是我现在需要使用veno、vegas。记录下查找的资料和最后实现方法。1、查看内核支持的tcp拥塞控制算法在文件/proc/sys/net/ipv4/tcp_allow_congestion_control,这里列出了现在系统可以切换使用的拥塞控制算法。查看发现,这个文件里只给出了c

2015-12-11 16:55:30 883

原创 Ubuntu12.10编译MPTCP

准备工作1、操作系统:Ubuntu-12.10-desktop-i386(32位)或者Ubuntu-14.04-desktop-amd64 (64位) 2、Mptcp源码:从官网下载 http://multipath-tcp.org/snapshots/ 我下载的是mptcp_2015_11_17.tar.gz安装系统编译mptcp源码1、安装操作系统,并安装好网卡驱动。网卡驱动安装见上

2015-12-02 17:00:01 3413 2

原创 Ubuntu安装DGE-530T网卡驱动

搭建实验环境需要在ubuntu上安装DGE-530T网卡驱动,搜了一下都是windows的,找到一个Linux的但是因为系统中没有linux/moudle.h,电脑网络又不通,就找了一个方便的方法,用ndiswrapper在Linux环境下安装windows的网卡驱动,记录一下。一、准备工作1.下载最新的ndiswrapper包,下载地址 http://sourceforge.net/project

2015-11-23 20:55:59 865

原创 读《C专家编程》笔记-关于内存泄漏

运行一段固定的时间然后终止的程序,大多不需要担心如何释放内存,当程序停止时所分配的内存会被自动回收。而当程序的生存时间要长一点,这就需要管理动态内存的分配和回收。这时在使用malloc()和free()时就要非常慎重。堆经常会出现两种类型的问题: 1.释放或者改写仍在使用的内存(称为“内存损坏”)。 2.未释放不再使用的内存(称为“内存泄漏”)如何避免内存泄漏每次当调用malloc分配内存时,注

2015-11-23 10:17:48 424

原创 用VS2010打开VS2012项目解决方案

最近做的东西需要重新编译一下别人写的代码,但是他当时用的是VS2012,我这里是VS2010,所以在过程中遇到点小问题,记录一下。 BHO_PART BHO部分是要编译生成一个动态链接库作为浏览器的插件,首先出现的问题是打开项目编译的时候报错 1、error : 缺少必需的文件“”C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win

2015-11-17 08:54:43 1126

原创 读《C专家编程》笔记-第六章

auto 和static关键字对堆栈怎么实现函数调用的描述也同时解释了为什么不能从函数中返回一个指向该函数局部自动变量的指针,例如:char * favorite_fruit(){char deciduous[]="apple";return deciduous;}当进入该函数时,自动变量decidudous在堆栈中分配。当函数结束后,变量不复存在,它所占有的堆栈空间被回收,可能在任何时候被覆

2015-10-28 15:51:36 301

原创 读《C专家编程》笔记-第三章 分析C语言的声明

typedeftypedef为一种类型引入新的名字,而不是为变量分配空间。在某些方面typedef类似于宏文本替换-它并没有引入新类型,而是为现有类型取个新名字,但他们之间存在一个关键性的区别。typedef看上去跟变量声明完全一样,普通的声明表示“这个名字是一个指定类型的变量”,而typedef关键字并不创建一个变量,而是宣称“这个名字是指定类型的同义词”。 必须注意typedef的缺点

2015-10-26 15:59:16 446

原创 读《C专家编程》笔记—第二章 这不是Bug,而是语言特性

容易混淆的const关键字const并不能把变量变成常量!在一个符号前加上const限定符只是表示这个符号不能被复制,也就是它的值对于这个符号来说是只读的,但它并不能防止通过程序的内部(甚至是外部)的方法来修改这个值。const最有用之处就是用它来限定函数的形参,这样该函数将不会修改实参指针所指的数据,但其他的函数却可能会修改它。这可能就是C和C++中const最一般的用法。 const可

2015-10-19 16:25:27 377

原创 fscanf函数

参考连接:http://blog.csdn.net/misskissc/article/details/25137335 原型:int fscanf(FILE *stream, char *format,[argument…]);返回值:整型,数值等于[argument…]的个数FILE*fp;char a[10];int b;double c;fscanf(fp,"%s%d%lf",a,

2015-08-10 15:35:56 489

原创 C语言文件输入数组输出小代码

要求:从.txt文件读入数据,文件中数据有100行4列。输出要求各列输出一个数组,一列一个数组。#include<stdio.h>#include<stdlib.h>#define N 4 //4列#define L 100 //100行const char file_name[50] = "d:\\a.txt";int main(int argc, char *argv[]){

2015-08-10 15:30:16 1335

转载 &&和||优先级

在C语言程序中经常会遇到判断条件是否满足的情况,在解决这种情况时凭感觉往往不是很准确,通过程序实测可以很好的解决问题。比如在遇到一连串&&和||的时候,优先级的问题必须考虑清楚才能得到准确的答案。使用一下程序进行实测或和与的优先级#include <iostream>using namespace std;int main(){ int a=1,b=2,c=3,d=4; if(a<b&&b<

2015-08-10 15:10:47 1489 1

原创 uint64 和字符串相互转换

uint64转换成string snprintf函数声明int snprintf(char *restrict buf, size_t n, const char * restrict format, ...);例如:snprintf(string,sizeof(string),"%ju",GID);string转换成uint64GID=strtoull(pszValue, NULL, 0);

2015-08-07 15:57:32 23964

原创 字符指针和字符数组的初始化

char* str1 = "abcd";char str2[] = "abcd";char* str1 =”abcd” 含义是先新建一个字符串,内容是abcd 然后str1是一个头指针,指向这个串. 但是这个新建串是作为const存在的,并不是一个可以编辑的变量,因此,一旦你想更改其中的值,程序就会出错。根据定义:指向常量字符串的指针不能更改指针指向的内容,但是可以改变本身的值,既是执行*(st

2015-08-07 15:48:40 1073

原创 多维数组和指针操作

一维数组名即是一个指针常量,它代表数组第一个元素的地址,我们知道一维数组的长度,那么可以通过数组名输出一维数组的所有元素:#include <stdio.h>int main(void){ int i; int a[5] = {1, 2, 3, 4, 5}; int *p = a; for( i = 0; i < 5; i++ ) printf( "

2015-08-07 15:37:26 386

原创 字符串操作函数的一些细节问题

最近在写一个数据库的部分数据显示工具,然后把结果以表格形式输出时需要很多的字符串操作函数和多维数组及指针的操作,对其理解更多,现在总结一下。1、strcpy 、strncpy 和 strlcpy 函数strcpy原型:extern char *strcpy(char *dest,char *src); 功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dest

2015-08-07 15:20:35 840 1

原创 结构体成员偏移量

今天在研究计算C语言中,结构体成员的偏移量问题。发现一个宏定义就可以计算得到,在这里记录一下。#define offsetof(type, field) (long)&(((type*)0)->field)其含义是:在不生成结构体实例的情况下计算结构体成员的偏移量。 结构体变量的某成员的地址等于该结构体变量的基址加上结构体成员变量在结构体中的偏移量 (type*)0,就是假设地址0处存放

2015-07-28 17:01:42 1006

转载 Socket收发数据浅析

作为一个套接字描述符,它拥有两个缓冲区,分别为接收数据缓冲和发送数据缓冲区,当套接字有数据到达时,首先进入的就是接收数据缓冲区,然后应用程序从这个缓冲区中将数据读出来,这就是套接字recv的过程,应用程序调用send发送数据实际是把数据拷贝到发送数据缓冲区,再由系统在缓冲区的数据发送出去。缓冲区的大小可以用SetSocketOpt()设定,同时操作系统对它有一个默认大小。 当套接字接受数据缓冲区满

2015-07-25 15:28:28 2067

转载 linux 下svn 命令详解

最近要用到linux下的svn,简单学习了一下,这里做个总结。1、Linux命令行将文件checkout到本地目录svn checkout url(url是服务器上的目录)例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 注:这里一般是下载自己需要的,或者有权限的所有目录,以便以后自己在相应目录下做修改,以及内容的提交2、Linux命

2015-07-14 19:40:12 488

原创 assert(0)的作用

今天在看框架例子的代码里,发现很多地方没有做什么,就只是错误检查,然后后面就会跟一个assert(0),比较奇怪这个用意,所以特意差了一下记录在这里。定义assert宏的原型定义在#include <assert.h>void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,

2015-07-08 15:46:09 14941

原创 Linux中 too many open files 的问题解决

Linux中所有操作都被看作是文件的操作,所以有时会出现too many open files 的问题。系统中默认的最大打开文件数为1024个。1、相关命令解决ulimit –a //查看当前设置 ulimit –n 2048 //即设成2048,按实际需要设置2、用户环境参数文件配置:在/etc/profile中加入如下内容:if [ $SHELL = "/bin/ksh" ]; then u

2015-06-19 11:39:12 908

原创 C语言一些细节

1、gets()方法gets()函数是用来接受一个字符串的函数,此方法接受一个string类型参数,但是却没有检测此数值是否 有足够的空间来拷贝数据。由于gets()无法知道字符串的大小,必须遇到换行字符或文件尾才会结束输入,因此容易造成缓存溢出的安全性问题。建议使用fgets()取代。现在用个小程序说明一下到底有什么危害。 1 #include <stdio.h> 2 int main(void

2015-06-18 22:06:11 445

转载 微软等公司数据结构+算法面试100题

原文链接

2015-05-26 17:42:07 340

转载 C语言18个经典问题答录

这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。 因为静态变量的地址必须在编译的过程中就确定下来而malloc()申请的内存地址是在运行时确定的。2 . *p++ 自增p 还是p 所指向的变量?答:后缀++ 和– 操作符本质上比前缀一目操作的优先级高,

2015-05-26 17:10:02 752

转载 海量数据处理方法总结

文章转自:djkpengjun.blog.chinaunix.net大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。 下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法

2015-05-26 17:01:01 505

转载 Linux下监控网络流量的工具

在其他地方看到的一篇总结Linux下检测网络状况的工具,觉得特别实用,平时也只是常用其中的几种,留在这里备用~给出原文地址如下: 原文链接 如果要在你的系统上监控网络,那么使用命令行工具是非常实用的,并且对于 Linux 用户来说,有着许许多多现成的工具可以使用,如: nethogs, ntopng, nload, iftop, iptraf, bmon,

2015-05-26 16:53:16 1481

原创 利用UDP协议实现广播通信

利用UDP协议实现广播通信在开发应用程序时,如果需要向网络中的所有用户发送信息,可以采用UDP协议进行广播通信,而不用一一向每个用户发送消息。在程序中使用广播通信非常简单,在创建套接字后,调用‘SetSockOpt’方法使套接字具有SO_BROADCAST选项。然后再发送消息时,降低至设置为广播形式。//创建套接字m_PServerSoket=new CServerSocket(this);ch

2015-05-17 16:02:43 1457

原创 抓取网络数据包

抓取网络数据包当用户在局域网内传递数据时,处于同一网段的所有计算机的网卡都会收到这些数据,尽管它不是传递数据的目的地。利用这一特点,我们就可以截获局域网中传递的数据。为了能够获取通过网卡上的数据,需要创建原始套接字。用户可以将socket函数的第二个参数设置为SOCK_RAW来创建原始套接字。例如:m_Socket=socket(AF_INET,SOCK_RAW,IPPROTO_IP);由原始套接字

2015-05-17 15:56:58 1137

转载 select、poll、epoll使用小结

参考链接:http://c4fun.cn/blog/2013/11/19/linux-io-reuse-interface/http://blog.chinaunix.net/uid-17299695-id-3059110.htmlhttp://blog.csdn.net/kkxgx/article/details/7717125I/O复用是Linux中的I/O模型之一。

2015-05-04 09:03:23 665

转载 关注C++细节---C++11新标准之decltype的使用注意

转载自:CSDN   iaccepted  凌风,博客地址:http://blog.csdn.net/iaccepteddecltype是C++11添加的一个新的关键字,目的是选择并返回操作数的数据类型,重要的是,在此过程中编译器分析表达式并得到它的类型,却不实际计算表达式的值。对于内置类型的对象,使用decltype很直观,但当参数为复合类型的时候就应该注意一些使用细节问题。

2015-04-28 15:46:22 423

转载 Linux服务器监控命令

如果你想知道你的服务器正在做干什么,你就需要了解一些基本的命令,一旦你精通了这些命令,那你就是一个 专业的 Linux 系统管理员。有些 Linux 发行版会提供 GUI 程序来进行系统的监控,例如 SUSE Linux 就有一个非常棒而且专业的工具 YaST,KDE 的 KDE System Guard 同样很出色。当然,要使用这些工具,你必须在服务器跟前进行操作,而且这些 GUI 的程

2015-04-23 22:49:23 510

转载 Sublime Text 3 破解版 + 注册机 + 汉化包 + 教程

原文链接    点击打开链接SublimeText 是一个代码编辑器,也是HTML和散文先进的文本编辑器. SublimeText 是由程序员 Jon Skinner 于2008年1月份所开发出来,它最初被设计为一个具有丰富扩展功能的VimSublimeText具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等.还可自定义键绑定,菜单和工具栏.Su

2015-04-19 22:27:55 1612

空空如也

空空如也

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

TA关注的人

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