自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

被世界遗弃的江的博客

我正在城楼观山景, 耳听得城外乱纷纷。

原创 Netty游戏服务器实战开发(11):Spring+mybatis 手写分库分表策略(续)

在大型网络游戏中,传统的游戏服务器无法满足性能上的需求。所以有了分布式和微服务新起,在传统web服务器中,我们保存用户等信息基本都是利用一张单表搞定,但是在游戏服务器中,由于要求比较高,我们不能存在大表操作,即分库分表策略。在以前的文章中有关介绍分库分表的,下面我们来实战一下,首先我们做一个这样的...

2018-10-23 20:56:58 598 0

原创 springMVC +mybatis+mysql多套数据源配置

导读- 在项目中可能有时候我们需要配置多套数据源,网上巴拉巴拉半天,都讲得太潦草了,对于第一次搞的人来说确实有点头疼,与其说在网上瞎找,还不如认真的自己动手操练一波,下面我就来介绍一下mybatis实现多套数据源的方式。 刚开始我也是和大家一样,利用mybatis的my...

2018-03-13 11:53:16 9424 22

原创 idea中搭建基于maven的ssm整合框架

自从进入一家游戏公司以后,就抛弃了eclipse转战于idea,刚开始一直很不习惯,但是用了一周以后,在打开eclipse的时候,有一种想卸载掉的冲动,好吧,我是觉得idea比eclipse好用,关于它们的战争我们就不讨论了,下面介绍一下idea中怎么搭建ssm基于maven的整合框架吧。 ...

2017-08-26 15:58:03 15726 8

原创 深入学习理解(8):java-ThreadLocal详解

ThreadLocal是什么?有什么用?怎么用? 1。ThreadLocal是什么 带着这样的问题我们来学习一下java并发编程中的一个重要的角色分子ThreadLocal。 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程...

2017-02-23 16:05:20 4865 7

原创 每天一点shell(1) :判断文件或者文件夹是否存在

shell 判断文件或者文件夹是否存在 #shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d "/myfolder" ]; then mkdir /myfolder fi #shell判断文件,目录是否存在或者具有权限 fold...

2019-12-14 15:47:24 65 0

原创 Netty游戏服务器实战开发(9):利用redis或者zookeeper实现3pc分布式事务锁(三)。支撑腾讯系列某手游百万级流量公测

导读:在编写前面两篇文章的时候,博主其实已经把这个项目做完了,应为不可能一边写文章,一遍写项目。所以我都是把项目做完之后然后通过自己测试之后确保没有问题就来编写文章。 在上面的介绍中我们已经了解到如何利用redis或者是zookeeper来实现分布式事务锁,也了解了分布式所务锁的基本原理已经2pc...

2019-09-25 12:17:09 694 0

原创 Netty游戏服务器实战开发(8):利用redis或者zookeeper实现3pc分布式事务锁(二)。支撑腾讯系列某手游百万级流量公测

导读:在上篇文章中介绍了分布式事务项目的基本原理和工程组件,我们了解到了分布式事务的理论知识。处于实战的经验,我们将理论知识使用到实际项目中。所以我们将利用idea 来实战我们的项目。 回到正文: 在上篇文章中我们已经把需要的准备工作做好了。现在我们需要将如何实现分布式3pc ...

2019-09-25 12:16:55 536 0

原创 Netty游戏服务器实战开发(15):游戏服务器中的数据缓存

导读 游戏服务器缓存作用非常重要:很大部分决定游戏服务器性能问题。 缓存的作用 在很多游戏服务器开发过程中,有需要提前加载到内存中的数据,有不需要加载到内存中的数据,当然,加载到内存中的数据可分为字典数据和部分玩家数据。比如:配表信息,玩家查询信息,玩家基础信息等。 通常我们使用redis作为一个...

2019-08-31 15:21:10 1253 5

原创 Netty游戏服务器开发实战(14):游戏推送的设计

