自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis事务、锁、数据删除策略

Redis事务Redis事务作为一个命令执行的队列,将一系列的预处理的命令包装成为一个整体,当执行时按照添加顺序依次执行,中间不会被打断或干扰。采用multi、exec、discard进行事务的处理。multi:设定事务的开启位置,此指令执行后,后续所有指令均加入到事务中。exec:设定事务的结束位置,同时执行事务。discard:终止当前事务的定义,发生在multi之后,exec之前。注意:加入事务的命令暂时进入到任务队列中,并没有立即执行,只有执行exec命令才开始执行队列中的任务

2021-09-12 21:50:30 241

原创 Redis的持久化RDB与AOF

Redis的持久化RDB与AOFRedis是一个内存数据库,数据保存在内存中,但是内存中的数据在服务器发生故障的时候易丢失,持久化是将内存中数据保存到硬盘中。在Redis中,持久化方式有两种,即快照(RDB)与日志(AOF)。RDB方式RDB其实就是把数据以快照的形式保存到磁盘中,在指定的时间间隔内将内存中的数据集快照写入磁盘。也是默认的持久化方式,这种方式就是将内存中的数据以快照的方式写入到二进制文件中,默认的文件名dump.rdb。触发方式对于RDB方式持久化,提供了三种触发机制:save、b

2021-09-08 23:15:33 183

原创 Redis的数据类型及基础命令

