- 博客(325)
- 资源 (10)
- 收藏
- 关注

原创 fastjson2与fury的巅峰对决,谁会笑到最后?
那时,两个协议框架各有千秋,不分伯仲,今天,看到fury推出了全新的0.2.0版本,fastjson2推出了新2.0.41版本,据说都有很多性能的提升,今天打算再一测,希望这两家伙再接再厉,能带给我们更多惊喜!我们这次的侧重点,主要关注在序列化,反序列化,数据包压缩率大小。
2023-10-10 15:26:42
908
1

原创 谁才是真正的协议之王?fastjson2 vs fury
前阵子,我们写过一篇关于fury和protostuff的性能对比的文章:《性能飙升20倍!!! 超高性能协议框架fury完爆protostuff》,那么,fury 是否能真的坐稳协议框架的头把交椅呢?正逢fastjson2推出了新2.0.37版本,据说也很早就支持了二进制格式字节JSONB序列化和反序列化,正好打算一较高下!
2023-08-10 21:01:50
2264
4

原创 性能飙升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
1897

原创 JAVA内存深度分析报告
最近在对云主机的内存占用优化中,又有了新的认识,网上对JAVA的native memory 的认知五花八门,对direct memory 的获取的有偏差,今天我们来好好理一理,以便我们对JAVA 内存有个更好的认知。我们通过API ,MetaData , Native memory 快照,让我们对JAVA内存结构有了更深度的认识,以便以后在分析问题时,能有更客观的数据分析的基础。
2023-06-02 20:46:14
2050

原创 Java基准测试工具JMH高级使用
今天我们再来聊一下关于JMH的高阶使用。主要我们会围绕着以下几点来讲: - 对称并发测试 - 非对称并发测试 - 阻塞并发测试 - Map并发测试
2023-03-10 16:04:27
917

原创 Zlib和Zstd 性能对比评测
Zstandard 是facebook厂商提供的一种高压缩率的实时压缩算法,他在压缩比和压缩速度上做了很好的平衡,同时还提供高速的解码器,针对小数据,也提供了一种叫做字典压缩算法,从样本中可以创建出字典集合数据,Zstandard库以BSD协议方式开源。该算法是由Facebook的Yann Collet开发的一个无损数据压缩算法。Zstandard在设计上与DEFLATE(.zip、gzip)算法有着差不多的压缩比,但有更高的压缩和解压缩速度。...
2022-07-29 17:46:09
3272

原创 在服务器端如何用JNI实现 NavMesh寻路
我们已经讲到的在服务器端使用 Easy3dNav来进行 NavMesh 来做寻路,但性能上能否更快一点呢?众所周知,C++ 版本的性能向来比JAVA版本要出色,所以我们尝试用JAVA调用JNI native 接口来提升寻路的性能。............
2022-07-13 21:22:54
1927

原创 JNI全流程实例使用总结
为了更好的获得一些比较独立的模块的性能,比如视频模块,寻路模块,通过对C++ 接口的封装,通过JNI技术对它进行跨语言调用。那什么是JNI呢?JNI (Java Native Interface,Java本地接口)是一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用/或库,也可以被其他程序调用。 本地程序一般是用其它语言(C、C++或汇编语言等)编写的,并且被编译为基于本机硬件和操作系统的程序。.....................
2022-07-12 21:31:45
2467
1

原创 3D寻路系统NavMesh-服务端篇
上一节讲到的客户端使用Unity 自带的 NavMesh 来做寻路。然而,怪物的刷新、移动,和AI是由服务器负责的,怪物的寻路是由服务器控制的,或者像SLG,大地图寻路在玩家离线的情况下要继续寻路,这必须要服务器来主导寻路。...............
2022-07-12 00:38:07
3197
9

原创 如何用 APT(Annotation Processing Tool)自动生成代码
我们很多人都写过代码自动生成的工具,比如用python结合moko模板引擎,或者java 结合freemarker模板引擎,protoc 等,实现解析策划数据类,proto协议类,或者数据库层的实体类。大大节省了我们开发的时间,让我们可以懒得光明正大。那么,有没有办法当你写好协议后,只要一保存编译,相关的协议接收和发送类的接口就自动实现了呢?答案是有的。注解处理器是(Annotation Processor)是javac的一个工具,用来在编译时扫描和编译,处理注解并生成锁期望的代码,提高生产效率。
2022-02-05 21:23:25
1462

