自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JUC(8):AQS重点总结

AQS其实就是一个由volatile+CAS机制实现的==构建锁的框架==同步器。==同步器的设计是基于模板方法模式的==### AQS结构:- volatile 修饰的 int ==State属性==(共享资源): - 因为 state 是使用 volatile 修饰,所以在多线程之间可见,访问 state 的方式有 3 种,getState()、setState()和 compareAndSetState()。 - State有3种状态:0-没人占用,1-被占用了,大于1-可重入锁。-

2022-07-08 21:22:20 329 1

原创 JUC(7): ThreadLocal重点总结

ThreadLocal重点总结:### 概念:- 每个线程都有本地私有的`独立变量副本`。 ==很多人抢一个公共电话 ----> 每个人都有自己的手机!==- ThreadLocal的作用主要是做**数据隔离**,==填充的数据只属于当前线程==,变量的数据对别的线程而言是相对隔离的,在多线程环境下,如何防止自己的变量被其它线程篡改。...

2022-07-08 21:20:57 290

原创 JUC(6): Future异步任务重点总结

## Future异步任务Future 接口表示异步任务,是还没有完成的任务给出的未来结果。### **1、FutureTask**- **作为线程:**实现了Runnable接口- **异步处理:**实现了Future接口- **有返回值:**构造器注入Callable...

2022-07-08 21:19:28 367

原创 JUC(5): 各种锁重点汇总

各种锁重点汇总:公平锁、自旋锁、死锁、乐观悲观锁、锁升级、锁粗化、读写锁、锁降级、邮戳锁

2022-07-08 21:18:08 528

原创 JUC(4): 深入理解CAS

CAS : 比较当前工作内存中的值和主内存中的值,如果这个值是期望的旧值,那么则执行操作!如果不是就一直循环!(==自旋锁==)- **CAS是一种**系统原语,**也就是说CAS是一条CPU的原子指令,不会造成所谓的数据不一致问题。**...

2022-07-08 21:15:25 118

原创 JUC(3):详解Volatile(轻量级同步机制)+JMM(内存模型)

详解Volatile(轻量级同步机制)+JMM(内存模型)

2022-07-08 21:10:01 154

原创 JUC(2): 阻塞队列+线程池(重点)+新时代程序员必会

阻塞队列+线程池(重点)+新时代程序员必会(- lambda表达式- 链式编程- 函数式Function接口:只有一个方法的接口,(Consumer接口,Predicate接口,Supplier接口)- Stream流式计算)

2022-07-08 21:08:10 1659

原创 JUC(1): LockSupport工具类

LockSupport工具类(底层调用了 Unsafe 类):**- `LockSupport`类可以阻塞当前线程以及唤醒指定被阻塞的线程 - Lock Support是一个线程阻塞工具类,有静态方法,LockSupport调用的==Unsafe中的native代码。== - Lock Support提供`park()` 和`unpark() `方法实现**在随意位置阻塞线程** 和 **解除线程阻塞**的过程(不必在同步代码块中)......

2022-07-08 21:06:19 174

原创 JUC(0): 常见*Notes:

LockSupport工具类,阻塞线程的方法,对象内存布局,AtomicLong 原子类与**LongAdder**,**线程中断**:(线程自己中断自己,自己决定自己的命运!),ConcurrentModificationException 集合类并发修改异常,CountDownLatch,CyclicBarrier,Semaphore......

2022-07-08 21:04:18 107

原创 JVM(5) 并发内存模型JMM

JMM 即 Java Memory Model,它定义了**主存(共享内存)、工作内存(线程私有)**抽象概念- **原子性** - 保证指令不会受到线程上下文切换的影响- **可见性** - 保证指令不会受 cpu 缓存的影响- **有序性** - 保证指令不会受 cpu 指令并行优化的影响...

2022-06-29 20:53:26 348

原创 JVM(4) 字节码技术+运行期优化

类文件结构 、字节码指令、语法糖即时编译、逃逸分析(Escape Analysis)、方法内联

2022-06-29 13:43:44 254

原创 JVM(3) 类加载

1、类加载阶段1) 加载将类的字节码载入方法区(元空间jdk1.8),内部采用C++有父类先加载父类反射是通过对象头class地址找到元空间中Class类对象,从中获取_fields, _methods等信息!

2022-06-29 13:41:22 175

原创 JVM(2) 垃圾回收

JVM 垃圾回收

2022-06-29 13:38:01 369

原创 JVM(1) Java内存结构

程序计数器虚拟机栈本地方法栈方法区堆Java内存结构程序计数器虚拟机栈本地方法栈方法区

2022-06-29 13:35:29 782

原创 Java集合List常用方法

A:添加功能boolean add(E e):向集合中添加一个元素void add(int index, E element):在指定位置添加元素boolean addAll(Collection<? extends E> c):向集合中添加一个集合的元素。B:删除功能void clear():删除集合中的所有元素E remove(int index):根据指定索引删除元素,并把删除的元素返回boolean remove(Object o):从集合中删除指定的元素boolean