导读- 本篇主要介绍如何实现游戏服务器推送消息到客户端或者服务器和服务器之间进行消息推送,结合Netty组件,设计一个具有推送功能的高性能游戏服务器框架。 什么是推送?为何需要推送? 首先,我们要明白什么是推送?推送,就是把服务器消息或者某个客户端的消息发送给另外一个客户端或者是服务器,一般对...

2019-05-25 10:43:18 731 0

原创 Netty游戏服务器实战开发(13):游戏中的配表规则

在一个游戏开发过程中,少不了和策划,客户端等同学打交道。应为一个完整的游戏开发团队,有如下人员组成: 1:服务器开发人员 2:客户端开发人员 3::策划 4::美术 5:其他 其中还会分很多细节,比如策划可以分为场景策划,数值策划,玩法策划等等,但是作为一个策划人员不仅能够有好的游戏思...

2019-03-03 23:06:13 882 0

原创 [已解决] java.net.ConnectException: Connection refused: no further information

程序抛出这个异常的原因多数是因为在此[host:port]没有监听,那么该如何解决这个问题呢,如下 第一个要做的是看你的host和port是否写错了,如 [ 127.00.1:8080 ] 第二个要看你的server是否真正的运行起来了,比如server在启动过程某些组件加载异常,会导致服务启动不...

2018-12-27 11:38:01 4264 0

原创 Netty游戏服务器实战开发(12):线程任务组件开发

Netty游戏服务器实战开发(11):

2018-12-15 11:51:48 691 0

转载 kafka 创建消费者报错 consumer zookeeper is not a recognized option

在做kafka测试的时候,使用命令bin/kafka-console-consumer.sh --zookeeper 192.168.0.140:2181,192.168.0.141:2181 --topic test --from-beginning启动消费者,发现一只报错consumer zo...

2018-11-17 10:36:25 205 0

原创 数组平衡点算法