原创 LOG4J2-MDC-全链路跟踪等功能研究
MDC(Mapped Diagnostic Context,映射调试上下文)是 log4j 、logback及log4j2 提供的一种方便在多线程条件下记录日志的功能。MDC 可以看成是一个与当前线程绑定的哈希表,内部是基于threadLocal实现,可以往其中添加键值对。MDC 中包含的内容可以被同一线程中执行的代码所访问。当开启isThreadContextMapInheritable属性后,当前线程的子线程会继承其父线程中的 MDC 的内容。当需要记录日志时,日志框架会自动从 MDC中获取所需
2021-08-10 14:54:38
2468

原创 Tcaplus使用总结
一、Tcaplus是什么?游戏数据库 TcaplusDB 是专为游戏设计的 NoSQL 分布式数据存储服务,支持 Protobuf 接口访问,Tcaplus 将 Cache 与硬盘结合,追求高性能的同时,也节省成本,很好地支持全区全服和分区分服,并针对游戏爆发增长和长尾运维特点提供不停机扩缩容、备份容灾、快速回档等全套解决方案,安全可信赖。目前应用于《王者荣耀》、《穿越火线》、《火影忍者》等数百款流行游戏。二、使用步骤特别要注意的是,在购买时,连接协议里选择TDR,这样就支持xml表定义了。如何定义
2021-06-11 17:40:24
1384
4

原创 游戏服务器设计-脚本系统设计
本文对脚本引擎beanshell 和groovy做了技术选型,给出了优劣对比结果,并设计了脚本系统UI界面。游戏项目中都会遇到以下的一些需求:1.从内存里查询数据2.修复个别玩家的异常数据如何能最快捷的方式去实现,目前有两种脚本引擎可以选择:beanshell 和groovy.
2021-03-17 15:59:18
768

原创 神器Arthas使用小结
Arthas官方主页如果某个类没被加载器加载,jad反编译是读不到代码的windows 下执行attach.dll要放到JRE的bin下
2019-11-29 14:41:21
1196

原创 Infobright构架解析
Infobright的总体构架图如下:如上图所示,Infobright采用了和MySQL一致的构架,分为两层。上层是服务及应用管理,下层是存储引擎。Infobright的默认存储引擎是brighthouse,但是Infobright还可以支持其他的存储引擎,比如MyISAM、MRG_MyISAM、Memory、CSV。Infobright通过三层来组织数据,分别是DP(Data Pack)、DPN
2017-05-03 14:46:42
697

原创 游戏跨服架构进化之路
1.背景虽然游戏市场竞争激烈,产品格局变动较大,但游戏产业一直处于稳步增长阶段,无论是在端游,页游,手游还是已经初露端倪的H5游戏。可以预见,游戏类型中,MMOARPG游戏仍然会是引领市场的主流趋势,贡献着大部分流水,市场上也仍然在不断涌现精品。研发团队对MMO游戏的探索从来未间断过,从付费模式的改变,到题材多元化,次时代的视觉效果,更成熟的玩法及数值体系,本文主要针对跨服玩法上的探索和...
2017-03-02 14:46:41
15674
19

原创 ASM在游戏服务器的使用
ASM 是一个 Java 字节码操控框架。它能够以二进制形式修改已有类或者动态生成类。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。不过ASM在创建class字节码的过程中,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和...
2015-10-30 12:21:42
1839
3

原创 基于Disruptor游戏服务器消息总线的设计
LMAX是一种新型零售金融交易平台,它能够以很低的延迟(latency)产生大量交易(吞吐量). 这个系统是建立在JVM平台上,核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单,用1微秒的延迟获得吞吐量为100K+. 业务逻辑处理器完全是运行在内存中(in-memory),使用事件源驱动方式(event sourcing). 业务逻辑处理器的核心是Disruptors。Disrupt...
2015-10-29 16:21:14
4613
1

