自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Sur的工作日子

i am suriving

  • 博客(126)
  • 资源 (7)
  • 收藏
  • 关注

原创 在luacluster中使用物理引擎

众所周知luacluster是第一个实现万人同屏的游戏服务器框架。然后就有无数人来问我为啥呀?思路呀?架构呀?雀实程序员现在都不看代码的呀!可我发了哪么多技术文章也都没人看!你敢信?哎~可是你们不看我也得发呀。真怕哪天我老死了,游戏服务器这门手艺怕是就失传了呀!哎,做技术不容易,关注得兄弟给点个赞吧!https://github.com/surparallel/luacluster​github.com/surparallel/luacluster话说过来能不能在服务器使用物理引擎呢?使用物理引擎是

2022-05-09 16:57:57 713

转载 luacluster整体架构设计

这篇文章我们来谈谈luacluster的整体架构和性能。以及为什么luacluster可以实现万人同屏?luacluster整体架构非常的简洁。node对应进程, docker对应线程,每个docker有一个luavm和一个消息队列,在luavm里创建entity对象。net网络和log日志分别单独线程运行。没有任何多余累赘的东西非常简洁明了。luacluster的设计目标是让任何entity之间,可以通过rpc的方式无脑异步调用。所谓rpc的方式就是在任何entity中使用entity的id,

2022-04-18 10:12:12 275

原创 MMO万人同屏实验发布成功

3DMMO的万人同屏是一个让我激动不已的技术挑战!我是在08年关注到了3DMMO游戏服务器并行化的问题。并于同年就开始了一系列的技术尝试。软件工程和其他的工程一样。对于新的想法就是反复尝试,反复失败的过程。其实每个游戏服务器工程师都会开发一个自己的软件框架。一来容易维护二来使用方便。我只是比较幸运和执拗,喜欢用自己框架尝试新的想法。“念念不忘,必有回响”,进过一系列的技术改进,终于实现了3DMMO的万人同屏。luacluster项目由两部分组成,服务器端的luacluster以及客户端的luacluste

2022-04-02 10:00:12 648

原创 使用redis实现5万人同服的“相位技术”

魔兽世界和EVE服务器能够同时支持5万人在线的技术肯定让很多人流口水吧。今天我用redis来模拟实现“相位技术”。所谓“相位技术”就是将服务器分为多个并行的空间。是对传统分割成多个地图场景技术的升级。这个技术通过创建多个并行时空的概念。将多个时空分配到不同的服务器。在客户端请求数据时再将多个时空的数据整合在一起。这样理论上就可以将地图场景再次无限分割。所以理论上使用“相位技术”的服务器承载人数可以达到非常恐怖的5万人。传统的一个地图一个服务器的做法。如果玩家过多就会大量消耗服务器CPU资源。直到C.

2020-08-04 13:25:19 498

原创 ITDSD - 5.微服务拆分之无锁编程

介绍如果你受够了微服务系统中无休无止的痛苦,哪些数据库事务,分布式锁,永无止境的系统优化,莫名其妙的卡死,诡异的性能波动。来尝试一下最新的无锁编程技术吧。这个技术最酷的地方就是不需要数据库事务和分布式锁就能实现分布式系统的开发。众所周知分布式锁和数据库事务的滥用导致了分布式系统耦合的问题。我在这个系列的第二篇文章中曾经对一个开源的电商软件进行了分布式的系统分析。您可以点击下面链接找到这篇文...

2019-07-25 14:22:34 165

原创 Spring Session使用redis的各种问题

首先确保使用redis正常。配置添加使用存储类型# spring session使用存储类型spring.session.store-type=redispom.xml中要引入依赖 <dependency> <groupId>org.springframework.session</groupId>...

2019-06-17 15:24:50 3570 2

原创 ITDSD- 4.分布式软件的定量分析

介绍这是关于分布式架构新手入门的第五篇文章。这一篇文章主要介绍通过计算分布式系统中的单次请求成功率,以及重复请求的稳定率获得系统的稳定性估值。依据软件结构评估性能及其冗余。通过对系统的分析判断出潜在的性能瓶颈。为设计分布式系统提供数据支持。您可以点击以下链接找到前面四篇文章。Distributed Method of Web Services ITDSD - 1. Splitting...

2019-06-14 09:56:16 324

原创 ITDSD- 3.分布式工程学综述

