自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (5)
  • 收藏
  • 关注

转载 线程优先级

每个线程都有一个“优先级”,范围是0~31,0为最低优先级,31为最高优先级。当系统决定哪个线程需要调度的时候,首先查看是否存在优先级为31的可调度线程,如果存在,就从中选择一个进行调度。当该线程的时间片到达之后,系统查看是否存在另一个优先级为31的可调度线程,如果存在,就调度它。  只要有一个可调度的优先级为31的线程存在,那么系统绝对不会调度优先级为0~30的线程,这样会导致其他线程“饥饿

2012-04-24 20:30:21 692

转载 boost::weak_ptr和enable_shared_from_this

boost::weak_ptr和enable_shared_from_this shared_ptr在我的实践中使用很广,在接口层面上,我基本都会默认的使用shared_ptr.而weak_ptr则很少使用;即便使用,也是间接的使用,例如使得class A继承自boost::enable_shared_from_this,这样A便具有了一个weak_ptr的成员对象,我便可以通过接口sha

2012-04-18 16:10:10 886

boost::weak_ptr和enable_shared_from_this

boost::weak_ptr和enable_shared_from_this

2012-04-18 15:49:45 67

转载 sqlserver数据库大型应用解决方案总结

随着互联网应用的广泛普及,海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成,通过常规网络或专用网络进行连接,由路由器衔接在一起,各节点相互协作、共同负载、均衡压力,对客户端来说,整个群集可以视为一台具有超高性能

2012-04-18 15:10:09 378

转载 boost.asio服务器使用io_service作为work pool

使用io_service作为处理工作的work pool,可以看到,就是通过io_service.post投递一个Handler到io_service的队列,Handler在这个io_service.run内部得到执行,有可能你会发现,io_services.dispatch的接口也和io_service.post一样,但不同的是它是直接调用而不是经过push到队列然后在io_services.r

2012-04-17 19:01:56 679

转载 Boost::thread库的使用

http://blog.csdn.net/lee353086/article/details/4673790 阅读对象本文假设读者有几下Skills[1]在C++中至少使用过一种多线程开发库,有Mutex和Lock的概念。[2]熟悉C++开发,在开发工具中,能够编译、设置boost::thread库。  环境[1]Visual Studio 2005/2008

2012-04-17 18:36:31 1125

转载 boost::asio::buffer

char d1[128];size_t bytes_transferred = sock.receive(boost::asio::buffer(d1));buffer 大小是自动管理的同样std::vectorchar> d2(128);bytes_transferred = sock.receive(boost::asio::buffer(d2));还可以基于boost

2012-04-17 18:05:15 4059

转载 boost asio

花了足足3天时间,外加1天心情休整,终于在第5天编写出了一个能运行的基于asio和thread_group的框架,差点没气晕过去,把源码都看懂了才感觉会用了。测试了一下,debug下一万次回应耗时800+毫秒,release下是200+毫秒,机器配置双核2.5G英特尔,4个线程并行工作,无错的感觉真好,再也不用担心iocp出一些奇怪的问题啦,因为是巨人们写的实现,呵呵。进入正题,简要说

2012-04-17 18:01:07 1930

转载 async_read_some async_read区别

今天用asio写一个简单的server时,当连接成功时做如下工作1 asio::async_read(socket_, asio::buffer(&m_packet, sizeof(m_packet)),2 boost::bind(&tcp_connection::HandleReadCardKey, shared_from_this(),3 asio::placeholders::error))

2012-04-17 15:50:38 5855

转载 boost::asio::Io_service

构造函数 构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。 Dispatch和post的区别 Post一定是PostQueuedCompletionStatus并且在GetQueuedCompletionStatus 之后执行。 Dispatch会首先检查当前thread是不是io_service.run/runonce

2012-04-17 15:43:06 3108 1

转载 Linux WideCharToMultiByte WideCharToMultiByte

