自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Idea 打包deploy 一直报java heap space

2.vm的设置下如上。1.maven设置-Xms1024m -Xmx1024m。

2023-12-06 09:05:35 858

转载 PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to fin

PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to fin

2022-06-14 16:43:14 1306

原创 【@Import和@Lookup注解】

@Import使用先定义一个person类public class Person { private String name; public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString()

2022-04-28 15:29:33 484

原创 【mybatis原理工作原理】

文章目录mybatis原理:mybatis原理:mybatis的工作原理就是:先封装sql,接着调用jdbc操作数据库,最后把数据库返回的表结果封装成java类。通过代码实现jdbc查询操作:mybatis-config.xml类<?xml version="1.0" encoding="utf-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://myba

2022-04-26 17:18:30 1365

原创 【spring-bean的解析和refresh方法】

spring-bean的解析refresh

2022-04-14 15:16:15 1166

原创 springboot-banner打印原理

springboot-banner打印原理banner打印首先自定义banner。原理是什么?banner打印首先自定义banner。在resources目录下新建一个banner.txt文件(启动后会打印文件里的内容)新建test.txt文件,并在配置文件中spring.banner.location=test.txt也会打印txt内容或者新建一个png图片,配置文件spring.banner.image.location=a.png也会打印图片的内容。application.txt=

2022-04-14 15:14:48 1010

原创 springboot源码解析-系统初始化器

系统初始化器系统初始化器ApplicationContextInitializer方法1:方法2:方法3:工厂加载机制SpringFactoriesLoader分析方法1的方式系统初始化器ApplicationContextInitializer官方对其描述是 Spring容器刷新之前执行的一个回调函数,它的作用是向 Springboot容器中注册属性。案例:通过系统初始化器向springboot容器中注入属性的方法。方法1:@Order(1)public class FirstInitiali

2022-04-13 16:09:54 333

原创 nacos配合spring使用

spring使用nacos

2022-04-11 15:47:40 3055 2

原创 【springcloud如何使用】

springcloud

2022-04-08 21:49:00 1263

原创 6.【spring面试题】

spring事务传播特性(7种)。必须有事务的REQUIRED如果没有,就新建一个事务,如果有,就加入当前事务(事务合并成一个)REQUIRES_NEW:有没有都新建事务,如果原来有,就将原来的挂起nested(嵌套): 如果没有,就新建一个事务,如果有,就在当前事务中嵌套其他事务mandatory(强制性):如果没有就抛出异常,如果有,就使用当前事务可有可无的supports:有就用,没有就算了死活都不要事务的never:没有就非事务执行,有就抛出异常not_suppo

2022-03-29 15:23:34 734

原创 5.1【AQS的实现原理】

AQS的底层实现原理AQS英文AbustactQueuedSynchronizer的简称,中文意思,抽象队列同步(抽象+队列+同步-锁),它是一个用来构建锁和同步器的框架。它的组成是由:state(资源),Node(节点,存放等待的线程),CLH(双向队列),如图所示核心方法就6个,以ReentrantLock 为例lock():加锁acquire():获得tryAcquire(arg):尝试获取addWaiter(Node.EXCLUSIVE):添加等待线程acquireQueued(a

2022-03-25 17:32:51 495

原创 5.【多线程面试篇】

线程基础Q:什么是上下文切换?首先CPU再同一个时刻只能执行一个线程(它会为每个线程分配CPU时间片,每个时间片非常短,让人理解为同事执行。)cpu通过分配时间片来循环执行任务,线程A执行一个时间片后,会切换到线程B(不一定是A结束),但是切换前会保存A线程的状态,以便下次切换回A。所以:线程A从保存到再次加载执行就是一次上下文切换。例子:同时读两本书(肯定是换着读),当我们读一本英文书,发现某个单次不认识,于是打开词典查询,查询前肯定要标记现在读到哪里了,查完词典,接着读下面的内容,切换是影响读书效

2022-03-15 15:10:58 679

原创 4.【redis面试考点】

Redis篇Q:redis数据类型String,Hash,List(有序队列,可重复),Set(无序集合,不能重复),Zset(有序集合,通过分值进行排序),geo(存储地理位置)bitmap(位运算,用来做签到功能)Q:Redis持久化机制?redis提供两种持久化机制RDB和AOF机制。RDB:默认生产一个dump.rdb文件(二进制文件),就是快照模式,记录所有的键值对,在某个时间点写入。比AOF启动效率更好AOF:追加文件,每次处理完请求命令都会将此命令追加到aof文件的末尾。配置文件默

2022-03-14 16:36:02 1564

原创 3.【mysql面试题】

Msql篇章Q1:索引的底层原理是什么?Q2:索引为什么要使用B+树?索引为什么要使用B+树?有一堆数据id {1,2,3,4,5,6,7,8,9}首先它不可能是hash表,因为hash算法是将key进行hash运算成固定长度的key地址,这里的hash可以理解为key->value。但是hash运算会出现一种不同的key计算同一个结果,这就是hash碰撞。如果出现了hash碰撞,就会形成链表。每次查找都要先hash运算碰撞,然后循环链表,效率太低,pass掉。也可能是二叉查找树

2022-03-10 15:51:22 1199

原创 【2.java面试-JVM篇】

JVMQ1:讲一下JVM内存模型,并描述每一个模块的定义?Q2:什么情况下会发生栈内存溢出?Q3:讲一下垃圾回收算法?Q4:讲一下垃圾回收器?Q5:你怎么理解JMM内存模型?Q6:说下java类是怎么加载的?(什么是双亲委派机制)Q7:几个重要的JVM参数?Q8:强引用和弱引用,虚引用区别?java虚拟机的内存大概图程序计数器:每个线程都有独立的程序计数器,线程私有的内存。它的生命周期随着线程的创建而创建,随着线程的结束而死亡。java栈:先进后出区域很小,特点是

2022-03-07 17:32:13 221

原创 【1.java面试-基础篇】

java知识点java异常体系Error和Exception的区别:Error: 程序无法处理的系统错误,编译器不做检查,内存不足,方法调用栈溢出(OutOfMemoryError)Exception:程序可以处理的异常,捕获后可能恢复RuntimeException(空指针异常),IO异常,SQL异常总结:Error是无法处理,Exception是可以处理的,它们的子类,可以看后缀,比如OutOfMemoryError就是Error异常,NullPointException就是Exceptio

2022-03-03 15:57:23 524

原创 【cglib动态代理】

AOP实现原理之CGLIB动态代理实现GLIB动态代理必须实现MethodInterceptor(方法拦截器)接口,源码如下 public Object intercept(Object obj, java.lang.reflect.Method method, Object[] args, MethodProxy proxy) throws Throwable;这个接口又4个参数:1)obj表示增强的对象,即实现这个接口类的一个对象;

2022-03-02 11:28:46 237

原创 【JDK动态代理解析】

AOP实现原理之JDK动态代理基础:代理模式 --间接访问而已。win的快捷方式就是代理模式。spring aop也是代理模式实现原理:JDK动态代理java的动态代理类位于java.lang.reflect,设计两个类,一个是Interface InvocationHandler:该接口中仅定义了一个方法public object invoke(Object obj,Method method, Object[] args)实际使用中,第一个参数obj一般指代理类,method是被代理的方

2022-03-02 10:44:08 206

原创 【代理模式】

代理模式:间接访问而已。win的快捷方式就是代理模式。spring aop也是代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。我们将创建一个 Image 接口和实现了 Image 接口的实体类。ProxyImage 是一个代理类,减少 RealImage 对象加载的内存占用。ProxyPatternDemo 类使用 ProxyImage 来获取要加载的 Image 对象,

2022-03-01 18:28:09 79

原创 【监听者模式】

听者模式回调函数:类似于我调用支付宝支付接口,付款成功,支付宝会通知我,付款成功,然后更改数据库的状态。这就是回调函数的意思。该模式:监听器将监听自己感兴趣的事情,一旦事情发生了,便做出响应。类似于redis的发布订阅事件源(Event source):提供订阅和发送事件给监听者事件监听器(Event Listener):监听器的核心,定义事件发生后的动作事件对象(Event Object)代码如下:Event事件对象@Datapublic class Event { privat

2022-03-01 10:27:58 529

原创 【模板方法模式】

模板方法模式定义:一个设计师给出一个算法的骨架和轮廓,另一些设计师给出算法的各个逻辑步奏。通俗点讲公司让你写ppt,肯定会先给你一个ppt模板,你只需在这个模板里写出相应的文字即可。前提:父类必须是抽象的UML类图:具体代码首先定义一个game抽象类public abstract class Game { abstract void init(); abstract void start(); abstract void end(); //定义模板 public final voi

2022-02-25 14:40:05 290

原创 7.核心的Bean

BeanDefinition–bean定义用于保存bean的相关信息,包括属性,构造方法,依赖的bean名称及是否单例,延迟加载等。spring就是根据BeanDefinition中的信息实例化bean。一句话总结就是:BeanDefinition是用来存bean信息的(包括作用域,属性,构造方法,是否要延迟加载等等),后面对bean的操作就可以直接对BeanDefinition进行,通过反射进行对象的创建和调用啥的。常用属性作用范围scope(@Scope):singleton:单例pro

2022-02-24 17:09:10 153

原创 6.spring自己写一个beanContainer和IOC加载

自我实现beanContainer和IOC容器spring的BeanFactory有的核心方法:getBean,isSingleton,getType那么自己写的beanContainer需要有的功能:1.对bean进行增addBean,删removeBean,查getBean2.beanContainer单例实现(使用枚举,防止被反射改变恶意改,安全性)要有一个安全的集合存放getBean和getBeansgetClasses和根据注解筛选出Bean的Class集

2022-02-23 20:39:40 545

原创 5.自研spring框架文档记录

自研框架文档:一、项目初始化使用idea下载maven项–初始化pom文件<?xml version="1.0" encoding="UTF-8"?><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/P

2022-02-22 16:34:04 219

原创 4.spring自定义注解

注解元注解:@Target:注解的作用目标注解使用范围ElementType里面有type(类)Field(属性),method(方法)。。。@Retention:注解的生命周期RetentionPolicy有三个Source(只存在源文件中,不会在clas文件中)。class(不仅出现在源文件中,也在编译后的class文件中)RUNTIME(运行时有效)@Documented:注解是否应当被包含在javaDoc中自定义注解:语法public @interface TestAnnot

2022-02-20 16:42:52 564

原创 3.【反射机制】-spring源码学习必备知识

反射:**定义:**在运行状态中,对于任意一个类,都能知道这个类的所有属性和方法;对于任意一个对象,都能调用它的属性和方法(private也可以),这种动态获取信息以及动态调用的功能叫反射。用途:如果一个类定义了私有化,可以通过反射机制来获取与反射相关的类:Class类,Field类(属性),Method类(方法),Constructor类(构造器)Class类(ReflectTarget)用最多的,最方便的就是Class.forName(String className);--根据类名返回

2022-02-16 11:24:11 338

原创 【工厂模式】

工厂设计模式(3种)前沿:开闭原则–一个软件实体,应该对扩展开放,对修改关闭(通俗点就是,想改变,就不要改原有的代码,直接新增一个类去实现)简单工厂模式:定义:定义一个工厂类,根据不同的参数返回不同的实例代码实现逻辑:定义一个接口(Mouse,方法sayHi(),),两个鼠标类(HPMouse,DellMouse)实现Mouse接口,在定义一个鼠标工厂(MouseFactory 方法createMouse())public interface Mouse { void sayHi();}

2022-02-14 21:54:09 161

原创 2.一步步搭建属于自己的spring

自研框架文档:一、项目初始化使用idea下载maven项–初始化pom文件<?xml version="1.0" encoding="UTF-8"?><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/P

2022-02-14 10:25:46 217

原创 1.spring源码编译--会出现的问题。以及步奏

spring源码编译遇到的问题:首先github上下载spring太慢,可以使用码云的地址:https://gitee.com/wangxuwen/spring-framework/tree/v5.2.0.RELEASE/安装gradle–并配置环境变量mac版本下:vi ~/.bash_profile#GRADLEGRADLE_HOME=/Users/qinxy/software/gradle-5.6.2PATH=$PATH:$GRADLE_HOME/binexport GRADLE_H

2022-02-11 13:35:12 2485

原创 Nginx核心知识点

1.nginx理论正向代理:正向代理客户端:举例:我们用手机访问百度网页,手机浏览器通过wifi(电信公司)–》百度网站。反向代理:又叫分发代理,举例:我们访问百度www.baidu.com 其实这个网址是默认访问一个百度的ip,至于什么ip,不关系,有时候会是ip1,有时候会是ip2.访问的时候,只需要把链接分发到一个ip即可。安装linux环境:cd /usr/local/src/wget http://nginx.org/download/nginx-1.6.2.tar.gzta

2021-12-17 09:38:48 243

原创 观察者模式

观察者模式:一对多时,可以使用观察者模式。一个对象发生改变,就会自动通知所有依赖它的对象redis的订阅和发布,也是观察者模式。记者和新闻之间的关系:记者是观察者,新闻是被观察者,新闻收集读者留言(立刻发送给记者)。在java8中有两个类已经实现了观察者,被观察者的Observable 形容词(可观察的,就是被观察者) notifyObservers(Object arg)通知观察者,里面的参数就是通知观察者要传的参数 setChanged();将被观察者置为trueObserver 名词

2021-01-26 19:10:37 79

原创 状态模式

状态模式:类的行为时由它的状态而改变,这种模式就是状态模式。怎么用?在状态模式中,我们创建多个状态的对象(每一个状态都是一个类),和一个随着状态而改变的context对象。代码中包含大量与对象有关的条件语句。实例:订单的状态由多种(未支付,支付中,已支付,支付异常,支付失败,支付关闭)多种状态。订单逻辑,未使用状态模式的代码if(status == "未支付"){ //未支付的业务逻辑}else if(status == "支付中"){ //支付中的业务逻辑}else if(status

2021-01-21 22:29:36 254 3

原创 策略模式

策略模式为什么要使用策略模式?解答:当一个接口中有三种判断,参数传入month月,是一种结果,传入year是一种结果,传入day又是另一种结果,如果使用传统的代码业务逻辑如下:if(x == month){ System.out.println("-----返回月的数据----");}else if(x == year){ System.out.println("-----返回年的数据----");}else if(x == day){ System.out.println("-----返回

2021-01-09 15:52:37 996 3

原创 lambda表达式

lambda表达式语法格式一:无参,无返回值@Test public void test1(){ Runnable r1 = ()-> System.out.println("hello lambda"); r1.run(); }语法格式二:有多个参数,有返回值,并且lambad体中有多条语句@Test public void test3(){ //里面的(Integer x,Integer y)要么写要么都不写,不写的话jvm会根据上下文推断出类型 Comparator

2021-01-09 11:17:20 204

空空如也

空空如也

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

TA关注的人

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