自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

流子的专栏

https://github.com/jiangguilong2000/gamioo

  • 博客(293)
  • 资源 (10)
  • 收藏
  • 关注

原创 游戏跨服架构进化之路

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

2017-03-02 14:46:41 14331 19

原创 VUE使用总结

适用于 Linux 的 Windows 子系统没有已安装的分发版。可以通过访问 Microsoft Store 来安装分发版: https://aka.ms/wslstore。下载官方安装包,https://yarnpkg.com/zh-Hans/docs/install。yarn -v # 出现对应版本号即代表安装成功。版本查看命令:winver。

2022-10-24 19:35:58 226

原创 Zlib和Zstd 性能对比评测

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

2022-07-29 17:46:09 618

原创 在服务器端如何用JNI实现 NavMesh寻路

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

2022-07-13 21:22:54 529

原创 JNI全流程实例使用总结

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

2022-07-12 21:31:45 723 1

原创 3D寻路系统NavMesh-服务端篇

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

2022-07-12 00:38:07 866 1

原创 3D寻路系统NavMesh-客户端篇

2D寻路我们一般以A*寻路为主,那么,3D游戏世界呢,NavMesh(导航网格) 是3D游戏世界中主动寻路的一种技术,如果你想让游戏人物能自动绕开障碍物到达目的地.那你就来学习下。

2022-07-10 23:40:32 1028

转载 Unity 从各个点理解协程

什么是协同程序?什么是协程?unity协程是一个能够暂停协程执行,暂停后立即返回主函数,执行主函数剩余的部分,直到中断指令完成后,从中断指令的下一行继续执行协程剩余的函数。函数体全部执行完成,协程结束。由于中断指令的出现,使得可以将一个函数分割到多个帧里去执行。

2022-05-14 17:18:36 191

原创 windows下不重启电脑如何能更新环境变量

修改完成环境变量后,进入cmd命令提示符,输入:set PATH=C: 关闭cmd窗口。再次打开cmd窗口,输入:echo %PATH%C:\Users\DELL>where javaD:\Program Files\Java\TencentKona-8.0.4\bin\java.exe发现还真变了可以发现“我的电脑”->“属性”->“高级”->“环境变量”中设置的 PATH 值已经生效。总结:”输入:set PATH=C: ,关闭cmd窗口。再次打开cmd窗口

2022-03-16 15:42:24 3304 1

原创 静态代码自动扫描p3c的使用

当一家公司上了一定的规模,项目越来越多,代码也越来越庞大,然后就是各种五花八门的代码格式、代码规范,通过主程们code review 耗时耗力,很多主程也缺少主观能动性和精力去cover code review这事项,如果有东西能自动化去检查团队成员的编码规范,这样就可以大大的提高代码质量,也可以让核心人员从code review 中解脱出来,本文提到的P3C-PMD就是这种神器。

2022-02-07 16:31:21 1863

原创 链路跟踪Jaeger使用总结

Jaeger是一款广受欢迎的开源分布式链路跟踪系统,兼容OpenTracing API,且已加入CNCF开源组织。主要功能是聚合来自各个异构系统的实时监控数据。对一些常用的框架通过插件可以达到无侵入式跟踪,比如Apache HttpClient,Elasticsearch,JDBC,Kafka,Memcached,Mongo,OkHttp,Redis,Spring Boot,Spring Cloud,要通过Jaeger将Java应用数据上报至链路追踪控制台,首先需要完成埋点工作。

2022-02-07 15:25:56 5839

原创 如何用 APT(Annotation Processing Tool)自动生成代码

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

2022-02-05 21:23:25 617

原创 Java基准测试工具JMH使用

JMH,即Java Microbenchmark Harness,这是专门用于进行代码的微基准测试的一套工具API。JMH 由 OpenJDK/Oracle 里面那群开发了 Java 编译器的大牛们所开发 。何谓 Micro Benchmark 呢? 简单地说就是在 方法层面上的 benchmark,精度可以精确到微秒级。本文主要介绍了性能基准测试工具 JMH,它可以通过一些功能来规避由 JVM 中的 JIT 或者其他优化对性能测试造成的影响。

2022-02-05 17:52:30 8720

原创 Prometheus的使用总结

Prometheus 是一套开源的系统监控报警框架。它受启发于 Google 的 Brogmon 监控系统,由工作在 SoundCloud 的前 google 员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。2016 年,Prometheus 正式加入 Cloud Native Computing Foundation(CNCF)基金会的项目,成为受欢迎度仅次于 Kubernetes 的项目。2017 年底发布了基于全新存储层的 2.0 版本,能更好地与容器平台、云平台配

