自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【笔记】图解HTTP

2020-12-16 16:53:25 173

原创 【笔记】Java并发编程之美-Java并发包中线程池ThreadPoolExecutor原理探究

介绍线程池解决两个问题:1.执行大量异步任务时提供较好性能。线程池里的线程是可复用的,不需要每次执行异步任务重新创建/销毁线程。2.线程池提供了一种资源限制和管理手段,如限制线程个数、动态新增线程。每个线程池也保留了一些基本统计数据,如完成任务数目。类图线程池参数:corePoolSize :线程池核心线程个数。workQueue :用于保存等待执行的任务的阻塞队列,比如基于数组的有界 ArrayBlockingQueue、基于链表的无界 LinkedBlockingQueue、最多只有一

2020-11-05 16:14:32 195

原创 【笔记】Java并发编程之美-Java并发包中并发队列原理剖析

ConcurrentLinkedQueue原理探究线程安全的无界非阻塞队列,底层数据结构使用单向链表,出入队使用CAS实现线程安全。类图结构两个volatile类型Node节点存放队列首尾节点。默认头、尾指向item为null的哨兵节点。Node节点内部维护一个使用volatile修饰的变量item,存放节点的值。ConcurrentLinkedQueue原理介绍1.offer操作队列末尾添加元素,若为null抛出NPE异常,否则由于ConcurrentLinkedQueue是无界队列,方法一

2020-11-03 20:00:24 212

原创 【笔记】Java并发编程之美-Java并发包中锁原理剖析

####LockSupport工具类######park()方法如果调用park方法的线程已经拿到了与LockSupport关联的许可证,则调用Locksupport.park()时会马上返回,否则调用线程会被禁止参与线程的调度,也就是会被阻塞挂起。######unpark()方法当一个线程调用unpark时,如果参数thread线程没有持有thread与LockSupport类关联的许可证,则让thread线程持有。如果thread之前因调用park()而被挂起,则调用unpark后,该线程会被

2020-10-26 17:40:25 644 1

原创 【笔记】Java并发编程之美-Java并发包中并发List源码剖析

介绍并发包中的并发List只有CopyOnWriteArrayList。CopyOnWriteArrayList是一个线程安全的ArrayList,对其进行的修改操作都是在底层的一个复制的数组(快照)上。每个CopyOnWriteArrayList对象里面有一个array数组对象用来存放具体元素,ReentrantLock独占锁对象用来保证同时只有一个线程对array进行修改。ReentrantLock是独占锁。主要方法源码解析初始化无参CopyOnWriteArrayList(),入参为toCo

2020-10-20 20:44:49 163

原创 【笔记】Java并发编程之美-Java并发包中原子操作类原理剖析

原子变量操作类AtomicLongJUC并发包中包含有Atomiclnteger、AtomicLong和AtomicBoolean等原子性操作类,它们的原理类似,本章讲解AtomicLong类。AtomicLong是原子性递增或者递减类,其内部使用Unsafe来实现。AtomicLong类就是通过BootStarp类加载器进行加载的,故可以通过Unsafe.getUnsafe()方法获取到Unsafe类的实例。递增和递减操作代码都是通过调用Unsafe的getAndAddLong方法来实现操作,这个

2020-10-20 17:08:14 167

原创 【笔记】Java并发编程之美-Java并发包中ThreadLocalRandom类原理剖析

Random类及其局限性每个Random实例里都有一个原子性的种子变量用来记录当前种子值,当要生成新随机数时根据当前种子计算新种子并更新回原子变量。多线程下使用单个Random实例生成随机数时,多个线程同时计算随机数来计算新种子时,多个线程会竞争同一原子变量,由于原子变量更新是CAS操作,所以只有一个线程成功,其他线程自旋重试,降低并发性能。ThreadLocalRandom继承了Random类并重写了nextInt方法。ThreadLocalRandom并没有存放具体种子,而是存放在调用线程的thr

2020-10-16 16:57:42 177

原创 【笔记】Java并发编程之美-并发编程的其他基础知识

volatile关键字确保对一个变量更新对其他线程马上可见(写入变量不把值缓存在寄存器/其他地方,直接刷新回主内存),其他线程读取该值时,直接从主内存读取。一般在以下情况使用:1.写入变量值不依赖变量的当前值时。(因为若依赖,将是获取-计算-写入三步,这三步不是原子性的,volatile不保证原子性)2.读写变量值时没有加锁。(加锁本身已保证内存可见性)CAS(Compare And Swap)操作非阻塞原子性操作。对于内存中的某一个值V,提供一个旧值A和一个新值B。如果提供的旧值V和A相等就把

2020-10-15 20:58:32 118

原创 【笔记】Java并发编程之美-并发编程线程基础

线程创建与运行Java中有3种线程创建方式:实现Runnable接口的run方法,继承Thread类并重写run的方法,FutureTask方式。继承Thread优点:run()内获取当前线程直接使用this;缺点:Java不支持多继承(继承了Thread就不能继承其他类),任务与代码没有分离,多个线程执行同一任务需要多份任务代码。Runnable接口优点:可继承类,多个线程执行同一任务可以共用一个task代码逻辑;缺点:任务没有返回值。线程通知与等待线程调用共享对象的wait()时,当前线程只会

2020-10-13 20:15:52 170

原创 【笔记】大话数据结构-排序

排序的稳定性排序前相等的两个关键字的记录r1与r2,此时r1在r2前面,排序后若仍然是r1在r2前面,则为稳定的;否则不稳定。内排序与外排序内排序:排序过程中,待排序所有记录全部放在内存中。外排序:记录过多,不能同时放在内存,整个排序过程需要内外存之间多次交换数据。冒泡排序最简单排序实现:两两比较相邻关键字,反序则交换,直到没有反序记录。两个循环嵌套即可,i从1开始,j从i+1开始。冒泡排序算法:i从1开始,j从length-1开始,比较r[j]和r[j+1]的大小做交换。void Bu

