摘要:
我们最开始做的游戏框架,多数都是client—>server—>db的模式,但是随着玩家数量的增加,一个server进程就会扛不住,需要多个进程服务于多个玩家。但是给定了不同进程的玩家,有可能需要交互,这就导致了client与server端的连接,有可能是o(1),但也可能是o(n)连接,o(n)的 阅读全文
摘要:
关于秒杀,第一反应都是实现起来比较复杂。难点在于:并发读+并发写+设计兜底方案的实现。 比如QQ,虽然数据量很大,但是多数的数据都是细粒度的数据查询,锁冲突比较少;但12306涉及到大量的读写操作,对可用性,高性能,数据一致都有要求。 在开始前,先说一些基本概念,通常互联网的应用包含了: nginx 阅读全文
摘要:
1.给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。 您可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例: 阅读全文
摘要:
一:索引的常见模型 1.哈希表(key-value)存储的数据结构 缺点:hash索引在做区间查询时,速度慢。 优点:hash索引很适用于等值查询的场景,比如memcached以及其他一些nosql引擎。 2.有序数组 优点:有序数组在等值查询和范围查询的场景中,性能都非常优秀。 如果仅仅看查询效率 阅读全文
摘要:
方案一:import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * created b 阅读全文
摘要:
想熟悉dubbo源码,首先要知道dubbo extensionLoader,而dubbo的这种扩展机制,是根据java spi衍生而来。 这是基础,但是我放在后面说明。 一:dubbo demo provider在启动过程中,主要做了: 1.暴露本地服务 2.暴露远程服务 3.启动netty 4.链 阅读全文
摘要:
假设我们用netty做服务,当接受到网络传输的码流,我们通过某种手段将这种传输数据解析成了熟悉的pojo,那这些pojo该如何进一步处理? 比如游戏中的抢购、场景业务等,对处理那种高并发的业务场景,如何保证数据的一致性? 1.悲观锁和乐观锁 悲观锁和乐观锁这种,大家立即会联想到数据库读写。但是我们仍 阅读全文
摘要:
package com.chen;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.AbstractQueuedSynchronizer;import java.util.concurrent.locks.C 阅读全文