自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(134)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用动态日志简化开发时间

游戏程序日志,无论是对于开发环境,还是生产环境,都有着非常重要的作用。即是研发人员排查bug的利器,也是运营团队分析游戏内容的数据依据。本文主要演示log4j,log4j2,logback三种日志系统如何创建动态日志。

2024-03-19 21:58:07 402

原创 spring-boot-starter-thymeleaf加载外部html文件

在Spring MVC中,我们可以使用Thymeleaf模板引擎来实现加载外部HTML文件。本文将进行案例演示热更新文件的方法。

2024-03-18 22:41:52 1214

原创 maven一点通

maven是java开发的项目管理工具。本文主要介绍maven的安装,核心概念,以及实际使用技巧。

2024-03-18 19:33:08 1224

原创 Git一点通

Git是一个伟大的版本管理工具,非常灵活,也非常强大。本文主要介绍git的常用命令,对比比较混淆的命令,介绍一些常见的错误操作等等。

2024-03-17 23:24:22 706

原创 Netty之@Sharable注解

Netty的handler标记@Shareable注解之后能够被多个ChannelPipeline共享,减少内存浪费。本文讲述@Shareable注解的正确使用方法。

2024-03-17 10:16:21 648

原创 服务器生产环境问题解决思路

游戏服务器开发节奏比较快,版本迭代很频繁,导致生产环境经常出现bug。当线上出现bug,我们应该如何处理呢?以及,如何主动监控游戏线程呢?

2024-03-15 15:38:49 315

原创 使用Minio搭建文件服务器

Minio是一个开源的对象存储服务器,可以用来存储和管理大规模的数据。本文介绍windows搭建minio,以及上传下载文件的例子。

2024-03-15 13:37:25 2223

原创 spring-boot操作elasticsearch

在Spring Boot可以使用Spring Data Elasticsearch来简化开发过程。本文演示如何使用ElasticsearchRepository对文档进行简单的增删查改,使用ElasticsearchRestTemplate相关API进行较复杂的查询。

2024-03-12 23:08:29 721

原创 Elasticsearch使用Kibana进行基础操作

Kibana是一个用于数据可视化和分析的开源工具。它是Elasticsearch的一个组件,用于在Elasticsearch索引中搜索、分析和互动式地可视化数据。本文使用Kibana的开发者工具进行简单的增删查改操作。

2024-03-12 12:33:38 940

原创 使用maven打生产环境可执行包

程序打包的主要目的是将项目的源代码、依赖库和其他资源打包成一个可执行的文件或者部署包,方便程序的发布和部署。本文演示如何使用maven进行程序打包。

2024-03-11 15:01:48 957

原创 Gradle模块化最佳实践

Gradle是一个新兴构建和管理程序项目的工具。它支持模块化开发,使开发人员能够将项目分解为多个独立的模块,并且可以独立地构建、测试和部署这些模块。本文以实际例子配置进行演示说明。

2024-03-10 21:50:55 1143

原创 windows安装ElasticSearch踩坑记

ElasticSearch是一个开源的分布式搜索和分析引擎。它提供实时分布式搜索功能,可以索引和搜索大量的结构化和非结构化数据。Elasticsearch以其速度、可伸缩性和处理复杂查询的能力而闻名。它常用于日志分析、全文搜索、文档搜索和数据分析等领域。本文记叙在Windows环境下安装相关程序出现的问题。

2024-03-10 11:40:54 1560

原创 Netty的粘包/拆包问题的解决之道

在使用Netty进行网络通信时,由于网络传输的特性,数据往往无法保持完整的发送或接收。可以把netty的socket通道看成是一段水管,水管里的水是没有分界线的。TCP作为底层传输协议,是不了解上层业务数据的意义。这就会导致数据在传输过程中被拆分成多个小片段,或者多个数据包被合并到一个大的数据包中。为了解决这个问题,Netty提供了一些方法来处理拆包和粘包的问题。

2024-03-08 14:21:27 562

原创 Maven模块化最佳实践

Maven是一个用于构建和管理Java项目的工具。它支持模块化开发,使开发人员能够将项目分解为多个独立的模块,并且可以独立地构建、测试和部署这些模块。使用maven的模块化配置,子模块可以享受到继承和聚合的优势。本文以实际例子配置进行演示说明。

2024-03-08 13:20:14 1038

原创 Netty之WebSocket协议开发