英文版地址:ITDSD- 3. Overview of Distributed EngineeringSun shuo([email protected])导论这是关于分布式架构新手入门的第三篇文章。这一篇文章主要简要的介绍分布式工程学在理论上的基本概念,历史和现状,以及未来发展方向。让大家能够了解为什么学习分布式工程学。分布式工程学在计算机科学中的地位,以及分布式工程学要解决的问...

2019-05-21 18:52:17 469

原创 漫谈关系,制度和效率

我在2016年的时候发现了关系,制度和效率在组织行为学中特殊的效果并写在blog里。但并没有得出什么系统的结论。在半年前看到 @破军 在知乎问题“你所见过职场潜规则有多深?”下的回复。他是这么说的:“相传鬼谷子当年有四门学问:阴阳,纵横,权谋,兵法.其中 纵横克权谋,权谋克兵法,兵法克纵横. 权谋这种东西自古有之,古代帝王权臣视为生死之道,怎么会没有人在这上面用心了? 其中出类拔萃者都是权谋高...

2019-05-11 09:04:09 851

原创 分布式系统设计新手入门---2,微服务架构中拆分的实践

英文地址:《Beginner's Introduction to Distributed System Design - 2. Practice of Splitting in Microservice Architecture》引言在这篇文章中将从分析一个开源项目的可分布性入手,介绍如何使用AP&RP技术。这是一个关于分布式系统设计新手入门的系列文章中的第二篇。您可以点击下面链接...

2019-05-07 12:06:24 408

原创 分布式系统设计新手入门---1,微服务的拆分

英文地址:Beginner's Introduction to Distributed System Design - 1. Splitting in Microservice Architecture在我的文章《Web Services的分布式方法》中介绍了分布式设计的方法。但读者反映太过学术化而无法理解。促使我开始这个系列文章的创作,以方便新手能够在实践中使用分布式技术。虽然分布式是一个历...

2019-04-27 20:20:16 778

原创 Web Services的分布式方法

英文地址:https://www.codeproject.com/Articles/3335097/Distributed-Method-of-Web-Services摘要此文将互联网中的Web Services以通用低成本的方法进行了分布式。具体方法为先通过降低Web Services过程间的耦合,再以写入的数据作为并发依据,用于判定不同Web Services过程能否进行分布式。最终依...

2019-04-26 09:56:07 320

原创 iterator循环和反向迭代器的使用

// testmap.cpp : Defines the entry point for the console application.//#include #include using namespace std;int main(){ std::map tv; for (int i = 0; i < 3; i++) { tv[i] = i; } { ///在

2017-12-31 09:57:19 785

原创 CAP原理应用与分布式矩阵

CAP原理是描述一致性,可用性,和分区兼容性的理论,但这个原理用在实际情况下时往往让人很困惑。什么样的情况适用于这样的原理?有哪些先决条件?CAP原理真的让分布式系统无法保持一致与可用?等等的问题。现在我就尝试使用一种简单易懂的方式来把分布式的各种问题抽茧剥丝的放在大家面前。首先我们把红色的球定义为数据,蓝色的框定义为容器。那么分布式的问题就可以简化为数据如何放入容器内和如何访问的

2017-11-01 10:38:36 914

原创 DHT应用于区块链概要

区块链技术特点及问题交易的流程,发起交易,排序交易,确权交易。发起交易指在P2P模式下任意服务器都可能收到记录交易的请求。排序交易指交易本身是有先后次序的,当多笔交易同时在P2P网络发起时,会有交易因为先后次序不同而成立或失败。例如两个节点同时发起对A帐户的扣款操作扣除100块,而A帐户只有100块。那么必然会有一个交易请求失败,谁来判定交易失败就是交易排序的问题。在P2P环境下选择一

2017-10-20 08:45:59 2598 1

原创 基于DHT网络的IP登记算法

1,每个准备登录到DHT网络的节点都要先通过一个被请求节点B进行IP登记。2,B节点向拿着请求节点A的IP进行HASH后向HASH所在服务器C进行登记。3,C收到请求后拿目标IP和自己的IP进行HASH后得到A节点的节点ID。4,将C的IP和ID返回给节点B节点B返回给节点A。5,节点A得到自己节点的ID后拿着ID登录节点C确认登录。登记算法的目的是通过节点的IP和登录到DHT

2017-09-18 14:42:04 663

原创 DHT应用于区块链

