• 等级
  • 276414 访问
  • 134 原创
  • 50 转发
  • 10201 排名
  • 443 评论
  • 374 获赞

数组平衡点算法

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

2018-11-01 09:40:25

人活着靠什么立本?

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

2018-10-31 17:18:14

http的keep-alive和tcp的keepalive区别

1、HTTP Keep-Alive 在http早期,每个http请求都要求打开一个tpc socket连接,并且使用一次之后就断开这个tcp连接。 使用keep-alive可以改善这种状态,即在一次TCP连接中可以持续发送多份数据而不会断开连接。通过使用keep-alive机制,可以减少tcp连接建立次数,也意味着可以减少TIME_WAIT状态连接,以此提高性能和提高httpd服务器的吞吐率(更少...

2018-10-28 14:48:20

【已解决】AbstractRoutingDataSource的determineCurrentLookupKey

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

2018-10-24 17:12:22

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

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

2018-10-23 20:56:58

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

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

2018-10-19 18:00:13

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

其实我一直很想写一篇文章来说明一下如何在idea中创建一个spring-boot项目的,但是由于找工作和换工作的时间一直耽搁到现在,趁今天晚上加班的时间,终于挤出半个小时来讲述如何在idea中创建spring-boot项目。 在上篇文章关于在《idea中搭建基于maven的ssm整合框架》得到读者的好拼反馈,但是由于spring配置使得spring的使用起来入门比较困难,所以有了 spring-b...

2018-10-18 21:30:06

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

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

2018-10-12 11:18:53

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

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

2018-10-10 12:14:49

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

引导:博主在跳槽之前在一家和腾讯合作的游戏厂商做手游服务器开发,在那学习到很多有关腾讯的开发规范和知识。此文的部分知识就是在那学习到的。 正文: 在分布式系统中,我们实现对临界资源加锁的方式不能像在独立进程中使用jdk自带的锁的方式进行加锁了。我们需要夸进程加锁,所以实现的是分布式事务锁。对于分布式事务锁实现的方案估计很多人都知道,有关于redis的,zookeeper的。 下面我们采用提问的方式...

2018-10-08 16:53:15

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

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

2018-10-01 16:18:25

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

导读: 天下大势,分久必合合久必分。软件也是一样。 微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来说一下微服务架构的特性。让我们学习微服务不在迷茫。 特性 1. 单一职责 微服务架构中的每个服务,都是具有业务逻辑的,符合高内聚、低耦合原则以及单一职责原则的单元,不同的服务通过“管道”的方式灵活组合,从而构建出庞大的系统。 2. 轻...

2018-09-25 14:03:14

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

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

2018-09-21 15:44:15

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

1:Zookeeper基础 安装zookeeper。当然,很多时候我们会在Windows上开发,所以,我们需要在本地搭建一个zookeeper环境。方便开发过程中的测试。 首先我们去Apache上下载zookeeper。https://zookeeper.apache.org/ 下载下来后解压得到如下文件 打开conf里面的zoo_simple.cfg ,拷贝一份,重新命名为zoo.cfg修改如...

2018-09-19 11:52:34

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

微服务是最新的架构风格,有望解决我们以前的架构风格所遇到的所有问题。就像其他风格一样,它也有自己的挑战。下面我们来讨论的问题是如何在保持服务尽可能自主的同时实现微服务之间的耦合。在这里,将描述四个选项,并在结论中选择一个明确最好的方式。 对我来说,微服务是一种自主服务,它对一项业务能力负全部责任。完整的职责包括演示,API,数据存储和业务逻辑。Autonomous是我的关键词,通过使服务自治,可以...

2018-09-19 10:16:40

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

简介:什么是RPC? RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。 RPC 可基于 HTTP 或 TCP 协议,Web Service 就是基于 HTTP 协议的 RPC,它具有良好的跨平台性,但其性能却不如基于 TCP 协议的 RPC。会两方面会直接影响 RPC 的性能,一是传输方式,二是序列化。 Net...

2018-09-18 12:34:43

Apache Curator实战

Apache Curator入门实战 Curator是Netflix公司开源的一个Zookeeper客户端,与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。 1.Zookeeper安装部署 Zookeeper的部署很简单,如果已经有Java运行环境的话,下载tarball解压后即可运行。 [root@vm Temp]$ wge...

2018-09-17 17:06:16

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

要实时就用同步,要吞吐率就用异步。 同步调用 流程略 实现负载均衡:连接池中建立了与一个RPC-server集群的连接,连接池在返回连接的时候,需要具备负载均衡策略。 实现故障转移:连接池中建立了与一个RPC-server集群的连接,当连接池发现某一个机器的连接异常后,需要将这个机器的连接排除掉,返回正常的连接,在机器恢复后,再将连接加回来。 实现发送超时:因为是同步阻塞调用,拿到一个...

2018-09-13 17:20:12

mybatis异步操作数据库

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

2018-09-13 10:54:43

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

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

2018-09-05 16:01:08

博客专家

twjitm

手游服务器研发工程师。有参与腾讯射击类型手游《雷霆 战机》.现在主要研究MMO游戏服务器开发。研究分布式和微服务在游戏服务器中的应用。 ...展开 收起
关注
  • 计算机软件/Java游戏服务器开发工程师
  • 中国 北京 海淀区
奖章
  • 博客专家
  • 专栏达人
  • 持之以恒
  • 1024勋章