nekolr's blog

爱吃咖喱棒的打字员DA☆ZE~

0%

我们可以把锁理解成门票,只有当线程拿到了门票才能进入临界区。我们可以用一个状态变量 state 表示锁,当 state 为 true 时就表示已经获取到了锁,为 false 时就表示锁已经被其他线程占用。那么当锁被占用时,应该怎么处理?基本上有两种思路,其中一种就是循环检测直到锁可用,也就是自旋锁;另一种就是让出 CPU 时间片,等待唤醒通知。这里主要讨论自旋的算法,为深入学习 AQS 做铺垫。

Read more »

在很多分布式系统中,常常需要对大量的数据和消息进行唯一标识。在分库分表的应用中,由于数据库从原先的单一节点切分到了多个节点上,因此数据库自身的主键生成机制就不能再使用了,因为我们无法保证某个分片上的数据库生成的主键在全局上是唯一的。这个时候一个分布式(全局唯一)的主键生成系统就很有必要了。

Read more »

在 JavaScript 中,函数是第一等公民,它的地位与其他值(数值、布尔值、字符串等)相同。同时函数也是对象,它可以保存在变量、对象和数组中,可以作为参数传递,也可以作为结果返回,同时它还可以拥有自己的方法。

Read more »

在 Java 中,空指针异常(NullPointerException)是非常讨厌的。在 JDK 8 以前,我们通常只能通过主动防御式的检查来减少它的出现,但是在 JDK 8 之后我们可以使用 Optional 更优雅地处理这类问题。

Read more »

@Conditional 是 Spring 4 提供的新注解,它的作用是按照一定的条件进行判断,当满足条件时会给容器注册 bean。举个例子,比如说我们有一个接口,这个接口有多个实现类,当我们将这个接口交给 Spring 容器管理时通常只能选择其中一个作为实现类,但是我们又希望能够根据不同的情况注册不同的实现类,此时就可以使用该注解。

Read more »

Spring Cloud 其实就是一个全家桶,建立在 Spring Boot 之上,是微服务系统架构的一站式解决方案,覆盖了微服务的各个核心组件,其中很多组件都是 Netflix 家的。Spring Cloud 的版本号是以英国伦敦地铁站的名字命名的,同时按照字典顺序对应版本的时间顺序,最早的 Release 版本为 Angel,最新的 Release 版本为 Hoxton。

Read more »

最早在 Java 体系中使用最多的消息队列是 ActiveMQ,但是由于其社区不够活跃且历史包袱较重,目前使用者已经越来越少,此时另一个合适的选择就是 RabbitMQ。

Read more »

首先需要安装 Python 环境,同时将安装目录和安装目录下的 Scripts 目录添加到 PATH 环境变量中。

Read more »