自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小工匠

show me the code ,change the world

  • 博客(1440)
  • 资源 (12)
  • 收藏
  • 关注

原创 小工匠聊架构文章一览【不间断持续更新】

文章目录超高并发设计技术杂谈超高并发设计小工匠聊架构-超高并发秒杀系统设计 01_总体原则和架构演进小工匠聊架构-超高并发秒杀系统设计 02_数据的动静分离小工匠聊架构-超高并发秒杀系统设计 03_热点数据的处理小工匠聊架构-超高并发秒杀系统设计 04_流量削峰设计小工匠聊架构-超高并发秒杀系统设计 05_服务端性能优化小工匠聊架构-超高并发秒杀系统设计 06_数据一致性小工匠聊架构-超高并发秒杀系统设计 07_Plan B 的设计技术杂谈小工匠聊架构-写给研发工程师的全链路压测小

2020-11-12 00:01:55 12109 6

原创 Spring - DisposableBean扩展接口

Spring Boot - 扩展接口一览扩展点只有一个方法,触发时机为当此对象销毁时,会自动执行该方法。比如说运行时,就会触发这个方法。当Spring容器销毁时,会将容器中的所有单例bean先全部销。调用链如下:继续继续 重点调用bean的封装类方法总结一下:先从对象中获取当前bean对象转化成对象,然后直接调用方法;然后再通过反射调用bean配置的方法

2022-12-08 06:30:00 156 1

原创 Spring Boot - ApplicationRunner && CommandLineRunner扩展接口

Spring Boot - 扩展接口一览接口也只有一个方法:如果有多个,可以利用@Order来进行排序, 按照中的value值从小到大依次执行。触发时机为整个项目启动完毕后(执行时机为容器启动完成的时候),自动执行。扩展此接口,进行启动项目之后一些业务的预处理。继续 核心方法 OK, CLEARCommandLineRunner

2022-12-07 21:21:07 156

原创 Spring - SmartInitializingSingleton扩展接口

Spring Boot - 扩展接口一览触发时机只有一个方法,其作用是是 在spring容器管理的所有单例对象(非懒加载对象)初始化完成之后调用的回调接口。其触发时机为之后。可以扩展此接口在对所有单例对象初始化完毕后,做一些后置的业务处理在Spring容器启动时,会调用方法;重点看 继续继续扩展示例

2022-12-07 06:45:00 142

原创 Spring - FactoryBean扩展实战_MyBatis-Spring 启动过程源码解读

Spring Boot - 扩展接口一览Spring - FactoryBean扩展接口Spring-Spring整合MyBatis详解MyBatis的启动过程包含了一系列核心对象的创建,而这个过程涉及到对配置文件的读取和处理 。MyBatis 也专门提供了一个 MyBatis-Spring 组件来完成与 Spring 框架的集成。对于 MyBatis-Spring 而言,它的启动过程构建在 MyBatis 的启动过程基础之上,融合了 Spring 框架的功能特性。因此了解Spring的扩展点是非常重要的。

2022-12-06 22:00:00 472

原创 Spring - FactoryBean扩展接口

Spring Boot - 扩展接口一览一般情况下,Spring通过反射机制利用bean的class属性指定支线类去实例化bean,在某些情况下,实例化Bean过程比较复杂,如果按照传统的方式,则需要在bean中提供大量的配置信息。配置方式的灵活性是受限的,这时采用编码的方式可能会得到一个简单的方案。Spring为此提供了一个的工厂类接口,用户可以通过实现该接口定制实例化Bean的逻辑。接口对于Spring框架来说占用重要的地位,Spring自身就提供了70多个的实现。隐藏了实例化一些复杂bean的细节,

2022-12-06 07:00:00 401

原创 Spring - InitializingBean扩展接口

Spring Boot - 扩展接口一览InitializingBean接口为bean提供了初始化方法的方式,只有方法。凡是实现该接口的类,在初始化bean的时候都会执行该方法。这个扩展点的触发时机在之前使用场景举例: 实现此接口来进行系统启动的时候一些业务指标的初始化工作。我们直接继续