原创 Infobright使用总结
INFOBRIGHT介绍在这里,我将结合我自己的使用以及对开源数据仓库的了解,INFOBRIGHT做下简单的介绍。INFOBRIGHT产品分为社区版ICE和企业版IEE。相信大家对ICE都有很多的了解。ICE具备了INFOBRIGHT大部分的功能,我列举如下:1. 超高的压缩比例。 普通10:1, 在极限情况下可以达到40:1 甚至更高。2. 超强劲的数据导入性能。 ICE 有自己专业的数据导入工...
2014-09-06 17:35:30
14814
原创 神器助力!用腾讯云 CodeBuddy 的 Craft 搭建超炫移动机器人网站
在数字化时代,打造一个吸引人的移动机器人网站至关重要。本文介绍了如何利用腾讯云代码助手CodeBuddy工具,快速构建一个美观且功能丰富的网站。首先,通过访问CodeBuddy官网了解其功能并集成到开发环境中,如Visual Studio Code。接着,明确网站目标并规划页面布局,包括首页、产品展示等。然后,使用CodeBuddy生成基础代码,创建HTML、CSS和JavaScript文件,实现响应式设计和交互效果。最终,通过浏览器查看生成的网站。
2025-05-15 23:25:04
470
原创 GO日志打印添加goroutineid
这个方法我觉得靠谱,显然runtime包是肯定有获取协程id的方法的,因为处理panic时默认会输出问题协程号。但是这样做效率会不会有问题,暂时还不清楚。今天想给日志添加一个前缀,以区分不同goroutine的日志,方便做并发问题的排查,做日志跟踪。
2024-05-06 12:58:14
647
1
原创 Go语法之函数 defer使用
关键字 defer 的用法类似于面向对象编程语言 Java 和 C# 的 finally 语句块,它一般用于释放某些已分配的资源,defer用于注册一个延迟调用(在函数返回之前调用),defer典型的应用场景是释放资源,比如关闭文件句柄,释放数据库连接等。
2024-03-07 20:24:00
761
原创 Spring Data JPA 踩过的坑实录
游戏中台一直在使用spring 全家桶, 本文会左右使用Spring Data JPA的坑点记录总结 · 主要给大家总结介绍了关于使用Spring JPA注意事项及踩过的坑。
2024-01-12 16:14:09
843
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
2017
原创 Infobright列存数据库原理介绍
Infobright 官网宣传号称 40:1 的压缩率,每小时加载 10TB 数据,单实例支持 150TB 的存储,维护时间 0 小时3。新产品也对 Hadoop 生态有了一定的整合。总之,Infobright 是一个有意思的数据仓库产品,具有明显的特色。它以相对较小的存储空间膨胀达到了较好的处理 ad-hoc 查询的能力,比较适合查询分析语句不是特别复杂的场景。
2023-12-14 17:29:39
975
原创 【亲测可用】实在太快了!如何在Linux下5分钟快速安装MongoDB
MongoDB 是一款介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。本文主要介绍了mongoDB的下载,安装部署,配置,和初级使用,下一篇我们将带来mongoDB的具体使用。
2023-12-14 17:11:15
1898
原创 屌炸天的IDEA远程调试神器:Remote JVM Debug
IDEA的Remote JVM Debug功能可以用来在IDEA中调试远程服务器中的代码。其原理是在两个JVM间通过debug进行socket通信,以达到远程调试的目的。
2023-12-08 17:32:54
791
原创 Linux上内存告急怎么办?swap帮你忙
Swap分区,即交换区,从功能上讲,交换分区主要是在内存不够用的时候,将部分内存上的数据交换到swap空间上,以便让系统不会因内存不够用而导致oom或者更致命的情况出现。所以,当内存使用存在压力,开始触发内存回收的行为时,就可能会使用swap空间。内核对swap的使用实际上是跟内存回收行为紧密结合的。当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。
2023-12-01 15:20:49
534
3
原创 Unity团结引擎使用总结
团结引擎创世版以 Unity 2022 LTS 为研发基础,与 Unity 2022 LTS 兼容、UI 也基本保持一致,使 Unity 开发者可以无缝转换到团结引擎。融入了团结引擎独有功能和优化,未来会加入更多为中国开发者量身定制的功能和优化。
2023-11-22 10:58:02
7287
1
原创 GO模块引入指令Go Mod
本文我们了解在Golang中go mod的使用方式。Go mod提供了一系列操作modules的命令,所有的go命令中现在已经内置了对module的支持
2023-11-10 16:16:59
857
5
原创 Go入门简介
Go 语言从发布 1.0 版本以来备受众多开发者关注并得到广泛使用,Go 语言的简单、高效、并发特性吸引了众多传统语言开发者的加入,而且人数越来越多。就目前来看,Go语言已经⼴泛应用于人工智能、云计算开发、容器虚拟化、⼤数据开发、数据分析及科学计算、运维开发、爬虫开发、移动机器人开发,游戏开发等领域。
2023-11-08 17:06:08
359
原创 【亲测可用】Elesticsearch从入门到精通实例
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于[云计算]中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。以上就是springboot集成es后的一个简单使用,spring封装过后的spring-boot-starter-data-elasticsearch使用起来还是非常方便简单的。
2023-10-22 13:12:45
761
4
原创 基于Spring Boot的LDAP开发全教程
LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一种用于访问和维护分布式目录服务的开放标准协议,是一种基于TCP/IP协议的客户端-服务器协议,用于访问和管理分布式目录服务,如企业内部的用户目录、组织结构和资源信息等。LDAP具有轻量级、高效性和可扩展性等特点,被广泛应用于AD域操作,身份验证、用户管理、电子邮件系统和网络存储等领域。
2023-10-18 10:36:52
4688
6
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关注的人