DHT应用于区块链DHT网络的概述DHT网络的基本思想如下:1. 每一份资源都由一组关键字进行标识。2. 系统对其中的每一个关键字进行Hash,根据Hash的结果决定此关键字对应的那条信息(即资源索引中的一项)由哪个用户负责储存。3. 用户搜索的时候,用同样的算法计算每个关键字的Hash,从而获得该关键字对应的信息存储位置,并迅速定位资源。DHT关键字定位:1. DHT

2017-08-31 15:26:55 4128

原创 Redis SortedSet for C++

上周末修改完善了helayzhang的Redis SortedSet for C++的项目,SortedSet是通过Skip List(跳表)和MAP索引结合方式实现的动态排序的方法.在万人级别可以轻松实现动态排序.解决了sql排序速度慢不实时的问题.SortedSet 脱胎于redis.在使用过程中遇到了两个问题,一个是缺乏严格的测试,我做了补充.修复了skeip lis

2017-06-20 09:33:13 654

原创 游戏服务器需要什么样的引擎?

弹指一挥间从事游戏相关的开发工作已经十多年。在开发了六年多几经波折差点放弃的starrydb.com项目也迎来了1.0版本的上线。虽然演示版本以及集群功能早在17年1月份就开发完毕但修改和完善计划目前仍然排的满满当当,导致1.0上线一推再推至今仍然不甚满意。         说起最初开发这个项目的初衷就像那盏迷雾中的绿光让人兴奋不已,在此也希望因为我的执著而被伤害的人幸福。以下

2017-03-06 06:46:27 4313

原创 MMO位置同步及示例

MMO位置同步及示例         概述         位置同步的问题涉及到三方面,客户端,服务器,与其他客户端。玩家的手感是最优先满足的条件,所以玩家客户端的位置是基准,但是完全依赖玩家客户端的数据会有被作弊的危险,所以服务器一般每秒钟会依据玩家的状态推算一个客户端位置。其他客户端看到的位置完全依赖于基准客户端的状态作出的推定,如果有延时或卡顿的情况会依据最新的状态广播重置状

2017-02-09 17:00:38 4325

原创 对象与关系

对象的创建和删除与对象内部数据的操作是一个层面。依据对象的关系进行的对象间的操作是另一个层面。“关系”是一个高阶的概念,它是一个视角。这就是关系数据库无论如何都没有办法分割的原因。无论把关系数据库分割成多少碎块,关系数据都是在一个整体角度上描述群体。因为关系就是对一个整体的描述,所描述的是一种联系和范围。而对象数据库更回归与对象数据本身,对象数据库应该位于关系数据库之下。

2016-09-23 09:27:35 392

原创 变量的进化----我们需要什么样进行数据存储

一,变量变量是几乎所有语言通用的数据存储方式。他用文字的形式标记了某种数据。int i = 0;这里i代表了数字0。那么变量的意义就是有“名字”的数据。二,变量的时效性时间就是变量存在是有时间或者程序上下文范围的。函数中的变量就只在函数中存在,函数消失了他的变量也就消失了。全局变量只存在于程序运行期间,程序退出了他也就死亡了。服务器上的变量,服务器宕机了变量

2016-07-14 15:39:26 387

转载 map hash_map unordered_map 性能比较

原文地址http://blog.chinaunix.net/uid-20384806-id-3055333.htmlby zieckey测试条件:gcc version 4.2.1 20070719  [FreeBSD]FreeBSD  7.2-RELEASE #0: Fri May  1 07:18:07 UTC 2009     root@driscol

2016-07-13 15:26:06 2572

原创 实时离散的数据分析

离散的数据分析指无法停止变化的多个数据源进行分析!例如商场有5个门,监控会纪录实时的客流数据。需求是某个时间点对这5个门的客流量进行排序?传统数据库的做法是把这5个门的数据记录在同一个表内,在某个时间点时读这个表进行排序。这样就好比有个上帝视角可以时间暂停,在暂停时间之后读五个门的数据进行排序得到某个时间点的数据。在实时运行的系统内这样做显然不可接受,当前只有5

2016-07-01 16:39:32 1649

原创 浅谈敏捷开发中迭代和旧版本维护

