自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM内存

JVM jvm的位置 jvm的体系结构 类加载器 1 虚拟机自带的类加载器 2 启动类 根加载器 :引导类加载器,Bootstrap ClassLoader 使用c/c++实现,用来加载java核心库 3 扩展类加载器:Extension ClassLoader 使用java语言编写,父类为启动类加载器,从java.ext.dirs 系统属性所指定的目录中加载类库,从jdk安装目录jre/lib/ext 子目录下加载类库 4 应用程序加载器:系统加

2021-10-21 21:08:53 151

原创 集合面试题

Collection 与 Map的区别? Collection 存储单个值,该接口提供迭代器 Map存储键值对,没有提供迭代器 迭代器的分类? Iterator和ListIterator Iterator和ListIterator的区别? Iterator:Collection接口下所有的实现类都能获取的迭代器,提供了删除元素的方法 ListIterator:List接口下所有的实现类才能获取的迭代器,提供了删除、添加、插入的方法,设置起始下标开始遍历,倒叙遍历..

2021-10-19 10:52:11 163

原创 Nacos服务注册与发现和分布式配置中心

Nacos可以实现分布式服务注册与发现和分布式配置中心功能代替Eureka做服务注册中心:服务的注册与发现替代Config做服务配置中心:分布式配置中心,集中化配置Nacos-discovery默认支持Ribbon负载均衡0.服务器负责启动,加载,运行服务提供者1.服务提供者在启动时,向注册中心注册自己提供的服务2.服务消费者在启动时,向注册中心订阅自己所需的服务3.注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者4.

2021-10-16 14:25:48 282

原创 Histrix

微服务项目中,微服务得服务负载过高,导致运行性能下降,会导致其他调用他们得链条出现问题,从而所有得项目都可以出现问题,这种情况下称之为灾难性得雪崩效应。造成雪崩得击穿:服务提供者不可用:硬件故障,程序bug,缓存击穿,并发请求量过大..重试加大流量:用户重试,代码充实逻辑等服务调用者不可用:同步请求阻塞造成得资源耗尽等。雪崩效应造成得结果就是:服务链条中某一个服务不可用,导致一系列得服务不可用,最终造成服务逻辑崩溃。如何防止?降级超时降级,资源不足时降级,降级后可以配合降级接..

2021-10-16 14:25:24 144

原创 ConCurrentHashMap高频面试题

由于面试大厂被吊打,我终于下定决心来深深补一下jdk1.7是sagment分段式锁实现的 1.8就没有了sagment大概说一下putValue的流程: 判断key是否没空 空就抛出空指针 得到table数组 判断table是否为空,空的话就进行扩容 判断key的哈希值对应table下标是否为空,空的话通过cas操作创建一个node放入table中,然后直接退出。 如果桶位为空,判断当前头节点的返回值是否为-1,如果是则需要当前线程帮助扩容,并得到扩容后

2021-10-13 22:51:38 321

原创 数据库索引

MySQL官方定义:索引是帮助MySQL高效获取数据的有序数据结构。在数据库之外,数据库系统还维护着满足特定查找算法的数据结构,这样的数据结构已某种方式指向数据,这样就可在这些数据结构上实现高级查找算法,这种数据结构叫做索引。示意图:左边是数据表,一共两列七条记录,最左边的是数据记录的物理地址。为了加快Col2查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据的记录物理地址的指针,这样就可以运用二叉查找快速获取到相应的数据。索引本身也很大,不会全部存储..

2021-10-11 23:57:45 73

原创 Nginx的反向代理

Nginx的反向代理为了实现效果1.117.55.17:81/vod/index.html可以直接跳转到1.117.55.17:8080运行两个tomcatdocker run -id --name:tomcat1 -p 8080:8080 镜像id在webapps文件夹下创建/edu/index.html 并进行修改 写入你想要的html页面docker run -id --name:tomcat2 -p 8081:8080 镜像id在webapps文件夹下创建/edu/ind

2021-10-08 23:09:53 74

原创 Nginx的负载均衡

Nginx的负载均衡负载均衡:即是将负载分配到不同的服务单元,既保证服务的可用性,又保证了响应的速度,给用户良好的体验。负载均衡的作用1.转发转发是负载均衡的核心功能,它能够根据一定的算法,将客户端请求转发到不同应用服务器,缓解每台服务器的压力,提高并发量。2.移除故障当其中一台服务器发生故障时,会被移除轮询队列,客户端请求将会发送给其他几台正常的服务器,不会影响客户端的访问。3.恢复添加当故障的服务器恢复时,会自动倍加到轮询队列,继续处理客户端请求。Nginx配置

2021-10-08 23:08:17 79

原创 缓存穿透,缓存击穿,缓存雪崩

缓存穿透,缓存击穿,缓存雪崩缓存穿透缓存和数据库中都没有的数据,用户还是可以源源不断的发起请求,导致每次请求都会到数据库,导致数据库被压垮。查询一个不存在的东西,在redis中查询不到去数据库查询,一直到数据库查询就会造成数据库呗压垮解决办法: 业务层校验 用户发过来的请求,我们在代码中进行校验,不存在的不允许访问。 不存在的数据设置短时间过期 对于某个空的数据,我们将它空的结果放入redis中缓存,但是设置很短的过期时间,可以根据实际业务设定。但不要影响正常的业务。

