自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【深入理解JVM】3、CPU储存器+MESI+CPU伪共享+CPU乱序问题及代码论证+volatile+synchrnized【面试必备】

1、存储器的层次结构2、cache line 缓存行由于共享变量在CPU缓存中的存储是以缓存行为基本单位,一个缓存行可以存储多个变量(存满当前缓存行的字节数);而CPU对缓存的修改又是以缓存行为最小单位的,那么就会出现上诉的伪共享问题。Cache Line可以简单的理解为CPU Cache中的最小缓存单位,今天的CPU不再是按字节访问内存,而是以64字节为单位的块(chunk)拿取,称为一个缓存行(cache line)。当你读一个特定的内存地址,整个缓存行将从主存换入缓存,并且访问同一个缓

2020-11-12 16:30:23 1749 13

原创 【深入理解JVM】1、在JVM类加载如何加载?双亲委派加载类及混合模式,代码演示【面试必备】

###

2020-11-12 16:30:12 883 3

原创 hashmap源码及位运算复习笔记2022.6.6(更新中.....)

hashmap源码、位运算

2022-06-08 20:07:30 155 1

原创 【深入理解JVM】JVM垃圾回收器针对漏标不同回收机制处理方式-待补充

漏标的问题处理方式:场景:在这里插入图片描述三色标记法:黑色:根对象,或者该对象与它的子对象都被扫描过。灰色:对本身被扫描,但是还没扫描完该对象的子对象。白色:未被扫描对象,如果扫描完所有对象之后,最终为白色的为不可达对象,既垃圾对象。在垃圾回收器扫描之前:B->C引用关系刚刚删除,A->C没有引用关系,扫描之后:B->C删除了引用关系,A->C建立了引用关系(这个时候垃圾回收器还没有清楚垃圾,只是在标记垃圾对象),所以会导致C对象被标记为垃圾对象,这就是所谓的漏标现象

2022-01-26 15:06:01 1094

原创 插件记录保存备用

在这里插入图片描述

2021-10-20 10:31:52 161

转载 SpringBoot缓存原理

springBoot:缓存以及其工作原理前言我们都知道,一个程序的瓶颈通常都在数据库,很多场景需要获取相同的数据。比如网站页面数据等,需要一次次的请求数据库,导致大部分时间都浪费在数据库查询和方法调用上,这时就可以利用到缓存来缓解这个问题。JSR107、Spring缓存抽象等概念JSP107:Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager, Cache, Entry和Expiry。CachingProvider:定义了..

2021-06-29 21:08:04 633

转载 Spring缓存配置详情

<?xml version="1.0" encoding="UTF-8"?><ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd" updateCheck="false"> <!-- diskStore:为缓存路径,ehca.

2021-06-29 14:19:29 458

转载 Java集合面试经典50问

目录(1)Arraylist与LinkedList区别(2)Collections.sort和Arrays.sort的实现原理(3)HashMap原理,java8做了什么改变(4)List 和 Set,Map 的区别(5)poll()方法和 remove()方法的区别?(6)HashMap,HashTable,ConcurrentHash的共同点和区别(7)写一段代码在遍历 ArrayList 时移除一个元素(8)Java中怎么打印数组?(9)TreeMap底层?(10)HashMap

2021-05-24 20:42:53 162

转载 设计模式-观察者模式

观察者模式springboot源码解读:这篇文章看过来的具体实例可以参考springboot的SpringApplication初始化过程SpringApplication设置初始化器ApplicationContextInitializer和设置监听器ApplicationListener的时候用到了观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。介绍意图:定义对象间的一

2021-04-04 18:36:50 107

转载 动画:用动画给面试官解释 TCP 三次握手过程

写在前边TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐。对于这部分掌握以及 TCP 的四次挥手,小鹿将会以动画的形式呈现给每个人,这样将复杂的知识简单化,理解起来也容易了很多,尤其对于一个初学者来说。学习导图一、TCP 是什么?TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。我们知道了上述了解到了 TC...

2021-03-29 00:52:25 376

转载 彻底弄懂session,cookie,token及附带负载均衡集群中的session解决方案

做一个合格的搬运工,结合一些资料整理下别人的笔记,发现总结的东西蛮正的,转载先保存自己目录害怕哪天突然报404!其实看了一下很多方案,确实工作遇到较多的实现都是通过缓存实现session的分布式的共享。前笔者基于拍黄片、python总结了session共享方案另行补充几种java实现session分布式共享的方案。session,cookie和token究竟是什么简述我在写之前看了很多篇session,cookie的文章,有的人说先有了cookie,后有了session。也有人说先.

2021-03-28 22:45:12 1179

