随笔分类 -  Java

摘要:1. CompletableFuture 简介 CompletableFuture 在 Java 里面被用于异步编程,异步通常意味着非阻塞,可以使得我们的任务单独运行在与主线程分离的其他线程中,并且通过回调可以在主线程中得到异步任务的执行状态,是否完成,和是否异常等信息。 CompletableFu 阅读全文
posted @ 2021-08-25 23:13 haojinglei 阅读(97) 评论(0) 推荐(0)
摘要:1. Fork/Join框架简介 Fork/Join 它可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。Fork/Join 框架要完成两件事情: Fork:把一个复杂任务进行分拆,大事化小。 Join:把分拆任务的结果进行合并。 步骤介绍: 任务分割 阅读全文
posted @ 2021-08-25 23:11 haojinglei 阅读(68) 评论(0) 推荐(0)
摘要:1. 线程池简介 线程池(thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。 例子:10 阅读全文
posted @ 2021-08-25 23:08 haojinglei 阅读(51) 评论(0) 推荐(0)
摘要:1. BlockingQueue 简介 Concurrent 包中,BlockingQueue 很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了 BlockingQueue 家庭中的所有成员,包括他 阅读全文
posted @ 2021-08-25 23:06 haojinglei 阅读(81) 评论(0) 推荐(0)
摘要:1. 读写锁介绍 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场景,JAVA 的 阅读全文
posted @ 2021-08-25 23:04 haojinglei 阅读(61) 评论(0) 推荐(0)
摘要:JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时 Lock 锁的频繁操作。这三种辅助类为: CountDownLatch: 减少计数 CyclicBarrier: 循环栅栏 Semaphore: 信号灯 1. 减少计数-CountDownLatch CountDownLa 阅读全文
posted @ 2021-08-25 23:03 haojinglei 阅读(51) 评论(0) 推荐(0)
摘要:1. Callable接口 常规的两种创建线程的方法:一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程。但是 Runnable 缺少的一项功能是,当线程终止时(即 run()完成时),我们无法使线程返回结果。为了支持此功能, Java 中提供了 Callable 接口。 阅读全文
posted @ 2021-08-25 23:01 haojinglei 阅读(51) 评论(0) 推荐(0)
摘要:1. 线程不安全-ArrayList /** * ArrayList线程不安全案例 */ public class NotSafeDemo { /** * 多个线程同时对集合进行修改 */ public static void main(String[] args) { List list = ne 阅读全文
posted @ 2021-08-25 23:00 haojinglei 阅读(68) 评论(0) 推荐(0)
摘要:线程间通信的模型有两种:共享内存和消息传递,以下方式都是基本这两种模型来实现的。 1. 案例:加一减一 两个线程,一个线程对当前数值加 1,另一个线程对当前数值减 1,要求用线程间通信。 1.1 synchronized 方案 /** * synchronized 关键字实现线程交替加减 */ pu 阅读全文
posted @ 2021-08-25 22:58 haojinglei 阅读(84) 评论(0) 推荐(0)
摘要:1. Synchronized 1.1 Synchronized介绍 synchronized 是 Java 中的关键字,是一种同步锁。它修饰的对象有以下几种: 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象; 修饰一个方法,被修 阅读全文
posted @ 2021-08-25 22:56 haojinglei 阅读(25) 评论(0) 推荐(0)
摘要:1. JUC简介 在 Java 中,线程部分是一个重点,本篇文章说的 JUC 也是关于线程的。JUC 就是java.util.concurrent 工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的。 2. 进程与线程 进程(Process)是计算机中的程序关于某数据集合上的一次运行 阅读全文
posted @ 2021-08-25 22:55 haojinglei 阅读(93) 评论(0) 推荐(0)
摘要:1. 基本介绍 commons-dbutils是Apache组织提供的一个开源JDBC工具类,它是对JDBC的封装,使用DBUtils可以极大简化jdbc编码的工作量。 DBUtils类 QueryRunner类:该类封装了SQL的执行,是线程安全的。可以实现增、删、改、查、批处理。 ResultS 阅读全文
posted @ 2021-08-12 16:34 haojinglei 阅读(49) 评论(0) 推荐(0)
摘要:1. 直接获取Connection问题 传统的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接的时候都要将Connection加载到内存中,在验证IP地址,用户名和密码(0.05s~1s时间)。需要数据库连接的时候,就向数据库请求一个,频繁地进行数据库连接操作将占用很多的 阅读全文
posted @ 2021-08-12 16:33 haojinglei 阅读(100) 评论(0) 推荐(0)
摘要:1. 基本介绍 当需要成批插入或者更新记录时。可以采用Java的批处理机制,这一机制允许多条语句一次性提交给数据库批量处理。通常情况下比单独提交再处理更有效率。 JDBC连接MySQL时,如果要使用批处理功能,URL中需要添加参数rewriteBatchedStatements=true,如果没有加 阅读全文
posted @ 2021-08-12 16:32 haojinglei 阅读(268) 评论(0) 推荐(0)
摘要:1. 基本介绍 JDBC程序中当一个Connection对象创建时,默认情况下时自动提交事务。每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而不能回滚。 JDBC中为了让多个SQL作为一个整体执行,需要使用事务。 调用Connection的setAutoCommit(false)可以 阅读全文
posted @ 2021-08-12 16:31 haojinglei 阅读(57) 评论(0) 推荐(0)
摘要:1. Statement 1.1 基本介绍 Statement用于执行静态SQL语句并返回其生成的结果的对象。 Statement对象执行SQL语句存在SQL注入风险。 SQL注入是利用某些系统没有对用户输入的数据进行充分的检查,而在用户输入数据中注入非法的SQL语句段或命令,恶意攻击数据库。 防范 阅读全文
posted @ 2021-08-12 16:29 haojinglei 阅读(214) 评论(0) 推荐(0)
摘要:1. ResultSet基本介绍 ResultSet表示数据库结果集的数据表,通过执行查询数据库的语句生成。 ResultSet对象保持一个光标指向当前的数据行。最初,光标位于第一行之前。 调用next方法会将光标移动到下一行,如果在ResultSet对象中没有更多行是返回false,因此使用whi 阅读全文
posted @ 2021-08-12 16:23 haojinglei 阅读(375) 评论(0) 推荐(0)
摘要:获取数据库连接的5种方式 1. 基础 @Test public void connect01() throws SQLException { Driver driver = new Driver(); String url = "jdbc:mysql://localhost:3306/demo"; 阅读全文
posted @ 2021-08-12 16:22 haojinglei 阅读(233) 评论(0) 推荐(0)
摘要:1. JDBC基本介绍 JDBC为访问不同的数据库提供了统一的接口,为使用者屏蔽了细节问题。 Java程序员使用JDBC,可以连接任何提供了JDBC驱动程序的数据库系统,从而完成对数据库的各种操作。 2. JDBC API JDBC API是一系列的接口,它统一和规范了应用程序与数据库的连接、执行S 阅读全文
posted @ 2021-08-12 16:21 haojinglei 阅读(90) 评论(0) 推荐(0)
摘要:1. Collections工具类介绍 Collections是一个操作Set、List、Map等集合的工具类。 Collections中提供了一系列静态的方法对集合元素进行排序、查询和修改等操作。 2. 方法 Collections类的所有方法均为static方法 2.1 排序操作 void re 阅读全文
posted @ 2021-08-08 16:11 haojinglei 阅读(55) 评论(0) 推荐(0)