自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 问答 (1)
  • 收藏
  • 关注

原创 前端组件使用

<!DOCTYPE html><html lang="en"><head> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>标签使用场景配置表</title> <script.

2021-12-28 10:36:09 326

转载 线程池使用

https://mp.weixin.qq.com/s?__biz=Mzg2MjEwMjI1Mg==&mid=2247510570&idx=2&sn=238bade2a3e757e7026f45f4e4260593&chksm=ce0e1da9f97994bfae6633fd7bbb2caad5d236d34ddc29c7575f6b0c179484b015989c5f42df&mpshare=1&scene=24&srcid=0728nG4kmi5..

2021-08-12 23:20:16 136

原创 死锁的预防跟避免

这个的意思 就是 发生循环等待时 只要有别的进程 释放了 同类型的资源 那么仍然不是死锁预防死锁破坏互斥条件破坏不可剥夺条件破坏持有并等待条件导致C进程饥饿 因为 A,B类有很多 并且A只需要资源 1 就可以 运行 B只需要资源 2 就可以运行这样会导致 A释放资源后 因为 B 没有释放资源 ,所有资源1又分配给了 下一个A进程 ,如果A、B进程 一直源源不断的有的话 C会饥饿破坏循环等待条件...

2021-08-12 23:06:48 112

原创 数据库三范式

Mysql中都是满足一范式的一范式的问题数据冗余 很多重复的2NF比如我们现在 (ID 、课名) 是码 非主属性 就有 姓名、 系名、 系主任 分数 姓名 可以由 ID唯一确定 所以是 存在了 非主属性 对码的部分依赖 对码的全部依赖 是 分数这种 需要由ID和 课名共同决定的3NF继续拆分表...

2021-08-12 22:18:23 76

转载 HTTP协议

https://mp.weixin.qq.com/s?__biz=MzAwMDAxNjU4Mg==&mid=2247484204&idx=1&sn=0e83aabb2a48570b5bec563a777f4d26&chksm=9aee2a85ad99a393474e2b7ea45a9b24400d33b552a4c1144991caa0a09b56291021c8c270e6&scene=178&cur_album_id=1742207274908991489

2021-08-05 23:56:26 56

转载 TCP粘包

https://mp.weixin.qq.com/s/-PeX4KLKeRzE5nnhqevOxQ

2021-08-05 23:55:03 43

转载 DHCP协议

https://mp.weixin.qq.com/s?__biz=Mzg2NzA4MTkxNQ==&mid=2247485482&idx=1&sn=39550699789ae9078da3420f0e0e3b09&scene=21#wechat_redirect

2021-08-05 23:54:03 54

转载 Mysql三大日志

https://mp.weixin.qq.com/s?__biz=MzU4MDM3MDgyMA==&mid=2247504191&idx=1&sn=ebf8dceb0118bf26b54c97fd52f90fdd&chksm=fd5579d4ca22f0c2c0e076b9907ad99fcba74aa47cf690d3551c6f643126b68593cf9fedc34e&scene=132#wechat_redirect

2021-08-05 23:49:29 69

转载 慢sql语句

https://mp.weixin.qq.com/s/Cuv8zwDmFSzp9DGqEw8zhghttps://mp.weixin.qq.com/s?__biz=Mzg2NzA4MTkxNQ==&mid=2247485346&idx=1&sn=22b36c3bdcca070adb2cac0ce3bc4ace&chksm=ce404c76f937c56018c4da7f0844357e3daeffb414def5dbc0cc8522dbed76f40b9e9577c8

2021-08-05 23:48:33 106

转载 spring的设计模式

https://mp.weixin.qq.com/s?__biz=MzIxMzQzNzMwMw==&mid=2247495929&idx=1&sn=e2eddf6433250906db7a318040002db2&chksm=97b46ee1a0c3e7f728931ce616099a45756dae182822797a732854c87eb2cd815f1b3eb68d9c&scene=132#wechat_redirect

2021-08-05 23:48:09 54

转载 秒杀商城架构

https://mp.weixin.qq.com/s/t3B9NvjIXsWGlbPw3al8SA

2021-08-05 23:47:24 72

转载 IO多路复用