1、简介Redis是一个开源、内存中的数据结构存储系统,他可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,内置 复制、LUA脚本、LRU驱动事件、事务和不同级别磁盘持久化,可通哨兵(Sentinel)和自动分区(Cluster)提高可用性。2、数据类型Redis本身就是一个Map,其中所有的数据都是采用key:value的形式存储。所有的key都是采用String类型(表名​:id:​idvalue:业务),value的部分的类型就是我们常说的Redis 5中数据类型。2.1、字符串(S

2021-09-08 14:45:51 153

原创 Java内存模型JMM

Java内存模型JMMJMM即JAVA内存模型(Java memory model),因为在不同的硬件生产商和不同的操作系统下,内存的访问逻辑有一定的差异,结果就是当你的代码在某个系统环境下运行良好,并且线程安全,但是换个系统就出现各种各样的问题。Java内存模型,就是为了屏蔽系统和硬件差异,让一套代码在不同平台下能达到相同的访问结果。JMM定义一个一致的、跨平台的内存模型,是缓存一致性协议,用来定义数据读写的规则。内存主要划分为主内存和工作内存两种,主内存和工作内存跟JVM内存划分(堆、栈、方法区)是

2021-08-29 17:39:48 112

原创 Mybatis启动流程

Mybatis启动流程 ----- (SpringBoot)初次查看源码,不足处请指教。在mybatis-spring-boot-autoconfigure包META-INF目录下,spring.factories文件中配置这样一段配置:org.springframework.boot.autoconfigure.EnableAutoConfiguration=\org.mybatis.spring.boot.autoconfigure.MybatisAutoConfigurationSprin

2021-08-08 15:11:17 701

原创 SpringBoot自动装配

SpringBoot自动装配有一定经验的开发使用过纯Spring开发,相信Spring的配置文件一定让你很头疼。SpringBoot的理念是约定大于配置。通俗说,就是Spring Boot为我们提供了一套默认的配置,不需要我们再去手动配置XML配置文件,只有SpringBoot默认配置不满足要求时,才去修改配置。@1、SpringBootApplication@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documente

2021-08-07 15:13:57 154

原创 索引实践--记录

索引实践–记录全值匹配最左前缀如果索引有多列,要遵循最左前缀原则。查询从索引的最左前列开始并且不跳过索引中的列。不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描。存储引擎不能使用索引中范围条件右边的列。即在范围查询条件后面的条件不会使用索引。尽量使用覆盖索引(只访问索引的查询(查询的列都在索引中)),减少使用select * 语句。MySQL在使用不等于(!=或<>)的时候无法使用索引会导致全表扫描。is

2021-07-25 23:00:57 113

原创 MySQL之Explain各列详解-笔记

Explain各列详解explain 语句执行后返回id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列。1、id列id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按照select出现顺序增长的,MySQL将select查询分为简单查询(SIMPLE)和复杂查询(PRIMARY)。复杂查询分为三类:简单子查询、派生表(from语句中的子查询)、union查询。id列越大执行优先级越

2021-07-25 21:06:25 1768

原创 execute()与submit()的区别

execute()与submit()的区别execute()方法入参仅为 Runnable类型,submit()方法入参可为Runnable类型,也可为Callable类型;有两个方法的入参差异,由于Runnable的run()方法没有返回值,Callable的call()方法可以返回,可知execute()方法没有返回值,submit()方法有返回值。execute()方法的异常只能使用try、catch捕获,submit()方法不管提交的是Runnable还是Callable类型的任务

2021-07-12 11:33:59 202

转载 MySQL索引底层数据结构与算法--笔记

索引索引是帮助SQL高效获取数据的排好序的数据结构索引结构二叉树无法解决树平衡的问题红黑树解决二叉树的平衡问题,每个节点存储的元素有限,当数据量特别大的时候,树的深度不能控制,导致IO次数不可控HASH通过算法将HASH值转化为文件存储的地址,查询时做HASH计算就能查询到数据,但是HASH不能解决范围查询B-TreeB-Tree有度(Degree)的概念,即节点存储数据的个数,当 度存储的元素/度的大小 > 15/16 时,当前度进行分裂度的大小不会很大,否

2021-06-20 21:47:15 99

转载 布隆过滤器

布隆过滤器1、简介布隆过滤器(Bloom Filter)是一个叫做Bloom的人于1970年提出的。我们可以把它看作有二进制向量(或者说位数组)和一系列随机映射函数(哈希函数)两部分组成的数据结构。相比我们平时常用的List、Map、Set等数据结构,它占用空间更少并且效率更高,但是缺点是其返回的结果是概率性的,而不是非常准确的结果。理论情况下添加到集合中的元素越多,误报的可能性就越大。并且,存放在布隆的数据不容易删除。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rL

2020-06-22 17:24:31 213

原创 SpringBoot 中利用PostProcessor进行配置加密

SpringBoot 中加密某些配置Spring Boot does not provide any built in support for encrypting property values, however, it does provide the hook points necessary to modify values contained in the Spring Environment. The EnvironmentPostProcessor interface allows you

2020-06-11 10:35:14 858

原创 微服务注册中心(Eureka、Zookeeper、Consul、Nacos)

微服务注册中心(Eureka、Zookeeper、Consul、Nacos)注册中心的本质就是为服务提供方和服务消费方解耦以及弹性扩容。注册中心解决方案设计或者选型一个服务注册中心,首先要考虑的就是服务的注册与发现机制,目前主流的服务注册中心解决方案大致分为三类:应用内:直接集成到应用中,依赖于应用自身完成服务的注册与发现,最典型的代表有Netflix公司开源的Eureka。应用外:把应用当成黑盒,通过应用外的某种机制将服务注册到注册中心,例如Consul。DNS:一种特殊的应用外注册方式(感

2020-06-04 16:08:19 1556

原创 浅谈微服务的CAP理论与BASE理论

浅谈微服务的CAP理论与BASE理论CAP理论分布式系统中,有一致性(Consistency)、可用性(Availability) 和分区容错性(Partition tolerance) 三个方面需要考虑;但是同一个分布式系统中,只能同时满足其中两项。目前大多数开源分布式系统都实现了P,分区容错性,然后再在C与A之间做抉择,但并不是完全抛弃另外一点,只是相对的多做一些牺牲。C: 一致性(Consistency)强一致性,访问所有的节点得到的数据是一样的。注意,这里一致性是指强一致性,也就是数据更新完

2020-06-04 10:50:27 498

原创 Git的常见命令与简单使用

Git命令介绍1、创建本地仓库# 此命令将生成的仓库信息打包放在.git隐藏文件夹中git init# 此命令将生成的仓库信息直接存放在当前目录下git init --bare2、添加文件到本地仓库# 通过status查看文件状态,# 红色代表文件是初始化状态,位于工作区# 绿色代表文件已经存放在暂存区中# 没有则表示文件已存放到本地仓库中git status# 添加文件到暂存区# 添加单一文件到暂存区git add 文件名# 添加所有文件到暂存区,.代表所有文件git

2020-05-21 15:42:57 226

原创 JVM中类的加载

JVM中类的加载1、类的加载过程1.1、加载​ 加载是指类加载器将类的class文件读入到内存中,并为之创建一个Class对象。1.2、链接​ 类被加载之后,系统生成一个对应的Class对象,接着将会进入链接阶段,链接阶段负责把类的二进制数据合并到JRE中。链接阶段可以细分为下面三个阶段:验证: 检验被加载的类是否有正确的内部结构,确保class文件的字节流中包含的信息符合当前虚拟机的要求,不会危害虚拟机的自身安全,主要包含四种验证:文件格式验证、元数据验证、字节码验证、符号引用验证,并和其他

2020-05-18 13:41:35 210

原创 浅谈对JVM的认识

浅谈对JVM的认识JVM简介JVM(Java Virtual Machine),俗称Java虚拟机。是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算功能来实现的,Java语言跨平台就是依赖于JVM实现。内部结构JVM内部主要由三部分构成:类装载器系统每一个Java虚拟机都有一个类加载器系统,负责加载程序中类和接口,并赋予唯一名称。运行时数据区主要包含:方法区:当JVM的类装载器加载.class文件,并进行解析,把解析的类型信息放入方法区。堆:虚拟机中只有一个

2020-05-17 10:39:03 223

原创 Redis的五大数据类型

Redis的数据类型Redis共有五种数据类型:String(key-value)、Hash(key-value)、List、Set、ZSet。1、StringString是最常用的一种数据类型,普通的key-value存储都可以归为此类。一个key对应一个value,String类型是二进制安全的,这边以为着该类型可以接受任何格式的数据,如图像数据和Json对象等,是标准的key-valu...

2020-04-27 14:51:24 218

原创 Spring核心IOC与AOP

Spring核心IOC与AOPSpring是一个非常优秀的开源框架,它的诞生解决企业级开发的复杂,框架的主要优势就是其分层架构,方便集成各种优秀的框架,在学习Spring的时候,接触到IOC与AOP这两个概念,下面一起来学习。1、IOCIOC全称Inversion of Control,中文翻译为控制反转,在Spring中所谓的IOC就是一个管理对象生命周期及对象依赖关系的容器,也称为IOC...

2020-04-25 16:30:29 165

原创 认识ReentrantLock

ReentrantLock在Java中通常使用锁有两种方式,一种是使用synchronized关键字,另一种就是Lock接口下的子类,ReentrantLock就是Lock的默认实现之一。ReentrantLock是可重入锁,也是独占锁。弥补synchronized的局限性,提供更加灵活的加锁方式。1、常见方法获取锁/** 获取锁 */void lock();/** 如果当前线程...

2020-04-22 15:51:05 173

原创 Java中的CAS及其缺陷

Java中的CASCASCAS全称是Compare-and-Swap,翻译中文是比较并交换,是并发编程中一种常用的算法。Java中concurrent包完全建立在CAS上。我们常见并发控制是使用锁,这是一种悲观的策略,假设每次对资源访问都会发生冲突,所以当有一个线程访问资源时,其他线程就必须等待。与之相反的时乐观的策略,假设线程对资源的访问是没有冲突的,同是所有线程执行都不需要等待,如果遇到冲...

2020-04-22 12:38:40 300

原创 Synchronized实现原理及锁升级

Synchronized实现原理及锁升级Synchronized是Java内置的机制,是JVM层面的,而Lock则是接口,JDK层面的。最初的Synchronized的性能效率比较差,但是随着版本的升级,Synchronized已经越来越强大。修饰普通方法,使用类的实例加锁,进入方法前需要获取当前类的实例锁;注意反编译后的内容,flags那一行多了ACC_SYNCHRONIZED标识,表...

2020-04-21 20:27:08 180

原创 Java中BIO、NIO、AIO简介

Java中BIO、NIO、AIO1、BIO(一个连接一个线程)Block IO,同步阻塞IO,基于字节流和字符流进行操作,服务器实现模式为一个连接一个线程,即客户端有连接请求的服务器端就需要启动一个线程进行处理,如果这个连接不做任何事就会造成不必要的线程开销(可以使用线程池来改善)。BIO方式适用于连接数目比较小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中,JDK1.4以前...

2020-04-20 22:58:51 276

原创 JAVA运行时内存模型

JAVA运行时内存模型对于部分Java程序员来说,Java内存分为堆和栈,这其实是非常粗略的一种划分,这里的堆对应内存模型中Java堆,栈对应内存模型中虚拟机栈,这是不全面的认识。实际上,运行时内存模型有五大区域,分为线程私有和线程共享两大类。其中线程私有的数据区包含程序计数器、虚拟机栈、本地方法栈,线程共享的数据区包含堆、方法区,注意在方法区中有一个常量池。线程私有程序计数器:记录...

2020-04-17 22:54:12 360

原创 Vue+Element自定义多选框

Element UI 自定义表头多选框<el-table-column width="55" align="center"> <template slot="header" slot-scope="scope"> <el-checkbox v-model="checkedAll" class="el-checkbox_...

2020-02-24 12:00:14 1539

原创 CentOS7安装redis-5.0.5

1、下载redis命令:wget http://download.redis.io/releases/redis-5.0.5.tar.gz也可自行去官网下载。2、解压tar -zxvf redis-5.0.5.tar.gz3、编译安装进入解压后目录:cd redis-5.0.5编译命令:make安装命令:make install4、安装为服务在解压的目录中有u...

2020-01-01 00:07:50 129

原创 JVM的垃圾回收算法及垃圾收集器

JVM的垃圾回收算法及垃圾收集器1、垃圾回收程序的运行必然需要申请内存资源,无效的对象资源如果不及时处理,就会一直占用内存资源,最终将导致内存溢出。所以对内存资源的管理是很重要的。Java垃圾回收让程序员更加专注代码的实现,而不用过多考虑内存释放的问题,所以Java有自动的垃圾回收机制,也就是我们通常说的GC。除了Java语言,C#、Python等语言也有自动的垃圾回收机制。2、常见的垃...

2019-11-04 21:56:18 174

原创 JVM之1.7于1.8内存区别

JVM之1.7于1.8内存区别jvm的内存模型在1.7和1.8有较大区别。1、jdk1.7的堆内存Young 年轻代Young区被划分为三个部分,Eden区和两个大小严格相同的Survivor区,其中,Survivor区间中,某一时刻只有其中一个是被使用的,另一个留做垃圾收集时复制对象用,在Eden区间变满的时候,GC就会将存活得的对象移到空闲的Survivor区间中,根据JVM的策...

2019-11-03 13:20:20 2020

原创 JVM参数及命令

JVM参数1、jvm三种参数类型标准参数-help:输出此帮助消息。-cp:目录和 zip/jar 文件的类搜索路径。-version:输出产品版本并退出。-D<名称>=<值>:设置系统属性。-showversion:输出产品版本并继续。-X参数(非标准参数)-Xint:解释模式,编译快 运行慢。-Xcomp:编译模式,编译慢 运行快(一次编译...

2019-11-02 22:07:52 875

原创 Docker简介及入门操作

目录1 Docker简介1.1 什么是Docker1.2 Docker 组件1.2.1 Docker服务器与客户端1.2.2 Docker镜像与容器1.2.3 Registry(注册中心)2 Docker安装与启动2.1 安装Docker2.2 设置ustc的镜像2.3 Docker的启动与停止3 常用命令3.1 镜像相关命令3.1.1 查看镜像3.1.2 搜索镜像3.1.3 拉取镜像3.1.4 ...

2019-06-30 18:20:31 206

转载 使用CSDN-markdown编辑器

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-06-30 18:01:55 501

空空如也

空空如也

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

TA关注的人

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