自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 索引结构与检索原理

(1)如果要查找数据项29,那么首先会把磁盘块1由磁盘加载到内存,此时发生一次IO,在内存中用二分查找确定29在17和35之间,锁定磁盘块1的P2指针,内存时间因为非常短(相比磁盘的IO)可以忽略不计,通过磁盘块1的P2指针的磁盘地址把磁盘块3由磁盘加载到内存,发生第二次IO,29在26和30之间,锁定磁盘块3的P2指针,通过指针加载磁盘块8到内存,发生第三次IO,同时内存中做二分查找拨到29,结束查询,总计三次IO。硬盘都是长方形的,打了一个封装,里面是一个圆圈,由磁盘、磁道、B柱构成。

2024-07-13 21:30:53 222

原创 索引是什么

(1)可以简单理解为"排好序的快速查找数据结构”(2)索引的两大功能①查找速度快②排好序(3)举例说明:在图书馆中,可以问办理借阅处的人,需要找什么书,前台的人可以搜索那本书的位置,然后转告给找书人,不用一本一本去瞧是不是要借阅的书籍;如果没有索引,图书馆的书有又很多,只能一本本寻找需要借阅的书籍了。办理借阅处的人如同索引的作用,需要找的书就是数据。(4)下图就是一种可能的索引方式示例:左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址;

2024-07-13 12:12:28 324

原创 SQL性能下降的原因

包含但不限于这四个还会有其它的主要是前三个是跟Java工程师相关的,着重的如何写好SQL,如何建好索引且导致索引不失效就是重点解决的任务。

2024-07-13 11:55:52 433 1

转载 java 不停机查看堆栈线程

在Java中,你可以使用jstack工具来查看正在运行的Java应用程序的堆栈线程,而不需要停止应用程序。jstack是JDK自带的一个工具,可以用来生成Java虚拟机当前时刻的线程堆栈信息。首先,找到你的Java应用程序的进程ID(PID)。你可以使用jps工具或者ps命令(在Unix/Linux系统中)来查找。这样,你就可以查看线程的当前状态,而不需要停止应用程序。使用jstack工具加上你找到的PID来生成堆栈跟踪信息。这将输出所有线程的堆栈跟踪信息到控制台。java 不停机查看堆栈线程。

2024-06-14 10:24:53 23

转载 过滤器(Filter)和 拦截器(Interceptor)

拦截器将很多service或者Controller中共有的行为提炼出来,在某些方法执行的前后执行,提炼为通用的处理方式,让被拦截的方法都能享受这一共有的功能,让代码更加简洁,同时,当共有的功能需要发生调整、变动的时候,不必修改很多的类或者方法,只要修改这个拦截器就可以了,可复用性很强。在开发过程中我们经常会遇到 过滤器(Filter) 和 拦截器(Interceptor),找个也是面试中容易被问道的一个问题,两者的使用和作用又颇为相似,是个容易被大家混淆的问题,在此总结下,希望能对大家有所帮助。

2024-06-14 10:17:27 138

原创 关于HandlerMethodArgumentResolver及自定义参数注解的详探

我们在继承WebMvcConfigurationSupport需要重写方法addArgumentResolvers。WebMvcConfigurationSupport 在spring 自动配置类加载时加载自定义的 WVC自动配置类,就会在之前提过的adapter适配器初始化时将其赋值给adaper的argumentResolvers。至此,spring boot 初始化的准备工作完成。

2024-05-07 14:55:18 921 1

原创 【JVM】Java虚拟机内存模型 和 GC

java 虚拟机内存模型主要有三大部分运行数据区执行引擎本地方法接口我们平常需要了解和关注的主要是有关运行数据区的详细信息运行数据区主要有五大部分栈(虚拟机栈是JAVA方法执行的内存模型,包括多个栈帧,每个栈帧包括局部变量表,操作栈,动态连接,返回地址等)堆(存储对象)程序计数器本地方法栈方法区(元数据区 1.8?)https://zhuanlan.zhihu.com/p/161994662清楚了内存模型,就可以开始了解GC怎么定义垃圾引用计数法在堆中的对象会有一个引

2022-03-04 12:22:46 522

