- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 封装dpdk接口成静(动)态库(同源同宿、多通道队列收包),然后在C++应用中使用方法
dpdk的接口全部都是C语言实现的,它的makefile模版也很简单,只需改变其宏就可以在生成可执行文件、静态库、动态库之间切换。本篇博文主要给出如果使用dpdk封装成静态库后,在C++应用程序中编译使用的方法。一、封装dpdk抓包接口源代码实现的功能:1、可通过配置文件进行配置多个队列收取数据包,并且保证数据包的同源同宿(或者负载均衡,二者取其一,具体方法须修改网卡驱动程序);
2017-07-17 14:27:26
4748
3
原创 基于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
4476
原创 基于boost库的线程安全queue
STL的queue多线程下是不安全的,当然网上有很多无锁队列,如boost::lockfree::queue就是很好的东西。这里实现一个互斥锁的线程安全队列,基于STL的QUEUE。/************************************************************************************************ File Nam
2017-06-08 11:34:26
3713
1
原创 IO基础入门之I/O多路复用技术
在I/O编程过程中,当需要同时处理多个客户端接入请求时,可以利用多线程或者I/O多路复用技术进行处理。I/O多路复用技术通过把多个I/O的阻塞复用到同一个select的阻塞上,从而使得系统在单线程的情况下可以同时处理多个客户端请求。与传统的多线程/多进程模型比,I/O多路复用的最大优势是系统开销小,系统不需要创建新的额外进程或者线程,也不需要维护这些进程和线程的运行,降底了系统的维护工作量,节省了
2017-01-09 16:25:43
442
原创 C++采用内存映射方式高效率读写大数据
在有时候,项目的数据量特别大,而且源源不断的到来,这个时候,利用传统的IO文件流写文件势必效率很低跟不上节奏。不妨采用内存映射方式来写文件,达到高效。我们这里采用mmap这种内存映射方法:一、mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。实现这样的映射关系后,进程就可以采用指针的方式读写操作这
2016-08-12 16:09:22
20353
转载 CENTOS 6 通过YUM升级GCC到4.7/4.8
第一阶段:升级到4.7[root@01314.CN ~]# cd /etc/yum.repos.d[root@01314.CN yum.repos.d]# wget http://people.centos.org/tru/devtools-1.1/devtools-1.1.repo [root@01314.CN yum.repos.d]# yum --enablerepo=testi
2016-07-12 11:37:44
5922
原创 使用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
428
原创 android学习笔记(一)
一、建立一个活动(activity)的一般步骤: 创建一个类,比如FirstActivity.class,并重写onCreate(Bundle savedInstanceState); 创建一个layout文件,为界面布局; 在AndroidMainfest.xml中注册活动;二、给按钮增加响应事件: 在onCreate中: But
2016-04-21 11:52:21
327
原创 kali 环境下的arp中间人攻击
apr攻击原理:ARP攻击就是通过伪造IP地址和MAC地址实现ARP欺骗,能够在网络中产生大量的ARP通信量使网络阻塞,攻击者只要持续不断的发出伪造的ARP响应包就能更改目标主机ARP缓存中的IP-MAC条目,造成网络中断或中间人攻击。ARP攻击主要是存在于局域网网络中,局域网中若有一台计算机感染ARP木马,则感染该ARP木马的系统将会试图通过“ARP欺骗”手段截获所在网络内其它计算机的通信信
2016-04-19 13:50:28
8292
原创 java学习笔记(三)
一、java多态1、多态是指同一个行为具有多个不同的表现形式或形态的能力;2、多态性是对象多种表现形式的体现;3、重写的方法能在运行时调用,不管编译的时候源代码中引用变量是什么数据类型;二、java抽象类1、抽象类是一个类中没有包含足够的信息来描绘一个具体的对象;2、抽象类与普通类唯一的区别就是它不能实例化对象;3、抽象类定义:public abstract cla
2016-04-19 13:39:21
300
原创 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
450
原创 java学习笔记(一)
一、java对象和类1、java命名规则: 源文件名:与类名保持一致,且首字母必须大写; 类名:类名的首字母应该大写,形如MyFirstJavaClass; 主方法入口:所有的java程序由public static void main(String[] args)开始;2、java修饰符,主要有两类: 可访问修饰符:default,public,p
2016-04-18 17:08:40
310
原创 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
516
原创 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
400
转载 C++静态库和动态库
原文地址:http://www.cnblogs.com/skynet/p/3372855.htmlC++静态库与动态库这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的
2016-04-11 14:36:15
275
原创 CentOS配置网卡——桥接模式
1、选择网卡,点击VMware “编辑”——“虚拟网络编辑器”:2、选择正确的网络适配器:3、右击虚拟机,“设置”为桥接模式:4、打开虚拟机,进入系统,进行系统里的网络设置:系统设置system --> 首选项preference--> 网络设置Network Connections,选择System eth0,点击Edit编辑:5、设置完成后,打开终端,重启网
2016-04-08 15:51:40
3056
原创 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
5527
原创 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
13065
转载 一次完整的HTTP事务是怎样一个过程
当我们在浏览器的地址栏输入 www.linux178.com ,然后回车,回车这一瞬间到看到页面到底发生了什么呢?以下过程仅是个人理解:域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 --> 服务器响应http请求,浏览器得到html代码 --> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)
2016-04-05 10:14:40
570
转载 设计一个简单的socket通信协议
为什么要设计一个协议呢?因为TCP协议是面向字节流的协议,面向字节流的协议是无边界的,也就是说一次发送操作并不一定就仅仅产生一个数据包,而有可能是多个,在接收端不一定一次接收就能完成所有数据的收操作。这样如果服务端和客户端没有通信协议,则客户端发送完数据之后,服务端不知道需要经过几次接受(receive)操作才能完成一次数据交换。这个问题一般发生在客户端和服务端传送大批量数据时,如果数据之间没
2016-04-05 09:42:54
8430
转载 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
1087
原创 windows socket 简单实例
之前做的是linux下的开发,做过linux下的socket通信。最近工作接触到了windows开发,并且对端游开发很感兴趣,所以看了下windows下的sokcet通信,做做笔记。Windows下Socket编程主要包括以下几部分:服务端 1、初始化Windows Socket库。 2、创建Socket。 3、绑定Socket。 4、监听。
2015-06-25 09:53:39
520
原创 修改静态文本框的字体颜色和边框背景颜色
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
1833
原创 单文档多视图——手动生成树形列表,并给叶子节点添加响应事件
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
478
转载 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
671
原创 自己动手创建动态链接库
动态链接库,这个熟悉而又陌生人。经常听到它,一直对这个概念模糊。在之前做开发的时候经常会遇到找不到库文件,然后百度,或者请教大神,瞎折腾一阵就好了,也没有放在心上。 通常情况下,对函数库的链接是放在编译时期(compile time)完成的.所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文件(executable f
2015-01-30 15:43:04
684
原创 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
666
原创 读取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
2273
原创 利用JSONC库遍历求出JSON数组的元素值
之前做项目,要求先解析出XML文件,并生成JSON格式字符串,这个做到了。但是后来又要求将JSON字符串转换为XML文件,由于在研究所里不能上网,查阅不到资料,自己也没有时间去阅读库函数。今天回来上网查了一下,原来只需两步即可,现在贴出代码。test.c#include#include#include "json.h"void test(){ int i,j;
2015-01-23 16:38:39
4151
原创 解析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
1242
原创 通过LIBXML2解析XML后,以JSON-C格式封装数据反馈给HTML
直接上源代码,记录下自己的劳动果实。/************************************************************************************** > File Name: getxmlinfo.c* > INSTRUCTION: get the information from the .xml files*
2015-01-12 16:55:11
1004
原创 利用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
1235
转载 linux下libxml2库使用说明
第一章 什么是XML?1.xml简介XML(Extensible Markup Language)即可扩展标记语言,它与HTML一样,都是SGML(Standard Generalized Markup Language,标准通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用
2015-01-12 15:08:34
729
转载 交叉编译
1. 交叉编译器1.1 交叉编译器介绍在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。1.2 搭建交叉编译环境 1.2.1 实验环境交叉编译工具:arm-linux- 4.2.2
2015-01-11 12:42:25
451
转载 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
456
转载 CGIC库的使用
*对数据进行语法分析 *接收以GET和PSOT两种方式发送的数据 *把FORM中的不同域连接成连续的串 *为检索FORM数据而提供字符串,整数,浮点以及单项和多项选择功能 *为数字字段提供边界检测 *把CGI环境变量加载
2015-01-10 13:51:05
620
原创 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
757
转载 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
378
原创 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
365
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人