自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Dubbo启动

11

2022-07-21 15:53:41 1098

原创 springboot简单入门

在入口的同级目录下构造controller包启动入口。

2022-07-19 16:35:28 336

原创 蓝桥杯注意事项

如何表示一个很大的整数 long n=2021041820210418l;注意:要在数字后面加上l.

2022-03-18 10:14:33 522 1

原创 我们都是小青蛙文章------锁

type_mode是用于区分这个锁结构到底是行锁还是表锁,如果是表锁的话是意向锁、直接 对表加锁、还是AUTO-INC锁,如果是行锁的话,具体是正经记录锁、gap锁还是next-key锁。InnoDB的行锁是与记录一一对应的。即使是对于gap锁来说,在实现 上也是为某条记录生成一个锁结构,然后该锁结构的类型是gap锁而已,并不是专门为某个 区间生成一个锁结构。该gap锁的功能就是每当有别的事务插入记录时,会检查一下待插入 记录的下一条记录上是否已经有一个gap锁的锁结构,如果有的话就进入阻塞状态。..

2022-02-27 13:45:27 338

原创 第六章:锁

锁机制是为了:最大程度利用数据库的并发访问,并确保每个用户以一致性读取和修改数据。lock和latch锁锁的类型共享锁(s锁),允许事务读一行数据排他锁(x锁),允许事务删除或者更新一行数据对同一行记录锁的兼容性。多粒度锁:行锁(细粒度),表锁(粗粒度)。对细粒度对象上锁,先对粗粒度对象上锁。意向锁是表级别的锁,设计目的是为了在下一个事务揭示下一行将被请求的锁的类型。意向锁会阻塞全表扫描的请求,不会阻塞其他请求。一致性非锁定读通过MVC...

2022-02-26 22:30:16 696

原创 MySQL锁

怎么解决脏读、不可重复读、幻读这些问题呢?其实有两种可选的解决方案: 方案一:读操作利用多版本并发控制(MVCC),写操作进行加锁。 MVCC通过生成一个ReadView,然后通过ReadView找到符合条件的记录版本(历史版本是由undo日志构建的),其实就像是在生成ReadView的那个时刻做了一次时间静止(就像用相机拍了一个快照),查询语句只能读到在生成ReadView之前已提交事务所做的更改,在生成ReadView之前未提交的事务或者之后才开启的事务所做的更改是看不到的。而写操作肯定针对的

2022-02-26 20:54:02 358

原创 事务隔离级别和MVCC

脏写:如果一个事务修改了另一个未提交事务修改过的数据,那就意味着发生了脏写。脏读:如果一个事务读到了另一个未提交事务修改过的数据,那就意味着发生了脏读不可重复读:事务两次读同一个数据结果却不一样。 和脏读的区别在于,脏读读到的是未提交的数据,不可重复读读到的是其他事务已经提交的数据。幻读:两次查同一范围,查询到的数据数目不同(因为有另一事务操作)。给这些问题按照严重性来排一下序:脏写 > 脏读 > 不可重复读 > 幻读4个隔离级别: READ UNCOM

2022-02-26 13:00:02 1040

原创 第七章:事务

认识事物事务可以由简单SQL语句组成,也可以由一组SqL语句组成。对于事务的操作,要么都成功,要么都不成功。ACIDA:原子性。要么都成功,要么都不成功。C:一致性。事务开始和结束,数据库的完整性约束没有被破坏。I:隔离性。某个事务提交之前对别的事务不可见,锁实现。D:持久性。事务一旦提交,结果就是永久性的。持久性保证的是高可靠性,而不是高可用性。分类扁平事务:所有操作都是同层次的,原子性。带有保存点的事务:允许事务回滚到之前的某一状态。链事务:带有保存点的事务当系统

2022-02-25 20:29:05 296

原创 MySQL是怎样运行的读书笔记-------事务+redo日志+undo日志

把需要保证原子性、隔离性、一致性和持久性的一个或多个数据库操作称之为一个事务。有当事务处于提交的或者中止的状态时,一个事务的生命周期才算是结束了。对于已经提交的事务来说,该事务对数据库所做的修改将永久生效,对于处于中止状态的事务,该事务对数据库所做的所有修改都会被回滚到没执行该事务之前的状态。事务的语法开启事务BEGIN [WORK];START TRANSACTION;在START TRANSACTION语句后边跟随几个修饰符,就是它们几个:READ ONLY:标.

2022-02-25 13:20:54 679

原创 并查集Java实现