在传统的Web通信中,浏览器是基于请求--响应模式,此种模式服务器很难及时推送数据。WebSocket技术在http协议进行拓展,实现全双工通信。本文使用netty作为服务端,js作为客户端,演示websocket功能。

2024-03-05 20:41:13 1288

原创 游戏寻路之A*算法(GUI演示)

A*算法是一种路径搜索算法,用于在图形网络中找到最短路径。它结合了Dijkstra算法和启发式搜索的思想,通过综合利用已知的最短路径和估计的最短路径来优化搜索过程。本文提供代码演示,包含迷宫生成算法,A星算法,GUI动态界面演示。

2024-03-04 18:56:57 896

原创 使用GitHub API 查询开源项目信息

GitHub API 是一组 RESTful API 接口,用于与 GitHub 平台进行交互。通过使用 GitHub API,开发人员可以访问和操作 GitHub 平台上的各种资源,如仓库、提交记录、问题等。本文使用httpclient工具进行开源项目信息查询,并使用jackson工具对查询结果进行反序列化。

2024-03-04 10:13:53 1809

原创 Netty的InboundHandler 和OutboundHandler

本文说明Netty的InboundHandler 和OutboundHandler的区别,并通过示例演示客户端数据在handler的数据流向。

2024-03-02 19:34:43 1188 1

原创 Netty之ChannelHandlerMask详解

Netty的ChannelHandlerMask是用于标记ChannelHandler的位掩码。它被用于指示ChannelHandler的属性和事件处理方式。

2024-03-01 17:33:43 722

原创 如何将java程序打包成可执行文件

很多时候,我们需要把编写好的java代码传给其他人使用。大部分计算机都是没有java运行环境的,本文介绍两种方式来打包可执行程序。

2024-03-01 10:53:43 968

原创 游戏开发的艰辛历程与升级展望

从第一款游戏《贪吃蛇》开始,到《水果忍者》、《时空猎人》,再到如今风靡全国的《王者荣耀》,手机游戏迎来了百花齐放的繁华时代。怀着对游戏行业的热爱,一批一批游戏开发大军加入了队伍。即使从业道路很艰辛,我们还是一如初衷,希望在奉献自己力量的同时,能够从中收获财富与自我成长。

2024-02-28 13:57:52 3327 2

原创 服务端常用的Linux运维命令

游戏服务器开发常用的若干运维命令

2024-02-28 13:30:52 376

原创 游戏全球同服服务器支持

全球同服是指游戏中的玩家可以跨越地域限制,与全球的玩家一起进行游戏。这意味着无论你在哪个地区,你都可以与来自世界各地的玩家一起游戏。全球同服通常需要游戏服务器的支持,以确保玩家之间的连接和游戏体验。

2024-02-28 12:02:43 102

原创 orm工具saveOrUpdate()操作设计思路

当我们手写一个orm工具库的时候,都希望尽可能降低API的使用难度,合并更新和插入操作,那么我们应该如何设计saveOrUpdate操作呢?典型地,本文介绍几种设计思路。

2024-02-28 10:31:18 927

原创 游戏服务之会话管理

游戏服务器 Session(会话)是指在游戏服务器和客户端之间建立的一个临时的连接。它可以用于存储和管理用户的游戏状态和信息。从架构的角度看,客户端代码不应该依赖于具体的实现。为了框架使用者方便切换socket实现,我们应该抽离接口与实现,为Netty和Mina的会话接口做高层次的抽象。

2024-02-27 22:37:29 377

原创 一文了解游戏从立项到发行的流程

本文对游戏各个部门的职能做详细的介绍,并对游戏从立项到研发、发布做详细的说明。

2024-02-27 17:33:53 461

原创 分布式匹配服

分布式匹配服,是指将游戏的匹配功能分布到多台服务器上,并采用分布式架构实现的服务。它的主要作用是为玩家提供快速、稳定的全服匹配服务。

2024-02-27 14:51:35 333

原创 合服工程相关介绍

如今的游戏服务器运营策略一般采用“滚服模式”。“滚服模式”免不了对旧服务器进行合区,本文将从代码角度讨论合服的两种项目结构。

2024-02-26 15:39:54 107

原创 跨服战斗服

