自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java中的Iterator迭代器与fail-fast属性

Java中的Iterator迭代器与fail-fast属性什么是迭代器模式Iterator接口与fail-fast机制ArrayList的Iterator实现ArrayList下触发fail-fast机制ListIterator什么是迭代器模式迭代器模式(Iterator),提供一种方法访问集合内的元素并且不用了解该集合的内部细节。这样使得对集合的遍历操作与具体的底层实现相隔离。Iterator接口与fail-fast机制在Iterator接口有四个方法:boolean hasNext():如果

2021-11-29 10:54:20 348 1

原创 Mysql联合索引在B+树如何存储,最左前缀匹配原则

Mysql联合索引在B+树如何存储 最左前缀匹配原则什么是联合索引在B+树的存储结构最左前缀匹配原则什么是联合索引对多个字段同时建立的索引,也叫复合索引。在B+树的存储结构表T:其中c1是主键,联合索引(c2,c3,c4)在B+树上的存储结构:它首先根据联合索引第一列的值排序,如果第一列的值相等再根据第二列的值排序,以此类推。最左前缀匹配原则最左前缀匹配原则:如果你创建一个联合索引,这个索引的任何前缀都会用于查询。最左前缀原则和联合索引在B+树上的存储结构息息相关。在上表中,联合

2021-11-25 13:02:16 1687

原创 JAVA 类加载过程

JAVA 类加载过程什么是类加载机制类的加载过程装载链接验证准备解析初始化类什么时候加载类加载器双亲委派机制什么是类加载机制虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验、转换、解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类的加载过程类的生命周期:类的加载是图上的装载(load),链接(link),初始化(initialize)三个过程,其中链接又分为验证,准备,解析三个步骤。装载在装载阶段,虚拟机需要完成以下三件事情:通过类的全

2021-11-24 16:22:46 667

原创 JVM内存结构

JVM内存结构JVM介绍JDK/JRE/JVM的关系JVM结构程序计数器(pc-register)虚拟机栈(Virtual Machine stack)Java 堆JVM介绍JVM(Java Virtual Machine):Java虚拟机的缩写,是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功能实现的。通过JVM,Java实现了平台无关性。Java程序只需要生成可以Java虚拟机上运行的目标代码(字节码),Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。JDK

2021-11-20 22:55:50 803

原创 JAVA垃圾回收(GC)算法

GC算法前言GC算法二、使用步骤1.引入库2.读入数据总结前言什么是GC:GC:Garbage Collection(垃圾回收)找到内存空间的垃圾,回收垃圾。GC算法二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')im

2021-11-19 16:49:02 1500

原创 Mysql可重复读隔离级别下如何解决幻读

Mysql可重复读隔离级别下如何解决幻读一些概念具体加锁说明使用主键索引进行等值查询使用主键索引进行范围查询使用二级索引进行等值查询使用二级索引进行范围查询一些概念幻读:在一次事务中,同一条select语句在先后两次查询中得到了不同的记录。MySql可重复读隔离级别下解决了幻读。快照读的幻读用MVCC解决,当前读的幻读用间隙锁解决MVCC,快照读和当前读的概念:MVCC及实现原理下面只分析当前读的幻读。一些锁的概念:共享锁(Shared):又称S锁,读锁,共享锁,加了S锁其他事务可以读,不

2021-11-17 22:21:01 3216

原创 MySql的MVCC实现原理

MySql的MVCC实现原理前言MVCC解决什么问题MVCC的实现3个隐式字段Undo LogRead View读视图大致流程读已提交和可重复隔离级别下的快照读前言什么是MVCC?MVCC(Multi-Version Concurrency Control)即多版本并发控制,是乐观锁的一种实现方式,在MySql数据库中主要是为了提高数据库的并发性能,做到读写冲突不加锁,这里的读指的是快照读。快照读与当前读当前读:读取的记录是最新版本,读取时会对读取的记录加锁,基于悲观锁的原理。加锁的sel

2021-11-16 22:53:54 929

原创 Hashtable如何保证线程安全

Hashtable如何保证线程安全前言Hashtable中的常用变量Hashtable中的常用方法构造方法contains()rehash()addEntry()put()其他方法Hashtable与HashMap的区别前言HashMap是非同步的,没有对读写等操作进行锁保护,是线程不安全的。Hashtable是同步的,所有的读写操作都进行了锁保护,是线程安全的。Hashtable的底层是数组+链表实现的Hashtable中的常用变量private transient Entry<?,?&

2021-11-05 19:56:49 5901

原创 Mysql主键索引与非主键索引

Mysql主键索引与非主键索引前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言Mysql使用B+树存储索引。什么是B树:B树也叫B-树,是一棵多路平衡查找树,平衡的意思是左边和右边分布均匀。多路的意思是性对于二叉树而言,B树有多条路,及父节点有多个子节点。一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pan

2021-11-04 22:02:22 2574

原创 Java优先队列及常用方法