2022-12-05 20:00:00 216 1

原创 Spring - @PostConstruct 源码解析

Spring Boot - 扩展接口一览严格意义上来说这个并不算一个扩展点,其实就是一个标注。其作用是在bean的初始化阶段,如果对一个方法标注了@PostConstruct,会先调用这个方法。触发时机是在之后之前。带着这个疑问: 为什么@PostConstruct注解的方法会在程序启动的时候执行?源码面前,了无秘密。结合对Spring生命周期的理解, bean的创建过程,我们可以推测@PostConstruct方法将在最后生成Bean的时候被调用。我们从 开始看包含了创建一个Bean的核心逻辑,

2022-12-05 07:00:00 766

原创 Spring - BeanNameAware扩展接口

bean的初始化之前,也就是postProcessBeforeInitialization之前,这个类的触发点方法只有一个:setBeanName使用场景为:用户可以扩展这个点,在初始化bean之前拿到spring容器中注册的的beanName,来自行修改这个be触发点在bean的初始化之前,也就是之前,这个类的触发点方法只有一个:使用场景为:用户可以扩展这个点,在初始化bean之前拿到spring容器中注册的的beanName,来自行修改这个beanName的值。扩展示例比较简单,随便写一个吧

2022-12-04 23:45:00 274

原创 Spring - ApplicationContextAwareProcessor扩展接口

Spring Boot - 扩展接口一览 本身并没有扩展点,但是该类内部却有6个扩展点可供实现 ,这些类触发的时机在bean实例化之后,初始化之前.5.3.2版本:用于获取EnviromentAware的一个扩展类,这个变量非常有用, 可以获得系统内的所有参数。个人认为这个Aware没必要去扩展,因为spring内部都可以通过注入的方式来直接获得。:用于获取StringValueResolver的一个扩展类, StringValueResolver用于获取基于String类型的properties

2022-12-04 19:09:56 812 1

原创 Spring - BeanFactoryAware扩展接口

Spring Boot - 扩展接口一览扩展点方法为,可以拿到这个属性。使用场景:可以在bean实例化之后,但还未初始化之前,拿到 ,在这个时候,可以对每个bean进行特殊化的定制。也或者可以把拿到进行缓存,日后使用。Spring web内建的Aware接口Spring其它内建Aware接口Spring内建Aware接口的执行时机及顺序Aware接口的执行时机肯定是在Spring Bean创建的时候。对于Aware接口的执行实现主要有一下两种模式进入到我们继续看下 可知App

2022-12-04 11:32:33 523

原创 Spring - SmartInstantiationAwareBeanPostProcessor扩展接口

determineCandidateConstructors:该触发点发生在postProcessBeforeInstantiation之后,用该扩展接口有3个触发点方法举个例子加载aa,提前将singleton露出去,这个时候只没有被调用; 因为没有出现循环引用的情况,现在放入缓存是为了预防有循环引用的情况可以通过这个取对象;源码调用的地方如下继续看 紧接着 属性填充在填充属性的时候发现引用了b;然后就去获取bb来填充 , 重复刚才的动作,然后直接调用getSingleton获取扩展示例

2022-12-03 23:54:45 326

原创 Spring - InstantiationAwareBeanPostProcessor 扩展接口

(1)实例化: 实例化的过程是一个创建Beang过程,即调用Bean构造函数,单例的Bean入单例池中。(2)初始化: 初始化的过程是一个赋值的过程,即调用Beansetter,设置Bean属性。接口在此基础上增加了3个方法,使得扩展接口可以扩大到实例化阶段和属性注入阶段。接口只在bean的初始化阶段进行扩展(注入spring上下文前后),而。接口 , 从方法上我们也可以看出。作用于过程(1)实例化前后;用于过程(2)初始化前后。按调用顺序,我们来看一下。

2022-11-27 23:45:00 1133 6

原创 Spring - BeanPostProcessors 扩展接口

