自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Alice_8899的博客

自己个人总结,方便以后查询。

  • 博客(64)
  • 收藏
  • 关注

转载 Spring boot创建自定义starter的完整步骤

这篇文章主要给大家介绍了关于Spring boot创建自定义starter的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring boot具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧前言:Springboot的出现极大的简化了开发人员的配置,而这之中的一大利器便是springboot的starter,starter是springboot的核心组成部分,spr...

2020-04-12 17:36:02 731

转载 美的支付-对账系统实现

对账,可以发现渠道方与我方交易中的差异。根据差异的不同,再做具体的操作。随着美的支付接入的渠道增多,日交易量逐渐增大的情况下,人工对账已经不能满足财务的要求,系统对账提上日程待解决的问题01替代人工对账,解放人工对账的工作量,提升对账效率,实现系统自动化02对账差异可自动进行对应处理,输出对账结果对账系统演进过程2016年12月人工对账...

2020-04-07 16:32:47 713

转载 关系型数据库设计:三大范式的通俗理解

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。而通常我们用的最多的就是第一范式(1NF)、第二范式(2NF)、第三范式(3NF),也就是本文要讲的“三大范式”。第一范式(1NF):要求数据库表的每一列都是不可分割的原子数据项。举例说明:在上面的表中,“家庭信...

2020-04-07 10:05:45 227

原创 B+树叶子结点到底存储了什么?

首先MYSQL默认InnoDB引擎,该引擎默认B+树;先说结论:B+树叶子结点存储的是主键KEY或者具体数据。分情况讨论:主键KEY比如说user_name是个索引,当执行该SQL:select * from user_info where `user_name` = 'xiaoming';InnoDB 就会建立 user_name 索引 B+树,节点里存的是 user_name 这个 ...

2020-04-07 10:00:25 17398 13

转载 对称加密和非对称加密的区别

目录简介:对称加密算法优点:缺点:常见的对称加密算法:非对称加密算法优点:缺点:常见的非对称加密算法Hash算法(摘要算法)常见的摘要算法简介:对称加密: 加密和解密的秘钥使用的是同一个. 非对称加密:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。对称加密算法密钥较短,...

2020-04-07 09:38:10 560

转载 @Transactional 注解失效场景

目录引言一、事务二、@Transactional介绍三、@Transactional失效场景引言昨天公众号粉丝咨询了一个问题,说自己之前面试被问@Transactional注解哪些场景下会失效,一时语塞致使面试失败。所以今天简单的和大家分享一下@Transactional相关的知识。@Transactional注解相信大家并不陌生,平时开发中很常用的一个注解,它能保...

2020-04-02 15:45:00 303

原创 JAVA基本数据类型的字节与位数以及String类型的最大长度

目录基本数据类型的字节与位数如下:String类型的最大长度基本数据类型的字节与位数如下:变量名称字节位数 byte18 short216 int432 long864 float432 dou...

2020-04-02 15:29:02 1354

转载 为什么说Enum实现单例模式是最佳实践

目录内容概要实现单例模式的几个关键点利用Enum实现单例模式实现代码Enum实现单例模式的几个关键点验证结论众所周知,单例的实现有很多方式。从单例加载的时机区分,有懒汉模式、饿汉模式。而从实现方式区分有双重检查模式,内部类模式、Enum模式、Map模式等。在《Effective Java》中,作者提出利用Enum是实现单例模式的最佳实践。研究了下Enum反编译源码,就一...

2020-04-02 15:07:23 217

转载 基础 | BIO、NIO与AIO

Java中的IO部分比较复杂,具体可参看书籍《Java NIO》和《Netty权威指南》。在此,仅对BIO、NIO和AIO进行概述性梳理,未涉及到具体实现细节,后续有空将深入展开。同步IO和异步IO参考答案:IO操作主要分为两个步骤,即发起IO请求和实际IO操作,同步IO与异步IO的区别就在于第二个步骤是否阻塞。若实际IO操作阻塞请求进程,即请求进程需要等待或者轮询查看IO操作是否就...

2020-04-01 10:29:01 164

转载 JAVA BIO与NIO、AIO的区别(这个容易理解)

IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO在JDK1.4出来之前,我们建立网络连接的时候采用BIO模式,需要先在服务端启动一个ServerSocket,然后在客户端启动Socket来对服务端进行通信,默认情况下服务端需要对每个请求建立一堆线程等待请求,而客户端发送请求后,先咨询服务端是否有线程相应,如果没有则会一直等待或者遭到拒绝...

