自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gonefuture的学习博客

不断地学习,不断地发现!

  • 博客(20)
  • 收藏
  • 关注

原创 网游服务器架构变迁

一、早期网游服务器 网游刚出现的时候,游戏服务器和小Web服务器没有区别。 从《传奇》的时代开始,游戏服务器内部就出现了游戏逻辑,既能用于同步每个玩家看到的世界,又能让逻辑与客户端分离,避免早期的网络游戏那种毫无防范的逻辑体系(对外挂防御能力为0)。这种服务器在客户端通过某种形式验证登陆以后,就和服务器通过TCP直接连接了。这种服务器的承载能力不高。靠多开服务器来弥补单...

2018-08-28 10:42:47 311

原创 暗黑类游戏的设计概念

《暗黑破坏神》已面世20年了,但是它的带来的游戏设计概念依旧在影响着现在很多游戏。游戏设计总览 暗黑破坏神是一款角色扮演游戏,其中玩家将会创建一个独立的角色并引领他在地牢副本中去尝试寻找和消灭暗黑破坏神——恶魔本质。游戏进程都将发生在一个四方之三等距的视角(六十度倾斜的游戏画面视角,也有称为四五度视角),由棱形广场平台组成的空间,如图。 整个游戏由一个基于回合的系统开展,玩家...

2018-08-28 10:38:48 1881

原创 零碎的知识点-5

零碎的知识点-5AOP的实现方式AOP是Aspect Oriented Programming的缩写,意思是面向方面编程。Java可以通过三个层面来实现AOP:在编译期修改源代码在运行期字节码加载前修改字节码 0在运行期字节码加载后动态创建代理类的字节码各种实现机制的比较: 类别 机制 原理 优点 缺点 实现的代表 静态AO...

2018-08-27 18:19:20 179

原创 《Java并发编程实战》-10

第11章 性能与可伸缩性11.1 对性能的思考11.1.1 性能与可伸缩性 可伸缩性指的是:当增加计算资源时(例如CPU、内存、存储容量或I/O带宽),程序的吞吐量或处理能力能相应地增加。11.1.2 评估各种性能权衡因素 避免不成熟的优化。首先使程序正确,然后提高运行速度–如果它还运行得不够快。以测试为基准,不要猜测。11.2 Amda...

2018-08-21 18:05:56 113

原创 《Java并发编程实战》-9

第10章 避免活跃性危险10.1 死锁哲学家问题10.1.1 锁顺序死锁 如果所有线程以固定的顺序来获得锁,那么在线程中就不会出现锁顺序死锁问题。10.1.2 动态的顺序死锁通过锁顺序来避免死锁10.1.3 在协助对象之间发生的死锁如果在持有锁时调用某个外部方法,那么将出现活跃性问题。在这个外部方法中可能会获取其他锁(这可能会产生死锁),或...

2018-08-21 18:04:25 365

原创 《Java并发编程实战》-8

图形用户界面应用程序9.1 为什么GUI是单线程的9.1.1 串行时间处理9.1。2 Swing中的单线程封闭机制 Swing的单线程规则是:Swing中的组件以及模型只能在这个事件分发线程中进行创建、修改以及查询。9.2 短时间的GUI任务模型对象与视图对象的控制流Created with Raphaël 2.1.2EDT鼠标点击动作事件...

2018-08-21 18:01:02 133

原创 《Java并发编程实战》-7

线程池的使用8.1 在任务与执行策略之间的隐形耦合并非所有的任务有些任务需要明确地指明执行策略,包括:依赖性任务使用线程封闭机制的任务。对应时间敏感的任务。使用ThreadLocal的任务 在一些任务中,需要拥有或排除某种特定的执行策略。如果某些任务依赖于其他的任务,那么会要求线程池足够大,从而确保它们依赖任务不会被放入等待队列中或者被拒绝,而采用线程封闭机制的任...

2018-08-21 18:00:10 145

原创 《Java并发编程实战》-6

取消与关闭行为良好的软件能够完善地处理失败,关闭和取消等过程。7.1任务取消取消某个操作的原因:用户请求取消有时间限制的操作应用程序时间错误关闭7.1.1 中断在Java的API或语言规范中,并没有将中断与任何取消语言关联起来,但实际是激昂,如果在取消之外的其他操作中使用中断,那么都是不合适的,并且很难支撑起更大的应用。public clas...

2018-08-21 17:58:59 113

原创 《Java并发编程实战》-5

