自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySql通过MVCC机制来解决幻读和不可重复读

假设之后事务B修改了数据,并且提交了,这个时候A读到的数据依旧不会改变,因为事务A只会生成一次readview,之后事务A每次读取,都是基于第一次生成的readview,这里就解决了重复读问题。在事务开启的时候,都会生成一个readview,之后这个事务的所有读操作都是基于这个readview的。不可重复读现象指的是,在同一事务内,连续两次查询同一条数据,查到的结果前后不一样。假设现在有事务A和事务B并发执行,事务A的id为1,事务B的id为2.这里有两个需要区分的概念:快照读和幻读。

2023-08-10 11:27:22 86 1

原创 关于mvcc的理解

【代码】关于mvcc的理解。

2023-08-10 11:16:38 50 1

原创 Java八股文之JVM垃圾回收

可达性分析法:是通过一系列被称为“GC Roots”的对象作为起点,向下搜索,搜索所走过的路径被称为引用链,当一个对象到"GC Roots"之间没有任何引用链相连时,表明这个对象是不可达的,也就是需要回收的。Full GC/Major GC:指发生在老年代中的垃圾回收动作,出现了Full GC通常会伴随着一次Minor GC,Major GC一般比Minor GC慢十倍以上。3.空间分配担保失败,通过Minor GC后,进入老年代的平均大小大于老年代的可用空间,会导致Full GC。

2023-07-07 18:18:09 112 1

原创 Java八股文之JVM部分(内存溢出异常问题)

2.单例模式导致内存泄漏,因为单例模式的静态特性,它的生命周期和JVM生命周期一样长,如果单例对象持有外部对象引用的话,他也不会被回收。指程序中动态分配给内存一些临时对象,并且这些对象始终没有被回收,一直占用着内存。1.静态集合类引起内存泄漏,因为静态集合类的生命周期和JVM一致,所以静态集合类引用的对象不能被释放。当线程所请求的栈深度超过虚拟机允许的最大深度时,有可能发送栈溢出,比如调用递归方法时。4.数据库连接,网络连接等各种连接没有显示释放也会导致内存泄漏。1.加载的数据量过大,内存不够用了。

2023-07-07 16:52:58 117 1

原创 Java八股文之redis系列

Redis事务是一个单独的隔离操作,事务中的命令都会序列化,按顺序地执行。事务在执行的过程中,不会被其他客户端发来的命令请求所打断,所以redis事务是在一个队列中,一次性,顺序性,排他性地执行一系列命令。redis事务地主要任务就是串联多个命令防止别的命令插队。在分布式场景下,对共享资源的访问,在同一时刻,只能被一个锁占有。

2023-07-04 17:09:23 34

原创 java并发编程(二)

1.因为这些方法在操作同步线程时,都需要标识他们操作线程的锁,只有同一锁上的被等待线程,才能被同一把锁上的notify()或者notifyAll()方法唤醒,不可以被不同锁的notify或notifyAll()方法唤醒,也就是说等待和唤醒必须是同一对象。而锁可以是任意对象,所以就算object类了。线程互斥指的是每次都保证只有一个线程访问一个资源,具有排他性和唯一性,但是不保证访问的顺序性。线程同步指的是在互斥的基础上保证对线程的访问是顺序的。线程同步:1.同步方法2.同步代码块。

2023-06-21 10:39:36 68

原创 java并发编程八股文(一)

线程是处理器任务调度和处理的基本单位,进程是操作系统资源分配的基本单位。进程是程序的一次执行过程,是系统运行的基本单位,线程是比线程更小的执行单位,一个进程可以包含多个线程。

2023-06-21 07:24:54 33

原创 MySql日志相关(binlog和redolog)

(实在不知道为啥要弄这,我觉得自己没有实操过,即使有理解,应该也只是为了面试)

2023-06-10 18:29:34 34

原创 java八股之关于mysql数据库锁和事务

数据库有并发事务的时候,保证数据顺序访问的机制成为数据库的锁机制。乐观锁:假设事务在访问数据的时候,大部分情况下是不会冲突的,所以数据库只在更新提交的时候检测是否冲突,如果冲突,更新操作失败。乐观锁的实现方式:cas和版本号实现。悲观锁:每次读取数据的时候,都会加锁。悲观锁的实现方式:使用数据库的锁机制,对查询语句,后面加上for update。死锁:两个或者两个以上的事务在等待统一资源,或者互相通信造成的环形等待,阻塞的关系。