转载 深入并发-Synchronized

synchronized的使用在多线程并发编程中synchronized一直是元老级角色,很多人都会称呼它为重量级锁。但是,随着Java SE 1.6对 synchronized进行了各种优化之后,有些情况下它就并不那么重了,Java SE 1.6中为了减少获得锁和释放锁带来的 性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。通过 synchronized关键字来修饰在inc的方法上,看看执行结果。(可以自己尝试将synchronizrd去掉,看看结果得到的是不是1000)public

2021-03-28 22:38:13 97

转载 学会这些Idea插件敲代码也是一种享受,史上最全的IDEA好用插件

经过很多查看在巨人的肩膀上写完这篇博客,如有雷同纯属巧合,虽然自己也查了些文章才总结的,但是站在巨人肩膀上不敢搞原创!学习使用一些插件,可以提高平常工作中的开发效率。对于我们开发人员很有帮助!插件安装IDEA里面,依次选择打开File→Settings→Plugins,在Plugins里面可以搜索需要的插件,然后安装(安装完插件,一定要重启Idea,不然插件不生效)1. Alibaba Java Coding Guidelines【阿里巴巴代码规范检查插件】①...

2021-03-25 15:29:06 14387 4

原创 java开发手册-阿里巴巴2020最新版

前言《Java 开发手册》是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,公开到业界后,众多社区开发者踊跃参与,共同打磨完善,系统化地整理成册,当前的版本是嵩山版。现代软件行业的高速发展对开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。比如:五花八门的错误码人为地增加排查问题的难度;数据库的表结构和索引设计缺陷带来的系统架构缺陷或性能风险;工程结构混乱导致后续项目维护艰难;没有鉴权的漏洞代码易被黑客攻击等

2021-03-10 11:22:37 2243

转载 MySQL聚集索引和非聚集索引

