Vue设计模式到底多少种?
Vue设计模式到底多少种?
很多同学问,Vue到底有多少种设计模式??各个模式到底是什么意思??又各自适合什么场景??
这里我给大家直接说下,Vue的设计模式没有一个固定的数值,设计模式是解决特定问题的经验总结,并非固定清单。不同技术场景、项目复杂度会衍生出不同的模式组合。
那么在这里我给大家总结了9种
常用,或者面试过程中经常被提记的设计模式;
一、单例模式:全局状态管理
模式解释
标准解释:
单例模式
确保一个类只有一个实例
,并提供一个全局访问点
。在Vue中常用于全局状态管理,保证应用状态的可控性和一致性。
无脑解释:
单例模式就像是一个全村唯一的广播站”
“模式。想象一下,在一个小村子里,只有一个广播站能够发送消息,而且全村的人都能通过这个广播站接收到消息。这个广播站就是单例模式中的那个唯一实例
,它提供了全村人访问和获取信息的全局访问点
。
在Vue中,如果我们用单例模式来管理全局状态,就像是这个广播站负责播报村子里的各种重要事情,比如天气变化、节日活动安排等。这样,村子里的每个人(即Vue应用的各个组件)都能通过这个广播站(即单例模式的全局访问点)了解到最新的状态,而且保证了这个状态在全村(即整个Vue应用)中是一致的和可控的。
使用场景
- 用户登录状态管理
- 全局配置信息存储
- 应用主题切换控制
- 跨组件数据共享
代码示例(Vuex)
// store.js
import Vue from 'vue';
import Vuex from 'vuex';Vue.use(Vuex);export default new Vuex.Store({state: {count: 0},mutations: {increment(state) {state.count++;}},actions: {increment({ commit }) {commit('increment');}}
});// 在组件中使用
<template><div>{{ count }}</div><button @click="increment">Increment</button>
</template><script>
import { mapState, mapActions } from 'vuex';export default {computed: {...mapState(['count'])},methods: {...mapActions(['increment'])}
};
</script>
二、函数式组件
模式解释
无状态、无实例的组件实现方式,通过纯函数渲染视图,它们仅依赖于传入的props来渲染内容, 具有更高的渲染性能和更简洁的代码结构。
使用场景
- 静态展示型组件
- 高阶组件(HOC)
- 性能敏感型列表项
- 工具类展示组件
代码示例
// FunctionalComponent.vue
<template functional><div>{{ props.message }}</div>
</template><script>
export default {functional: true,props: {message: {type: String,required: true}}
};
</script>// 在父组件中使用
<template><FunctionalComponent message="Hello, World!" />
</template><script>
import FunctionalComponent from './FunctionalComponent.vue';export default {components: {FunctionalComponent}
};
</script>
三、组合模式:逻辑复用
模式解释
组合模式简单解释就是:一个页面比较复杂,需要好几个组件组合形成
这个页面;
即:组合模式允许你将对象组合成树形结构来表现“整体/部分”的层次结构。在Vue中,这通常通过组件的嵌套和组合来实现。
使用场景
- 复杂业务逻辑封装
- 跨组件功能复用
- 第三方库集成
- 表单验证逻辑
当你需要构建一个复杂的UI界面,且这个界面可以由多个小组件组合而成时,组合模式是一个有效的选择。
代码示例(组合式函数)
// ParentComponent.vue
<template><div><ChildComponent1 /><ChildComponent2 /></div>
</template><script>
import ChildComponent1 from './ChildComponent1.vue';
import ChildComponent2 from './ChildComponent2.vue';export default {components: {ChildComponent1,ChildComponent2}
};
</script>
四、策略模式:行为扩展
模式解释
策略模式通过定义算法家族并使其可互相替换,实现行为的灵活扩展。在Vue中常用于解耦具体算法实现与业务逻辑。
使用场景
- 表单验证规则管理
- 权限验证策略
- 数据处理策略(如不同格式转换)
- 支付方式选择
代码示例(表单验证策略)
// strategies.js
export const validationStrategies = {required: value => !!value?.trim(),email: value => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value),minLength: (value, length) => value.length >= parseInt(length)
}// 使用组合式函数封装
export function useValidator() {const validate = (value, rules) => {return rules.every(rule => {const [strategy, param] = rule.split(':')return validationStrategies[strategy](value, param)})}return { validate }
}// 组件中使用
import { useValidator } from './validator'
export default {setup() {const { validate } = useValidator()const checkForm = () => {const isValid = validate(formData.email, ['required', 'email'])// ...}return { checkForm }}
}
五、观察者模式:响应式数据
模式解释
观察者模式定义对象间的一对多依赖关系,当被观察对象状态改变时自动通知所有依赖项。Vue的响应式系统正是该模式的典型实现。
使用场景
- 表单输入双向绑定
- 跨组件状态同步
- 实时数据仪表盘
- 复杂计算依赖跟踪
代码示例(自定义观察者)
// reactive.js
class Dep {constructor() {this.subscribers = new Set()}depend() {if (activeEffect) this.subscribers.add(activeEffect)}notify() {this.subscribers.forEach(effect => effect())}
}let activeEffect = nullfunction watchEffect(effect) {activeEffect = effecteffect()activeEffect = null
}// Vue3响应式原理简化实现
function reactive(obj) {const deps = new Map()return new Proxy(obj, {get(target, key) {let dep = deps.get(key)if (!dep) {dep = new Dep()deps.set(key, dep)}dep.depend()return target[key]},set(target, key, value) {target[key] = valuedeps.get(key)?.notify()return true}})
}// 使用示例
const state = reactive({ count: 0 })watchEffect(() => {console.log(`Count changed: ${state.count}`)
})state.count++ // 触发日志输出
六、装饰者模式:动态添加功能
模式解释
装饰者模式通过包装对象来动态扩展功能,同时保持接口一致性。在Vue中常用于功能增强而不修改组件本身。
使用场景
- 权限控制装饰器
- 日志记录装饰器
- 性能监控装饰器
- UI样式增强
代码示例(高阶组件装饰器)
// withLogger.js
export default function withLogger(WrappedComponent) {return {mounted() {console.log(`Component ${this.$options.name} mounted`)},render(h) {return h(WrappedComponent, {on: {...this.$listeners,click: (...args) => {console.log('Button clicked')this.$emit('click', ...args)}},props: this.$props})}}
}// 使用装饰器
import Button from './Button.vue'
import withLogger from './withLogger'export default withLogger(Button)
七、工厂模式:对象创建
模式解释
工厂模式将对象创建过程封装,根据输入参数返回不同类型对象。在Vue中常用于动态组件创建和复杂对象实例化。
使用场景
- 动态表单组件生成
- 多主题组件切换
- 插件系统初始化
- 异步组件加载
代码示例(组件工厂)
// componentFactory.js
const components = {text: () => import('./TextInput.vue'),select: () => import('./SelectInput.vue'),date: () => import('./DatePicker.vue')
}export default {createComponent(type) {return components[type]?.() || components.text()}
}// 动态组件使用
<template><component :is="currentComponent" />
</template><script>
import componentFactory from './componentFactory'export default {data() {return {fieldType: 'select'}},computed: {currentComponent() {return componentFactory.createComponent(this.fieldType)}}
}
</script>
八、代理模式:控制访问
模式解释
代理模式为对象提供替代品或占位符以控制其访问。Vue中常用于数据校验、缓存控制和访问限制。
使用场景
- 计算属性缓存
- API请求拦截
- 权限控制代理
- 延迟加载优化
代码示例(缓存代理)
// apiProxy.js
const cache = new Map()export default {async fetchData(url) {if (cache.has(url)) {console.log('Return cached data')return cache.get(url)}const response = await fetch(url)const data = await response.json()cache.set(url, data)return data}
}// 使用代理
import apiProxy from './apiProxy'export default {async mounted() {const data = await apiProxy.fetchData('/api/users')// ...}
}
九、迭代器模式:顺序访问
模式解释
迭代器模式提供顺序访问聚合对象元素的方法,而无需暴露其底层实现。Vue中常用于处理集合型数据操作。
使用场景
- 分页数据加载
- 树形结构遍历
- 自定义集合操作
- 数据转换管道
代码示例(自定义迭代器)
// paginationIterator.js
export class PaginationIterator {constructor(dataSource, pageSize = 10) {this.dataSource = dataSourcethis.pageSize = pageSizethis.currentPage = 0}[Symbol.iterator]() {return {next: async () => {const start = this.currentPage * this.pageSizeconst end = start + this.pageSizeconst data = await this.dataSource.fetch(start, end)if (data.length === 0) return { done: true }this.currentPage++return { value: data, done: false }}}}
}// 使用示例
const iterator = new PaginationIterator(apiDataSource, 20)for await (const page of iterator) {renderTable(page)
}
最后我整理一个对比表格
模式名称 | 类型 | 优缺点 | 适用场景 |
---|---|---|---|
单例模式 | 创建型 | 优点:保证唯一实例,减少内存开销,避免重复初始化。 缺点:容易造成全局状态,增加系统复杂性,难以测试。 | 资源管理器、日志系统、数据库连接池等。 |
函数式组件 | (Vue特有) | 优点:无状态、无实例,性能高,适合简单展示型组件。 缺点:无法维护状态或处理复杂逻辑。 | 简单展示型组件、高频率更新的组件、递归组件、辅助性组件以及需要性能优化的场景。 |
组合模式 | 结构型 | 优点:清楚地定义分层次的复杂对象,忽略层次差异,简化客户端代码。 缺点:限制类型时比较复杂,使设计变得更加抽象。 | 希望客户端可以忽略组合对象与单个对象的差异,处理树形结构,如文件系统等。 |
策略模式 | 行为型 | 优点:算法可以自由切换,避免使用多重条件判断,扩展性良好,维护性好。 缺点:客户端需要知道所有的策略类,增加了对象的数目,增加了系统的复杂性。 | 多个类只区别在表现行为上,算法的使用环境不应该包含算法逻辑,如排序算法、支付方式、折扣计算等。 |
观察者模式 | 行为型 | 优点:抽象耦合,支持广播通信,容易扩展观察者和被观察者。 缺点:观察者之间细节依赖过多,会增加时间消耗和程序的复杂程度,需要避免循环调用。 | 关联行为场景,建立一套触发机制,如用户关注商品降价通知等。 |
装饰者模式 | 结构型 | 优点:扩展灵活,可以对装饰类进行各种排列组合,符合开闭原则。 缺点:需要编写更多的代码,生成更多的类,增加了程序的复杂性,动态/多层装饰时程序更复杂。 | 为一个类扩展功能,为其添加额外的职责,如动态添加和撤销功能等。 |
工厂模式 | 创建型 | 优点:一个调用者想创建一个对象,只要知道其名称就可以了,扩展性高。 缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,增加了系统的复杂度。 | 工厂类负责创建的对象比较少,客户端只知道传入工厂类的参数,对如何创建对象不关心。 |
代理模式 | 结构型 | 优点:分离目标对象,降低耦合,保护目标对象,增强目标对象的功能。 缺点:类个数增加,系统的复杂度增加,性能降低。 | 保护目标对象,增强目标对象的功能,如租客通过中介找房东租房子等。 |
迭代器模式 | 行为型 | 优点:分离了集合对象的遍历行为,抽象出了迭代器负责集合对象的遍历,让外部的代码透明的访问集合内部的数据。 缺点:类的个数成对增加,增加了系统复杂性。 | 访问集合对象的内容,无需暴露内部表示,为遍历不同的集合结构提供统一接口。 |
看到这里的小伙伴,欢迎点赞、评论,收藏!
如有前端相关疑问,博主会在第一时间解答,也同样欢迎添加博主好友,共同进步!!!
相关文章:
Vue设计模式到底多少种?
Vue设计模式到底多少种? 很多同学问,Vue到底有多少种设计模式??各个模式到底是什么意思??又各自适合什么场景?? 这里我给大家直接说下,Vue的设计模式没有一个固定的数值…...
C++ 中的 std::timed_mutex 和 std::recursive_timed_mutex
1、背景 在多线程编程中,互斥锁(Mutex)是用于保护共享资源的重要工具。C 标准库提供了多种互斥锁类型,其中 std::timed_mutex 和 std::recursive_timed_mutex 是两种支持超时功能的互斥锁。在阅读FastDDS源码时,发现了…...
HAL库外设宝典:基于CubeMX的STM32开发手册(持续更新)
目录 前言 GPIO(通用输入输出引脚) 推挽输出模式 浮空输入和上拉输入模式 GPIO其他模式以及内部电路原理 输出驱动器 输入驱动器 中断 外部中断(EXTI) 深入中断(内部机制及原理) 外部中断/事件控…...
Kotlin实战经验:将接口回调转换成suspend挂起函数
在 Kotlin 协程中, suspendCoroutine 和 suspendCancellableCoroutine 是用于将回调或基于 future 的异步操作转换成挂起函数。 suspendCoroutine 用途:将回调式异步操作转换为可挂起函数 行为: 启动一个新的协程来处理基于回调的操作挂起当前协程,直到调用回调回调负责…...
银行国际结算
银行国结项目,即国际结算项目,是银行业务中的重要组成部分,它涉及跨国界的货币收付和资金转移。 一、银行国结项目的定义 银行国结项目是指银行为国际贸易、投资等活动提供的国际结算服务,包括各种国际支付和资金清算业务。这些…...
java后端开发day13--面向对象综合练习
(以下内容全部来自上述课程) 注意:先有javabean,才能创建对象。 1.文字版格斗游戏 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候&#…...
Vue解决父子组件传值,子组件改变值后父组件的值也改变的问题
vue开发过程中,父组件通过props传值给子组件,子组件在页面展示父组件的值,在操作子组件值以后,即使不点击确定按钮,父组件中的值也发生了变化,但是需求是操作子组件数据以后,必须点击"确定…...
【通俗解释,入门级】DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘
DeepSeek - R1 - Zero:强化学习提升LLM推理能力的奥秘 第一节:强化学习在DeepSeek - R1 - Zero中的基本概念与公式解释【通俗解释】 强化学习在DeepSeek - R1 - Zero里就像是一位“聪明的探险家”,在各种可能的推理路径中探索,通…...
《图解设计模式》笔记(六)访问数据结构
十三、Visitor 模式:访问数据结构并处理数据 Visitor:访问者 我们会“处理”在数据结构中保存着的元素,通常把“处理”代码放在表示数据结构的类中。 但每增加一种处理,就不得不去修改表示数据结构的类。 在 Visitor模式中&am…...
windows11上,使用pipx安装Poetry,Poetry的安装路径是什么?
当使用 pipx 安装 Poetry 时,pipx 会将 Poetry 安装到一个独立的虚拟环境中,并将其可执行文件链接到一个集中的目录中。以下是 pipx 安装 Poetry 时的路径信息: 1. Poetry 的安装路径 pipx 会为每个工具(如 Poetry)创…...
使用 vcpkg 简化 C++ 项目依赖管理
使用 vcpkg 简化 C 项目依赖管理 什么是 vcpkg? vcpkg 是微软推出的跨平台 C/C 包管理工具,支持 Windows/Linux/macOS。它可以帮助开发者: ✅ 一键安装 2000 开源库 ✅ 自动解决依赖关系 ✅ 生成 Visual Studio 集成配置 ✅ 支持自定义编译…...
怎样确定网站访问速度出现问题是后台还是服务器造成的?
网站的访问速度会影响到用户的体验感,当网络过于卡顿或访问速度较慢时,会给用户带来不好的体验感,但是网站访问速度不仅会是后台造成影响的,也可能是服务器的原因,那么我们该如何分辨呢? 当网站使用了数据库…...
【Elasticsearch】管道聚合
管道聚合就是在已有聚合结果之上在进行聚合,管道聚合是针对于聚合的聚合 在 Elasticsearch 中,管道聚合(Pipeline Aggregations)是一种特殊的聚合类型,用于对其他聚合的结果进行进一步的计算和处理,而不是直…...
CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)
代码地址:CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据) CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测 一、引言 1.1、研究背景和意义 随着全球能源危机和环境问题的日…...
后端java工程师经验之谈,工作7年,mysql使用心得
mysql 工作7年,mysql使用心得 mysql1.创建变量2.创建存储过程2.1:WHILE循环2.2:repeat循环2.3:loop循环2.4:存储过程,游标2.5:存储过程,有输入参数和输出参数 3.三种注释写法4.case …...
综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab)
基于随机变异系数-TOPSIS组合法的综合评价模型 代码获取私信回复:综合评价 | 基于随机变异系数-TOPSIS组合法的综合评价模型(Matlab) 一、引言 1.1、研究背景与意义 在现代社会,随着信息量的不断增加和数据复杂性的提升&#…...
Visual Studio Code中文出现黄色框子的解决办法
Visual Studio Code中文出现黄色框子的解决办法 一、vsCode中文出现黄色框子-如图二、解决办法 一、vsCode中文出现黄色框子-如图 二、解决办法 点击 “文件”点击 “首选项”点击 “设置” 搜索框直接搜索unicode选择“文本编辑器”,往下滑动,找到“Un…...
手写一个C++ Android Binder服务及源码分析
手写一个C Android Binder服务及源码分析 前言一、 基于C语言编写Android Binder跨进程通信Demo总结及改进二、C语言编写自己的Binder服务Demo1. binder服务demo功能介绍2. binder服务demo代码结构图3. binder服务demo代码实现3.1 IHelloService.h代码实现3.2 BnHelloService.c…...
【AIGC】在VSCode中集成 DeepSeek(OPEN AI同理)
在 Visual Studio Code (VSCode) 中集成 AI 编程能力,可以通过安装和配置特定插件来实现。以下是如何通过 Continue 和 Cline 插件集成 DeepSeek: 一、集成 DeepSeek 获取 DeepSeek API 密钥:访问 DeepSeek 官方网站,注册并获取 …...
使用 Three.js 实现热力渐变效果
大家好!我是 [数擎 AI],一位热爱探索新技术的前端开发者,在这里分享前端和 Web3D、AI 技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:前端开发 | A…...
Vue事件处理 - 绑定事件
Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - Vue事件处理 - 绑定事件及事件处理 目录 事件处理 绑定方式 函数表达式 绑定函数名 输入框绑定事件 拿到输入框的值 传值加事件源 事件第三种写法 总结 事件处理 绑定方式 函数表达式 在按钮上使用函数表达式绑定事…...
DVWA靶场通关——SQL Injection篇
一,Low难度下unionget字符串select****注入 1,首先手工注入判断是否存在SQL注入漏洞,输入1 这是正常回显的结果,再键入1’ You have an error in your SQL syntax; check the manual that corresponds to your MySQL server ver…...
DeepSeek 助力 Vue 开发:打造丝滑的步骤条
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
今日学习总结
1.完成了P2242公路维修问题 2.完成了P10605下头论文 1.P2242 思考:建立单向链表,使用qsort降序排序。 #include<stdio.h> #include<stdlib.h> #include<stdbool.h> #include<string.h> int n,m; int a[15005],b[15005],ans;…...
Transformer 的辉煌与大模型方向确立,点燃AGI之火把
GPT3,指明大模型发展方向,点燃大模型软件行业繁荣之火,目前大模型有100万个。 DeepSeek-V3,指明下一个阶段大模型发张方向,破壁: 资金壁垒:训练成本降低,适配丰富硬件,总…...
DeepSeek-Coder系列模型:智能编程助手的未来
文章目录 一、模型架构与核心功能1. 模型架构2. 核心功能 二、多语言支持与代码生成1. Python代码生成2. Java代码生成3. C代码生成4. JavaScript代码生成 三、仓库级代码理解1. 代码结构分析2. 上下文理解 四、FIM填充技术1. 函数自动填充2. 代码补全 五、应用场景1. 代码补全…...
微信小程序longpress以及touchend的bug,touchend不触发,touchend不执行
核心原因:bind:touchend里面不能放wx:if 举例: <view bind:longpress"longpressBtn" bind:touchend"touchendBtn"><view wx:if"{{isRecording}}" >松开发送</view><view wx:else"…...
多租户架构设计与实现:基于 PostgreSQL 和 Node.js
多租户架构设计与实现:基于 PostgreSQL 和 Node.js 引言 多租户架构(Multi-tenancy)是现代 SaaS(Software as a Service)应用的核心设计模式之一。它允许多个租户共享同一套应用实例,同时确保数据隔离和安全性。本文将详细介绍多租户架构的设计方案,并基于 PostgreSQL…...
四、OSG学习笔记-基础图元
前一章节: 三、OSG学习笔记-应用基础-CSDN博客https://blog.csdn.net/weixin_36323170/article/details/145514021 代码:CuiQingCheng/OsgStudy - Gitee.com 一、绘制盒子模型 下面一个简单的 demo #include<windows.h> #include<osg/Node&…...
windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)
环境准备: 确定部署方案请参考:DeepSeek-R1系列(1.5b/7b/8b/32b/70b/761b)大模型部署需要什么硬件条件-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确定部署方案:DeepSeek-R1:7b + Ollama + Open WebUI 1. 安装 Ollama Ollama 是一…...
功能架构元模型
功能架构的元模型是对功能架构进行描述和建模的基础框架,它有助于统一不同团队对系统的理解,并为系统的设计和开发提供一致的标准和规范。虽然具体的元模型可能因不同的应用领域和特定需求而有所差异,但一般来说,功能架构的元模型可以涵盖以下几个方面: 组件/模块元模型:…...
云计算——AWS Solutions Architect – Associate(saa)4.安全组和NACL
安全组一充当虚拟防火墙对于关联实例,在实例级别控制入站和出站流量。 网络访问控制列表(NACL)一充当防火墙关联子网,在子网级别控制入站和出站流量。 在专有网络中,安全组和网络ACL(NACL)一起帮助构建分层网络防御。 安全组在实例级别操作…...
Fiddler Classic(HTTP流量代理+半汉化)
目录 一、关于Fiddler (一) Fiddler Classic (二) Fiddler Everywhere (三) Fiddler Everywhere Reporter (四) FiddlerCore (五) 总结 二、 软件安全性 1. 软件安装包 2. 软件汉化dll 三、安装与半汉化 1. 正常打开安装包点击下一步安装即可,安装路径自…...
【hive】记一次hiveserver内存溢出排查,线程池未正确关闭导致
一、使用 MemoryAnalyzer软件打开hprof文件 很大有30G,win内存24GB,不用担心可以打开,ma软件能够生成索引文件,逐块分析内存,如下图。 大约需要4小时。 overview中开不到具体信息。 二、使用Leak Suspects功能继续…...
MySQL的字段类型
MySQL 字段类型可以简单分为三大类 数值类型:整型(TINYINT、SMALLINT、MEDIUMINT、INT 和 BIGINT)、浮点型(FLOAT 和 DOUBLE)、定点型(DECIMAL)字符串类型:CHAR、VARCHAR、TINYTEXT…...
HTML之JavaScript运算符
HTML之JavaScript运算符 1.算术运算符 - * / %除以0,结果为Infinity取余数,如果除数为0,结果为NaN NAN:Not A Number2.复合赋值运算符 - * / %/ 除以0,结果为Infinity% 如果除数为0,结果为NaN NaN:No…...
UE5--浅析委托原理(Delegate)
委托概述 委托是一种用于事件处理的机制。通过使用委托,可以将一个或多个函数绑定到一个事件上,在事件触发时自动调用这些函数。代理也叫做委托,比如:跳,跑,开枪,伤害等响应,就是注册一个委托回调,其作用就是提供一种消息机制,都知道消息的传递需要发送方和接收方,…...
Android13-系统服务大管家-ServiceManager进程-启动篇
文章目录 关注 ServiceMager 原因ServerManager需要掌握的知识资料参考ServiceManager 进程启动启动脚本涉及到的相关源码文件源码跟踪ServiceManager脚本启动位置ServiceManager关联脚本 Native层源码分析main.cpp流程打开驱动 initWithDriverinitmakeProcessState 构造方法op…...
网络安全溯源 思路 网络安全原理
网络安全背景 网络就是实现不同主机之间的通讯。网络出现之初利用TCP/IP协议簇的相关协议概念,已经满足了互连两台主机之间可以进行通讯的目的,虽然看似简简单单几句话,就描述了网络概念与网络出现的目的,但是为了真正实现两台主机…...
Mac(m1)本地部署deepseek-R1模型
1. 下载安装ollama 直接下载软件,下载完成之后,安装即可,安装完成之后,命令行中可出现ollama命令 2. 在ollama官网查看需要下载的模型下载命令 1. 在官网查看deepseek对应的模型 2. 选择使用电脑配置的模型 3. copy 对应模型的安…...
从零复现DeepSeek R1:从V3中对MoE、MLA、MTP的实现,到Open R1对R1中SFT、GRPO的实现
前言 虽然我司从23年起,便逐步从教育为主转型到了科技为主,但不代表教育业务便没有了 随着DeepSeek特别是R1、其次V3模型的大火,我司七月在线的大模型线上营群里一学员朋友DIFY问道:校长好,deepseek 的课程目前有多少…...
[EAI-033] SFT 记忆,RL 泛化,LLM和VLM的消融研究
Paper Card 论文标题:SFT Memorizes, RL Generalizes: A Comparative Study of Foundation Model Post-training 论文作者:Tianzhe Chu, Yuexiang Zhai, Jihan Yang, Shengbang Tong, Saining Xie, Dale Schuurmans, Quoc V. Le, Sergey Levine, Yi Ma 论…...
示例代码:C# MQTTS双向认证(客户端)(服务器EMQX)
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 源码指引:github源…...
自制游戏——斗罗大陆
很简陋,没有图,请见谅 // mine[0] 级数 // mine[1] 战力 //mine[2] 1 白虎 //mine[2] 2 昊天锤 //mine[2] 3 蓝银草 #include <bits/stdc.h> using namespace std; int mine[100],live3, dou 1, luo 1, da 1, bag[1000], huan 0, lia…...
数据治理双证通关经验分享 | CDGA/CDGP备考全指南
历经1个月多的系统准备,本人于2024年顺利通过DAMA China的CDGA(数据治理工程师)和CDGP(数据治理专家)双认证。现将备考经验与资源体系化整理,助力从业者高效通关。 🌟 认证价值与政策背景 根据…...
Vue全流程--Vue3.0与Vue2.0响应式原理对比
Vue2中数据的响应式 需要使用Vue.set这么一个api,修改数据 需要使用Vue.delete这么一个api,删除数据 数据代理这个当面的理解可以看看我前面文章Vue全流程--数据代理的理解以及在Vue中的应用-CSDN博客 Vue3中数据的响应式 Vue3使用proxy这个api实现…...
Spring中都应用了哪些设计模式?
好的!以下是您提到的八种设计模式在 Spring 中的简单示例: 1. 简单工厂模式 简单工厂模式通过传入参数来决定实例化哪个类。Spring 中的 BeanFactory 就是简单工厂模式的应用。 示例代码: // 1. 创建接口和具体实现类 public interface A…...
fastjson2学习大纲
一、基础篇 - JSON与fastjson2核心概念 JSON基础 JSON语法规范(RFC 8259)JSON数据类型与Java类型对应关系序列化/反序列化核心概念 fastjson2入门 与fastjson1的主要区别核心优势: 性能提升(JSONB二进制协议)更完善的…...
k8s部署elasticsearch
前置环境:已部署k8s集群,ip地址为 192.168.10.1~192.168.10.5,总共5台机器。 1. 创建provisioner制备器(如果已存在,则不需要) 制备器的具体部署方式,参考我之前的文章:k8s部署rabbitmq-CSDN博客 2. 编写wms-elk-data-sc.yaml配置文件 apiVersion: storage.k8s.io/…...
BS架构(笔记整理)
楔子.基本概念 1.在网络架构中: 服务器通常是集中式计算资源,负责处理和存储数据;客户机是请求这些服务的终端设备,可能是个人电脑或移动设备;浏览器则是客户机上用来与服务器交互的工具,负责展示网页内容…...