随笔分类 -  coding

上一页 1 2 3 下一页
代码
解决Qt5.7.0 cannot find -lGL
摘要:很久没用Qt了,这次要做一个协议编辑器,在ubuntu 14.04上安装了最新版本的Qt 5.7.0。界面改用扁平化风格,第一感觉还不错。按默认步骤创建了一个gui程序,编译运行,报了一个错:cannot find -lGL。 作为一个用惯了makefile的程序员,知道是少了库文件,而且名字应该为 阅读全文
posted @ 2016-07-16 21:20 coding my life 阅读(25390) 评论(4) 推荐(3)
对内存对齐的深一步理解
摘要:接触内存对齐这个概念,也有三四年了。不过由于我工作后一直做游戏服务器,都是在x86架构的机子上写代码,也没怎么注意内存对齐。使用最多的估计也就是面试时经常问结构体大小。最近在写自己服务器框架的二进流读写模块时,整理了下这方面的内容。本方不会涉及基本概念。 内存对齐只是指数据存储在内存时的起始地址是否 阅读全文
posted @ 2016-04-10 16:57 coding my life 阅读(9965) 评论(0) 推荐(0)
lua面向对象封装及元表(metatable)性能测试
摘要:Lua本身是没有面向对象支持的,但面向对象编程在逻辑复杂的大型工程却很有用。于是很多人用Lua本身的数据结构table来模拟面向对象。最简单的一种方法是把对象的方法、成员都放到table中。如: 调用也比较简单: 这已经很像面向对象编程。但我们可以看到这样写有些缺点: 1.数据和方法混在一起(当然这 阅读全文
posted @ 2016-04-04 16:33 coding my life 阅读(3619) 评论(0) 推荐(0)
我为什么要再给lua写一个json模块
摘要:最近要给自己编写的服务器加上json解析模块。根据我当前的项目,可以预测服务器中使用json的地方: 通信。由于与客户端通信使用google protocolbuffer,仅在与SDK通信中使用json 配置。我们当前直接将配置转换为lua table。但其他项目依然有很大概率要使用json作为配置 阅读全文
posted @ 2016-03-07 21:58 coding my life 阅读(9364) 评论(0) 推荐(0)
lua中的坑
摘要:在工作中使用lua也有一年了,代码也写了不少,踩过不少坑,这里记录一下。 table.sort table.sort是lua自带的排序函数,数据量小时,也还是不错的。不过要注意你传入的compare函数。例如: local tb = { 9,8,3,777,0,36548,556,0 } table 阅读全文
posted @ 2016-02-27 20:45 coding my life 阅读(2533) 评论(0) 推荐(0)
MongoDB的数据类型
摘要:最近在写一个lua的MongoDB模块。MongoDB版本3.2,lua则是5.3.1。底层以C++来写,再把函数暴露给lua调用。但是在lua中打印结果时,发现了些奇怪的现象。首先,数据库中的内容:> db.item.find(){ "_id" : 2001, "amount" : 999 }... 阅读全文
posted @ 2016-01-03 19:49 coding my life 阅读(13888) 评论(1) 推荐(0)
重写boost内存池
摘要:最近在写游戏服务器网络模块的时候,需要用到内存池。大量玩家通过tcp连接到服务器,通过大量的消息包与服务器进行交互。因此要给每个tcp分配收发两块缓冲区。那么这缓冲区多大呢?通常游戏操作的消息包都很小,大概几十字节。但是在玩家登录时或者卡牌游戏发战报(将整场战斗打完,生成一个消息包),包的大小可... 阅读全文
posted @ 2015-09-28 22:46 coding my life 阅读(3770) 评论(2) 推荐(1)
多线程中的信号处理
摘要:在linux下写服务器,处理信号在所难免。在多线程和单线程中信号的处理还是有点不同的。参考:http://maxim.int.ru/bookshelf/PthreadsProgram/htm/r_40.htmlhttp://aboocool.blog.51cto.com/3189391/6266... 阅读全文
posted @ 2015-09-04 22:47 coding my life 阅读(17345) 评论(0) 推荐(4)
lua的几个时间相关处理函数
摘要:随手写的,项目中没用,不一定对,只作参考。--游戏时间相关函数local gt = {}local math = mathlocal ONE_MINUTE = 60local ONE_HOUR = ONE_MINUTE * ONE_MINUTElocal ONE_DAY = ONE_HOUR *... 阅读全文
posted @ 2015-07-09 10:37 coding my life 阅读(1701) 评论(0) 推荐(0)
mongodb 更新数组出现can't append to array using string field name
摘要:数据库内容大概如下:{_id:1,"hero_list" : { "15521" : { "stars" : 0, "_id" : 15521, ... 阅读全文
posted @ 2015-07-03 14:32 coding my life 阅读(620) 评论(0) 推荐(0)
探讨socket引发SIGPIPE信号的问题
摘要:我写socket相关的程序也不是一天两天了,在我的记忆中,只要处理好recv(或read)的返回值中0三种情况,程序便不会有什么问题。但最近在看公司的源代码时,发现代码中直接将SIGPIPE设置为SIG_IGN。而且附上一段注释:往一个已经关闭的socket写入数据会触发SIGPIPE。我心中顿... 阅读全文
posted @ 2015-06-14 17:31 coding my life 阅读(6971) 评论(2) 推荐(0)
linux shell在while中用read从键盘输入
摘要:系统是ubuntu 14.04 64bit,之前曾想安装Stream来玩dota2,但最终没成功。由于Stream只有32bit,安装Stream时也安装了大量32bit的库。删除Stream后,这些库也一直没管,今天忽然心血来潮,想清理一下系统,把不必要的32bit库都干掉。 dpkg -l... 阅读全文
posted @ 2015-06-13 21:04 coding my life 阅读(4965) 评论(0) 推荐(0)
select与epoll分析
摘要:关于select与epoll的区别,网上的文章已是一大堆。不过别人的终究是别人的,总得自己去理解才更深刻。于是在阅读了大量的文章后,再装模作样的看下源码,写下了自己的一些理解。 在开始之前,要明白linux中分用户空间、内核空间,这相当于两块不能直接相互访问的内存。而用户程序要访问设备,包括网... 阅读全文
posted @ 2015-04-04 19:14 coding my life 阅读(660) 评论(0) 推荐(0)
C++中的重载、覆盖、隐藏
摘要:前几天面试时被问及C++中的覆盖、隐藏,概念基本答不上来,只答了怎么用指针实现多态,也还有遗漏。最终不欢而散。回来后在网上查找学习了一番,做了这个总结。其中部分文字借用了别人的博客,望不要见怪。引用的博客如下:http://www.cnblogs.com/feiguo/archive/2013/... 阅读全文
posted @ 2015-03-15 16:37 coding my life 阅读(813) 评论(0) 推荐(1)
fcntl函数加文件锁
摘要:对文件加锁是原子性的,可以用于进程间文件操作的同步。在linux下,有三个函数可以对文件进程加锁,分别是fcntl、flock、lockf。这里只说fcntl,它的用法也是最复杂的。 fcntl是file control的缩写。在linux下大部分设备都是文件,所以fcntl的功能也比较多,包... 阅读全文
posted @ 2015-02-07 22:04 coding my life 阅读(3423) 评论(0) 推荐(1)
系统中断与SA_RESTART
摘要:今天在调试程序时,sem_timedwait居然返回了一个Interrupted system call,错误码为EINTR。系统中断这东西我一向只闻其名,不见其"人",不想今天遇上了,脑中一片空白,赶紧上网恶补一下。 系统中断,要从慢系统调用(slow system call)说起,请参考h... 阅读全文
posted @ 2015-01-31 18:39 coding my life 阅读(2542) 评论(0) 推荐(0)
linux使用共享内存通信的进程同步退出问题
摘要:两个甚至多个进程使用共享内存(shm)通信,总遇到同步问题。这里的“同步问题”不是说进程读写同步问题,这个用信号量就好了。这里的同步问题说的是同步退出问题,到底谁先退出,怎么知道对方退出了。举个例子:进程负责读写数据库A,进程B负责处理数据。那么进程A得比进程B晚退出才行,因为要保存进程B处理完... 阅读全文
posted @ 2015-01-25 21:51 coding my life 阅读(3277) 评论(0) 推荐(0)
一个sigaction的C++ wrap
摘要:在上一篇文章(http://www.cnblogs.com/coding-my-life/p/4220128.html)中,提到了libev提供了处理信号的C++ wrap。但我显然接受不了需要进入libev的事件循环(event loop)后才能捕捉到消息的缺点。于是决定依照libev的思路自... 阅读全文
posted @ 2015-01-17 21:20 coding my life 阅读(1589) 评论(0) 推荐(0)
浅析libev的ev_signal过程
摘要:ev_signal是libev提供的对信号处理的一个模块,基本上是对sigaction函数的一个封装,并将本身是异步的信号转化为同步。ev_signal的使用十分简单:#include #include static void sigint_cb (struct ev_loop *loop,... 阅读全文
posted @ 2015-01-12 23:18 coding my life 阅读(4450) 评论(0) 推荐(1)
关于sem_unlink什么时候删除信号量
摘要:sem_unlink在man手册里有这么一段话: sem_unlink() removes the named semaphore referred to by name. The semaphore name is removed immediately. The semaphore isdest 阅读全文
posted @ 2015-01-10 22:53 coding my life 阅读(6090) 评论(0) 推荐(0)

上一页 1 2 3 下一页