跨服战斗服,是指在多个服务器之间进行跨服操作的一种游戏模式。在跨服战斗服中,玩家可以与其他区服玩家进行交流和对战,享受不同服务器的游戏内容和社交体验。从软件开发来说,战斗服跟普通游戏服共享同一份代码,只是启动参数不同。从游戏架构与运维来说,战斗服的设计可分为两种方式。

2024-02-26 10:25:42 123

原创 游戏服务器业务线程模型探究

游戏服务器业务线程模型是指在游戏服务器中,如何组织和管理线程来处理游戏业务逻辑,尽可能减少不必要的锁竞争。以下介绍几种常见的游戏服务器线程模型。

2024-02-25 18:36:18 156

原创 游戏配置内存“瘦身”策略

​游戏配置数据绝对是游戏服务器进程的内存大头,有些游戏服务器单纯数据配置的容量就超过一个G。因此,这部分内存优化也就放在首要位置了。本文将详细介绍四种方式方法来降低游戏服务器的内存使用量,并阐述每种方法的优缺点。

2024-02-25 16:27:04 402

原创 数字签名在游戏里的应用

数字签名是一种电子形式的签名,用于验证数字文档、消息或交易的真实性和完整性。它是基于公钥加密技术,通过使用发送者的私钥来签名文档,然后使用发送者的公钥验证签名的正确性。数字签名不仅能证明信息没有被篡改,也能证明信息的发送者是真实的。数字签名在游戏里也有重要作用。

2024-02-23 15:58:00 238

原创 游戏配置二级缓存一致性问题解决方案

游戏服务器进程在启动的时候,一般会把所有策划配置数据加载到内存里,将主键以及对应的记录存放在一个HashMap容器里,这称为一级缓存。部分功能可能还需要缓存其他数据,这些称为二级缓存。本文针对热更新配置的时候出现的二级缓存状态不一致问题,提出解决思路。

2024-02-21 23:31:02 494

原创 服务器进程如何降低内存

随着技术不断进步,生产成本逐渐下降,市场上的竞争变得更加激烈,服务器内存的价格也随之降低。相比于cpu资源,内存的成本还是略低一等。但对于游戏服务器少则上千,多则上万的进程数量而言,如果每个进程的内存降低1G的话,节省的资源还是很可观的。那么,游戏服务器的内存优化有哪些措施呢?

2024-02-21 08:32:38 222

原创 组件化游戏框架设计

因为独立,所以它可以自由组合,亦可随意替换其中一个组件,并不会影响整体。目前游戏项目研发的过程中,经常将基础框架代码与业务代码融为一体,后期很难对底层代码进行自由组合,也很难被别的项目组进行重复利用。jforgame框架基于组件化设计,提供游戏项目的大部分组件,组件之间通过接口进行通信。为了最大限度重用代码,减少重复造轮子造成的人力及时间成本,让新项目更关注于业务层次上的开发,而不用过度关注基础组建的搭建,,能够以最低的开发成本搭建游戏服务器框架,可以提高软件的可拓展性,可维护性,可重用性。

2024-02-20 20:21:29 289

原创 socket与rpc的区别

跨服玩法是游戏的基本功能,其技术本质其实是跨进程通信。本文针对socket与rpc两种方式进行对比,并从游戏开发的角度给予选择意见。

2024-02-20 18:05:39 1566

原创 为何重复造轮子

项目本身存在开源组件,但开发团队还是选择重新手写一套组件库或框架的情况,这在软件业界比比皆是。本文简单讨论下重复造轮子的几点原因。

2024-02-17 11:25:29 353

原创 Why Not Http?

游戏服务器开发主要是基于socket,很少采用http。

2024-02-16 21:05:30 678

原创 游戏服务器解决什么问题

对于一款网络游戏,游戏服务器主要解决三个方面的问题。一是移动设备与服务器之间的数据通信,二是游戏规则配置及业务逻辑处理,三是玩家数据落地。

2024-02-16 17:19:32 452

原创 rpc回调的几种设计方式

传统的http是基于请求-相应模式。也就是说,客户端(浏览器)主动发起请求,服务器才会给予返回值。类似于http,RPC也是一种请求-响应模式。本文主要是探讨rpc回调函数的三种设计模式。

2021-06-16 23:19:51 2609 4

Java哲学家就餐GUI演示

java就哲学家就餐问题进行GUI演示,包含代码+资源,可直接运行

2024-02-27

并发题库 (含参考答案).md

52道java常用的并发面试题目,包含答案。

2021-02-02

空空如也

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

TA关注的人

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