
基础代码
文章平均质量分 91
mergerly
这个作者很懒,什么都没留下…
展开
-
【libffi】动态调用&定义C函数
一、Calling Convention高级语言编译器将代码编译成相应汇编指令时都会依据一系列的规则,这些规则十分必要,特别是对独立编译来说。其中之一是“调用约定” (Calling Convention),它包含了编译器关于函数入口处的函数参数、函数返回值的一系列假设。它有时也被称作“ABI”(Application Binary Interface)。调用约定(Calling Conventions)定义了程序中调用函数的方式,它决定了在函数调用的时候数据(比如说参数)在堆栈中的组织方式。编译器按照转载 2021-04-22 14:07:21 · 1231 阅读 · 0 评论 -
Protocol Buffer技术详解(语言规范)
该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo。这样做的目的主要在于不仅可以保持Google文档的良好风格和系统性,同时再结合一些比较实用和通用的用例,这样就更加便于公司内部的培训,以及和广大网友的技术交流。需要说明的是,Blog的内容并非line by line的翻译,其中包含一些经验性总结,与此同时,对于一转载 2014-11-12 15:49:43 · 2346 阅读 · 0 评论 -
Protocol Buffer技术详解(C++实例)
这篇Blog仍然是以Google的官方文档为主线,代码实例则完全取自于我们正在开发的一个Demo项目,通过前一段时间的尝试,感觉这种结合的方式比较有利于培训和内部的技术交流。还是那句话,没有最好的,只有最适合的。我想写Blog也是这一道理吧,不同的技术主题可能需要采用不同的风格。好了,还是让我们尽早切入主题吧。 一、生成目标语言代码。 下面的命令帮助我们将M转载 2014-11-12 15:50:18 · 901 阅读 · 0 评论 -
产生伪随机数两种常用算法
我们讲的随机数其实暗指伪随机数。不少朋友可能想到C语言的rand(),可惜这个函数产生的随机数随机性非常差,而且速度很慢,相信几乎不能胜任一般的应用。古老的LCG(linear congruential generator)代表了最好的伪随机数产生器算法。主要原因是容易理解,容易实现,而且速度快。这种算法数学上基于X(n+1) = (a * X(n) + c) % m这样的公式,其中:转载 2015-06-24 11:29:09 · 22314 阅读 · 1 评论 -
一种自动反射消息类型的 Google Protobuf 网络传输方案
陈硕 (giantchen_AT_gmail)Blog.youkuaiyun.com/Solstice t.sina.com.cn/giantchen 这篇文章要解决的问题是:在接收到 protobuf 数据之后,如何自动创建具体的 Protobuf Message 对象,再做的反序列化。“自动”的意思是:当程序中新增一个 protobuf Message 类型时,这部分代码不需要修转载 2016-05-16 21:33:16 · 1596 阅读 · 0 评论 -
用protobuf定义消息及处理
用protobuf定义消息及处理(金庆的专栏)消息定义:package MsgPb;message Msg { required string type = 1; // Full type name of data. required bytes data = 2; // Serialized bytes fo concrete msg.}转载 2016-05-16 21:34:07 · 3332 阅读 · 0 评论 -
Protobuf简单使用及其抓包分析
早之前就用过Google的Protobuf做数据编码,一直没有深入理解其中的原理,最近做了一次通讯抓包,发现其中很多Protobuf编码的数据包,于是决定分析一下其中的数据包及其编码。一、Protobuf的使用首先来简单介绍一下Protobuf的使用,这里以windows下java开发为例,几个步骤:编写*.proto ->使用google提供的protoc.exe生成*.java->项目转载 2016-05-20 20:33:55 · 2854 阅读 · 0 评论 -
值得推荐的C/C++框架和库 (真的很强大)
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/转载 2016-08-18 20:48:43 · 1895 阅读 · 0 评论 -
对象序列化类库MsgPack介绍
MessagePack(以下简称MsgPack)一个基于二进制高效的对象序列化类库,可用于跨语言通信。它可以像JSON那样,在许多种语言之间交换结构对象;但是它比JSON更快速也更轻巧。支持Python、Ruby、Java、C/C++等众多语言。比Google Protocol Buffers还要快4倍。代码:> require ‘msgpack’> msg = [1,2,3]转载 2017-05-19 18:28:56 · 984 阅读 · 0 评论 -
分布式系统设计的求生之路
本文由腾讯WeTest授权发布 作者:作者:Simon,腾讯后台开发高级工程师 链接:http://wetest.qq.com/lab/view/?id=105 著作权归作者所有。商业转载请联系WeTest获得授权,非商业转载请注明出处。分布式系统理念渐渐成为了后台架构技术的重要选择,本文介绍了作者在手游领域对分布式系统进行的种种尝试,并在尝试中制定了对服务的定义、整体框架的构转载 2017-09-14 14:53:40 · 446 阅读 · 0 评论 -
经典游戏服务器端架构概述 (1)
架构的分析模型一. 讨论的背景现代电子游戏,基本上都会使用一定的网络功能。从验证正版,到多人交互等等,都需要架设一些专用的服务器,以及编写在服务器上的程序。因此,游戏服务器端软件的架构,本质上也是游戏服务器这个特定领域的软件架构。软件架构的分析,可以通过不同的层面入手。比较经典的软件架构描述,包含了以下几种架构:运行时架构——这种架构关心如何解决运行效率问题转载 2017-09-14 20:55:43 · 23054 阅读 · 0 评论 -
[VC] 检测AVX系列指令集的支持级别(AVX、AVX2、F16C、FMA、FMA4、XOP)
从2011年的Sandy Bridge微架构处理器开始,现在支持AVX系列指令集的处理器越来越多了。本文探讨如何用VC编写检测AVX系列指令集的程序,并利用了先前的CPUIDFIELD方案。一、AVX系列指令集简介 SSE5 指令:SSE5 是一个纸面上的指令集,并没有最终实现,AMD 在 2007 年 8 月公布 SSE5 指令集规范,在 2009 年 5 月 AMD 推出了 XO...转载 2018-05-07 12:29:11 · 6223 阅读 · 0 评论 -
寻路算法——A*算法
2 寻路算法——A*算法剖析2.1 A*算法简介原文链接:http://www.gamedev.net/reference/articles/article2003.asp原作者文章链接:http://www.policyalmanac.org/games/aStarTutorial.htm搜索区域假设有人想从A点移动到一墙之隔的B点,如下图,绿色的是起点A,红色是终点B,蓝色方块是中间...转载 2018-12-04 20:28:10 · 1622 阅读 · 0 评论 -
并发危险:解决多线程代码中的 11 个常见的问题
转自:http://msdn.microsoft.com/zh-cn/magazine/cc817398.aspx转载 2014-09-03 16:00:07 · 4870 阅读 · 1 评论 -
简单无锁队列的实现和使用
无锁队列越来越流行,在特定的场合使用不同的无锁队列,可以qid原创 2014-09-02 19:46:11 · 9309 阅读 · 1 评论 -
windows性能监视器常用计数器
最近研究性能测试工具中发现这些所谓的性能测试工具的数据、全部来至windows操作系统提供的数据、然后通过API提供给性能测试工具、性能测试工具在用一种比较直观的图形展示出来。也就是说不部分情况下如果把你没有弄明白性能监视器中数据得意义,那么性能测试工具的那些图表对你的意义也就没转载 2011-09-30 11:42:59 · 6590 阅读 · 0 评论 -
在WinMain中嵌Console窗口
很多时候,调试GUI程序是很不方便的,通常的做法是使用MessageBox,但是作为一个模态窗口,它经常产生不必要的消息,比如killfocus, setfocus或者paint,从而影响调试的执行过程。当然,使用vc的调试器也不错,但是这样也很容易造成窗口切换从而产生干扰消息。因此,如果能像在控制台程序里那样使用cin/cout对象或printf族函数,会使得调试过程方便得多。而通常,win转载 2012-11-08 21:19:39 · 1202 阅读 · 0 评论 -
VC++的文件描述符和内核文件句柄HANDLE
VC++的文件描述符和内核文件句柄HANDLE本文描述VC++中的C语言使用代码文件描述符(file descriptor),和内核文件句柄HANDLE之间关系,以及两者之间的转换函数_get_osfhandle,_open_osfhandle以及使用他们的风险。在Windows代码中代码中间文件描述符号和内核句柄HANDLE千万不要共用。在文章的开头,要声明这是我写的bug,但是转载 2012-11-29 12:11:13 · 1530 阅读 · 0 评论 -
C++ 库
--------------------------------------------------------------------------------------------------------------------------------基础类1、 Dinkumware C++ Library参考站点:http://www.dinkumware.c转载 2012-12-05 16:39:07 · 2733 阅读 · 0 评论 -
C++的Json解析库:jsoncpp和boost
一、摘要 JSON 的全称为:JavaScript Object Notation,顾名思义,JSON 是用于标记 Javascript 对象的,JSON 官方的解释为:JSON 是一种轻量级的数据传输格式。本文并不详细介绍 JSON 本身的细节,旨在讨论如何使用 C++ 语言来处理 JSON。关于 JSON更具体的信息,可参见 JSON 官网:http://www.json.org转载 2014-01-15 16:34:52 · 818 阅读 · 0 评论 -
使用STL,远离异常,VS2005
编译chrome的代码时(xp sp3, vs2008,曾经在win7下编译过,未出现此问题,不知道为什么),发现了std::exception重复定义的问题,让我很抓狂。后来搜索到了这篇文章,发现只要在出现链接错误的.cc文件中加入着两行就可以了:#define _HAS_EXCEPTIONS 0#define _STATIC_CPPLIB原文:转载 2014-01-23 21:28:16 · 4157 阅读 · 0 评论 -
windows路径操作API函数
路径截断与合并函数 PathRemoveArgs去除路径的参数PathRemoveBackslash去除路径最后的反斜杠“\”PathAddBackslash 在路径最后加上反斜杠“\”PathRemoveBlanks去除路转载 2014-01-20 20:17:23 · 2596 阅读 · 0 评论 -
Windows 调试工具 Windows SDK 离线版 ISO安装包下载
原文及更多内容:http://yysource.sourceforge.net/?p=103下载和安装 Windows 调试工具 http://msdn.microsoft.com/zh-CN/windows/hardware/gg463009这里有具体的版本可以选择。 在这个页面点进去会发现下载的其实是在线安装器。如果想要ISO离线安装包的话,需要很麻烦地找来转载 2014-02-10 16:51:25 · 30613 阅读 · 2 评论 -
内存池
0、内存池之引言 这是关于内存池的一系列简短文章,当然它不是短期的研究结果,而是长期使用经验的总结,介绍得可能不会很详细,一些别人介绍得很细节的东西我就基本掠过。转载请署名作者:袁斌 内容如下:1、 单线程内存池。2、 多线程内存池。3、 Dlmalloc nedmalloc4、 实现线程关联的内存池。5、 线程关联内存池再提速。 关转载 2014-09-18 19:38:26 · 1568 阅读 · 1 评论 -
内存池的实现
引言C/C++下内存管理是让几乎每一个程序员头疼的问题,分配足够的内存、追踪内存的分配、在不需要的时候释放内存——这个任务相当复杂。而直接使用系统调用malloc/free、new/delete进行内存分配和释放,有以下弊端:调用malloc/new,系统需要根据“最先匹配”、“最优匹配”或其他算法在内存空闲块表中查找一块空闲内存,调用free/delete,系统可能需要合并空闲内转载 2014-09-02 12:13:29 · 1334 阅读 · 0 评论 -
求最接近的最大2的指数次幂roundup_pow_of_two分析与实现
思想很简单,就是找出当前数的二级制中最大位为1位的原创 2014-09-02 17:01:58 · 15021 阅读 · 1 评论 -
内核循环缓冲区数据结构kfifo在用户态的使用
忘记了之前是有个什么事情一时想起好像需要用个cycler buffer,手头一时又没有,懒得自己实现。就向同学要了个。后来好像也没有用到,倒是一直记得好像老早以前看到ldd上提到双向链表的时候有提到个kfifo,只是一直没有用到这个,所以一直没看。倒是无聊的时候想起过printk是否用的就是这个数据结构。 昨天临下班的时候想到kfifo这个东东,今天就抽点时间看看。 刚开始是把转载 2014-09-02 13:43:51 · 4223 阅读 · 0 评论 -
编程实现性能监视器监视系统性能
直接上代码:#include #include #include #include #pragma comment(lib, "pdh.lib") BOOL DiskIOMon(){ //CONST PWSTR COUNTER_PATH原创 2011-09-30 11:41:46 · 4623 阅读 · 1 评论