2021-09-27 00:10:48 64

原创 Redis数据持久化策略

持久化(persistence),持久化是将程序在持久状态和瞬时状态间转换得机制RDB持久化方式(默认开启):可以在指定得时间间隔能对数据进行快照存储。AOF持久化方式(需要开启,优先级高):记录每次服务器写得操作,AOF命令以redis协议追加保存每次写得操作到文件末尾,当服务器重启得时候回重新执行这些命令来恢复原始得数据,Redis还能对AOF文件进行后台重启,使得AOF文件得体积不至过大。如果服务器开启了AOF持久化功能,服务器会优先使用AOF文件还原数据。只有关闭了AOF持久化功能,..

2021-09-26 19:14:42 66

原创 手写简易Spring框架

我们前面分析很多的Spring源码,现在我们来手写一个简易的Spring源码创建一个maven工程。public class Test { public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class); UserService userSe...

2021-09-23 20:42:08 457

原创 Spring整合第三方框架底层原理

Spring中的bean是如何生成的Spring提供了那些扩展点可以用来整合第三方框架?Spring是如何整合Mybatils的?MyBatis 框架这里的sqlsession.getMapper是jdk动态代理得到代理对象的return mapperProxyFactory.newInstance(sqlSession)这里得到了真正的代理对象 <dependency> ...

2021-09-23 20:36:46 904

原创 循环依赖的底层原理(三级缓存)

