自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 保障代码质量

如何保障代码质量bug后置处理bug类型分析三级目录敏捷开发与传统开发方式:需求分析代码检测工具codereview需求评审分解成技术评审项目复盘bug后置处理bug类型分析bug记录bug类型分析业务理解不到位?代码逻辑确实粗心写出低级bug(必须避免)代码运行效率三级目录敏捷开发与传统开发方式:需求分析拆解业务逻辑;需求在下一个迭代之前给出;比如提前三天到五天;根据需求量之前逻辑牵扯在线doc工具,可以打标注例如飞书敏捷开发步骤1.前期需

2021-10-15 09:23:45 152 1

原创 垃圾收集器

垃圾收集器垃圾收集算法分代收集理论标记-复制算法标记-清除算法标记-整理算法垃圾收集器Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)Parallel Scavenge收集器(-XX:UseParallelGC,-XX:UseParallelOldGC)ParNew收集器(-XX:UseParNewGC)CMS收集器(-XX:UseConcMarkSweepGC)CMS核心参数设置三色标记多标-浮动垃圾漏标-读写屏障写屏障写屏障实现SATB写屏障实现增量更新读

2021-09-10 01:39:24 203

原创 JVM调优

JVM调优JmapJmap -histo pidJmap -heap pidJstack使用Jstack找出占用CPU最高的线程堆栈信息JinfoJstat垃圾回收统计堆内存统计新生代垃圾回收统计新生代内存统计老年代垃圾回收统计老年代内存统计元数据空间内存统计Jstat -gcutil pidJVM运行情况评估年轻代对象增长的速率Young GC的触发频率和每次耗时每次Young GC后有多少对象存活和进入老年代Full GC的触发频率和每次耗时优化思路JmapJmap -histo pid当服务器内

2021-09-10 01:37:36 342

原创 synchronized

synchronized并发安全问题synchronized原理锁膨胀升级过程偏向锁轻量级锁自旋锁锁消除并发安全问题在多线程情况下,多个线程同时访问一个共享的、可变的资源时,会发生线程安全问题。序列化访问临界资源是解决所有线程安全类问题的方案,在同一时刻,只能有一个线程访问这些临界资源,也叫同步互斥访问。Java提供synchronized和Lock两种方式来实现同步互斥访问。方法内部的局部变量不是临界资源,因为这些变量只能由当前线程自己访问,不具有共享性,所以不会发生线程安全问题。sync

2021-09-10 01:34:46 84

原创 MySql-Sql执行流程

MySql执行Sql流程server层连接器为什么要缓存权限信息?MySql账户相关sql命令长连接长连接最大控制时长连接管理查询缓存 SQL_CACHE开启查询缓存查询缓存相关Sql命令分析器Antlr语法解析器优化器执行器InnoDB引擎Buffer Pool缓存机制redo日志binlogbinlog用途开启binlog查看binlog使用binlog日志同步数据或者恢复数据binlog三种格式binlog相关命令MySql主要可以分为Server层和存储引擎两部分。server层主要包括连接器

2021-09-10 01:25:04 144

原创 MySql-MVCC

MySql-MVCCMVCC介绍undo日志版本链和Read Viewundo日志undo日志版本链一致性视图Read-View事务id事务划分版本链对比规则MVCC机制实现MVCC示例MVCC介绍MySql在可重复度与读已提交事务隔离级别下实现了MVCC机制。undo日志版本链和Read Viewundo日志undo日志就是回滚日志,当修改一行数据时,undo日志会记录该行数据原始数据,当业务失败时,就根据undo日志的数据进行回滚事务。undo日志版本链对每一行数据进行多次修改时,undo

2021-09-09 17:56:07 235

原创 Mysql事务和锁

Mysql事务事务ACID特性并发事务带来的问题更新丢失(Lost Update)或脏写脏读(Dirty Read)不可重复度(NonRepeatable Read)幻读(Phantom Read)事务隔离级别事务ACID特性事务由一组SQL组成,其具有以下四个特性:原子性(Atomicity):事务是一个原子操作,不可分割,要么全部执行完成,要么全部不执行;一致性(Consistent):在事务开始和结束时,数据都必须保持一致;隔离性(Isolation):事务不会收到外部操作影响,事务的中间

2021-09-09 10:03:16 67

原创 JVM内存模型与内存分配

