- 博客(332)
- 资源 (10)
- 收藏
- 关注
原创 fastjson2与fury的巅峰对决,谁会笑到最后?
那时,两个协议框架各有千秋,不分伯仲,今天,看到fury推出了全新的0.2.0版本,fastjson2推出了新2.0.41版本,据说都有很多性能的提升,今天打算再一测,希望这两家伙再接再厉,能带给我们更多惊喜!我们这次的侧重点,主要关注在序列化,反序列化,数据包压缩率大小。
2023-10-10 15:26:42
1046
1
原创 谁才是真正的协议之王?fastjson2 vs fury
前阵子,我们写过一篇关于fury和protostuff的性能对比的文章:《性能飙升20倍!!! 超高性能协议框架fury完爆protostuff》,那么,fury 是否能真的坐稳协议框架的头把交椅呢?正逢fastjson2推出了新2.0.37版本,据说也很早就支持了二进制格式字节JSONB序列化和反序列化,正好打算一较高下!
2023-08-10 21:01:50
2574
5
原创 性能飙升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
2157
原创 JAVA内存深度分析报告
最近在对云主机的内存占用优化中,又有了新的认识,网上对JAVA的native memory 的认知五花八门,对direct memory 的获取的有偏差,今天我们来好好理一理,以便我们对JAVA 内存有个更好的认知。我们通过API ,MetaData , Native memory 快照,让我们对JAVA内存结构有了更深度的认识,以便以后在分析问题时,能有更客观的数据分析的基础。
2023-06-02 20:46:14
2268
原创 Java基准测试工具JMH高级使用
今天我们再来聊一下关于JMH的高阶使用。主要我们会围绕着以下几点来讲: - 对称并发测试 - 非对称并发测试 - 阻塞并发测试 - Map并发测试
2023-03-10 16:04:27
996
原创 Zlib和Zstd 性能对比评测
Zstandard 是facebook厂商提供的一种高压缩率的实时压缩算法,他在压缩比和压缩速度上做了很好的平衡,同时还提供高速的解码器,针对小数据,也提供了一种叫做字典压缩算法,从样本中可以创建出字典集合数据,Zstandard库以BSD协议方式开源。该算法是由Facebook的Yann Collet开发的一个无损数据压缩算法。Zstandard在设计上与DEFLATE(.zip、gzip)算法有着差不多的压缩比,但有更高的压缩和解压缩速度。...
2022-07-29 17:46:09
3963
原创 在服务器端如何用JNI实现 NavMesh寻路
我们已经讲到的在服务器端使用 Easy3dNav来进行 NavMesh 来做寻路,但性能上能否更快一点呢?众所周知,C++ 版本的性能向来比JAVA版本要出色,所以我们尝试用JAVA调用JNI native 接口来提升寻路的性能。............
2022-07-13 21:22:54
2100
原创 JNI全流程实例使用总结
为了更好的获得一些比较独立的模块的性能,比如视频模块,寻路模块,通过对C++ 接口的封装,通过JNI技术对它进行跨语言调用。那什么是JNI呢?JNI (Java Native Interface,Java本地接口)是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用/或库,也可以被其他程序调用。 本地程序一般是用其它语言(C、C++或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序。.....................
2022-07-12 21:31:45
2783
1
原创 3D寻路系统NavMesh-服务端篇
上一节讲到的客户端使用Unity 自带的 NavMesh 来做寻路。然而,怪物的刷新、移动,和AI是由服务器负责的,怪物的寻路是由服务器控制的,或者像SLG,大地图寻路在玩家离线的情况下要继续寻路,这必须要服务器来主导寻路。...............
2022-07-12 00:38:07
3638
9
原创 如何用 APT(Annotation Processing Tool)自动生成代码
我们很多人都写过代码自动生成的工具,比如用python结合moko模板引擎,或者java 结合freemarker模板引擎,protoc 等,实现解析策划数据类,proto协议类,或者数据库层的实体类。大大节省了我们开发的时间,让我们可以懒得光明正大。那么,有没有办法当你写好协议后,只要一保存编译,相关的协议接收和发送类的接口就自动实现了呢?答案是有的。注解处理器是(Annotation Processor)是javac的一个工具,用来在编译时扫描和编译,处理注解并生成锁期望的代码,提高生产效率。
2022-02-05 21:23:25
1703
原创 LOG4J2-MDC-全链路跟踪等功能研究
MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,内部是基于threadLocal实现,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当开启isThreadContextMapInheritable属性后,当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,日志框架会自动从 MDC中获取所需
2021-08-10 14:54:38
2703
原创 Tcaplus使用总结
一、Tcaplus是什么?游戏数据库 TcaplusDB 是专为游戏设计的 NoSQL 分布式数据存储服务,支持 Protobuf 接口访问,Tcaplus 将 Cache 与硬盘结合,追求高性能的同时,也节省成本,很好地支持全区全服和分区分服,并针对游戏爆发增长和长尾运维特点提供不停机扩缩容、备份容灾、快速回档等全套解决方案,安全可信赖。目前应用于《王者荣耀》、《穿越火线》、《火影忍者》等数百款流行游戏。二、使用步骤特别要注意的是,在购买时,连接协议里选择TDR,这样就支持xml表定义了。如何定义
2021-06-11 17:40:24
1661
4
原创 游戏服务器设计-脚本系统设计
本文对脚本引擎beanshell 和groovy做了技术选型,给出了优劣对比结果,并设计了脚本系统UI界面。游戏项目中都会遇到以下的一些需求:1.从内存里查询数据2.修复个别玩家的异常数据如何能最快捷的方式去实现,目前有两种脚本引擎可以选择:beanshell 和groovy.
2021-03-17 15:59:18
936
原创 神器Arthas使用小结
Arthas官方主页如果某个类没被加载器加载,jad反编译是读不到代码的windows 下执行attach.dll要放到JRE的bin下
2019-11-29 14:41:21
1324
原创 Infobright构架解析
Infobright的总体构架图如下:如上图所示,Infobright采用了和MySQL一致的构架,分为两层。上层是服务及应用管理,下层是存储引擎。Infobright的默认存储引擎是brighthouse,但是Infobright还可以支持其他的存储引擎,比如MyISAM、MRG_MyISAM、Memory、CSV。Infobright通过三层来组织数据,分别是DP(Data Pack)、DPN
2017-05-03 14:46:42
834
原创 游戏跨服架构进化之路
1.背景虽然游戏市场竞争激烈,产品格局变动较大,但游戏产业一直处于稳步增长阶段,无论是在端游,页游,手游还是已经初露端倪的H5游戏。可以预见,游戏类型中,MMOARPG游戏仍然会是引领市场的主流趋势,贡献着大部分流水,市场上也仍然在不断涌现精品。研发团队对MMO游戏的探索从来未间断过,从付费模式的改变,到题材多元化,次时代的视觉效果,更成熟的玩法及数值体系,本文主要针对跨服玩法上的探索和...
2017-03-02 14:46:41
16034
19
原创 ASM在游戏服务器的使用
ASM 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。不过ASM在创建class字节码的过程中,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和...
2015-10-30 12:21:42
2014
3
原创 基于Disruptor游戏服务器消息总线的设计
LMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单,用1微秒的延迟获得吞吐量为100K+. 业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(event sourcing). 业务逻辑处理器的核心是Disruptors。Disrupt...
2015-10-29 16:21:14
4830
1
原创 Infobright使用总结
INFOBRIGHT介绍在这里,我将结合我自己的使用以及对开源数据仓库的了解,INFOBRIGHT做下简单的介绍。INFOBRIGHT产品分为社区版ICE和企业版IEE。相信大家对ICE都有很多的了解。ICE具备了INFOBRIGHT大部分的功能,我列举如下:1. 超高的压缩比例。 普通10:1, 在极限情况下可以达到40:1 甚至更高。2. 超强劲的数据导入性能。 ICE 有自己专业的数据导入工...
2014-09-06 17:35:30
15008
原创 AOI视野常识介绍
本文比较了四种AOI算法在游戏开发中的应用。九宫格算法实现简单但精度有限,十字链表适合线性分布场景,灯塔算法优化视野边界处理。四叉树算法因其动态分区特性,特别适合SLG游戏大世界场景:能高效处理不均匀分布对象,支持动态视野缩放,具有优异的查询性能和内存利用率,并可扩展支持战争迷雾等系统。相比其他算法,四叉树在SLG大世界管理上展现出明显优势,是处理复杂战略视图的理想选择。
2025-11-18 11:32:41
643
原创 NATS安装与配置完全指南
NATS是一款高性能、云原生的通信系统,适用于跨服游戏通信等场景。核心优势包括低延迟消息传递、简单易用的发布/订阅模式和多语言支持。部署采用NATS服务器作为通信枢纽,各游戏实例作为客户端连接。配置包含标准端口4222(客户端)和8222(监控),支持JetStream持久化存储。通过systemd管理服务,提供HTTP监控接口和Prometheus指标导出。协议支持CONNECT连接、PING/PONG心跳、SUB订阅、PUB发布和MSG消息推送指令。日志记录详细通信流程,便于调试分析。
2025-11-05 21:03:42
1244
原创 etcd安装与配置完全指南
摘要:本文介绍了分布式键值存储系统etcd(v3.6.5)的安装配置指南。内容包括:1)下载解压安装包并设置权限;2)创建systemd服务实现持久化运行,详细说明服务配置参数;3)启动服务和健康检查方法;4)安全设置步骤,包括启用认证和用户管理;5)常见问题解决方案,如数据丢失、配置重载等。文档提供了完整的安装流程和关键配置说明,帮助用户正确部署和使用etcd服务。
2025-11-02 00:01:33
742
原创 如何在linux上做Java基准测试工具JMH测试(2)
本文介绍了如何在Gradle 8.14.2环境下使用jmh-gradle-plugin 0.7.0进行Java基准测试。通过配置jmh插件参数,可以指定测试类、JVM参数和输出格式。执行gradle命令后,会在build/reports/jmh目录下生成包含测试结果的两个报告文件(human.txt和results.json)。示例展示了具体的配置方法和测试结果输出格式,包括吞吐量(ops/s)等性能指标。该方案是对之前旧版Gradle JMH测试方法的更新和完善。
2025-10-16 17:34:00
635
原创 AI大模型的数学计算能力:一个令人担忧的现象
近期测试显示,主流AI大模型在基础数学计算能力上存在严重缺陷。在将十进制数85966080转换为二进制的测试中,仅DeepSeek和百度AI给出正确答案,其他知名模型均快速返回错误结果。这反映出当前AI存在基础计算能力缺失、幻觉问题严重、训练数据局限等问题。深层原因包括技术架构局限、训练目标偏差及缺乏专门数学训练。该现象警示AI发展需重视基础能力、采用混合架构、建立验证机制,同时用户应保持批判性思维,结合传统工具验证AI输出。这项测试揭示了AI在精确计算方面的不足,提醒行业不应仅追求参数规模,而需实
2025-09-23 17:43:20
1359
原创 rc.local没起效果怎么办
摘要:在Linux系统中,发现/etc/rc.local脚本失效后,通过systemctl检查发现rc-local.service处于inactive状态。排查发现需满足两个条件:1) 必须启用服务;2) /etc/rc.d/rc.local文件需有可执行权限。赋予权限后启动仍失败,最终使用systemctl restart命令成功激活服务。整个过程揭示了Systemd对传统rc.local脚本的严格权限要求和特殊的启动方式。
2025-07-07 18:30:56
789
原创 MongoDB 驱动升级性能测试报告
MongoDB驱动升级与性能优化测试报告摘要: 测试对比了MongoDB Java驱动4.11.5和5.5.1版本在调优前后的性能表现。结果显示,通过优化Netty线程模型和连接池参数(最大连接数48,最小8),调优后性能提升70-90%。在此基础上,升级至5.5.1驱动又带来5-11%的额外性能提升,其中删除操作提升8.3%最为显著。最终优化版本相比原始未调优版本,吞吐量接近翻倍,删除操作性能提升达107.9%。报告建议优先进行线程和连接池调优,再考虑驱动升级,并提供了详细的配置参数推荐值。
2025-06-27 19:22:56
1071
原创 神器助力!用腾讯云 CodeBuddy 的 Craft 搭建超炫移动机器人网站
在数字化时代,打造一个吸引人的移动机器人网站至关重要。本文介绍了如何利用腾讯云代码助手CodeBuddy工具,快速构建一个美观且功能丰富的网站。首先,通过访问CodeBuddy官网了解其功能并集成到开发环境中,如Visual Studio Code。接着,明确网站目标并规划页面布局,包括首页、产品展示等。然后,使用CodeBuddy生成基础代码,创建HTML、CSS和JavaScript文件,实现响应式设计和交互效果。最终,通过浏览器查看生成的网站。
2025-05-15 23:25:04
742
原创 GO日志打印添加goroutineid
这个方法我觉得靠谱,显然runtime包是肯定有获取协程id的方法的,因为处理panic时默认会输出问题协程号。但是这样做效率会不会有问题,暂时还不清楚。今天想给日志添加一个前缀,以区分不同goroutine的日志,方便做并发问题的排查,做日志跟踪。
2024-05-06 12:58:14
773
1
原创 Go语法之函数 defer使用
关键字 defer 的用法类似于面向对象编程语言 Java 和 C# 的 finally 语句块,它一般用于释放某些已分配的资源,defer用于注册一个延迟调用(在函数返回之前调用),defer典型的应用场景是释放资源,比如关闭文件句柄,释放数据库连接等。
2024-03-07 20:24:00
926
原创 Spring Data JPA 踩过的坑实录
游戏中台一直在使用spring 全家桶, 本文会左右使用Spring Data JPA的坑点记录总结 · 主要给大家总结介绍了关于使用Spring JPA注意事项及踩过的坑。
2024-01-12 16:14:09
940
3
原创 JetBrains Rider使用总结
JetBrains Rider 诞生于2016年,一款适配于游戏开发人员,是JetBrains旗下一款非常年轻的跨平台 .NET IDE。目前支持包括.NET 桌面应用、服务和库、Unity 和 Unreal Engine 游戏、Xamarin 、ASP.NET 和 ASP.NET Core web 等多种应用程序的开发,配合其强大代码检查和快速的响应能力,如今已经是可以与VS媲美竞争的明星产品了。
2024-01-05 15:32:21
2547
原创 Infobright列存数据库原理介绍
Infobright 官网宣传号称 40:1 的压缩率,每小时加载 10TB 数据,单实例支持 150TB 的存储,维护时间 0 小时3。新产品也对 Hadoop 生态有了一定的整合。总之,Infobright 是一个有意思的数据仓库产品,具有明显的特色。它以相对较小的存储空间膨胀达到了较好的处理 ad-hoc 查询的能力,比较适合查询分析语句不是特别复杂的场景。
2023-12-14 17:29:39
1136
原创 【亲测可用】实在太快了!如何在Linux下5分钟快速安装MongoDB
MongoDB 是一款介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。本文主要介绍了mongoDB的下载,安装部署,配置,和初级使用,下一篇我们将带来mongoDB的具体使用。
2023-12-14 17:11:15
3049
原创 屌炸天的IDEA远程调试神器:Remote JVM Debug
IDEA的Remote JVM Debug功能可以用来在IDEA中调试远程服务器中的代码。其原理是在两个JVM间通过debug进行socket通信,以达到远程调试的目的。
2023-12-08 17:32:54
998
原创 Linux上内存告急怎么办?swap帮你忙
Swap分区,即交换区,从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。所以,当内存使用存在压力,开始触发内存回收的行为时,就可能会使用swap空间。内核对swap的使用实际上是跟内存回收行为紧密结合的。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。
2023-12-01 15:20:49
774
3
原创 Unity团结引擎使用总结
团结引擎创世版以 Unity 2022 LTS 为研发基础,与 Unity 2022 LTS 兼容、UI 也基本保持一致,使 Unity 开发者可以无缝转换到团结引擎。融入了团结引擎独有功能和优化,未来会加入更多为中国开发者量身定制的功能和优化。
2023-11-22 10:58:02
8058
1
commons-io-1.4.jar等
2008-05-16
jakarta-oro-2.0.8.jar
2008-05-16
精简版JRE7 64位 (6MB)
2013-09-29
MINA NIO 高性能异步并发网络通讯框架
2008-07-23
protobuf-java-3.3.0.jar
2017-10-13
commons-net-1.4.1.jar
2008-05-16
commons-io-1.4.jar
2008-05-16
SQL如何做交集查询
2023-09-22
vs code 环境下VUE vite mock api文件能设置断点调试嘛?
2022-08-30
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