CountDownLatch和CyclicBarrier的区别

在Java并发包中,对于线程同步,有着CountDownLatch和CyclicBarrier两个类,两者有什么区别,怎样使用呢

Java

Caffeine-高性能Java本地缓存

Caffeine是使用Java8对Guava缓存的重写版本,在Spring Boot 2.0中取代Guava。如果出现Caffeine,CaffeineCacheManager将会自动配置。

Java

Autowired, Resource和Inject区别

1. 概述@Resource、@Inject和@Autowired是在Java开发中都会经常用到的注解,这些注解为类提供了一种声明性的方式来解决依赖关系 12@Autowired AnotherClass object; 与之对应的命令式实例化: 1AnotherClass object = new AnotherClass(); 其中两个来自java扩展包:javax.annota...

Java

Java中常用的锁

synchronized最常见的锁,可以非常快速的实现多线程的同步操作,只需要在需要同步的方法、对象、或代码块中加入该关键字,就能保住同一时刻最多只有一个线程执行 使用synchronized修饰的代码具有原子性和可见性,在需要进程同步的程序中使用的频率非常高,可以满足一般的进程同步要求 Java实现的锁机制有很多种,并且有些锁机制性能也比synchronized高,但还是强烈推荐在多...

Java

Java中的Unsafe类

众所周知,Java成为现在广泛使用的后端语言之一就是因为其拥有自动垃圾回收机制,由于垃圾回收的消耗,也导致Java运行效率不如没有垃圾回收机制的C++等,本文介绍Java中“不安全”的部分—手动申请和释放内存

Java

Java垃圾收集器

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。

Java

Mybatis的动态SQL

动态 SQL动态 SQL 是 MyBatis 的强大特性之一。如果你使用过 JDBC 或其它类似的框架,你应该能理解根据不同条件拼接 SQL 语句有多痛苦,例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL,可以彻底摆脱这种痛苦。 使用动态 SQL 并非一件易事,但借助可用于任何 SQL 映射语句中的强大的动态 SQL 语言,MyBatis 显著...

Java

从零编写持久层框架

设计思路使用者 引入自定义的框架jar 编写配置文件 dbconfig.xml:数据库配置信息,存放mapper.xml位置 mapper.xml:sql配置信息 框架 加载配置文件:以字节流存储在内存中 创建Resources类:InputStrean getResourceAsStream(String path) 创建两个Bean:容器对象,存放配置文件解析结果 Conf...

Java

实现自己的IOC容器

手动实现简单的IOC容器

Java

分布式技术-Zookeeper概述

ZooKeeper是一个分布式的,开放源码的分布式应用程序分布式应用程序/9854429)协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

Java
12