2022-03-13 21:20:34 665

原创 MySQL的MVCC机制实现READ COMMITTED和 REPEATABLE READ隔离级别

MVCC实现依赖于 —— undo日志、隐藏字段、ReadViewMVCC,多版本的并发控制,Multi-Version Concurrency Controlundo日志:例子:表中本来有记录(1,张三,一班)事务10更新记录:(1,李四,一班)后又更新(1,王五,一班)事务20更新记录:(1,钱七,一班)又更新(1,宋八,一班)此时记录修改了四次,undo日志形成版本链:隐藏字段:每行记录后面保存两个隐藏的列:一个保存了行的事务ID(TRX_ID),一...

2022-03-10 15:51:17 1923 2

原创 MySQL锁机制

支持行锁:读锁(S锁)、写锁(X锁)间隙锁:(为了解决 可重复读(repeatable read)隔离级别中存在的幻读问题)A gap lock is a lock on a gap between index records, or a lock on the gap before the first or after the last index record。间隙锁在本质上是不区分共享间隙锁或互斥间隙锁 间隙锁本质上是用于阻止其他事务在该间隙内插入新记录,而自身事务是允许在该间隙..

2022-03-09 22:00:09 443

原创 数据库优化及淘宝主键设计

主键设计原则:全局唯一、单调递增!

2022-03-09 11:46:29 745

原创 MySQL索引失效的场景总结

1、左模糊查询:select * from student where name like '%abc'2、使用函数3、不满足最左前缀原则4、<>、!=、is not null、5、范围条件右边的索引列失效6、类型转换

2022-03-07 20:47:37 187

原创 使用反射动态实现对不同表的通用多条查询及JDBC总结

