自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Golang -> Golang 变量

整数类型简单的说,就是用于存放整数值的,比如 0, -1, 2345 等等。

2023-06-24 00:50:14 1171 1

原创 Golang -> Go 语言快速开发入门

在该源文件目录下,通过 go build 对 hello.go 文件进行编译。Go 编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多条语句写在同一个,否则报错。Go 语言定义的变量或者 import 的包如果没有使用到,代码不能编译通过。go 语言定义的变量或者 import 的包如果没有使用到,代码不能编译通过。如果我们是对源码直接 执行 go run 源码,Go 的执行流程如下图。如果程序有错误,编译时,会在错误的那行报错。如果是对源码编译后,再执行,Go 的执行流程如下图。

2023-06-24 00:31:53 1014

原创 Golang -> Golang 的概述

Golang 的语言的特点Golang 的开发工具Golang 的版本。

2023-06-24 00:29:04 710

原创 区块链 -> 区块链简介

区块链实际是一种数据库。不同于我们的MySQL数据库,区块链是一种分布式数据库。腾讯:Tencent Distributed SQL,简称 TDSQL。阿里:PolarDB PostgreSQL,简称PolarDB-PG。区块链还有一个特点 -> 去中心化。所以区块链是一个去中心化的分布式数据库下面我们将说说区块链结合去中心化后组成的数据库有什么特点?区块链能干什么?

2023-04-13 18:07:19 1860 1

原创 数据库 -> 简述MyISAM和InnoDB的区别

简述MyISAM和InnoDB的区别MyISAM:不⽀持事务,但是每次查询都是原⼦的;⽀持表级锁,即每次操作是对整个表加锁;⼀个MYISAM表有三个⽂件:索引⽂件、表结构⽂件、数据⽂件;采⽤⾮聚集索引,索引⽂件的数据域存储指向数据⽂件的指针。InnoDb:⽀持ACID的事务,⽀持事务的四种隔离级别;⽀持⾏级锁及外键约束:因此可以⽀持写并发;⼀个InnoDb引擎存储在⼀个⽂件空间(共享表空间,表⼤⼩不受操作系统控制,⼀个表可能分布在多个⽂件⾥)也有可能为多

2022-03-15 23:43:45 964

原创 数据库 -> 什么是MVCC

什么是MVCC事务在并发环境下会带来脏读、脏写、不可重复读等诸多问题为了解决这些问题,保证事务的ACID四大特性,出现了诸多隔离级别去解决这些问题MySQL默认采用的隔离级别是可重复读。那么MySQL是怎么划分出4个隔离级别的?答案是通过MVCC(Multi-Version Concurrency Control)机制。多版本并发控制:是一种利用版本号来控制事务读取数据的它类似于的CAS、AQS这类乐观锁机制主要是利用undolog和read view来控制实现这里面就不细致讲了

2022-03-15 21:57:40 788

原创 数据库 -> ACID靠什么保证的?

ACID靠什么保证的?原子性原子性是由 undolog 日志来保存的,它记录了需要回滚的日志信息。事务回滚时,撤销已经执行成功的 SQL 语句,什么意思?我们做增、删、改这样一些 SQL 操作,它之前已经保留好一个历史版本数据了,而这个历史版本数据会存在于 undolog 中我们写一条insert,就会记录一条delete所以当你进行回滚的时候,它会找到你对应的一个历史版本数据然后进行回写,把之前成功执行的 SQL 语句给你撤销掉,这个时候就完成了最基本的一个回滚操作,这是原子性对

2022-03-15 21:57:09 1519 1

原创 数据库 -> JDBC实现