JVM内存模型与内存分配JVM内存模型Young GC过程对象挪动后,对象引用的修改JVM内存参数JVM对象内存分配对象创建过程1. 类加载检查2. 分配内存两种方法分配内存处理并发3. 初始化零值4. 设置对象头5. 执行init方法指针压缩为什么要指针压缩?对象内存分配对象栈上分配对象逃逸分析标量替换变量与聚合量对象在Eden区分配大对象直接进入老年代长期存活对象进入老年代对象动态年龄判断机制老年代空间分配担保机制对象内存回收可达性分析算法常见引用类型强引用软引用弱引用虚引用无用的类JVM内存模型

2021-09-08 10:43:56 153

原创 Class类加载过程

类加载过程Java命令执行代码流程类加载器类加载器初始化过程自定义类加载器双亲委派机制为什么要有双亲委派机制呢?全盘委托机制打破双亲委派机制为什么要打破双亲委派机制Java命令执行代码流程当用Java命令去运行一个Class文件时,执行流程如下:loadClass类加载过程由一下几步组成:类被加载到方法区中,主要包含:运行时常量池类型信息字段信息方法信息类加载的引用加载这个类的ClassLoader实例的引用对应Class实例的引用对应堆中Class类型的

2021-09-08 10:42:53 363

原创 数据结构-树

树树树的概念子树结点的度树的度叶子父结点儿子结点兄弟结点有序树森林结点的高度结点的深度结点的层数树的高度二叉树满二叉树完全二叉树二叉树特性完全二叉树特性树树的概念子树当结点数>1时,其余结点分为互不相交的集合称为子树。结点的度该结点的子树数量。树的度树中各个结点度数的最大值。叶子所有度为0的结点,即子树为空的结点。父结点从根节点到该节点的路径上,离该结点最近的结点,称为该结点的父节点。儿子结点兄弟结点同一个父结点的其他结点。有序树所有结点的儿子结点是有顺序的,否则为

2021-08-25 07:49:54 78

原创 数据结构-数组&链表

数组&链表数组数组特性动态数组ArrayList与数组如何选用注意点堆栈内存堆栈区别堆栈试题数组下标为什么从“0”开始二维数组链表链表结构单向链表插入与删除双向链表循环链表链表特性Java中链表的应用LRU缓存淘汰算法约瑟夫问题数组用一组连续的内存空间,来存储一组具有相同类型的数据。数组特性数组中各个元素是有先后顺序的,在内存按照这个顺序连续存放在一起相同类型的数据支持随机访问,查找快插入删除慢,因为要维护数组的连续性数组下标可以表示有意义的数据动态数组当存不下新元素是,需要

2021-08-18 16:18:23 65

原创 算法-排序算法

排序算法算法优劣评判标准选择排序冒泡排序快速排序插入排序实现思路Java实现优化思路希尔排序归并排序堆排序基数排序二分排序(二路归并)桶排序算法优劣评判标准时间效率空间复杂度比较次数&叫唤次数排序中比较多的操作是比较和交换,操作次数越少,效率越高。稳定性相同的数排完序后,相对位置不变。比如订单排序,按照金额从大到小排序,金额相同按下单时间降序排序。订单如下:10:00 3011:00 1511:30 1512:00 60如果选择稳定的排序算法,不会改变2与3的相对位置;

2021-08-18 16:16:51 361

原创 算法与数据结构基本介绍

算法算法特性五个特征设计原则高效率与低存储重要指标时间复杂度常数级对数级O(nlogn)线性级平方N次方怎么找时间复杂度时间复杂度效率排序相关书籍数据结构算法刷题网站算法特性五个特征有穷性不是死循环,可以执行完确定性有确定的结果可行性可以解决问题,可实行的有输入有输出设计原则正确性可读性健壮性bug少高效率与低存储内存占用越小,CPU占用越小,运算速度越快。重要指标时间复杂度运行一个算法所需要的时间。 O()空间复杂度

2021-08-15 11:21:39 99

原创 关于记忆的杂记

关于记忆结论记忆量复习点短时记忆长时记忆定量性感觉记忆短时记忆长时记忆痕迹结论学习要勤于复习,而且记忆的理解效果越好,遗忘的也越慢。记忆一个新事物,如果第二天不去复习,那你对这个新事物的记忆量就只剩25%。记忆量时间间隔记忆量刚记完100%20分钟后58.2%1小时后44.2%8~9小时后35.8%1天后33.7%2天后27.8%6天后25.4%复习点复习点的确定短时记忆1. 第一个记忆周期:5分钟2. 第二个记忆

2021-08-08 12:37:10 85

原创 模板方法模式

