re: C++的流设计很糟糕[未登录] cppexplore 2010-07-06 14:29
@cui
......................惊人的一致............
re: C++的流设计很糟糕[未登录] cppexplore 2010-07-06 14:28
兄弟, 你走远了吧. log4cpp的流使用方式就很好啊,类似如此:
#define SLOG(Level,Event) \
do{ \
std::ostringstream _SLOG_BUF_INTERNAL_; \
_SLOG_BUF_INTERNAL_<<Event; \
printf_log(Level,_SLOG_BUF_INTERNAL_.str().c_str()); \
}while(0)
re: 顺便发个招聘信息 cppexplore 2010-07-02 08:48
请不要发广告到首页, 谢谢配合!
re: 【原创】服务器技术系列综述(二) [未登录] cppexplore 2010-06-04 12:06
@UustCodeIT
session对象和 网络层的connection对象有一定对应关系的
re: 我心中的好程序员[未登录] cppexplore 2010-06-02 09:08
好的程序员,就一点: 交给他事情你放心.
re: 令人气愤的现象[未登录] cppexplore 2010-05-28 08:56
博主不要生气, 平常心看待
我想他也是无意说的.
re: 一种线程安全的单例模式实现方式[未登录] cppexplore 2010-05-27 08:56
@OnTheWay
c++里的线程安全单例应该是典型的双重检测.
文中如此实现的话, 每次调用GetInstatnce都要涉及到加锁操作, 估计没人愿意调用.
re: 【原创】技术系列之 状态机(二)[未登录] cppexplore 2010-05-26 09:36
@种花得花
是错了. 应该先执行func,再执行状态迁移引起的func.
需要为每个event单独配置一个event func, 当然是这个状态对这个event感兴趣的时候, 对不感兴趣的event, 使用改状态的default_func就可以了.
如果每个状态只要一个事件回调, 那说明这个状态只对一个event感兴趣吧(或者你的多个event应该合并成一个), 这个时候基本不需要状态机,保存一个玫举的状态变量就好了, 这是我的一点看法.
re: 【原创】技术系列之 状态机(二) cppexplore 2010-05-25 17:50
@种花得花
兄弟看的仔细啊.
如果event产生了state切换,也应该先执行对应的func, 再执行exit func啊.
不太明白你的意思. 不过我实际用的状态机的确和文章中的都差异很大,呵呵, 除了整理调试代码外,最大的修改 就是状态切换时, 不马上切换, 先将状态入队列,等func执行完, 再做实际的state切换,不知道你说的是不是这里的问题.
re: 无锁线程通信(1)[未登录] cppexplore 2010-05-06 13:25
如果不考虑线程wait和signal的问题,仅仅是读写问题,不加锁可行,我觉得前提是:
(1)只有两个线程参与,存在point_r 读指针和point_w 写指针 两个变量。
(2)只有读数据线程 写变量point_r , 只有写数据线程 写变量 point_w 。写就是一个变量的写操作只在一个线程内进行,其他线程只读。
原子性操作不能借助语言层面的volatile实现,必须借助基于硬件的基本原语完成。最近常说的lock_free编程,具体实现是spin_lock,基于CAS原语实现,是因为没有借助内核态的锁而著称。
re: 网站架构演变体系[未登录] cppexplore 2010-04-16 18:43
好文!
re: 【原创】服务器技术系列综述(三) [未登录] cppexplore 2010-04-13 16:48
@zhaojx
很高兴你能喜欢我写的内容, :)
re: 【原创】内存相关分享[未登录] cppexplore 2010-04-02 09:10
@cm
试用了内存池吗? 全局内存池的话效果不理想,至少linux下全局的是跑不过dlmalloc的. 据说windows下很容易跑过它自己的malloc子系统吧, 我没测试过,呵呵.
试试区分对象内存池和线程内存池,观察服务器稳定并发能力是否有提高,响应时间是否有稍许改善,cpu利用率是否平稳? 观察下你服务器在规格性能下,是cpu高还是iowait高, 看看系统瓶颈在哪里?
re: 浅谈游戏服务器-》架构上来看(三) [未登录] cppexplore 2010-02-02 14:11
刚顶错地方了 呵呵. 好文! 期待博主继续
re: 浅谈游戏服务器---功能模块上来看[未登录] cppexplore 2010-02-02 14:08
不错 好文!! 期待博主继续
re: 【原创】技术系列之 定时器(二) cppexplore 2010-02-01 11:36
@expter
的确不高,呵呵
现在换成线程独自的定时器了,不再加锁,容器换简单的multimap了
re: 【原创】技术系列之 线程(二)[未登录] cppexplore 2009-10-30 08:51
@laohu
"尽量避免pthread_mutex进入竞争态。增大消息队列的大小,可以有效减少竞态条件的出现。 "
前一个句号:减少有人拿到了互斥锁的时候,再有人申请,此时后来者将陷入内核等待。
后一个句号:增大消息队列长度,可以减少pthread_cond_signal的调用频率,该调用总是陷入内核。
“互斥变量的竞争和队列长度有什么相关? ”,没啥关系,上面中间是句号, 你当成逗号了吧,呵呵。
re: 【原创】项目管理之 个人小结[未登录] CppExplore 2009-10-16 20:43
@摇摆胖胖
你是指这篇blog里的图吗?这是甘特图,用GanttProject画的 开源的。
时序图,以前用rose画,现在改startuml了,也是开源的
re: 【原创】技术系列之 定时器(二)[未登录] cppexplore 2009-09-29 08:30
@neou
看过。
两码事情,8253芯片计时,os里中断处理。
re: 一个轻量级智能指针实现[未登录] cppexplore 2009-09-23 22:25
语言层面没有这种机制。
可以用boost 或者自己封装一层屏蔽os差异
re: 一个轻量级智能指针实现[未登录] cppexplore 2009-09-23 21:24
智能指针常用的就是线程间传递指针类型数据的时候,导致两个线程不能确定该指针释放的时间点,所以基本上不加锁的智能指针用处不大。
re: 扩充完路径库 cppexplore 2009-09-14 19:22
已经移出首页。
cppblog基本上比较自由,是否发首页由作者自己决定,发的时候最好斟酌下,谢谢!
re: pku 2236 cppexplore 2009-07-14 11:09
博主,这种整篇都是代码的文章 就不要再往首页上发了。全是代码,很少会有人看的,很多人订阅了首页,尽量不要浪费大家的时间。
re: 【原创】技术系列之 状态机(二)[未登录] cppexplore 2009-07-06 20:33
@大华
莫非是浙江大华的朋友,呵呵
re: 直升机原理与发展 3(ZZ)[未登录] cppexplore 2009-07-06 19:09
顶!
re: 我的初次尝试[未登录] cppexplore 2009-06-05 13:35
#include <stdio.h>
int main()
{
getchar();
return 0;
}
re: 学习不嫌太晚!日子越过越难?[未登录] cppexplore 2009-05-18 11:53
兄弟,面对现实吧,你不适合上学,赶快找点能做出成绩的行业,开始起步吧。
比如利用你语言上的优势,在两国互通有无,或者复制一个国家的商机到另一个国家,或者为在国外的留学生小团体提供一些服务,常见的就是跨国话务之类的。
我的经历也是如此,也思考过原因:
(1)公司不重技术、重市场。而开发的直接领导也是同样的浮躁心态。
(2)开发团队没有技术积累、没有统一认可的基础架构。
(3)开发人员由于不同的开发经历,各自有自己的基础模块实现、对系统有自己的认知。
改善这个情况,开发人员的角度 也只能是多沟通、互相分享知识、定期分析已有系统的架构、争取能对同类型的应用应该使用的最佳设计达成共识。
根本解决还在领导层对技术的重视,重视基础模块积累、重视对系统框架的探讨分析,重视团队技术上的可持续成长。
re: 那些年,那些事儿。[未登录] cppexplore 2009-05-14 09:40
博主好文采!
来搞技术,可惜了。
Ogre + C++吧 熟悉的话,可以直接进入实质的东西。时间都是浪费在实际的逻辑上,不是单纯的工具上,如果你对工具熟悉。
如果准备时间充足,也可以考虑XNA+.NET,事先增加技术预研阶段,写预研文档,扫平技术上的障碍,之后再进入实际的开发。
re: 【原创】技术系列之 网络模型(二)[未登录] cppexplore 2009-04-20 10:25
@蛙蛙
不同的应用有不同的需求。我的应用 瓶颈不在这里,在网络带宽。
一切以应用为导向,呵呵。脱离应用,谈也是空谈。
http短连接,考虑的问题很简单,单纯追逐http连接:
(1)使用好的服务器配置
(2)针对服务器cpu个数配置线程数:2n+1
(3)针对epoll ET模型特点,可读时候直接放到另一个线程的消息队列。
实际的应用,都是由简单的理论扩展而来。
re: 【原创】技术系列之 内存管理(三)[未登录] cppexplore 2009-04-04 19:37
@yshuise
你确信你看懂它的实现了?
.............................
内存检测工具跑一遍就能发现的问题,你还真执着啊。
re: 内存崩溃的BUG (2) [未登录] cppexplore 2009-04-01 10:12
由于内存问题宕掉,堆栈什么的都是不可信的,一定要在初次出现问题的地方找(第一次写内存错误),都到后面了,什么意义都没了。
re: 内存崩溃的BUG (2) [未登录] cppexplore 2009-04-01 10:10
写完代码,需要用内存测试工具跑反复的跑,压力下跑,一遍没跑期望没有任何的内存问题 基本是不可能的。至少至今我开发的服务器,没有一个是写完编译过,就没有任何内存问题的。
re: 来说说今天看书的收获[未登录] cppexplore 2009-03-28 10:14
@Chuck
发布到首页的 就是要给别人分享的。很多人订阅首页,让别人看不懂或者看了无所收获的文章,也是浪费别人的时间。
如果是给自己看的,不必选择发布到首页。
re: luckyScript测试程序:计算器 cppexplore 2009-03-20 10:57
@陈梓瀚(vczh)
其实我移出首页的出发点,不是因为它没开源,根本原因是我认为不能共享到任何的思想, 没有看到可以分享的东西,当然可能是个人眼界的限制.
总上所述, 如果博主认为本文满足“分享知识给喜欢思考并研究的人”,请重新发布到首页吧. 我个人仍然坚持以前的看法.
re: luckyScript测试程序:计算器[未登录] cppexplore 2009-03-19 16:32
@陈梓瀚(vczh)
1 luckyScript并未开源
2 本文展示了用luckyScript写的一个计算器,以及给出运行的结果贴图证明脚本的正确性.
3 博主并未明确说明,是来接受批评的 也未给出需要大家提出意见的方向
4 我的理解blog是分享知识的,尤其是首页精华,订阅首页文章的人 更多的是希望能获取到知识. 如果有疑惑需要大家解答,更好的选择是发布到论坛.
re: 先写个背包问题模板(01,完全,多重,未测试) cppexplore 2009-03-19 09:30
偶尔往首页发个解题报告也无不可 大量的发而又重复的没啥意义吧
是不是可以写的总结啊 算法基础 npc综述之类的发到首页啊
re: luckyScript测试程序:计算器 cppexplore 2009-03-19 09:28
发首页 纯炫耀 鉴定完毕! 移除
re: 我的第一个3D渲染管线(2)[未登录] cppexplore 2009-03-12 11:53
顶下!
re: POJ 3126 学会广搜队列的用法 cppexplore 2009-03-08 20:25
removed by cppexplore
re: poj 3191解题报告 cppexplore 2009-03-08 20:24
已阅 删之
re: poj 3414解题报告(广搜题) cppexplore 2009-03-08 20:24
已阅 删之
re: 开始写VisualFC新版本,界面预览。 cppexplore 2009-03-08 09:24
无内容。移除
博主将文章 发往首页精华的 时候 稍微斟酌下 尤其是很多篇一起放上来的时候,没多少时间一篇一篇的审核,多谢。
re: 编辑器近况[未登录] cppexplore 2009-02-26 09:17
博主放到sf上吧,配上英文说明、文档等。有时候99%和100%就是差那么一点额外的努力。