2021-12-29 12:11:21 1853

原创 吐槽下Nacos服务发现

1.注销实例的API或者SDK(deregisterInstance),会导致该条记录消失,如果只是modifyinstance,会导致永远驻留在数据中2.游戏区做了迁移或者IP漂移的话,老的脏数据还是会在服务器列表里,没法通过zoneid去覆盖,只能通过人工去把该节点下线3.目前为了减少线程占用,dir和game的底层用的是nacos API,基于http client封装,但为了实时同步(subscribe),dir服又同时用了nacos SDK4.用Nacos SDK 的话,进程会新增10几个线

2021-11-26 10:57:33 3232

原创 k8s及常用指令使用总结

Kubernetes (K8S) 是由Google设计的用于自动化部署、大规模可伸缩、管理容器化应用程序的开源的容器编排引擎,目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。 传统的应用部署方式是通过插件或脚本来安装应用。这样做的缺点是应用的运行、配置、管理、所有生存周期将与当前操作系统绑定,这样做并不利于应用的升级更新/回滚等操作,当然也可以通过创建虚拟机的方式来实现某些功能,但是虚拟机非常重,并不利于可移植性。

2021-10-26 17:31:50 211

原创 我眼中的OpenTracing

分布式链路跟踪最先由 Google在 Dapper论文中提出的一套链路追踪的 API 规范,支持多种编程语言,与平台无关、与厂商无关,使得开发人员能够方便的添加(或更换)链路跟踪系统的实现,虽然OpenTracing不是一个标准规范,但现在大多数链路跟踪系统都在尽量兼容OpenTracing。目前符合这API标准的就有 SkyWalking,Jaeger,Zipkin,Open Telemetry,Pinpoint、CAT等等

2021-10-22 15:47:42 473

原创 算数几何的绘制

算数几何的显示绘制,可用于几何图形的的旋转,坐标转换,移动等直观验证

2021-09-18 11:21:09 128

原创 VirtualThread Pin的处理总结

Pin的状态指的是VirtualThread在freeze时无法让出Carrier Thread(协程执行时挂载的物理线程)。主要有两种情况下会导致Pin:VirtualThread的调用栈包含JNI frame。因为JNI调用的实现是C++代码,可以做的事情非常多,例如它可以保存当前Carrier Thread的Thread ID,如果这时切换出去,那么下一次执行时,如果另一个Carrier Thread来执行这个协程,将会产生逻辑错误(Carrier Thread的ID不一致);VirtualThr

2021-09-10 21:02:40 110

原创 Unity3D 一些工具总结

插件EasyTouch插件

2021-08-20 15:38:47 657

原创 LOG4J2-MDC-全链路跟踪等功能研究

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

2021-08-10 14:54:38 1697

原创 谈谈对Angular,Vue,React 的认识

Vue和React两个JavaScript框架都是当下比较受欢迎的。不同点:Angular (74.8K star)是基于 TypeScript 的 Javascript 框架。由 Google 进行开发和维护,它被描述为“超级厉害的 JavaScript MVW 框架”。React (172K star) 被描述为 “用于构建用户界面的 JavaScript 库”,是Facebook创建的JavaScript UI框架,它支撑着包括Instagram在内的大多数Facebook网站。React与当时

2021-07-22 14:32:01 211 1

原创 Docker使用总结

Docker 是一个能够把开发的应用程序自动部署到容器的开源引擎。也就是说Docker跟Vmware等虚拟机软件相比,它是开源的。一个原生的Linux容器格式,Docker中称为libcontainerLinux内核的命名空间(namespace),用于隔离文件系统、进程和网络文件系统隔离,进程隔离,网络隔离,资源隔离与分组,写时复制,交互式shell...

2021-07-07 15:40:32 204

原创 酷炫的IDEA启动图黑客主题来了

2021年4月份的某一天,IDEA提示我版本更新,我更新完,在等待移动的过程中,我期待有个酷炫的画面出来,就像幻视绚丽登场。期待中的画面:实际等来的画面:眼花缭乱的让我仿佛感觉到期待的幻视穿上了东北花棉袄妖娆而来。让点泪奔~~~忍了他好几个月了,端午节闲来没事,今天终于有点时间换上了大师级启动图。先上图,那么,我们如何去替换呢?1.先退出正在运行的 IDEA, 避免出现冲突2.找到文件 idea 安装路径/lib/resources.jarmacOS IntelliJ IDEA.a

2021-06-14 13:42:26 584 2

原创 Tcaplus使用总结

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

