Linux | c&cpp | Email | github | QQ群:425043908
开发 · 记录 · 分享

01透过 Linux 内核看无锁编程

非阻塞型同步 (Non-blocking Synchronization) 简介如何正确有效的保护共享数据是编写并行程序必须面临的一个难题,通常的手段就是同步。同步可分为阻塞型同步(Blocking Synchronization)和非阻塞型同步( Non-blocking Synchronization)。

内核无锁第一层级 — 少锁

内核无锁第二层级 — 原子锁

内核无锁第三层级 — Lock-free

内核无锁第四层级 — 免锁


02c++delete后虚拟内存不降的原因(疑似内存泄漏)

简单来说,文章开头内存不断增长的趋势的根本原因是:glibc在利用操作系统的内存构建进程自身的内存池。由于进程本身处理请求量大,频繁调用new和delete,在一段时间内,进程不断的从操作系统获取内存来满足新增的调用要求,但是从最终结果上来讲,总有一个临界点,使得进程从操作系统新获取的内存和归还给操作系统的内存达成相对平衡。在这个动态平衡建立前,内存会不断增长,直到到达临界点。

03GDB加载调试共享库

GDB要调试的共享库一定要加-g编译才可以调试,检查共享库是否有调试信息,需要在应用程序目录用gdb启动应用程序,然后执行指令 info sharedlibrary 即可查看否加载了符号表和调试信息

04游戏服务器的技术及组件

这篇文章, 不介绍通用的技术, 专门介绍游戏服务器内能用上的技术及组件等.

05分布式模式

分布式定义:将一个完整的服务,按照业务功能,拆分成一个个独立的子服务。这些子服务能够独立运行在部署的环境中,它们之间通过RPC方式通信。

06设计模式和反模式

设计模式提供了一个在架构师和设计人员中捕获知识和经验的机制。它们提供了一种公共语言,可促进对其他地方成功应用的方法的重用,从而为软件项目带来以下方面的好处:风险更低、质量更好且交付时间更短。

而在另一方面,反模式则记录出现错误的情况——对于普遍存在的软件设计缺陷、问题进行总结。

我们将从反模式入手,通过对错误的设计方法总结,延申出正确的设计模式。

07面向对象设计

面向对象规范为对象编程定义了基本的规范,是面向对象编程的主要思想。换一种说法,面向对象规范就是基本的语法,定义了你写词造句的方式,将一个个单独的词语组合成一句完整的话语。 而面向对象设计教你如何正确地使用类,怎么把一些属性和方法封装在一个类中,怎样封装才是正确的,怎么使用继承关系。

08c++ 模板类 声明和定义都放在.h文件的原因

在分离式编译的环境下,编译器编译某一个.cpp文件时并不知道另一个.cpp文件的存在,也不会去查找(当遇到未决符号时它会寄希望于连接器)。这种模式在没有模板的情况下运行良好,但遇到模板时就傻眼了,因为模板仅在需要的时候才会实例化出来,所以,当编译器只看到模板的声明时,它不能实例化该模板,只能创建一个具有外部连接的符号并期待连接器能够将符号的地址决议出来。然而当实现该模板的.cpp文件中没有用到模板的实例时,编译器懒得去实例化,所以,整个工程的.obj中就找不到一行模板实例的二进制代码,于是连接器也黔驴技穷了

09C++容器模板在共享内存中的使用

在共享内存中使用模板容器的关键问题是指针的问题,相对地址是解决这个问题比较好的方法。一个比较通用的方案是将所有的指针改成一个相对地址记录,还有一种思路对于容器的处理方式是将容器的所有数据按最大数量分配好,使用下标处理。

10STL迭代器及迭代器失效问题

1、对于关联式容器(map, list, set)元素的删除,插入操作会导致指向该元素的迭代器失效,其他元素迭代器不受影响。

2、对于顺序式容器(vector)元素的删除、插入操作会导致指向该元素以及后面的元素的迭代器失效。

11C++非类型模板参数

1.非类型的类模板参数。

2.非类型的函数模板参数。

3.非类型模板参数的限制。

12泛化之美--C++11可变模版参数的妙用

C++11的新特性--可变模版参数(variadic templates)是C++11新增的最强大的特性之一,它对参数进行了高度泛化,它能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。

我的名片

网名:丰果 | Ranger

职业:游戏开发

现居:上海市

Email:86668082@qq.com




站点信息

  • 建站时间:2016-04-01
  • 文章统计:726条
  • 文章评论:82条
  • QQ群二维码:扫描二维码,互相交流