在所谓敏捷开发中会出现一个经常遇到的问题就是旧版本已经发布出去 ,新版本正在开发之中,这期间发现旧版本bug需要修改的情况?通常的解决方法是需要新旧版本的统一修改,如果这期间涉及的新旧版本代码已经变化很大就需要评估这个bug在新版本是否还要存在是否修改的问题。进过评估之后,修正新版本的情况。这种尴尬的原因需要我们先看敏捷开发基本流程软件开发的过程是,需求-〉

2016-07-01 11:06:01 3636

原创 组织行为中的,制度,公平和效率

制度制度是组织行为中的基石,制度保障了组织的可持续性,是组织行为的底线,以及对外的整体表现。公平公平是对组织中每个个体的兼顾,是避免组织分裂,维系良好的公平会让组织充满正能量,同时减少人员流动,维护组织平稳运转。效率效率是组织的目标,是强调前进的方向,带动组织运转的原生动力,好的效率表现是击败竞争对手扩大市场份额。公平和效率是互相矛盾的,在一个组织内部不能同时强调公

2016-06-30 09:40:35 760

转载 魔兽登陆验证算法

SRP6针对于网游登录服的应用1.关于SRP的资源SRP协议是由斯坦福大学计算机科学系的Thomas wu等开发的,英文全称是Security Remote Password(远程密码安全),经过严密的数学论证,SRP被证明是一种非常安全的算法,我们可以在获取到SRP的协议的官方文档 http://srp.stanford.edu/ .当下流行的网络

2016-06-24 13:42:58 1629

原创 关系型数据库和nosql数据库的区别和选择

关系型数据库和nosql数据库有着不同的用途。 我们常常把这些不同类型的数据库用在错误的地方。 最常见的是在关系数据库内保存大量非计算的数据。 像日志啊,账号啊,这些仅仅只是需要查询的数据都放在关系数据库内。 把关系数据库当作大硬盘使用。关系型数据库特长是对数据的横相比较。 例如小明,小黄谁的分数比较高? 所获取的是不同对象的数据之间的逻辑关系。 mysql就是这类数据库的典型代表,

2016-06-22 16:58:08 9234 1

原创 主流开源数据库代码行数

sqllit有21万行代码mysql有61万行

2016-06-20 11:13:04 1387

原创 nosql的持久性(Durability)

内存数据库的数据持久性和数据安全性是相对而言的特性,如果数据安全就无所谓持久性。例如你的mysql如果一年不崩溃,硬件不断电,服务器不重起。那么在内存的持久和在硬盘的持久就是没有区别。同样的道理,如果你的数据有三处以上的备份。每处备份可以保证一致性和时效性。那么这也是数据的持久性。所以数据的持久性不单单指硬盘的数据保存。而从用户角度说,数据的持久性可能只是针对一个小

2016-06-04 14:04:57 642

原创 sem_wait不能被sem_post唤醒

#include "so_test.h"#include #include #include #include #include #include sem_t bin_sem; void *thread_function1(void *arg) { printf("thread_function1--------------sem_wait\

2016-06-03 09:27:01 4352

转载 代码度量工具——SourceMonitor的学习和使用

引言我们提倡编写功能单一、结构清晰、接口简单的函数,因为过于复杂的函数会给我们带来很多问题:加深其他开发人员理解代码的难度;不方便测试人员对其编写测试用例;容易隐藏错误;出现问题难以定位……怎样的函数算是复杂的函数?哪些代码散发着“臭味”?除了依靠经验丰富的程序员的敏锐嗅觉,我们还可以通过工具,对我们的函数和代码进行度量。不像一位严格苛刻的代码检视人员,代码度量工具并不会板着脸对我

2016-05-09 11:12:00 3358

原创 闲谈安全的脚本和异步函数的数据安全问题

安全的脚本开发是多数引擎类语言所追求的目标,像java就试图消灭了指针和崩溃的问题,但没有成功。说道脚本的安全无外乎两大部分,内存指针的使用安全和数据安全,指针和内存的使用是c语言的一大优势,传递指针其实是数据集中管理的编程理念的体现。假设一个指针被创建后永远不会被删除,那么程序内的所有函数都在这块内存内操作数据并传递数据,假设非常理想的情况下,这样的数据管理的效率将是最高的。

2014-03-24 15:45:17 1288

原创 伪同步过程

所谓伪同步过程是指,整个处理过程是异步的模式,但在整个处理过程没有完成之前不接受新的请求。例如设置标志 开始-》处理-》结束。在整个处理过程中如果有新的请求,服务器检查流程处理标志,如果不能接受新的请求就返回服务器繁忙。或者上个请求正在处理中。