2021-06-11 17:40:24 599 4

原创 《万国觉醒》之游戏战报FreeMarker模板引擎实现

这两天在玩《万国觉醒》,看了下战报,每一回合伤害,技能,buf明细都写的很详尽,如果自己去实现,该怎么做呢?想想,只要有个记录战斗明细的对象+模板引擎,一整合,需要的结果就出来了,就拿接口很丰富的freemarker练手。好,我们先来学习下这个模板引擎的基础知识。

2021-06-09 10:39:44 922

原创 上标下标汇总

0到9小数字符号:上标:º ¹ ² ³ ⁴⁵ ⁶ ⁷ ⁸ ⁹ ⁺ ⁻ ⁼ ⁽ ⁾ ⁿ ′ ½下标:₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉ ₊ ₋ ₌ ₍ ₎

2021-04-22 18:11:11 1988

原创 Nacos使用总结

官网 :http://nacos.io下载地址 本文下载的为2.0.0版本:https://github.com/alibaba/nacos/releasesLinux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):sh startup.sh -m standalone打开页面http://127.0.0.1:8848/nacos/index.html[root@VM-0-15-centos logs]# jps -l30601 sun

2021-04-08 11:21:29 6651 2

原创 游戏服务器设计-脚本系统设计

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

2021-03-17 15:59:18 409

原创 markdown语法使用总结

1.上标### 2. 数据结构和算法* 寻路算法 * NavMesh * A<sup>*</sup>* 推荐算法 * Collaborative Filtering * Factor Analysis

2021-03-11 19:24:01 104 2

原创 谈谈用统一网关gate的利与弊

