加载中
再学计算机图形学入门

在网上查资料时,无意间发现了一门课叫《现代计算机图形学入门》。于是事隔将近3年后,我再一次尝试图形学入门。这次学习从8月20号开始,一直到10月11日,约持续了一个半月。 但是这次的学习...

xs
10/12 09:00
7
再谈分布式服务架构

在两年前,我曾经设计过一版,高可伸缩服务器架构, 但只进行了理论推演,并没有使用具体业务逻辑验证过。以这两年的经验来看,这个架构不具备可实施性。 在之前的架构中,我只考虑了Gate和其...

setjmp的使用

以前对于C语言的setjmp和longjmp从来都是知道有这么个函数, 但是不知道什么情况下要使用, 甚至于不知道setjmp的实现机制是什么样子的. 这次在<a href="https://github.com/findstr/coroutine...

2017/02/28 20:45
14
C++的函数指针

看C++代码时看到了一段很新奇的用法, 回来剖析了一下, 感觉虽然原理很简单还是值得记录一下的。 代码大概是这个样子的: class test { public: void a1(){printf("test::a1\n");}; } int m...

2017/03/01 23:50
20
当class遇上union

声明:这是很久以前的文章。 今天同事又踩到一个以前设计时留下的坑,这次是关于union和class中的。 虽然这种设计我并不认同, 但是至少我觉得设计者对于c++的成员内存布局相当了解。 由于面...

c++
2017/03/02 07:55
25
bitfield数据类型的坑

声明:这是很久以前的文章 bitfield并不具有可移植性,因此实际使用中,我都是尽量使用bitand来代替。 然而代码中之前就已经使用了bitfield的定义方式,作为后续开发我没有理由去改掉这个数据...

gcc
2017/03/03 19:43
39
使用多态来做到open-close

自从看了设计模式了解到open-close原则后, 我在写代码时都是尽量遵循着open-close原则来进行编码。 而面向对象中的多态在做到open-close原则中起到不可忽略的作用。 一般在设计之初会先抽象...

2017/03/06 07:56
16
seqlock和rwlock

最近看《linux内核设计与实现》时看到一种叫seqlock的锁,其作用与rwlock有相仿的功能。 在读写频率不对等的情况下,使用普通的互斥锁显然并不是一个好主意。 由于读取内存中的数据并不会产生...

2017/03/06 22:10
11
seqlock和rwlock

最近看《linux内核设计与实现》时看到一种叫seqlock的锁,其作用与rwlock有相仿的功能。 在读写频率不对等的情况下,使用普通的互斥锁显然并不是一个好主意。 由于读取内存中的数据并不会产生...

2017/03/07 07:54
17
tcp使用的进一步了解

以前对socket的了解仅仅局限于listen/connect/epoll/select/close等这些API的表面使用。其具体语义以及一些状态都没有深究。总觉得这样写代码会出问题,今天咬咬牙把《tcp协议卷1》中的Tcp部...

2017/03/08 07:47
14
std::vector的错误使用

声明:这是很久以前的代码 上周五服务器线上出现了几次crash,拿回dump文件分析后发现代码是崩在了对一个引用的成员变量赋值上。 分析了半天也没看出来代码有什么不妥,就先搁置了。 今天同事...

c++
2017/03/10 08:23
27
lua gc的使用

主流的垃圾回收一般都是基于引用计数和标记清除算法. 从内存占用量上来讲, 引用计数无疑是有优势的, 当引用计数为0时, 直接就会将相应的对象清除, 典型的应用就是C++的智能指针. 但是基于引用...

2017/03/13 20:58
32
解耦

事情起源于昨天的一次讨论。模块A如何在不同的时期返回不一样的数据类型的值,供其他不同的模块使用。 我自行脑补了一下,其实这类问题可以归结为对数据类型的解耦。 考虑一种特殊情况,有m...

c++
2017/03/20 07:56
30
listen函数中的backlog字段

今天在公司无意间又拿redis-benchmark测了一下silly的IO并发性并与redis本身比较了一下。 发现在2000个client同时并发的情况下,性能只是Redis的30%的左右。 直觉上这很不正常,虽然silly所有...

2017/03/25 15:43
40
如何做到宽容的收

在《unix编程艺术》提到过,Postel规定过:“宽容的收,谨慎的发”。 当时看到这一段话时,并没有多加思考,以为仅仅是对于网络协议多加检查就好了,并没有深想。 然而经过这两年的实践,我发...

2017/04/12 21:48
29
关于网络协议封装的一些新想法

最近业余时间在写一个小游戏。在为客户端封装socket层时头脑一热,有了一些新的想法, 在这里记录一下。 客户端使用的是Unity3d引擎。而在Unity3d中,基础的socket库只提供两种模式,一种是阻...

2017/05/28 18:29
53
一个高可伸缩的游戏服务器架构

设计完socket通讯协议后,就面临着服务器架构设计了。我希望他是一个去中心化且具有高可伸缩性的集群架构。 水平扩展是高可伸缩的首要条件,因此,在设计之初就必须考虑好水平扩展考方案。 ...

2017/07/02 21:16
50
C程序中让两个不同版本的库共存

今天有同学提出,如何在一个C程序中让两个不同版本的库共存。 首先想到的方案是,把其中一个版本的库函数全部重命名,比如把每一个函数名都加一个_v2的后缀。 人工替换到没什么,但是如果函数...

lua
2017/09/27 08:50
56
一次性能优化经历

自从上次修改backlog之后, Silly的IO能力,就一直以少量(约4~6K)的差距落后于redis,却一直找不到原因。 这次打算从头做一次profile来问题到底出在哪。 先用GNU提供的gprof分析一下C代码是否...

谈谈我对数据同步的理解

Web和网游的最大不同也许就在于数据同步。 Web工作流程(这里不包括页游)虽然也有很多变化,但是一般都分为大致三步。 1. 在浏览器输入网址, 浏览器通过HTTP协议请求服务器加载数据,服务器...

2018/05/27 10:56
29

没有更多内容

加载失败,请刷新页面

返回顶部
顶部