自定义博客皮肤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)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL性能优化

前言MySQL作为常用的数据库之一,不管是面试还是工作,都是不可避免的,掌握MySQL性能优化非常重要,他不仅让你能轻松面对MySQL优化面试,也能帮助你在工作中写出更加优秀的SQL。系统配置优化1)保证从内存中读取数据,扩大innodb_buffer_pool_size,默认128M,可到3/4,修改 my.cnf,降低磁盘操作。2)数据预热,通过预热脚本,将磁盘上的全部数据缓存到内存中。3)降低磁盘写入次数,增大redolog,减少落盘次数,生产中不开通用查询日志,遇到性能问题开慢查询日志,不

2021-05-31 14:41:05 263 5

原创 MySQL如何搭建集群(附搭建过程详细命令及步骤截图)

概述集群架构设计的三个维度:可用性、扩展性、一致性。可用性主要是站点、服务、数据的高可用。扩展性主要是加从库或者是分库分表。一致性主要是如何保证访问数据的一致。主从模式实现原理实现步骤:1)主库将数据库的变更操作记录到Binlog日志文件中2)从库读取主库中的Binlog日志文件信息写入到从库的Relay Log中继日志中3)从库读取中继日志信息在从库中进行Replay,更新从库数据信息具体触发机制如下:1)Master服务器对数据库更改操作记录在Binlog中,BinlogDump

2021-06-24 13:44:13 4230 2

转载 阿里MYSQL开发规约(备忘录)

概述备忘录,忘记了就来翻一翻,养成习惯合理规范设计表阿里MySQL开发规约之建表1、【强制】表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint (1 表示是,0 表示否)。 select * from A left join B on B.name = A.namewhere B.name is null union all select * from B;说明:任何字段如果为非负数,必须是 unsigned。 注意:POJO 类中的任何布尔类型的变

2021-06-09 15:46:15 199 1

原创 Spring IOC和DI以及AOP理解

概述这三个概念可能大家都不陌生,在面试中经常会出现关于此类的问题,关于对他们的个人理解如下。IOCIOC其实就是控制反转,控制指的是对象的创建、管理、实例化权利,反转指的是控制权交给了外部容器Spring框架,打个比喻,我在项目中创造了一个对象类,在业务层需要用到他了,一般的办法是什么?是不是new对象啊,毕竟程序猿最擅长new对象了,而new对象就意味着依赖性增强,那么我不new行不行呢,这个时候IOC就出场了,IOC容器能帮助我们实例化对象并且管理它,当我们需要使⽤哪个对象,直接去问IOC容器要即

2021-02-09 16:35:07 316

原创 设计模式之单例模式理解

概述单例,从名字上面就可以看出来,首先他肯定是一个类实例,然后他同时只能允许一个访问,那么这样才构成了一个单例,单例模式在我们实际开发中应用非常广泛,比如我们创建了一个数据库连接池,然后又创建了一个工具类把这个连接池与线程进行绑定,那么我们就可以实现基于线程来实现对事务管控,数据库连接是多次的,但是基于连接管控的线程只有一个,那么这个工具类就可以构造成一个单例模式,单例模式实现方式有多种,我这里就介绍一下最基础的饿汉式以及增强懒汉式,双重效验锁,简单明了并且足于应付大部分的开发工作。饿汉式顾名思义,他

2021-02-05 15:33:56 82

原创 Mybatis延迟加载

概述就是在需要⽤到数据时才进⾏加载,不需要⽤到数据时就不加载数据。延迟加载也称懒加载。优缺点优点:延迟加载可以实现先从单表查询,需要时再关联其他表获取数据,提高查询效率,优化数据库性能。缺点:因为只有当需要⽤到数据时,才会进⾏数据库查询,这样在⼤批量数据查询时,因为查询⼯作也要消耗时间,所以可能造成⽤户等待时间变⻓,造成⽤户体验下降。应用场景一对多,多对多可以考虑采用延迟加载,什么时候用什么时候加载。一对一,多对一采用立即加载,这是默认采用策略。局部延迟加载配置:在association和

2021-02-05 14:46:16 359

原创 Mybatis-plus基础总结

特点⽆侵⼊:只做增强不做改变,引⼊它不会对现有⼯程产⽣影响,如丝般顺滑损耗⼩:启动即会⾃动注⼊基本 CURD,性能基本⽆损耗,直接⾯向对象操作强⼤的 CRUD 操作:内置通⽤ Mapper、通⽤ Service,仅仅通过少量配置即可实现单表⼤部分CRUD 操作,更有强⼤的条件构造器,满⾜各类使⽤需求⽀持 Lambda 形式调⽤:通过 Lambda 表达式,⽅便的编写各类查询条件,⽆需再担⼼字段写错⽀持主键⾃动⽣成:⽀持多达 4 种主键策略(内含分布式唯⼀ ID ⽣成器 - Sequence),可⾃

