随笔分类 -  Java

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