模板模式(Template Pattern)介绍优点实现源码应用介绍定义一个操作的算法框架,将一些步骤实现延迟到子类中。模板方法可以让子类在不更改算法结构的情况下修改特定步骤。如果很多类都实现通用的方法,那可以用模板方法将这些通用方法提取到抽象类中,让子类实现特定步骤。优点封装不变算法部分,扩展可变具体实现。提取公共代码,便于维护。复合开闭原则。实现public class TemplateMethodTest { public static void main(String[

2021-08-07 16:28:42 57

原创 原型设计模式

原型设计模式(Property Pattern)介绍实现工厂模式+原型模型实现Cloneable接口,重写clone()方法使用源码应用注意介绍原型模式用于创建重复的对象,又能保证性能。当创建一个对象代价比较大时,可以使用这种模式。实际使用中原型模式很少单独出现,通常与工厂方法模式一起使用,工厂方法将创建的对象缓存起来,等下次需要再创建这种对象时,使用clone()方法克隆一个对象提供给使用者。clone出来的对象与原对象是两个不同的实例对象。主要优点:可以高性能的创建重复的对象规

2021-08-07 13:58:14 81

原创 Clone方法与浅拷贝&深拷贝

Clone方法与浅拷贝&深拷贝介绍如何实现浅拷贝 shallow copy深拷贝 deep copy数组中的clone介绍在Java中,如果需要创建一个对象的副本,特别是这个对象的创建需要很大代价时,可以使用Clone()方法快速高效创建对象副本。如何实现实现Cloneable接口,重写Object.clone()方法即可。class OracleDriver implements Cloneable{ private String name; public Strin

2021-08-07 13:53:34 266

原创 建造者模式

建造者模式介绍实现示例电脑电脑建造者使用源码应用介绍将一个复杂对象的创建与其表示先分离,同样的创建过程可以创建不同的表示。主要解决: 当系统需要创建一个复杂的对象时,这个对象的各个子对象通常由一定的算法构成,由于需求的变化,各个子对象经常会有很大的变化,但是将它们组合在一起的算法却是稳定的。何时使用:需要创建一个具有复杂内部结构的对象时需要生成的对象内部属性本身相互依赖主要优点:建造者独立,容易扩展便于控制细节风险实现示例一个电脑由CPU、显卡、内存、主板、电源等组件组

2021-08-07 10:35:06 95

原创 抽象工厂设计模式

抽象工厂设计模式介绍实现类图实现方式数据库工具需要有两个产品,Connection用于连接数据库,Command用于执行命令Mysql实现Oracle实现使用介绍提供一个创建一系列相关或者互相依赖的对象的接口,无需指定他们具体的类。主要解决: 解决接口选择的问题。何时使用: 系统中有多于一个类别的产品,而系统只需要消费其中一个类别中的一系列产品。如何解决: 在一个类别的产品里,定义一系列的多个产品。关键代码: 在一个工厂接口里聚合多个同类产品的抽象。主要优点:当你从工厂里获取的一系列产品时

2021-08-07 01:17:12 49

原创 工厂方法模式

工厂方法模式介绍实现类图实现方式简单工厂模式工厂模式使用介绍创建对象时,不会对客户端暴露创建逻辑,使用一个共同的接口指向新创建的对象。意图: 定义一个创建对象的接口,让子类决定自己实例化哪一个类。Factory Method使一个类的实例化延迟到子类。主要解决: 解决接口选择的问题。何时使用:不知道该使用对象的确切类型时希望为框架提供扩展其内部组件的方法时如何解决: 让其子类实现工厂接口,返回一个抽象对象。关键代码: 创建过程在子类进行。主要优点:1. 符合单一职责原则2. 符合

2021-08-06 20:19:52 95

原创 设计模式简介

设计模式简介设计模式的作用设计模式的类型1. 创建型2. 结构型3. 行为型设计模式六大原则1、开闭原则(Open Close Principle)2、里氏代换原则(Liskov Substitution Principle)3、依赖倒转原则(Dependence Inversion Principle)4、接口隔离原则(Interface Segregation Principle)5、迪米特法则,又称最少知道原则(Demeter Principle)6、合成复用原则(Composite Reuse Pr

2021-08-06 17:40:32 52

原创 单例设计模式

单例设计模式介绍实现类图实现方式懒汉模式+DCL+线程安全+防止指令重排序恶汉模式静态内部类枚举介绍意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。关键代码:构造函数是私有的。实现类图实现方式懒汉模式+DCL+线程安全+防止指令重排序特点:线程安全,在多线程情况下保持高性能。DCL(Double Check

2021-08-06 17:27:40 67

原创 Markdown语法

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

2021-08-06 17:15:10 50

空空如也

空空如也

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

TA关注的人

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