MySQL聚集索引和非聚集索引MySQL的Innodb存储引擎的索引分为聚集索引和非聚集索引两大类,理解聚集索引和非聚集索引可通过对比汉语字典的索引。汉语字典提供了两类检索汉字的方式,第一类是拼音检索(前提是知道该汉字读音),比如拼音为cheng的汉字排在拼音chang的汉字后面,根据拼音找到对应汉字的页码(因为按拼音排序,二分查找很快就能定位),这就是我们通常所说的字典序;第二类是部首笔画检索,根据笔画找到对应汉字,查到汉字对应的页码。拼音检索就是聚集索引,因为存储的记录(数据库中是行数据、字典中是汉

2021-03-09 16:37:55 230

原创 MySQL关于join的三种算法:Nested Loop Join+Hash join+Sort Merge Join及如何查看开启block_nested_loop(using join buff)

我们都知道SQL的join关联表的使用方式,但是这次聊的是实现join的算法,join有三种算法,分别是Nested Loop Join,Hash join,Sort Merge Join。MySQL官方文档中提到,MySQL只支持Nested Loop Join这一种join algorithmMySQL resolves all joins using a nested-loop join method. This means that MySQL reads a row from the f

2021-03-05 10:47:07 1406 2

转载 MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

假如我们有一张banner_item表,现需要通过banner_id查出所有数据(查询List)@Datapublic class BannerItem { private Long id; private String name; private String img; private String keyword; private Integer type; private Long bannerId;}QueryWrapp..

2021-03-02 15:26:57 5384

原创 1.1、Mysql调优+performance schema详解【mysql调优】

基础层次: client server 补充说明:在8版本之前,有个缓存,8之后去掉了。 优化器 RBO 基于数据优化 CBO 基于成本优化 执行器:和存储引擎挂钩,io问题 存储引擎 使用show profile:展示执行各个步骤执行时间。(偏向于专职做数据库优化的,java能懂更好)MYSQL performance schema详解0、performance_schem..

2021-01-24 20:49:25 477 1

转载 JDK7与JDK8中HashMap的实现

JDK7中的HashMapHashMap底层维护一个数组,数组中的每一项都是一个Entrytransient Entry<K,V>[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中;而Map中的key,value则以Entry的形式存放在数组中static class Entry<K,V> implements Map.Entry<K,V> { final K key; V va...

2021-01-18 17:56:25 269

转载 深入剖析Springboot启动原理的底层源码

转自于:https://blog.csdn.net/weixin_43570367/article/details/104960677文章目录 一、入口类及其源码剖析 二、实例化SpringApplication对象的源码剖析 1. 设置初始化器(Initializer) 2. 设置监听器 3. 推断主应用入口类 三、run() 方法源码剖析 1. 开启计时器 2. 设置系统属性的值 3. 监听器 4.

2021-01-18 17:55:38 349

转载 面试官:知道ThreadLocal嘛?谈谈你对它的理解?(基于jdk1.8)

ThreadLocal:https://baijiahao.baidu.com/s?id=1653790035315010634&wfr=spider&for=pc

2021-01-18 17:53:50 145

原创 2、idea热部署插件JRebel+2020年Jrebel激活码+Springboot web开发+Springboot配置文件详解+thymeleaf模板引擎的使用【Springboot】

idea 热部署插件JRebel​ 当开始开发web项目的时候,需要频繁的修改web页面,此时如果频繁的重启变得很麻烦,因此,可以在idea中集成JRebel插件,改动代码之后不需要重新启动应用程序。1、安装JRebel​ (1)在IDEA中一次点击 File->Settings->Plugins->Brows Repositories ​ (2)在搜索框中输入JRebel进行搜索 ​ (3)找到JRebel for intellij ​ (4)install ​ (5)安装好

2021-01-06 16:21:54 1281

原创 分布式事务基础+CAP+BaSE+解决方案+2CP方案+Seata方案+TCC方案【分布式事务】

链接:https://pan.baidu.com/s/1TmQMsXgFEMZW-3QhUFNlHQ提取码:nn8u复制这段内容后打开百度网盘手机App,操作更方便哦

2020-12-31 15:27:07 161

原创 springboot源码解析(四):监听器【Springboot】

springboot源码解析(四):监听器​ 在看springboot的源码过程中,发现内部使用了大量的监听器,下面来看下监听器的作用。在springboot的监听器有如下两类:# Run Listeners#事件发布运行监听器,是springboot中配置的唯一一个应用运行监听器,作用是通过一个多路广播器,将springboot运行状态的变化,构建成事件,并广播给各个监听器org.springframework.boot.SpringApplicationRunListener=\or

2020-12-29 09:23:13 414

原创 springboot源码解析(三):springboot内嵌tomcat【Springboot】

springboot源码解析(三):springboot内嵌tomcat​ 在使用springboot搭建一个web应用程序的时候,我们发现不需要自己搭建一个tomcat服务器,只需要引入spring-boot-starter-web,在应用启动时会自动启动嵌入式的tomcat作为服务器,下面来分析下源码的分析流程:​ 之前我们已经讲过了自动装配的原理,其实tomcat的实现机制也是从自动装配开始的。1、ServletWebServerFactoryAutoConfiguration类@C

2020-12-29 09:21:41 303

原创 spring的自动配置原理【Springboot】

spring的自动配置原理springboot配置文件的装配过程1、springboot在启动的时候会加载主配置类,开启了@EnableAutoConfiguration。2、@EnableAutoConfiguration的作用:利用AutoConfigurationImportSelector给容器导入一些组件。 查看selectImports方法的内容,返回一个AutoConfigurationEntryAutoConfigurationEntry autoConfigurati

2020-12-29 09:18:17 108

原创 springboot运行原理【Springboot】

springboot运行原理1、启动器<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency>​ springboot-boot-starter:就是springboot的场景启动器。springboot将所有的功能场景都抽取

2020-12-29 09:16:37 95 1

原创 springboot源码(二):自动装配原理【Springboot】

springboot源码(二):自动装配原理​ 在之前的课程中我们讲解了springboot的启动过程,其实在面试过程中问的最多的可能是自动装配的原理,而自动装配是在启动过程中完成,只不过在刚开始的时候我们选择性的跳过了,下面详细讲解自动装配的过程。1、在springboot的启动过程中,有一个步骤是创建上下文,如果不记得可以看下面的代码:public ConfigurableApplicationContext run(String... args) { StopWatch stopWa

2020-12-29 08:52:27 397

原创 springboot源码解析(一):启动过程

springboot源码解析(一):启动过程1、springboot的入口程序@SpringBootApplicationpublic class StartupApplication { public static void main(String[] args) { SpringApplication.run(StartupApplication.class, args); }}当程序开始执行之后,会调用SpringApplication的.

2020-12-28 15:44:29 198

原创 3、springboot配置数据源【Springboot】

springboot配置数据源​ Spring Framework 为 SQL 数据库提供了广泛的支持。从直接使用 JdbcTemplate 进行 JDBC 访问到完全的对象关系映射(object relational mapping)技术,比如 Hibernate。Spring Data 提供了更多级别的功能,直接从接口创建的 Repository 实现,并使用了约定从方法名生成查询。1、JDBC1、创建项目,导入需要的依赖 <dependency> ..

2020-12-24 08:40:34 247

原创 1、Java SPI机制详解+Springboot的整体知识点【Springboot】

1、什么是注解?java中的注解其实很简单,可以理解为给元素(类、属性、方法、等)打tag(标签),同时注解可以带一些属性,这些属性可以有默认值在运行时(runtime),我们可以通过反射获取元素的注解,根据元素的注解以及注解的属性进行相应的操作。2、什么是元注解?元注解的作用就是负责注解其他注解, Java定义了4个标准的meta -annotation类型,他们被用来提供对其他annotation类型作说明. 这些类型和它们所支持的类在java.lang.annotation包..

2020-12-22 02:18:16 278

原创 6、Spring原理

06Spring原理讲解1、什么是Spring框架,Spring框架主要包含哪些模块​ Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都..

2020-12-21 11:09:23 115

原创 5、Spring AOP的应用配置+JdbcTemplate

05Spring AOP的应用配置1、Spring JdbcTemplate​ 在spring中为了更加方便的操作JDBC,在JDBC的基础之上定义了一个抽象层,此设计的目的是为不同类型的JDBC操作提供模板方法,每个模板方法都能控制整个过程,并允许覆盖过程中的特定任务,通过这种方式,可以尽可能保留灵活性,将数据库存取的工作量讲到最低。1、配置并测试数据源pom.xml<?xml version="1.0" encoding="UTF-8"?><project xm

2020-12-17 12:31:53 106

原创 4、Spring+AOP介绍与使用

04Spring AOP介绍与使用AOP:Aspect Oriented Programming 面向切面编程OOP:Object Oriented Programming 面向对象编程​ 面向切面编程:基于OOP基础之上新的编程思想,OOP面向的主要对象是类,而AOP面向的主要对象是切面,在处理日志、安全管理、事务管理等方面有非常重要的作用。AOP是Spring中重要的核心点,虽然IOC容器没有依赖AOP,但是AOP提供了非常强大的功能,用来对IOC做补充。通俗点说的话就是在程序运行期间,将某

2020-12-17 02:07:02 154 1

原创 3、Spring使用+ioc容器注解应用

来源马士兵视频笔记-周老师03SpringIOC的注解应用​ 在之前的项目中,我们都是通过xml文件进行bean或者某些属性的赋值,其实还有另外一种注解的方式,在企业开发中使用的很多,在bean上添加注解,可以快速的将bean注册到ioc容器。1、使用注解的方式注册bean到IOC容器中applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.spring

2020-12-14 21:52:37 114

原创 2、Spring使用+ioc容器配置使用1

通过前面的介绍我们已经知道了Spring中非常重要的一个特性就是IOC,下面我们将要来看一下如何使用IOC容器,帮助大家更好的体会spring的优势。1、spring_helloworld(1)使用手动加载jar包的方式实现,分为三个步骤,现在几乎不用 导包:导入这五个包即可 commons-logging-1.2.jar spring-beans-5.2.3.RELEASE.jar spring-context-5.2.3.RELEASE.jar spring-core-5.2.3.RE

2020-12-14 04:52:17 170

原创 Spring基础框架的介绍及使用

模块化。spring的演变过程单一应用架构​ 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。​ 垂直应用架构​ 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,提升效率的方法之一是将应用拆成互不相干的几个应用,以提升效率。此时,用于加速前端页面开发的Web框架(MVC)是关键。​ 分布式服务架构​ 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务..

2020-12-11 09:38:48 939 1

原创 【多线程高并发】1、线程的创建+线程常用方法+synchronized底层

1、基本概念进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程:是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进...

2020-12-07 17:51:02 165

原创 【多线程高并发】线程池基础总结+线程池的分类+阻塞队列的分类+拒绝策略

线程池的分类1、ThreadPoolExecutornewCachedThreadPool 创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们,并在需要时使用提供的 ThreadFactory 创建新线程 特征: (1)线程池中数量没有固定,可达到最大值(Interger. MAX_VALUE) (2)线程池中的线程可进行缓存重复利用和回收(回收默认时间为1分钟) (3)当线程池中,没有可用线程,会重新创建一个线程 newFixedTh...

2020-11-30 15:35:53 298

原创 【深入理解JVM】11、CMS日志格式+G1日志格式+常用参数+纤程【草稿】

1、CMS的日志格式CMS日志分析执行命令:java -Xms20M -Xmx20M -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC com.mashibing.jvm.c7_gc.T15_FullGC_Problem01[GC (Allocation Failure) [ParNew: 6144K->640K(6144K), 0.0265885 secs] 6585K->2770K(19840K), 0.0268035 secs] [Time

2020-11-20 11:01:52 481

空空如也

空空如也

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

TA关注的人

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