自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Threadlocal 运用与实现原理总结

Threadlocal 运用与实现原理总结

2022-09-13 16:01:23 261 1

原创 Spring 解决循环依赖必须要三级缓存吗?

Spring 解决循环依赖必须要三级缓存吗?

2022-09-13 14:08:30 274

原创 Springboot 自定义 Starter

**前言:学习springboot 的时候相信都学习了解过springboot 自动装配 原理(参考 博客),但是有没有想多自定义Starter组件呢?1、自动装配简介当Spring Boot启动时,它会在类路径中查找名为spring.factories的文件。该文件位于META-INF目录中。打开spring.factories文件,文件内容太多了,我们只看其中的一部分:# Auto Configureorg.springframework.boot.autoconfigure.EnableAut

2021-06-19 14:32:40 101

原创 Springboot 注解总结

1、@SpringBootApplication 注解查看源码可发现,@SpringBootApplication是一个复合注解,包含了@SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan这三个注解。这三个注解的作用分别为:@SpringBootConfiguration:标注当前类是配置类,这个注解继承自@Configuration。并会将当前类内声明的一个或多个以@Bean注解标记的方法的实例纳入到srping容器中,并

2021-06-19 14:31:01 149

原创 java 8 新特性使用总结

java 8 新特性1、默认方法接口提供 default 关键字实现默认方法,可以直接使用,不用强制实现默认方法。Java 8 允许我们通过 default 关键字对接口中定义的抽象方法提供一个默认的实现。请看下面示例代码:// 定义一个公式接口interface Formula { // 计算 double calculate(int a); // 求平方根 default double sqrt(int a) { return Math.sq

2021-05-27 21:03:14 127 2

原创 Synchronized与Lock

Synchronized与Lock为什么存在线程安全问题单线程执行指令不会出现问题,多线程情况下,当访问一个共享资源,如一个变量、一个对象等统称为临界资源,因为线程执行的不可控,所以导致可能出现线程安全问题。如何解决问题采用序列化访问临界资源的方式,即在同一时刻,只能有一个线程访问临界资源。通常来说就是在临界资源上加锁,Java中提供了两个同步互斥的方法synchronized和lock。SynchronizedJava中的每一个对象中都有一个monitor内部锁,synchronize的原理就

2021-04-12 17:31:32 49

原创 Spring 解决循环依赖源码分析

Spring 解决循环依赖源码分析什么是循环依赖循环依赖就是N个类之间循环嵌套引用,如A依赖B,B又依赖A,你中有我,我中有你。实例化A时发现需要B属性,于是去实例化B,发现需要A属性。。。如果Spring不对这种循环依赖进行处理程序就会无限执行,导致内存溢出、系统崩溃。循环依赖又分为构造器循环依赖和属性循环依赖,由于Spring不支持构造器循环依赖,会直接报错,所以接下来只讨论属性循环依赖。Bean实例化步骤Bean实例化可以大致分为三步​ 其中循环

2021-04-11 16:39:31 98

原创 为什么HashMap线程不安全?

引言: 面试的时候被问到 hashmap 为什么线性不安全,会发生什么后果?当时就按put 原理进行分析,分析的不是很好,查询资料总结如下先说总结:1.在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况。2.在JDK1.8中,在并发执行put操作时会发生数据覆盖的情况。1.1、为什么HashMap线程不安全?(jdk7版本)上面说到,HashMap会进行resize操作,在resize操作的时候会造成线程不安全。下面将举两个可能出现线程不安全的地方。1、put的时候导致的多线程

2021-04-02 10:32:41 188 2

转载 java 线程的几种状态

今天早上坐公交上班的时候突然想到 java线程的几种状态,但是只记得其中的几种,查阅资料总结这几种状态新建状态:使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程对象就处于新建状态。它保持这个状态直到程序 start() 这个线程。就绪状态:当线程对象调用了start()方法之后,该线程就进入就绪状态。就绪状态的线程处于就绪队列中,要等待JVM里线程调度器的调度。运行状态:如果就绪状态的线程获取 CPU 资源,就可以执行 run(),此时线程便处于运行状态。处