去参加一场面试,最后面试官让写一个算法,当时我已经给出思路,可能手写的代码有点问题,面试官就死死的盯着我说,回去等通知吧。呵呵。 /** * 数组平衡点 * * @param array 数据源 * @return 返回平衡点,没有返回-1 可能存在多个 ...

2018-11-01 09:40:25 325 0

原创 人活着靠什么立本?

人活着靠什么立本? 忠诚 忠诚 敬业 积极 负责 效率 结果 沟通 团队 进取

2018-10-31 17:18:14 422 0

转载 http的keep-alive和tcp的keepalive区别

1、HTTP Keep-Alive 在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。 使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接...

2018-10-28 14:48:20 301 0

原创 【已解决】AbstractRoutingDataSource的determineCurrentLookupKey

在分布分表开发过程中,我们常常利用spring整合开发,在上篇文章中我们学习了如何使用分库分表策略,在测试过程中,博主偶然发现 public class DynamicDataSource extends AbstractRoutingDataSource { Logger logger ...

2018-10-24 17:12:22 4110 2

原创 Netty游戏服务器实战开发(10):Netty结合kafka实现分布式消息队列

在分布式游戏服务器系统中,消息处理队列主要解决问题就是解耦系统中的业务,使得每个系统看起来功能比较单一,而且解决一些全服数据共享等问题。 通常我们知道kafka是作为消息队列比较火的一种方式,其实还有(Active MQ,Rabbit MQ,Zero MQ)个人觉得kafka比较好用点,哈哈,习惯...

2018-10-19 18:00:13 4144 10

原创 idea中搭建基于maven的spring-boot项目

其实我一直很想写一篇文章来说明一下如何在idea中创建一个spring-boot项目的,但是由于找工作和换工作的时间一直耽搁到现在,趁今天晚上加班的时间,终于挤出半个小时来讲述如何在idea中创建spring-boot项目。 在上篇文章关于在《idea中搭建基于maven的ssm整合框架》得到读者...

2018-10-18 21:30:06 6315 1

原创 深入学习理解(9):java:AbstractQueuedSynchronizer详解

导读: 前一阵子在写轻量级RPC框架的时候,由于系统中所需要用异步RPC模型,由于系统所要求性能比较苛刻,所以基本所有耗时的操作都会采用异步调用的方式:比如异步读写DB,IO,更可能redis的操作都需要异步(主程说了,我咋办,做呗)。 基于Netty的轻量级rpc框架已经开源,想去了解的小伙...

2018-10-01 16:18:25 120 0

原创 微服务架构设计基础-(2):微服务架构的特性

导读: 天下大势,分久必合合久必分。软件也是一样。 微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来说一下微服务架构的特性。让我们学习微服务不在迷茫。 特性 1. 单一职责 微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低...

2018-09-25 14:03:14 178 0

原创 编程实现一个比较任意两个软件版本号大小的函数 2018.11.01(更新)

如 1.2.3a 和 1.2.4b 我写的方法,各位大大还有啥好的办法留言一下. /** * * 编程实现一个比较任意两个软件版本号大小的函数,如 1.2.3a 和 1.2.4b * 当opt1大于opt2时返回true,当opt1小鱼opt2时返回false ...

2018-09-21 15:44:15 3223 0

原创 Netty游戏服务器实战开发(6):Netty整合Zookeeper实现分布式服务发现与注册

1:Zookeeper基础 安装zookeeper。当然,很多时候我们会在Windows上开发,所以,我们需要在本地搭建一个zookeeper环境。方便开发过程中的测试。 首先我们去Apache上下载zookeeper。https://zookeeper.apache.org/ 下载下来后解...

2018-09-19 11:52:34 3379 6

原创 微服务架构设计基础-(1)微服务方法论和文化

微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来讨论的问题是如何在保持服务尽可能自主的同时实现微服务之间的耦合。在这里,将描述四个选项,并在结论中选择一个明确最好的方式。 对我来说,微服务是一种自主服务,它对一项业务能力负全部责任。...

2018-09-19 10:16:40 479 0

原创 Netty游戏服务器实战开发(5):利用Netty打造轻量级RPC组件

简介:什么是RPC? RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。 RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能...

2018-09-18 12:34:43 1888 2

转载 Apache Curator实战

Apache Curator入门实战 Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。 1.Zookeeper安装部署 Zookeeper的部署很简单,如果已...

2018-09-17 17:06:16 646 0

转载 分布式 - RPC同步和异步说明

要实时就用同步,要吞吐率就用异步。 同步调用 流程略 实现负载均衡:连接池中建立了与一个RPC-server集群的连接,连接池在返回连接的时候,需要具备负载均衡策略。 实现故障转移:连接池中建立了与一个RPC-server集群的连接,当连接池发现某一个机器的连接异常后,需要将这个机器的连...

2018-09-13 17:20:12 3758 0

原创 mybatis异步操作数据库

很多时候我们需要用mybatis来做数据库orm,基于mybatis 优秀的基因,我们能够轻松的搞定数据库的orm。 但是mybatis一般的使用方法都是一个同步查询,主线程调用数据库查询操作,等待返回结果,这样在高并发网络情况下代价是很高的。所以我们需要封装一套提供异步查询回调机制。 异步操...

2018-09-13 10:54:43 3917 0

转载 如何优雅地用Redis实现分布式锁

如何优雅地用Redis实现分布式锁 锁是一个很重要也很基础的概念,锁可以看做是多线程情况下访问共享资源的一种线程同步机制。这是对于单进程应用而言的,即所有线程都在同一个JVM进程里的时候,使用Java语言提供的锁机制可以起到对共享资源进行同步的作用。如果分布式环境下多个不同线程需要对共享资源进行...

2018-09-05 16:01:08 215 0

转载 Connection reset by peer的常见原因

Connection reset by peer的常见原因: 1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭; 如果知道实际连接服务器的并发客户数没有超过服务器的承载量,则有可能是中了病毒或者木马,引起网络流量异常。可以使用netstat -an查看网络连接情况。 2...

2018-08-28 18:11:24 6593 0

原创 Netty游戏服务器实战开发(4):自定义消息池化处理

通过上篇《Netty实战开发(3):自定义消息》我们都知道,客户端发送过来的消息我们服务器通过自定义编解码实现解析每条消息,并且做对应的处理,但是上篇介绍的重点是消息的编解码,接下来我们介绍消息的处理,并且利用线程池化技术实现消息队列处理。 首先我们来复习一下线程池模型。...

2018-08-26 15:39:06 780 1

原创 给你一个小于 60 位的整数 p ,求大于 p 的最小的数 p1 ,使得 p1 中包含数 2333 。

哈哈,没事瞎写写算法,忘大家来修复呀。 题目:给你一个小于 60 位的整数 p ,求大于 p 的最小的数 p1 ,使得 p1 中包含数 2333 。 public class Test { public static void main(String[] args) { ...

2018-08-10 11:04:23 505 0

原创 Netty游戏服务器实战开发(3):自定义私有协议栈

自定义私有协议栈开发,其实就是自己封装一套符合自定义数据包结构的编码器和解码器,从而满足我们的业务需求。 通常我们数据包拆分,一部分为包头,一部分为包体,一个数据包就有两部分构成。 如图所示 对于数据包,我们进行细化,每个部分都有很多基本元素组成,利用这些基本元素,我们能够实现通过解析数...

2018-07-31 14:50:40 549 3

原创 Ubuntu 16.04 x64搭建GitLab服务器

很多公司管理项目代码可能用svn,若是用过git后估计就不想回去用svn了,关于它们谁更好用,在这我们就不讨论了,我们来看一下如何在自己的服务器搭建一台gitlab服,来管理相关代码。 本文主要记录在Ubuntu 16.04操作系统中搭建GitLab服务器的操作记录,以下是操作步骤(主要参考资料...

2018-07-27 13:58:54 147 0

原创 linux 强大的 ps命令

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。 选项 ...

2018-07-17 11:32:52 1107 0

原创 idea 创建maven子项目报错

错误日志 Failed to create a Maven project: '******/pom.xml' already exists in VFS 产生原因: 在创建maven子项目的步骤中,需要手动拼接父项目和子项目路径

