自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 资源 (1)
  • 收藏
  • 关注

原创 封装dpdk接口成静(动)态库(同源同宿、多通道队列收包),然后在C++应用中使用方法

dpdk的接口全部都是C语言实现的,它的makefile模版也很简单,只需改变其宏就可以在生成可执行文件、静态库、动态库之间切换。本篇博文主要给出如果使用dpdk封装成静态库后,在C++应用程序中编译使用的方法。一、封装dpdk抓包接口源代码实现的功能:1、可通过配置文件进行配置多个队列收取数据包,并且保证数据包的同源同宿(或者负载均衡,二者取其一,具体方法须修改网卡驱动程序);

2017-07-17 14:27:26 4492 4

原创 基于C++ STL利用CAS原子操作封装的无锁list

在做高吞吐量的项目中,性能是必须考虑的一个重要因素。而数据同步则又是重中之重,常常需要使用到锁,但是锁的使用会造成性能下降。这个时候,CAS就大显身手了,关于CAS,这里就不再多说。直接贴我基于STL list的封装的无锁list,其他容器则类似。文件1:lockfree_list.hpp#ifndef LOCK_FREE_LIST_HPP#define LOCK_FREE_LIST

2017-07-11 09:51:36 4357

原创 基于boost库的线程安全queue

STL的queue多线程下是不安全的,当然网上有很多无锁队列,如boost::lockfree::queue就是很好的东西。这里实现一个互斥锁的线程安全队列,基于STL的QUEUE。/************************************************************************************************ File Nam

2017-06-08 11:34:26 3368 1

原创 IO基础入门之I/O多路复用技术

在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程/多进程模型比,I/O多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或者线程,也不需要维护这些进程和线程的运行,降底了系统的维护工作量,节省了

2017-01-09 16:25:43 407

原创 C++采用内存映射方式高效率读写大数据

在有时候,项目的数据量特别大,而且源源不断的到来,这个时候,利用传统的IO文件流写文件势必效率很低跟不上节奏。不妨采用内存映射方式来写文件,达到高效。我们这里采用mmap这种内存映射方法:一、mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这

2016-08-12 16:09:22 19790 1

转载 CENTOS 6 通过YUM升级GCC到4.7/4.8

第一阶段:升级到4.7[[email protected] ~]# cd /etc/yum.repos.d[[email protected] yum.repos.d]# wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo [[email protected] yum.repos.d]# yum --enablerepo=testi

2016-07-12 11:37:44 5818

原创 使用Git创建一个版本

一、首先在Github中创建一个版本库1、申请一个GitHub帐号;2、创建一个版本库:3、输入版本库名字,然后设置相关权限,如是否公开等,然后点击Create repository完成创建:二、提交代码到版本库中1、打开Git Shell,进入工程目录;2、拷贝版本库的git文件到本地:git clone https://github.com/oceanper

2016-04-25 09:52:27 364

原创 android学习笔记(一)

一、建立一个活动(activity)的一般步骤:    创建一个类,比如FirstActivity.class,并重写onCreate(Bundle savedInstanceState);    创建一个layout文件,为界面布局;    在AndroidMainfest.xml中注册活动;二、给按钮增加响应事件:    在onCreate中:    But

2016-04-21 11:52:21 277

原创 kali 环境下的arp中间人攻击

apr攻击原理:ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信

2016-04-19 13:50:28 8173

原创 java学习笔记(三)

一、java多态1、多态是指同一个行为具有多个不同的表现形式或形态的能力;2、多态性是对象多种表现形式的体现;3、重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型;二、java抽象类1、抽象类是一个类中没有包含足够的信息来描绘一个具体的对象;2、抽象类与普通类唯一的区别就是它不能实例化对象;3、抽象类定义:public abstract cla

2016-04-19 13:39:21 264

原创 java学习笔记(二)

一、java继承1、继承:一个对象从另一个对象获取属性的过程;2、java一个子类只能拥有一个父类,不同于C++支持多继承;3、所有java的类均是由java.lang.Object类继承而来的,所以object是所有类的祖先类;4、通过extends关键字可以申明一个类是继承另外一个类而来的,如:public class B extends A{};5、IS-A关系,如Dog

2016-04-19 10:18:04 419

原创 java学习笔记(一)

一、java对象和类1、java命名规则:    源文件名:与类名保持一致,且首字母必须大写;    类名:类名的首字母应该大写,形如MyFirstJavaClass;    主方法入口:所有的java程序由public static void main(String[] args)开始;2、java修饰符,主要有两类:    可访问修饰符:default,public,p

2016-04-18 17:08:40 278

原创 CentOS 配置 samba服务器建立共享文件夹

1、安装samba服务端和客户端;yum install samba2、设置共享目录的权限为777;chmod 777 /home/work3、修改samba配置文件;vim /etc/samba/smb.conf加入以下内容:[work]        path = /home/work        public=yes        writable

2016-04-14 11:11:20 469

原创 linux 静、动态库笔记

一、静态库:1、编译源文件生成中间文件:    gcc -c cool.c2、打包中间文件生成静态库:    ar -r libcool.a cool.o3、使用静态库,直接在编译的时候加上静态库的路径和名字,就可以直接被打包进可执行文件里了。    gcc -o main main.c -L ./ libcool.a二、动态库:1、编译源文件生成中间文

2016-04-12 17:05:57 364

转载 C++静态库和动态库

原文地址:http://www.cnblogs.com/skynet/p/3372855.htmlC++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的

2016-04-11 14:36:15 237

原创 CentOS配置网卡——桥接模式

1、选择网卡,点击VMware “编辑”——“虚拟网络编辑器”:2、选择正确的网络适配器:3、右击虚拟机,“设置”为桥接模式:4、打开虚拟机,进入系统,进行系统里的网络设置:系统设置system --> 首选项preference--> 网络设置Network Connections,选择System eth0,点击Edit编辑:5、设置完成后,打开终端,重启网

2016-04-08 15:51:40 2976

原创 VS2010配置pthread库

1、下载:http://sourceware.org/pthreads-win32/#download,下载.zip版本的;然后解压;2、执行a.bat和b.bat两个脚本,注意a.bat放到库的目录下;a.bat:rem put this file to :D:\#win pthread\pthreads-w32-2-9-1-release\Pre-built.2copy

2016-04-06 15:47:00 5457

原创 http的keep-alive和tcp的keepalive区别

1、HTTP Keep-Alive在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(

2016-04-05 14:33:48 12890

转载 一次完整的HTTP事务是怎样一个过程

当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?以下过程仅是个人理解:域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)

2016-04-05 10:14:40 532

转载 设计一个简单的socket通信协议

为什么要设计一个协议呢?因为TCP协议是面向字节流的协议,面向字节流的协议是无边界的,也就是说一次发送操作并不一定就仅仅产生一个数据包,而有可能是多个,在接收端不一定一次接收就能完成所有数据的收操作。这样如果服务端和客户端没有通信协议,则客户端发送完数据之后,服务端不知道需要经过几次接受(receive)操作才能完成一次数据交换。这个问题一般发生在客户端和服务端传送大批量数据时,如果数据之间没

2016-04-05 09:42:54 8338

转载 C/C++编译常见链接错误

1) 下面是因为没有指定链接参数-lz(/usr/lib/libz.so,/usr/lib/libz.a )/usr/local/mysql/lib/mysql/libmysqlclient.a(my_compress.c.o): In function `my_uncompress':/home/software/mysql-5.5.24/mysys/my_compress.c:122:

2016-04-01 11:21:52 995

原创 windows socket 简单实例

之前做的是linux下的开发,做过linux下的socket通信。最近工作接触到了windows开发,并且对端游开发很感兴趣,所以看了下windows下的sokcet通信,做做笔记。Windows下Socket编程主要包括以下几部分:服务端   1、初始化Windows Socket库。   2、创建Socket。   3、绑定Socket。   4、监听。  

2015-06-25 09:53:39 417

原创 修改静态文本框的字体颜色和边框背景颜色

1、在静态文本框所在的对话框添加 WM_CTLCOLOR 消息;2、修改代码如下:HBRUSH CAlphaDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){ HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性

2015-06-05 11:18:06 1709

原创 单文档多视图——手动生成树形列表,并给叶子节点添加响应事件

1、视图中添加一个按钮,并给出点击事件:void C_LeftView::OnEditButton(void){ CTreeCtrl& m_menuTree = GetTreeCtrl(); m_menuTree.DeleteAllItems(); m_menuTree.ModifyStyle(GetStyle(), GetStyle() | TVS_HASBUTTONS | TV

2015-05-12 14:28:22 441

转载 MFC如何在单文档下添加背景图片

选择bmp格式的图片,在资源里导入图片到bitmap里面,ID为IDB_BITMAP1;两种方法实现:第一种:在C**View类里添加画刷 CBrush m_brush;       在C**View构造函数中加入代码:        CBitmap bmp;        bmp.LoadBitmap(IDB_BITMAP); ///加载位图       

2015-05-11 13:46:14 613

原创 自己动手创建动态链接库

动态链接库,这个熟悉而又陌生人。经常听到它,一直对这个概念模糊。在之前做开发的时候经常会遇到找不到库文件,然后百度,或者请教大神,瞎折腾一阵就好了,也没有放在心上。  通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable f

2015-01-30 15:43:04 635

原创 HTML的上传、下载文件

HTML文件的上传与下载#include #include #include #include #include #include #include #include #include "UpDownFile.h"#include "cgic.h"/* LoadFile.c */int ServerToWebFile( const char * fileName ){

2015-01-30 11:13:18 612

原创 读取JSON字符串,转为XML文件(二)

在做WEB后端开发的时候,会用到XML来传输数据。客户端发送请求(XML)到服务器,服务器又反馈信息(XML)到客户端。在这个过程中,会涉及到读取JSON字符串打包成XML,以及解析XML成JSON字符串给前端使用。现在贴出解析JSON字符串成为XML文档的代码。   test.c   #include#include#include "json.h"#include #inclu

2015-01-26 13:18:05 2224

原创 利用JSONC库遍历求出JSON数组的元素值

之前做项目,要求先解析出XML文件,并生成JSON格式字符串,这个做到了。但是后来又要求将JSON字符串转换为XML文件,由于在研究所里不能上网,查阅不到资料,自己也没有时间去阅读库函数。今天回来上网查了一下,原来只需两步即可,现在贴出代码。test.c#include#include#include "json.h"void test(){ int i,j;

2015-01-23 16:38:39 4082

原创 解析XML文件后生成JSON格式,供WEB前端调用

说明:此办法只适用于固定格式XML文件与WEB前端进行对接。以下是待解析的XML文件代码test.xml: OCEAN 1-13-2015 TEST FOR JSON 20150113 OCEAN 1-13-2015 TEST FOR JSON 20150113 以下是解析XML的C语言代码

2015-01-13 16:37:17 1204

原创 通过LIBXML2解析XML后,以JSON-C格式封装数据反馈给HTML

直接上源代码,记录下自己的劳动果实。/************************************************************************************** > File Name: getxmlinfo.c* > INSTRUCTION: get the information from the .xml files*

2015-01-12 16:55:11 956

原创 利用LIBXML库遍历读取XML文件所有的属性和content

XML文件: John Fleck June 2, 2002 example keyword example keyword1 example keyword2 example keyword3 example keyword4 example keyword5 example keyword6 example keyword7 example keyword8 example keyword9

2015-01-12 15:13:55 1168

转载 linux下libxml2库使用说明

第一章 什么是XML?1.xml简介XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用

2015-01-12 15:08:34 692

转载 交叉编译

1. 交叉编译器1.1 交叉编译器介绍在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。1.2 搭建交叉编译环境 1.2.1 实验环境交叉编译工具:arm-linux- 4.2.2

2015-01-11 12:42:25 428

转载 BOA移植

http://hh8582.blog.163.com/blog/static/14041920420114202636840/【移植后可能遇到的问题】编译完BOA服务器后,执行出错:1、检查配置文件 /etc/boa/boa.conf,是否严格按照要求来更改;2、执行boa文件时,是否是root权限,注意端口;3、boa.conf文件最后为 /cgi-bin/ /home/

2015-01-11 12:39:08 408

转载 CGIC库的使用

*对数据进行语法分析   *接收以GET和PSOT两种方式发送的数据   *把FORM中的不同域连接成连续的串   *为检索FORM数据而提供字符串,整数,浮点以及单项和多项选择功能   *为数字字段提供边界检测   *把CGI环境变量加载

2015-01-10 13:51:05 572

原创 CGIC学习笔记

/**********************************CGIC********************/#include "cgic.h"extern char *cgiQueryString;int cgiMain() {char One[20];char Two[20];char Three[20];cgiWriteEnvironme

2015-01-10 13:44:25 724

转载 ubuntu上SVN版本升级到1.7

1、卸载原来的svn:sudo apt-get remove subversion2、添加1.7资源库:sudo apt-add-repository ppa:dominik-stadler/subversion-1.73、更新apt:sudo apt-get update(若出现错误,直接注释掉出错语句)4、安装依赖的java库:sudo apt-get install

2015-01-09 17:19:05 352

原创 sudo 出现unable to resolve host ocean 解决方法

Linux 环境, 假设这台机器名字叫ocean(机器的hostname), 每次执行sudo 就出现这个警告讯息:sudo: unable to resolve host ocean虽然sudo 还是可以正常执行, 但是警告讯息每次出来还是有点烦人, 而这只是机器在反解上的问题, 所以就直接从/etc/hosts 设定, 让ocean(hostname) 可以解回127.0.0.1 的I

2015-01-09 16:56:34 344

GDI加载PNG透明图片

gdi完整加载png透明图片具体步骤,包含了gdi的4个源文件,以及使用步骤

2015-06-10

空空如也

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

TA关注的人

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