2020-09-24 17:19:00 248

原创 【笔记】大话数据结构-查找

查找概论静态查找表:只做查找操作。动态查找表:查找时插入/删除数据元素。顺序表查找最基础查找算法for循环1到n。优化设置“哨兵”,令a[0]=key(哨兵),从i=n开始,i–直到找到或者i=0。此方法免去了查找过程中每一次判断是否i>n越界。有序表查找折半查找(二分查找)前提是线性表有序,取中间记录为比较对象,若给定值与中间记录的关键字相等,查找成功;若小于/大于,在中间记录的左/右半区重复上述操作。使用low=1,high=n,mid=(low+high)/2。while(

2020-09-20 16:27:47 148

原创 【笔记】Java核心技术卷1-第九章_集合

9.2 具体的集合

2020-09-15 20:04:22 202

原创 【笔记】大话数据结构-图

图的顶点与边之间的关系无向图,顶点v的度是和v相关联的边的数目,记为TD(v)。有向图,顶点v为头的弧的数目称为v的入度,记为ID(v);顶点v为尾的弧的数目称为v的出度,记为OD(v)。TD=ID+OD。第一个顶点和最后一个顶点相同的路径称为回路或环。顶点序列中顶点不重复出现的路径称为简单路径。除了第一个和最后一个顶点之外,其他顶点不重复出现的路回路,称为简单回路/简单环。连通图无向图中,任意两个顶点都连通的图,称为连通图。无向图中的极大连通子图称为连通分量。有向图中,任意两个顶点都有路径

2020-09-14 15:36:34 565

原创 【笔记】Java核心技术卷1-第八章_泛型程序设计

8.1.1 类型参数的好处ArrayList 类有一个类型参数用来指示元素的类型:ArrayList<String> files = new ArrayList<String>();这使得代码具有更好的可读性。人们一看就知道这个数组列表中包含的是 String 对象。在不用类型参数时,在调用get时不需要进行强制转换。在add时,编译器进行检查是否为String(原来Object可添加任意对象)。8.2 定义简单泛型类public class PairTest1 {

2020-09-11 20:17:00 289

原创 【笔记】Java核心技术卷1-第七章_异常、断言和日志

7.1.1 异常分类所有异常由Throwable继承而来,下一层分解为两个:Error和Exception。Error描述Java运行时内部错误和资源耗尽错误。少见。Exception分解为RuntimeException(程序错误)和其他异常(程序本身没错)。7.1.2 声明受查异常一个方法必须声明所有可能抛出的受查异常,而非受查异常要么不可控制(Error), 要么就应该避免发生( RuntimeException)。如果方法没有声明所有可能发生的受查异常, 编译器就会发出一个错误消息。7.

2020-09-10 14:49:32 359

原创 【笔记】大话数据结构-树

树的存储结构双亲表示法、孩子表示法、孩子兄弟表示法(复杂树变成二叉树)二叉树特点最多两颗子树;左右子树有序;即使只有一颗子树,也要区分左右子树。特殊二叉树斜树:只有左/右子树。满二叉树:所有分支都有左右子树,且所有叶子在同一层。完全二叉树:按层序编号,编号为i(1≤i≤n)的结点与同样深度满二叉树中编号i的结点位置相同。性质第i层至多2i−12^{i-1}2i−1个结点。深度为k的二叉树至多2k−12^k-12k−1个结点。终端结点数(叶子结点数)为n0,度为2的结点数n2,则

2020-09-08 17:29:21 169

原创 【笔记】大话数据结构-KMP算法

#include <stdio.h>/* 计算next数组 */ void get_next(char *T , int *next){ int i,j; i=1; j=0; next[0]= 0; while(i<strlen(T)) //T[0]是串T的长度 { if(j==0 || T[i-1] == T[j-1]) //T[i]表示后缀 T[j]表示前缀 { i++; j++; next[i]=j; } else j=

2020-09-07 17:16:49 204

原创 【笔记】Java核心技术卷1-第六章_接口、lambda表达式与内部类

6.1.1 接口概念在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口绝不能含有实例域, 在 JavaSE 8之前, 也不能在接口中实现方法。6.1.2 接口的特性不能new实例化一个接口,但可以声明接口的变量:x = new C

2020-09-07 17:08:01 160

原创 【笔记】Java核心技术卷1-第五章_继承

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码

2020-09-05 21:06:26 183

原创 【笔记】Java核心技术卷1-第四章_对象与类

4.3.6 封装Date 对象是可变的,这一点就破坏了封装性!Employee harry = . . Date d = harry.getHi reDayO; double tenYearsInMilliSeconds = 10 * 365.25 * 24 * 60 * 60 * 1000; d.setTime(d.getTime() - (long) tenYearsInMilliSeconds); // let's give Harry ten years of added seniori

2020-09-04 15:10:15 154

原创 【笔记】Java核心技术卷1-第三章_基本程序设计结构

#3.6.1 字串substringString greeting = "Hello"; String s = greeting.substring, 3); #3.6.3 不可变字符串String类没有提供修改字符串的方法。若需修改,提取+拼接。greeting = greeting.substring(0, 3) + "p!"; #3.6.9 构建字符串如果需要用许多小段的字符串构建一个字符串, 那么应该按照下列步骤进行。 首先,构建一个空的字符串构建器:StringBuilder

2020-09-03 19:26:11 123

空空如也

空空如也

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

TA关注的人

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