如果接囗的实现类被注册到ioc容器,那么该容器的每个Bean在调用初始化方法之前,都会获得该接口实现类的一个回调。要使用BeanPostProcessord回调,就必须先在容器中注册实现该接口的类,那么如何注册呢?若使用,则必须要显示的调用其方法进行注册,参数为BeanPostProcessor现类的实例;使用,那么容器会在配置文件在中自动寻找实现了 口的Bean,然后自动注册,我们只需要配置个现类的Bean可以了。多个的实现类,只要实现接口,设置order属性就可

2022-11-27 22:09:30 1129

原创 Spring - BeanFactoryPostProcessor 扩展接口

找出所有实现了BeanDefinitionRegistryPostProcessor接口和PriorityOrdered接口的bean,放入registryProcessors集合,根据PriorityOrdered接口来排序,然后这些bean会被。在实例化之前,spring允许我们通过自定义扩展来改变bean的定义,定义一旦变了,后面的实例也就变了,而beanFactory后置处理器BeanFactoryPostProcessor就是用来改变bean定义的。接口的bean,都被作为入参,然后调用了。

2022-11-27 17:02:36 1855 1

原创 Spring - BeanDefinitionRegistryPostProcessor 扩展接口 动态注册bean

BeanDefinitionRegistryPostProcessork可以在加载到项目中的beanDefinition之后执行,提供一个补充的扩展点。举个例子: 动态注册自己的beanDefinition,加载classpath之外的bean

2022-11-27 10:50:38 930

原创 Spring - ApplicationContextInitializer 扩展接口

该接口是整个spring容器在刷新之前初始化ConfigurableApplicationContext的回调接口,即在容器刷新之前会调用该类的initialize方法。实现这个接口可以在整个spring容器还没被初始化之前搞事情。在spring.factories中加入。

2022-11-27 08:15:00 1167 1

原创 Spring Boot - 扩展接口一览

扩展接口

2022-11-27 07:00:00 935

原创 Spring Boot - 花式加载配置文件

Spring Boot 花式加载配置文件

2022-11-26 23:15:00 944

原创 Nginx - 使用Nginx实现数据采集的构想

整体流程:Nginx提供一个post埋点接口,如:http://xxxx/requestlog接收前端埋点请求,将post请求body写入本地日志文件,直接响应返回。后端以异步方式,使用采集代理程序监听日志文件,并将数据推送到kafka。程序对kafka数据统计分析,形成结果数据提供给上层应用使用

2022-11-26 19:30:00 1377 1

原创 Linux - lsof显示 tcp,udp 的端口和进程

lsof(list open files)是一个列出当前系统打开文件的工具。lsof 需要访问核心内存和各种文件,需要以 root 用户的身份运行。

2022-11-24 23:00:00 1528 1

原创 Linux - netstat 查看系统端口占用和监听情况

netstat 命令用于显示各种网络相关信息,比如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 Multicast Memberships等等。

2022-11-24 21:30:00 1257

原创 Spring Cloud 微服务项目实战 -

Milestone 版本:在大版本正式发布前的里程碑版本,例如 2021.0.0-M1,M1 代表当前大版本的第一个里程碑版本,M2 代表第二个迭代里程碑,以此类推。使用模板的好处是可以对优惠券消费规则做一层抽象,比如满减类、打折类这些优惠券只是具体的优惠金额不同,但是玩法类似,把相类似的玩法功能抽象成一个模板,就可以简化具体优惠券的创建和核销流程。建议: 当框架有重大版本更新时,建议你先按兵不动,等大版本做了一两次迭代之后,明显的 Bug 修复得差不多了了,再应用到项目中也不迟。

2022-11-15 07:45:00 2208 1

原创 Shell - Linxu磁盘分区可用性检测

遍历所有挂载点,进行读写测试即可。

2022-11-14 23:45:00 1456

原创 每日一博 - pom文件灰化的处理方式

File–>Settings 查找 maven,将Ignored Files 选中的pom 取消勾。搞了个nacos2.0.4的源码。

2022-11-09 21:30:00 1542

原创 软考 - 10 智能家居管理系统

