首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏田飞雨的专栏

    kube-scheduler 源码分析

    () scheduleResult, err := sched.schedule(pod, pluginContext) if err ! *framework.PluginContext) (core.ScheduleResult, error) { result, err := sched.Algorithm.Schedule (pod, pluginContext) if err ! ) (scheduleResult ScheduleResult, err error) Preempt(*framework.PluginContext, *v1.Pod, error) (selectedNode *framework.PluginContext) (result ScheduleResult, err error) { ...... // 1.检查 pod pvc if

    1.6K10发布于 2019-12-18
  • 来自专栏田飞雨的专栏

    kube-scheduler 源码分析

    () scheduleResult, err := sched.schedule(pod, pluginContext) if err ! *framework.PluginContext) (core.ScheduleResult, error) { result, err := sched.Algorithm.Schedule (pod, pluginContext) if err ! ) (scheduleResult ScheduleResult, err error) Preempt(*framework.PluginContext, *v1.Pod, error) (selectedNode *framework.PluginContext) (result ScheduleResult, err error) { ...... // 1.检查 pod pvc if

    72700发布于 2019-12-15
  • 来自专栏鸿蒙开发笔记

    HarmonyOS 开发实践 —— 基于hvigor插件定制构建

    hvigorfile.ts文件中只需定义一个pluginId(任务Id)和name(任务名称),并实现其中的run方法,即可创建一个任务,然后当前node节点添加插件并执行插件的apply方法,然后调用接口pluginContext : string) {  return {    pluginId: 'CustomPluginID1',    apply(pluginContext) {      //注册自定义任务 接口pluginContext 方法registerTask      pluginContext.registerTask({        // 编写自定义任务        name: 'customTask1',        : string) {  return {    pluginId: 'CustomPluginID2',    apply(pluginContext) {      pluginContext.registerTask : string) {  return {    pluginId: 'CustomPluginID3',    apply(pluginContext) {      pluginContext.registerTask

    65420编辑于 2024-11-24
  • 来自专栏全栈程序员必看

    ctk加载插件「建议收藏」

    framework: ") << Exception.what(); return 1; } //install plugin ctkPluginContext* pluginContext = framework->getPluginContext(); QSharedPointer<ctkPlugin> Plugin = pluginContext->installPlugin { std::cout << "Error in " << pluginSymbolicName << std::endl; return UNKNOW_EXCEPTION; } 获取pluginContext

    1K30编辑于 2022-09-06
  • 来自专栏田飞雨的专栏

    kube-scheduler 优先级与抢占机制源码分析

    scheduleResult, err := sched.schedule(pod, pluginContext) // predicates 算法和 priorities 算法执行失败 // 执行抢占机制 preemptionStartTime := time.Now() sched.preempt(pluginContext k8s.io/kubernetes/pkg/scheduler/scheduler.go:352 func (sched *Scheduler) preempt(pluginContext *framework.PluginContext ", err } // 执行抢占算法 node, victims, nominatedPodsToClear, err := sched.Algorithm.Preempt(pluginContext *framework.PluginContext, pod *v1.Pod, scheduleErr error) (*v1.Node, []*v1.Pod, []*v1.Pod, error) {

    90900发布于 2019-12-15
  • 来自专栏机器人课程与技术

    ROS 2 Humble Hawksbill 图形工具 rqt

    qt_gui.composite_plugin_provider import CompositePluginProvider import rclpy from rqt_gui.ros2_plugin_context import Ros2PluginContext _init_node() ros_plugin_context = Ros2PluginContext(handler=plugin_context. rclcpp::shutdown(); } } void* RosCppPluginProvider::load(const QString& plugin_id, qt_gui_cpp::PluginContext plugin_context); } qt_gui_cpp::Plugin* RosCppPluginProvider::load_plugin(const QString& plugin_id, qt_gui_cpp::PluginContext

    96730编辑于 2022-05-28
  • 来自专栏vue3源码

    通过debug搞清楚.vue文件怎么变成.js文件

    const { code: scriptCode, map: scriptMap } = await genScriptCode( descriptor, options, pluginContext async function genScriptCode(descriptor, options, pluginContext, ssr, customElement) { let scriptCode ({ code: templateCode, map: templateMap } = await genTemplateCode( descriptor, options, pluginContext , ssr, customElement) { const result = compile( code, descriptor, options, pluginContext async function transformStyle(code, descriptor, index, options, pluginContext, filename) { const block

    97210编辑于 2024-04-24
  • 来自专栏田飞雨的专栏

    kube-scheduler predicates 与 priorities 调度算法源码分析

    *framework.PluginContext) (result ScheduleResult, err error) { ...... // 执行 predicates 策略 filteredNodes, failedPredicateMap, filteredNodesStatuses, err := g.findNodesThatFit(pluginContext, pod /kubernetes/pkg/scheduler/core/generic_scheduler.go:464 func (g *genericScheduler) findNodesThatFit(pluginContext *framework.PluginContext, pod *v1.Pod) ([]*v1.Node, FailedPredicateMap, framework.NodeToStatusMap, error } } // 4.执行 Filter Plugin status = g.framework.RunFilterPlugins(pluginContext

    1.4K00发布于 2019-12-15
  • 来自专栏田飞雨的专栏

    kube-scheduler 优先级与抢占机制源码分析

    scheduleResult, err := sched.schedule(pod, pluginContext) // predicates 算法和 priorities 算法执行失败 // 执行抢占机制 preemptionStartTime := time.Now() sched.preempt(pluginContext k8s.io/kubernetes/pkg/scheduler/scheduler.go:352 func (sched *Scheduler) preempt(pluginContext *framework.PluginContext ", err } // 执行抢占算法 node, victims, nominatedPodsToClear, err := sched.Algorithm.Preempt(pluginContext *framework.PluginContext, pod *v1.Pod, scheduleErr error) (*v1.Node, []*v1.Pod, []*v1.Pod, error) {

    98311发布于 2019-12-20
  • 来自专栏田飞雨的专栏

    kube-scheduler predicates 与 priorities 调度算法源码分析

    *framework.PluginContext) (result ScheduleResult, err error) { ...... // 执行 predicates 策略 filteredNodes, failedPredicateMap, filteredNodesStatuses, err := g.findNodesThatFit(pluginContext kubernetes/pkg/scheduler/core/generic_scheduler.go:464 func (g *genericScheduler) findNodesThatFit(pluginContext *framework.PluginContext, pod *v1.Pod) ([]*v1.Node, FailedPredicateMap, framework.NodeToStatusMap, error } } // 4.执行 Filter Plugin status = g.framework.RunFilterPlugins(pluginContext

    62540发布于 2019-12-19
  • 来自专栏k8s技术圈

    使用 WebAssembly 对 Istio 进行扩展

    { return &pluginContext{} } type pluginContext struct { // 嵌入默认的插件上下文,这样我们就不需要重新实现所有方法 types.DefaultPluginContext func (ctx *pluginContext) NewHttpContext(contextID uint32) types.HttpContext { return &httpRegex{ contextID: contextID, pluginContext: ctx, } } // OnPluginStart 在插件被加载时调用。 contextID uint32 pluginContext *pluginContext } // OnHttpResponseHeaders 在收到 HTTP 响应头时调用。 proxywasm.SetVMContext(&vmContext{}) } 在上面的代码中,我们主要关注 pluginContext 和 httpRegex 这两个结构体,其中 pluginContext

    1.3K10编辑于 2023-12-12
  • 来自专栏小豪成长日记

    原来rollup这么简单之插件篇

    , id], // source.code 和 模块id transformReducer, // 第四个参数是一个函数,用来声明某些钩子上下文中需要的方法 (pluginContext ); return { ...pluginContext, cache: trackedPluginCache ? trackedPluginCache.cache : pluginContext.cache, warn(warning: RollupWarning | string, warning.id = id; warning.hook = 'transform'; pluginContext.warn err.id = id; err.hook = 'transform'; return pluginContext.error

    51420编辑于 2023-10-22
  • 来自专栏Android进阶编程

    Android 插件化实现原理解析

    ,把pluginResources设置到pluginContext中去 //我们这创造的这个context ,是个 ContextThemeWrapper ,导入的包是android x 下的 ContextThemeWrapper pluginContext = new ContextThemeWrapper(getBaseContext(),0); Class classname = pluginContext.getClass(); try { Field field = classname.getDeclaredField ("mResources"); field.setAccessible(true); field.set(pluginContext, pluginResources 创造view View view = LayoutInflater.from(pluginContext).inflate(R.layout.activity_main, null);

    84330编辑于 2023-04-27
  • 来自专栏码农小余

    PluginContainer,管理你的 vite 插件

    : object | null }) { // ... } // 插件上下文插件,实现了 rollup 插件的接口 class Context implements PluginContext container } 直接看上面的代码逻辑非常清晰,定义了 Context 和 TransformContext 两个类,TransformContext 是 Context 的子类,Context 实现了 PluginContext PluginContext 是从 rollup 包导入的。所以 vite 的插件跟 rollup 的插件基本一致,但也不是完全兼容。 ssr // 创建函数执行上下文,根据上图 Context 是 Vite 继承于 rollup 的 PluginContext const ctx = new Context() ctx.ssr MinimalPluginContext 直接复用 rollup,Context 复用了 rollup 的 PluginContext 的绝大部分能力,但是也有不兼容的情况,比如 emitFile、setAssetSource

    1.4K10编辑于 2022-06-16
  • 来自专栏深入理解Android

    Android插件化浅析

    //点击插件,加载资源 //资源需要通过资源加载器进行加载--context //记住是plugin的context //1.获取插件的上下文 Context pluginContext = findPluginContext(position); //2.从插件上下文加载资源 int resId = findResoucesId(pluginContext, position = 0) { Drawable drawable = pluginContext.getResources().getDrawable(resId); mRelativeLayout.setBackgroundDrawable 里面逻辑就是通过反射机制,使用插件的Context来获取R.java文件下的静态类drawable,返回插件应用里的图片id,代码如下: private int findResoucesId(Context pluginContext , int position) { //使用反射机制 ClassLoader classLoader = new PathClassLoader(pluginContext.getPackageResourcePath

    81420编辑于 2022-06-22
  • 来自专栏俞其荣的博客

    插件化框架android-pluginmgr全解析

    对象,PluginContext 类继承自 LayoutInflaterProxyContext ,里面封装了一些插件的信息,比如有插件资源、插件 ClassLoader 等。 值得一提的是,在插件中 PluginContext 可以得到“宿主”的 Context ,也就是所谓的“破壳”。具体可查看 PluginContext 的源码。 = null) { //初始化插件Activity Context baseContext = activity.getBaseContext(); PluginContext pluginContext = new PluginContext(baseContext, currentPlugin); try { try { //在许多设备上,Activity自身hold资源 Reflect.on(activity).set("mResources", pluginContext.getResources

    1.5K30编辑于 2022-07-28
  • 来自专栏瓜农老梁

    Mesh9# 使用wasm上报envoy埋点信息

    types.DefaultVMContext } // Override types.DefaultVMContext. func (*vmContext) NewPluginContext(contextID uint32) types.PluginContext { return &pluginContext{contextID: contextID} } type pluginContext struct { // Embed the default contextID uint32 // callBack func(numHeaders, bodySize, numTrailers int) cnt int } func (*pluginContext types.HttpContext { return &types.DefaultHttpContext{} } // Override types.DefaultPluginContext. func (ctx *pluginContext tickMilliseconds) return types.OnPluginStartStatusOK } // Override types.DefaultPluginContext. func (ctx *pluginContext

    1.4K40编辑于 2021-12-21
  • 来自专栏gopher云原生

    Traefik Plugins 全面解析

    string]LocalDescriptor) (*Builder, error) { pb := &Builder{ middlewareDescriptors: map[string]pluginContext {}, // 中间件类型插件包名:插件实例 providerDescriptors: map[string]pluginContext{}, // 提供者类型插件包名:插件实例 } manifest.Type { case "middleware": // 将 middleware 类型插件放置到这里 pb.middlewareDescriptors[pName] = pluginContext manifest.BasePkg, } case "provider": // 将 provider 类型插件放置到这里 pb.providerDescriptors[pName] = pluginContext pkg/plugins/middlewares.go 的 40 行,同样是使用解释器执行插件的 CreateConfig 和 New 函数: func newMiddleware(descriptor pluginContext

    2.4K20发布于 2021-10-18
  • 来自专栏胡琦

    2019年写个CS插件吧

    Manager'; // 引入React import * as React from 'react'; // 引入相关API的类和函数 import { actions, PluginContext , appRegistry } from 'cloudstudio'; // 初始化插件上下文 const context = new PluginContext({}); / JSON.stringify(after)) } index.jsx注册插件: import Manager from 'webide-plugin-sdk/Manager'; import { actions, PluginContext /snippets.json'; const context = new PluginContext({}); // 插件唯一 key // 一定要确保代码中 pluginKey 的唯一性,推荐使用

    1.2K40发布于 2021-09-09
  • 来自专栏全栈程序员必看

    基于Proxy思想的Android插件框架

    classLoader) { mProxy = true; mProxyActivity = context; mPluginContext = new PluginContext classLoader, PackageInfo packageInfo) { mProxy = true; mProxyActivity = context; mContext = new PluginContext (context, 0, mApkFilePath, mDexClassLoader); attachBaseContext(mContext); } PluginContext中通过重载getAssets 来实现包括插件apk查找路径的Context: public PluginContext(Context base, int themeres, String apkPath, ClassLoader

    45500编辑于 2022-07-08
领券