自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式事务的实现

一、协议概述两阶段提交 2pc三阶段提交 3pcpaxos算法zab算法二、2pc算法1、什么是2pcmysql中利用innodb存储引擎,对数据库的修改都会写到undo和redo中,不只是数据库,很多需要事务支持的都会用到这个思路。对一条数据的修改操作,首先先写undo日志,记录未操作之前的样子,接下来执行事物修改操作,把数据写到redo日志里面,一旦出了问题,则.........

2022-08-08 00:46:47 454

原创 Mysql

Mysql1.InnoDb和Myisam的区别myisam支持全文检索,数据压缩,空间函数,只支持表锁,适用于只读场景,分析类不支持崩溃恢复,索引和数据文件独立(无聚簇索引的说法)innodb支持行锁,事务,隔离级别,支持外键(互联网项目一般不用外键,用业务代码控制),支持崩溃恢复,聚簇索引里面存储了完整数据。2.日志二进制日志(binlog),重做日志(redolog),回滚日志(undolog),慢查询日志(查询慢long_query_time和没使用索引log_quer

2022-05-10 16:24:15 267

原创 并发编程-并发框架

一、批量文档的生成1、业务需求:1、批量任务,需要速度快 任务举例:现在需要批量导出测试缺陷(5万条记录)和功能需求(10万条记录),那么现在就有两个批量任务,需要框架同时 支持两个任务的导出。2、进度可查询,任务完成一共耗费多少时间3、批量任务的执行结果,一定时间内可以被查看4、在使用上尽可能的对业务开发人员友好 技术需求:业务开发人员不...

2022-03-28 11:06:05 482

原创 JVM知识点整理2——(类加载)

1.Java程序被编译器编译成Class文件2.任何一个class文件都对应着唯一一个类或接口得定义信息,但是类或接口不一定都得在Class文件里面(类或接口页可以动态生成,之间送入类加载器中)。3.class文件是一组以8个自己为单位得二进制流,类似于C语言得伪结构来存储数据,只有两种数据无符号数和表。4.无符号有u1,u2,u4,u8来表示,可以描述数字,索引引用,数量值,或者UTF-8构成得字符串值。表是有多个无符号数或者其他表作为数据项构成的复合数据类型。6.无论是无符号数还是表,当

2022-03-26 16:05:08 1517

原创 JVM知识点整理1——(垃圾收集器)

1.JVM运行时数据区2.JVM对象创建步骤分配内存的两种方式,其中一种有安全隐患,是如何解决的。TLAB3.对象的内存布局

2022-03-25 11:20:06 565

原创 并发编程-线程池

八、线程池的使用8.1 在任务与执行策略之间的隐性耦合Executor框架可以将任务的提交与任务的执行策略解耦开来,为制定和修改执行策略都提供了相当大的灵活性,但是并非所有的任务都能适用所有的执行策略。有些任务需要明确的指定执行策略:依赖性任务。如果提交给线程池的任务需要依赖其他任务,那么就隐含地给执行策略带来约束,此时必须小心地维护执行策略以避免产生活跃性问题(比如活锁)。 使用线程封闭机制的任务。 对时间敏感的任务。如果将一个运行时间长的任务提交给单线程的Executor中,或者将多个运

2021-05-01 11:19:32 319

原创 并发编程-线程安全

第一章简介1.1 并发简史之所以在计算机中加入操作系统来实现多个程序的同时执行,主要是基于以下原因:资源利用率,在一个程序等待时,可以运行另外一个程序,将提高资源利用率公平性,通过粗粒度的时间分配使这些用户和程序能共享计算机资源,而不是由一个程序从头到尾,然后再启动下一个程序便利性,计算多个任务,应该编写多个程序,每个程序执行一个任务在必要时互相通信,这只编写一个程序来计算要简单。1.2 线程的优势如果使用得到,线程可以有效降低程序的开发和维护等成本,同时提高复杂应用程序的信念。

2020-10-27 20:39:10 381

原创 JVM2-性能监控故障处理工具

给一个系统定位问题的时候,知识、经验是关键的基础,数据是依据,工具是运用知识处理数据的手段。这里的数据包括但是不限于异常堆栈、虚拟机运行日志、垃圾收集器、线程快照、堆转存储快照等。四、虚拟机性能监控、故障处理工具4.1、基础故障处理工具JDK 的bin目录下面存储着java.exe,javac.exe两个命令行工具。除了编译和运行程序外,打包、部署、签名、调试、监控、运维等各个场景都可能会用到他们。据软件可用性和授权的不同,可以把Jdk中的工具分为三类:(商业授权工具,主要是JMC.

2020-10-19 10:11:00 332

原创 JVM3-类文件结构

六、类文件建构 计算机到目前为止,都只能识别0和1,所以我们写的程序都需要被编译器翻译成0和1的二进制格式才能被计算机执行。很多程序语言选择了与操作系统和机器指令集无关的、平台中立的格式作为程序编译后的格式,而不再需要像最初那样把程序编译成二级制本地机器码。Oracle公司发布的一些虚拟机可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,到处运行”。 各种不同平台的Java虚拟机,以及所有平台都同意支持的程序存储格式-字节码(Byte Code)是构成平台无关性的基石,...

2020-10-04 19:23:39 441

原创 JVM1-内存模型和垃圾回收器

一、历史简介1、jdk编年史jdk1.1 jdbc,jar文件格式,javaBeans,rmi等。 内部类和反射也是这个时候出现的jdk1.2 这个版本把java技术体系拆分为三个方向,分别是面向桌面应用开发的J2SE,面向企业开发的J2EE,和面向手机等终端的J2ME。这个版本出现的技术包含EJB,Java Plug-in ,Java IDL,Swing等。这个版本第一次内置了JIT(just in time)即时编译器。 jdk1.2曾经并存过三个虚拟机...

2020-09-25 12:15:37 614

原创 设计模式汇总

一、概述1、导读2、什么是设计模式 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。一个具体的应用场景,选择对了合适的设计模式,会让代码开发效率更高,可维护性和阅读性更加优秀。...

2020-04-15 11:00:19 250

原创 并发编程-实战篇(各类工具的使用)

一.分而治之(Fork/join)1.规模为N的问题,N<阈值,直接解决,N>阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式相同,将子问题的解合并得到原问题的解。Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork/Join框架要完成两件事情:  (1)...

2020-03-19 18:45:26 234

原创 解密动态代理,cglib和jdk动态代理

现在说的动态代理,无非是两种,一种是cglib和jdk原生的动态代理CGLIB(Code Generator Library)是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)。CGLIB代理...

2019-08-22 16:57:40 127

原创 Aop源码解读,解密Aop

1.AOP是什么网络上很多解释,本文不在赘述,大致意思就好比,比如你一个月前开发了一个代码,功能就是一个除法功能,而现在,你想在原有除法功能基础上,记录传入的参数(除数,被除数)到数据库,并且在除法功能完成后,记录一下返回值到数据库。按照以前的逻辑是需要到这个除法功能里面,修改原有代码。当然,这个除法功能相对比较简单,修改原有代码不复杂,但是实际生产上的业务肯定是比这个复杂的多,改代码的风险也...

2019-08-19 14:41:51 273

原创 Spring Aware接口的奇妙用处

Aware接口的功能就是,一个类只要实现这个类接口的相关子类,则可以拿到相应的东西。上面到底可以拿到什么东西呢,我们来看下 它的实现类举个例子,比如我定义一个类ErwanAware并且实现了ApplicationContextAware这个接口,通过重写它的相关方法,就可以拿到ApplicationContext,这个东西其实就是ioc容器定义一个类ErwanAware2这个类实现...

2019-08-16 17:00:27 1104

原创 spring自动装配

自动装配,到底是什么,这对于新手来说,比如说我刚入行的时候,总觉得很神秘,百思不得其解。下面二万给大家来剖析一下一个对象A,对另外对象的引用B,在传统方式上,需要在A中new一个对象B,或者通过构造函数中传入一个new出来的B。自动装配就是可以简单的理解通过@Autowired,在A中声明一下B就可以直接使用B并不需要new一个B对象。很多新手也会疑问,我new不new不就一行代...

2019-08-16 15:22:01 935

原创 spring bean的生命周期

bean的生命周期,也就是在spring容器启动和关闭这一过程中bean的一系列动作,比如初始化前后,销毁前后,也就是bean创建-----初始化----销毁 的过程如何定义和销毁(4种方式):1.@Bean(initMethod="init", destroyMethod="destroy") ,通过bean的注释来定义初始化和销毁方法。2.让Bean实现 Initializin...

2019-08-16 10:48:51 90

原创 深入理解 @Import注解

@Import的功能就是把bean注入到ioc容器中,而关于import引入bean的方式大概有以下几种:这里我直接用我新建的类来表示1.直接通过类Dog.class引入2.一个类ErwanImprotSelector实现ImportSelector 接口,引入ErwanImprotSelector.class来达到注册bean到ioc中3.通过类ErwanFactoryBean实现F...

2019-08-15 19:58:34 263

原创 Spring的基础使用(一)

1.创建maven项目,引入需要的jar包。 贴上对应的pom.xml内容<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/...

2019-08-15 19:27:12 85

原创 spring源码,AOP的使用

1.AOP是什么网络上很多解释,本文不在赘述,大致意思就好比,比如你一个月前开发了一个代码,功能就是一个除法功能,而现在,你想在原有除法功能基础上,记录传入的参数(除数,被除数)到数据库,并且在除法功能完成后,记录一下返回值到数据库。按照以前的逻辑是需要到这个除法功能里面,修改原有代码。当然,这个除法功能相对比较简单,修改原有代码不复杂,但是实际生产上的业务肯定是比这个复杂的多,改代码的风险也...

2019-08-14 18:28:28 174

原创 mybatis源码,配置篇

1.mybatis-config.xml中的配置概览 1.1 settings详解 1.1.1 cacheEnabled详解(二级缓存) Mybatis默认开启一级缓存;二级缓存默认开启,可设置。 开启二级缓存:在mybatis全局配置中settings中设置 cacheEnabled为true ...

2019-08-01 18:29:37 133

空空如也

空空如也

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

TA关注的人

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