主页
Lucene 学习笔记一(附源码分析)
背景介绍 Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, esp
摸清Java并发安全的套路
概述之前的文章《Java线程同步策略》对Java的并发策略有了一个比较详尽的介绍。其中讲到ReentrantLock时提及到了AbstractQueuedSynchronizer(下文简称AQS)这个类。从字面含义去揣度,这就是一个抽象的队列同步器。所谓抽象,想必有许多方法(或者说模板)还需要开发者具体实现;所谓队列,意味着其中维护一套遵循FIFO原则的存储结构;所谓同步,说明其中蕴含某种系统级
Java线程同步策略
线程安全概述引用《Java Concurrency In Practice》对线程安全的定义 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象是线程安全的。 这意味着如若要实现线程安全,代码本身必须要封装所有必要的正确性保障手段(比如锁的实现),以确保程
Relay | React数据驱动层初探
Relay & GraphQLRelay和GraphQL的组合给React项目的构建提出了一个近乎完美的解决方案。 什么是GraphQL呢?这是由facebook制定的定义在前端的数据查询语言规范(长的有点像JSON),来看一个官网例子123456789101112{ user(id: 3500401) { id, name, isViewerFr
面向接口编程与策略模式
面向接口编程 & 面向对象编程 Interface-based programming, also known as interface-based architecture, is an architectural pattern for implementing modular programming at the component level in an object-orien
ECMAScript6:直面Callback Hell
日常开发中使用ajax回调必不可少,尤其当业务复杂起来,你的代码可能是这样的(假设你用jQuery)123456789101112131415161718$.ajax({ url: url1, success: function (data) { //回调1 $.ajax({ url: url2,
ECMAScript6:模块化编程
模块The old way传统JavaScript有相当多的模块化方案(AMD,CommonJS,UMD等)。大体都是通过一个外部函数返回一个携带各种闭包的对象,达到将公用的API暴露出来的目的。类似这样1234567891011function Hello(name) { function greeting() { console.log( "Hello " + n
ECMAScript6:主要是甜
ES6给JS世界带来的变化是巨大的,与以往“小打小闹”对比起来,这次的语法糖是真的甜。这次我就结合平时的工作情况,把一些我认为真正解决了开发者痛点的语法糖一一挪列出来。有什么不足,请评论处指正。 Featuresfor-of 数组遍历12345678910111213141516171819var a = ["a","b","c","d","e"];for(var idx in a){