2020-04-01 10:26:27 121

原创 自定义注解

@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Log { /** * 是否打印出参日志; 默认:打印 * @return */ boolean isPrintOutParam() default true;...

2020-03-31 10:15:02 118

转载 十大经典排序算法最强总结(含JAVA代码实现)

目录0、排序算法说明1、冒泡排序(Bubble Sort)2、选择排序(Selection Sort)3、插入排序(Insertion Sort)4、希尔排序(Shell Sort)5、归并排序(Merge Sort)6、快速排序(Quick Sort)7、堆排序(Heap Sort)8、计数排序(Counting Sort)9、桶排序(Bucket Sor...

2020-03-30 11:46:04 165

转载 Linux常用命令大全(非常全!!!)

目录系统信息关机 (系统的关机、重启以及登出 )文件和目录文件搜索挂载一个文件系统磁盘空间用户和群组文件的权限 - 使用 "+" 设置权限,使用 "-" 用于取消文件的特殊属性 - 使用 "+" 设置权限,使用 "-" 用于取消打包和压缩文件RPM 包 - (Fedora, Redhat及类似系统)YUM 软件包升级器 - (Fe...

2020-03-29 19:50:37 264

转载 log4j的8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL)

log4j定义了8个级别的log(除去OFF和ALL,可以说分为6个级别),优先级从高到低依次为:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL。ALL 最低等级的,用于打开所有日志记录。 TRACE designates finer-grained informational events than the DEBUG.Since:1.2.12,很低...

2020-03-29 19:32:18 636

转载 IOC与DI的理解

目录1.1、IoC是什么1.2、IoC能做什么1.3、IoC和DI二、分享Bromon的blog上对IoC与DI浅显易懂的讲解2.1、IoC(控制反转)2.2、DI(依赖注入)三、我对IoC(控制反转)和DI(依赖注入)的理解1.1、IoC是什么  Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中...

2020-03-28 01:06:00 209

原创 mysql limit 分页

mysql中用limit 进行分页有两种方式语句1:select * from student limit 9,4 // 语句1和2均返回表student的第10、11、12、13行 ,第一个参数表示从该参数的下一条数据开始,第二个参数表示每次返回的数据条数。语句2:slect * from student limit 4 offset 9 //语句2中的4表示返回4行,9...

2020-03-28 01:00:25 131

转载 SOA架构和微服务架构的区别

1.SOA架构和微服务架构的区别首先SOA和微服务架构一个层面的东西,而对于ESB和微服务网关是一个层面的东西,一个谈到是架构风格和方法,一个谈的是实现工具或组件。1.SOA(Service Oriented Architecture)“面向服务的架构”:他是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。一个服务 通常以独立的形式存在与操作系统进程中。各个...

2020-03-27 11:39:39 163

原创 关于maven同名jar包不同版本号的冲突问题

jar包A引了M-0.1版jar包B引了M-0.2版这时两个M都会引进路径,可能会有冲突如何解决呢?方法一:使用exclusion标签 从A中排除M 或者从B中排除M<dependency> <groupId>net.tomjerry</groupId> <artifactId>cat-monitor</arti...

2020-03-24 20:50:51 680

原创 经典面试题-Class.forName()的作用

1、装载一个类并且对其进行实例化的操作。 2、装载过程中使用到的类加载器是当前类。为了详细描述,Class.forName()方法,这里使用classLoader.loadClass()进行对比描述a)Class.forName(String className)使用装载当前类的类装载器来装载制定的类,因为class.forName(String name)方法内部调用了Class.for...

2020-03-23 10:18:59 172

转载 一致性 Hash 算法分析

当我们在做数据库分库分表或者是分布式缓存时,不可避免的都会遇到一个问题:如何将数据均匀的分散到各个节点中,并且尽量的在加减节点时能使受影响的数据最少。Hash 取模随机放置就不说了,会带来很多问题。通常最容易想到的方案就是hash 取模了。可以将传入的 Key 按照index = hash(key) % N这样来计算出需要存放的节点。其中 hash 函数是一个将字符串转换为正...

2020-03-23 09:29:55 157

原创 限流器及Guava实现分析

目录限流常用限流算法计数限流算法固定窗口计数滑动窗口计数非计数限流法漏桶限流令牌桶限流算法比较Guava包中限流工具的实现分析概览简单使用示例RateLimiter实现分析create函数分析acquire函数分析子类实现分析代码分析实现逻辑特点抽象函数分析storedPermitsToWaitTime函数GUAV...

2020-03-13 10:36:59 403

转载 java 轻量级同步volatile关键字简介与可见性有序性与synchronized区别

概念JMM规范解决了线程安全的问题,主要三个方面:原子性、可见性、有序性,借助于synchronized关键字体现,可以有效地保障线程安全(前提是你正确运用)之前说过,这三个特性并不一定需要全部同时达到,在有些场景,部分达成也能够做到线程安全。volatile就是这样一个存在,对可见性和有序性进行保障可见性volatile字面意思,易变的,不稳定的,在Java中含义也是如...

2020-03-04 12:35:03 231

转载 new BigDecimal(0.1)与new BigDecimal(”0.1″)为何不等?

在使用BigDecimal进行比较的时候,会发现new BigDecimal(0.1)与new BigDecimal(”0.1″)不相等,后来查了一下API发现对于new BigDecimal(double var)有如下描述: 此构造方法的结果有一定的不可预知性。有人可能认为在 Java 中写入 new BigDecimal(0.1) 所创建的 BigDecimal 正好等于 0.1(非标度值 ...

2020-02-15 11:05:24 676

原创 @Autowired 与@Resource的区别

spring不但支持自己定义的@Autowired注解,还支持几个由JSR-250规范定义的注解,它们分别是@Resource、@PostConstruct以及@PreDestroy。@Autowired 与@Resource的区别:1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。2、@Autowired默认按类型(b...

2020-01-16 17:56:21 100

转载 为什么 MySQL 使用 B+ 树

目录概述设计读写性能数据加载总结Reference偶人为什么这么设计(Why's THE Design)是一系列关于计算机领域中程序设计决策的文章,我们在这个系列的每一篇文章中都会提出一个具体的问题并从不同的角度讨论这种设计的优缺点、对具体实现造成的影响。如果你有想要了解的问题,可以在文章下面留言。为什么 MySQL 使用 B+ 树是面试中经常会出现的问题,很多...

2020-01-15 11:26:02 119

转载 JVM 性能调优监控工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解

现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发、维护中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够...

2020-01-15 10:25:25 158

转载 用AtomicStampedReference解决ABA问题

在运用CAS做Lock-Free操作中有一个经典的ABA问题:线程1准备用CAS将变量的值由A替换为B,在此之前,线程2将变量的值由A替换为C,又由C替换为A,然后线程1执行CAS时发现变量的值仍然为A,所以CAS成功。但实际上这时的现场已经和最初不同了,尽管CAS成功,但可能存在潜藏的问题,例如下面的例子:现有一个用单向链表实现的堆栈,栈顶为A,这时线程T1已经知道A.next为B,...

2020-01-09 17:12:44 208

转载 在java中String类为什么要设计成final?

String很多实用的特性,比如说“不可变性”,是工程师精心设计的艺术品!艺术品易碎!用final就是拒绝继承,防止世界被熊孩子破坏,维护世界和平!1. 什么是不可变?String不可变很简单,如下图,给一个已有字符串"abcd"第二次赋值成"abcedl",不是在原内存地址上修改数据,而是重新指向一个新对象,新地址。2. String为什么不可变?翻开JDK源...

2020-01-08 19:50:20 111

原创 如何评估线程池中的核心线程池个数的大小

分析一般从几个角度考虑:1.任务的性质:CPU密集型的任务、IO密集型任务、混合型任务。 2.任务的优先级:高、中、低 3.任务执行时间:长、中、短 4.任务的依赖性:是否依赖其它系统资源,如数据库的连接等。根据不同的任务可以交给不同规模的线程池执行。如果是cpu密集型的,尽量减少线程数,如果是IO密集型任务尽量加大线程数,因为io不占用cpu的资源。建议配置2倍CPU个数+1。...

2020-01-08 13:59:12 573

原创 链表头插尾插概念

以图来解释这个概念:清楚明了。头插该方法从一个空表开始,生成新结点,并将读取到的数据存放到新结点的数据域中,然后将新结点插入到当前链表的表头,即头结点之后,如图1所示。图1 头插法建立单链表尾插头插法建立单链表的算法虽然简单,但生成的链表中结点的次序和输入数据的顺序不一致。若希望两者次序一致,可采用尾插法。该方法是将新结点插入到当前链表的表尾上,为此必须增加一个尾指针r...

2020-01-07 13:49:04 218

原创 分布式事务

分布式事务的实现主要有以下 5 种方案:XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案两阶段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不...

2020-01-05 18:32:20 89

转载 聚集索引和非聚集索引的区别

目录一、深入浅出理解索引结构二、区别及优缺点三、需要搞清楚的几个问题四、何时使用聚集索引或非聚集索引五、结合实际,谈索引使用的误区六、其他书上没有的索引使用经验总结一、深入浅出理解索引结构实际上,可以把索引理解为一种特殊的目录。微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclust...

2020-01-03 17:32:39 102

原创 聚集、非聚集索引、唯一索引、复合索引、系统自建索引

说明:红色字体表示要特别注意点索引是在数据库表或者视图上创建的对象,目的是为了加快对表或视图的查询的速度。按照存储方式分为:聚集与非聚集索引按照维护与管理索引角度分为:唯一索引、复合索引和系统自动创建的索引。索引的结构是由:根节点--->非叶节点--->非叶节点--->叶节点1、聚集索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数...

2020-01-03 11:29:41 562

原创 Mysql中drop、truncate和delete的用法

说到删除表数据的关键字,大家记得最多的可能就是delete了然而我们做数据库开发,读取数据库数据.对另外的两兄弟用得就比较少了现在来介绍另外两个兄弟,都是删除表数据的,其实也是很容易理解的drop出没场合:drop table tb--tb表示数据表的名字,下同绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表, ...

2020-01-02 13:12:07 400

原创 MySQL中IS NULL、IS NOT NULL、!= 是否用索引?

不知道从什么时候开始,网上流传着这么一个说法:MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!= 这些条件时便不能使用索引查询,只能使用全表扫描。这种说法愈演愈烈,甚至被很多同学奉为真理。咱啥话也不说,举个例子。假如我们有个表s1,结构如下:CREATE TABLE s1 ( id INT NOT NULL AUTO_INCREMENT, ...

2020-01-02 11:51:56 171

原创 MySQL中NULL对索引的影响

看了很多博客,也听过很多人说,包括我们公司的DBA,说MySql中如果某一列中含有null,那么包含该列的索引就无效了。翻了下《高性能MySQL第二版》和《MySQL技术内幕——InnoDB存储引擎第2版》,并没有看到关于这个的介绍。但在本地试了下,null列是可以用到索引的,不管是单列索引还是联合索引。后来在官方文档中找到了说明,如果某列字段中包含null,确实是可以使用索引的,地址:h...

2020-01-02 11:11:09 504

原创 Spring和SpringMVC以及SpringBoot的区别

什么是spring关于spring的定义无论是从官方还是市面上已经很多能够清晰明了的做出解释了。我姑且简单定义它为一个轻量级的控制反转(IoC)和面向切面(AOP)的容器,Java 开发框架,至于控制反转、面向切面、轻量级、容器等这些自行百度,很多大牛解释的非常清楚什么是springMVC这里我姑且把名词分开来讲、spring与mvc可以更好地解释什么是springMvc,MVC为现代...

2019-12-31 15:03:06 176

转载 哪些对象可以作为GC ROOT

GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被GC所管理,因而选择这些区域内的对象作为GC roots,被GC roots引用的对象不被GC回收。详细:GC Root常说的GC(Garbage Collector) roots,特指的是垃圾收集器(Garbage Collector)的对象,GC会收集那些不是GC roots且没有被GC ro...

2019-12-31 14:18:29 1221

原创 Java-五种线程池,四种拒绝策略,三种阻塞队列

Java-五种线程池,四种拒绝策略,三种阻塞队列:三种阻塞队列:BlockingQueue<Runnable> workQueue = null;workQueue = new ArrayBlockingQueue<>(5);//基于数组的先进先出队列,有界workQueue = new LinkedBlockingQueue<&g...

2019-12-31 13:39:48 150 1

转载 树的时间复杂度

时间复杂度是一个函数,它定量描述了该算法的运行时间。常见的时间复杂度有以下几种。1,log(2)n,n,n log(2)n ,n的平方,n的三次方,2的n次方,n!1指的是常数。即,无论算法的输入n是多大,都不会影响到算法的运行时间。这种是最优的算法。而n!(阶乘)是非常差的算法。当n变大时,算法所需的时间是不可接受的。用通俗的话来描述,我们假设n=1所需的时间为1秒。那么当n = 10...

2019-12-26 18:43:26 2950

空空如也

空空如也

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

TA关注的人

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