Java优先队列及常用方法什么是优先队列常用方法最小优先队列最大优先队列注意什么是优先队列普通的队列都是先入先出的形式,元素在队尾加入,在队头删除。优先队列中,元素被赋予优先级,具有最高优先级的元素先出。通常采用二叉堆结构实现。所以优先队列和堆一样,有两种形式:最大优先队列和最小优先队列。最大优先队列是指最大值具有最高优先级。最小优先队列是值最小值具有最高优先级。每次的push和pop操作,队列都会动态的调整。Java中PriorityQueue类实现优先队列。常用方法public boo

2021-11-03 21:18:47 2831 1

原创 jdk1.8 hashmap源码解析

jdk1.8 hashmap源码解析hashmap存储形式一、主要常量和属性二、常用方法1.构造方法2.resize方法put方法remove方法get方法hashmap存储形式网上找的图:存储:数组+链表+红黑树一、主要常量和属性常量:DEFAULT_INITIAL_CAPACITY = 1 << 4:存储节点的数组table的默认长度MAXIMUM_CAPACITY = 1 << 30:存储节点的数组table的最大长度DEFAULT_LOAD_FACTOR

2021-10-24 23:26:19 170

原创 二叉树性质 遍历方式

二叉树性质 遍历方式二叉树一、性质二、遍历1.前序遍历2.中序遍历3.后序遍历4.层序遍历二叉树由一个由有限节点所组成的集合,此集合可以为空集合,或由一个树根及左右两个子树所组成。简单地说,二叉树最多只能有两个子节点,就是度小于或等于2。形态:特殊二叉树:1.满二叉树如果二叉树的高度为h(h>=0),树的节点为2^h-1,则称之为满二叉树(即除叶节点外的所有节点都有两个子节点)。2.完全二叉树假设二叉树的深度h节点数小于2^h-1节点的编号方式如同深度为h的满二叉树从左到右,

2021-09-29 14:54:09 179

原创 synchronized 方法锁 对象锁 类锁

synchronized 方法锁 对象锁 类锁方法锁对象锁类锁方法锁synchronized修饰方法时每个类的实例类的实例对应一把锁(方法锁也是对象锁)执行synchronized修饰的方法必须拥有实例对象的锁方法一旦执行,就会独占该锁,方法执行完毕,会释放该锁其他没获得锁的线程处于阻塞状态不加synchronized:对象锁synchronized修饰对象或代码块java的每个对象都有一个互斥锁,线程运行synchronized修饰的方法或代码块时都要获得这个对象的锁没

2021-09-27 23:06:29 1567

原创 redis 穿透 雪崩 击穿

redis 穿透 雪崩 击穿穿透击穿雪崩穿透什么是穿透?key对应的数据在缓存中不存在,针对key的请求在缓存中获取不到,请求会到数据库中。缓存没有起到作用,像是被击穿了一样。如果有恶意攻击,就可以利用这个漏洞,对数据库造成压力。解决方法:redis存空值如果数据库查询的对象为空值,也放入缓存,不过过期时间较短。布隆过滤器将所有查询条件放入过滤器中,请求过来,先进入过滤器查询,如果查询条件存在,则继续,不存在,直接返回。击穿什么是击穿?一个热点数据失效的瞬间,大量请求打到数

2021-09-22 21:55:55 111

原创 mysql 事务 索引

mysql 事务 索引 锁数据库-三大范式mysql引擎事务事务的四大特性(ACID):事务的隔离级别数据库索引MyISAM索引InnoDB索引数据库-三大范式第一大范式: 原子性,即数据库表的每一列都是不可分割的原子数据性第二大范式: 在第一大范式基础上,非主属性必须完全依赖主键(主键可能由多个属性组成,不能职只依赖其中一个)第三大范式: 在第二大范式基础上,任何非主属性不依赖与其他非主属性mysql引擎MYSQL引擎就是指表的类型。数据库的存储引擎决定了表在计算机的存储方式。常用引

2021-09-17 22:10:57 173

原创 java spring中的代理模式

