2019年2月12日

摘要: 前言 Java语言中有许多原生线程安全的数据结构,比如ArrayBlockingQueue、CopyOnWriteArrayList、LinkedBlockingQueue,它们线程安全的实现方式并非通过synchronized关键字,而是通过java.util.concurrent.locks.R 阅读全文
posted @ 2019-02-12 14:45 little飞 阅读(23345) 评论(0) 推荐(2) 编辑
 

2019年1月24日

摘要: Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更近,执行速度相对会更快。 Redis使用了单线程架构,预防了多线程可能产生的竞争问题。 作者对于Redis源代码可以说是精打细磨,曾经有人评价Redis是少有的集性能和优雅于一身的开源代码。 本文比较详细且全面的梳理了Redis使 阅读全文
posted @ 2019-01-24 22:03 little飞 阅读(12054) 评论(0) 推荐(1) 编辑
 

2019年1月9日

摘要: 前言 数字签名、信息加密 是前后端开发都经常需要使用到的技术,应用场景包括了用户登入、交易、信息通讯、oauth 等等,不同的应用场景也会需要使用到不同的签名加密算法,或者需要搭配不一样的 签名加密算法 来达到业务目标。这里简单的给大家介绍几种常见的签名加密算法和一些典型场景下的应用。正文1. 数字 阅读全文
posted @ 2019-01-09 22:26 little飞 阅读(267) 评论(0) 推荐(0) 编辑
 

2018年12月23日

摘要: <properties> <junit.version>4.12</junit.version> <spring.version>4.3.9.RELEASE</spring.version> <commons-logging.version>1.2</commons-logging.version> 阅读全文
posted @ 2018-12-23 17:41 little飞 阅读(5829) 评论(0) 推荐(0) 编辑
 

2018年11月28日

摘要: 实时游戏发展迅猛,同步技术也逐渐成为解决方案的核心之一。 本文简单讨论了帧同步和状态同步。帧同步 什么是帧同步:帧同步常被RTS(即时战略)游戏常采用。在游戏中同步的是玩家的操作指令,操作指令包含当前的帧索引。一般的流程是客户端上传操作到服务器, 服务器收到后并不计算游戏行为, 而是转发到所有客户端 阅读全文
posted @ 2018-11-28 20:55 little飞 阅读(10356) 评论(1) 推荐(2) 编辑
 

2018年10月14日

摘要: 两种线程的调度模式: 抢占式调度: 抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。 协同式调度: 协 阅读全文
posted @ 2018-10-14 13:41 little飞 阅读(3177) 评论(0) 推荐(2) 编辑
 

2018年9月26日

摘要: 前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 阅读全文
posted @ 2018-09-26 20:53 little飞 阅读(266) 评论(0) 推荐(0) 编辑
 

2018年8月12日

摘要: 注解的分类 按运行机制分: 源码注解:只在源码中存在,编译后不存在 编译时注解:源码和编译后的class文件都存在(如@Override,@Deprecated,@SuppressWarnings) 运行时注解:能在程序运行时起作用(如spring的依赖注入) 按来源分: 来自JDK的注解 第三方的 阅读全文
posted @ 2018-08-12 18:37 little飞 阅读(462) 评论(0) 推荐(0) 编辑
 

2018年7月24日

摘要: String内存位置说明 显式的String常量 第一句代码执行后就在常量池中创建了一个值为holten的String对象; 第二句执行时,因为常量池中存在holten所以就不再创建新的String对象了。 此时该字符串的引用在虚拟机栈里面。 String对象 Class被加载时就在常量池中创建了一 阅读全文
posted @ 2018-07-24 23:11 little飞 阅读(1163) 评论(0) 推荐(0) 编辑
 

2018年6月24日

摘要: 在建立项目版本库时,可首先建好项目文件夹,并在其中建立trunk, branches, tags三个空的子目录。这样在trunk中开始进行开发 trunk是主分支,是日常开发进行的地方。 branches是分支。一些阶段性的release版本,这些版本是可以继续进行开发和维护的,则放在branche 阅读全文
posted @ 2018-06-24 17:57 little飞 阅读(23178) 评论(0) 推荐(0) 编辑