/** * 使用反射动态的实现对不同表的通用多个查询 * @author bh * @create 2022-03-04 17:43 */public class CommonMultiQuery { @Test public void test() { String sql = "select id stuId, name stuName from student where id > ?;"; List<Student> mu.

2022-03-05 10:57:53 640

原创 使用反射动态的实现对不同表的通用单条查询

/** * 使用反射动态的实现对不同表的通用查询 * @author baihang * @create 2022-03-04 17:43 */public class CommonQuery { @Test public void test() { String sql = "select id stuId, name stuName from student where id = ?;"; Student queryInstance = ...

2022-03-04 18:20:28 226

原创 利用反射封装对student表的单条查询(JDBC连接MySQL8.0.28)

一、直接查询student表@Test /** * 直接查询student表 */ public void test1() { Connection connection = null; PreparedStatement ps = null; ResultSet resultSet = null; try { connection = JDBCUtils.getConnect.

2022-03-04 17:31:28 307 1

原创 MySQL索引

索引——> 类似于图书馆书的索引号MySQL使用B+树构建索引。B+树的最底层叶子节点包含了所有的索引项。B+树在查找数据的时候,由于数据都存放在最底层的叶子节点上,所以每次查找都需要检索到叶子节点才能查询到数据。所以在需要查询数据的情况下每次的磁盘的IO跟树高有直接的关系,但是从另一方面来说,由于数据都被放到了叶子节点,所以放索引的磁盘块锁存放的索引数量是会跟这增加的,所以相对于B树来说,B+树的树高理论上情况下是比B树要矮的。也存在索引覆盖查询的情况,在索引中数据满足了当前查询语句所需要

2022-03-02 19:34:28 96

原创 MyISAM与InnoDB 存储引擎特点

InnoDB支持事务,MyISAM不支持。(最好把多条SQL语言放在begin和commit之间,组成一个事务) InnoDB支持外键,而MyISAM不支持。 InnoDB是聚集索引,MyISAM是非聚集索引。 Innodb不支持全文索引,而MyISAM支持全文索引。 InnoDB 默认行级锁,而MyISAM是表级锁。(InnoDB 适用高并发) 系统奔溃后InnoDB 能自动恢复,MyISAM恢复起来更困难。 InnoDB缓存索引和数据,MyISAM只缓存索引。 数据文件结构:...

2022-03-02 16:23:53 369

原创 Java 1.7新特性:try-with-resource语法糖

java1.7之前的异常屏蔽(Suppressed Exceptions)问题:public class Demo { public static void main(String[] args) { BufferedInputStream bin = null; BufferedOutputStream bout = null; try { bin = new BufferedInputStream(new FileInputStream(new File("test.

2022-03-01 17:31:57 372

原创 数据库DDL、DML、DCL的常见操作

DML (data manipulation language):SELECT、UPDATE、INSERT、DELETE等 DDL(data definition language):CREATE、ALTER、DROP、TRUNCATE等 DCL(Data Control Language):grant,deny,revoke等

2022-02-27 20:13:28 489

转载 MySQL常用优化方法+优化Mysql数据库的8个方法+百万级数据库优化方案+运维角度浅谈MySQL数据库优化

MySQL

2022-02-06 15:59:12 1688

原创 pip安装包ReadTimeoutError超时解决办法:使用douban镜像

pip --default-timeout=100 install 库名称 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com将库名称换为要安装的包,以torch==1.8.0为例:pip --default-timeout=100 install torch==1.8.0 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com...

2021-12-22 22:04:29 505

原创 MySQL内连接、外连接 7种JOIN操作

sql,内连接,外连接

2021-12-15 21:49:48 1181

原创 迭代实现二叉树的遍历(统一风格)

二叉树,遍历,迭代

2021-11-22 16:11:37 469

原创 java 用Deque 实现队列、栈

一、队列Queue<Integer> queue1 = new LinkedList<>();queue1.offer(1);queue1.offer(2);queue1.offer(3);queue1.poll(); //1queue1.peek(); //2二、栈Stack<Integer> stack=new Stack<>();stack.push(1);stack.push(2);stack.p..

2021-11-12 12:40:16 1725

原创 java 多线程创建、同步、死锁、通信

多线程同步、死锁、synchronized

2021-11-07 22:50:59 146

原创 Java中的strip(), split() 分割字符串

jdk11引进了strip():用来去除字符串的前导和后缀空格eg:str = " hello world! ";str = str.strip();//str = "hello world!"split():加上正则化用来分割字符串1、正则表达式\s表示匹配任何空白字符,+表示匹配一次或多次。str = " hello world! ";String[] words = str.split("\\s+"); //按照一个或多个空...

2021-10-24 18:19:04 5494

原创 java中List<Integer>转化为int[]的方法

1、遍历List中的元素添加到int[]数组中List<Integer> list = new ArrayList<>();int[] res = new int[list.size()];int i = 0;for(Integer num : list) { res[i] = num;}2、利用Java8的stream()int[] res = list.stream().mapToInt(Integer::intValue).toArra..

2021-10-13 18:36:33 5229 3

原创 Java中小数默认为double类型

A:5.3e12表示5.3乘以10的12次方,正确B:在Java中,如果你输入一个小数,系统默认的是double类型的,这个式子相当于float f=double 11.1,明显错误,如果想要表达11.1为float类型的,需要在11.1末尾加一个f标识你输入的是float类型即可C:0.0是小数,默认是double,不是intD:Dbuble是基本类的封装类,不可直接赋值...

2021-10-05 21:48:35 5609

原创 volatile为什么不能保证原子性(能保证可见性)

Java中只有对基本类型变量的赋值和读取是原子操作,如i = 1的赋值操作,但是像j = i或者i++这样的操作都不是原子操作,因为他们都进行了多次原子操作,比如先读取i的值,再将i的值赋值给j,两个原子操作加起来就不是原子操作了。所以,如果一个变量被volatile修饰了,那么肯定可以保证每次读取这个变量值的时候得到的值是最新的(可见性),但是一旦需要对变量进行自增这样的非原子操作,就不会保证这个变量的原子性了。举个栗子一个变量i被volatile修饰,两个线程想对这个变量修改,都对其...

2021-10-04 23:22:41 456

原创 MySQL数据库索引组合索引的最左优先原则

最左优先原则:组合索引的第一个字段必须出现在查询组句中,这个索引才会被用到。只要组合索引最左边第一个字段出现在Where中,那么不管后面的字段出现与否或者出现顺序如何,MySQL引擎都会自动调用索引来优化查询效率。根据最左匹配原则可以知道B-Tree建立索引的过程,比如假设有一个3列索引(col1,col2,col3),那么MySQL只会会建立三个索引(col1),(col1,col2),(col1,col2,col3)。则可知当查询语句中where后只要有col1就会用到索引。创建四种不同

2021-10-04 23:10:03 2389

原创 数据库事务ACID及隔离级别

为保证事务的正确性与可靠型,事务必须满足ACID四大特性:原子性、一致性、隔离性、持久性。原子性(A):一个事务(transaction)中的所有操作,或者全部完成,或者全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。即,事务不可分割、不可约简。一致性(C):在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。隔离性(I):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性

2021-10-03 17:53:12 367

原创 Linux命令记录

从普通用户切换到root用户:$ su 从root用户切换到普通用户:$ su - username给用户username设置filename文件夹的权限:chown$ sudo chown -R username filename #-R表示filename目录以及其子目录下的所有文件的权限...

2021-09-27 22:07:12 78

原创 conda安装python包出错:Collecting package metadata: failed NotWritableError

最近在服务器上用conda命令安装python依赖包时总是报错,如下:Collecting package metadata (current_repodata.json): failedNotWritableError: The current user does not have write permissions to a required path. path: /opt/anaconda3/pkgs/cache/8f77de01.json uid: 984 gid: 98...

2021-09-27 21:49:27 1727 1

空空如也

空空如也

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

TA关注的人

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