源码专题
文章平均质量分 81
熊猫-IT
V :it-xiongmao,源码获取,学习交流,技术支持!
展开
-
SpringBoot整合Spring Security过滤器链加载执行流程源码分析
在 Spring Boot项目之中,我们引入 Spring Security依赖,什么也没做,启动项目 Spring Security 就会生效,访问请求就进行了拦截。Spring Boot 对于 Spring Security 提供了自动化配置方案,可以使用更少的配置来使用 Spring Security。那么这个过滤器链是怎么加载和实现拦截的呢?原创 2023-02-21 22:37:38 · 1191 阅读 · 0 评论 -
Nacos源码-小结
服务注册:Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。原创 2023-02-21 22:35:37 · 161 阅读 · 0 评论 -
Nacos源码分析专题(五)-Nacos小结
Nacos 致力于发现、配置和管理微服务。它提供了一组简单易用的特性集,帮助快速实现动态服务发现、服务配置、服务元数据及流量管理。使用 Nacos 可以更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。...原创 2022-08-09 08:51:04 · 279 阅读 · 0 评论 -
Nacos源码分析专题(四)-服务发现
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台原创 2022-08-05 00:10:16 · 502 阅读 · 0 评论 -
Nacos源码分析专题(三)-服务心跳
Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。原创 2022-08-04 23:57:25 · 823 阅读 · 0 评论 -
Nacos源码分析专题(二)-服务注册
acos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施...原创 2022-08-01 00:18:48 · 2867 阅读 · 0 评论 -
Nacos源码分析专题(一)-环境准备
Nacos 是阿里巴巴的新开源项目,其核心定位是 “一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台”。原创 2022-07-31 17:16:44 · 395 阅读 · 1 评论 -
Redis Sentinel原理
哨兵模式是一种特殊的模式,它是 Redis 高可用的一种实现方案。首先哨兵是一个独立的进程, 可以实现对 Redis 实例的监控、通知、自动故障转移。原创 2022-07-30 08:13:35 · 115 阅读 · 0 评论 -
关闭线程池 shutdown 和 shutdownNow 的区别
线程池(英语:thread pool)一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。原创 2022-07-28 12:14:58 · 251 阅读 · 0 评论 -
线程池面试汇总
线程池(英语:thread pool)一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。原创 2022-07-28 12:14:20 · 233 阅读 · 0 评论 -
线程池拒绝策略详解
我们也可以自定义拒绝策略,只需要实现 RejectedExecutionHandler; 需要注意的是,拒绝策略的运行需要指定线程池和队列的容量。原创 2022-07-27 18:30:32 · 5972 阅读 · 0 评论 -
线程池工作流程-图示
使用线程池最大的原因就是可以根据系统的需求和硬件环境灵活的控制线程的数量,且可以对所有线程进行统一的管理和控制,从而提高系统的运行效率,降低系统运行运行压力;当然了,使用线程池的原因不仅仅只有这些,我们可以从线程池自身的优点上来进一步了解线程池的好处;...原创 2022-07-27 17:59:59 · 467 阅读 · 0 评论 -
深入浅出Java线程池
使用线程池最大的原因就是可以根据系统的需求和硬件环境灵活的控制线程的数量,且可以对所有线程进行统一的管理和控制,从而提高系统的运行效率,降低系统运行运行压力;当然了,使用线程池的原因不仅仅只有这些,我们可以从线程池自身的优点上来进一步了解线程池的好处...原创 2022-07-27 17:58:33 · 194 阅读 · 0 评论 -
SpringBoot整合SpringCache详解
Spring Cache 是Spring 提供的一整套的缓存解决方案,它不是具体的缓存实现,它只提供一整套的接口和代码规范、配置、注解等,用于整合各种缓存方案,比如Caffeine、Guava Cache、Ehcache。原创 2022-07-20 18:05:23 · 5418 阅读 · 1 评论 -
JVM专题(十)-垃圾回收(一)
1.如何判断对象可以回收1.1.引用计数法当一个对象被其他变量引用,该对象计数加一,当某个变量不在引用该对象,其计数减一当一个对象引用没有被其他变量引用时,即计数变为0时,该对象就可以被回收缺点:循环引用时,两个对象的计数都为1,导致两个对象都无法被释放1.2.可达性分析算法JVM中的垃圾回收器通过可达性分析来探索所有存活的对象扫描堆中的对象,看能否沿着GC Root对象为起点的引用链找到该对象,如果找不到,则表示可以回收可以作为GC Root的对象– 虚拟机栈(栈帧中的本地原创 2022-04-20 18:03:31 · 530 阅读 · 0 评论 -
自定义Ribbon负载均衡策略
官方文档指出:自定义的负载均衡配置类不能放在 @componentScan 所扫描的当前包下及其子包下,否则我们自定义的这个配置类就会被所有的Ribbon客户端所共享,也就是说我们达不到特殊化定制的目的了;要求自定义的算法:依旧是轮询策略,但是每个服务器被调用5次后轮到下一个服务,即以前是每个服务被调用1次,现在是每个被调用5次。打开消费者工程:1、自定义算法类必须继承 AbstractLoadBalanceRule 类启动类在com.bruce.springcloud 包下,所以我们新建一个包:原创 2022-03-16 00:35:15 · 1652 阅读 · 0 评论 -
Ribbon源码分析
文章目录1.LoadBalancerInterceptor2.RibbonLoadBalancerClient3.ZoneAwareLoadBalancer4.BaseLoadBalancer5.默认的RoundRobinRule何时被覆盖?5.1.RibbonClientConfiguration5.2.何时替换了RoundRobinRule6.PredicateBasedRule的choose7.AbstractServerPredicate的chooseRoundRobinAfterFiltering原创 2022-03-16 00:29:55 · 358 阅读 · 0 评论 -
SpringCloud对象接收时候对象变成LinkeHashMap问题
1.问题spring cloud项目开发中,使用远程调用 ,返回类型为DataResults<List>,对List进行二次封装报java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to Users。2. 解决方案:写一个通用转换类maven依赖<dependency> <groupId>net.sf.dozer</groupId> <art原创 2022-03-14 18:24:51 · 1377 阅读 · 0 评论 -
《JDK8新特性专题》-04方法引用
文章目录1.为什么要用方法引用1.1.lambda表达式冗余1.2.解决方案2.方法引用的格式2.1.对象名::方法名2.2.类名::静态方法名2.3 类名::引用实例方法2.4.类名::构造器2.5.数组::构造器2.6 数组::构造器1.为什么要用方法引用1.1.lambda表达式冗余在使用Lambda表达式的时候,也会出现代码冗余的情况,比如:用Lambda表达式求一个数组的和import java.util.function.Consumer;public class FunctionR原创 2021-08-30 16:44:11 · 143 阅读 · 0 评论 -
《JDK8新特性专题》-03函数式接口
文章目录1.函数式接口的由来2.函数式接口介绍2.1.Supplier2.2.Consumer2.3.Function2.4.Predicate1.函数式接口的由来我们知道使用Lambda表达式的前提是需要有函数式接口,而Lambda表达式使用时不关心接口名,抽象方法名。只关心抽象方法的参数列表和返回值类型。因此为了让我们使用Lambda表达式更加的方法,在JDK中提供了大量常用的函数式接口public class Demo01Fun { public static void main(St原创 2021-08-29 18:01:32 · 177 阅读 · 0 评论 -
《JDK8新特性专题》-02接口中默认方法和静态方法
文章目录1.JDK8中接口的新增2.默认方法2.1.为什么要增加默认方法2.2.接口默认方法的格式2.3.接口中默认方法的使用3.静态方法3.1.语法规则3.2.静态方法的使用4. 两者的区别介绍1.JDK8中接口的新增在JDK8中针对接口有做增强,在JDK8之前interface 接口名{ 静态常量; 抽象方法;}JDK8之后对接口做了增加,接口中可以有默认方法和静态方法interface 接口名{ 静态常量; 抽象方法; 默认方法; 静态方法原创 2021-08-28 18:00:41 · 262 阅读 · 0 评论 -
《JDK8新特性专题》-01Lambda表达式
文章目录1.Lambda表达式简介1.1.需求分析1.2.Lambda表达式初体验1.3.Lambda的语法规则2.Lambda练习13.Lambda练习25.@FunctionalInterface注解6.Lambda表达式的原理7.Lambda表达式的省略写法8.Lambda表达式的使用前提9.Lambda和匿名内部类的对比1.Lambda表达式简介Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)原创 2021-08-28 17:36:53 · 238 阅读 · 0 评论 -
MyBatis缓存专题-一文彻底搞懂MyBatis二级缓存
文章目录1.二级缓存概念2.二级缓存使用2.1.配置二级缓存2.2.分开关2.3.实体类实现序列化接口2.4.测试方法3.cache有一些可选的属性3.1.type3.2.eviction3.3.flushInterval3.4.size3.5 readOnly3.6 blocking4.MyBatis的缓存机制整体设计以及二级缓存的工作模式5.使用二级缓存,必须要具备的条件6.一级缓存和二级缓存的使用顺序7.二级缓存实现的选择1.二级缓存概念二级缓存是用来解决一级缓存不能跨会话共享的问题的,范围是na原创 2021-08-07 15:02:56 · 5007 阅读 · 0 评论 -
MyBatis缓存专题-一文彻底搞懂MyBatis一级缓存
文章目录1.缓存的概念1.1.什么是缓存1.2.为什么使用缓存1.3.什么样的数据能使用缓存,什么样的数据不能使用2.什么是一级缓存3.什么情况下会命中一级缓存4.Mybatis的一级缓存机制详解5.MyBatis关闭一级缓存6.Mybatis的一级缓存机制源码分析7.Mybatis的一级缓存机制源码分析图解总结8.一级缓存什么时候被清空?9.一级缓存key是什么?10.一级缓存总结带着问题来学习?1.缓存的概念1.1.什么是缓存存在于内存中的临时数据。1.2.为什么使用缓存减少和数据库的原创 2021-08-07 11:52:25 · 4539 阅读 · 4 评论 -
JVM专题-垃圾回收机制
1.前言对于 JVM 来说,我们都不陌生,其是 Java Virtual Machine(Java 虚拟机)的缩写,它也是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM 有自己完善的硬件架构,如处理器、堆栈等,还具有相应的指令系统,其本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。Java 语言的可移植性就是建立在 JVM 的基础之上的,任何平台只要装有针对于该平台的 Java 虚拟机,字节码文件(.class)就可以在该平台上运原创 2020-12-23 14:51:20 · 233 阅读 · 0 评论 -
JDK8新特性-方法引用
在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑?1.冗余的Lambda场景来看一个简单的函数式接口以应用Lambda表达式:@FunctionalInterfacepublic interface Printable { void print(String str);}在 Printable 接口当中唯一的抽象方法 print 接原创 2020-12-12 23:39:28 · 232 阅读 · 0 评论 -
JDK8新特性-Stream流
说到Stream便容易想到I/O Stream,而实际上,谁规定“流”就一定是“IO流”呢?在Java 8中,得益于Lambda所带来的函数式编程,引入了一个全新的Stream概念,用于解决已有集合类库既有的弊端。1.引言传统集合的多步遍历代码几乎所有的集合(如 Collection 接口或 Map 接口等)都支持直接或间接的遍历操作。而当我们需要对集合中的元素进行操作的时候,除了必需的添加、删除、获取外,最典型的就是集合遍历。例如:public class Demo01ForEach {原创 2020-12-12 22:53:21 · 269 阅读 · 0 评论 -
JDK8新特性-函数型接口
目录1.函数式接口1.1概念1.2.格式1.3.@FunctionalInterface注解1.4.自定义函数式接口2.函数式编程2.1.Lambda的延迟执行2.2.使用Lambda作为参数和返回值3.常用函数式接口3.1 Supplier接口3.2 练习:求数组元素最大值3.3 Consumer接口3.4 练习:格式化打印信息3.5 Predicate接口3.6 练习:集合信息筛选3.7 Function接口3.8 练习:自定义函数模型拼接1.函数式接口1.1概念函数式接口在Java中是指:有且仅原创 2020-12-12 15:54:50 · 280 阅读 · 0 评论 -
《Java手写系列》-纯手写数据库连接池
1.数据库连接池原理1.1.基本原理在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。1.2.连接池作用①资源重用由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性能开销。在减少系统消耗的基础上,增进了系统环境的平稳性(减少内存碎片以级数据库临时进程、线原创 2020-10-28 14:50:43 · 1309 阅读 · 2 评论 -
《Java手写系列》-源码专题-手写SpringAop
1.AOP回顾1.1.AOP的概念AOP(Aspect Oriented Programming)是面向切面编程。是OOP面向对象编程思想的一种补充。OOP通过继承,封装,多态等概念构建一个对象的层级结构。构建的是一个纵向的关系。面对横向的问题,实现起来比较复杂,比如日志的输出。使用面向对象的思想,每个类都需要增加日志打印的相关代码。但是使用aop就可以很简单的解决这个问题。aop将影响了多个类的公共行为(如日志打印)封装为一个可重用模块,定义为一个切面(aspect)。切面中包括切入点,通知,连接原创 2020-10-01 19:05:02 · 396 阅读 · 0 评论 -
《Java手写系列》-源码专题-手写SpringIoc
Spring框架 作为一个轻量级的开源框架不仅给我们的开发工作带来了许多便利,同时也为众多开源框架的研究提供了不可或缺的指导思想。Spring最为核心的两大功能特性就是IOC和AOP.下面主要介绍SpringIOC及自己实现SpringIOC1.SpringIOCSpringIOC 指的是控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们可配置的文件。.原创 2020-10-01 13:45:15 · 346 阅读 · 3 评论