https://mp.weixin.qq.com/s?__biz=Mzg4MDAxNzkyMw==&mid=2247488570&idx=1&sn=a8f0369b808662ec4d1156f0fef75cea&chksm=cf7ac356f80d4a40ff047904dfc6378828d6bc02805290b9c7200e3a71ecd10fc75688c12f24&scene=132#wechat_redirect

2021-08-05 23:46:23 59

转载 多线程顺序执行

https://mp.weixin.qq.com/s/dut1XSQk04gGn17E69vqgA

2021-08-05 23:44:37 50

转载 NAT协议

https://mp.weixin.qq.com/s?__biz=Mzg2NzA4MTkxNQ==&mid=2247485189&idx=1&sn=70571f1c204c7b1e9cedf10ff6885492&scene=21#wechat_redirect

2021-08-05 23:38:29 58

转载 sso 单点登录

https://mp.weixin.qq.com/s?__biz=MzAwNDA2OTM1Ng==&mid=2453141199&idx=2&sn=ae38cea47dc968c2b00cf123d72c5876&scene=21#wechat_redirect

2021-08-03 23:15:10 107

转载 cookie登录

https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484755&idx=6&sn=3a370551b0ee800f3bcad8ff37a72b9d&scene=21#wechat_redirect

2021-08-03 23:14:31 164

转载 session实现登录

https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247484755&idx=7&sn=fb35232f3c15e2b4336498ac9f8804f1&scene=21#wechat_redirect

2021-08-03 23:13:52 118

转载 @Transaction的底层实现

https://mp.weixin.qq.com/s/2AFH9CasIav7UoT80TfvpQ

2021-07-31 17:04:49 288

转载 Spring的Bean实例化过程应该是怎样的

https://mp.weixin.qq.com/s/8uKqjwDdmUnENOAW-ndKtA

2021-07-31 17:04:02 55

转载 Spring IOC容器中只存放单例Bean吗?

https://mp.weixin.qq.com/s/nUBa7PAyyqii0Uk2rPs74A

2021-07-31 17:03:24 231

原创 String

public class App { public static void main(String[] args) { String a = "111"; a = "222"; System.out.println(a); }}JVM为了提高性能和减少内存的开销,在实例化字符串的时候进行了一些优化:使用字符串常量池。每当我们创建字符串常量时,JVM会首先检查字符串常量池,如果该字符串已经存在常量池中,那么就直接返回常量池中的实例引用.

2021-07-31 16:54:55 58

原创 final

当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。当final修饰的方法表示此方法已经是“最后的、最终的”含义,亦即此方法不能被重写(可以重载多个final修饰的方法)。此处需要注意的一点是:因为重写的前提是子类可以从父类中继承此方法,如果父类中final修饰的方法同时访问控制权限为private,将会导致子类中

2021-07-31 16:29:37 77

转载 异步编程利器:CompletableFuture详解

https://mp.weixin.qq.com/s/rsiXMBlxFMExa_OWtUiMEA

2021-07-31 14:51:57 68

原创 Innodb 怎么快速统计 count