JDBC实现JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问JDBC API,并支持SQL语言。利用JDBC可以将JAVA代码连接到oracle、DB2、SQLServer、MYSQL等数据库,从而实现对数据库中的数据操作的目的。JDBC的主要功能如下:(1)建立与数据库或者其他数据源的链接(2)向数据库发送SQL命令(3)处理数据库的返回结果JDBC中常用类和接口连接到数据库(Connection)建立操作指令(Stat

2022-03-15 21:33:47 225

原创 数据库 -> 事务的基本特性和隔离级别

事务的基本特性和隔离级别事务基本特性ACID分别是:原⼦性指的是⼀个事务中的操作要么全部成功,要么全部失败。⼀致性指的是数据库总是从⼀个⼀致性的状态转换到另外⼀个⼀致性的状态。隔离性指的是⼀个事务的修改在最终提交前,对其他事务是不可⻅的。持久性指的是⼀旦事务提交,所做的修改就会永久保存到数据库中。隔离性有4个隔离级别● read uncommit 读未提交,可能会读到其他事务未提交的数据,也叫做脏读。● read commit 读已提交,两次读取结果不⼀致,叫做不可重复读。●

2022-03-15 00:35:52 284

原创 数据库 -> 对慢查询都怎么优化?

对慢查询都怎么优化?检查慢日志是否开启SHOW VARIABLES LIKE '%slow%';开启慢查询日志方法一: 临时有效/* 开启慢日志 */mysql> set global slow_query_log=on;Query OK, 0 rows affected (0.08 sec)/* 设置慢查询时间阈值 -> sql查询数据超过了就打印日志 */mysql> set global long_query_time=3600;Query OK, 0

2022-03-15 00:28:54 1230

原创 数据库 -> 索引设计的原则?

索引设计的原则?查询更快、占⽤空间更⼩ -> 主键: 整型 + 自增适合索引的列是出现在where⼦句中的列,或者连接⼦句中指定的列要选择最常作为访问条件的列作为主键,提高查询的效率不要过度索引。索引需要额外的磁盘空间,在修改表内容的时候,索引会进⾏维护,索引列越多,这个时间就会越⻓,**尽可能选择较短的数据类型,**可以有效地减少索引的磁盘占用。多表查询有外键的列要建⽴索引更新频繁字段不适合创建索引选择唯一性索引...

2022-03-14 23:26:41 453

原创 数据库 -> Mysql索引的数据结构,各⾃优劣

Mysql索引的数据结构,各⾃优劣InnoDB存储引擎的默认索引实现为:B+树索引。对于哈希索引来说,底层的数据结构就是哈希表,因此在绝⼤多数需求为单条记录查询的时候,可以选择哈希索引,查询性能最快;其余⼤部分场景,建议选择BTree索引。B+树:B+树是⼀个平衡的多叉树,一个节点可以有多个数据内容,这样就不会出现二叉树那样数据庞大的时候,树的高度比较高的情况,查询的次数就会少B+树叶子节点间有指针相互链接,并且会维护了索引的顺序的,所以有顺序、有相邻的引用,这样在执行范围查找的

2022-03-14 22:03:13 1661

原创 数据库 -> 表索引为什么使用主键+整型+自增

表索引为什么使用主键+整型+自增主键不用多说,查询效率问题整型+自增现在的MySQL是InnoDB的数据引擎,底层是B+树InnoDB必须有主键,因为整个B+树都是靠这索引来维护的,没有索引整个表就建不起来当然我们不主动加主键索引,InnoDB也会默认自己加上的让InnoDB自己加主键就会更加影响效率,要么它选择一个字段做索引,要么多加一个字段做索引它放在都要一个那我们为什么不自己定,这样也还会有上面其他效率问题B+树底层也是用二分法来对树进行一层一层的查找的那么索引使用整

2022-03-14 21:25:02 374

原创 数据库 -> Mysql聚簇和⾮聚簇索引的区别

Mysql聚簇和⾮聚簇索引的区别因为英文翻译为中文的原因有叫聚簇和⾮聚簇的也叫聚集和⾮聚集的,用聚集可能好理解一点聚集索引: 就是聚集了索引和数据的data数据放在一个xx.myd的文件里面索引是放在xx.myi的文件里面如果有一个数据引擎,将索引和数据放在一个文件里面的,就是聚集索引了InnoDB就是这样的一个数据引擎,它会把表里面的数据和索引放在一个文件里面它必须会有一个主键,就算我们没有指定,它也会帮我们创建的因为它需要一个索引,用索引存数据到索引的位置⾮聚集索引:

2022-03-14 21:13:14 398

原创 数据库 -> 索引的基本原理

索引的基本原理索引的本质 -> 索引的本质是一种排好序的数据结构,目的在于提高查询效率。MySQL 中最常用的索引的数据结构是 B+ 树索引的基本原理也就是B+ 树的基本原理一个树节点可以存放多个数据红黑树是不可以一个节点存多个数据的,B+ 树的高度比红黑树低树的叶子节点是排好序的,跟链表一样排序有前后引用的B树是没有排序的,B树不好进行范围查询B+ 有排序,做范围查找的是否就可以根据链表一样的结构向前或向后查询基本原理就是通过B+树的结构优点查询数据

2022-03-14 20:49:56 870

原创 Spring启动

写完我自己都看得头大了能看就看,看不了算了,就空再拆解一下1.SpringBoot项目的启动类public static void main(String[] args) { SpringApplication.run(Application.class, args);}2.run方法//可配置的应用程序上下文,传入 启动类的class 和 启动参数public static ConfigurableApplicationContext run(Class<?&g

2022-03-13 01:57:10 966

原创 Mybatis -> #{}和${}的区别是什么?

#{}和${}的区别是什么?**#{}**是预编译处理、是占位符, **${}**是字符串替换、是拼接符。Mybatis 在处理**#{}时,会将 sql 中的#{}**替换为?号,调⽤ PreparedStatement 来赋值;Mybatis 在处理时**∗∗就是把∗∗{}**就是把**∗∗就是把∗∗{}**替换成变量的值,调⽤ Statement 来赋值;#{} 的变量替换是在DBMS 中、变量替换后,#{} 对应的变量⾃动加上单引号**∗∗的变量替换是在DBMS外、变量

2022-03-09 22:32:05 274

原创 MyBatis -> MyBatis 与Hibernate 有哪些不同?

MyBatis 与Hibernate 有哪些不同?SQL 和 ORM 的争论,永远都不会终⽌开发速度的对⽐:Hibernate的真正掌握要⽐Mybatis难些。Mybatis框架相对简单很容易上⼿,但也相对简陋些。⽐起两者的开发速度,不仅仅要考虑到两者的特性及性能,更要根据项⽬需求去考虑究竟哪⼀个更适合项⽬开发⽐如:⼀个项⽬中⽤到的复杂查询基本没有,就是简单的增删改查,这样选择hibernate效率就很快了,因为基本的sql语句已经被封装好了,根本不需要你去写sql语句,这就

2022-03-09 22:28:05 285

原创 Mybatis -> Mybatis的优缺点

Mybatis的优缺点优点:基于 SQL 语句编程,相当灵活,不会对应⽤程序或者数据库的现有设计造成任何影响,SQL 写在XML ⾥,解除 sql 与程序代码的耦合,便于统⼀管理;提供 XML 标签, ⽀持编写动态 SQL 语句, 并可重⽤。与 JDBC 相⽐,减少了 50%以上的代码量,消除了 JDBC ⼤量冗余的代码,不需要⼿动开关连接;很好的与各种数据库兼容( 因为 MyBatis 使⽤ JDBC 来连接数据库,所以只要JDBC ⽀持的数据库 MyBatis 都⽀持)。能

2022-03-09 22:18:09 657

原创 Spring -> Spring Boot中配置⽂件的加载顺序是怎样的?

Spring Boot中配置⽂件的加载顺序是怎样的?优先级从⾼到低,⾼优先级的配置覆盖低优先级的配置,所有配置会形成互补配置。命令⾏参数。 -> 一定不会被覆盖Java系统属性(System.getProperties());操作系统环境变量 ;jar包外部的application-{profile}.properties或application.yml(带spring.profile)配置⽂件jar包内部的application-{profile}.propertie

2022-03-09 21:00:32 449

原创 Spring Boot是如何启动Tomcat的

Spring Boot是如何启动Tomcat的⾸先,SpringBoot在启动时会先创建⼀个Spring容器在创建上下文的时候判断是否是内嵌的web服务类型,选择不同是上下文加载方式refreshContext()刷新上下文,IOC容器的创建过程的调用BeanFactoryPostProcessors -> BeanFactory后置处理器BeanFactory后置处理器中加载spring.factories内的自动配置类生成一个EmbeddedWebServerFact

2022-03-09 20:32:23 2345

原创 Spring -> 如何理解 Spring Boot 中的 Starter

如何理解 Spring Boot 中的 Starterstarter就是定义⼀个starter的jar包,写⼀个@Configuration配置类、将这些bean定义在⾥⾯然后在starter包的META-INF/spring.factories中写⼊该配置类springboot会按照约定来加载该配置类开发⼈员只需要将相应的starter包依赖进应⽤进⾏相应的属性配置(使⽤默认配置时,不需要配置),就可以直接进⾏代码开发,使⽤对应的功能了⽐如mybatis-spring-boot-starte

2022-03-09 00:35:58 505

原创 Spring -> Spring Boot ⾃动配置原理?

Spring Boot ⾃动配置原理?SpringBootApplication -> 启动类最头上的哪个注解它是 @Configuration、@EnableAutoConfiguration、@ComponentScan 注解的集合@Configuration -> 允许在上下文中自己注册的 bean 或导入其他配置类@ComponentScan -> 扫描被@Component注解的 bean@EnableAutoConfiguration -> 启用 Sprin

2022-03-09 00:16:18 2776

原创 Spring -> Spring MVC的主要组件?

Spring MVC的主要组件?DispatcherServlet:前端控制器主要负责捕获来自客户端的请求和调度各个组件。HandlerMappinginitHandlerMappings,处理器映射器,根据⽤户请求的资源uri来查找Handler的。在 SpringMVC中会有很多请求,每个请求都需要⼀个Handler处理具体接收到⼀个请求之后使⽤哪个Handler进⾏,这就是HandlerMapping需要做的事。HandlerAdapterinitHandler

2022-03-08 22:49:24 298

原创 Spring -> Spring MVC ⼯作流程

Spring MVC ⼯作流程⽤户发送请求⾄前端控制器 DispatcherServlet。在DispatcherServlet的doDispatch方法内执行MVC的所有流程DispatcherServlet 收到请求调⽤ HandlerMapping 处理器映射器。处理器映射器找到具体的处理器(注解进⾏查找),⽣成处理器及处理器拦截器⼀并返回给 DispatcherServlet。这里具体的处理器就是标注了@Controller的Bean对象,DispatcherSe

2022-03-08 22:31:05 119

原创 Spring -> Spring Boot、Spring MVC 和 Spring 有什么区别

Spring Boot、Spring MVC 和 Spring 有什么区别Spring 实际上是一个框架,它包括很多东西Spring AOPSpring JDBCSpring MVCSpring ORMSpring 如果单独拿出来说的话是⼀个IOC容器,⽤来管理Bean使⽤依赖注⼊实现控制反转,可以很⽅便的整合各种框架提供AOP机制更⽅便将不同类不同⽅法中的做增强Spring MVC是Spring 对web框架的⼀个解决⽅案提供了⼀个总的前端控制器Servlet,⽤来接

2022-03-08 18:11:45 378

原创 设计模式 -> 模板方法模式

模板方法模式模板方法模式:在一个抽象类公开定义了执行它的方法的模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。AbstractClass 抽象类类中实现了模板方法,定义了骨架有一个模板方法,已经写好了逻辑,先执行什么方法,再执行上面方法这些具体执行的方法要子类去重写,但是方法的调用顺序已经定了具体子类需要去实现其它的抽象方法ConcreteClass 实现抽象方法抽象模板类abstract class AbstractClass {

2022-03-08 17:50:41 303

原创 设计模式 -> 责任链模式

责任链模式责任链模式描述的就是如何推卸责任,说的简洁点,就是踢皮球。需要对数据进行多种不同的操作我们会使用多个不同的类负责不同的操作,而不是一个类集成所有的操作,这样做能让代码松耦合且简洁第一个处理器会接收请求,如果它需要执行操作则会进行一次数据处理如果不需要则会将请求传递给第二个处理器依次类推直至走完整个链这就是责任链模式实现客户端(Client):客户端是使用责任链模式的应用程序的主要结构,它的职责是实例化一个处理器链,然后在责任链的头部处理器处发起请求。抽象

2022-03-08 17:36:28 147

原创 设计模式 -> 观察者模式

观察者模式观察者模式,多用于单个应用内部发布订阅模式,则更多的是一种跨应用的模式(cross-application pattern),比如我们常用的消息中间件观察者模式: 定义一种一对多的依赖,当一个对象状态改变的时候,所有依赖的对象都会得到通知并自动更新。也叫发布订阅模式,监听事件就是这种原理一个对象被监听着,当监听对象状态改变的时候,监听的事件就会被触发消息中间件也是这种模式,本质上也类似于监听只不过把这种监听的模式从系统里抽出来,做了个第三方工具各种优化丶调整丶增强

2022-03-08 16:55:02 172

原创 设计模式 -> 装饰者模式

装饰者模式装饰者模式,指在不改变现有对象结构的情况下,动态的给对象添加一些额外的职责。装饰者模式用于扩展对象的功能,用于代替继承扩展的方式装饰者模式就是一种简单的包装逻辑,把你要包装的类传入装饰者类装饰者类围绕要包装的类做功能的添加实现 -> 要灵活使用,并不是说一定要一个接口什么的一个接口,一个实现接口的主类,实现接口的抽象装饰类,具体的装饰类我们用Java中InputStream举例接口 -> InputStream: 是一个抽象类被装饰者类 -&

2022-03-08 00:14:15 324

原创 Spring -> Spring容器启动流程是怎样的

Spring容器启动流程是怎样的在创建Spring容器,也就是启动Spring时:beanFactory工厂,用来生产Bean注解读取器,读取那些@Service丶@Component注解路径扫描器,我们不仅要扫描当前主类包下的,还要扫描一些我们指定路径下的Class文件还有解析一些配置类,就是@Configuration标注的那些Bean之后就是核心的refresh容器刷新,refresh方法里面就有好多步骤,注册一些组件BeanFactory后置处理器 -> BeanF

2022-03-07 20:48:48 593

原创 Spring -> Spring中的事务实现原理

Spring中的事务实现原理Spring事务底层是基于数据库事务和AOP机制的⾸先对于使⽤了@Transactional注解的Bean,Spring会创建⼀个代理对象作为Bean当调⽤代理对象的⽅法时,会先判断该⽅法上是否加了@Transactional注解如果加了,那么则Spring AOP的机制执行方法前利⽤事务管理器创建⼀个数据库连接并且修改数据库连接的autocommit属性为false,禁⽌此连接的⾃动提交,数据库得保证有这个功能然后执⾏当前⽅法,⽅法中会执⾏s

2022-03-07 19:09:04 495

原创 Spring -> ApplicationContext和BeanFactory有什么区别

ApplicationContext和BeanFactory有什么区别BeanFactory:是Spring里面最低层的接口,提供了最简单的容器的功能,只提供了⽣成Bean,维护Bean的功能;ApplicationContext:继承BeanFactory接口,它是Spring的一各更高级的容器,提供了更多的有用的功能;获取系统环境变量、国际化、AOP等功能,这是BeanFactory所不具备的区别:我觉得最主要的区别应该是BeanFactory每次获取对象时才会创建对

2022-03-06 23:12:35 134

原创 Spring -> Spring中Bean是线程安全的吗

Spring中Bean是线程安全的吗Spring对Bean没有做什么加锁之类的操作,所以它不是线程安全的如果创建Bean的时候,作用域设置为prototype,那么每次获取Bean都会新建一个Bean实例作用域设置为prototype的时候,Bean绝对是安全的其他时候就不一定了,比如单例的作用域的时候,多个线程同时获取的Bean本就是共享的,本就是不安全的如果要Bean保证线程安全的问题,就把作用域设置为prototype@Component@Scope(value =

2022-03-06 22:53:52 662

原创 Spring -> Spring事务什么时候会失效?

Spring事务什么时候会失效?我们使用Spring事务也基本都是声明式事务,直接给个注解@Transactional就行了spring声明式事务的原理是AOP,进⾏了切⾯增强,那么失效的根本原因是这个AOP不起作⽤了!常⻅情况有 如下⼏种数据库不⽀持事务 -> 数据库就没有开启关闭提交的功能没有被Spring管理 -> 首先要是一个Spring的Bean才能使用AOPSpring被代理方法必须是public的 -> @Transactional注解

2022-03-06 22:13:17 424

原创 Spring -> Spring事务传播机制

Spring事务传播机制多个事务⽅法相互调⽤时,事务如何在这些⽅法间传播⽅法A是⼀个事务的⽅法,⽅法A执⾏过程中调⽤了⽅法B那么事务该如何传播?REQUIRED(Spring默认的事务传播类型-required):当前存在事务,则加⼊这个事务 ,当前没有事务,则新建事务REQUIRED适合出现任何异常都回滚到最初状态,因为只有一个事务提交REQUIRES_NEW:新建事务,当前存在事务,则挂起该事务REQUIRES_NEW适合给相互调用但是实际上需求互不影响的事务

2022-03-06 21:40:08 175

原创 Spring -> Spring事务的实现⽅式和原理以及隔离级别?

Spring事务的实现⽅式和原理以及隔离级别?在使⽤Spring框架时,可以有两种使⽤事务的⽅式,⼀种是编程式的,⼀种是申明式的Spring 并不直接支持事务,只有当数据库支持事务时,Spring 才支持事务数据库必须支持执行sql和提交sql的 步骤可以分离@Transactional注解就是申明式的。@Transactional 注解和@EnableTransactionManagement(开启事务管理功能)它是基于 Spring AOP 实现的,搞一个专门针对事务的代理

2022-03-06 19:06:34 263

原创 Spring -> 解释下Spring⽀持的⼏种bean的作⽤域

解释下Spring⽀持的⼏种bean的作⽤域singleton:默认,单例Bean,再确定Id的情况下,只有一个Bean匹配。prototype:非单例Bean。每获取一次都重新创建一个新的。request:bean被定义为在每个HTTP请求中创建⼀个单例对象,每个HTTP请求都会创建一个新的专门给这个请求复用使用,HTTP请求结束,Bean销毁。session:每个请求的session中有⼀个专门的bean的实例,在session过期后,Bean销毁。...

2022-03-06 16:47:27 104

原创 Spring -> BeanFactory 与FactoryBean有什么区别?

BeanFactory 与FactoryBean有什么区别?Bean Factory是一个接口,Factory是工厂,Bean Factory其实就是一个工厂接口BeanFactory: IOC容器的核心接口,定义了getBean()、containsBean()等管理Bean的通用方法。BeanFactory就是一个工厂接口,IOC容器其实就像一个工厂容器用来生产东西,用来存东西,跟工厂的概念其实区别不大Bean工厂和Bean容器实际上意思差不多那么BeanFactory作为一个接

2022-03-06 01:35:47 151

原创 Spring -> 描述一下bean的生命周期

描述一下bean的生命周期Spring启动,扫描到一个@controller等注解类,解析为BeanDefinition (Bean的 定义类)找到一个可用的构造方法实例化一个对象属性注入 -> 依赖注入Bean初始化前 -> 这一步骤时,构造方法和@Autowired都已经完成初始化Bean完成创建销毁BeanSpring启动,扫描到一个@controller等注解类,解析为BeanDefinition (Bean的 定义类)//启动扫描@ComponentScan

2022-03-05 22:27:42 259

空空如也

空空如也

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

TA关注的人

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