spring中的代理模式代理静态代理动态代理1.引入库CGLIB代理(子类代理)代理什么是代理模式?<提供了对目标对象另外的访问方式,及通过代理对象访问目标对象,这样做的好处是可以在不修改目标对象的代码上对原有方法进行修饰(通过代理对象修饰)。静态代理以租房为例:1.接口public interface IRent { void rent();}2.真实对象(目标对象)public class HouseKeeping implements IRent {

2021-09-15 22:40:39 221

原创 java中的线程池

java中的线程池什么是线程池为什么要使用线程池常用的线程池可缓存线程池定长线程池单线程化的线程池定期线程池线程池配置参数什么是线程池一种池化技术,帮助我们创建,销毁,管理线程。减少线程对象的创建、回收次数,提高服务效率。为什么要使用线程池降低资源销毁通过重复利用已经创建的线程,降低线程创建和销毁造成的消耗。提高响应速度当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性线程是稀缺资源,如果无限制的创建,不仅会消耗资源,还会降低系统的稳定性,使

2021-07-27 20:10:09 103

原创 TCP协议中的3次握手和4次挥手

TCP协议中的3次握手和4次挥手报文3次握手4次挥手报文序号:Seq(Sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序列,计算机发送数据时对此进行标记。确认号:Ack(Acknowledge Number)确认号占32位,客户端和服务端都可以发送,Ack=Seq+1。标志位:每个标志位占用1Bit,共有6个,分别为URG,ACK,PSH,RST,SYN,FIN。SYN:建立一个连接FIN:断开一个连接3次握手为什么要有第三次的握手4次挥

2021-06-23 21:54:15 134

原创 java中的线程(二)

java中的线程(二)单例模式的3中实现方法第一种(懒汉式)第二种(饿汉式)第三种(枚举)生产者消费者模式线程池执行拒接策略线程池的创建newCachedThreadPoolnewSingleThreadExecutornewFixedThreadPoolnewScheduledThreadPool提交方式单例模式的3中实现方法第一种(懒汉式)public class SingletonDemo1 { private static SingletonDemo1 instance=null; pr

2021-06-17 17:42:13 101

原创 java中的线程(一)

java中的线程线程的生命周期一、pandas是什么?二、使用步骤1.引入库2.读入数据总结线程的生命周期提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import nump

2021-06-12 21:39:49 1209 2

原创 Java中HashMap的扩容

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例

2021-06-09 14:14:02 592

原创 java中的HashMap和Set

java中的HashMap和SetHashMap属性常用方法添加元素--put(key,value)删除元素-remove(key)获取元素-get(key)修改元素--replace(key, value)一些其他方法Set集合HashSetHashMapHashMap是Map接口的实现类HashMap类根据key值找到value值,所以key值是不能重复的HashMap是数组+链表一起实现存储属性table数组用来存储链表的头结点,初始长度为16HashMap存储数据的方法:计

2021-06-07 21:05:46 1534

原创 java中的集合

集合提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录集合前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、p

2021-06-04 23:19:14 96

原创 static与final

Static不可以修饰普通类,可以修饰包装类修饰方法。修饰的方法不能被继承,但可以被重写。

2021-05-13 22:09:24 47

原创 日期类

日期类Date类Calendar类SimpleDateFormat类LocalDate类LocalTime类Period类DateTimeFormatter类Date类// 无参构造函数,封装当前的日期及时间Date d=new Date();System.out.println(d);long l=d.getTime();//获得得距离1970年1月1日00:00:00的毫秒数// 设置时间,传入的值为long型,代表距离1970年1月1日00:00:00的毫秒数d.setTime(l+2

2021-05-08 11:24:40 94

原创 正则表达式

正则表达式普通字符限定符特殊符号1.引入库2.读入数据小练习正则表达式正则表达式描述了一种字符串匹配模式,可以用来检查一个字符串是否含有某种子串、将匹配的子串替换或从某个串中取出符合某个条件的子串等。普通字符[abc]《匹配[…]中的字符的一个[0-9]匹配数字中的一个[a-z]匹配小写字母中的一个[A-Z]匹配大写字母中的一个[a-zA-Z]匹配大小写字母中的一个[0-9a-zA-Z]数字字母中的一个在这里插入代码片限定符示例:pandas 是基于NumPy 的一种工具,该工

2021-05-06 19:36:05 127

原创 字符串-创建、常用API

字符串-创建、常用API什么是字符串字符串的创建常用APIlength()charAt()toCharArray()getBytes()isEmpty()indexOf() lastIndexOf()toUpperCase() toLowerCase()substring()trim()replace()startsWith() endsWith()equals() equalsIgnoreCase()compareTo()练习将一个字符串进行反转找出字符串中所有的大写字母并输出数量什么是字符串多个字

2021-04-25 22:08:53 114

原创 方法-重载,递归

方法-重载,递归方法重载不定参数递归举例斐波那契数列计算阶乘辗转相除法求最大公因数判断一个数组是否有序方法重载导入:定义太多的方法名字非常难记,我们想调用同一个方法,依据参数的不同完成不一样的动作。重载要满足的条件:同一个类class中方法名称完全相同方法的参数类型/个数不同举例:public static int add(int a,int b){ return a+b;}public static double add(double a,double b){ return

2021-04-23 21:16:50 137

原创 方法--传参

方法--传参方法的结构形参与实参传参1.将基本数据类型传入2.将引用数据类型传入方法的结构如:修饰符 返回值类型 方法名(参数类型 形式参数){//方法体}修饰符:表示方法的访问权限 Java中有3种(public,private,protected)返回值类型:返回的值的类型,如int,double等,若无返回之,用void表示方法名:尽量见名知意形参与实参形参:在方法中定义的参数叫做形参如:public static int add(int a,int b){

2021-04-22 22:51:15 247

原创 数组排序----冒泡排序 选择排序 插入排序

数组排序----冒泡排序 选择排序 插入排序冒泡排序选择排序插入排序冒泡排序思想:相邻的两个数字进行比较,第一次比较选出数组里面最大的数字(或者最小的数字)放在数组末尾(或者开始),依次进行第二次比较,选出第二大数(或者第二小数)放在数组倒数第二个位置,依次进行下去。int a=new int[10];Random r=new Random();// 给数组中的每个元素赋值for(int i=0;i<a.length;i++){ a[i]=r.nextInt(100)+1;}// 冒

2021-04-21 21:00:02 95

空空如也

空空如也

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

TA关注的人

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