因为MVCC 所以 innodb 没有像 myisam 那样存储 行总数我们可以 自己统计放在 redis 但会导致 数据不一致的问题放在 mysql 用 事务保证 行总数的正确性Innodb 对 count(*) 做了优化 不会把全部字段取出来 而是不取值 count(*)因为 包含主键 肯定不是null 直接按行累加count(1) 也是遍历整张表 不取值 然后 server层 对于每一行都放一个数字1 进去 肯定不是null 直接按行累加count(i...

2021-07-31 10:38:25 251

原创 索引基本知识

索引只是提高效率的一个因素,因此在建立索引的时候应该遵循以下原则: 在经常需要搜索的列上建立索引,可以加快搜索的速度。 在作为主键的列上创建索引,强制该列的唯一性,并组织表中数据的排列结构。 在经常使用表连接的列上创建索引,这些列主要是一些外键,可以加快表连接的速度。 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,所以其指定的范围是连续的。 在经常需要排序的列上创建索引,因为索引已经排序,所以查询时可以利用索引的排序,加快排序查询。 在经

2021-07-31 08:26:23 151

原创 333435 LRUJOIN语句优化

33LRU 3/8 old 区域 5/8 young区域 首先是进入old 区域 一秒以内 就算被访问到 也不进入 young区域 一秒以后 才进入 防止 大表查询 污染缓存34Index Nest - Loop Join(NLJ算法)select * from t1 straight_join t2 on (t1.a = t2.a);用 straight_join 是固定让 t1 做驱动表 t2做被驱动表如果没有的话 优化器会执行选择 那个表作为驱动表 不利于我们分析...

2021-07-31 08:16:12 66

转载 分布式ID的生成方法

为什么要分布式ID分布式系统中我们会对一些数据量大的业务进行分拆,如:用户表,订单表。因为数据量巨大一张表无法承接,就会对其进行分库分表。但一旦涉及到分库分表,就会引申出分布式系统中唯一主键ID的生成问题 不然会造成数据ID重复, 唯一ID的特性: 整个系统ID唯一 ID是数字类型,而且是趋势递增的 ID简短,查询效率快 什么是递增?如:第一次生成的ID为12,下一次生成的ID是13,再下一次生成的ID是14。这个就是生成ID递增。什么是趋势递增?如:在一段时...

2021-07-30 13:07:28 407

转载 volatile

Volatile可能是面试里面必问的一个话题吧,对他的认知很多朋友也仅限于会用阶段,今天我们换个角度去看看。先来跟着丙丙来看一段demo的代码:你会发现,永远都不会输出有点东西这一段代码,按道理线程改了flag变量,主线程也能访问到的呀?为会出现这个情况呢?那我们就需要聊一下另外一个东西了。JMM(JavaMemoryModel)JMM:Java内存模型,是java虚拟机规范中所定义的一种内存模型,Java内存模型是标准化的,屏蔽掉了底层不同计算机的区别(注意这个跟JVM完全不是一个

2021-07-27 18:15:22 135

转载 synchronized

偏向锁的撤销 是等到有竞争出现的时候才释放 锁。需要等到全局安全点 就是此时没有字节码正在执行,它会首先暂停拥有偏向锁的线程,然后检查持有偏向锁的线程是否或者,如果线程不处于活动状态,则把对象头设成无锁状态(这样别的线程就可以继续使用偏向锁) 别的线程来的时候 如果发现对象头的ID 不是自己 他会用CAS尝试替换对象头中的线程ID 可能是用CAS(无锁,该线程的 ID) 如果还活着 偏向锁的栈会被执行,这样对象头中的Mark word 要么重新偏向别的线程要么就标记对象不适合作为偏向锁http...

2021-07-27 16:59:55 40

转载 LockSupport

本文章将要介绍的内容有以下几点,读者朋友也可先自行思考一下相关问题: 线程中断 interrupt 方法怎么理解,意思就是线程中断了吗?那当前线程还能继续执行吗? 判断线程是否中断的方法有几个,它们之间有什么区别? LockSupport的 park/unpark 和 wait/notify 有什么区别? sleep 方法是怎么响应中断的? park 方法又是怎么响应中断的? 线程中断相关方法线程中和中断相关的方法有三个,分别介绍如下:1) inte

2021-07-27 15:22:43 60

转载 线程的五种状态

1) 新建当用new关键字创建一个线程时,还没调用start 就是新建状态。2) 就绪调用了 start 方法之后,线程就进入了就绪阶段。此时,线程不会立即执行run方法,需要等待获取CPU资源。3) 运行当线程获得CPU时间片后,就会进入运行状态,开始执行run方法。4) 阻塞当遇到以下几种情况,线程会从运行状态进入到阻塞状态。 调用sleep方法,使线程睡眠。 调用wait方法,使线程进入等待。 当线程去获取同步锁的时候,锁正在被其他线程持有...

2021-07-27 15:03:48 24185 3

转载 CountDownLatch,CyclicBarrier,Semaphore

一、CountDownLatch是一个同步辅助器,允许一个或多个线程一直等待,直到其他线程的操作全部完成。常用方法public void await() throws InterruptedException { sync.acquireSharedInterruptibly(1);}public void countDown() { sync.releaseShared(1);}当一个线程调用await方法时,就会阻塞当前线程。每当有线程调用一次 countDown 方法时,

2021-07-27 14:44:04 46

原创 AQS的基本原理

