HOME


人间如梦,倚笑乘风凉

我们是如何陷入贫穷与忙碌的

穷困之人会永远缺钱,忙碌之人会永远缺时间。 我们总容易陷入这样一种循环:决心好好安排自己的学习、工作与生活,把自己的短期、中期、长期目标梳理一遍,然后在心里、在笔记本上、在社交网络上,为自己定制了密密麻麻的计划。我们小心、谨慎地执行这些计划,然而,我们却总觉得时间不够,总是有事情...

保障线程安全的设计技术

无状态对象 对象就是操作和数据的封装。对象所包含的数据就被称为该对象的状态,它包括存储在实例变量或者静态变量之中的数据。相应地,实例变量、静态变量也被称为状态变量。 如果一个类的同一个实例被多个线程共享并不会使得这些线程存在共享状态,那么这个类及其任意一个实例就被称为无状态对象。 反之,如...

Java线程间协作(三)

阻塞队列 从传输通道中存入数据或取出数据时,相应的线程可能因为传输通道中没有数据或者其存储空间已满而挂起,这种传输通道的运作方式称为阻塞式。 一般而言,一个方法或者操作如果能够导致其执行线程被挂起,那么我们就称相应的的方法/操作为阻塞方法或者阻塞操作。 常见的阻塞方法包括:InputStr...

Java线程间协作(二)

倒计时协调器:CountDownLatch CountDownLatch可以用来实现一个(或者多个)线程等待其他线程完成一组特定的操作之后才继续运行。这组特定的操作被称为先决操作。 CountDownLatch实现原理 CountDownLatch内部会维护一个用于表示未完成的先决操作数...

Java线程间协作(一)

等待与通知:wait/notify ● 一个线程因其执行目标动作所需的保护条件未满足而被暂停的过程就被称为等待(wait) ● 一个线程更新了系统的状态,使得其他线程所需的保护条件得以满足的时候唤醒那些被暂停的线程的过程就被称为通知(notify) 使用Object.wait()实现等待...

Java线程同步机制

Java锁分类 内部锁(Intrinsic Lock):通过synchronized关键字实现。 显式锁(Explicit Lock):通过java.concurrent.locks.Lock接口的实现类实现,如:java.concurrent.locks.ReentrantLock。 可...

使用MongoDB地理空间索引踩的一些小坑

MongoDB的地理空间索引主要是用来解决“获取空间中(可以是2D平面空间,也可以是球面空间)某一基准点的邻近点”的问题,其核心算法是基于GeoHash的。 坐标 既然要计算空间上的邻近点,那么当然需要在相关的集合中加入特定的字段用以标明坐标。 MongoDB支持两种坐标表示形式, 一种...

Markdown入门(第七章)

Markdown嵌入代码 譬如说,我现在想引入一段Java代码,那么我只需要在Markdown中以如下格式嵌入一段代码,就可以实现文本以代码的形式显示出来的功能,一些相应编程语言的关键字都能得到高亮显示: ``` java System.out.println(“Hello World!...