2021-04-02 10:31:50 53

原创 浏览器输入网址发生了什么?

引言:昨天接到一个电话面试,其中有个问题:浏览器输入网址之后发生了什么?之前没有具体了解过,只是以web开发经验进行理解, 只是知道记得大学计网 DNS协议作用,进行域名解析得到服务器 IP地址,以下是我查阅资料的总结大概总的过程:1.在客户端浏览器中输入URL。2.发送到DNS(域名服务器)获得域名对应的web服务器的IP地址。3.客户端浏览器与web服务器建立tcp连接.4.客户端浏览器向对应IP地址的WEB服务器发送相应的http或https请求。5.WEB服务器响应请求,返回指定的URL

2021-04-02 10:28:04 560

原创 流程图

2021-03-25 15:16:07 87

转载 JVM 内存详解

Java 内存区域详解如果没有特殊说明,都是针对的是 HotSpot 虚拟机。写在前面 (常见面试题)基本问题介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)拓展问题String 类和常量池8 种基本类型的包装类和常量池一 概述对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 d

2021-03-25 13:52:07 123

原创 Springcloud 笔记续更

Springcloud 笔记1、Ribbon 实现负载均衡① 两个作用:第一步先选择EurekaServer ,它优先选择在同一个区域内负载较少的server。第二步再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。② Ribbon注册在Client 端,配置类不能跟主启动类在同一个包,Eureka 包包含Ribbon使用注解 RibbonClient 进行服务负载均衡2、服务调用 OpenFeign使用在消费端业务逻辑接口+@FeignClient配置调用pr

2021-03-22 15:39:19 74

原创 Spring 缓存抽象

Spring缓存抽象概述Spring框架自身并没有实现缓存解决方案,但是从3.1开始定义了org.springframework.cache.Cache和org.springframework.cache.CacheManager接口,提供对缓存功能的声明,能够与多种流行的缓存实现集成。Cache接口为缓存的组件规范定义,包含缓存的各种操作集合;Cache接口下Spring提供了各种xxxCache的实现:如RedisCache,EhCacheCache , ConcurrentMapCache等;

2021-03-22 10:33:54 96

原创 线程和进程的区别

简单总结下线程和进程的区别进程和线程是什么?首先你要理解cpu的概念,计算机上的所有操作都是由cpu来执行的,cpu将要执行的操作分为一个个的任务,这些任务我们就可以理解为进程,而这些任务又分为一些细粒度更小的子任务,这些子任务就称作线程cpu轮流执行任务的,每一个任务需要经过以下三个阶段:加载上下文执行保存上下文也就是说,每一个进程从加载、执行,到切换下一个进程执行,都会经历同样的一个过程,我们的cpu就是在无时无刻地进行这样的进程切换操作而我们又可以把进程分为一些细粒度更小的线程,这

2021-03-19 11:12:43 156

原创 三次握手四次挥手

tcp三次握手四次挥手tcp报文格式tcp三次握手第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。标记位为SYN=1,表示“请求建立新连接”;序号为Seq=X(X一般为1);随后客户端进入SYN-SENT阶段。第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此

2021-03-19 11:01:35 49

原创 Springboot 自动装配原理

每次问到 Spring Boot, 面试官非常喜欢问这个问题:“讲述一下 SpringBoot 自动装配原理?”。我觉得我们可以从以下几个方面回答:什么是 SpringBoot 自动装配?SpringBoot 是如何实现自动装配的?如何实现按需加载?如何实现一个 Starter?篇幅问题,这篇文章并没有深入,小伙伴们也可以直接使用 debug 的方式去看看 SpringBoot 自动装配部分的源代码。前言使用过 Spring 的小伙伴,一定有被 XML 配置统治的恐惧。即使 Spring

2021-03-19 10:24:41 226