2021-02-03 17:46:58 185

原创 Spring lazy-Init 延迟加载原理和循环依赖问题处理

延迟加载Spring在启动时,默认是将所有的singleton bean提前实例化,如果设置了lazy-init=”ture”的话,就可以设置这个bean在ApplicationContext启动服务器时不被实例化,在调用他的getBean索取bean时进行实例化,实现延迟加载。这么设置的目的是对不常用的bean设置延迟加载,避免一开始启动服务器占用资源。延迟加载原理通过源码分析,在bean创建过程中中间环节有一个非抽象,非单例,非延迟加载的判断。如果是延迟加载就直接不处理,就不会完成该bean的创

2021-02-01 15:53:39 757

原创 Mybatis一级缓存及二级缓存理解

概念缓存存储在内存中,读取速度快Mybatis一级缓存存储在sqlsession中,默认开启,底层是一个hashmap(cachekey键(statsmentid+params+boundsql+rowbounds),值(具体对象))。第一次查询先去缓存中查找,找到直接返回,没找到去数据库获取,返回查询结果并缓存。事务提交操作会清空缓存。一级缓存源码理解:根据父子关系翻阅源码,比如sqlsession(clearCache)->defaultSqlsession(clearCache)-&

2021-01-26 12:40:17 458

原创 实现一个自定义持久层框架