2018-07-08 18:36:35 278 0

原创 ZooKeeper分布式锁

分布式锁的由来 在程序开发过程中不重点内容得不考虑的就是并发问题。在java中对于同一个jvm而言,jdk已经提供了lock和同步等。但是在分布式情况下,往往存在多个进程对一些资源产生竞争关系,而这些进程往往在不同的机器上,这个时候jdk中提供的已经不能满足。分布式锁顾明思议就是可以满足分布式情...

2018-07-03 18:15:38 170 0

转载 exclusions来进行排除依赖

xclusions 但依赖调节并不解决所有问题,我们还需要exclusions来进行排除依赖。 例如这样一个情况,工程中引入了A,A依赖B,但是B的版本过旧。 此时可以使用exclusions排除该传递性依赖,并显示声明一个最新版本的B依赖。 比如这样: &l...

2018-07-02 11:28:29 3740 0

转载 Java中Error与Exception的区别

Error类和Exception类都继承自Throwable类。 Error的继承关系: Exception的继承关系: 二者的不同之处: Exception: 1.可以是可被控制(checked) 或不可控制的(unchecked)。 2.表示一个由程序员导致的错误。 3.应该在应...

2018-06-28 18:31:39 117 0

转载 linux重定向总结:如何将shell命令的输出信息自动输出到文件中保存

在做批量实验室,例如跑批量MR的作业,我们会写好shell脚本,然后启动脚本,等所有作业执行完再去看结果,但是这些执行时的信息如何保存下来到文件中呢?下面这个命令可以完成这个任务。 sh batchjob.sh 2>&1 | tee mylog.log   其中s...

2018-06-28 14:40:11 646 0

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