2014-02-07 13:23:09 1296

原创 多线程的自然分裂管理法

多线程在一般环境下通常是分主副线程,主线程负责进行线程调度.具体负责的是线程的创建,流程如:主线程接受任务->根据任务创建线程->子线程处理任务->结束退出更高阶的处理模式如线程池:主线程创建若干子线程->子线程闻讯堆栈是否有任务->有任务处理之->等待新的任务->被新任务事件触发后处理任务->回到等待新任务注意如上处理过程有个共同点就是子线程没有创建新线程的权利.多线程的自然分裂

2013-09-25 09:16:31 1707

原创 防御编程与防御陷阱

防御编程是在多人开发的系统中保持局部正确性的一种编程方法,有其积极的一方面,通过防御编程检查所使用参数是否正确阻止崩溃和意外的产生。防御编程对输入参数的一个检查,这种检查由基本的是否存在,范围是否正确,逻辑是否符合等等。 例如函数防御编程有如下的形式却变成了防御陷阱void fun(void* p){    if(!p)return;}函数判断p是否可用,如果不

2011-12-29 12:36:34 989

原创 C++的两个特性在大型工程里是很危险

第一个是建构和析构函数,在函数里面声明了一个变量,好像什么都没做,但在建构和析构函数里调用了一大坨的东西,review代码的时候就容易被忽略掉。第二个是同名的方法,隐式调用。对一个多次继承的指针的同名方法的调用,一眼看过去,不知道调用的是那个父类的方法,这些父类的方法虽然同名但实际作用可能完全不同。上述两个特性都是要在了解工程全部来龙去脉后才能正确使用,这就对大型工程的

2011-10-25 11:31:47 843

原创 重要或不重要

一个群体的事情很多,重要的和不重要的,但站在每个人的角度这个是非常的不同。原本和群体没有关系的人被拉倒这个群体,做一件别人认为很重要的事情。这是一个失掉自我的过程,为了获得金钱的报酬。群体原本是不相干的,理解重要还是不重要是,甚至感同身受。在一个人的有限精力里面他付出了所有的全部也不一定可以真实的理解一个群体复杂的意志。但并不用太担心,这个群体的人都不一定能完全了解那些决策者的

2011-06-26 20:37:00 504

原创 有解还是无解

游戏服务器是很复杂,也没有可靠的参考。国内某些人给我的印象实在很差。似乎这个东西超脱了教师老师教的和现实所接触的。就是无解的东西。高丽棒子做到了,ea做到了,wow做到了。为什么说无解呢?缺乏总结和分析的精神到处都是拿来主义,没得可拿就会像毒贩一样萎靡,有的拿了就两眼放出血亮的光。 

2011-06-23 14:05:00 567

原创 判断和动作

在一个不断有货物进出的仓库,根据仓库库存,把新进入的货物放入最少的仓库。判断的条件是根据仓库的库存较少的,这里先决的判断有两个步骤,第一得到所有仓库的库存。第二判断哪个库存是最少的。问题来了,如果库存是不断变化着的当真正放入货物的时,当前库存已经不是最少的了?怎么办?如果要保证在放入的时候是也确实是最少的仓库,那么就要在整个查询过程中锁住所有仓库。当做一个放入的动作,会有2

2011-06-10 15:18:00 520

VMProtect的逆向分析和静态还原.ppt

VMProtect的逆向分析和静态还原.ppt

2011-04-06

中登公司数据整理汇总xls版

中登公司数据整理 中登公司数据整理 中登公司数据整理

2010-04-16

测试CAtlRegExp 正则的例子, mfc工程

测试CAtlRegExp 正则的例子, mfc工程

2010-03-15

libiconv vs2003 例子 编码转换 utf8 gb2312

比atl方便的并且没有内存泄露危险的转换宏

2009-03-28

regex linux正则 测试例子vs2003 mfc工程

regex linux正则测试例子vs2003 mfc工程修正几个bug添加了子串功能

2008-11-12

regex linux正则测试例子vs2003 mfc工程

regex linux正则测试例子vs2003 mfc工程,随手写来方便大家

2008-11-11

automake中文手册

automake中文手册在很老的一个论坛里面翻出来的,感谢王 立(本站会员Charles)[译]的工作

2008-10-28

空空如也

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

TA关注的人

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