IOCIOC(控制反转),把对象的创建和对象之间的调用过程交给Spring进行管理,可以降低代码耦合度。 IOC容器IOC思想基于IOC容器实现,IOC容器是 Spring 框架的核心。容器创建对象,把它们连接在一起,配置它们,并管理他们的整个生命周期从创建到销毁。Spring提供了两种容器:BeanFactory 容器和ApplicationContext 容器。 BeanFactory 容 ... 点击阅读

volatile一旦一个共享变量(类的成员变量、类的静态成员变量)被 volatile 修饰之后,两个含义: 1.volatile 保证了共享变量的可见性; 2.禁止进行指令重排序。 123456789101112public class ThreadSafeInteger { private int value; public synchronized int ... 点击阅读

使用当多个线程同时读写一个状态变量,如果没有同步措施,将会出现不可预见的结果。在Java中首要的同步策略是使用Synchronized关键字,它提供了可重入的独占锁。Synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,它还保证共享变量的内存可见性。Java中每一个对象都可以作为锁,当一个线程试图访问同步代码块时,必须先获得对象的锁。 Synchroni ... 点击阅读

线程的几种状态 新建状态(New)当线程对象对创建后,即进入了新建状态。 1Thread t = new MyThread(); 就绪状态(Runnable)当调用线程对象的 start()方法 12Thread t = new MyThread();t.start(); 线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待 CPU 调度执行,并不是 ... 点击阅读

缓存问题造成的可见性单核CPU的情况下,多个线程使用同一个CPU,线程1读取共享变量A到CPU缓存,修改后对线程2是可见的,不存在一致性问题。一个线程对共享变量的修改对另一个线程可见称为可见性。多核CPU的情况下,线程1和线程2分别操作不同CPU的缓存,线程1对共享变量A的操作对线程2不可见,出现一致性问题。下面这段代码,使用两个线程对num分别加10000次,启动两个线程,结果应该是20000 ... 点击阅读

ReplicationControllerReplicationController 可以保证它的 Pod 始终保持在运行状态。ReplicationController 的工作是确保 Pod 的数量始终与其标签选择器匹配,如果不匹配,ReplicationController 会采取适当的操作来协调 Pod 的数量。一个 ReplicationController 有三部分: label s ... 点击阅读

Pod 是 Kubernetes 调度的最小单元。一个 Pod 可以包含一个或多个容器,因此它可以被看作是内部容器的逻辑宿主机。Pod 有控制器管理的 Pod 和自主式 Pod 两种用法,本文介绍的是自主式 Pod。自主式 Pod 也就是没有控制器参与的 Pod,删除后无法再次创建。首先下载镜像到本地 Docker 仓库,用来演示创建 Pod 的过程。 12docker pull tutum&# ... 点击阅读

概述Zookeeper 是一个分布式协调服务的框架,用来解决分布式集群中的一致性问题。Zookeeper 本质上是一个分布式小文件存储系统,提供类似于目录树的方式存储数据,通过对数据状态变化的监控,实现基于数据的集群管理。Zookeeper 有一下应用场景: 维护配置信息 分布式锁服务 集群管理 生成分布式唯一 ID 数据模型Zookeeper 数据节点是树状结构,树中的节点称为 znode ... 点击阅读

Maven 使用 dependencyManagement 元素提供一种管理依赖版本号的方式,通常在项目最顶层的父 POM 文件中看到 dependencyManagement 元素。使用 dependencyManagement 元素能让所有在子项目中引用一个依赖而不显式的列出版本号。子项目中的 Maven 会沿着父层次向上走,直到找到一个拥有 dependencyManagement 元素的 ... 点击阅读