编程语言
文章平均质量分 91
c++、go、php等语言积累
herman~~
鹅厂-后台游戏开发
展开
-
【转贴】深入讨论C++的enum
呵呵,enum在实际中应用比较少,所以你会忽略它。但是,在这里,我告诉你,enum 和 struct、class一样,都是用户自定义类型。 对呀![color=#ff0000]enum是用户自定义类型,他有数据成员,还有成员函数![/color] For example: enum e{a=1 , b=2 , c=4}; 那么: 001: enum e e1;转载 2008-02-01 11:49:00 · 915 阅读 · 0 评论 -
C标准中一些预定义的宏
C标准中一些预定义的宏摘自:http://www.wangchao.net.cn/bbsdetail_149674.htmlC标准中指定了一些预定义的宏,对于编程经常会用到。下面这个表中就是一些常常用到的预定义宏。宏意义__DATE__ 进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)__FILE__ 代表当前源代码文件名的字符转载 2012-04-27 11:24:49 · 1146 阅读 · 0 评论 -
[转】一个游戏程序员的学习资料
一个游戏程序员的学习资料作者: weiqubo (3 篇文章) 日期: 三月 20, 2012 在 1:29 下午 想起写这篇文章是在看侯杰先生的《深入浅出MFC》时, 突然觉得自己在大学这几年关于游戏编程方面还算是有些心得,因此写出这篇小文,介绍我眼中的游戏程序 员的书单与源代码参考。一则是作为自己今后两年学习目标的备忘录,二来没准对别人也有点参考价值。我的原则是只写转载 2012-05-08 11:58:08 · 1445 阅读 · 1 评论 -
muduo网络库使用心得
上个月看了朋友推荐的mudo网络库,下完代码得知是国内同行的开源作品,甚是敬佩。下了mudo使用手册和035版的代码看了下结构,感觉是一个比较成熟而且方便使用的网络库。本人手头也有自己的网络库,虽然不敢说是一个多强大的网络库,但毕竟在外网也稳定运营了几年,多组同时在线也跑过30w左右,单组服务器也能跑上w人。做游戏服务器几年的经验,感觉稳定性才是网游服务器最核心最重要的环节,效率还在其次,这也是目原创 2012-06-05 21:08:54 · 19648 阅读 · 3 评论 -
线程栈空间的大小
一直做Windows服务器向Linux平台的移植工作,对于线程的栈空间也是似懂非懂,因而出现了一些问题和总结了部分经验,供大家分享。在我的服务器上启动了286个线程后,其后的线程启动失败了,返回的错误原因是12,经查找定义如下:#define ENOMEM 12 /* Out of memory */看来创建线程失败的原因是分配内存失败,同时进程占用的V转载 2012-06-08 14:47:26 · 13520 阅读 · 0 评论 -
如何:针对 64 位平台配置 Visual C++ 项目
本主题介绍如何使用 Visual Studio 集成开发环境 (IDE) 中提供的项目配置将 C++ 应用程序设置为面向 64 位平台。若要开发 64 位应用程序,必须至少安装两个 Visual C++ 64 位编译器中的一个,否则 64 位项目配置将无法在 IDE 中使用。 有关信息,请参见 Installing Visual Studio 64-bit Components。转载 2012-07-24 17:08:58 · 1179 阅读 · 0 评论 -
我不投资的九种企业
9)经过反复论证找不到商业模式的项目我不投;8)不会用微信的创始人创办的企业我不投;7)跟移动互联网没有任何关系的项目我不投;6)为了赚钱而赚钱的创业团队我不投;5)没有任何社会价值的项目我不投;4)核心团队有“商业道德瑕疵”的我不投;3)核心团队没有承担任何风险的我不投;2)核心团队还在兼职的项目我不投;1)只有一个人的“团队”我不转载 2012-07-26 11:40:57 · 1425 阅读 · 0 评论 -
C++ 协程与网络编程
协程协程,即协作式程序,其思想是,一系列互相依赖的协程间依次使用CPU,每次只有一个协程工作,而其他协程处于休眠状态。协程可以在运行期间的某个点上暂停执行,并在恢复运行时从暂停的点上继续执行。 协程已经被证明是一种非常有用的程序组件,不仅被python、lua、ruby等脚本语言广泛采用,而且被新一代面向多核的编程语言如golang rust-lang等采用作为并发的基本单位。 协转载 2014-05-15 17:02:30 · 1048 阅读 · 0 评论 -
总结libevent安装方法
1.先用:ls -al /usr/lib | grep libevent 查看是否已安装,如果已安装且版本低于1.3,则先通过:rpm -e libevent —nodeps 进行卸载。 2.下载libevent安装包:libevent-1.4.13-stable.tar.gz,然后解压。 3.切换到解压后的 libevent 主目录:cd libevent-转载 2014-08-02 13:06:54 · 5211 阅读 · 0 评论 -
nginx 反向代理 504 错误
之前的代理服务器Nginx 配置是这样的server { listen 80; server_name *.*; location / { proxy_pass http://192.168.0.100:8001; proxy_set_header host $host;转载 2015-03-24 19:46:55 · 3870 阅读 · 0 评论 -
玩转Protocol Buffers
1. 人人都爱Protocol Buffers1.1 Protocol Buffers(PB)是什么?Protocol buffers are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but small转载 2015-04-03 20:30:41 · 1472 阅读 · 0 评论 -
16年的长度 记录中国独立游戏
文/罗培羽 每一个游戏都是梦想与智慧的结晶。 “独立游戏”是近几年才流行起来的词,而“自己制作的游戏”来源已久。从十多年前程序员写的小玩儿,到如今使用游戏引擎开发的炫酷产品,中间穿插着技术的不断变革。那些有幸在浪潮中留下印记的人们,他们的故事见证了我国独立游戏的发展历程。 第一位独立制作者已无从可考。在互联网普及之前,即使成功完成游戏作品,也缺乏途径将之传播给大众。许转载 2015-04-05 13:56:26 · 2176 阅读 · 0 评论 -
Muduo源码阅读
最近简单读了下muduo的源码,本文对其主要实现/结构简单总结下。muduo的主要源码位于net文件夹下,base文件夹是一些基础代码,不影响理解网络部分的实现。muduo主要类包括:EventLoopChannelPollerTcpConnectionTcpClientTcpServerConnectorAcceptorEventLoopThreadEventLoopThread转载 2015-08-26 20:10:55 · 918 阅读 · 0 评论 -
如何加快C++代码的编译速度
C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速度,却只有低调的份了。比如我现在工作的源代码,哪怕使用Incredibuild调动近百台机子,一个完整的build也需要四个小时,恐怖!!!虽然平时开发一般不需要在本地做完整的build,但编译几个相关的工程就够你等上好一段时间的了(老外管这个叫monkey around,相当形象)。想想若干年在一台单核2.8GHZ上工作时的场景 -转载 2016-06-09 11:12:08 · 717 阅读 · 0 评论 -
鹅厂开源框架tars之基础组件
tars开源框架地址:https://github.com/Tencent/Tars系列文章:鹅厂开源框架tars之日志服务鹅厂开源框架tars之运营监控服务鹅厂开源框架tars之基础组件鹅厂开源框架tars之网络层实现简介:Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持C...原创 2018-09-22 21:56:04 · 2050 阅读 · 0 评论 -
鹅厂开源框架tars之运营监控服务
tars开源框架地址:https://github.com/Tencent/Tars系列文章:鹅厂开源框架tars之日志服务鹅厂开源框架tars之运营监控服务鹅厂开源框架tars之基础组件鹅厂开源框架tars之网络层实现简介:Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持C...原创 2018-10-18 21:03:13 · 1493 阅读 · 2 评论 -
C++ 面试题
C语言面试题大汇总之华为面试题 Eddy整理1、局部变量能否和全局变量重名? 答:能,局部会屏蔽全局。要用全局变量,需要使用"::" ;局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变转载 2011-06-26 23:22:00 · 3759 阅读 · 0 评论 -
整合网络库备忘
<br /> 把ASIO整合到已有的win网络库,需要用宏定义重新定义CTcpServer 或者重命名一个CAsioTcpServer,因为整个网络模型的接口都更改了。CAsioTcpServer成员变量只需要增加一个 sessionlist 维护所有netsession。还有定义一个acceptor专门用于接收数据。creaeiocpsession 可以去掉,统一使用智能指针管理session。networklistener 同样继承 CAsioTcpServer。重新定义CNetworkConnec原创 2011-04-21 10:40:00 · 735 阅读 · 0 评论 -
重读 深入C++对象模型小结(持续更新中)
记得几年前还在广州的时候有读过这本书,但比较粗略,并没有融会贯通,可能是之前C++基础较为薄弱。搬家后这本书没有落掉,因此近段时间晚上1小时的读书时间看起了这个。第一章主要讲C++ 对象模型,主要分析C++对象模型的结构,当中还跟C语言做了一些对比,例如分析了为什么C++要引入CLASS,原因其实比较简单,就是struct不适合C++ oo的思想,并且扩展到模板使用中显得过于突兀。重头戏是讨论了C++其实并没有传说中比C++效率低很多,并且C++虽然加了虚函数的机制增加了空间的成本,但是却赢来了更好的扩展原创 2011-02-23 09:55:00 · 849 阅读 · 0 评论 -
专访Andrei:C++会带给我们什么
Andrei Alexandrescu是新一代C++天才的代表人物,他创造力非凡,思维方式不循常理,剑走偏锋,却往往能收到奇效;善于在各种“标准”中游走,发现提升空间,有“庖丁解牛”之功力。其他身份:华尔街咨询师,摇滚乐队鼓手,古典吉他演奏家,罗马尼亚伞兵。Andrei Alexandrescu日前接受了51CTO记者孙淑娟的专访,就C++当前的情况进行了广泛而深入的讨论,他号召C++程序员要转载 2008-02-01 15:58:00 · 2057 阅读 · 2 评论 -
详细解说 STL 排序(Sort)
从效率上看,以下几种sort算法的是一个排序,效率由高到低(耗时由小变大): partion stable_partition nth_element partial_sort sort stable_sort 若需对vector, string, deque, 或 array容器进行全排序,你可选择sort或stable_sort; 若只需对vector, string, deque,转载 2008-02-29 14:06:00 · 729 阅读 · 0 评论 -
在vs6.0和vs2005中安装STLPort
里面是两篇在网上转载的文章,第一篇包含了VS6.0和vs2005 第二篇配有插图,更加清晰,vs2005和vs2003的配置可以参考第二篇,在这里为了保证完整性,所以特意保留了 第一篇(包含VS6.0的配置),而vs2003的配置其实跟VS2005步骤是一样的转载 2008-01-15 00:47:00 · 2786 阅读 · 2 评论 -
遵循placement new的用法规范
标准的开始由一个特别的操作符new来定义,这个就是我们熟知的placement new。和其他普通的new不同的是,它在括号里多了另外一个参数。比如:转载 2008-01-17 12:23:00 · 1214 阅读 · 0 评论 -
C++使用小结(持续更新中)
每周都留给自己一些看书的时间。孔子说过 学而不思则惘,思而不学则殆 总结:一点模板的小结1.多个类型型参的实参必须完全匹配如:compare(short,int)2.知道什么叫模板类型型参,什么叫实参,什么叫模板非类型型参3.显式实参4.类模板成员函数5.类模板的静态成员6 类非静态函数指针class A {public: int f( double d ){cout };typ原创 2008-04-20 22:39:00 · 790 阅读 · 1 评论 -
C++ PRIMER小结
1.模板特化 为模板定制特别的类型参数 具体简单形式如:template();2.抛出类类型的异常,而不是指针。栈展开期间,释放局部对象所有内存,运行局部对象析构函数。堆内存则不释放3.析构函数应该从不抛出异常4.捕获不到的异常,调用terminate,退出程序5.catch应该从最低派生到最高派生6.捕获所有异常catch(...)7.利用auto_ptr做异常释放 auto_原创 2008-04-23 23:40:00 · 599 阅读 · 0 评论 -
stl使用小结(持续更新中)
下面括起来的这段是转贴的,括号外是自己总结的/******************************************************************************************************************************************************************************原创 2008-05-06 21:26:00 · 1676 阅读 · 1 评论 -
一些WINDOWapi的使用(转贴)
一、打开CD-ROMmciSendString("Set cdAudio door open wait",NULL,0,NULL);二、关闭CD_ROMmciSendString("Set cdAudio door closed wait",NULL,0,NULL);三、关闭计算机OSVERSIONINFO OsVersionInfo; //包含操作系统版本信息的数据结构OsVersionI原创 2008-06-09 22:43:00 · 754 阅读 · 0 评论 -
『转贴』do...while(0)的妙用
在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。 但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。 1. do...while(0)消除goto语句。通常,如果在一个函数中转载 2009-09-04 17:26:00 · 577 阅读 · 0 评论 -
[转贴]柔性数组结构成员
【柔性数组结构成员 C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做柔性数组成员,但结构中的柔性数组成员前面必须至少一个其 他成员。柔性数组成员允许结构中包含一个大小可变的数组。sizeof返回的这种结构大小不包括柔性数组的内存。包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。】 C语言大全,“柔性数组成原创 2010-02-23 17:06:00 · 806 阅读 · 0 评论 -
【转】详细解说STL hash_map系列
0 为什么需要hash_map <br />用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...<br />这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"的信息,最傻的方法就是取得所有的记录,然后按照名字一个一个比较。如果要速度快,就需要把这些记录按照字母顺序排列,然后按转载 2010-06-24 15:31:00 · 510 阅读 · 0 评论 -
(转)C/C++中的日期和时间 time_t与struct tm转换
(转)C/C++中的日期和时间 time_t与struct tm转换 摘要:本文从介绍基础概念入手,探讨了在C/C++中对日期和时间操作所用到的数据结构和函数,并对计时、时间的获取、时间的计算和显示格式等方面进行了阐述。本文还通过大量的实例向你展示了time.h头文件中声明的各种函数和数据结构的详细使用方法。关键字:UTC(世界标准时间),Calendar Time(日历时间),epoch(时原创 2010-05-15 14:10:00 · 645 阅读 · 0 评论 -
【转帖】零值指针指向何处?
<br />在阅读本文之前,希望读者对WINDOWS下程序的运行方式以及内存管理机制有基本的了解。 <br /> 一、NULL指针和零值指针(null pointer and zero value pointer) <br /> 我们查看一下C++标准库定义的NULL指针 <br /> // Define NULL pointer value <br /> #ifndef NULL <br /> # ifdef __cpluspl转载 2010-08-30 09:52:00 · 874 阅读 · 0 评论 -
【转帖】C 语言的谜题
<br />这几天,本站推出了几篇关于C语言的文章如下所示:<br />语言的歧义 [酷壳链接] [CSDN链接]<br />谁说C语言很简单? [酷壳链接] [CSDN链接]<br />6个变态的C语言Hello World程序 [酷壳链接] [CSDN链接]<br />如何加密/弄乱C源代码 [酷壳链接] [CSDN链接]<br />C语言的谜题 [酷壳链接] [CSDN链接]<br />我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。转载 2010-09-20 17:17:00 · 477 阅读 · 0 评论 -
【转帖】C / C++ 数学函数
<br />abs <br /> <br />原型:extern int abs(int x);<br />用法:#include <math.h><br />功能:求整数x的绝对值<br />说明:计算|x|, 当x不为负时返回x,否则返回-x<br />举例:<br />// abs.c<br /><br />#include <syslib.h><br />#include <math.h><br />main()<br />{<br />int x;<br /><br />clrscr(); //转载 2010-12-06 11:31:00 · 917 阅读 · 0 评论 -
静态变量的生存期和作用域
静态变量的生存期和作用域转载 2010-11-24 11:36:00 · 10981 阅读 · 0 评论 -
[转]C++异常中的堆栈跟踪
<br />C++语言的运行时环境是基于栈的环境,堆栈跟踪(trace stack)就是程序运行时能够跟踪并打印所调用的函数、变量及返回地址等,C++异常中的堆栈跟踪就是当程序抛出异常时,能够把导致抛出异常的语句所在的文件名和行号打印出来,以及把调用抛出异常的语句的函数以及其它上层函数信息都打印出来。<br /> 1. 为什么需要堆栈跟踪<br /> 当你在开发程序时,你是否曾遇到过程序运行过程中突然当机,而你不知道哪一行代码出的问题;你是否曾遇到过程序调试过程中突然抛出异常,而你不知道哪一行代转载 2011-02-21 09:57:00 · 1422 阅读 · 0 评论 -
鹅厂开源框架tars之日志服务
tars开源框架地址:https://github.com/Tencent/Tars系列文章:鹅厂开源框架tars之日志服务鹅厂开源框架tars之运营监控服务鹅厂开源框架tars之基础组件鹅厂开源框架tars之网络层实现简介:Tars是腾讯从2008年到今天一直在使用的后台逻辑层的统一应用框架TAF(Total Application Framework),目前支持...原创 2019-01-21 18:06:11 · 1839 阅读 · 1 评论