原创 java并发编程之线程池总结

一 使用线程池的好处二 Executor 框架2.1 简介2.2 Executor 框架结构(主要由三大部分组成)1) 任务(Runnable /Callable)2) 任务的执行(Executor)3) 异步计算的结果(Future)2.3 Executor 框架的使用示意图三 (重要)ThreadPoolExecutor 类简单介绍3.1 ThreadPoolExecutor 类分析3.2 推荐使用 ThreadPoolExecutor 构造函数创建线程池四 ..

2021-03-17 10:14:50 168

原创 JVM 知识总结

JVM [Top]面试题[Top]介绍下 Java 内存区域(运行时数据区)Java 对象的创建过程(五步,建议能默写出来并且要知道每一步虚拟机做了什么)对象的访问定位的两种方式(句柄和直接指针两种方式)如何判断对象是否死亡(两种方法)。简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。如何判断一个常量是废弃常量如何判断一个类是无用的类垃圾收集有哪些算法,各自的特点?HotSpot 为什么要分为新生代和老年代?常见的垃圾回收器有哪些

2021-03-17 09:47:55 94

原创 设计模式

1、工厂模式实现思想:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。​ 思想结构图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l0QZ9ZQS-1615878597092)(C:\Users\100948\AppData\Roaming\Typor

2021-03-16 15:10:21 48

原创 Java 8新特性

Arrays.asList( “a”, “b”, “d” ).forEach( e -> System.out.println( e ) );Arrays.asList( “a”, “b”, “d” ).forEach( ( String e ) -> System.out.println( e ) );Arrays.asList( “a”, “b”, “d” ).forEach( e -> {System.out.print( e );System.out.print( e );

2021-03-15 11:47:18 102

原创 Spring IOC 原理

Spring IOC原理说到spring不得不提其两大特性IOC、AOP,本文主要介绍结合代码看下spring Ioc相关原理,阅读源码如果只是为了看源码效率就会很低,还是要有一定的目的性,我们结合着以下的问题去源码中找答案。本篇文章为《图灵学院》课程笔记Bean工厂是如何产生Bean的Bean的依赖关系是由谁来解决的Bean工厂和应用上下文的区别如下图spring Ioc的整体架构图中可以看出,Spring启动时读取bean配置信息,并在spring中生成一份相应bean配置注册表,然后会根

2021-03-14 19:19:55 71

转载 Redis知识总结

1. 简单介绍一下 Redis 呗!2. 分布式缓存常见的技术选型方案有哪些?3. 说一下 Redis 和 Memcached 的区别和共同点4. 缓存数据的处理流程是怎样的?5. 为什么要用 Redis/为什么要用缓存?6. Redis 常见数据结构以及使用场景分析6.1. string6.2. list6.3. hash6.4. set6.5. sorted set7. Redis 单线程模型详解8. Redis 没有使用多线程?为什么不使用多线程?9. Redis...

2021-03-13 16:53:20 123

原创 Spring Bean的生命周期

Spring Bean的生命周期说明:初始化实例化对象,并没有注入属性****,通过BeanWrapper提供的接口进行属性注****入,防止反射机制注入属性,检查是否实现一系列的Aware接口注入相应的bean到bean中,比如有ApplicationAware,BeanfactoryAware ,beanpostpcessor 调用预初始化方法进行bean增强,initzlizingBean** afterPropertiesSet()方法 进行额外增强,并没有注入到bean 中,initmetho

2021-03-13 12:04:32 103

转载 SpringBoot学习笔记

**一、**Spring Boot 入门1、Spring Boot 简介简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;2、微服务2014,martin fowler微服务:架构风格(服务微化)一个应用应该是一组小型服务;可以通过HTTP的方式进行互通;单体应用:ALL IN ONE微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元;详细参照微服务文档3、环境准备http://www.gulixueyuan.c

2021-03-12 16:53:07 155

转载 JVM垃圾回收机制

JVM垃圾回收机制1. 概述垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空间,防止内存泄露。有效的使用可以使用的内存,对内存堆中已经死亡的或者长时间没有使用的对象进行清除和回收。垃圾回收的意义它使得java程序员不再时时刻刻的关注内存管理方面的工作.垃圾回收机制会自动的管理jvm内存空间,将那些已经不会被使用到了的"垃圾对象"清理掉",释放出更多的空间给其他对象使用.何为对象的引用?Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了Java中

2021-03-12 16:46:31 186

原创 JVM类加载机制

JVM 类加载机制总结: ** 加载时机七步加载,验证,准备,解析,初始化,使用,卸载加载: 通过类的限定名获取类的二进制字节流,将字节流所代表的的静态存储金数据转换为运行时的数据结构,在内存中生成java.lang.Class对象,作为方法区这个类的各种数据结构使用验证: 目的是检查类的字节流的数据信息符合虚拟机的要求,不会危害虚拟机的安全,主要有四种验证​ 1、文件格式: 验证是否复核class 文件格式 ,并能被虚拟机加载,2、元数据验证,验证数据信息语义分析,是否符合j

2021-03-11 11:37:52 59

原创 Spring AOP实现原理

Spring AOP实现原理总结: aop两种实现方式,一种是接口的JDK 动态代理实现,通过反射的机制来接收代理的类,要求代理类实现某个接口,被代理类需要实现InvocationHander 接口,重写invoke() 方法,通过Proxy 类的 newProxyInstance()方法实现增强目标对象,参数为(增强类的类加载器,增强类的实现所有接口,被增强类)还有一种就是继承的CHLIB,要求增强类不能被final修饰,是一个代码生成的类库,可以在运行时动态生成某一个类的子类。一、AOP是什么?

2021-03-11 10:28:10 404

原创 java集合知识总结

集合set list map 区别set 无序,不允许重复,Hashset 无序,不重复​ Linkedset 按插入排序,不重复​ Shortedset 可排序,不重复List 有序,可以重复, ArrayList 可重复,按下标排序,线程不安全,LinkedList 可重复,按指针排序,线性不安全map 键值对,键

2021-03-10 18:24:20 49

原创 Mysql知识总结

如何创建和删除数据库?craete database 数据库名drop database 数据库名MyISAM与InnoDB的区别?InnoDB 支持事务;MyISAM 不支持事务InnoDB 支持行级锁;MyISAM 支持表级锁InnoDB 支持 MVCC(多版本并发控制);MyISAM 不支持InnoDB 支持外键,MyISAM 不支持MySQL 5.6 以前的版本,InnoDB 不支持全文索引,MyISAM 支持;MySQL 5.6 及以后的版本,MyISAM 和 ..

2021-03-10 18:22:04 70

原创 Mysql知识总结

一、索引B+ Tree 原理1. 数据结构B Tree 指的是 Balance Tree,也就是平衡树。平衡树是一颗查找树,并且所有叶子节点位于同一层。B+ Tree 是基于 B Tree 和叶子节点顺序访问指针进行实现,它具有 B Tree 的平衡性,并且通过顺序访问指针来提高区间查询的性能。在 B+ Tree 中,一个节点中的 key 从左到右非递减排列,如果某个指针的左右相邻 key 分别是 keyi 和 keyi+1,且不为 null,则该指针指向节点的所有 key 大于等于 keyi 且

2021-03-10 18:20:05 62

原创 java多线程知识

1、创建线程的两种方式1、继承方法实现 1 package com.test.thread; 2 3 public class EasyThread extends Thread { 4 private String name; 5 public EasyThread(String name) { 6 this.name=name; 7 } 8 //重写父类Thread中的run方法 9 @Override10 publ

2021-03-10 18:18:29 34

原创 java基础知识总结以及常见问题

==跟equals()区别· == 是关系运算符,equals() 是方法,结果都返回布尔值· Object 的 == 和 equals() 比较的都是地址,作用相同*== 作用:*· 基本类型,比较值是否相等· 引用类型,比较内存地址值是否相等· 不能比较没有父子关系的两个对象*equals()方法的作用:*· JDK 中的类一般已经重写了 equals(),比较的是内容· 自定义类如果没有重写 equals(),将调用父类(默认 Object 类)的 equals() 方法,Obj.

2021-03-10 18:17:27 79

原创 上海社保服务网点

60长宁区新华路街道新华路街道社区事务受理服务中心上海市长宁区法华镇路521号021-6294101161江苏路街道江苏路街道社区事务受理服务中心上海市长宁区江苏路563弄8号021-6225660062华阳路街道华阳路街道社区事务受理服务中心上海市长宁区万航渡路1268号021-62266220, 021-62260707(总机)63周家桥街道周家桥街道社区事务受理服务中心上海市长宁区长宁路1488弄6号二楼021-5206115...

2021-02-26 13:50:44 441

原创 springmvc知识总结

1、springMVC 工作原理客户端发送HTTP请求到dispatcherservlet (前置控制器)dispatcherservlet 根据适配器的规则 Handlermapper 找到控制器 controllerdiaparcherservlet 将请求提交到controller 进行处理controller 调用service 进行业务处理返回modelandview 到前置控制器前置控制器根据viewresolver 前端适配器 把modelandview 和视图进

2021-02-25 18:24:14 79

原创 Could not create the Java virtual machine解决方法

一、 网上说的主要两种方法1、本地配置jdk java_home 版本跟idea 项目配置的jdk版本一致导致的。但是我的项目之前都是使用本地目录下的jdk,不是使用的系统配置Jdk还是能运行的,不知什么情况突然就不能运行了,出现这个错误。修改项目配置jdk与 系统配置jdk版本一致还是出现的这个错误,方法一失败2、修改idea jvm 堆大小,内存分配大一点(2)修改更大的jvm 堆内存之后还是不行二、修改Tomcat 内存大小之前由于web 需要更大的内存就分配了最大为1024M

2021-01-28 13:31:11 22774

原创 Spring 知识总结

1、spring两种IOC 容器实现两种方式,一种是Beanfactory 加载配置文件时不会创建对象,获取对象时才创建对象,还有一个是applicationContext 加载配置文件时就创健对象,提供开发者使用2、Bean管理就是创建对象,注入属性有两种方式,DI xml配置文件还有就是注解方式第一种set 方法注入属性- < bean >- < property > name="" value ="' 第二种通过构造函数注入属性值<

2020-12-29 17:27:23 69

原创 java开发常见异常及解决方法

java开发中常见异常及解决方法Java Exception:1、Error2、Runtime Exception 运行时异常3、Exception4、throw 用户自定义异常异常类分两大类型:Error类代表了编译和系统的错误,不允许捕获;Exception类代表了标准Java库方法所激发的异常。Exception类还包含运行异常类Runtime_Exception和非运行异常类Non_RuntimeException这两个直接的子类。运行异常类对应于编译错误,它是指Java程序在运行时产

2020-12-16 16:19:41 643

原创 word常用使用技巧

**word常用使用技巧**打开word选中需要修改的文字或段落用快捷键Ctrl+e就可以达到效果了Ctrl+E 组合键 段落居中Ctrl+J 组合键 两端对齐Ctrl+L 组合键 左对齐Ctrl+R 组合键 右对齐Ctrl+M 组合键 左侧段落缩进Ctrl+Shift+M 组合键 取消左侧段落缩进Ctrl+T 组合键 创建悬...

2020-03-11 16:05:43 335

原创 linux常用命令基础知识总结

Linux—一种操作系统操作系统:只要能够让计算机硬件正确无误的运作,就算是操作系统;操作系统包含:kernel和系统调用层;Kernel:是一个操作系统的核心;系统调用:系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wciAmtN0-1583473847740...

2020-03-06 13:54:33 230

空空如也

空空如也

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

TA关注的人

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