![](https://img-blog.csdnimg.cn/direct/0feb08766f5d441aa733d84c39a8dfc2.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
java
文章平均质量分 84
以实战为基础,介绍java相关的知识与应用
jforgame
技术爱好者,资深服务端开发,对游戏服务器开发有深入的研究。开源游戏服务器框架https://github.com/kingston-csj/jforgame
展开
-
Lombok一文通
Lombok是一种工具库,它提供了一组注解,用于简化Java代码的编写。它的主要目标是通过自动生成代码来减少样板代码的数量,从而提高开发人员的生产力。本文主要介绍Lombok的原理,以及对常用注解的使用说明。原创 2024-06-01 10:00:00 · 834 阅读 · 0 评论 -
SpringMvc文件上传下载案例
文件上传下载功能是web项目最基础的功能,本方演示如何使用ElementPlusUI组件和SpringMVC演示文件上传下载功能。原创 2024-04-15 11:34:31 · 442 阅读 · 1 评论 -
常见的orm框架比较
ORM(对象关系映射)框架是一种将数据库和对象模型之间建立映射关系的技术。它可以将数据库表的记录映射为对象的属性,并提供一系列的API来进行数据库的增删改查操作。本文对Java业界常用的orm框架进行分析原创 2024-04-10 19:56:24 · 826 阅读 · 0 评论 -
Maven发布开源框架到远程仓库
当你写了一个自我感觉良好的开源工具希望给他人分享,如果只是在github等网站进行公布之外,用户使用起来还不是很方便,特别是当你提供是特定领域的基础工具。你还可以把它部署到中央仓库,这样别人使用就会方便很多。本文主要介绍如何使用maven发布依赖到中央仓库。原创 2024-03-22 18:46:16 · 1882 阅读 · 0 评论 -
使用动态日志简化开发时间
游戏程序日志,无论是对于开发环境,还是生产环境,都有着非常重要的作用。即是研发人员排查bug的利器,也是运营团队分析游戏内容的数据依据。本文主要演示log4j,log4j2,logback三种日志系统如何创建动态日志。原创 2024-03-19 21:58:07 · 377 阅读 · 0 评论 -
使用maven打生产环境可执行包
程序打包的主要目的是将项目的源代码、依赖库和其他资源打包成一个可执行的文件或者部署包,方便程序的发布和部署。本文演示如何使用maven进行程序打包。原创 2024-03-11 15:01:48 · 935 阅读 · 0 评论 -
使用GitHub API 查询开源项目信息
GitHub API 是一组 RESTful API 接口,用于与 GitHub 平台进行交互。通过使用 GitHub API,开发人员可以访问和操作 GitHub 平台上的各种资源,如仓库、提交记录、问题等。本文使用httpclient工具进行开源项目信息查询,并使用jackson工具对查询结果进行反序列化。原创 2024-03-04 10:13:53 · 1702 阅读 · 0 评论 -
如何将java程序打包成可执行文件
很多时候,我们需要把编写好的java代码传给其他人使用。大部分计算机都是没有java运行环境的,本文介绍两种方式来打包可执行程序。原创 2024-03-01 10:53:43 · 874 阅读 · 0 评论 -
rpc回调的几种设计方式
传统的http是基于请求-相应模式。也就是说,客户端(浏览器)主动发起请求,服务器才会给予返回值。类似于http,RPC也是一种请求-响应模式。本文主要是探讨rpc回调函数的三种设计模式。原创 2021-06-16 23:19:51 · 2528 阅读 · 4 评论 -
游戏服务端框架之自定义orm持久化工具(二)
游戏服务端框架之自定义orm持久化工具这篇文章,实现了一个简易的ORM框架,可以满足日常的开发需求。但仍然有优化的空间,以便更适应游戏服务器的应用场合。本文继续对orm工具做进一步的优化改善。原创 2021-02-11 23:55:07 · 419 阅读 · 0 评论 -
一文彻底理解线程死锁
当多条线程以不同的顺序抢占同步资源的时候,就有可能发生死锁。可通过jstack分析堆栈信息或者采用JConsole工具来帮助我们快速找到发生死锁的根源。原创 2015-08-12 20:04:16 · 9989 阅读 · 2 评论 -
Java实现数据劫持——监听属性变更
目录背景JS数据劫持Java数据挟持使用jdk的PropertyChangeSupport实现属性监听使用Cglib实现属性监听背景java在使用JavaBean的时候,有时我们需要监听属性的变更。例如在访问bean的getter方法,或者调用bean的setter方法时,进行拦截。在不对现有的所有代码进行入侵修改的前提下,有什么方法优雅解决这个问题呢?JS数据劫持JS的“数据劫持”提供了一种机制,允许程序对对象数据的访问与修改之前进行拦截。Vue能够在修改模型...原创 2021-01-09 12:58:29 · 3181 阅读 · 1 评论 -
游戏服务器框架之跨服(二)
rpc框架的优势直接使用rpc框架来搭建跨服,我们就无需考虑跨服链路的建立,通信数据编解码,方法回调等底层问题。手写跨服通信rpc的本质其实就是跨服通信,底层是使用socket来进行数据传输的。所以我们也可以使用socket来手写一个跨服通信。服务器与服务器之间点对点的通信,其实类似于游戏客户端与游戏服务器通信。不同的是,游戏客户端与服务器属于外部网络通信,需要走公共ip,是不安全的链接;而服务器与服务器的通信,属于内部通信,可以直接用内网ip进行通信。实现跨服通信,我们需要解决以下问题:注册原创 2020-12-19 22:08:47 · 1202 阅读 · 1 评论 -
游戏服务端之使用JMX监控游戏进程
游戏服务器运行过程中,我们希望能够对游戏里各种资源进行监控。比如,查看在线玩家总人数,查看内存使用情况,统计请求消息数量等等。这种问题归结起来就是,我们希望查看游戏进程的内存数据。本文将介绍一种黑科技(JMX),让监控游戏服务器更加方便快捷。原创 2017-02-26 13:32:08 · 1604 阅读 · 0 评论 -
hashmap死循环示例及检测方法
hashmap属于线程不安全容器,在并发环境有可能发生死循环。本文将模拟死循环出现的场景,再结合jstack说明如何一步步定位出现死循环的代码。原创 2016-08-13 16:39:27 · 6789 阅读 · 0 评论 -
java游戏服务器之使用Javascript脚本
JavaScript,一开始定位为浏览器表单验证的“玩具语言”,发展到如今,却能胜任各种舞台。nodejs,es6等等,奠定了其作为后端语言的地位。在JVM里,我们也可以直接使用javascript代码,因为jdk已默认绑定其实现。由于拥有动态语言灵活的特点,我们可以用来作很多有趣的事情。在游戏服务端开发,我们越来越多可以看到它的身影。下面我们就来看下javascript在游戏服务器里的应用。原创 2018-05-18 23:05:04 · 1101 阅读 · 3 评论 -
类扫描器获取全部子类或接口的全部实现
实现类扫描器,允许扫描接口的全部实现类,父类的所有子类,带有注解的所有类。原创 2015-08-09 18:38:28 · 23362 阅读 · 3 评论 -
多线程处理哲学家就餐问题(GUI动态演示)
哲学家就餐是一个经典的思考问题,旨在探讨资源竞争和合作的问题。本文结合Java的多线程机制,以GUI形式动态演示解决线程资源竞争问题。原创 2015-08-30 18:39:33 · 8360 阅读 · 4 评论 -
细数jdk库的四宗罪
众所周知,jdk库非常庞大,有非常多精心设计的工具可以拿来用;而且,jdk版本的向下兼容性也做得非常好,升级版本对旧项目来说没多大困难。由于这两点原因,jdk不可避免地存在一些设计上的缺陷。为了保障旧项目开发的利益,这些设计缺陷只能随着众多版本被继承下来。个人总结了一下JDK设计里出现的“四宗罪”,算是一种反面教材,在平时自己的开发设计上应该避免。原创 2017-01-18 11:55:57 · 1196 阅读 · 0 评论 -
Netty网络聊天室之会话管理
浏览器第一次与服务器建立连接的时候,服务器就会自动为之分配一个Session。在我们的聊天室,也可以使用Session来判断用户是否经过登录验证,保存用户的各种信息,向客户端发送消息。这极大方便了程序对客户端的管理。原创 2017-08-05 16:36:08 · 12497 阅读 · 11 评论 -
游戏服务端框架之使用事件驱动解决业务高耦合
游戏里经常有这样的业务,当玩家触发某个动作时,有若干与之关联的业务也要一起执行。诸如这样场景,我们选择引入事件驱动模型来帮助我们解决业务代码耦合的问题。本文实现一个工具库,来解决监听器与事件多对多的关联问题。原创 2017-08-14 22:11:10 · 2325 阅读 · 1 评论