随笔分类 - Java
摘要:Java获取Linux或Windows下的IP地址,详情如下 import lombok.extern.slf4j.Slf4j; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.Socket
阅读全文
摘要:在接口间传输文件流中,介绍了通过HttpURLConnection完成文件流的传输,下面来看文件流传输的另一种实现,基于RestTemplate完成文件流的传输。 1、pom依赖 同接口间传输文件流。 2、实现工具类 2.1、报文数据转换工具 1 import org.apache.commons.
阅读全文
摘要:1、业务背景 外部服务请求文件信息,通过对外暴露的前置服务,请求到应用服务器上,应用服务器从文件存储平台下载文件,并返回文件流给外部服务。请求流程如下: 这里我们做个简化,假设文件存储在了应用服务器中,前置服务、应用服务在同一台服务器上。 2、代码实现 2.1、pom依赖 1 <parent> 2
阅读全文
摘要:1、LinkedBlockingQueue使用 LinkedBlockingQueue的使用案例详情如下: 1 import java.util.concurrent.LinkedBlockingDeque; 2 import java.util.concurrent.LinkedBlockingQ
阅读全文
摘要:ReentrantLock是互斥锁,若存在读多写少同时保证线程安全的场景,ReentrantLock效率比较低,此时需要用到ReentrantReadWriteLock。 一、ReentrantReadWriteLock介绍 ReentrantReadWriteLock是可重入的读写锁,实现了Rea
阅读全文
摘要:一、ReentrantLock介绍 ReentrantLock是JDK1.5引入的,实现Lock接口的互斥锁。保证多线程的环境下,共享资源的原子性。与Synchronized的非公平锁不同,ReentrantLock的实现公平锁、非公平锁。ReentrantLock是重入锁,重入是指,同一个线程可以
阅读全文
摘要:1、CyclicBarrier的介绍 CyclicBarrier 被称为栅栏,允许一组线程相互等待,直到这一组线程都准备完毕,放行,程序方可继续执行。 就好像做摩天轮,游乐园规定,至少有9个游客乘坐摩天轮,管理员才可以启动摩天轮,游客数和管理员少一个条件,摩天轮都不会启动。 2、CyclicBarr
阅读全文
摘要:ConditionObject是AbstractQueuedSynchronizer(AQS)实现的内部类,类图如下: 1、Condition接口 ConditionObject实现了Condition接口。先来看看Codition接口。 Codition中主要定义了挂起线程和唤醒线程的接口方法。C
阅读全文
摘要:1、ArrayBlockingQueue使用 ArrayBlockingQueue的使用案例详情如下: 1 import java.util.concurrent.ArrayBlockingQueue; 2 3 public class TestArrayBlockingQueue { 4 5 pu
阅读全文
摘要:1、Semaphore介绍 计数信号量 - Semaphore,常用来限制访问资源的线程数量。优点类似限流中的令牌桶算法,只有拿到信号量的线程才能执行,与令牌桶算法未拿到令牌不处理请求不同的是,在Semaphore中未拿到信号量的线程会阻塞等待,直到有某个线程释放了持有的信号量。 2、Semapho
阅读全文
摘要:1、CountDownLatch介绍 CountDownLatch让一个或多个线程等待其他线程执行完成后再执行。在创建CountDownLatch对象时,必须指定线程数count,每当一个线程执行完成调用countDown()方法,线程数count减1,当count减到0时,await()方法就不再
阅读全文
摘要:1、Callable 与 FutureTask介绍 1.1、Callable 创建线程有两种方式,一种是继承Thread类,一种是实现Runnable接口重写run方法。其实Thread也实现了Runable接口。 在Runable接口中,仅有一个无参无返回结果的run方法。Runable接口详情:
阅读全文
摘要:1、Synchronized是什么 Synchronized是Java中的关键字。 2、Synchronized的作用 Synchronized可避免多线程同时操作临界资源,同一时间点,只会有一个线程操作临界资源,保证了操作的原子性。 3、Synchronized的使用 Synchronized可以
阅读全文
摘要:一、什么是ThreadLocal ThreadLocal是线程内的局部变量,仅在线程的生命周期内起作用。变量值在线程间不可见。 二、ThreadLocal的使用 ThreadLocal使用详情如下: 1 import java.util.concurrent.CountDownLatch; 2 3
阅读全文
摘要:1、什么是线程 线程是CPU调度执行的基本单元。 JVM允许在一个程序中同时执行多个线程,在Java中,用java.lang.Thread这个类来表示线程。 线程有优先级,高优先级的线程往往会比低优先级的线程先执行。 守护线程(daemon Thread),主线程执行完,守护线程跟着结束。 2、Th
阅读全文
摘要:Apache DBUtils和SpringJdbcTemplate简化了数据库的操作,但是提供的功能较少。在实际的开发过程中,用的大多都是ORM框架,较为流行的ORM持久层框架:Hibernate、Mybatis。 ORM ( Object Relational Mapping ),即对象关系映射,
阅读全文
摘要:本文主要介绍基于JDBC的两个优秀的工具包,Apache DBUtils和SpringJDBC的基本应用。 1、Apache DBUtils DBUtils样例的官网地址:https://commons.apache.org/proper/commons-dbutils/examples.html。
阅读全文
摘要:1、原生JDBC的缺陷 在 JDBC 笔记(一):JDBC的开发步骤 中,提到原生JDBC查询数据库的开发步骤,不难看出用原生的JDBC查询数据库有以下缺点: 1、代码重复 原生JDBC,获取数据库连接、创建Statement对象步骤,每次查询数据库都需要创建并获取1. 2、资源管理 数据库连接资源
阅读全文
摘要:1、什么是JDBC? JDBC是一类接口,制定了统一访问各类关系数据库的标准接口。 JDBC的全称:Java数据库连接 Java Database Connectivity。 2、JDBC的作用 JDB是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据
阅读全文
摘要:Java语言在JVM虚拟机上运行,不可避免的涉及到JVM指令集,下面我们简单分析几个案例。 在进行分析之前,先简单回顾一下JVM的运行时数据区中的JVM虚拟机栈。 一、JVM Stack - JVM虚拟机栈 JVM Stack描述的是:每个方法在执行的同时都会创建一个栈帧,用于存储局部变量表、操作数
阅读全文

浙公网安备 33010602011771号