@Component("bService")public class AService { //aservice的生命周期 1实例化(new AService)2填充bService属性3填充其他属性4aop5放入单例池 // 不是所有的对象都叫bean,只有经历了spring的所有步骤才能叫做bean​ @Autowired private BService bService;​ public void test(){ System.ou...

2021-09-23 20:32:57 170

原创 单例Bean,单例模式,单例池之间的联系与底层原理

单例Bean:不是指在Spring容器中只有一个userService类型的对象,可以有多个此类型的对象。Spring找到对应的对象是先 byType 再 byName。通过@Bean标签就可以看出来Spring中的单例Bean并不是指只有一个此类型的对象。单例模式:单例类只能有一个实例,单例类必须自己创建自己的唯一实例,单例类必须给所有类提供这一实例。单例池:是用来是实现单例Bean的,单例池就是一个Map Bean对象的名字就是它的键,bean对象就是值。FactoryBean的作用..

2021-09-23 20:15:30 1799

原创 Bean的生命周期

这里要先了解Bean的后置处理器(BeanProstProcessor):我们可以理解为大多数情况下在创建了对象之后,可以进行对对象的其他操作,再转化成Bean@Componentpublic class FactoryBeanProstProcessor implements BeanPostProcessor {​ public Object postProcessBeforeInitialization(Object bean, String beanNa...

2021-09-23 09:26:28 66

原创 获得Bean得几种种方法 BeanFactory

配置文件<bean id="user" class="com.work.pojo.User"/>​ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("springMvc.xml");User user1 = context.getBean("user", User.class);//bean声明类@ComponentScanpublic class Config {..

2021-09-23 09:20:52 484

原创 BeanDefinition BeanFactory AOP

BeanDefinition1 表示Bean定义,SPring根据BeanDefinition来创建Bean对象beanClass:表示bean的类型,创建Bean的过程中会根据属性来实例的得到对象scope:表示一个bean的作用域,scope等于singleton,该Bnean就是一个单例BeanisLazy:表示一个bean是不是需要懒加载,原型bean的isLazy属性不起作用,懒加载的单例Bean,会在第一次getBean的时候生成该bean,非懒加载的单例bean,则会在SPri

2021-09-23 09:05:36 203

原创 redis常用命令

查看是否运行正常# ping 返回 PONG统计server# info server# info查看当前数据库得key数量# dbsize切换库命令# select index获得 redis 的配置值# config get parameter查询数据库得个数 一般为16 个# config get databases获取端口号# config get port获取所有参数配置# config get *删除所有库得数..

2021-09-22 20:34:36 60

原创 redis的安装

Redis他是一个非关系型数据库,时以K—V存储的 nosql数据库。redis在线帮助手册:redisdoc.com常见五种数据类型: 字符串 哈希表 列表 集合 有序集合优点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用Redis不仅仅支持K-V类型的数据,同时还提供list,set,zste,hash等数据结构存储Redis支持数据的备份,即master-slave模式的数据备份下面我们就来学习如何安装:官网进行下载,进

2021-09-22 14:09:22 63

原创 MYQL!!

MYSQL之面试篇三大范式第一范式(1NF):字段不可分第二范式(2NF):有主键,非主键字段依赖于主键第三范式(3NF):非主键字段不能相互依赖1NF:原子性,字段不可再分,否则就是非关系型数据库。2NF:唯一性,一个表只能说明一个事务。3NF:不存在传递依赖,没列都与主键有直接关系。存储过程是像编程语言中的函数一样,封装了我们的代码(PLSQL,T-SQL)数据库索引(B+树)在数据结构中,最常见的搜索结构就是二叉搜索树和AVL(高度平衡二叉树),但是在搜索量较大

2021-09-17 00:44:21 100

原创 Spring事务特性

什么是事务?事务时逻辑上的一组操作,一组操作有多个逻辑,多个逻辑中失败一个则回滚,也就是要么全部成功,要么全部不成功。事务的特性 原子性(Atomicit):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么都不起作用。 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一直的状态,而不会时部分完成部分失败。在现实中的数据不会被破坏。 隔离性(Isolation):可能有许多事务会同时处理相同的数..

2021-09-10 19:15:04 204

原创 SpringBoot自动装配原理

SpringBoot自动装配原理要先了解SpringBoot自动装配原理我们就得了解@SpringBootApplication注解,他是由三个注解组合成的也就是@ComponentScan(扫描包)和@SpringBootConfiguration(本质就是@Configuration,扫描配置的注解)以及最重要的@EnableAutoConfiguration(自动装配注解)@ComponentScan其实也就是Spring的扫描注解,使得@SpringBootApplicat.

2021-09-08 13:36:00 199

原创 SpringBoot基本配置

简介:Spring Boot 是由Pivota团队提供的全新框架,目的就是简化我们的开发,我们以前的Spring xml配置+注解开发相当于动车,那么我们的SpringBoot就把我们拉到了高铁时代,我们可以使用大量的注解 + 少量的配置类来实现项目的开发。SpringBoot的特点 开发非常快速 绝对没有代码生成,也无XML配置 快速创建独立运行的Spring项目于主流的框架集成 使用嵌入式Servlet容器,应用无需打成war包 由starters(..

2021-09-08 09:59:53 135

原创 GIT 基本命令

GIT版本控制工具我们今天介绍一下git工具的常用命令查看GIT版本:git --version查看git配置信息:git config --list初始化账户信息: git 需要有一个账户信息,远程库有用到身份信息 git config --global user.name "用户名" git config --global user.email "注册邮箱或手机号" 本地库操作初始本地仓库:选择你要作为仓库的文件夹右键点击git base 输入 g

2021-09-06 13:13:04 72

原创 UsernamePasswordAuthenticationFilter

我们前面介绍的账户密码都是指定在我们的xml配置文件中,我们最终还是需要实现和数据库中的数据比较,那么我们就需要自定义认证逻辑的实现。我们还是一样先进行源码分析,系统认证是通过UsernamePasswordAuthenticationFilter过滤器实现的。表单提交参数public class UsernamePasswordAuthenticationFilter extends AbstractAuthenticationProcessingFilter { //...

2021-09-03 23:41:51 4476

原创 SpringSceurity源码分析

SpringSceurity源码分析当我们在web.xml文件中配置过滤器链时<filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class></filter>filter会通过org.spri

2021-09-02 23:09:31 205

原创 java中的强引用,软引用,弱引用,虚引用

什么是强引用,软引用,弱引用,虚引用?在JDK1.2 之前,如果一个对象不被任何变量引用,则程序无法再次使用这个对象,这个对象最终会被GC(GabageCollection 垃圾回收)。如果后面还要用这个对象,就只能新建一个。在JDK1.2之后,就提供了四种引用。主要有两个目的:1可以在代码中决某些对象的生命周期。2优化回收机制。强引用 StrongReference我们一般创建对象的过程都是强引用,比如我们new一个对象。Object o = new Object();Stri..

2021-09-02 13:08:37 103

原创 SpringSecurit

概述:在web应用开发中,安全无疑是十分重要的,选择Spring Security来保护web应用是一个非常好的选择。Spring Security 是Spring项目之中的一个安全模块,可以非常方便与Spring项目无缝集成。利用 Spring IoC/DI和AOP功能,为系统提供了声明式安全访问控制功能,减少了为系统安全而编写大量重复代码的工作。特别是SpringBoot项目中加入Spring Security更是十分简单。核心功能:认证:用户登录,系统授权访问授权:当前用户有哪些资..

2021-09-02 11:46:31 146

原创 MyBatis-plus 自动生成代码

自动生成pojo mapper service controller 只需要在测试类中写下代码先导jar包<!-- mybatis plus 代码生成器 --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.2.0</version&g.

2021-08-25 22:35:22 65

原创 注解与反射

元注解@Target:用于描述注解的使用范围(被描述的注解可以在什么地方使用)@Retention:表示需要在什么级别保存该注释信息,用于描述注解的生命周期(SOURCE<CLASS<RUNTIME)@Document:该注解被包含在javadoc中@Inherited:该子类可以继承父类中该注解自定义注解使用@interface自定义注解 自动继承java.lang.annotion.Annotation接口public class test2 ...

2021-08-24 12:01:25 102 1

空空如也

空空如也

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

TA关注的人

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