- 博客(24)
- 收藏
- 关注
原创 安装Clickhouse - Docker - Mac
指定了容器使用ID为1000的用户和组,将1000替换为您在主机上使用的用户和组的ID。由于9000端口被占用了,使用了9900。
2023-04-28 16:44:56
1008
原创 LockSupport
文章目录LockSupport方法示例LockSupportLockSupport定义了一组公共的静态方法,提供了最基本的线程阻塞和唤醒功能,LockSupport也是构建同步组件(AQS)的基础工具。以park开头的方法用来阻塞当前线程,以及unpark(Thread thread)方法来唤醒一个被阻塞的线程。方法方法描述void unpark(Thread thread)唤醒处于阻塞状态的线程void park()阻塞当前线程,调用 unpark 方法或者当前线程
2020-06-27 16:06:21
241
原创 并发编程学习笔记
参考资料:《Java并发编程之美》《Java并发编程的艺术》《Java多线程编程核心技术》《Java高并发程序设计》创建线程线程的状态查看运行时线程的信息死锁ThreadLocalAtomic 原子类
2020-06-27 11:52:55
242
原创 查看运行时的线程信息
打开终端输入命令jps, 结果示例:35696 KotlinCompileDaemon7812 Launcher11880 ThreadState1440821064 Jps输入命令jstack #pid#, 这里是jstack 11880, 结果示例:“BlockedThread-2” #12 prio=5 os_prio=0 tid=0x151af800 nid=0x50dc waiting for monitor entry [0x1568f000]java.lang..
2020-06-27 11:18:06
711
原创 线程的状态
##一、Java 线程的状态查看运行时的线程信息java.lang.Thread.Statepublic enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the runnable
2020-06-27 11:16:46
178
原创 创建线程
继承Thread类, 重写run()方法, 调用start()方法启动线程.优点: 在run方法内获取当前线程直接使用this就可以了, 无须使用Thread.currentThred()缺点: ①Java不支持多继承 ②任务和代码没有分离 ③没有返回值实现Runnable接口, 具体实现run()方法, 也没有返回值.实现Callable接口的call()方法, 使用创建的FutureTask对象作为任务创建一个线程并启动它, 最后通过futureTask.get()等待任务执行完毕, 并返回结.
2020-06-27 11:12:55
182
原创 Atomic 原子类
文章目录Atomic 原子类简介原子更新基本类型AtomicInteger 的方法使用示例主要源码原子更新数组AtomicIntegerArray 方法使用示例源码原子更新引用AtomicReference 方法使用示例源码原子更新属性(字段)AtomicIntegerFieldUpdater 简单介绍使用示例JDK 8 新增的原子操作类 LongAndderLongAdder 的结构当前线程访问 Cell 数组里面的那个元素如何初始化 Cell 数组Cell 数组如何扩容处理线程访问分配的 Cell 元素
2020-06-27 11:06:33
296
原创 ThreadLocal、InheritableThreadLocal、ThreadLocalRandom
文章目录ThreadLocal使用示例源码Thread 类中有两个变量setgetremoveInheritableThreadLocal使用示例源码RandomThreadLocalRandom主要代码实现逻辑currentnextIntnextSeedThreadLocalThreadLocal是JDk包提供的,它提供了线程的本地变量,也就是如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地副本。当多个线程操作这个变量时,实际操作的是自己本地内存里面的变
2020-06-19 15:32:28
236
原创 并发死锁示例
文章目录初始死锁产生并备的四个条件代码示例避免死锁初始死锁是指两个或者两个以上的线程在执行过程中,因争夺资源而造成的互相等待的现象,在无外力作用的情况下,这些线程会一直相互等待而无法继续运行下去。如图:线程A已经持有了资源2,他同时还想申请资源1线程B已经持有了资源1,它同时还想申请资源2所以两个线程相互等待对方已经持有的资源而进入了死锁状态。死锁产生并备的四个条件互斥条件指线程对已经获取到的资源进行排它性使用,即该资源同时只由一个线程占用。请求并持有条件指一个线程已经持
2020-06-18 17:07:31
204
原创 将List转成String
文章目录常用方法代码演示返回值StringJoiner 源码常用方法用StringBuilder实现String.join()Stream api 收集的方法joining()方法2和3的底层实现StringJoiner代码演示public class StringJoinerTest { public static void main(String[] args) { List<String> list = new ArrayList<>(); lis
2020-06-18 15:58:00
2540
原创 JAVA8_新特性简单介绍
文章目录一、Lambda 表达式1.1 基本概念1.2 语法1.3 重要特征1.4 变量作用域二、方法引用2.1 基本概念2.2 引用方法三、函数式接口3.1 基本概念3.2 默认方法3.3 Supplier3.4 Function3.5 Predicate3.6 Consumer四、Optional4.1 基本概念4.2 类方法五、Stream5.1 基本概念5.2 什么是stream5.3 创建流的方式:5.4 基本方法5.4.1 中间处理5.4.2 结束处理六、日期时间API6.1 基本概念6.2 关
2020-06-11 10:11:02
284
原创 Java8_常用排序方法
文章目录按照给定的集合顺序对目标集合进行排序逆序比较器链静态方法 Comparator.comparing 返回一个 Comparator 对象,该对象提供了一个函数可以提取排序关键字。新的实例方法包含了下面这些。reversed ——对当前的 Comparator 对象进行逆序排序,并返回排序之后新的Comparator 对象。thenComparing ——当两个对象相同时,返回使用另一个 Comparator 进行比较的Comparator 对象。thenComparingInt
2020-06-11 10:07:30
1334
原创 设计模式_桥接模式
桥接模式1. 定义将抽象部分与它的实现部分分离,使它们都可以独立的变化。2. 结构类图Abstraction:抽象部分的接口。通常在这个对象中,要维护一个实现部分的对象引用,抽象对象里面的方法,要调用实现部分的对象来完成。这个对象中的方法,通常都是和具体的业务相关的方法。RefinedAbstraction:扩展抽象部分的接口。通常在这些对象中,定义跟实际业务相关的方法,这些方法的...
2018-12-20 14:33:24
551
原创 SpringBoot事务不生效可能存在的原因
SpringBoot事务不生效:1.mysql表必须支持事务:引擎为INNODB2.SpringBoot启动事务@@EnableTransactionManagement3.方法上加注解@Transactional//默认只对RuntimeException起作用,可修改4.同类中事务的方法不能嵌套在其他方法中, QQQ类中A方法调用B方法,B方法开启事务注解,B方法中事务不会生效...
2018-12-05 11:14:46
5506
原创 oracle计算两个日期相差的年份
trunc(months_between(CON.MATURITY, CON.START_DATE) / 12);select trunc(months_between(sysdate,sysdate-444)/12) from dual;
2017-03-29 17:02:58
33966
转载 oracle 存储过程及REF CURSOR的使用
摘要:主要记录了oracle的stored procedure相关知识、从定义到使用。从最简单的例子入手、逐渐深入。同时后面结合了ref cursor的使用。顺便补充了在java中如何使用。 一:简介1、存储过程定义: 存储过程(Stored Procedure )是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行
2016-10-18 10:40:14
1162
翻译 JSDOM节点(当前标签和同级、父级、子级..之间的关系)
1. 通过顶层document节点获取 1) document.getElementById(elementId) //根据id获得 2) document.getElementsByName(elementName) //根据name获得 3) document.getElementsByTagName(tagName) //根据标签名获得2、通过父节点获取
2016-09-02 16:58:18
7459
原创 ORACLE触发器:在insert之前,判断这条插入语句是否可插入,不可插入时抛异常........
CREATE OR REPLACE TRIGGER "RQC_RECORD_TRI_INS" BEFORE insert ON RQC_RECORDFOR EACH ROWDECLARE NEW_TIME VARCHAR2(8); START_TIME VARCHAR2(8); END_TIME VARCHAR2(8); INSERT_EXCE
2016-07-20 15:27:24
16489
转载 ibatis遍历数组
第一种:传入参数仅有数组 resultClass="EmailInfo_"> select * from MailInfo with (nolock) where ID in #[]#
2016-04-13 15:16:22
5828
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人