《Java并发编程实战》-56.1.1 串行地执行renwu6.1.2 显式地为任务创建线程6.1.3 无限制创建线程的不足线程生命周期的开销非常高。资源消耗。稳定性。6.2 Executir框架6.2.1 示例:基于Executor的Web服务器6.2.2 执行策略 每当看到new Thread(runnable).start(...

2018-08-21 17:58:02 146

原创 零碎的知识点-4

零碎的知识点-4select、poll、epoll之间的区别总结select、poll、epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,而...

2018-08-21 16:42:32 213

原创 《Java并发编程实战》-3

对象的组合4.1 设计线程安全的类在设计线程安全类的过程中,需要包含一下三个基本要素:找出构成对象状态的所有变量。找出约束状态变量的不变性条件。建立对象状态的并发访问管理策略。4.1.1 收集同步需求 如果不了解对象的不变性与厚颜条件,那么就不能确保线程安全性。要满足在状态变量的有效值或状态转换上的各种约束条件,就需要结组于原子性和封装性。4.1....

2018-08-14 16:43:33 222

原创 《Java并发编程实战》-4

《Java并发编程实战》-45.1 同步容器类Collections.synchronizedXxx等工厂方法创建的同步实现线程安全的方式是:将它们的状态封装起来,并对每个公有方法都进行同步,使得每次只有一个线程能访问容器的状态。5.5.1 同步容器的问题在使用客户端加锁的Vector上的复合操作public static Object getList(Vector...

2018-08-14 16:39:41 461

原创 零碎的知识点-3

零碎的知识点-3TCP拥塞控制-慢启动、拥塞避免、快重传、快启动一般原理:发生拥塞控制的原因:资源(带宽、交换节点的缓存、处理机)的需求>可用资源。作用:拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者链路不至于过载。拥塞控制要做的都有一个前提:就是网络能够承受现有的网络负荷。对比流量控制:拥塞控制是一个全局的过程,涉及到所有的主机、路由器、以及降...

2018-08-14 15:43:43 141

原创 Java常用的排序算法

title: 排序算法 tags: [java] [算法] categories: - 算法Java常用的排序算法1. 直接插入排序直接插入排序(Straight Insertion Sorting)的基本思想:在要排序的一组数中,假设前面(n-1) [n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数也是排好顺序的。如此反复循环...

2018-08-08 16:08:04 192

原创 《Java并发编程实战》-2

对象的共享3.1 可见性在没有同步的情况下,编辑器、处理器以及运行时等都可能对操作的执行顺序进行一些意想不到的调整。在缺乏足够同步的多线程程序中,想要对内存操作的执行顺序进行判断,几乎无法得出正确的结论。3.1.1 失效数据线程安全的可变整数类@ThreadSafepublic class SynchronizedInteger { @GuardedBy(...

2018-08-07 20:47:10 955

原创 《Java并发编程实战》-1

第2章 线程安全性2.1 什么是线程安全性 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程架构如何交替执行,并且在主调用代码中不需要任何额外的同步或协同,这个类都表示出正确的行为,那么就称这个类是线程安全。 在线程安全类中封装了必要的同步机制,因此客户端无需进一步采用同步措施。 无状态对象一定是线程安全的。2.2 原子性2....

2018-08-07 17:46:39 141

原创 《Eeffective Java》读书笔记 - 第三章 对于所有对象都通用的方法

第三章 对于所有对象都通用的方法2018年7月10日17:57第8条:覆盖equals时请准守通用的约定 不覆盖equals方法的情况:类的每个实例本质上都是唯一的。 不关心类是否提供了“逻辑相等的测试功能“。 超类已经覆盖了equals,从超类继承过来的行为对于子类也是合适的。 类时私有的或是包级私有的,可以确定它的的equals方法永远不会被调用。 覆盖eq...

2018-08-07 17:17:37 172

原创 零碎的知识点-2

零碎的知识点-2死锁及其解决方案(避免、预防、检测)死锁产生的原因因竞争资源发生死锁 现象:系统中供多个进程共享的资源的数目不足以满足全部进程的需要时,就会引起对诸资源的竞争而发生死锁现象。死锁的四个必要条件:互斥条件:进程对所分配到的资源不允许其他进程进行访问,若其他进程访问该资源,只能等待,直至占有该资源的进程使用完成后释放该资源请求和保持条件:进程获得一定...

2018-08-06 16:56:56 185

原创 零碎的知识点-1

零碎的知识点-1二叉排序树二叉排序树或者是一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于 它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于或等于 它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的节点。 中序遍历可以得到二叉排序树的有序序列 40 / \ ...

2018-08-02 20:58:48 221

原创 《Thinking in Java 》读书笔记-17

《Thinking in Java 》读书笔记-1717.1 完整的容器分类法17.2 填充容器Collections.nCopies()和Collection.fill()都可以用单个对象的引用来填充Collection,并且所有引用都被设置为指向相同的的对象。 fill()方法的用处更为有限,它只能替换已经在List中存在的元素,而不能添加新的元素。17.2.1 ...

2018-08-01 21:05:32 170

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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