自定义博客皮肤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)
  • 收藏
  • 关注

原创 springboot依赖注入的三种方式(非autowired)

Springboot会自动加载resources文件下面的application.yml或者application.properties配置文件,因为yml格式可以替代xml格式,功能properties更强大,所以一般都使用yml格式进行书写。1.对于yml中加载了的bean,可以使用 @value(${对象}) 进行注入。2.也可以在需要加入到spring容器中的类上加@Compone...

2018-08-02 10:05:02 20949 1

原创 《kubernetes权威指南》-第一章学习笔记

NameSpace:即命名空间,很多情况下用于实现多租户的资源隔离,不同命名空间的资源互相不可见,每个Kubernetes集群创建完成后会创建两个命名空间,一个default和一个kube-system,用户创建的资源对象如果不指定命名空间就会放在default中,而kube-system存放的是系统资源。pause:每个pod中都运行一个特殊的pause容器,而pod中的其他容器称为业务容器,业务容器共享pause容器的网络栈和Volume挂载卷(即同一个pod中的容器可以不经过service互相通信)

2023-07-30 22:52:10 739

原创 SpringCloud知识点整理

1.Zuul基本功能网关作为整个微服务的入口,主要的作用包括动态路由、监控、限流、降级、鉴权等功能。降级:也就是当后面微服务超时不响应的时候,可以在网关层进行报错等处理。监控: 如记录访问日志,方便统一查询。限流:针对每个微服务,有多种限流方式(具体待研究),使用精心设计的值保证后续微服务不被压垮,同时也不过多浪费机器性能。鉴权:如IP白名单、黑名单等,用于筛选用户是否有访问权限,如果是内部人员才能访问的可以使用过滤器指定IP地址范围,都拦截就可以了。zuul原理图zuul主要就是由过滤器构成,分为pre

2022-06-12 11:46:57 679

原创 RocketMQ基础知识

RocketMQ分为四个部分,分别是NameServer、Broker、Productor、Consumer。NameServer作用就是注册中心,包含注册、路由和动态剔除的功能。路由:生产者和消费者从NameServer通过负载均衡策略,获取空闲Broker的地址,然后进行访问。注册:Broker启动后注册到NameServer当中。动态剔除:Broker每30秒向NameServer发送心跳包,表示Broker正常工作,如果超过120秒Broker都还是没有发送心跳包,那么NameServer会认定该B

2022-06-03 00:34:40 412

原创 ReentrantLock-可重入锁