基于上述需求,该公司组建了项目组,在项目会议上,张工给出了基于家庭网关的传统智能家居管理系统的设计思路,李工给出了基于云平台的智能家居系统的设计思路。请用400字以内的文字简要描述基于家庭网关的传统智能家居管理系统和基于云平台的智能家居管理系统在网关管理、数据处理和系统性能等方面的特点,以说明项目组选择李工设计思路的原因。请从下面给出的(a) ~ (j) 中进行选择,补充完善图5-1中空(1) ~ (6)处的内容,协助李工完成该系统的架构设计方案。,它没有TCP那些可靠的机制,所以在传递数据时非常快。

2022-10-30 23:45:00 1924

原创 软考 - 09 预约挂号管理系统

采用面向对象方法对预约挂号过程进行分析,得到如图2-2所示的顺序图,使用题干中给出的描述,完善图2-2中对象(1),及消息(2)~(4)的名称,将正确答案填在答题纸上,请简要说明在描述对象之间的动态交互关系时,协作图与顺序图存在哪些区别。(3)与动态模型的关系∶功能模型展示了动态模型中未定义的不可分解的动作和活动的定义,对象模型展示了是谁改变了状态和承受了操作。(1)与功能模型的关系∶对象模型展示了功能模型中的动作者、数据存储和流的结构,动态模型展示了执行加工的顺序。顺序图强调的是消息的时间次序。

2022-10-30 23:15:00 1928

原创 软考 - 07 机器学习应用开发平台

但事件触发者也并不知道哪些构件会被这些事件影响。请将合适的质量属性名称填入图1-1中(1)、(2)空白处,并从题干中的(a)-(i)中选择合适的质量属性描述,填入(3)-(6)空白处,完成该平台的效用树。通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。请针对平台的核心应用场景,从机器学习流程定义的灵活性和学习算法的可扩展性两个方面对三种架构风格进行对比与分析,并指出该平台更适合采用哪种架构风格。

2022-10-30 21:45:00 1857

原创 软考 - 08 数据库设计

该系统采用了Redis来实现某些特定功能(如当前热销药品排名等),同时将药品关系数据放到内存以提高商品查询的性能,但必然会造成Redis和MySQL的数据实时同步问题。3.使用阿里的同步工具canal,canal实现方式是模拟myslave和master的同步机制,监控DB bitlog的日志更新来触发缓存的更新。● 批处理维护是指对复制列或派生列的修改积累一定的时间后,运行一批处理作业或存储过程对复制或派生列进行修改,只能在对实时性要求不高的情况下使用。指增加的列来自其它表中的数据,由它们计算生成。

2022-10-30 09:47:21 1812

原创 软考 - 06 在线订餐管理系统

(3)食材采购:当快餐店某类食材低于特定数量时自动向供应商发起采购信息,包括食材类型和数量,供应商接收到采购信息后按照要求将食材送至快餐店并提交己采购的食材信息,系统自动更新食材库存。(1)在线订餐:己注册客户通过网络在线选择快餐店所提供的餐品种类和数量后提交订单,系统显示订单费用供客户确认,客户确认后支付订单所列各项费用。根据数据流图规范和订餐管理系统功能说明,请说明在图2-1中需要补充哪些数据流可以构造出完整的0层数据流图。根据数据流图的含义,请说明数据流图和系统流程图之间有哪些方面的区别。

2022-10-29 23:30:00 2169

原创 软考 - 05 信息物理系统(Cyber Physical Systems, CPS)

在宇航领域的CPS系统中,不同层面上都会存在一定的安全威胁。王工在提交的战略规划中指出:飞行器中的电子设备是一个大型分布式系统,其传感器、控制器和采集器分布在飞机各个部位,相互间采用高速总线互连,实现子系统间的数据交换,而飞行员或地面指挥系统根据飞行数据的汇总决策飞行任务的执行。请参考图3-1给出的功能图,依据你所掌握的CPS知识,说明以下所列的功能分别属于CPS结构中的哪层,哪项功能不属于CPS任何一层。实现和物理进程的交互,使用网络化空间,以远程的.可靠的、实时的, 安全的协作的方式操控一个物理实体。