并查集代码实现:public class UnionFind { private int count; //记录连通分量,即块数多少 private int[]parent; //节点x的根节点是parent[x] public UnionFind(int n){ //一开始互不相通 this.count=n; //一开始,每个节点是自己的父节点 parent=new int[n]; ...

2022-02-23 10:59:38 358 2

原创 第五章:索引与算法

索引太多,应用程序的性能会下降。索引太多,查询性能下降。概述InnoDB存储引擎支持以下索引:B+树索引,全文索引,哈希索引。数据结构与算法二分查找法二叉查找树和平衡二叉树B+树B+树索引B+树高度一般2-4层。聚集索引通过主键构建一颗B+树。数据页之间双向链表连接。数据页上存放的是完整行记录。索引页中存放的是键值和指向数据页的偏移量。聚集索引的存储不是物理上连续的,而是逻辑上连续的。范围查询:查找主键某一范围内的数据,...

2022-02-22 21:24:15 179

原创 第四章:表

索引组织表定义:InnoDB引擎中表都是根据逐渐顺序组织存放的。主键创建:①显示创建②将非空唯一索引变成主键(若出现多个,,将第一个当主键)③自动创建InnoDB逻辑存储结构表空间:所有数据都放在一个空间中。表空间可分为段,区,页。表空间所有数据都放在共享表空间中。独立表空间中存放的是数据,索引,插入缓冲页。其他数据还是在共享表空间中。共享表空间扩大后不能收缩回去,会标记那些空间为可用空间。段数据段,索引段,回滚段。数据段为B+树的叶子节点,索

2022-02-22 19:34:23 289

原创 数据结构----堆

堆是一个完全二叉树。堆中每个节点大于或等于左右子节点(大根堆),小根堆相反。即大根堆最大元素在堆顶,小根堆最小元素在堆顶。堆使用数组存储堆常用于解决topK问题例题1:215. 数组中的第K个最大元素class Solution { public int findKthLargest(int[] nums, int k) { //小根堆size=k,则堆顶就是第k个大的元素。 Queue<Integer> qp=new Priori.

2022-02-21 22:36:41 303

原创 蓝桥杯2020大学B组省赛

1.门派制作import java.util.Scanner;// 1:无需package// 2: 类名必须Main, 不可修改public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //在此输入您的代码... int n=2020; int count=0; w.

2022-02-21 16:08:06 6872

原创 搜索与图论

DFS一般开辟一个visited数组记录是否走过。深度优先搜索一般使用栈来实现。int dfs(int u){ st[u] = true; // st[u] 表示点u已经被遍历过 for (int i = h[u]; i != -1; i = ne[i]) { int j = e[i]; if (!st[j]) dfs(j); }}BFSBFS常使用队列queue存储。向波纹一样一圈一圈出去。广度优先搜索一般使用

2022-02-20 20:55:26 145

原创 第三章:文件

参数文件MySQL实例启动时,数据库会先读取一个配置参数的文件。MySQL实例启动可以不需要配置参数的文件,此时参数值取决于默认值。MySQL参数文件是以文本文件的方式进行存储的。参数类似于一个键值对,如:key:缓冲池大小size,value:1G。参数类型动态参数:在MySQL实例运行过程中可以更改。 用set命令进行更改。静态参数:在整个实例生命周期中不能更改。global:整个生命周期生效。session:当前会话生效。日志文件错误文件记录所有错误

2022-02-20 17:07:16 374

原创 单例模式qq

定义:一个类有且仅有一个对象。例子:皇帝类:臣子类:写单例模式模板代码:优点:缺点:使用场景:

2022-02-20 15:48:51 239

原创 第二章:InnoDB存储引擎

概述:InnoDB存储引擎版本InnoDB体系结构InnoDB存储引擎有很多内存块,构成了一个大的内存池后台线程innodb是多线程的,不同后台线程处理不同任务。Master ThreadIO Thread:负责IO请求的回调处理。Purge Thread:事务被提交后,其所使用的undolog可能不再需要,该线程来回收已经使用并分配的undo页Page Cleaner Thread:将之前版本的脏页刷新操作都放入...

2022-02-19 21:49:28 367

原创 第一章MySQL

2022-02-19 16:57:51 214

原创 《MySQL是怎么样运行的》读书笔记五---InnoDB 统计数据是如何收集的

InnoDB提供了两种存储统计数据的方式: 永久性的统计数据(磁盘中) 这种统计数据存储在磁盘上,也就是服务器重启之后这些统计数据还在。 非永久性的统计数据(内存中) 这种统计数据存储在内存中,当服务器关闭时这些这些统计数据就都被清除掉了,等到服务器重启之后,在某些适当的场景下才会重新收集这些统计数据。 控制存储方式的系统变量:innodb_stats_persistent的值默认是OFF,默认是存储到内存的,之后的版本中innodb_stats_persistent的值默认是O

2022-02-15 17:10:51 438

原创 《MySQL是怎么样运行的》读书笔记四--基于成本的优化

基于成本的优化MySQL中一条查询语句的执行成本是由下边这两个方面组成的:查询成本=I/O成本+CPU成本I/O成本:从磁盘到内存这个加载的过程损耗的时间称之为I/O成本。CPU成本:读取以及检测记录是否满足对应的搜索条件、对结果集进行排序等这些操作损耗的时间称之为CPU成本。成本常数:一个页面花费的成本默认是1.0,读取以及检测一条记录是否符合搜索条件的成本默认是0.2。1.0、0.2这些数字称之为成本常数。基于成本的优化步骤: 根据搜索条件,找出所有可能使用的索引(找出

2022-02-15 16:42:50 1176

原创 单调栈,单调队列

单调栈通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。在使用单调栈的时候首先要明确如下几点:1.单调栈里存放的元素是什么?可能是存放的数组的下标,也可能是存放的数组的元素。(建议还是存放数组的下标)2.单调栈里元素是递增呢? 还是递减呢?注意一下顺序为 从栈头到栈底的顺序。单调栈,栈内顺序要么从大到小 要么从小到大小tips:如何明确栈内顺序:首先定义一个栈。读题目,假设从左到右依次进栈,如果栈顶元素大于.

2022-02-15 11:33:31 268

原创 关于Deque,Queue的小tips

QueueQueue是单入单出的队列。1.构造一个Queue:Queue<String> queue = new LinkedList<String>();2.添加元素:queue.offer("a");3.返回第一个元素,并在队列中删除String str=queue.poll();4.遍历queue: for(String q : queue){ System.out.println(q); }

2022-02-13 16:03:35 333

原创 关于HashMap的小tips

HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。import java.util.HashMap; // 引入 HashMap 类常用:hashmap中不存在就添加,存在value值加1:map.put(i,map.getOrDefault(i,0)+1);//如果不存在key为1的键值对就添加,存在则对应的value值加1。建立哈希表 HashMap<Integer, String> Sites = new HashMap<Inte

2022-02-13 15:44:26 1837

原创 《MySQL是怎么样运行的》读书笔记三--单表查询和两表连接

单表访问方法查询的执行方式大致分为下边两种:使用全表扫描进行查询使用索引进行查询。唯一二级索引就是作为索引的那列值都是唯一的,没有重复的。const意思是常数级别的,代价是可以忽略不计的。不过这种const访问方法只能在主键列或者唯一二级索引列和一个常数进行等值比较时才有效ref用普通二级索引找到对应记录的id值,然后再回表到聚簇索引中查找完整的用户记录。ref_or_null有时候我们不仅想找出某个二级索引列的值等于某个常数的记录,还想把该列的值为NULL的记录

2022-02-11 17:18:23 337

原创 《MySQL是怎么样运行的》读书笔记二---表空间

MySQL 的数据目录本章就是要唠叨一下InnoDB和MyISAM这两个存储引擎的数据如何在文件系统中存储的。数据目录:MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就称为数据目录,我们下边就要详细唠唠这个目录下具体都有哪些重要的东西。数据目录和安装目录的区别数据目录是用来存储MySQL在运行过程中产生的数据。数据目录的结构我们每当我们新建一个数据库时,进行的操作: 在数据目录下创建一个和

2022-02-11 15:54:44 351

原创 关于固定的滑动窗口小tips

438. 找到字符串中所有字母异位词

2022-02-11 14:25:07 294

原创 关于String,char数组,整数相互转换

对于字符串转为char数组 String s=new String("abcdefg"); System.out.println("字符串转为数组"+s.toCharArray());输出结果为:字符串转为数组[C@135fbaa4输出结果为字符串的地址。对于char数组转为字符串应当使用String.valueOf()不要使用toString() char[] arr=new char[]{'1','2','6','8','5'}; String

2022-02-11 13:38:50 225

原创 快速求得 a和 b 的最大公约数

「更相减损法」和「欧几里得算法」欧几里得算法 int gcd(int a, int b) { // 欧几里得算法 return b == 0 ? a : gcd(b, a % b); }更相减损法int gcd(int a, int b) { // 更相减损法 while (true) { if (a > b) a -= b; else if (a < b) b -= a; ...

2022-02-10 11:45:13 334

原创 MySQL是怎样使用的

第2章、MySQL初体验服务器程序MySQL安装目录下的bin目录下的mysqld可执行文件代表着服务器程序 。客户端程序bin目录下有许多客户端程序,比方说mysqladmin、mysqldump、mysqlcheck等等等等。mysql -h主机名 -u用户名 -p密码断开客户端与服务器的连接并且关闭客户端quit exit \q注意,这只是关闭客户端程序的方式 。第3章、MySQL数据类型MySQL的整数类型INT :4字节BIGINT :8字节

2022-01-25 13:19:41 2118

原创 小林coding计网

TCP篇TCP 是⾯向连接的、可靠的、基于字节流的传输层通信协议。TCP连接是点对点,而UDP是一对多Socket:由 IP 地址和端⼝号组成序列号:⽤来解决乱序问题等窗⼝⼤⼩:⽤来做流量控制TCP 四元组可以唯⼀的确定⼀个连接,四元组包括如下: 源地址 源端⼝ ⽬的地址 ⽬的端⼝。源地址和⽬的地址的字段(32位)是在 IP 头部中,作⽤是通过 IP 协议发送报⽂给对⽅主机。源端⼝和⽬的端⼝的字段(16位)是在 TCP 头部中,作⽤是告诉 TCP 协议应该把报⽂发给哪

2022-01-19 13:04:40 2533

原创 寒假Day4

力扣每日一题存在重复元素 II样例为[1,2,1] 0时不过。因为,这代码是先判断set是否满了再添加。如果k为0,则set初始就为0。直接错。class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { Set<Integer> set=new HashSet<>(); for(int i=0;i<nums.length;i..

2022-01-19 11:15:17 290

原创 寒假Day3

1、图解TCP/IP IP部分看完了,明天开始TCP部分2、MySQL是怎样运行的刚开始看3.算法看了一下背包问题最小时间差打卡每日一题移除元素双指针法704. 二分查找二分又写错了好几次。。。。。。26题没做出来,明天做。。。不学前端了,没兴趣。。。今天主要是因为办身份证耽搁了一下午,才学这么点。...

2022-01-18 21:18:05 624

原创 启动选项和配置文件

bb

2022-01-18 19:14:30 320

原创 《MySQL是怎么样运行的》读书笔记一 数据页+索引

登录MySQLcmd命令行中输入:mysql -hlocalhost -uroot -p之后输入密码。对于Windows系统来说,默认的用户名是ODBC,你可以通过设置环境变量USER来添加一个默认用户名。MySQL采用TCP作为服务器和客户端之间的网络通信协议。MySQL服务器启动的时候会默认申请3306端口号,之后就在这个端口号上等待客户端进程进行连接,用书面一点的话来说,MySQL服务器会默认监听3306端口。我们在使用mysql来启动客户端程序时,在-h参数后必须跟随

2022-01-18 18:12:45 905

原创 寒假打卡day2

力扣:跟着carl刷题,刷了几道dp。回文链表(用的栈方法,反转链表又不会了)根据字符出现频率排序(思路正确,二维数组排序不会)Arrays.sort(arr,(a,b) -> b[1]-a[1]);//按照字符频率从大到小排序不同的二叉搜索树整数拆分这题不错前端:复习了一下css和盒子模型,js没看。。计网:图解TCP/IP看到了IP协议。...

2022-01-17 21:14:47 348

原创 《图解TCP/IP》读书笔记

第一章:网络基础知识协议协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定”。这种“约定”使那 些由不同厂商的设备、不同的CPU以及不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。反之,如果所使用的协议不同,就无法实现通信。这就好比两个人使用不同国家的语言说话,怎么也 无法相互理解。协议可以分为很多种,每一种协议都明确地界定了它的行为规范。两台计算机之间必须能够 支持相同的协议,并遵循相同协议进行处理,这样才能实现相互通信。分组交换协议分组交换是指将大数据分割

2022-01-17 12:15:24 1779

原创 寒假打卡day1

刷题:力扣每日一题:产生随机数:力扣刷题有感:Random random=new Random();//定义随机类inta=random.nextInt(n);生成一个随机数a,a的范围为【0,n)左闭右开

2022-01-16 10:11:35 3712

原创 力扣dp模板

力扣class Solution { public boolean wordBreak(String s, List<String> wordDict) { boolean[] dp=new boolean[s.length()+1]; dp[0]=true;//初始状态 for(int i=1;i<=s.length();i++){ for(int j=0;j&.

2021-11-30 14:35:47 227

原创 链表(用数组模拟)

之所以不用new是因为new耗费空间单链表:这里使用的是数组模拟单链表// head存储链表头,e[]存储节点的值val,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插入一个数avoid insert(int a){ e[idx] = a, ne[idx] = head, head.

2021-11-23 23:12:40 243

空空如也

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

TA关注的人

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