原创 统一返回类模板

package com.xiang.tour.common;/** * @description: * @author: xuke * @time: 2021/6/23 21:47 */public class R { // 返回的编号 private Integer code; // 返回的数据,数据类型N中, private Object data; // 返回的信息 private String message; // 调用

2022-02-09 15:56:11 143

原创 【无标题】

swagger配置

2021-12-08 18:08:10 293

转载 重走JAVA路 - Java 虚拟机

Java 虚拟机Java 虚拟机一、运行时数据区域程序计数器Java 虚拟机栈本地方法栈堆方法区运行时常量池直接内存二、垃圾收集判断一个对象是否可被回收引用类型垃圾收集算法垃圾收集器三、内存分配与回收策略Minor GC 和 Full GC内存分配策略Full GC 的触发条件四、类加载机制类的生命周期类加载过程类初始化时机类与类加载器类加载器分类双亲委派模型自定义类加载器实现参考资料本文大部分内容参考 周志明

2021-10-26 19:47:08 158

转载 重走Java路-Java并发

Java 并发Java 并发一、使用线程实现 Runnable 接口实现 Callable 接口继承 Thread 类实现接口 VS 继承 Thread二、基础线程机制ExecutorDaemonsleep()yield()三、中断InterruptedExceptioninterrupted()Executor 的中断操作四、互斥同步synchronizedReentrantLock比较使用选择五、线程之间的协作join()wa

2021-10-25 17:25:45 109

转载 重走Java路 - java IO

一、概览Java I/O 可以分为以下几类磁盘操作:File字节操作 :InputStream 和 OutputStream字符操作 : Reader 和 Writer对象操作 : Serializable网络操作:Socket新的输入/输出:NIO二、磁盘操作File 类可以用于表示文件和目录的信息,但是它不表示文件的内容。递归地列出一个目录下所有文件: public static void lsitAllFiles(File dir) { if (dir

2021-10-21 20:05:09 99

转载 重走Java路 - java 基础

java基础一、数据类型基本类型包装类型缓存池二、String概览不可变的好处String, StringBuffer and StringBuilderString Poolnew String("abc")三、运算参数传递float 与 double隐式类型转换switch四、关键字final1.数据2.方法3.类static1.静态变量2.静态方法3. 静态语句块4.静态内部类5.初始化顺序五、Object 通用方法概览equals()hashCode()toString()clone()六、继承访问

2021-10-15 17:33:05 93

原创 ClassLoader 同名类加载顺序的研究

文章目录前言一、类加载过程1.加载2.验证3.准备4.解析5.初始化二、什么是 ClassLoaderClassLoader 作用:1、ClassLoader 类结构分析2.ClassLoader 的等级加载机制3.ClassLoader加载类的原理三、同名类加载顺序总结前言在本地domain的一次更新jar包之后,本地的某个function直接挂了,经过检查,发现是是由于两个不同包的同名类,同名类的内部代码不同,导致代码校验类型出错。为了方便理解,我们先从类加载过程开始讲起一、类加载过程

2021-10-06 16:58:03 3154

原创 JWT -- JSON WEB TOKEN

01、什么是JWT官网:https://jwt.io/introductionJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。一句话:JWT用

2021-09-15 01:19:42 201

原创 MYSQL-生产环境中的数据库的表和规范

01、目标了解和掌握生产环境中的数据库的表和规范02、分析基础规范表必须要有主键,建议使用整型作为主键禁止使用外键,表之间的关联性和完整性通过应用程序代码去维护和控制表在设计之初、硬考虑到大致的数量级。若表记录数低于1000W、尽量使用单表,不建议分表。(千万和亿级别可以考虑分区即可。更大才考虑分库分表)。建议将大字段,访问频率低及不需要筛选的字段拆分到拓展表中(做好垂直拆分)(比如:商品的详情)控制单实例中表分区的总数,单个表分表的个数控制在1024以内。列设计规则合理使用字段类

2021-08-20 00:45:05 401

原创 MYSQL执行计划

01、目标掌握和了解explain执行计划02、作用使用explain关键字,可以模拟优化器执行的SQL语句从而知道MYSQL是如何处理sql语句的通过Explain可以分析查询语句或表结构的性能瓶颈explain:分析SQL语句执行的过程,是否走索引规则和叛变你写SQL语句是否是最优一种机制。具体作用:查看表的读取顺序数据读取操作的操作类型查看哪些索引可以使用查看哪些索引被实际使用查看表之间的引用查看每张表有多少行被优化器执行[外链图片转存失败,源站可能有防盗链机制,建

2021-08-20 00:44:12 118

原创 MSQY的查询计划(重点)

01、目标了解查询优化器[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hjxLR4OV-1629391403875)(查询计划.assets/image-20210723212750676.png)]02、查询优化器查询优化器的作用:就是根据你执行的SQL语句,进行分析,它自动的去通过他里面提供的算法和结构。进行对你的sql执行和预判。选择一个最优的方法,进行一个执行和处理。能不能通过一些方式,来查看SQL在执行执行过程中到底是怎么确定的执行的顺序,和是否命中到了

2021-08-20 00:43:17 314

原创 MYSQL索引概述&查询计划

01、目标掌握索引创建的语法和规则02、概述MYSQL索引是一种数据结构:b+tree + hash 进行实现和存储架构。03、索引分类普通索引:单纯的为了加快查询速度。全文索引:针对text/longtext字段类型加索引。(es)唯一索引:加快查询速度,且约束该列的值不能重复。主键索引:和唯一功能类似,单是一张表中只能有一个主键索引,复合索引有多个。作用:普通的索引:就是未来建设的复合索引,或者组合索引,其实大部分的索引的优化都是建设普通索引全文索引:一般开发不使用,因为全文索

2021-08-20 00:42:44 138

原创 索引的操作

查询索引show index from table_name创建索引方式1create [UNIQUE|primary|fulltext] index 索引名称 ON 表名(字段(长度))比如:#如:create index index_name on table_name(columns...) --- 普通索引create unique index index_name on table_name(columns...) --- 唯一索引create fulltext index i

2021-08-20 00:42:09 117

原创 MYSQL慢SQL日志分析

01、目标了解和掌握慢SQL日志的使用02、 分析一般来说,在企业的开发中,慢SQL日志记录一般建议大家是要进行打开。默认情况慢SQL关闭关于慢SQL的认识:该日志记录着执行时间超过阈值的SQL语句。注意:慢查询日志不仅仅只记录select。也会记录update、insert,delete这种操作执行过长的记录也会被记录03、慢SQL日志的开启打开第一种方式:直接mysql配置文件my.cnf文件中进进行配置,随着服务器而进行加载(推荐)[mysqld]# 开启慢SQL查询s

2021-08-20 00:41:38 723

原创 MYSQL索引Btree&B+tree

01、目标掌握mysql底层索引优化的原理02、分析MySql底层的数据结构主要是基于Hash 和 B+Tree03、底层数据结构分析Btree 还是B+tree 都是通过最原始的数据的结构:二叉树B-tree树即B树,B即Balanced(平衡得意思),平衡的意思,*B-*树又称为多路平衡查找树。因为B树的原英文名称为B-tree, B-Tree是为磁盘等待外存设备设计的一种平衡查找树。每个节点包含key和data。系统从磁盘读取数据到内存时以磁盘块block为基本单位的,位于同一个磁盘块中

2021-08-20 00:40:56 115

原创 MYSQL索引Btree和磁盘关系

01、目标1、磁盘操作2、数据在磁盘中是如何存储的3、什么是索引4、什么是多重索引5、二叉树和多叉树6、BTree是什么7、BTree的基本操作8、B+Tree和B-Tree的区别02、概述02-01、磁盘认识参考文献1:https://www.sohu.com/a/449063502_355142参考文献2:https://blog.csdn.net/Rong_Toa/article/details/113727981注意磁盘读取数据的时候,是按照每扇区来读取数据的,每个扇区

2021-08-20 00:40:33 333

原创 MYSQL中InnoDB整体架构

01、了解MYSQL的innodb的整体架构Innodb存储引擎可将所有数据存放于ibdata*的共享表空间,也可将每张表存放于独立的.ibd文件的独立表空间。共享表空间以及独立表空间都是针对数据的存储方式而言的。###01-01、In-Memory Structures(内存结构):01-02、On-Disk Structures(磁盘结构 ):1、System Tablespace:表空间, 会对应一个(ibdata1)文件:优点:可以将表空间分成多个文件存放到各个磁盘上(表空间文件大小不

2021-08-20 00:38:46 393

原创 MYSQL运行原理

01、图解分析02、分析网络连接层(客户端)客户端连接器(Client Connetors):能够于MYSQL建立连接的客户端,目前几乎支持所有主流的服务端编程技术,比如常见的 java、Go、c及python等等。它们通过各自API技术与MYSQL建立连接。服务层(MYSQL Server):MySQL实例,真正提供数据存储和数据处理功能的MySQL服务器进程,主要包括系统管理和控制工具,连接池,SQL接口、解析器、查询优化器和缓存六个部分:连接池(Connection Pool):负

2021-08-20 00:37:54 280

原创 java 基础面试题

01、String、StringBuffer、StringBuilder的区别三者共同之处:都是final类,不允许被继承,主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着,且考虑到防止其中的参数被参数修改影响到其他的应用。StringBuffer是线程安全,可以不需要额外的同步用于多线程中;StringBuilder是非同步,运行于多线程中就需要使用着单独同步处理,但是速度就比StringBuffer快多了;StringBuffer与StringBuilder两者共同之处:可以通过ap

2021-08-12 23:10:26 324

原创 Spring源码分析(一)整体脉络

文章目录阅读源码方法及要素:脉络梳理:1.什么是容器:2.告诉容器我要怎么使用:3.从配置文件—>对象源码探究:启动Spring设置配置路径Spring核心功能阅读源码方法及要素:先梳理脉络,再扣细节。(防止看到方法就点)不要忽略注释,包含非常多的关键信息见名知意大胆猜测,小心验证(最重要)坚持!脉络梳理:1.什么是容器:存放对象的水桶,从对象的创建到对象的使用, 到对象的销毁,全部交给容器进行管理。2.告诉容器我要怎么使用:通常我们有多种方式来告诉spring容器怎么做:

2021-07-29 19:16:34 298

原创 Redis的Set数据结构

01、目标掌握set结构的常见命令java list 和 set区别:list: 允许添加相同元素set: 不允许添加相同元素02、set的常见命令02-01、sadd 添加元素语法:sadd key member member1 membe2…membern 给集合key中添加元素。如果添加相同元素就会自动过滤127.0.0.1:6379> sadd users u1(integer) 1127.0.0.1:6379> sadd users u2(integer) 11

2021-07-27 10:04:42 2022

原创 Redis操作数据结构-String

01、目标Redis操作String数据结构02、常见操作字符串的方式查看类型:type key查看所有的keykey *Set命令语法:SET key value [expiration EX seconds|PX milliseconds] [NX|XX]必填参数key: 带设置的键value: 带设置的值可选参数[NX]: 表示key不存在的时候才设置,如果存在就返回null (存在不做任何操作)[XX]: 表示key存在的时候才设置,如果不存在就返回null(替换原则)[EX ]:

2021-07-27 10:02:20 120

原创 SpringBoot连接Redis服务

01、前期准备redis环境服务的安装redis服务器防火墙端口的开放redis配置文件redis.conf中bind修改开放工具:idea02、目标快速构建Springboot+SSM+Redis+Swagger集成框架03、具体流程如下03-01、在pom.xml整合SSM+Redis+Swagger相关依赖org.springframework.bootspring-boot-starter-web <!--mybatis-plus--> <d

2021-07-27 09:58:43 801

原创 MyBatis整合依赖及步骤

文章目录1.什么是Mybatis2.编写一个mybatis的案例2.1新建一个maven工程2.1引入mybatis的相关依赖2.3、定义个db.properties来加载数据源的信息05-03、定义个db.properties来加载数据源的信息2.4、定义核心配置文件mybatis.config.xml2.5、定义一个实体Account2.6、在resources目录新建一个mappers/AccountMapper.xml文件2.7、定义一个测试用例1.什么是MybatisMybatis是orm持久

2021-07-26 21:11:57 7147

原创 Spring boot 源码分析 (一) ----- 启动流程分析

看了很多关于spring boot 的源码分析,感觉都只在关注面试题, 关键注解,但是这样并无法达到对其启动的深刻理解,只是死板的记忆,,过了几天又忘了 ,所以我在看完之后打算把他记下来,以供以后复习使用。重点是一定要自己点一遍1. 核心注解SpringBootApplication@SpringBootConfiguration – 配置类 就是@Configuration@EnableAutoConfiguration – 核心注解,通过@import + @Configuration + @Be

2021-07-19 19:47:31 522 2

原创 Spring boot 启动所需jar包

2021-07-15 09:47:49 74

原创 关于Spring中的@Configuration和@Bean 的理解

在spring的迭代升级中,xml逐渐被嵌入式的注解所替代,从而逐渐实现“0配置”在springboot的启动类中有三个核心注解,分别是@SpringBootConfiguration @Configuration@EnableAutoConfiguration @AutoConfigurationPackage @Import({Registrar.class}) @Import({EnableAutoConfigurationImportSelector.class})@Compon

2021-07-01 12:22:56 341

原创 记一次File 文件安全性检查fix

背景当前Struts框架中有一段common逻辑的get file 的 .do 代码,是根据reqeust中穿的parameter来索引server中的静态文件比如pdf ,image ,由此衍生出可以通过拼接当前路径可以尝试访问其他本应无权访问的文件例如 C:/Users/XXXX/Desktop/…/package-lock.jsonfilename 拼接逻辑不可变,因为是高可用common get file的代码拼接逻辑 :本地properties 读取前一部分文件路径(环境隔离)+ 参数传入

2021-06-29 10:42:06 300

原创 并发中锁的理解

在多线程并发的代码中我们平常会使用Synchronized 关键字对某一个对象上锁, 在JVM内部,同时运行的每个线程都会有他自己的独立内存空间和主内存中拷出的所需数据的缓存副本,真正被同步的是在不同线程中表示被锁定对象的内存块,在同步块或同步方法执行完后,对被锁定的对象做的任何修改要在释放锁之前写回到主内存中;在进入同步块得到锁之后,被锁定对象的数据是从主内存中读出来的,持有锁的线程的数据副本一定和主内存中的数据视图是同步的 。...

2021-06-16 14:42:02 75

原创 面试题整理1 - Java 基础篇

JDK和JRE有什么区别 ?Java基本数据类型及其封装类说明一下 public void static main(String args[])的每个关键字的作用object 有哪些公用方法,各有什么用处char型变量能不能存储一个中文汉字,为什么float f = 3.4 是否正确,为什么short s1 =1 ; s1=s1+1;S1+=1;有错么,为什么&& 和 & 的区别Integer cache 大小 , 边界,调整边界的jvm 命令参数是什么Java .

2021-05-27 15:51:45 55

原创 JUC高级并发编程

1.什么是JUC2.多线程回顾3.Lock锁package com.codingInterview.JUC;public class SaleTickets { public static void main(String[] args) { Tickets tickets = new Tickets(40); // new Thread(() -> { for (int i = 0; i < 30;

2021-04-02 01:04:59 96

原创 JVM基础详解

1.JVM的位置2.JVM的体系结构3.类加载器作用:加载class文件 ~

2021-03-30 00:58:38 197 1

原创 Java基础-多线程详解(基础中的基础,大佬可以忽略)

1.1线程简介1.1.1任务,进程,线程,多线程任务一段时间内做的事情进程在操作系统运行的程序就是进程,一个程序执行时,内存会开辟一段空间。程序:指令和数据的有序集合,静态的概念线程一个进程可以包含有若干个线程,一个进程至少有一个线程线程是cup调度和执行的单位多线程多线程调运图(来自狂神说java)1.2线程创建1.2.1 继承thread类自定义线程类继承Thread类重写run方法,编写线程方法体创建线程对象,调用start()方法启动线程1.2.2 实现runn

2021-03-27 02:42:16 170

空空如也

空空如也

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

TA关注的人

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