c++泛型(模板)和java泛型的实现

1.前言

之前对于c++的泛型和java的泛型有什么区别一直不是很清楚,今天来总结一下.

Read More

epoll的实现机制

1.前言

昨天弄懂了epoll是干啥的,今天来研究下它是怎么实现的以及怎么用的.

Read More

[转]epoll作用的解释

1.前言

目前很多C++服务器底层网络传输基本都是通过epoll来实现的,所以这里来深入研究下epoll.

epoll是linux提供的IO多路复用的一种机制,之前没有弄得很懂.知乎上看到一片对IO的几种机制和epoll作用解释得很易懂的文章,这里转过来,之后具体研究epoll的原理.

Read More

c++中unordered_map的实现

1.前言

写leetcode时发现很多时候高效的答案会用到unordered_map和unordered_set.从使用角度看,unordered的stl容器与正常的map,set相比,在插入和查询的效率上更高,《boost::unordered_map 和 std::map 的对比》中用5000万条数据放入两个容器中进行了对比.这是因为实现上,unordered的stl容器使用的是hashtable,而map,set使用的是红黑树.当然map,set插入后天然有序,需要按key排序时会比较方便.

正好面试要求让我写hashtable的实现,今天就研究一下c++中unordered_map的实现,主要参照的是linux下的源码:/usr/include/c++/4.8.2/profile/unordered_map和hashtable(hashtable我在我的c++源码里没找到,可能在编译好的库中了,所以找的网上的代码).

Read More

git原理

1.前言

一直觉得git很神奇,他的分支切换很快,他的自动合并很智能,他在协作编码时有着不可替代的作用.所以这两天想研究下git的实现原理,参考的资料主要是Git Internals,《Pro Git》的Chapter 10,还有中文版的Git内部原理.

Read More

lua与c++的交互

1.前言

Lua作为一个运行效率非常高的脚本语言,简单方便,如今很多游戏开发都会用到.今天研究下c++和lua是如何交互的~

Read More

游戏服务器的网络协议

1.前言

来到公司后了解到我们的游戏服务器是使用tcp协议进行通信的,使用epoll来监听和处理socket.网络协议会一定程度游戏数据的网络传输的效率、安全性、完整性、顺序性等,因此网络协议的选择一定要恰当.

Read More

c++中的拷贝构造函数调用时机

1.前言

在码代码时会经常遇到stl容器类的传递,stl类内数据量较大时,拷贝时会耗费大量资源,需要避免,所以需要了解何时会调用拷贝构造函数.

网上看到一种答案:

拷贝构造函数调用的几种情况:

  1. 当用类的一个对象去初始化该类的另一个对象(或引用)时系统自动调用拷贝构造函数实现拷贝赋值。
  2. 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。
  3. 当函数的返回值是类对象时,系统自动调用拷贝构造函数。

为验证正确性,以下做了个实验.

Read More

游戏后端c++开发的一些开发心得

1.前言

经过几个礼拜的实习,终于有点熟悉公司的环境了.我在公司的工作环境大致如下:

  • 语言: 主要使用c++,还会有一些lua、go等语言 编辑器: vim 编译器: gcc,编译时使用Makefile 版本控制: git、svn,代码的管理主要通过git,配置文件的管理主要通过svn 调试工具: gdb

从刚开始什么都不会,编码、调试什么的都无从下手,现在终于能够上手了.以下总结一下这几个礼拜中的一些心得,主要是一些开发时的技巧.(以下截图都是网上找的,因为公司代码不方便放出来~)

Read More

多线程下的运行时间统计

1.前言

前一阵子学习多线程编程时,发现了一些问题,写下这篇blog记录一下~作业是写一个计算N以内素数的程序,然后用不同的方式实现多线程.

Read More