源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:https://farmer-hutao.github.io/k8s-source-code-analysis 本文大纲 概述 从 --config 开始 options.Option 对象 config.Config对象 runCommand ApplyFeatureGates 默认算法注册 特性开关…
本文大纲 预选流程 predicate的并发 一个node的predicate predicates的顺序 单个predicate执行过程 具体的predicate函数 本系列文章已经开源到github:https://github.com/farmer-hutao/k8s-source-code-analysis 1. 预选流程 predicate过程从pkg/scheduler/core/generic_scheduler.go:389 findNodesThatFit()方法就算正式开始了…
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:https://farmer-hutao.github.io/k8s-source-code-analysis 本文大纲 Pod priority preempt 入口 preempt 实现 SchedulingQueue FIFO PriorityQueue PodPreemptor xx.Algor…
本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/core/scheduler/scheduler-framework.html 本项目github地址:https://github.com/farmer-hutao/k8s-source-code-analysis 写在前面 调度器启动运行 一个pod的调度流程 潜入第三层前的一点逻辑 1. 写在前面 今天我们从pkg/scheduler/sche…
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:https://farmer-hutao.github.io/k8s-source-code-analysis 本文大纲 走近priority过程 PrioritizeNodes整体流程 Results Old Priority Function Map-Reduce Combine Scores Fu…
本文原始地址:https://farmer-hutao.github.io/k8s-source-code-analysis/core/scheduler/desigh.html github项目地址:https://github.com/farmer-hutao/k8s-source-code-analysis 1. 概述 我们先整体了解一下Scheduler的设计原理,然后再看这些过程是如何用代码实现的.关于调度器的设计在官网有介绍,我下面结合官网给的说明,简化掉不影响理解的复杂部分,和大家…
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:https://farmer-hutao.github.io/k8s-source-code-analysis 源码调试 概述 k8s环境 配置goland 写在后面 1. 概述 本节内容并不是在准备好k8s环境后就写的,大家也不需要在开始看源码前研究怎么调试代码.今天之前我已经发了<调度器优选过程>…
本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/core/scheduler/before-scheduler-run.html 本项目github地址:https://github.com/farmer-hutao/k8s-source-code-analysis 调度程序启动前逻辑 概述 cobra和main cobra是啥 使用cobra Scheduler的main 1. 概述 前面提到过…
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:https://farmer-hutao.github.io/k8s-source-code-analysis 本文已经重写,请看<Custom Controller 之 Informer> 本文大纲 概述 架构概览 SharedInformerFactory 同质的方法 ForResource()方…
要干嘛? 猪年新气象,今年开始,kubernetes源码分析系列文章主战场从微信公众号转至github,完全使用Markdown重写,使用gitbook生成web页面,支持在线阅读,导出pdf等各种玩法~ 欢迎大家和我一起完成这本书 后续每次更新github还是会同步在本公众号发布通知,另外除了kubernetes源码分析系列,其他内容暂时还是在公众号发布. 如何阅读这本书? 如上图所示,有一个url: https://farmer-hutao.github.io/k8s-source-code…
本文原始地址(gitbook格式):https://farmer-hutao.github.io/k8s-source-code-analysis/prepare/debug-environment.html 本项目github地址:https://github.com/farmer-hutao/k8s-source-code-analysis 1. 概述 大家注意哦,不一定要先搭建好环境再看源码,大可以先看一个组件,感觉差不多理解了,想要run一把,想要改几行试试的时候回过头来搭建k8s环境.…
各版本源码下载地址 http://maven.springframework.org/release/org/springframework/spring/…
spring framework 各版本源码下载地址 现在spring的源码下载地址真是不好找,这次终于找到了.记录一下,以帮助需要的朋友. https://github.com/spring-projects/spring-framework/tags可以选择需要的版本进行下载. 感谢网友 xiyuan1999 在csdn上提供的此下载地址.…
nginx1.17.2版本源码安装 原创: 沧海书生 Ansible爱好者 昨天 公众号里面的内容 这里简单测试了下 在x86的虚拟机里面编译安装 nginx 仅make make install nginx17.2的时间 配置E5-2630V2的CPU. 耗时 220s 在arm 四核飞腾1500A的PC机器上面4c8g的国产机器上面 同样的nginx17.2的 耗时 580s 注意 CPU是 飞腾FT1500A 设备是浪潮申泰DT3000-F 一:安装NGINX依赖项 1:PCRE - 支持…
Kafka 0.10.1版本源码 Idea编译 1.环境准备 Jdk 1.8 Scala 2.11.12:下载scala-2.11.12.msi并配置环境变量 Gradle 5.6.4: 下载Gradle-5.6.4并配置环境变量 2.配置文件修改 -gradle.properties文件中          scalaVersion=2.10.6 修改为 scalaVersion=2.11.12 -gradle/dependencies.gradle文件(如果安装的是2.11.8就不用改):…
百篇博客系列篇.本篇为: v09.xx 鸿蒙内核源码分析(调度故事篇) | 用故事说内核调度过程 | 51.c.h .o 前因后果相关篇为: v08.xx 鸿蒙内核源码分析(总目录) | 百万汉字注解 百篇博客分析 | 51.c.h .o v09.xx 鸿蒙内核源码分析(调度故事篇) | 用故事说内核调度过程 | 51.c.h .o v10.xx 鸿蒙内核源码分析(内存主奴篇) | 皇上和奴才如何相处 | 51.c.h .o v13.xx 鸿蒙内核源码分析(源码注释篇) | 鸿蒙必定成功,也必然…
百篇博客系列篇.本篇为: v07.xx 鸿蒙内核源码分析(调度机制篇) | 任务是如何被调度执行的 | 51.c.h .o 任务管理相关篇为: v03.xx 鸿蒙内核源码分析(时钟任务篇) | 触发调度谁的贡献最大 | 51.c.h .o v04.xx 鸿蒙内核源码分析(任务调度篇) | 任务是内核调度的单元 | 51.c.h .o v05.xx 鸿蒙内核源码分析(任务管理篇) | 任务池是如何管理的 | 51.c.h .o v06.xx 鸿蒙内核源码分析(调度队列篇) | 内核有多少个调度队列…
pyspider源码解读--调度器scheduler.py scheduler.py首先从pyspider的根目录下找到/pyspider/scheduler/scheduler.py其中定义了四个类:class Project(object)class Scheduler(object)class OneScheduler(Scheduler)class ThreadBaseScheduler(Scheduler)这四个类的作用分别如下: Project单个项目的Paused状态切换即是由这个…
1.简介 本篇文章是 AOP 源码分析系列文章的最后一篇文章,在前面的两篇文章中,我分别介绍了 Spring AOP 是如何为目标 bean 筛选合适的通知器,以及如何创建代理对象的过程.现在我们的得到了 bean 的代理对象,且通知也以合适的方式插在了目标方法的前后.接下来要做的事情,就是执行通知逻辑了.通知可能在目标方法前执行,也可能在目标方法后执行.具体的执行时机,取决于用户的配置.当目标方法被多个通知匹配到时,Spring 通过引入拦截器链来保证每个通知的正常执行.在本文中,我们将会通过…
Mybatis源码分析-解析器模块 原创-转载请说明出处 1. 解析器模块的作用 对XPath进行封装,为mybatis-config.xml配置文件以及映射文件提供支持 为处理动态 SQL 语句中的占位符提供支持 2. 解析器模块parsing包 3. 解析器模块parsing包 GenericTokenParser package-info.java ParsingException PropertyParser TokenHandler XNode XPathParser mybati-c…
一.GMP模型原理first: 1. 全局队列:存放待运行的G2. P的本地队列:同全局队列类似,存放待运行的G,存储的数量有限:256个,当创建新的G'时,G'优先加入到P的本地队列,如果队列已满,会把P本地队列中一半的G移动到全局队列3. M线程:M运行G需要先获取P,然后从P本地队列中取G运行,如果P本地队列为空,M会把全局队列中一批G移动到P本地队列或去其它P队列中偷一半G到P本地队列,M运行G,G执行完后,M会从P获取下一个G,不断重复执行4. P列表:所有的P都在程序启动时创建,并保…
前言 当api-server处理完一个pod的创建请求后,此时可以通过kubectl把pod get出来,但是pod的状态是Pending.在这个Pod能运行在节点上之前,它还需要经过scheduler的调度,为这个pod选择合适的节点运行.调度的整理流程如下图所示 本篇阅读源码版本1.19 调度的流程始于Scheduler的scheduleOne方法,它在Scheduler的Run方法里被定时调用 代码位于/pkg/scheduler/scheduler.go func (sched *Sch…
架构图 上图是我们要进行源码分析的2.1版本的整体架构图.其分为两大块,调度中心和执行器,本文先分析调度中心,也就是xxl-job-admin这个包的代码. 关键bean 在application.properties配置正确的数据库连接信息后,直接启动XxlJobAdminApplication即可. 配置类XxlJobAdminConfig,里面维护了一些调度中心端的配置数据. XxlJobScheduler这个组件实现了InitializingBean接口,所以spring容器在初始化的时…
本章简言 上一章讲到关于action代理类的工作.即是如何去找对应的action配置信息,并执行action类的实例.而这一章笔者将讲到在执行action需要用到的拦截器.为什么要讲拦截器呢?可以这样子讲吧.拦截器的应用是sturts2核心的亮点之一.如果不明白拦截器是什么的话,那么你相当于没有学习过struts2.笔者本来想直接讲这一章的知识点.可是又怕读者可能对拦截器没有一个概念化的理解.为什么这么讲呢?struts2在设计拦截器这一个部分的内容.在笔者看来事实是以AOP为核心思想来设计的.…
Quartz调度器的Misfire处理规则 调度器的启动和恢复中使用的misfire机制,还需细化! SimpleTrigger的misfire机制 默认的 Trigger.MISFIRE_INSTRUCTION_SMART_POLICY !!! trig.updateAfterMisfire(cal); getMisfireInstruction() ----> misfireInstruction == 0 --以当前时间为触发频率立即触发执行 SimpleScheduleBuilder s…
上一篇博客springMVC源码分析--HandlerInterceptor拦截器调用过程(二)中我们介绍了HandlerInterceptor的执行调用地方,最终HandlerInterceptor调用的地方是在HandlerExecutionChain中,接下来我们就介绍一下HandlerExecutionChain.HandlerExecutionChain有3个变量: Object handler:不做过多介绍,存储的对象是HandlerMethod HandlerInterceptor…
问题 (1)CopyOnWriteArraySet是用Map实现的吗? (2)CopyOnWriteArraySet是有序的吗? (3)CopyOnWriteArraySet是并发安全的吗? (4)CopyOnWriteArraySet以何种方式保证元素不重复? (5)如何比较两个Set中的元素是否完全一致? 简介 CopyOnWriteArraySet底层是使用CopyOnWriteArrayList存储元素的,所以它并不是使用Map来存储元素的. 但是,我们知道CopyOnWriteArra…
RecyclerView这个控件出来已经有一段时间了,如果看这篇文章的你,还没有使用过这个控件.那请先去学习怎样使用.不然看也白看.这里奉上一些关于介绍RecyclerView使用方法的优秀博客: 鸿洋大神的 Android RecyclerView 使用完全解析 体验艺术般的控件这篇文章详细介绍了RecyclerView的基本使用方法,没有用过的照着敲一遍应该就算是入门了. 鸿洋大神的 为RecyclerView打造通用Adapter 让RecyclerView更加好用这篇是鸿洋大神对Recy…
goroutine与线程 /* goroutine与线程1. 可增长的栈os线程一般都有固定的栈内存,通常为2MB,一个goroutine的在其声明周期开始时只有很小的栈(2KB),goroutine的栈是不固定的,它可以按需增大或缩小,goroutine的栈大小限制可以达到1GB,虽然极少会用到这么大,所以在go语言中一次创建十万左右的goroutine也是可以的2. goroutine的调度GPM是go语言运行时(runtime)层面的实现,是go语言自己实现的一套调度系统,区别于操作系统调…
目录 1 . 回调对象callbacks的演示 回调的使用有一点像事件绑定,先绑定好,等到有点击事件或者其他时就触发. <script src="js/jquery-2.0.3.js"></script> <script> function aaa(){ alert(1); } function bbb(){ alert(2); } function ccc(){ alert(3); } var cb=$.Callbacks(); cb.add(aa…