在架构设计中,在网关这块,很多公司喜欢用统一网关,特别是电子商务,金融,团购等等日常生活中会用到的互联网产品,但多服多区模式下的游戏是否也适用统一网关呢?那么,统一网关带来的好处是什么呢?1.安全性,所有终端请求都需要经过网关层,再分发给各种微服务,这样,如果我们保证了网关层的安全性,高可用性(HA),负载均衡(LB),那么,很多业务的运行就不会直接暴露在公网上。2.节省资源,IP段的资源(特别是IPV4段目前越来越少的现状)和带宽资源(针对一台云主机分配一定带宽的购买方式,而非共享

2021-02-08 16:14:17 978 1

原创 Google Guava EventBus使用

Guava是Google开源的一个Java基础类库,它在Google内部被广泛使用。Guava提供了很多功能模块比如:集合、并发库、缓存等,EventBus是其中的一个module,本篇主要讲一下EventBus的使用。简单介绍EventBus:核心类,代表了一个事件总线。Publish事件也由它发起。 AsyncEventBus:异步事件总线,在分发事件的时候,将其压入一个全局队列的异步分发模式。 Subscriber:对某个事件的处理器抽象,封装了事件的订阅者以及处理器,并负责事件处理。

2021-01-30 19:11:41 613

原创 在linux系统上搭建egret编译环境

为了能在服务器自动化编译打包H5项目,需要在测试服搭建一套环境系统:CentOS release 6.9 (Final)安装nodejswget https://nodejs.org/download/release/v9.11.2/node-v9.11.2-linux-x64.tar.gz解压到/usr/local/下,在/etc/profile.d/extend.sh下配置环境变量export NODE_HOME=/usr/local/node-9.11.2export PATH

2021-01-23 20:54:04 276

原创 Redis主从配置总结

IP:192.168.1.100主节点 6379从节点 6380从6380节点里要加slaveof 192.168.1.100 6379把主节点停掉,6380从节点输入slaveof no one主节点恢复后,现将6379设置为从节点,6380的数据也就恢复过来了,6379的节点如下操作slaveof 192.168.1.100 63806...

2020-12-18 18:21:44 88

原创 selenium使用总结

web自动化测试第6步:模拟鼠标操作(ActionChains)selenium webdriver 实现Canvas画布自动化测试ChromeDriver设置有密码的代理(Java版本)解决Selenium 调用IEDriverServer打开IE浏览器用 canvas 的 getImageData 做点有趣的事https://docs.opencv.org/java/...

2020-12-18 18:19:55 139

原创 Seata 分布式事务中间件

Seata分布式事务中间件

2020-11-25 22:08:49 164

原创 全链路实时监控--istio

目前,阿里,蚂蚁金服,美团,腾讯,网易在用

2020-11-21 21:12:25 1683

原创 腾讯云如何挂载数据盘

执行以下命令,对 “/dev/vdb” 裸设备直接创建文件系统格式。 mkfs -t <文件系统格式> /dev/vdb 不同文件系统支持的分区大小不同,请根据实际需求合理选择文件系统。以设置文件系统为EXT4为例: mkfs -t ext4 /dev/vdb 注意: 格式化需要等待一段时间,请观察系统运行状态,不要退出。 执行以下命令,新建挂载点。 mkdir <挂载点> 以新建挂载点/data为例: mkdir /data ...

2020-11-08 17:02:40 1083

原创 源码系列-LongAdder和AtomicLong对比

相当于一个AtomicLong数组,初始化时,初始化大小为2的数组,并初始化相对应位置的一个元素Cell,当每次去尝试获取时,根据当前线程获得的随机值threadLocalRandom取模(大小为cell的数组容量)获得索引值,然后回去找相应位置的元素,找不到则插入新的cell, 然后进行CAS操作(比如compareAndSwapLong),与AtomicLong原理相同,操作成功则结束,操作失败,会尝试扩容为原先cell数组大小的两倍,然后重新初始化要更新的索引值(threadLocalRando...

2020-10-29 19:51:09 155

原创 RocketMQ使用总结

Topic可以理解为在rocketMq体系当中作为一个逻辑消息组织形式,一般情况下一类业务消息会申请一个topic来实现业务之间隔离。Topic是一个逻辑上的概念,实际上在每个broker上以queue的形式保存,也就是说每个topic在broker上会划分成几个逻辑队列,每个逻辑队列保存一部分消息数据,但是保存的消息数据实际上不是真正的消息数据,而是指向commit log的消息索引。...

2020-08-28 16:13:30 265

2021酷炫的IDEA启动图

你是否已经忍受了 20花里胡哨的启动画面很久了,你是否想替换上酷炫的启动图,程序员的最爱来了

2021-06-14

酷炫的IDEA启动图

你是否已经忍受了IDEA花里胡哨的启动画面很久了,你是否想替换上酷炫的启动图,程序员的最爱来了

2021-06-14

protobuf-java-3.3.0.jar

protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。

2017-10-13

精简版JRE7 64位 (6MB)

原始的JDK 127MB,经过精简,瘦身到6MB,普通的应用程序跑跑基本够用。 可用于替代工具类的JRE 专注瘦身JRE 30年,品质值得信赖!

2013-09-29

protobuf-java-2.5.0.jar

protobuf的最新包, Google 公司推出的开源项目,性能好/效率高 帮忙编译好了

2013-07-09

MINA NIO 高性能异步并发网络通讯框架

利用 Mina 可以高效地完成以下任务:<br><br>TCP/IP 和 UDP/IP 通讯 <br>串口通讯 <br>VM 间的管道通讯 <br>SSL/TLS <br>JXM 集成 <br>IoC 容器集成( Spring 、 Pico 等) <br>状态机<br><br>据官方评测, APR 的效率较之 Sun NIO 要高出约 10%)。由于这一系列的重大改进,使得 2.0.x 成为十分令人期待的一个版本<br>我们在惊叹 MINA 可以带来多么大便利的同时,还不得不为其卓越的性能而骄傲,据称使用MINA开发服务器程序的性能已经逼近使用 C/C++ 语言开发的网络服务。<br>不过不管怎样,如果你在使用 Java 进行并发网络应用开发, Mina 绝对是一个值得推荐和学习的优秀工具!<br>

2008-07-23

commons-io-1.4.jar

使用commons的net包进行ftp链接,commons-net包封装了一些常见的网络包:ftp,smtp,pop3等<br>相关包:commons-net-1.4.1.jar ; commons-io-1.4.jar;jakarta-oro-2.0.8.jar

2008-05-16

jakarta-oro-2.0.8.jar

使用commons的net包进行ftp链接,commons-net包封装了一些常见的网络包:ftp,smtp,pop3等<br>相关包:commons-net-1.4.1.jar ; commons-io-1.4.jar;jakarta-oro-2.0.8.jar

2008-05-16

commons-net-1.4.1.jar

使用commons的net包进行ftp链接,commons-net包封装了一些常见的网络包:ftp,smtp,pop3等<br>相关包:commons-net-1.4.1.jar ; commons-io-1.4.jar;jakarta-oro-2.0.8.jar

2008-05-16

commons-io-1.4.jar等

JAVA连接FTP服务器,并上传/下载文件的,使用commons-net包实现ftp服务器的访问,commons-net包封装了一些常见的网络包:ftp,smtp,pop3等..相关包:commons-net-1.4.1.jar ; commons-io-1.4.jar;jakarta-oro-2.0.8.jar

2008-05-16

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

TA关注的人

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