
C/C++
被遗忘de角落
A coder
展开
-
Linux epoll 用法
前言早期linux网络编程中,很长一段时间用的是 select 来监听事件。在linux 2.6内核中,已经有了一种新的机制,即epoll。和 select 模型对比,epoll 最大的好处在于它不会随着监听的文件描述符数目的增长而降低效率。因为在内核中的 select 实现中,它是采用轮询来处理的,轮询的文件描述符数目越多,自然耗时越多。并且在linux/posix_types.h 头文原创 2017-11-28 17:17:55 · 136280 阅读 · 0 评论 -
C++ 获取CPU ID的方法
见如下代码,经过验证,是可行的。static const char* cpuId(void){ unsigned long s1 = 0; unsigned long s2 = 0; unsigned long s3 = 0; unsigned long s4 = 0; __asm { mov eax,00h原创 2017-12-08 10:11:49 · 7626 阅读 · 2 评论 -
使用Redis协议构建网络服务
引言关于服务,这是一个比较抽象的概念,意在为使用者做事,达到使用者的某些需求。当然我们在此讨论的是网络服务,通常我们可以将其定义为一个运行在操作系统上的一个程序,使用者通过网络与其进行交互并能得到想要的信息。协议在编写网络服务程序中,其中最重要的一个环节是约定好相互通信的内容格式,也就是我们常说的网络通讯协议。协议设计的好坏很大程度上会影响系统的灵活性、可拓展性、维护性等等。关原创 2017-12-15 11:50:20 · 774 阅读 · 0 评论 -
快速理解大小端
什么是大端,什么是小端所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。通俗点:对于数字0x1234,按大端模式在内存中排列是 0x12, 0x34;按小端模式在内存中排列是0x34,0x12。另外:1.什么是高位:按照 个十百千万 顺原创 2017-12-04 10:38:22 · 8677 阅读 · 0 评论 -
Makefile.am 介绍
1.概念Makefile.am是比Makefile更高层次的规则只需要指定要生成什么目标,依赖于什么文件,和要安装到什么目录。automake会根据Makefile.am来自动生成Makefile.in 。2.基本语法Makefile.am文件bin_PROGRAMS = xxxbin_PROGRAMS 表示指定要生成的可执行应用程序文件,这表示可执行文件在安装时需原创 2017-12-04 10:13:44 · 9694 阅读 · 0 评论 -
Linux 下 make 构建过程
1.准备源代码目录结构,目录名为test包含的文件如下:test/src/tcpsocket.htest/src/tcpsocket.cpptest/main.cpp2.autoscan运行 autoscan , 自动创建两个文件(autoscan.log configure.scan)修改configure.scan的文件名为configure.in原创 2017-12-04 10:11:44 · 8359 阅读 · 0 评论 -
C++ 互斥量的封装
头文件mutex.h#ifndef MUTEX_H#define MUTEX_H#ifdef WIN32typedef void* HANDLE;#else#include #endifclass Mutex{public: Mutex(void); ~Mutex(void); void lock(void); void unlock原创 2017-12-01 15:34:01 · 34229 阅读 · 0 评论 -
C++ 线程的封装
贡献自己写的部分代码,希望能帮助到有需要的人。代码可以在Windows/Linux下运行,可以作为一个基础类。头文件#ifndef THREAD_H#define THREAD_Hclass ThreadPrivate;class Thread{public: typedef unsigned long long tid_t; Thread原创 2017-12-01 15:26:44 · 36433 阅读 · 3 评论 -
libevent 多线程实现高并发
当你看到这篇文章时,想必你对libevent已经有了足够的了解,笔者在此就不多做描述了,直接进入正题。1.起因最近在做Redis中间件,目标实现集群管理、分布式数据处理、高性能。由于在某些情况下,单个节点的Redis性能可能无法满足需求,并且单个机器的内存大小是受限制的。如果采用中间件的方式管理多个Redis实例,不仅可以避免单点机器内存不够用的情况,也能使性能得到大幅提升。经过R原创 2017-12-01 11:23:16 · 39389 阅读 · 5 评论 -
用libevent实现httpserver
最近工作中需要实现一些审计功能,软件是服务器端程序,对于展示来说,在浏览器上能直接查看可能是最直接最友好的方式了,libevent中提供了http模块,正好我们的软件也依赖这个,所以决定用它来实现一个httpserver,用来展示相关数据。不多说,直接上代码表示这个工作流程#include #include #include bool start原创 2016-07-08 16:20:37 · 59722 阅读 · 3 评论 -
Windows 下编译 OpenSSL
编译准备1.编译器(我用的VS2010)2.ActivePerl3.openssl-1.0.1s步骤1.进入VS2010控制台模式开始菜单->所有程序->Microsoft Visual Studio 2010->Visual Studio Tools->Visual Studio命令提示(2010),然后进入到openssl源码目录。2.在当前命令窗口执行原创 2017-11-28 17:20:23 · 135135 阅读 · 0 评论 -
qmake - 快速生成makefile
最近开发需要增加新的功能模块,需要增加一些代码文件,还有原先比较集中存放的代码文件现在稍微细分了一点,所以代码文件数量略增加了几个。起初都是手工维护的makefile,有变动时调整比较麻烦。auto* 系列工具笔者也用过,但实在觉得不符合面向人类的设计:)。想到以前使用过QT,决定用qmake来代替手工维护。简介qmake是Qt框架库附带的一个工具,是一个协助简化跨平台开发原创 2017-12-26 11:26:43 · 1329 阅读 · 0 评论