![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java服务器
文章平均质量分 81
河乐不为
个人独立博客:https://linshuhe1.github.io/
展开
-
《从零开始搭建游戏服务器》MySQL安装配置
一、下载资源: 到MySQL官网下载免安装版的MySQL包,或者直接点击此链接下载:mysql-5.7.17-winx64.zip 二、解压配置: 将上面下载的安装包解压到一个本地目录下,在得到的mysql-5.7.17-winx64文件夹目录下会有一个my-default.ini配置文件,将几个参数根据当前目录修改一下,要修改的参数有:basedir(...原创 2016-12-13 12:57:42 · 5464 阅读 · 0 评论 -
《从零开始搭建游戏服务器》项目发布到Linux环境
前言: 之前我们提及了如何使用Maven来创建、管理和打包项目,也简单过了一遍Linux中搭建Java开发环境的步骤,现在我们就开始将我们之前开发的项目demo发布到Linux环境下,并让它正常运行起来。发布思路:使用Maven将项目打包为.jar将项目的.jar和项目所有依赖的jar包都复制到Linux下创建项目启动脚本来启动项目准备工作:查询Linux系统机器的Ip地址:方原创 2017-03-24 17:31:40 · 12373 阅读 · 5 评论 -
《从零开始搭建游戏服务器》项目管理工具Maven
简介 什么是Maven?Maven是一个项目管理和综合工具,提供了开发人员构建一个完整的生命周期框架。 Maven使用标准的目录结构和默认构建生命周期,在多个开发团队环境时,Maven可以设置按标准在非常短的时间里完成配置工作,例如:创建报表、检查、构建和测试自动化设置。概况地说,Maven简化和标准化项目建设过程,增加可重用性并负责建立相关的任务。 (注:Maven项目的结构原创 2017-03-15 15:19:44 · 2336 阅读 · 0 评论 -
《从零开始搭建游戏服务器》优化——Jedis连接池
前言 在Java的开发中,遇到一些耗时的操作,我们通常会启动一个线程,让新建的线程来完成这个耗时操作而不至于影响主线程工作的正常进行,而当需要同时进行多个耗时操作的时候,就要相应地为其创建多个线程,但是这样显然会造成线程的浪费,所以我们采用了一个优化方案,那就是线程池,我们在需要获取线程实例时不直接进行new创建,而是从线程池ThreadPool中获取。 相同的思想在操作数据库的时候原创 2017-03-16 14:24:25 · 2006 阅读 · 0 评论 -
samba+Xshell连接Linux共享目录
引言:之前我们在Windows下建立共享目录,然后再Linux中去访问的步骤,那么反过来,假如此时Linux服务器处于远端(例如云服务器),那就需要在Linux系统下简历共享目录,然后再Windows下使用工具去访问了,通常使用Xshell来访问,接下来我们就来试一下这个操作过程。linux操作:需要安装一些必要的工具:ssh协议和sambalinsh@ubuntu:~$ sudo apt-get原创 2017-04-13 15:25:37 · 4883 阅读 · 1 评论 -
《从零开始搭建游戏服务器》 java与C#的protobuf序列化不兼容
引言:今天在联调Java服务器与Unity(C#编写)的客户端的网络协议数据,由于网络通信的核心数据是通过序列化之后的字节数组经过加密和压缩的结果,但是发现两者使用Protobuf协议序列化工具出来的结果是不同的(Java使用 Protostuff 工具,C#使用 Protobuf-net.dll 自带的 ProtoBuf 工具),现在Java序列化之后的字节数组长度要比C#序列化结果长得多。方案选原创 2017-06-15 15:01:09 · 2564 阅读 · 4 评论 -
《从零开始搭建游戏服务器》 网络数据压缩——Zlib算法
前言:关于压缩算法,其实有不少,例如:ZIP、RAR和bzip2等,这里我们举例使用的Zlib相较于前者都要简单一些,与ZIP、RAR等归档算法不同,它与bzip2更为接近。那么,下面我们就来尝试一下Zlip在C#和Java中的实现和数据交互:C#中加密Java中解密;又或者是Java中加密C#中解密,这也体现了Zlib的跨平台特性。C#方面:通常是指客户端,例如Unity中,可以使用此压缩方法来压原创 2017-06-08 15:46:15 · 3694 阅读 · 0 评论 -
《从零开始搭建游戏服务器》 序列化工具(最优版Protostuff)
前言:之前使用protobuf工具来解析表格数据和定制网络协议,但是为了网络安全和压缩数据大小,有时候需要对数据进行序列化,这就需要设计一个序列化工具类来完成序列化和反序列化的操作。原创 2017-06-10 12:50:06 · 6526 阅读 · 2 评论 -
《从零开始搭建游戏服务器》Netty导入创建Socket服务器
对于普通Web应用后端的开发,常常会借助一些成熟的框架,例如SpringMVC,游戏的服务器区别于此的特点是:游戏服务器需要有比较大的吞吐量,而且通常为Socket长连接,所以需要一个分布式架构。当前比较流行的网络通信框架都为NIO(非阻塞网络通信)框架,比较有代表性的有:Netty和Mina。 一、优势对比: Netty是由JBoss提供的Java开发框架,适用于开发高性原创 2016-12-20 20:25:42 · 14471 阅读 · 9 评论 -
《从零开始搭建游戏服务器》 Protobuf读取Excel表格数据
前言 在之前的博客中,我们已经尝试过了在C#环境下,使用Protobuf来序列化Excel表格,然后再代码中反序列化出表格数据【Unity3D —— protobuf 导excel表格数据】,如今我们在服务器假如要共用一套配置表格,当需要一个类似的导表和读表过程,接下来我就在原来博客的基础上稍加修改,完成这个需求。准备工作:为了方便起见,我直接复制了之前的一些工具,假如不了解的也可以直接在此原创 2017-03-29 10:31:20 · 4503 阅读 · 1 评论 -
Java中常见的类型转换
Java中常见的类型转换:1.Java enum枚举与int类型互转:假设枚举类型声明如下:/*** 状态枚举*/enum StateType{ Idle, //站立状态 Fight, //进攻状态 Dead, //死亡状态}enum->int: ordinal()方法:返回枚举值在枚举中的顺序int state = StateType.Idle.ord原创 2017-04-05 13:28:31 · 846 阅读 · 0 评论 -
《从零开始搭建游戏服务器》Linux开发环境配置
前言: 之前的开发工作一直是在Windows开发环境下进行的,但是正真发布和外网运营势必要发布到Linux环境下,而且有很多服务端的工具对于Windows系统的兼容性并不是非常完善,就像常用的Docker容器就只支持Linux系统,所以提前了解和部署Linux开发环境势在必行。一、准备工作:首先你需要一台安装Linux系统的机器,或者直接在Windows系统中安装虚拟机,这里我使用的就是虚拟原创 2017-03-21 20:06:22 · 24092 阅读 · 0 评论 -
《从零开始搭建游戏服务器》Java与Lua互相调用
前言: Lua是一种小巧的脚本语言,如今常用于游戏开发,特别是客户端开发,基本上都是基于Lua来实现热更新,在Unity开发中更有uLua(最新版改名为toLua)这样成熟的热更框架。这里我设想用Lua+Java来实现服务器的热更,不成熟的想法,这里想尝试一下Lua和Java如何互相调用。插件选择:假如引入第三方库,可以找到比较常用的两个选择:LuaJava和LuaJ,简单做一下对比:原创 2017-04-07 17:58:35 · 12695 阅读 · 0 评论 -
《从零开始搭建游戏服务器》架构和工具分析
一、前言: 在正式开始搭建框架和编写代码之前,我们首先需要在大脑里构建游戏服务器的蓝图,主要思考几个问题:1.一个完整的游戏需要划分为几个类型的服务器?2.选择哪种或者哪些(可能同时结合多种数据库使用)类型的数据库?3.使用什么网络通信框架和编解码(规则)工具?4.其他工具。二、概述:1.服务器分类: 对于性能要求较高、用户量较多的大型游戏类型,例如Moba或者MMO游原创 2016-12-17 15:12:49 · 16964 阅读 · 0 评论 -
《从零开始搭建游戏服务器》Eclipse和Tomcat安装配置
我选择用来进行服务器开发的语言是Java,开发流程更接近于JavaWeb,所以需要先为开发配置一个开发环境,需要配置的主要是Eclipse和Tomcat(Web工程的容器或管理工具)。一、资源下载:1.Eclipse:免安装,但需要先配置好JDK开发环境,而且要下载for JEE的版本,方便配置,我使用的是64位系统还有1.8.0的JDK,下载地址:eclipse-jee-neon-1a-win3原创 2016-12-15 16:08:13 · 7413 阅读 · 0 评论 -
最详细的Log4j使用教程
日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4j-1.2.17.jar,整个工程最终目录如下2、src同级创建并设置log4j.properties ### 设置###l转载 2016-12-20 11:46:05 · 1607 阅读 · 0 评论 -
Apache Commons-logging使用实例
Apache Commons-logging使用实例本文将介绍如何在程序中使用Apache Commons-loggingauthor: ZJ 07-3-17Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]1.Commons-Loggin简介Jakarta Commons Logging (JCL)提供的是一个日志(Log)接口(interfac转载 2016-12-20 12:26:31 · 1362 阅读 · 0 评论 -
简明 VIM 练级攻略
下文转自链接。由原作者陈皓译自《Learn ViM Progressively》,非常不错。 ——————————正文开始——————————你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。Better, Stronger, Faster.学习 vim 并且其会成为你最后一个使用的文本编辑器。没有比这个更好的文本转载 2017-01-16 16:06:34 · 691 阅读 · 0 评论 -
《从零开始搭建游戏服务器》内存数据库Redis
引言: 在服务器中,数据库是必不可少的部分,作为数据存取中心,有时候的系统的操作涉及到数据的快速读写,在这种情况下,我们通常不会中规中矩地直接读写像MySQL的持久性数据库的数据,因为像MySQL这一类关系型的数据库不管是查询或者是修改数据库的内容都需要通过冗长的检索过程,势必影响效率,所以我们通常会选择通过一个非关系型数据库(NoSQL)来在内存缓存数据并实现快速的数据读写操作,然后定时把内原创 2017-02-28 11:05:51 · 4476 阅读 · 0 评论 -
《从零开始搭建游戏服务器》使用Protobuf定义网络协议
引言: 之前我们说过使用Protobuff编解码方式来对网络通信数据进行编码,也就是可以用这种方式来定义通信协议,那么具体要怎么做呢?关于此工具的详细资料和使用操作可以参考我之前写过的博客:Unity3D —— protobuf网络框架准备工具:这里我就直接用之前编写的登录案例中的登录协议文件来进行本次案例的测试,工具下载地址如下:protobuf-java-2.5.0.zip,主要使用到的原创 2017-02-21 13:45:30 · 8569 阅读 · 0 评论 -
《从零开始搭建游戏服务器》自定义兼容多种Protobuf协议的编解码器
引言 通过上篇 《从零开始搭建游戏服务器》使用Protobuf定义网络协议 的实践之后,我们知道在设置ChannelPiple的handler时,只能设置一个解码器,即protobufDecoder,但是在实际的网络通信过程中,我们需要传输的数据类型必然有很多种,这就需要通过某个标识来帮助我们在进行数据解析时进行数据类型的判断。解决方案:方案一这是protobuf官方的一种实现方式,通过原创 2017-02-23 20:38:23 · 4073 阅读 · 0 评论 -
《从零开始搭建游戏服务器》Redis操作指令和Jedis工具
引言 上篇已经大致完成了redis的下载安装和简单的使用,接下来我们要真正地操作redis进行一些数据的增删改查操作,以及简便好用的Jedis工具。常用指令:1.增加或者修改已有数据的值:若此key对应的value不存在,则创建这个键值对,若已存在,则修改此key的value数值:set key value查询key是否存在:exists key当然还可以设置失效时间:set key t原创 2017-03-07 14:46:20 · 2080 阅读 · 3 评论 -
Maven 上手指南
引言最近开始学习 Spring Boot ,由于选用 Maven 作为构建工具,这也是 Java 后端开发常用的构建工具,当然也可以选用 Gradle ,Gradle 之前在 Android 项目中使用居多,但近期也渐渐有取代 Maven 的趋势,后续可能会专门再写一篇关于 Gradle 的使用。这里先大致了解 Maven 管理项目的一些基础知识,这里主要参考官方的文档。 Maven简...原创 2019-01-25 15:16:32 · 752 阅读 · 1 评论