自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL和Oracle的区别

MySQL和Oracle的区别一、宏观上:1、Oracle是大型的数据库而Mysql是中小型数据库;Mysql是开源的,Oracle是收费的,且价格昂贵。2、Oracle支持大并发,大访问量,是OLTP的最好的工具。3、安装占用的内存也是有差别,Mysql安装完成之后占用的内存远远小于Oracle所占用的内存,并且Oracle越用所占内存也会变多。二、微观上:1、对于事务的支持Mys...

2019-07-14 10:31:15 67912 10

原创 webmagic

webMagic,通过定时任务,分页爬取数据,并进行持久化

2022-06-25 15:21:03 552 1

原创 easyexcel

easyExcel学习笔记

2022-06-19 15:52:42 882

原创 vueday1

vue学习

2022-06-14 23:03:17 158 1

原创 dom4j

xml与json转换

2022-06-12 16:43:44 866

原创 excel学习笔记

excel

2022-06-06 22:20:49 1030

原创 多表查询与单表查询效率问题

多表查询与单表查询效率问题图片是引用网上的,觉得说的挺好的,博主也是近期一直在考虑这个效率的问题。

2021-03-04 15:56:33 556 1

原创 java学习路线

路漫漫其修远兮,吾将上下而求索。加油!!!java知识体系:1. java基础知识1.1 java概述1.2基础语法1.3面向对象1.4集合框架1.5IO流1.6网络编程1.7常见的API1.8常见的工具类库1.9异常2. 常用工具2.1 IDEA2.2 Eclipse2.3 Maven2.4 Docker2.5 Git2.6 SVN2.7 Navicat3. 并发编程3.1基础知识3.2并发理论3.3并发关键字3.4Lock体系3.5并发容器3.6线程

2021-02-09 13:34:14 174 2

原创 分享毕设

有意者请留言!

2021-01-29 15:10:19 611 4

原创 mysql 之死锁问题

一、死锁死锁,是指两个或两个以上的食物在执行过程中,因锁资源而造成的一种互相等待的现象。若无外力作用,事物都将无法推进下去。解决随所问题的方法:超时,即两个事务互相等待时,当一个等待时间超过设置的某一阈值时,其中一个事务进行回滚,另一个等待的事务就能继续进行。wait-for graph(等待图)的方式进行死锁检测。二、wait-for graphwait-for graph要求数据库保存两种信息:锁的信息链表和事务等待链表。通过这两类链表可一构造出一张图。若这个图中存在回路,就代表存在死锁

2020-12-10 17:21:23 456 1

原创 mysql事务的隔离级别