Linux下面的没有命名为  () 和 MultiByteToWideChar() 函数,WideCharToMultiByte,MultiByteToWideChar是windows下的函数,在linux下也有类似的两个函数:mbstowcs() wcstombs() 值得注意的是:size_t mbstowcs(wchar_t *wcstr,const char *

2012-04-13 22:33:06 2990 1

转载 Socket+AMF3粘包问题

服务端Mina 前台接收Flex   参照的原型为http://www.klstudio.com/post/202.htmlSocket+AMF3]给合Flash的Socket和AMF3来尝试开发web游戏>经过个人调试  分别在服务端和客户端收发消息时进行长度处理但是在服务端大量发送数据时,还是会发生客户端粘包的状况,导致发生错误,而且也比较频繁。求服务端与客户端的收发代码段

2012-04-11 15:57:09 1879 1

转载 浅析:setsockopt()改善socket网络程序的健壮性

1. 如果在已经处于 ESTABLISHED状态下的socket(一般由端口号和标志符区分)调用closesocket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket:BOOL bReuseaddr=TRUE;setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(B

2012-04-11 15:16:08 639

转载 推荐Charles(web debugging proxy)http调试工具

我在之前向大家推荐过Fiddler,一个非常强大http协议调试工具,但最近发现此工具又不适用了,我遇到的问题是这样子的:我想调试发布在facebook上的基于amf通信的flash应用,在我不开VPN的情况下,fiddler无能为力帮助我架设隧道并截获通信,而使用VPN以后,在fidder中仅能以直接查看RAW二进制数据的方式来查看amf通信(当然我试图找到fiddler的amf插件,未果),同

2012-04-10 23:12:47 5586 2

转载 TCP_NODELAY和TCP_CORK

Nagle算法 TCP_NODELAY和TCP_CORKNagle算法根据创建者John Nagle命名。该算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用 程序系统的效率。Nagle算法,由Ford Aerospace And Communications Corporation Congestion Cont

2012-04-10 15:30:06 922

转载 Linux网络编程socket错误分析

socket错误码: EINTR: 4阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。如果recv的返回值为0,那表明连接已经断开,接收操作也应该结束。

2012-04-10 14:31:33 1843

转载 Boost智能指针——scoped_ptr

boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include#include #include class implementation{public:    ~implementation() { std::co

2012-04-08 12:08:16 365

转载 Boost智能指针——shared_ptr

boost::scoped_ptr虽然简单易用,但它不能共享所有权的特性却大大限制了其使用范围,而boost::shared_ptr可以解决这一局限。顾名思义,boost::shared_ptr是可以共享所有权的智能指针,首先让我们通过一个例子看看它的基本用法:#include#include #include class implementation{publ

2012-04-08 12:00:57 422

转载 Boost智能指针——weak_ptr

循环引用: 引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象。一个简单的例子如下: #include#include #include #include class parent;class children;typedef boost::shared_ptr parent_ptr;typedef boost:

2012-04-08 11:55:35 338

转载 TCP连接探测中的Keepalive 和心跳包

采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TCP协议

2012-04-06 15:03:08 609

转载 ACE中的Proactor介绍和应用实例

转自:http://blog.newsfan.net/leelin/archive/2006/11/01/4159.aspx    把这两天做Proactor的一些经验和心得写一下,可能会给一些人帮助。    Proactor是异步模式的网络处理器,ACE中叫做“前摄器”。    先讲几个概念:    前摄器(Proactor)-异步的事件多路分离器、处理器,是核心处理类。启动后由

2012-04-06 14:07:59 436

转载 使用Boost.Asio编写通信程序

摘要:本文通过形像而活泼的语言简单地介绍了Boost::asio库的使用,作为asio的一个入门介绍是非常合适的,可以给人一种新鲜的感觉,同时也能让体验到asio的主要内容。目录 [隐藏]ASIO的同步方式自我介绍示例代码小结ASIO的异步方式自我介绍示例代码小结ASIO的“便民措施”端点超时统一读写接口基于流的操作用ASIO编写UDP通信程

2012-04-06 13:12:13 563

转载 大型MMO-SNS类游戏服务器架构

SNS类型的游戏和RPG类的网游有一些不同的特点,而这些特点会导致这类游戏的后台架构和RPG网游的后台架构存在一些区别。SNS类型的游戏一般有以下的特点:(1)所有的玩家角色可能存在交互        SNS类型的游戏一个玩家角色会找他的好友或者其他任何一个毫无关系的玩家角色进行某种逻辑上的互动。(2)这类游戏玩家角色一般是看不见的(3)玩家角色在线或离线状态比较模糊

2012-04-06 11:11:56 580

转载 TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞

TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞(附源代码)◆◆◆作者◆◆◆谢红伟· chrys· chrys@163.com · http://www.howa.com.cn◆◆◆日期◆◆◆2007-07-24 01:34:57 这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打

2012-04-05 17:44:46 398

转载 提升linux下tcp服务器限制

1、修改用户进程可打开文件数限制   在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:   [speng@as4 ~]$ u

2012-04-05 14:03:43 40

转载 提升linux下tcp服务器限制

1、修改用户进程可打开文件数限制   在Linux平台上,无论编写客户端程序还是服务端程序,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。可使用ulimit命令查看系统允许当前用户进程打开的文件数限制:   [speng@as4 ~]$ u

2012-04-05 14:02:08 323

转载 enable_shared_from_this、weak_ptr、shared_ptr

网上说weak_ptr是shared_ptr的观察员,weak_ptr不会干扰shared_ptr机制,当weak_ptr所观察的shared_ptr要释放对象时,weak_ptr的指针将被置空,避免空悬指针。weak_ptr只能通过shared_ptr或weak_ptr构造。对于一个shared_ptr,它分别对强引用和弱引用都做了计数。上图是下面代码的调试信息。

2012-04-05 11:10:46 963

转载 boost 库 enable_shared_from_this 实现原理分析

使用情景:当类对象被 shared_ptr 管理时,需要在类自己定义的函数里把当前类对象作为参数传给其他函数时,这时需要传递一个 shared_ptr ,否则就不能保持 shared_ptr 管理这个类对象的语义(因为有一个 raw pointer 指向这个类对象,而 shared_ptr 对类对象的这个引用没有计数,很有可能 shared_ptr 已经把类对象资源释放了,而那个调用函数还在使

2012-04-05 10:22:22 362

转载 高性能服务器架构

任何一行都有自己的军规, 我想这篇著名的文章就是游戏服务器程序员的军规. 也许你认为游戏服务器程序员日常并不涉及这样底层的实现, 而只是去完成策划提出的需求, 我觉得也有道理, 毕竟这些是我们的工作, 下面的译文就不太适合你. 但是对于想改进现有系统, 在服务器方面给予更好的技术支持, 那么你在开始工作之前必须了解一些禁忌, 并且给出了一些解决方向上的真知灼见. 把它发在这里, 供随时复习. 下面

2012-04-04 23:03:22 427

转载 boost::function 和 boost::bind 的工作原理

boost::bind(&klass::member, instance, 0, _1) 返回一个函数对象,类似于: struct unspecified_type {  ... some members ...  return_type operator()(int i) const { return instance->*&klass::member(0, i);}复制

2012-04-01 09:49:18 960

Dependency Walker

Dependency Walker查dll的

2013-01-04

mysql sdk(windows下可以用)

windows下可用的mysql sdk开发包

2012-10-19

Real-Time Shadow Rendering Using Projective Texture

描述使用纹理映射做Shadow渲染的好文,PDF格式

2009-04-07

Assemblers, Linkers & Loaders

讲解程序编译,连接,加载细节

2008-07-02

空空如也

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

TA关注的人

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