2022-10-29 23:15:00 2374

原创 软考 - 04 分布式缓存系统

运维团队发现在某些情况下,若大量的key设置了相同的失效时间,导致缓存在同一时刻众多key同时失效,或者瞬间产生对缓存系统不存在key的大量访问,或者缓存系统重启等原因,都会造成数据库服务器请求瞬时爆量,引起大量缓存更新操作,导致整个系统性能急剧下降,进而造成整个系统崩溃。缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的杳询,未在缓存系统中找到对应的key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。3.若key不在缓存中时,根据key。

2022-10-29 22:45:00 2221

原创 软考 - 03 物流车辆管理系统

面对系统需求,公司召开项目组讨论会议,制订系统设计方案,最终决定基于分布式架构设计实现该物流车辆管理系统,应用Kafka、Redis数据缓存等技术实现对物流车辆自身数据、业务数据进行快速、高效的处理。某公司拟开发一个物流车辆管理系统,该系统可支持各车辆实时位置监控、车辆历史轨迹管理、违规违章记录管理、车辆固定资产管理、随车备品及配件更换记录管理、车辆寿命管理等功能需求。该物流车辆管理系统需抵御常见的SQL注入攻击,请用200字以内的文字说明什么是SQL注入攻击,并列举出两种抵御SQL注入攻击的方式。

2022-10-29 22:00:00 2812

原创 软考 - 02 计算机组成与结构

计算机组成与结构

2022-10-29 08:09:25 2103

原创 软考 - 01 考试范围及知识点

系统规划、软件架构设计、设计模式、系统设计、系统建模、分布式系统设计、嵌入式系统设计、系统的可靠性分析与设计、系统的安全性和保密性设计。

2022-10-17 21:52:46 2593 1

原创 Spring Webflux - 03 Webflux编程模型

WebFlux有两种编程模型- 传统的 Annotated Controllers - 轻量的 Functional Endpoints Annotated Controllers 注释控制器 使用方式传统的MVC方式,允许返回Flux,Mono类型Functional Endpoints 启动非常快,占用内存少。适用小型项目,不然路由表非常复杂 > Spring MVC 和 Spring WebFlux 均能使用注解驱动 Controller,然而不同点在于并发模型和阻塞特性。>

2022-10-07 20:33:32 2458

原创 Spring Webflux - 02 Reactive介绍

大型系统由多个较小型的系统所构成, 因此整体效用取决于它们的构成部分的反应式属性。即时响应的系统专注于提供快速而一致的响应时间, 确立可靠的反馈上限, 以提供一致的服务质量。它们对系统的失败 也更加的包容, 而当失败确实发生时, 它们的应对方案会是得体处理而非混乱无序。反应式系统具有高度的即时响应性, 为用户提供了高效的互动反馈。解决问题通过自定义线程池, 但线程池中执行业务的时候也是同步阻塞的,比如 查询数据库 或者是调用第三方的API。在有限的资源内,做更多的功能,这就是webflux要解决的问题。

2022-10-07 10:08:45 2611

原创 Spring Webflux - 01 MVC的困境

Filter/Servlet在生成响应之前可能要等待一些资源的响应以完成请求处理,比如一个jdbc查询,或者远程服务rpc调用。Servlet 3.0引入了异步处理请求的能力,使得线程可以不用阻塞等待,提早返回到容器,从而执行更多的任务请求。虽然我们可以扩大线程数量,但线程是要消耗操作系统资源的,也并非越多越好,当然了还有其他很多影响因素。再深入想一下,如果每个线程的执行时间是不可控的,而Tomcat线程池中的线程数量是有限的…是一个低效的操作,这将导致受限系统资源急剧紧张,比如线程数、连接数等等。

2022-10-06 21:47:12 3155 2

原创 重识Nginx - 18 网络收发与Nginx事件间的对应关系