一、读未提交(READ UNCOMMITTED)在这种隔离级别下,事务都能读取到其他事务未提交的数据,会造成脏读。二、读已提交(READ COMMITTED)在这种隔离级别下,事务只能读取到其他事务已经提交的内容。能够解决脏读的现象,但是会造成不可重复读。三、可重复读(REPEATABLE READ)在这种隔离级别下, 事务前后多次的读取到的数据内容是不变的。能够解决不可重复读。mysql的可重复读,使用间隙锁(Gap Lock)的方式可以解决幻读的问题。四、可串行化(Serializable

2020-12-10 15:14:22 120

原创 脏读、不可重复读、幻读

脏读、不可重复读、幻读脏读,事务T1第二次读取时,读到了事务T2未提交的数据,这时,T2回滚,T1读取到的是脏数据。不可重复读,事务T1第二次读取时,读到了事务T2已提交的数据,T1前后两次读取的数据内容不一致。不可重复读和脏读的区别:脏读是读取到未提交的数据,而不可重复读,读到的是已经提交的数据。脏读违反了数据库事务隔离性,不可重复读违反的是事务一致性的要求。幻读,与不可重复读一样,也是读取到了事务T2已提交的数据。幻读与不可重复读的区别:不可重复读,事务T1第二次读取与第

2020-12-10 14:58:24 206

原创 Phantom Problem(幻读)问题

Phantom Problem是指同一事务下,连续执行两次同样的SQL语句可能导致不同的结果,第二次的SQL语句可能会返回之前不存在的行。在默认的事务隔离级别下,即REPEATABLE READ下,InnoDB存储引擎采用Next-Key Locking机制来避免Phantom Problem(幻读问题)。举个栗子:创建测试表t:CREATE TABLE t (a INT PRIMARY KEY);INSERT INTO t SELECT 1;INSERT INTO t SELECT 2;INS

2020-12-09 16:47:24 2197 6

原创 加油,打工人!

2020-12-09 15:30:00

2020-12-09 15:30:49 113

原创 一致性非锁定读与一致性锁定读

一致性非锁定读(consistent nonlocking read)是指InnoDB存储引擎通过 行多版本控制(multi versioning)的方式来读取当前执行时间数据库中行的数据。如果读取的行正在执行DELETE或UPDATE操作,这时读取操作不会因此去等待行上锁的释放,相反地,InnoDB存储引擎会去读取行的一个快照数据。如图,直观地展现了InnoDB存储引擎一致性的非锁定读。之所以称其为非锁定读,因为不需要等待访问的行上X锁的释放。快照数据是指该行的之前版本的数据,该是先是通过undo段来

2020-12-07 16:17:17 332

原创 lock与latch区别

lock与latch区别latch一般称为闩锁(轻量级锁),因为其要求锁定的时间必须非常短。若持续的时间长,则应用的性能会非常差。在InnoDB存储引擎中,latch又分为mutex(互斥锁)和rwlock(读写锁)。其目的是用来保证并发线程操作临界资源的正确性,并且通常没有死锁检测的机制。lock的对象是事务,用来锁定的是数据库中的对象,如表、页、行。并且一般lock的对象仅在事务commit或rollback后进行释放(不同事务隔离级别释放的时间可能不同)。此外,lock,正如在大多数数据库中一样,

2020-12-07 10:31:38 4251 8

原创 MySQL中Cardinality值的介绍

1. 什么是Cardinality不是所有的查询条件出现的列都需要添加索引。对于什么时候添加B+树索引。一般的经验是,在访问表中很少一部分时使用B+树索引才有意义。对于性别字段、地区字段、类型字段,他们可取值范围很小,称为低选择性。如SELECT * FROM student WHERE sex=‘M’按性别进行查询时,可取值一般只有M、F。因此SQL语句得到的结果可能是该表50%的数据(加入男女比例1:1)这时添加B+树索引是完全没有必要的。相反,如果某个字段的取值范围很广,几乎没有重复,属于高选择

2020-12-04 10:52:41 948

原创 mysql聚集索引与辅助索引

聚集索引:按照每张表的主键构造一颗B+树。同时也叶子节点中存放的即为整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分。同B+树数据结构一样,每个数据页一样都是通过一个双向链表来进行链接。 由于实际的数据页只能按照一棵B+树进行排序,因此数据库中每张表只能有一个聚集索引。聚集索引的好处:数据页上存放的是完整的每行的纪录,而非数据页的索引页中,存放的仅仅是键值及指向数据页的偏移量,而不是一个完整的行记录它对于主键的排序查找和范围查找速度非常快注:聚

2020-12-03 16:10:05 276 1

原创 Compact行记录

​ InnoDB存储引擎和大多数数据库一样,记录是以行的形式存储的。这就意味着页中保存着表中一行行的数据。在InnoDB 1.0x版本之前,InnoDB存储引擎提供了Compact和Redundant两种格式来存放行记录数据。Redundant格式是为了兼容之前版本而保留的。源码中使用PHYSICAL RECORD (NEW STYLE) 和PHYSICAL RECORD (OLD STYLE)来区分两种格式的。在mysql5.1版本中,默认设置为Compact行格式。可以通过命令SHOW TABLES S

2020-11-25 17:20:17 410

原创 索引组织表与InnoDB逻辑存储结构

索引组织表InnoDB逻辑存储结构表空间段区页行1. 索引组织表​ 在InnoDB存储引擎中,表都是根据住建顺序组织存放的,这种存放方式的表称为索引组织表。每一张表都有个主键,如果在创建表时没有显示的定义主键,会按照如下方式选择或创建主键:先判断表中是否有非空的唯一索引,有,则该列为主键;上述条件不符合,InnoDB引擎会自动创建一个6字节大小的指针。注:当表中有多个非空唯一索引时,会选择建表时第一个定义的非空唯一索引为主键_rowid可以显示表的主键,需要注意的是,.

2020-11-24 17:11:33 191

原创 (六)innodb关键特性之自适应哈希索引、异步IO、刷新邻接页

InnoDB存储引擎的关键特性包括:插入缓冲(Insert Buffer)两次写(double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻接页(Flush Neighbor Page)自适应哈希索引哈希是一种非常快的查找方法,在一般情况时间复杂度为O(1)。而B+树的查找次数,取决于B+树的高度,在生产环境中,B+树的高度一般为3-4层,故需要查询3-4次。InnoDB存储引擎会监控对表上各索引页的查询。如果

2020-11-23 11:17:14 123

原创 (五)innodb关键特性之两次写(double Write)

InnoDB存储引擎的关键特性包括:插入缓冲(Insert Buffer)两次写(double Write)自适应哈希索引(Adaptive Hash Index)异步IO(Async IO)刷新邻接页(Flush Neighbor Page)1. 应用场景如果说Insert Buffer带给InnoDB存储引擎的是性能上的提升,那么double Write带给InnoDB存储引擎的是数据页的可靠性。当发生数据库宕机时,可能InnoDB存储引擎正在写入某个页到表中,而这个页只写了一部分,比

2020-11-23 11:01:42 271

原创 (四)innodb关键特性之Insert Buffer

InnoDB存储引擎的关键特性包括:插入缓冲(Insert Buffer)两次写(double Write)自适应哈希索引(Adaptive Hash Index)异步IO()刷新邻接页插入缓冲1. Insert Buffer​ Insert Buffer是InnoDB存储引擎关键特性中最令人激动与兴奋的一个功能。不过这个名字可能会让人认为插入缓冲是缓冲池中的一个组成部分。其实不然,InnoDB缓冲池中有Insert Buffer信息固然不错,但是Insert Buf

2020-11-20 16:03:27 1061 6

原创 (三)Master Thread 不同版本的工作方式

一. InnoDB 1.0x版本之前的Master Thread​ Master Thread具有最高的线程优先级别,内部由多个循环组成:主循环(loop)、后台循环(background loop)、刷新循环(flush loop)、暂停循环(suspend loop),Master Thread会根据数据库运行的状态进行循环之间的切换。​ Loop主循环(大多数操作都在这个循环下)这个由两大部分操作,每秒和每10秒操作:void master_thread() { loop: fo

2020-11-20 10:14:52 155

原创 (二)checkpoint技术学习笔记

1. Checkpoint技术主要解决的问题:缩短数据库的恢复时间;缓冲池不够用时,将脏页刷新到磁盘;重做日志不可用时。刷新脏页。2. Checkpoint分类​ 在InnoDB引擎中,Checkpoint发生的时间、条件及脏页的选择等都非常复杂。而Checkpoint所做的事情无外乎是将缓冲池中的脏页刷新回到磁盘。不同之处在于每次刷新多少页到磁盘、每次从哪里取脏页、以及什么时间触发Checkpoint。在InnoDB内部有两种Checkpoint,分别为:Sharp Checkp

2020-11-19 10:49:24 458

原创 (一)InnoDB体系架构

InnoDB存储引擎1.简介InnoDB是事务安全的Mysql存储引擎,是OLTP应用中核心表的首选存储引擎。2.InnoDB体系架构InnoDB主要包括了内存池、后台线程以及存储文件。2.1后台线程Master Thread 主要负责将缓冲池中的数据异步刷新到磁盘中,除此之外还包括插入缓存、undo页的回收等IO Thread负责读写IO的线程(1个insert buffer thread、1个log thread、4个read thread、4个write thread)Purge T

2020-11-18 16:55:06 154 2

转载 面试官问我同步容器(如Vector)的所有操作一定是线程安全的吗?我懵了!

点击查看

2020-07-21 10:17:27 160

转载 为啥用枚举,枚举有哪些用法?

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

2020-07-20 16:30:45 110

原创 JDK1.7 transfer方法与JDK1.8putVal方法解析

先上源码 1 void transfer(Entry[] newTable, boolean rehash) { //获取新Entry数组的容量 2 int newCapacity = newTable.length; //遍历旧的Entry数组 3 for (Entry<K,V> e : table) { // e的下一个entry不为null则循环(链表上的循环) 4

2020-07-16 09:14:18 405

原创 ArrayLists知识点总结

1. jian简述ArrayList底层是用数组实现的存储。特点是查询效率高,增删效率低,线程不安全,平常开发使用频率很高。2. 为什么线程不安全还使用它?因为平常开发所使用的场景中,大多数都是用来查询,不会设计太频繁的增删;如果涉及频繁的增删,可以使用LinkedList;如果需要线程安全就是用Vector,这就是三者的区别。不存在一个集合工具是查询效率又高,增删效率又高,还是线程安全的。因为数据结构的特性就是优劣共存的,想找个平衡点很难,牺牲了性能,那就安全;牺牲了安全那就快速。3. Arra

2020-07-14 17:28:01 290

原创 HashMap面试题目

HashMap1.简述HashMap是由数组和链表组合构成的数据结构,数组里每个地方豆村了Key-Value这样的实例,jdk1.7叫做Entry,jdk1.8叫做Node。初始化是所有位置都是null,put插入的时候会根据Key的hash函数去计算出一个index值,比如index是 2 ,就将这个Key-Value插入到数组下标为2 的位置。2.为什么需要链表,链表又是什么样子的?由于数组的长度是有限的,在有限的数组长度使用哈希,不同的key 经过hash会hash到同一个值上,这样就形成了链

2020-07-09 17:58:47 2223

原创 java定时任务代码实现

在JDK库中,有两种技术可以实现定时任务的类。一种是使用Timer,另外一个则是ScheduledThreadPoolExecutor。1.Timerpublic class Mytask extends TimerTask { @Override public void run() { writeStringToFile("C:\\Users\\hp\\Des...

2020-05-07 11:16:26 582

原创 十大经典排序算法

1. 选择排序算法描述:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。其次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。public static int[] selectSort(int[] arr) { for (int i= 0;i<arr.leng...

2019-11-19 10:56:40 183

原创 SpringBoot项目整合swagger2

1. 添加maven依赖建议使用2.7.0版本 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.7.0</versio...

2019-11-13 13:57:11 132

原创 Codis是什么?

1. 什么是Codis一个分布式 Redis 解决方案,多个 Redis 节点构成的集群上层应用可以像使用单机的 Redis 一样使用,Codis 底层会处理请求的转发,不停机的数据迁移等工作Redis 实例的CPU计算能力汇集到一起,从而完成关于大数据和高并发量的的读写操作2. 组成部分Codis Server:基于 redis-3.2.8 分支开发。增加了额外的数据结构,以支持 ...

2019-11-07 13:53:08 1395

原创 Lamdba常见接口

1. lambda表达式中调用方法使用 :: 关键字来传递方法(包括静态方法和非静态方法)public class LambdaTest { public static void main(String[] args) { LambdaTest t = new LambdaTest(); //使用Lambda引用类的静态方法 //能引用Integer类中的静态方法...

2019-11-05 15:40:24 187

原创 Lambda表达式

1.主体结构Lambda 表达式拆分成两部分 :左侧 : Lambda 表达式的参数列表;右侧 : Lambda 表达式中所需执行的功能, 即 Lambda 表达式;2.基本语法(参数) -> Lambda 表达式3.使用场景3.1 foreach遍历list集合 String[] name={"喵星人","铲*官"}; List&l...

2019-11-05 11:18:27 166

原创 JPA常用注解

1.@Entity 标识这个pojo是一个实体2.@Table(name=users)设置表名3.@Id 设置主键4.@Column 设置字段类型name : 表中对应的字段名unique : 是否唯一nullable: 是否为空inserttable:是否可以插入updateable:是否可以更新columnDefinition: 定义建表时创建此列的DDL...

2019-10-30 10:36:40 416

原创 #1024程序员节

#1024程序员节,bug越来越少

2019-10-24 15:05:08 134

原创 POI与easyPOI的导入导出

1.技术简介 Apache POI 是 Apache 软件基金会的开放源码函式库,POI 提供 API 给 Java 程序对Microsoft Office 格式档案读和写的功能。2.技术特点1. 效率高2. 支持公式,宏,一些企业应用上会非常实用3. 能够修饰单元格属性4. 支持字体、数字、日期操作5. API 丰富,支持多种模式的读写6. 支持大数量大文件的读写操作...

2019-08-21 19:37:36 2592 1

application-dev.yml

application-dev.yml

2023-06-03

毕业设计图书网站源码

图书网站源码:1.使用oracle数据库实现数据的存储;2.通过java语言和Struts2 +mybatis框架来实现本系统的业务功能;3.开发工具使用的是MyEclipse2014完成整个系统的开发;4.相信这个网站很实用,可以参考。

2019-07-02

空空如也

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

TA关注的人

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