自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 09.线程基础知识(八)----线程池

线程池1.自定义线程池代码实现import lombok.extern.slf4j.Slf4j;import java.util.ArrayDeque;import java.util.Deque;import java.util.HashSet;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Reentr

2021-11-01 23:07:35 183

原创 08.线程基础知识(七)java内存模型

java内存模型JMM 即 Java Memory Model,它定义了主存、工作内存抽象概念,底层对应着 CPU 寄存器、缓存、硬件内存、CPU 指令优化等。JMM 体现在以下几个方面原子性 - 保证指令不会受到线程上下文切换的影响可见性 - 保证指令不会受 cpu 缓存的影响有序性 - 保证指令不会受 cpu 指令并行优化的影响1.可见性退不出的循环先来看一个现象,main 线程对 run 变量的修改对于 t 线程不可见,导致了 t 线程无法停止:static boolean r

2021-10-26 14:19:03 138

原创 07.线程基础知识(六)同步模式之顺序控制

同步模式之顺序控制1.固定运行顺序public class Test9 { public static void main(String[] args) { Thread t1 = new Thread(() -> { log.debug("1"); }, "t1"); Thread t2 = new Thread(() -> { log.debug("2"); }, "

2021-10-24 23:34:43 101

原创 06.线程基础知识(五)ReentrantLock锁

ReentrantLock锁1.多把锁一间大屋子有两个功能:睡觉、学习,互不相干。现在小南要学习,小女要睡觉,但如果只用一间屋子(一个对象锁)的话,那么并发度很低解决方法是准备多个房间(多个对象锁)class BigRoom { private final Object studyRoom = new Object(); private final Object bedRoom = new Object(); public void sleep() { synchronized

2021-10-24 23:33:47 196

原创 05.线程基础知识(四)异步模式之生产者/消费者

异步模式之生产者/消费者1. 定义要点与前面的保护性暂停中的 GuardObject 不同,不需要产生结果和消费结果的线程一一对应消费队列可以用来平衡生产和消费的线程资源生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据消息队列是有容量限制的,满时不会再加入数据,空时不会再消耗数据JDK 中各种阻塞队列,采用的就是这种模式为什么叫异步?因为产生的值,不能立刻被消费。2.代码实现import lombok.extern.slf4j.Slf4j;import

2021-10-24 01:14:36 171

原创 04.jdk1.8常用API

tiltle:自编jdk1.8API常用文档(按功能划分)1.输入包import java.util.Scanner; ----不是lang包就要导入newScanner scanner = new Scanner(System.in);next()----获取next()方法读取到空白符就结束;输入:返回:Stringscanner.next()nextLine()—获取行nextLine()读取到回车结束也就是“\r”输入:返回:Stringscanner..

2021-10-23 23:39:58 2279

原创 03.线程基础知识(三)---同步模式之保护性暂停

同步模式之保护性暂停1. 定义即 Guarded Suspension,用在一个线程等待另一个线程的执行结果要点有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject如果有结果不断从一个线程到另一个线程那么可以使用消息队列(见生产者/消费者)JDK 中,join 的实现、Future 的实现,采用的就是此模式因为要等待另一方的结果,因此归类到同步模式2.代码实现@Slf4j(topic = "c.Test1")public class Test1 {

2021-10-23 23:18:03 86

原创 02.线程基础知识(二)Wait&notifiy

Wait&notifiy小故事 - 为什么需要 wait由于条件不满足,小南不能继续进行计算但小南如果一直占用着锁,其它人就得一直阻塞,效率太低于是老王单开了一间休息室(调用 wait 方法),让小南到休息室(WaitSet)等着去了,但这时锁释放开,其它人可以由老王随机安排进屋直到小M将烟送来,大叫一声 [ 你的烟到了 ] (调用 notify 方法)小南于是可以离开休息室,重新进入竞争锁的队列wait&notifiy原理Ownner线程发现条件不满足,调用wa

2021-10-23 18:36:15 258

原创 01.线程基础知识(一)

线程基础知识(一)线程状态从操作系统层面5种状态【初始状态】仅仅在语言层面创建了线程对象,还未与操作系统线程关联【可运行状态】(就绪状态)指该线程已经被创建(与操作系统线程关联),可以由cpu调度执行【运行状态】指获取了cpu时间片运行中的状态当cpu时间片用完,会从【运行状态】转换至【可运行状态】,会导致线程上下文切换【阻塞状态】如果调用了阻塞的API,如BIO读写文件,这是该线程实际不会调用CPU,会导致线程上下文切换,进入【阻塞状态】等BIO操作完毕,会由操作系统唤醒阻

2021-10-22 18:09:57 102

原创 01.docker入门教程

docker安装如果安装过卸载旧版本sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker

2021-10-20 10:22:45 67

原创 02.动态规划

最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3]输出:4示例 3:输

2021-08-19 18:27:26 58

原创 01.王大锤字节面试题

我叫王大锤,是一家出版社的编辑。我负责校对投稿来的英文稿件,这份工作非常烦人,因为每天都要去修正无数的拼写错误。但是,优秀的人总能在平凡的工作中发现真理。我发现一个发现拼写错误的捷径:1. 三个同样的字母连在一起,一定是拼写错误,去掉一个的就好啦:比如 helllo -> hello2. 两对一样的字母(AABB型)连在一起,一定是拼写错误,去掉第二对的一个字母就好啦:比如 helloo -> hello3. 上面的规则优先“从左到右”匹配,即如果是AABBCC,虽然AABB和BBC

2021-08-18 18:05:42 284

原创 01.sql的语法基础

增(insert)第一种形式INSERT INTO table_nameVALUES (value1,value2,value3,...);第二种形式INSERT INTO table_name (column1,column2,column3,...)VALUES (value1,value2,value3,...);INSERT INTO Websites (name, url, alexa, country)VALUES ('百度','https://www.baidu

2021-07-09 11:48:39 60

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除