自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 mysql插入超过字段长度的新数据时,insert into on duplicate key和单纯insert into的区别

表结构如下现在插入一个查过128(26的英文字符循环5遍即130个字符)的字符insert into t_user (mold,open_id) values(1,‘ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ...

2019-05-31 18:11:00 1461

原创 多线程同步

同步手段:mutex、自旋锁、原子操作、条件变量、信号量、barrier(内存屏障)mutex:尝试获取锁,如果获取不到,内核将此线程放入队列、此线程休眠、当锁释放后,内核将mutex取出自旋锁:一直处于忙的状态,相对于Mutex不会挂起,此线程一直检测锁是否释放,释放获取锁,效率比mutex高,因为没有从挂起状态到运行状态的切换CAS的原子操作:在任意时刻又且仅能有一个线程对某个变量操作...

2018-12-10 21:01:36 131

原创 epoll的监听多个fd的read和send操作

核心代码如下m_bRunning = true; // first let's increase the limit of open files int maxconn = 100000; struct rlimit srl; srl.rlim_cur = maxconn + 10; srl.rlim_max = maxconn + 10; if (setrlimit(RLIM...

2018-12-06 21:11:05 2155

原创 服务器关闭客户端连接操作

所有玩家的数据都保存在map<fd, NetCache>里边,玩家在登陆成功后,会将fd和NetCache保存起来,同时将fd设置在玩家自己的身上,那么在什么时机会关闭fd连接呢?关闭连接操作如下void NetHandler::doCloseConnection(int fd){ if (fd > 0) { FD_CLR(fd, &amp...

2018-12-05 11:22:46 3532

翻译 Reactor模式处理高并发

1、epoll的同步编程方式如果是listenfd,那么放入epoll继续监听如果是可读fd,那么读取fd,并且处理读时间int main(int argc, char** argv){epoll_ctr(efd, ADD, fd);while(1){ epoll_wait(, event, ....); for(;;) { if(fd == listenr_scoket)...

2018-12-04 21:30:23 771

原创 玩家数据和活动数据的修改、保存、删除

玩家数据的修改 1、玩家发来的事件处理完完成后, 2、会保存玩家的UID(map《int64, bool》 m_mapUserSave)(表示这个玩家更新了数据), 3、保存玩家数据 3.1然后去从hash_map 《int64, User*》 & mapUsers找到玩家的数据,进行保存 3.2清除第二步中的玩家信息。 4、保存完成后, 添加该玩家的uid到...

2018-08-20 17:57:12 856

原创 proxy代理服务器的代码实现

proxy代理服务器的作用是,通往两个世界的大门,这两个世界是客户端和服务器,通俗一点就是防火墙,意思就是客户端想要访问我服务器,需要连接proxy进行通信,proxy负责将消息转发给其他服务器,而这些其他服务器相对于客户端是不可见的,客户端只知道和proxy通信,知道linux的话,类似于一个跳板机。自此,笔者是一名卡牌游戏服务器工程师,语言为C++...

2018-08-14 18:25:31 2021 1

原创 游戏中排行榜代码实现

游戏设计中常常使用排行榜,根据排行发送排名奖励。排行容器的组成 记录排行的容器是一个由内部由vector和map组成的模板类 1.1.容器为什么这么设计 1.1.1vector部分的结构 其中vector里的元素使用的是pair, pair的first部分保存的是 uid(玩家ID),second部分保存的我们想要保存的任何信息(当然是一个类,或者结构体),然而vector的排列顺序...

2018-08-08 17:51:26 10065 4

原创 linux c程序崩溃前执行回调函数(包括打印core堆栈信息,也可以做我们想做的其他事情)

需求 如果程序崩溃的话,我们希望留下程序崩溃在的core信息,记录了程序崩溃的原因,崩溃的函数,甚至可以定位到文件的第几行 思想 实现思想很简单即是:使用信号捕捉。具体思想: 例如我们捕捉到段错误信号,那么就去执行回调函数执行,记录core信息,而linux c为我们提供了打印core信息的函数即是backtrace()函数,获取函数调用堆栈帧数据具体实现: 第一部分...

2018-08-04 16:51:13 2583

原创 通过CMakeLists.txt和shell脚本实现自动化编译

# CMakeLists filecmake_minimum_required(VERSION 2.6)project (server)#编译选项SET(CMAKE_CXX_FLAGS_DEBUG "-g -ggdb -Wall -Wno-unknown-pragmas")SET(CMAKE_CXX_FLAGS "-std=c++0x -Wno-

2018-08-04 15:34:01 3519 1

原创 奇怪的代码

bool类型意义不明确void MatchAndGameManager::SendReconnectRes( int gameid, int64 uid, bool **yesorno** ){ if ((gameid <= 0) || (uid <= 0)) { return; } Event evt; Trans...

2018-08-03 21:05:40 877

原创 侯捷STL源码分析:priority_queue 读书笔记

概述 priority_queue是一个可以自动排序的queue,queue的特性是只能底入头出。成员函数 bool empty() size_type size() const_reference top() void push(const value_type& x)//先将元素插入到底层的最底端,然后重新排序 void pop()//先进行排序,然后在弹出顶端没有...

2018-08-02 16:29:35 166

原创 STL set的自定义比较函数,导致插入相同数据,导致程序程序崩溃

include include include includeincludeusing namespace std;int ciStringCompare(const string & lhs, const string & rhs); struct CIStringCompare : public binary_fun...

2018-08-02 15:43:58 1119

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除