2023-06-10 11:04:33 121

原创 Mysql数据库的一些知识点

索引是对数据库表一列或者多列进行排序的一种结构。索引使用的数据结构是B+树结构。

2023-06-07 20:13:28 41 1

原创 计算机网络

是存储再服务端,Session是通过Cookie实现的,当客户端浏览器第一次访问服务端时,服务端会向浏览器发送一个sessionid,将sessionid放在cookie里面,存在客户端浏览器。是存储在客户端的,其中包含了用户信息,当客户端向服务端发送请求时,服务端会向客户端发送一个Cookie用来保存用户信息,当下次客户端再访问服务端时,会带上Cookie,用来确认身份。3.如果没有,就访问本地dns解释器服务器,如果有的话,就完成解析,没有,就向根域名服务器发起查询请求。

2023-06-03 11:24:50 32

原创 Java集合

一次异或:key.hashcode()与key.hashcode()的高16位进行异或,这样key.hashcode()高16位不变,低16位既具备高16位特点又具备低16位特点,进而减少碰撞的发生。List:有序集合(此处的有序指的是取出来的数据顺序和存进去的数据顺序一致),可以存储多个元素,也可以存储多个null值。Map:使用键值对的方式存储数据,key是无序且唯一的,value值不唯一,不同的key可以对应相同的value。一次位运算:异或之后的结果和hashmap的容量-1进行位运算。

2023-06-02 08:46:59 31

原创 不太正式的秋招八股准备(欢迎小伙伴和我一起呀)

重载发生在同一个类中,指的是方法名相同,参数列表不同(参数个数不同,参数类型不同等)。重写发生在父子类中,指子类中重新定义与父类相同的方法名,参数列表的方法,且子类方法抛出的异常小于等于父类,子类访问修饰符大于等于父类。重载的方法是否能根据返回值类型进行区分?不能,调用的时候不能指定类型,故不能。==**比较的是值,对于引用数据类型,比较的是地址。对于equals对于没有重写equals的类,作用和双等于一样,对于重写了的,equals比较的是值。值传递。

2023-05-31 21:12:41 38 1

原创 【无标题】

Threadlocal用于实现同一线程内部的数据共享。适用于线程较多的时候使用,线程只有一两个的时候可以不使用,直接加锁即可。在线程的生命周期内起作用,减少了方法间传参。

2023-05-17 17:42:51 40

原创 算法入门之二分

一般看到给的是数组然后排列的顺序也有序的时候可以想想二分。在二分中,分为整数二分和实数二分。其中整数二分比较麻烦,实数二分相对比较简单。其中需要注意二分的实质不是单调,有单调性可以使用二分,没有单调性也可二分。1.mid=(l+r)>>1;具体代码:bool check(int x){其中需要验证的性质。}2.int bsearch_1(int l,int r){while(l<r){int mid=(l+r)/2;if(check(mi

2022-03-31 22:52:42 51

原创 算法入门之归并排序

归并排序的主要思想也是分治与双指针,但是此处与快速排序算法不同点就是,多申请了一个数组,用来插入使用。先给出代码模板void merge_sort(int q[],int l,int r){if(l>=r)return;int mid=l+r>>1(此处为位运算,速度比较快)merge_sort(q,l,mid),merge_sort(q,mid+1,r);int k=0,i=l,j=mid;while(i<=mid&&j<=r)

2022-03-30 22:53:59 268

原创 算法入门之快速排序算法

快速排序算法是笔者开始学习的第一个算法其主要的思想在于分治,在使用该算法的过程中,要特别注意边界情况。先给出模板:void quick_sort(int a[],int l,int r){if(l>=r)return;int i=l-1,j=r+1,x=a[l+r>>1];while(i<j){do i++;while(a[i]<=x);do j--;while(a[j]>x);if(i<j)}}...

2022-03-29 22:27:58 470

原创 利用python实现简单的人脸识别

文章目录一,什么是face_recognition?二, 编写步骤#前言一,什么是face_recognition?二, 编写步骤 1.引用库 2.读入数据 3.获取相机 4.对人脸进行标记 5.运行程序** 前言**进行人脸识别的方法有很多,最简单的一种就是使用opencv与face—recognition此文程序在PyCharm中编译运行。(此处的face_recognition需要在dilib库安装好了之后才能进行安装,dilib库有些难安装,具体方法请读者百度)** 二,

2021-03-14 11:59:03 724 1

空空如也

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

TA关注的人

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