Nginx是一个事件驱动的框架, 所谓事件即网络事件。Nginx每个连接自然对应两个网络事件,即 读事件和写事件。要想理解Nginx的原理,以及Nginx再各种极端场景下的处理时,就必须要先了解网络事件。

2022-10-05 10:16:50 3981

原创 重识Nginx - 17 Nginx支持的信号说明

说明: linux 的 kill 命令是向进程发送信号,kill 不是杀死的意思,-9 表示无条件退出,但由进程自行决定是否退出,这就是为什么 kill -9 终止不了系统进程和守护进程的原因。Linux kill 命令用于删除执行中的程序或工作。kill 可将指定的信息送至程序。

2022-10-05 09:00:00 2625

X86-NFS rpm包

gssproxy-0.7.0-21.el7.x86_64.rpm keyutils- libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config libnfsidmap libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind tcp_wrappers

2020-11-24

中标龙芯-MIPS- NFS rpm包

gssproxy-0.7.0-4.ns7_4.mips64 keyutils-1.5.8-3. libbasicobjects-0 libcollection-0.6 libevent-2.0.21-4 libini_config-1.3 libnfsidmap-0.25- libpath_utils-0.2 libref_array-0.1. libtirpc-0.2.4-0. libverto-libeventm nfs-utils-1.3.0-0m quota-4.01-14.ns7 quota-nls-4.01-14 rpcbind-0.2.0-42. tcp_wrappers-7.6

2020-11-24

mybatisSource.zip

MyBatis源码功能演示环境 ,演示MyBatis的Executor 、StatementHandler 、 SQL映射、对象转换 等核心功能

2020-06-14

apache-tomcat-8.5.50-src.zip

Tomcat启动流程分析 组件的生命周期管理 用Lifecycle管理启动、停止、关闭 Lifecycle接口预览 几个核心方法 Server中的init方法示例 为啥StandardServer没有init方法 LifecycleBase中的init与initInternal方法 为什么这么设计? 分析Tomcat请求过程 链接器(Connector)与容器(Container) 解耦 Connector设计 监听服务端口,读取来自客户端的请求 将请求数据按照指定协议进行解析 根据请求地址匹配正确的容器进行处理 将响应返回客户端 Container设计 Servlet容器的实现。

2020-06-02

「Tomcat源码剖析」.pdf

Tomcat源码剖析 : 整体架构 层层分析 源码解析 架构分析 (Http服务器功能:Socket通信(TCP/IP)、解析Http报文 Servlet容器功能:有很多Servlet(自带系统级Servlet+自定义Servlet),Servlet处理具体的业务逻辑)

2020-06-01

Jest-5.3.4.zip

Jest是Elasticsearch 的Java Http Rest 客户端。 ElasticSearch已经具备应用于Elasticsearch内部的java API,但是Jest弥补了ES自有API缺少Elasticsearch Http Rest接口客户端的不足。 Jest 配置ES 集群 示例代码 及源码解读 - 核心原理 - NodeChecker源码解读 -

2020-01-19

MQ对比:Kafka VS Rocketmq VS Rabbitmq.pdf

MQ对比:Kafka VS Rocketmq VS Rabbitmq 超详细 ,值的收藏,参考资料

2019-11-04

elasticsearch-analysis-ik-6.4.1.zip

修改ik分词器源码,支持从mysql中每隔一定时间,自动加载新的词库

2019-08-20

Nginx1.14.2 + zlib + pcre + openssl

1. nginx 主软件 和 3个依赖包 zlib + pcre + openssl

2019-03-12

Spring4CachingAnnotationsExample

Spring4CachingAnnotationsExample的示例,通过Java注解的方式整合EhCache框架

2017-10-04

ORACLE_AWR报告详细分析

ORACLE_AWR报告详细分析

2016-09-28

Java反编译工具

jd-gui.exe使用C++开发,主要具有以下功能: 一、支持众多Java编译器的反编译; 二、支持对整个Jar文件进行反编译,并本源代码可直接点击进行相关代码的跳转;

2015-06-04

空空如也

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

TA关注的人

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