AQS的定义AQS 是⼀个⽤来构建锁和同步器的框架,使⽤ AQS 能简单且⾼效地构造出应⽤⼴泛的⼤量的同步器,⽐如我们提到的 ReentrantLock ,countdownlatchcyclicbarrierAQS 核⼼思想如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的⼯作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占⽤,那么就需要⼀套线程阻塞等待以及被唤醒时锁分配的机制,这个机制 AQS 是⽤ CLH 队列锁实现的,即将暂时获取不到锁的线程加⼊到队列中。.

2021-07-27 14:22:09 2473

转载 JMM和happens-before规则

JMM的介绍在多线程下代码执行的结果与预期正确的结果不一致,该代码就是线程不安全的出现线程安全问题一般是主内存和工作内存数据不一致和重排序导致的在多线程条件下,一般有涉及到多个线程相互通信,和告知对方执行结果。另外为了性能优化还会涉及到编译器指令重排序和处理器指令重排序在并发编程中主要需要解决两个问题:1. 线程之间如何通信;2.线程之间如何完成同步(这里的线程指的是并发执行的活动实体)。通信是指线程之间以何种机制来交换信息,主要有两种:共享内存和消息传递。这里,可以分别类比上面的两个举例。

2021-03-11 09:17:28 169

原创 《Java编程思想》旧File笔记

获取功能的方法String getAbsolutepath(); 返回file的绝对路径的字符串String getPath ;//将此File转化为路径名字符串public String getName() ;返回由此File表示的文件或目录的名称long length() ; 返回长度判断功能的方法public boolean exists()public boolean isDirectory 是否为目录public boolean isFile 是否为文件创建删除功能

2021-03-06 10:57:00 39

原创 《Java编程思想》String笔记

正则表达式在正则表达式中,用 \d 表示一位数字,在其他语言中,\ 表示“我想要在正则表达式中插入一个普通的(字面上的)反斜线,请不要给它任何特殊的意义。”而在Java中,\ 的意思是“我要插入一个正则表达式的反斜线,想表示一位数字那么正则表达式应该是 \d。如果你想插入一个普通的反斜线,应该这样写 \\。不过换行符和制表符之类的东西只需要使用单反斜线:\n\t在正则表达式中,用括号将表达式进行分组,用竖线 | 表示或操作例如:+911".matches("(-|\\+)?\\d+") 这个正则表

2021-03-06 10:52:44 81

原创 《Java编程思想》-内部类

普通内部类① 可以在其外部类范围内创建对象② 不能在非static 内部类当中 创建 static 方法static域public class Test {class Destination {private String label;Destination(String whereTo) {}== ② // private static void enen() {}==}public Destination destination(String hh) {return n

2021-03-06 10:51:47 35

原创 mysql笔记

DQL语言select 查询列表 from 表名查询表中的单个字段USE myemployees #每次都记得写用了哪个库SELECTlast_nameFROMemployees;查询表中所有字段方式一 鼠标 左键双键选择表, F12改变书写格式SELECTfirst_name,last_name,email,phone_number,job_id,salaryFROMemployees;方式二SELECT * FROM employees;

2021-03-06 10:51:10 37

原创 《Java编程思想》file笔记

文章目录第十七章 文件文件和目录路径选取路径部分片段路径分析**Paths**的增减修改文件系统(感觉没啥用)路径监听第十七章 文件文件和目录路径一个 Path 对象表示一个文件或者目录的路径,是一个跨操作系统(OS)和文件系统的抽象,目的是在构造路径时不必关注底层操作系统java.nio.file.Paths 类包含一个重载方法 static get(),该方法接受一系列 String 字符串或一个统一资源标识符(URI)作为参数,并且进行转换返回一个 Path 对象:Files.ex

2021-03-06 10:50:37 50

原创 《Java编程思想》代码校验笔记

文章目录第十六章 代码校验JUnit第十六章 代码校验JUnit@BeforeAll 注解是在任何其他测试操作之前运行一次的方法。@AfterAll 是所有其他测试操作之后只运行一次的方法。两个方法都必须是静态的。@BeforeEach注解是通常用于创建和初始化公共对象的方法,并在每次测试前运行。可以将所有这样的初始化放在测试类的构造函数中(但作者认为这样更好)@AfterEach。如果你必须在每次测试后执行清理(如果修改了需要恢复的静态文件,打开文件需要关闭,打开数据库或者网络连接,et

2021-03-06 10:50:21 53

空空如也

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

TA关注的人

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