
源码
文章平均质量分 97
Munger6
这个作者很懒,什么都没留下…
展开
-
Cpu运作原理与机制,那么CPU如何跑的更快?
前言代码都是由 CPU 跑起来的,我们代码写的好与坏就决定了 CPU 的执行效率,特别是在编写计算密集型的程序,更要注重 CPU 的执行效率,否则将会大大影响系统性能。CPU 内部嵌入了 CPU Cache(高速缓存),它的存储容量很小,但是离 CPU 核心很近,所以缓存的读写速度是极快的,那么如果 CPU 运算时,直接从 CPU Cache 读取数据,而不是从内存的话,运算速度就会很快。但是,大多数人不知道 CPU Cache 的运行机制,以至于不知道如何才能够写出能够配合 CPU Cache转载 2020-10-19 14:59:40 · 946 阅读 · 1 评论 -
FactoryBean与BeanFactory 区别
BeanFactory是接口,提供了OC容器最基本的形式,给具体的IOC容器的实现提供了规范, FactoryBean也是接口,为IOC容器中Bean的实现提供了更加灵活的方式,FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式(如果想了解装饰模式参考:修饰者模式(装饰者模式,Decoration)我们可以在getObject()方法中灵活配置。其实在Spring源码中有很多FactoryBean的实现类.区别:BeanFacto...转载 2020-08-20 14:57:27 · 827 阅读 · 0 评论 -
Spring中有哪些扩展的地方
spring初始化的扩展点https://www.jianshu.com/p/397c15cbf34anvokeBeanFactoryPostProcessors(beanFactory)方法就是第一小节提到的BeanDefinitionRegistryPostProcessor和BeanFactoryPostProcessor的调用。invokeBeanFactoryPostProcessors方法的调用逻辑:如果beanFactory是BeanDefinitionRegistr.原创 2020-08-06 18:34:49 · 431 阅读 · 0 评论 -
Swagger自动生成API接口文档
spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口。这些接口不但会服务于传统的web端(b/s),也会服务于移动端。在实际开发过程中,这些接口还要提供给开发测试进行相关的白盒测试,那么势必存在如何在多人协作中共享和及时更新API开发接口文档的问题。假如你已经对传统的wiki文档共享方式所带来的弊端深恶痛绝,那么尝试一下Swagger2 方式,一定会让你有不一样的开发体验:功能丰富 :支持多种注解,自动生成接口文档界面转载 2020-07-17 10:48:50 · 1311 阅读 · 0 评论 -
@Bean注解详解
转载自:https://www.cnblogs.com/cxuanBlog/p/11179439.html@Bean 注解全解析目录 @Bean 基础声明 @Bean 基本构成及其使用 @Bean 注解与其他注解产生的火花 @Profile 注解 @Scope 注解 @Lazy 注解 @DependsOn 注解 @Primary 注解 随着SpringBoot的流行,基于注解式开发的热潮逐渐覆盖了基于XML纯配置的开发,而作为...转载 2020-07-17 10:28:56 · 12677 阅读 · 1 评论 -
Http请求封装的三进阶
系统与系统之间的交互往往会使用到http请求,而我们发起http请求过程繁琐;因此我们需要对Http请求进行封装以方便使用;最近项目中接触到了一个经常被其他项目调用的项目主体,研究其演进架构,将其精髓记录下来 首先我们来看一看最原始的Http请求的代码书写/** * http请求第一个版本(直接发起Http请求) * * @author hzm ${2020-06-20 17:57} */public class Http { /** * http请...原创 2020-07-10 17:24:52 · 1787 阅读 · 1 评论 -
设计模式-结构型模式亨元模式
享元模式和组合模式的应用场景含义: 是对象池的一种实现,类似于线程池,可以避免不停的创建和销毁多个对象,消耗性能;使用场景: 在系统有大量的相似对象,需要缓冲池的场景,一般会搭配工厂模式使用;现实案例: 房源渠道、全国社保联网、线程池;亨元的通用实现接口Shape定义亨元被外部调用的方法具体的亨元实现Circle实现接口Shape并实现自定义方法工厂类ShapeFactory 在调用getCircle() 的时候从维护的HashMap(circleMap)中根据主键获取唯一身份标识的原创 2020-05-26 16:47:48 · 283 阅读 · 0 评论 -
从源码分析Request结束生命周期的处理流程
最近在项目中遇到 由异步执行任务导致的Request中的请求入参对象被不同请求污染的多线程问题; 在同事的研究下,发现了一把Request 在源码层面是如何进行回收处理的;因此将其中涉及到的主要源码进行展示: 首先,根据源码断点我们发现Request采用了包装器模式,而最核心处理的Request是or...原创 2019-11-26 15:45:12 · 535 阅读 · 0 评论 -
CopyOnWriteArrayList源码与原理分析
1、CopyOnWriteArrayList简介 CopyOnWriteArrayList是线程安全的ArrayList,在读多写少的高并发场景中性能卓越,数据一致性遵循base原则,弱一致性,确保最终一致性;为了加深理解,我们先来梳理下ArrayList发展历史上的实现对比吧; ArrayList,线程不安全的,在并发环境下,在写线程在写数据的时候,基于fas...原创 2019-08-16 17:53:33 · 393 阅读 · 0 评论 -
ThreadLocal源码分析
1、ThreadLocal基本介绍 ThreadLocal即变量副本,在多线程中,每个线程保存一个线程的本地变量副本,在使用中各用各的,避免共享资源的竞争; 从这里我们可以了解到变量副本会给每个线程一个变量值,是一种时间换空间的方案; 同时因为每个线程之间的操作相互不同步,不共享;因此变量副本仅适用于每个线程独立操作的场景;比如:存放session这种特征值,模板...原创 2019-08-16 16:19:18 · 215 阅读 · 0 评论 -
CurrentHashMap源码分析
1、ConcurrentHashmap的由来 HashMap不是线程安全的,在多线程情况下会导致扩容出现循环链表,造成访问这个Entry的线程死循环,CPU接近100%; Hashtable,使用synchronized进行线程安全的控制,因为每次只有一个对象获取监视器锁,因此在高并发情况下,性能再次成为瓶颈。类似表锁; Concurren...原创 2019-08-14 19:29:11 · 1054 阅读 · 0 评论 -
EventBus轻量级发布订阅类库源码分析与实现
说明:EventBus是google-guava提供的消息发布-订阅类库,3个最核心的方法如下: 发布:即post(Object),发布事件到所有注册的订阅者,当事件被发布到所有订阅者后,这个方法就会返回成功,这个方法会忽略掉订阅者抛出的任何异常; 注册:即register(Object);注册对象中所有订阅者方法,这些方法都能收到事件。 解除注册:即unregi...翻译 2019-07-30 12:36:24 · 761 阅读 · 0 评论 -
SpringMVC设计原理与源码分析
1、SpringMvc调用的流程图:2、SpringMvc核心对象描述: ①DispatcherServlet为核心,负责请求的接受和处理及结果返回; ②HandlerMapping是url到Controller的映射组件,在容器初始化时按照Map<url, Controller>保存在容器中,从HandlerMapping中查找处理req...原创 2019-07-05 16:22:02 · 499 阅读 · 0 评论 -
Spring核心容器实现之 Bean实例化与依赖注入
1、依赖注入在何时发生? ①第一次调用getBean() IOC容器触发依赖注入 ②容器解析注册Bean定义时预实例化触发依赖注入2、依赖注入实现过程: 入口getBean()/*****实现类:AbstractBeanFactory # getBean() * 1,如果是单例模式:则首先从缓存中查找; 定义为原型则创建一个新的...原创 2019-06-28 18:55:16 · 960 阅读 · 0 评论