
SONNIE的学习之路
文章平均质量分 85
SONNIE在路上
韶华易逝
展开
-
深入Java线程池(源码)
文章目录**线程池与线程对比****线程****线程池**为什么要用线程池?常用线程池的比较三种常见创建线程池的方法,用哪个多?线程池7大参数为什么要用阻塞队列,普通队列不可以吗?拒绝策略当线程数到达了核心线程数后,为什么新的请求进来要先添加到队列中而不是直接创建新的线程?线程池工作原理ThreadPoolExecutor源码分析类结构运行状态execute()addWorker()WorkerrunWorker()getTask 线程池与线程对比 线程 public class ThreadTest {原创 2022-05-04 01:29:30 · 211 阅读 · 0 评论 -
深入理解ReentrantLock(源码)
ReentrantLock 同时支持公平锁和非公平锁以及可重入是ReentrantLock的两大重要特点。那么,你知道它的实现原理吗? 了解类关系 ReentrantLock实现了Lock接口。 public class ReentrantLock implements Lock, java.io.Serializable Sync是ReentrantLock内部的一个抽象类,它继承了AQS,也就是抽象队列同步器。 abstract static class Sync extends AbstractQ原创 2022-04-27 01:09:38 · 120 阅读 · 0 评论 -
MySQL之事务
事务 事务及其特性 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。 原子性(Atomicity) :事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。 一致性(Consistent) :在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规 则都必须应用于事务的修改,以保持数据的完整性。 隔离性(Isolation) :数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独 立”环境执行。这意味着事务处理过程中的原创 2022-04-18 01:33:09 · 708 阅读 · 0 评论 -
MySQL之sql优化实战
sql优化实战 全值匹配 联系联合索引原理 EXPLAIN SELECT * FROM employees WHERE age = 22 AND position ='manager'; [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wkwJIECn-1650216677819)(E:\file\学习\课后总结\MySQL\assert\image-20220418003554360.png)] EXPLAIN SELECT * FROM employees WHERE原创 2022-04-18 01:31:53 · 465 阅读 · 0 评论 -
MySQL之explain
Explain工具 介绍 使用 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL,如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中。 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈。 变种 explain extended:会在 explain 的基础上额外提供一些查询优化的信息。紧随其后通过 sho原创 2022-04-18 01:30:58 · 561 阅读 · 0 评论 -
MySQL之索引
什么是索引? 是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据 更通俗的说,索引就相当于目录 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针,它是要占据物理空间的 索引的优缺点 索引的优点: 1、大大加快数据查询速度 索引的缺点: 1、维护索引需要耗费数据库资源 2、索引需要占用磁盘空间 3、当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响 索引的分类 a.主键索引 设定为主键后数据库原创 2022-04-18 01:30:11 · 214 阅读 · 0 评论 -
MySQL之慢查询
慢查询? 如何定位? 根据慢查询日志 explain工具分析sql执行计划 慢查询日志? 概念 Mysql慢查询,即慢查询日志,是Mysql提供的一种日志记录方式,用来记录在Mysql中响应时长超过阈值的sql。如果不是调优需要的话,一般不建议启动该参数,因为开启慢查询日志会或多或少带来一定的性能影响 开启 默认关闭 set global slow_query_log=on 设置阈值 默认10秒 set global long_query_time=1; 慢查询日志的文件名和路径 show glob原创 2022-04-18 01:28:35 · 1387 阅读 · 0 评论 -
深入Synchronized
文章目录深入Synchronized线程安全问题临界区( Critical Section)Synchronzedsynchronized的使用底层原理synchronized的字节码指令序列**Monitor(管程/监视器)****MESA模型****wait()的正确使用姿势****notify()和notifyAll()分别何时使用****Java语言的内置管程synchronized****Monitor机制在Java中的实现**Java对象的内存布局对象头**使用JOL工具查看内存布局**对象如何原创 2022-04-05 13:09:57 · 372 阅读 · 0 评论 -
深入理解CAS
非阻塞同步之CAS 概念 互斥同步 同步是指多个线程并发访问共享数据时,保证共享数据在同一个时刻只被一条(或者是一些,当使用信号量的时候)线程使用; 互斥是实现同步的一种手段,临界区、互斥量和信号量都是常见的互斥实现方式。 **互斥是方法,同步是目的。**互斥同步是一种最常见的也是最主要的并发正确性保障手段。 互斥同步属于一种悲观的并发策略,不论共享的数据是否发生竞争,它都会进行加锁,而这会导致用户态到内核态的转换,因此互斥同步面临的主要问题是进行阻塞唤醒带来的性能开销,同时这种同步方式也被原创 2022-04-04 16:14:07 · 678 阅读 · 0 评论 -
Java8 日期时间类的使用
文章目录Java8 日期时间类的使用获取当前日期获取当前时间获取年月日信息处理特定日期周期性时间检查闰年日期计算日期比较计算日期间隔Clock时钟类处理时区获取当前时间戳格式化日期 Java8 日期时间类的使用 Java 8日期时间API的重点 提供了javax.time.ZoneId 获取时区。 提供了LocalDate和LocalTime类。 Java 8 的所有日期和时间API都是不可变类并且线程安全,而现有的Date和Calendar API中的java.util.Date和SimpleDate原创 2022-02-22 10:45:12 · 383 阅读 · 0 评论 -
springframework-scan(求指正)
文章目录AnnotationConfigApplicationContextrefresh()ClassPathBeanDefinitionScanner.classregisterBeanDefinition()registerBeanDefinition()checkCandidate()isCompatible()processCommonDefinitionAnnotations()applyDefaults()generateBeanName()determineBeanNameFromAnnot原创 2022-01-16 20:24:47 · 662 阅读 · 0 评论 -
基于Mybatis-generator插件实现的增删改查
项目结构 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tIVzhys4-1606727439204)(C:\Users\ThinkPad\AppData\Roaming\Typora\typora-user-images\image-20201130165804255.png)] 1.Pom.xml添加plugin <plugin> <!--Mybatis-generator插件,用于自动生成Mapper和POJO--> <gr原创 2020-11-30 17:13:45 · 456 阅读 · 1 评论 -
Oracle学习笔记附SQL练习上(持续更新)
Oracle Oracle概述 Oracle介绍 Oracle简介 维基百科 Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。到目前仍在数据库市场上占有主要份额。 Oracle数据特点 完整的数据管理功能: 数据的大量性 数据保存的持久性 数据的共享性 数据的可靠性 信息准则一关系型DBMS的所有信息都应在逻辑上用一种方法,即表中的值显示地表示 保证访问的准则 视图更新准则一只要形成视图的表中的数据变化了,相应的视图中的数据同时变化原创 2020-11-27 14:48:09 · 895 阅读 · 0 评论 -
Redis集成Mybatis实现分布式缓存
缓存 1.1什么是缓存? 缓存就是存在于计算机内存中的一段数据; 针对于我们的程序而言,缓存就是存在于JVM(JVM也存在于内存中)中的一段数据。 1.2缓存/内存中数据的特点 a、读写快 b、断电既失 1.3使用缓存的好处 a、提高网站响应速度,优化网站的运行 b、减轻访问数据库时给数据库带来的压力 1.4缓存的应用环境 缓存一般应用于查询较多,增删极少的业务领域 1.5项目中开发缓存模块 项目结构 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tgv5o9xq-16063原创 2020-11-25 22:23:32 · 228 阅读 · 0 评论 -
Zookeeper学习笔记(持续更新中)
Zookeeper 1.Zookeeper是什么? ZooKeeper 是一个开源的分布式应用程序协调服务框架,是 Google 的 Chubby 一个开源的实现,它提供了简单原始的功能,分布式应用可以基于它实现更高级的服务,比 如分布式同步,配置管理,集群管理,命名管理,队列管理。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在 java 上,提供 java 和 C 的客户端 API 。众所周知,协调服务非常容易出错,但是却很难恢复正常,例如,协调服务很容易处于竞态以至于出现死锁。我们原创 2020-11-25 22:19:41 · 551 阅读 · 0 评论 -
SpringBoot整合Redis+Redis缓存应用+Redis实现Session共享+...
一、SpringBoot整合Redis 1.导入依赖 <!--存在Redis依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 2.application.yml server: port:原创 2020-11-25 22:15:30 · 862 阅读 · 0 评论