1.下面先分析一下ReentrantLock类private final Sync sync;ReentrantLock持有了sync变量,Sync类下面有FairSync和NonfairSync,也就是通常所说的公平锁和非公平锁。2.构造方法 public ReentrantLock() { sync = new NonfairSync(); } public ReentrantLock(boolean fair) { syn

2022-02-16 14:36:19 341

原创 Spring在监听器中用到的适配器模式

广播器AbstractApplicationEventMulticaster 的方法retrieveApplicationListeners获取监听器时,会通过supportsEvent(listener, eventType, sourceType)方法筛选出支持相应事件类型的监听器,如下。 protected boolean supportsEvent(ApplicationListener<?> listener, ResolvableType eventType, Class&lt

2021-12-29 20:45:00 421

原创 Spring-Boot和Spring的监听器模式

最近阅读SpringBoot的源码,发现一个奇怪的现象,项目中有两处地方具有发布事件功能,一个是SpringApplicationRunListener接口;另一个是ApplicationEventPublisher接口的publishEvent方法,ApplicationContext接口实现了该接口。先讲结论。经过仔细分析,发现SpringApplicationRunListener接口是属于SpringBoot包下的,该接口用于发布SpringBoot相关流程的事件;而ApplicationE

2021-12-22 21:01:26 559

原创 记录一次下载excel联调出错的经历

最近做需求下载excel的时候,发现easyExcel官方文档传输excel写的content-type是application/vnd.ms-excel,在对接的过程当中发现前端以前使用的是content-type=application/octet-stream,所以产生疑惑查了一下。原来两种方式都是可以的,octet-stream支持的格式是*,表示所有格式,而vnd.ms-excel支持的则是excel相关的几种格式,具体可查下表。如果前端使用一种类型下载出来的excel不能打开,可以试试另

2021-09-27 16:43:10 672

原创 SpringBoot源码阅读之AnnotationConfigApplicationContext类分析

1.通过SpringApplication.run方法进入查看源码,会发现代码中下面的这段代码创建了IOC容器。context = createApplicationContext();跟进去找到下面这段代码,spring boot找到了AnnotationConfigApplicationContext类的Class信息,并且实例化然后返回。contextClass = Class.forName(this.webEnvironment ? DEFAULT_WEB_CONTEXT_CLAS

2021-06-07 01:40:34 1133 1

原创 连接池和线程池的区别

连接池:只要不断开连接,就可以发送无数条sql。通过控制每条连接的isAvaliable状态启用/禁用相应连接,而不是断开连接。线程池:线程池和连接池不同,连接需要手动关闭或异常关闭才能断开连接,线程是执行完毕就会自动关闭线程。所以连接池和线程池的实现上就有很大的区别。线程池使用生产者、消费者模式,生产者生产任务提交到线程池的阻塞队列,线程池开启N个线程不停的从阻塞队列中获取任务并执行。连接池和线程池的共同点:都是通过减少创建和销毁过程,达到提高性能的目的。...

2020-07-13 09:51:13 2987

原创 Java序列化writeObject方法、transient关键字、defaultWriteObject介绍

1.概念:序列化:指将对象转换成ObjectOutPutStream存储到硬盘的过程就叫做序列化。反序列化:将文本存储的对象字节转换成ObjectInputStream的过程。在java中,实现了Serializable接口的类才能够进行序列化和反序列化。2.transient关键字修饰字段的作用:调用objectOutPutSteam.defaultWriteObject()方法时,系统默认的序列化过程会忽视使用了transient关键字修饰的字段。3.自定义序列化:默认的序列

2020-06-15 16:35:15 1724

原创 自定义类加载器(破坏双亲委派模型)

写这个自定义类加载器是因为了解到热部署的原理,是通过打破了双亲委派模型的自定义类加载器来加载的,使用新的类加载器实例来加载新的类,然后替换掉方法区中的旧的类。两个类,一个KaJong类,一个MyClassLoader类。直接调用findClass()方法是为了打破双亲委派模型,如果通过调用loadClass()方法来调用findClass()方法下面的代码就会报错,因为双亲委派的原因,jvm中已经加载了KaJong类。public class KaJong { public static

2020-05-14 15:21:07 723

原创 maven目录结构以及springboot目录结构

1.maven目录结构src/main/java Application/Library sources src/main/resources Application/Library resources src/main/filters Resource filter files src/main/assembly Assembly descriptors src/main/config Configuration files src/main/scri

2020-05-09 15:54:27 983

原创 MySQL学习笔记之索引

我们的数据存储于计算机的磁盘上,以512个字节为一个扇区,InnoDB的数据页大小是16KB每页,同一个应用程序的数据可能是连续存储的,也可能是分开存储的,如果没有索引,MySQL要查找指定的数据,只能挨个读取各个扇区的数据并进行比较,如果有一种方法能够让我们直接找到数据所在的扇区,那么无疑会大大提高我们查找数据的效率,而这个方法就是使用索引。通过查找索引,能够让我们快速找到数据所在物理地址。...

2020-03-20 01:58:30 107

原创 多线程学习之Lock和Condition(二)

在多线程领域,有两大问题,一个是同步(线程之间如何通信、协作),一个是互斥(同一时刻只能允许一个线程对共享资源进行访问),Lock锁是用于解决互斥问题,Condition用于解决同步问题。一、为什么需要使用Lock锁?Java中提供了基于管程实现的synchronized锁能够解决同步、互斥的问题,而且synchronized锁在jdk1.6之后使用性能上也和Lock锁差不多,那为什么还要...

2020-03-02 23:04:56 270

原创 多线程学习之基础理论知识(一)

多线程的三大问题:可见性、原子性,有序性。1.可见性:因CPU缓存导致,因为多线程的本质就是利用上多核CPU的性能,由于每个现代CPU都有一级或者二级CPU cache用来提升性能,所以如果使用多线程对堆数据进行修改操作,势必会先读取到CPU缓存中,然后在缓存中修改后写回到堆内存。如果多个线程同时操作,就会造成A、B线程同时读取一条数据,然后A、B都在各自CPU cache中进行了修改,写回堆...

2020-02-29 01:58:16 167

原创 springboot javaConfig使用注解代替XML配置Bean

1.Spring一直以来使用XML进行文件配置,但XML配置文件有一个最大的问题是,配置好的XML不能够在编译时检查到错误,只能在运行时才能检查错误,极大的影响了开发效率,所以SpringBoot设计出了JavaConfig,用注解的方式配置实现类。2.比如<bean id="studentService" class="com.qqq.service.StudentService...

2020-02-26 15:50:54 1151

原创 MySQL学习之——事务

事务是什么?事务就是把对数据的一系列操作进行打包,实现ACID(Atomicity、Consistency、Isolation、Durability)四个特性,即原子性、一致性、隔离性、持久性。说说隔离性。1.MySQL事务有四种隔离级别(1).读未提交:事务结果还未提交,便可被别的事务看见。(2).读已提交:事务结果提交之后,才可被别的事务看见。(3).可重复读:事务结果提交...

2020-02-25 20:15:07 136

原创 springboot按照类型、名称注入(autowired、qualifier、resource)

1.使用autowired注解springboot默认是按照类型进行注入2.如果在IOC容器中一个接口有多个实现类,那么不能够按照类型注入,需要按照名称进行注入(1).可以通过@Qualifier和@Autowired注解搭配,在@Qualifier中输入需要注入的名称,如下图 @Service("studentservice") public class Studen...

2020-02-25 12:51:37 16736

原创 SpringAOP之AspectJ+拦截自定义注解

一、AOP基本概念假设现在我们要对一个Test类进行事务代码织入,那么我们需要知道这个类有哪些方法,然后需要知道这个类的哪些方法需要织入事务代码。1.目标类:需要织入日志代码的类,也就是Test类。2.连接点:目标类的所有方法,都叫做连接点。3.切点:切点就是具体织入日志代码的方法。4.增强:织入的日志代码,就是增强部分。5.织入:将增强和目标类的切点方法结合在一起,形成一...

2019-07-15 17:38:01 1222

原创 SpringAOP实现原理(JDK动态代理、CGLib)

AOP,面向切面编程,是面向对象编程的补充,因为面向对象只能做到由上至下编程,但是AOP可以做到从左到右编程。在我们的应用程序中,使用AOP可以将日志、事务、权限检查、性能监控等等通用功能代码横向织入到业务逻辑代码当中。那么实现AOP可以用到什么技术呢?常用的有静态代理、JDK动态代理以及CGLib动态代理。静态代理这里不多说了,就是二十三种设计模式之一,代理模式。SpringAO...

2019-07-15 16:16:40 115

原创 Spring单体事务机制(传播、隔离、回滚)

一、Spring事务传播机制Spring事务传播机制,是Spring针对事务嵌套而制定的解决方案。所谓事务嵌套,就是我们有方法A和方法B,方法A和方法B都是事务方法,那么假如我们在方法A中调用了方法B,这就形成了一个事务嵌套。这里默认大家知道,Spring的事务是通过AOP向方法中织入开启事务、提交事务/事务回滚等代码,当我们在事务A中调用了事务B时,因为这里事务A是最外层事务,所以一定会对方...

2019-07-12 23:54:21 798

原创 单例的几种写法优劣势对比(双重同步锁、饿汉、静态内部类)

一、线程安全的双重检查懒加载单例public class Singleton { private volatile static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if (singleton == null){ ...

2019-07-10 19:00:59 1457

原创 HashCode方法和Equals实现

当我们的使用任何Java的集合进行去重的时候,比如Set集合,比如JDK1.8的stream.distinct,Jvm都需要对不同的数据类型进行相等判断,如果我们往集合存入的是基本数据类型,那么很容易就可以判断相等,但是如果我们传入的是一个对象,那么需要重写相应类的equals方法和hashcode方法。在JVM当中,比较两个对象的时候,是先调用相应类的hashCode方法计算两个对象的Has...

2019-07-10 00:16:59 230

原创 SpringMVC源码阅读之SpringMVC的初始化(一)

众所周知,tocmat启动的时候,会调用Servlet的init方法,我们使用Springmvc需要在web.xml中配置DispatcherServlet的访问路径,所有的请求都需要经过我们的DispatcherServlet,那么就会访问到DispatcherServlet的init方法。但是我们的DispatcherServlet本身并没有实现init方法,所以Java的类加载器会向Di...

2019-07-05 18:37:03 121

原创 初识MySQL索引

MySQL索引分为单列索引和多列索引一、单列索引:普通索引,主键索引,唯一索引,全文索引 1.索引分类: 主键索引:列值唯一,值中不能有null,一张表只能创建一个 唯一索引:列值唯一,值中可以有null 普通索引:普通的索引 全文索引:仅存在于MyISAM引擎 2.通过创建添...

2019-06-12 23:58:40 63

原创 使用Java将多个PDF合并为一个PDF

public static byte[] mix(List<byte[]> bytes) throws Exception { ByteArrayOutputStream bos = new ByteArrayOutputStream(); Document document = new Document();// 创建一个新的PDF ...

2019-03-06 11:35:36 5521 7

原创 Tomcat8中LifecycleBase使用到的模版方法模式和监听器模式

下面是Tomcat中Lifecycle接口相关的类图,本文讲解使用到了Lifecycle和LifecycleBase类。Lifecycle处于最顶端的位置,用于对Tomcat所有的组件进行生命周期管理,在这里我们先不讨论和本文无关的Container接口以及MBeanRegistration、JmxEnabled接口,而LifecycleMBeanBase是用于JMX进行管理而设计的类,也不在...

2018-12-07 23:25:31 1113 1

原创 yml文件格式

        最近在使用springboot的value注解读取yml格式文件时出现 Could not resolve placeholder 'my.name' in value "${my.name}",经过排查发现问题出现在yml文件编写时,应该在属性名后的冒号之后加一个空格,再填写属性值,否则就会出现如上错误。 ...

2018-07-31 16:17:43 3091

原创 Tomcat使用过程中解决get/post请求编码问题

1.我们在使用spring的过程中,常常会在web.xml中配置过滤器来解决数据传输过程中产生的编码问题,如下 encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceRequestEncoding

2017-12-28 16:06:24 1426

转载 sql语句之exists/not exists用法详解

1、Student:SnoSnameSsexSageSdept200215121李勇男20CS200215122刘晨女19CS200215123王敏女

2017-11-09 17:33:45 23449

原创 mybatis的demo

1.导入依赖,配置mybatis使用环境 <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.2&...

2017-11-07 00:39:41 160

原创 mysql安装之跳过权限访问并修改密码

1. 关闭正在运行的MySQL服务。2. 打开DOS窗口,转到mysql\bin目录。3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。5. 输入mysql回车,如果成功,将出现MyS

2017-09-27 03:25:05 1784

转载 java知识点回顾(JavaSE、JavaWeb、数据库、JavaEE)

一、基础1.核心语言int a = 10;关键字:50个,2个不能用,2个Java 5+,冷僻关键字(transient、volatile、native、strictfp)标识符:3条命名规则;2条建议规则;运算符:优先级和结合性;字面量:整数、字符、小数、布尔、字符串、引用、类型分隔符:2.程序逻辑循环结构:while、do...while、for

2017-09-19 13:48:24 628

空空如也

空空如也

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

TA关注的人

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