实现一个自定义持久层框架传统JDBC操作如下:public static void main(String[] args) {Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {// 加载数据库驱动Class.forName(“com.mysql.jdbc.Driver”);// 通过驱动管理类获取数据库链接connection =

2021-01-22 15:33:39 142

原创 JAVA日常代码编写中如何写出优质的代码总结

概述代码,只要是一个程序员,都会写,一年经验,三年经验有时候都是在干同样的事,但是为什么三年经验薪资就会比一年经验高很多呢,这就关系到随着经验的增长,对代码编写理解不断上升,他能够创造更有价值的代码,提高程序性能,自然价值就更高了。编写代码提高运行效率的几个方面根据情况使用静态变量static关键字修饰变量和方法,都可以直接引用,不需要再new一个出来。这样一看,感觉不用new对象,那不是减少了内存的开销嘛,程序运行效率反而更高了啊,使用static的确能提高程序运行性能,但是当某个对象被stati

2020-08-21 11:48:47 304

原创 HTTP协议中,GET请求和POST请求的区别

前言Get请求和Post请求,作为一个程序员,可能是再熟悉不过的东西了,每当有人问起你他们的区别的时候,你可能都会会心一笑,然后巴拉巴拉说出下列这些区别:Get请求的数据会附在url之后,以?分割url传输数,参数以&连接,Post则把提交的数据放置在http包的包体中。Get一般用于查询/获取资源信息,Post一般用于更新资源信息。Get请求在回退是时是无害的,Post会再次提交...

2020-04-16 10:13:38 509

原创 Idea初次导入Springboot项目搭配Maven无法从阿里云中央仓库下载依赖包解决办法

概述Eclipse用习惯了,因为公司任务分配,需要开发两个接口,项目采用的是SpringBoot,工具用的是Idea,就想换换口味,花了几分钟下载了最新的idea 2019.3版本,在导入项目之后就发现竟然无法从阿里云远程仓库下载依赖包,因此我尝试了各种办法。解决办法第一个解法:maven版本过低,因为我的maven是3.2.5,为此我就去下了一个3.6.3的maven,,并重新配置环境,没...

2020-02-25 17:21:03 5261 4

原创 设计模式之代理模式理解

概述代理,顾名思义可以理解为代办,代管,就是为其他对象提供前置或者后置处理,比如我们二手车平台(某人、某瓜),你需要购买一辆二手车,中间车商去寻找匹配符合你要求的车,最后把车交到你手上并提供售后服务,而你就不用耗费时间去做这一系列事,可以省下时间来做其他你想要做的事。三种代理模式静态代理代理对象和目标对象实现相同的接口,基于目标对象可以直接扩展功能,但是接口不能发生改变,否则就要修改代理对...

2020-01-06 15:56:26 159

原创 设计模式之适配器模式理解

概述适配器其实就是一种适配中间件,他存在于不匹配的两者之间,常用于接口调用,开放的接口内部有许多方法,而我们只需要其中某个方法来获取自己想要的数据,不需要的默认为空,不去管它,而且他能把类的接口转换成客户端所能匹配的另一种接口,让两个类能够协同工作,形象一点就是比如你的手机充电口是安卓的,但是你现在只有苹果充电器,这时候中间加一个转接头,你就可以用苹果充电器进行充电了。分类适配器模式分为类结...

2019-12-17 10:44:17 207

原创 设计模式的六大基本原则

设计模式的作用1.设计模式是从许多优秀的软件系统中总结出的成功的、能够实现可维护性复用的设计方案,使用这些方案将避免我们做一些重复性工作,有助于我们提高开发和设计效率。2.设计模式提供了一套通用的设计词汇和一种通用的形式来方便开发人员之间沟通和交流,使得设计方案更加通俗易懂,因为设计模式是跨语言、跨平台、跨应用、跨国界的。3.大部分设计模式都兼顾了系统的可重用性和可扩展性,使我们更好的重用一...

2019-11-28 10:21:29 207

原创 关于Oracle数据库锁表、数据库闪回备份、多表联合批量刷新处理办法

前言在日常开发中我们往往会遇到各种各样的问题,有些问题还是值得记录下来,多积累才会成长。数据库锁表在日常开发测试过程中,遇到程序报错,提示记录或者表被锁定,无法更新记录,遇到这种情况往往就是我们相关联的表被锁定了,引起表锁定的原因有多种,比如数据库连接打开了没有关闭;还有就是开启了手动事物监听,但是在程序执行报错,没有进行回滚;或者在手动操作数据库某条记录,使用for update没有提交等...

2019-11-01 10:37:16 403

原创 排序算法之快速、归并、二叉树-堆排序详解

前言关于排序算法的术语我就不再述说,不清楚的可以看我上一篇博文,在上篇博文我讲了一下关于冒泡、插入、选择排序,这都是非常基础的排序算法,今天我就深入一点,讲讲稍微复杂点的快速、归并以及二叉树-堆排序的原理。快速排序快速排序其实很简单,它采用了分治法的方式,何为分治法,就是把一个数组分成两块,取一个基数进行左右比较,这个基数通常是第一个数字,先进行左边比较,比它小,交换位置,再进行右边比较,比...

2019-10-24 16:38:01 382

原创 排序算法之冒泡、选择、插入排序详解

关于排序算法所涉及的术语稳定排序:数组中a、b两个元素,如果是相等的,再排完序后不会交换位置。原地排序:在排序过程中不会占用其他储存空间,利用原来储存数组的空间进行比较和交换完成排序。时间复杂度:排序算法执行所消耗的时间空间复杂度:排序算法执行所占用的空间冒泡排序冒泡排序其实就是对一组数组进行循环比较,第一次循环拿到一个元素,再第二次循环的时候进行比较,把小的元素往前调或者把大的元素往...

2019-10-17 14:37:38 218

原创 Oracle存储过程创建和使用

基本概念存储过程其实就是一组用于完成特定数据库功能的SQL语句集,在日常中大量使用,它被编译后存储在数据库中,根据定义的存储过程名称来调用并执行,从而完成复杂的数据库操作。优点1.存储过程使一些复杂的数据库操作与代码直接分离,便于扩展和维护,也提高了数据的安全性。2.存储过程可以重复利用,只需要带不同的参数即可,提高了程序的性能。3.存储过程执行效率高,只需要在创建的时候编译,以后每次执...

2019-10-09 16:32:56 496

原创 JAVA IO和NIO的区别以及应用场景

概述JAVA在JDK1.4之后引入了一个新的库NIO,其实他的作用跟IO是相同,只是他们的实现方式不同,NIO的效率要高于IO。面向流和面向缓冲IO:面向流,阻塞IONIO:面向缓存,非阻塞IO,包含类:Channel(通道),Buffer(缓冲区), Selector(选择区)IO面向流,每次从流中读取一个或者多个字节,直到读取完所有字节,在此过程中不能执行其他操作,也不能移动流中的数...

2019-09-24 17:06:48 582

原创 JDK1.8的一些新特性

概述我觉得oracle是一个丧心病狂的公司,jdk的版本更新频率从最开始几年更新一次,大家都求着他更新,到后来两年一个版本,再到现在半年一次,虽然说现在已经更新到jdk12了,但是我相信大多数企业仍然使用的是jdk1.8的版本,甚至更有一些还在用1.6等等,所以我简单梳理了一下jdk1.8的一些新特性以及他的用法和作用。default关键字在jdk1.8以前,接口里面只能是抽象的方法,不能有...

2019-09-19 11:22:44 225

原创 三种常用缓存淘汰算法

概述计算机读取文件(数据库)的速度相对于读取内存的数据来说,效率要低得多,因此常用缓存来提高访问效率,而内存相比较于硬盘要小的多,为了缓存更有价值的数据,淘汰算法就显得尤为重要。FIFO先进先出,类似于队列,在数据结构上使用队列来实现1.新访问的数据加入FIFO队列尾部,数据在FIFO队列顺序移动2.淘汰FIFO头部的数据LRU最近最少使用,如果数据最近被访问,将来访问的机率也高,...

2019-09-11 15:18:41 1260

原创 Redis分布式缓存

Redis是一个高性能的key-value数据库,完全是开源免费的,而且他还是一个NOSQL数据库(非关系型数据库),支持多种数据类型,如:字符串、链表、哈希表、集合等等,为解决高并发、高扩展、大数据储存等一系列数据问题而产生的数据库解决方案。优点读写速度快支持数据永久化到磁盘丰富的数据结构保持原子性,支持事务支持主从机制,读写分离,主机自动把数据同步到从机应用场景数据缓存,把一些...

2019-09-04 14:48:27 233

原创 设计模式之观察者模式理解

设计模式的作用1.在编码中,合理使用设计模式将避免做一些重复性工作,有助于提高开发和设计效率2.跨语言、跨平台、跨应用、跨国界3.有助于提高系统的灵活性和可扩展性4.合理使用设计模式并文档化,有助于别人更快理解系统观察者模式的理解概述观察者模式也被称为发布/订阅模式,它订阅了一种一对多的依赖关系,让多个观察者同时监听某一个主体对象,在这个对象状态发生改变时,会通知所有观察者对象,更新...

2019-08-28 16:53:37 243

原创 JVM内存调优

JVM源码编译过程分析和输入到符号表注解处理语句分析和生成class文件class文件组成部分结构信息:文件格式版本号和数量、大小信息元数据:声明与常量的信息,包含类/继承的超类/实现接口的声明信息、域与方法声明信息和常量池方法信息:语句与表达式对应的信息,包含字节码、异常处理器、求值栈和局部变量区大小、求值栈的类型记录、调试符号信息#JVM内存结构堆年轻代新建对象又年轻代分...

2019-08-23 11:04:07 241

原创 关于sql优化的一些见解

在项目中,同样的一个执行结果,因为不同的写法执行的效率可能将是几十倍之差,为大家罗列一下我知道关于sql优化的部分知识。如果一条sql执行时间过长,那么可以查看这条sql是否涉及到了多表联合查询以及子查询,能否进行业务拆分或者建立临时表。适当的建立索引将有助于提高sql查询执行效率,但是索引的增加会影响此表插入和更新效率,只需要在关键字段添加索引即可。在设计表的时候,如果某一个字段能确定只...

2019-08-13 16:27:44 272

原创 HashMap常问面试题整理

什么是HashMap?hashmap是由数组加链表构成的,存储的是键值对,而且可以接受空键值对,hashtable不能,hashmap是非synchronized的,查询速度快,通过key的hashcode%table.length得到数组下标,顺势得到该下标的链表,遍历得到想要的值HashMap的工作原理?hashmap基于hashing的原理,使用put(key,value)存储对象到h...

2019-08-07 11:33:40 318

原创 HashMap的存储原理

HashMap是一个数组加链表的结构构成。模运算(效率低):index=hashcode%table.length在容量扩容为两倍时,需要再次rehash确定每个元素位置,浪费性能。位运算(效率高):index=hashcode&table.length-1index的值完全取决于key的hashcode最后几位,而且效果等同于取模运算。HashMap的数据结构数组数组存储空...

2019-08-02 15:12:31 891

原创 GC工作机制

关于内存分配java虚拟机是先一次性分配一块较大的空间,每次new的时候都在该空间上进行分配和释放,主要分为两种:静态内存和动态内存,编译时能确定的内存就是静态内存,即内存是固定的,系统一次性分配,比如int类型变量。在程序执行过程中才能确定内存大小的就是动态内存,比如java对象的内存空间。java栈、程序计数器、本地方法栈都是线程私有的,和线程状态一致,当方法结束内存也跟着回收。java堆和...

2019-07-29 21:02:58 287

原创 JVM结构原理

JVM结构——类加载器JVM启动时或类运行时将需要的class加载到JVM中。classloaderjava类加载器,主要作用是将class加载到JVM中,同时考虑由谁加载。bootstrapclassloader顶层类加载器,内嵌到JVM中,在JVM启动时会初始化该classloader,主要用于读取java核心类库jre/lib/re.jar中的所有class文件,这个jar文件包...

2019-07-25 17:08:31 299

Redis+Redis可视化客户端.rar

Redis+可视化客户端Redis-desktop-manager-0.8.8.384

2021-02-22

空空如也

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

TA关注的人

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