流子
我这个人很懒,所以没有简介
展开
-
游戏跨服架构进化之路
1.背景虽然游戏市场竞争激烈,产品格局变动较大,但游戏产业一直处于稳步增长阶段,无论是在端游,页游,手游还是已经初露端倪的H5游戏。可以预见,游戏类型中,MMOARPG游戏仍然会是引领市场的主流趋势,贡献着大部分流水,市场上也仍然在不断涌现精品。研发团队对MMO游戏的探索从来未间断过,从付费模式的改变,到题材多元化,次时代的视觉效果,更成熟的玩法及数值体系,本文主要针对跨服玩法上的探索和...原创 2017-03-02 14:46:41 · 15350 阅读 · 19 评论 -
性能飙升20倍!!! 超高性能协议框架fury完爆protostuff
序列化框架是系统通信的基础组件,在大数据、AI 框架和云原生等分布式系统中广泛使用。当对象需要跨进程、跨语言、跨节点传输、持久化、状态读写、复制时,都需要进行序列化,其性能和易用性影响运行效率和开发效率。本文,我们对Fury 和protostuff做了性能评测,最终得出结论: 吞吐量对比,序列化 fury 是protostuff 21.18 倍,反序列化fury 是protostuff 的14倍,完胜!包体压缩比上,fury 是 protostuff 的 36.08%> 18.17 % , 大了一倍左右原创 2023-07-17 22:28:42 · 1504 阅读 · 0 评论 -
Unity 从各个点理解协程
什么是协同程序?什么是协程?unity协程是一个能够暂停协程执行,暂停后立即返回主函数,执行主函数剩余的部分,直到中断指令完成后,从中断指令的下一行继续执行协程剩余的函数。函数体全部执行完成,协程结束。由于中断指令的出现,使得可以将一个函数分割到多个帧里去执行。转载 2022-05-14 17:18:36 · 494 阅读 · 0 评论 -
LOG4J2-MDC-全链路跟踪等功能研究
MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,内部是基于threadLocal实现,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当开启isThreadContextMapInheritable属性后,当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,日志框架会自动从 MDC中获取所需原创 2021-08-10 14:54:38 · 2273 阅读 · 0 评论 -
游戏服务器设计-脚本系统设计
本文对脚本引擎beanshell 和groovy做了技术选型,给出了优劣对比结果,并设计了脚本系统UI界面。游戏项目中都会遇到以下的一些需求:1.从内存里查询数据2.修复个别玩家的异常数据如何能最快捷的方式去实现,目前有两种脚本引擎可以选择:beanshell 和groovy.原创 2021-03-17 15:59:18 · 677 阅读 · 0 评论 -
并发队列ConcurrentLinkedQueue和阻塞队列LinkedBlockingQueue使用场景总结
LinkedBlockingQueue发送消息队列(有消息就发送,无消息阻塞)ConcurrentLinkedQueue读取消息队列(无消息break)?适用阻塞队列的好处:多线程操作共同的队列时不需要额外的同步,另外就是队列会自动平衡负载,即那边(生产与消费两边)处理快了就会被阻塞掉,从而减少两边的处理速度差距。当许多线程共享访问一个公共collection时,Concurr原创 2013-09-12 20:23:45 · 11651 阅读 · 3 评论 -
页游AS客户端架构设计历程记录
以下是一个只用JAVA做过服务器架构的程序员做的AS客户端架构,希望大家能推荐好的框架和意见,也求AS高程们的引导,等到基本功能成形后,低调开源,框架可以支持一个中度型页游的开发,本文不断更新中....原创 2013-07-30 21:47:20 · 5657 阅读 · 1 评论 -
《小兵大战》运营日志
应用运行 25天,中间未有停服。2012-08-06 11:33 -2012-08-31 08:042012-09-04 11:50 -2012-09-29 08:222012-10-08 14:42 - 2012-11-02 11:13两次服务器运行的时间,基本一致都24天20小时30分,诡异2012.8.31 8:05分 后台持久化玩家数据的两个 island 线程几乎停...原创 2012-09-04 12:29:37 · 1440 阅读 · 0 评论 -
AS3多人游戏开发—同步人物移动
在实时性要求比较高的多人游戏中,我们将面临不同客户端间的同步问题,而其中人物移动的同步是最常需要考虑的。这篇文章将描述作者对这个问题的一些思考和解决方案(基于ActionScript3)。 大多数RPG游戏中,人物的移动是由鼠标点击激发的,本文将着重探讨这种移动方式,关于鼠标控制移动的同步,我们以后的文章将会涉及。 最简单的方式是你不断广播自己的当前位置,其他玩家收到数据的时候将对应的转载 2012-07-25 16:19:50 · 4565 阅读 · 0 评论 -
关于服务器内存溢出导致宕机的总结
项目名:《小兵大战》欢迎试玩,-->传送门6.26日19:35事件信息:腾讯云监控-磁盘分区满手机收到消息,【腾讯云监控-磁盘分区满】|app100630301|19:35|10.190.*.*|磁盘分区0使用90%, 剩余0.7G【腾讯科技】大区硬件配置:CVM VC38核CPU,7G内存,300G硬盘硬件配置:硬件原创 2012-07-02 18:45:37 · 9626 阅读 · 0 评论 -
分析JAVA应用CPU占用过高的问题
使用jstack分析java程序cpu占用率过高的有关问题使用jstack分析java程序cpu占用率过高的问题1,使用jps查找出java进程的pid,如37072,使用top -p 14292 -H观察该进程中所有线程的CPU占用。[root@cp01-game-dudai-0100.cp01.baidu.com ~]# top -p 14292 -Htop - 22:14:原创 2014-01-07 22:14:47 · 28499 阅读 · 3 评论 -
游戏设计 -人物移动广播优化
1.问题现在的页游都朝着客户端的方向靠齐了,大地图,千人同屏。因此,也给页游的服务端开发带来了不少的挑战。假设一个场景地图是8000*8000大小,同时有1000人在。1秒钟内,每个玩家移动一次。按照最原始的做法,就是给同一个场景的用户广播消息。简单计算一下广播量:1000*1000=1000000的广播量,有点恐怖。2.方案优化的目标肯定是减少广播量了。我们看到,场景特别大,这对原创 2013-11-09 00:11:24 · 2427 阅读 · 3 评论 -
游戏服务器JVM性能调优
最近开始优化页游服务端的性能,一些心得总结一下。现在的服务器硬件越来越好,几十G内存,十几个CPU。当硬件不是瓶颈的时候,如果让程序发挥最大效用就成了我们需要考虑的问题。就游戏服务器来说,得满足几个要求,高负载,低延时。特别是在开服当天,大量用户会涌进来,可能给服务器造成压力。使用Java作为服务器语言,除了程序本身的性能外,JVM的配置也直接影响到系统性能。参数调优入门级别的配置一般是:...原创 2013-11-08 23:44:39 · 3084 阅读 · 0 评论 -
游戏分享总结
网易伏羲《图谱反外挂:游戏中异常交易检测》 玩家行为特征分析Gold Farmer IP,设备类似,资源经常卖给同一个bankerGold banker ,和其他玩家交易频繁,交易关系很多,聊天关系很多...原创 2020-03-18 19:44:11 · 825 阅读 · 0 评论 -
ASM在游戏服务器的使用
ASM 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。不过ASM在创建class字节码的过程中,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和...原创 2015-10-30 12:21:42 · 1773 阅读 · 3 评论 -
基于Disruptor游戏服务器消息总线的设计
LMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单,用1微秒的延迟获得吞吐量为100K+. 业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(event sourcing). 业务逻辑处理器的核心是Disruptors。Disrupt...原创 2015-10-29 16:21:14 · 4496 阅读 · 3 评论 -
H5游戏性能优化总结
少使用Alpha混合。显式停止计时器,让它们准备好进行垃圾回收。使用事件侦听器并在不需要时删除这些侦听器。(确认)在不需要触摸交互性时显式禁用触摸交互性。(确认)合理使用dispatchEvents 函数。尽可能重用对象,建立对象池,而不创建对象并对其执行垃圾回收。多次调用类属性时,避免直接使用this.att,建立局部变量赋值。(确认)Event.ENTER_FRAME数量控制。(确认)减少不必...原创 2018-05-28 14:40:54 · 4568 阅读 · 0 评论 -
腾讯CDN使用总结
CDN目录刷新后是不是意味着就把新的版本文件全部推送给了各个CDN节点?错,行缓存刷新。URL 预热是以文件为单位进行资源预热。刷新与预热的区别:刷新后,会删除该资源在全网 CDN 节点上的缓存。当用户请求到达节点时,节点会回源站拉取对应资源,返回给用户并缓存到节点,保证用户获取到最新资源。 预热后,该资源会提前缓存到全网 CDN 节点。当用户请求到达节点时,可以直接在节点获取到资...原创 2018-03-06 20:28:52 · 6265 阅读 · 0 评论 -
谈谈用统一网关gate的利与弊
在架构设计中,在网关这块,很多公司喜欢用统一网关,特别是电子商务,金融,团购等等日常生活中会用到的互联网产品,但多服多区模式下的游戏是否也适用统一网关呢?那么,统一网关带来的好处是什么呢?1.安全性,所有终端请求都需要经过网关层,再分发给各种微服务,这样,如果我们保证了网关层的安全性,高可用性(HA),负载均衡(LB),那么,很多业务的运行就不会直接暴露在公网上。2.节省资源,IP段的资源(特别是IPV4段目前越来越少的现状)和带宽资源(针对一台云主机分配一定带宽的购买方式,而非共享原创 2021-02-08 16:14:17 · 1651 阅读 · 1 评论 -
Google Guava EventBus使用
Guava是Google开源的一个Java基础类库,它在Google内部被广泛使用。Guava提供了很多功能模块比如:集合、并发库、缓存等,EventBus是其中的一个module,本篇主要讲一下EventBus的使用。简单介绍EventBus:核心类,代表了一个事件总线。Publish事件也由它发起。 AsyncEventBus:异步事件总线,在分发事件的时候,将其压入一个全局队列的异步分发模式。 Subscriber:对某个事件的处理器抽象,封装了事件的订阅者以及处理器,并负责事件处理。原创 2021-01-30 19:11:41 · 780 阅读 · 0 评论 -
Jenkins极速入门
Jenkins简介 Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。官网地址为http://jenkins-ci.org/Jenkins部署环境 1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。 2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。 3.gradle或者ant打包 以上是自动化部署j..原创 2020-06-06 18:51:23 · 430 阅读 · 0 评论 -
如何制作加密的JAR包
//TODO ...agentlibhttps://github.com/core-lib/xjar原创 2020-01-09 10:54:17 · 733 阅读 · 0 评论 -
DFA搜索算法使用总结
因为做推荐系统时,要对聊天,心愿,搜索结果做关键词提取,那么就需要找一个匹配结果好,性能优的关键词搜索算法,于是就找到了DFA关键词过滤算法,DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个state,即event+state=nextstate。代码实现:/** * 构建搜索树 * @p...原创 2020-01-08 19:51:16 · 552 阅读 · 0 评论