插件化架构设计(1):插件化架构能解决什么问题?为啥选它?
前面是概念内容,在实现的时候,google 搜的资料进行汇总所做的笔记,看具体事件,从 标题 “插件实践方案” 开始看
如何解决代码重用、快速开发
随着MVVM的框架和库的流行,想必组件化开发已经成为了前端开发的主流思想,特别是Vue、React、Angular已经有比较成熟的开发模式、社区和UI组件库
『成熟型功能明确产品』和『面向企业或单位的部分功能不明确产品』都有一些共同的特点。
-
很大部分逻辑功能是相同的,它们可能会用在很多的系统里面
-
这些功能是需要维护的,不可能维护一个功能要去N个系统里面修改
-
修改某一部分功能不会影响到其他功能,可以随时上线,全站回归的成本太高
整体思路的解决思路是渐进式的封装到可视化开发
建立内部UI组件库(封装粒度小)
-
基于UI组件库搭建业务组件库(封装粒度一般,有部分功能逻辑)
-
基于UI组件库和业务组件库建立插件库(封装粒度大,包含完整业务逻辑)
-
基于插件化开发的模板编译生成页面代码
-
基于平台的可视化配置+模板编译的低代码开发平台
插件与组件的区别
插件本质也是一种软件复用方式,和我们常说的组件区别是复用的维度不同。
-
组件的复用颗粒度更细,它是技术级复用单元,需要经过进一步加工和组合才能成为解决某一类业务问题的完整部分
-
插件是一个更加完整可以解决某一类业务问题的子系统,是业务级别的复用单元。
比如对Android开发而言,插件化和组件化区别
-
组件化:是将一个App分成多个模块,每个模块都是一个组件(module),
开发过程中可以让这些组件相互依赖或独立编译、调试部分组件,但是这些组件最终会合并成一个完整的Apk去发布到应用市场。
-
插件化:是将整个App拆分成很多模块,每个模块都是一个Apk(组件化的每个模块是一个lib),
最终打包的时候将宿主Apk和插件Apk分开打包,只需发布宿主Apk到应用市场,插件Apk通过动态按需下发到宿主Apk。
在现有软件开发中,业务越来越复杂,代码规模越来越大,依赖的人力也越来越多。为了降低系统模块内部耦合度,减少开发难度,也为了能够支持多团队的并行开发,插件式开发架构变得愈加流行,Eclipse, Visual Studio, VSCode等,都是插件式开发架构的典型案例。
现代软件提供插件式开发架构,一方面是服务于产品自身内部开发,另外一方面服务于市场化。借助于市场上各领域开发人员,在某一款软件(开源or商业)上进行面向新领域的开发,可以大大提高该产品的市场占有率,并衍生出一系列各领域的代理商及咨询业务。
现实中,硬件开发其实很多也是插件化思想的
像PC制造,各个功能模块就可以理解为插件。
插件化,最大的优势就是按照功能区分,系统耦合度低,一块功能的添加或删除,并不影响其他功能的使用。
如果所有的功能都打包在一个工程内,简单可靠,但扩展性极为不佳,扩展功能的成本非常之高,但效率和代码量均较小。
如果将各个功能拆分成为各个组件,组件间相互调用,这样可以使得系统的耦合度降低,但添加了诸多的数据传递代码
系统的每一部分,都只是一个插件,所有部分都是平级的,可能GUI用来加载并引导框架启动,但其也必须是一个插件,才能被其他组件调用。组件和组件间的循环依赖是可以的,因为大家都仅仅保护对应插件的接口工程。
为什么是插件化开发
借用内核+应用软件开发的思想,首先有一个插件调度的核心,在这个核心的支持下可以开发支持这个核心的应用程序,我把这些应用程序称为『插件』,插件是一个具有完整逻辑的应用程序,它不依赖任何其他的插件,只需要依赖核心即可在系统中独立运行。
为什么需要插件
我们的软件系统往往是要面向持续性的迭代的,在开发之初很难把所有需要支持的功能都想清楚,有时候还需要借助社区的力量去持续生产新的功能点,或者优化已有的功能。这就需要我们的软件系统具备一定的可扩展性。插件模式就是我们常常选用的方法。
事实上,现存的大量软件系统或工具都是使用插件方式来实现可扩展性的。比如大家最熟悉的小可爱——VSCode,其插件拥有量已经超越了他的前辈 Atom,发布到市场中的数量目前是 24894 个。这些插件帮助我们定制编辑器的外观或行为,增加额外功能,支持更多语法类型,大大提升了开发效率,同时也不断拓展着自身的用户群体。又或者是我们熟知的浏览器 Chrome,其核心竞争力之一也是丰富的插件市场,使其不论是对开发者还是普通使用者都已成为了不可获取的一个工具。另外还有 Webpack、Nginx 等等各种工具,这边就不一一赘述了。
根据目前各个系统的插件设计,总结下来,我们创造插件主要是帮助我们解决以下两种类型的问题:
-
为系统提供全新的能力
-
对系统现有能力进行定制
同时,在解决上面这类问题的时候做到:
-
插件代码与系统代码在工程上解耦,可以独立开发,并对开发者隔离框架内部逻辑的复杂度
-
可动态化引入与配置
并且进一步地可以实现:
-
通过对多个单一职责的插件进行组合,可以实现多种复杂逻辑,实现逻辑在复杂场景中的复用
这里提到的不管是提供新能力,还是进行能力定制,都既可以针对系统开发者本身,也可以针对三方开发者。
结合上面的特征,我们尝试简单描述一下插件是什么吧。
-
插件一般是可独立完成某个或一系列功能的模块。
-
一个插件是否引入一定不会影响系统原本的正常运行(除非他和另一个插件存在依赖关系)。
-
插件在运行时被引入系统,由系统控制调度。
-
一个系统可以存在复数个插件,这些插件可通过系统预定的方式进行组合。
参考文章:
前端插件化架构的思考 前端插件化架构的思考 - 腾讯云开发者社区-腾讯云
前端插件化架构的探索和实践 前端插件化架构的探索和实践 - OPPO数智技术 - SegmentFault 思否
译] React 16.6 懒加载(与预加载)组件 [译] React 16.6 懒加载(与预加载)组件 - 掘金
前端,何不尝试一下『插件化』开发 前端,何不尝试一下『插件化』开发 - 掘金
插件化?好像也就那么回事 插件化?好像也就那么回事 - 掘金
转载本站文章《插件化架构设计(1):插件化架构能解决什么问题?为啥选它?》,
请注明出处:插件化架构设计(1):插件化架构能解决什么问题?为啥选它? - 前端架构设计 - 周陆军的个人网站
相关文章
- 基于MATLAB编程的萤火虫改进帝国竞争算法求解多目标优化,FA-ICA目标寻优
目录 背影 帝国竞争 基本定义 优点 萤火虫原理 改进思路 基于萤火虫改进帝国竞争多目标求解 代码 结果分析 展望 背影 多目标多参数优化是常遇到的优化问题,有很多传统算法可以求解,比如fiminmax,fmincon等,但是都容易陷入局部最优,本文用帝国竞争优化萤火虫算法进行多目…...
2023/3/28 16:19:12 - 【Nginx】Nginx的学习(2.Nginx的安装,Linux安装和Windows安装)
1.Nginx下载 Nginx官网下载地址 http://nginx.org/en/download.html 1.1 windows安装 windows安装很简单,直接下载windows的版本,注意不要放到包含中文的路径下面 打开下载路径的cmd的窗口,输入 nginx.exe回车即可, 浏览器输入 ht…...
2023/3/28 16:18:22 - Vue 3.0 应用API
在 Vue 3 中,改变全局 Vue 行为的 API 现在被移动到了由新的 createApp 方法所创建的应用实例上。此外,现在它们的影响仅限于该特定应用实例: import { createApp } from vueconst app createApp({}) 调用 createApp 返回一个应用实例。该实…...
2023/3/28 16:18:07 - Android系统定制及adb日志调试方法
Android系统定制基础 Android双屏异显 深入分析AMS启动流程 WMS启动流程分析和介绍 Android系统启动流程详解 Android Framework学习路线 如何用Android手机抓取Systrace Android Framework基础到深入篇 Android系统定制及adb日志调试方法 Android修改内核源码绕过防调…...
2023/3/28 16:13:53 - VGA、DP、HDMI、DVI、Type-C和Thunderbolt等视频接口对比
问:VGA、DP、HDMI、DVI、Type-C和Thunderbolt这几种视频输入接口的定义、技术特点、版本迭代和年代的表格。表格按时间排序 答:以下是VGA、DP、HDMI、DVI、Type-C和Thunderbolt这几种视频输入接口的定义、技术特点、版本迭代和年代的表格,按…...
2023/3/28 16:10:29 - 关于线程池你了解些什么?
前言学习线程池的思维导图线程池是什么?它有什么用?虽然线程比进程更轻量级,但是每个进程所占的资源空间是有限,如果我们频繁创建和销毁线程也会消耗很多CPU资源,那么我们该如何解决这个问题呢?官方解释:线程池是一种多线程处理形式,其处理过程可以将多个任务添加到阻塞队列…...
2023/3/28 16:09:16 - 线程安全、线程同步(同步代码块、同步方法、同步锁)
一. 线程安全 1.1 线程安全问题是什么,发生的原因 多个线程同时修改同一共享资源的时候,会出现线程安全问题。读数据是绝对不会出现线程安全问题的,它一定是因为同时在修改。一旦线程同步了,就是解决了安全问题了。CPU负责调度线…...
2023/3/28 16:06:34 - java-04
类与对象对象内存布局(重要) 属性细节类与对象的内存分配机制(重要)注意这边 b null 改的是b指向的地址哦,我一开始想错了,以为a也会变成null方法调用机制原理图方法调用细节方法练习public class Lianxi{public stat…...
2023/3/28 16:01:35 - 队列的基本实现
队列的基本实现一、队列的概念二、队列的基本实现1.前期准备2.队列的初始化3.队列的销毁4.入队5.出队6.取队头的数据7.取队尾的数据8.队列数据的个数9.判断队列是否为空10.队列出队顺序11.功能展示12.代码展示一、队列的概念 队列:只允许在一端进行插入数据操作&am…...
2023/3/28 16:01:00 - Redis高频40问
Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis 的数据是存在内存中的…...
2023/3/28 16:00:25 - 学习HM微博项目第3天
步骤:自定义tabBar -> 版本新特性01-搭载界面 -> 版本新特性02-按钮的使用细节 -> 版本新特性03-新版本判断 自定义tabBar 在前面的学习中,系统自带的tabBar是这样的: 由于某个需求,需要在tabBar的中间加上一个发送微博…...
2023/3/28 15:53:47 - 中国象棋隐私政策
1. 适用范围 (a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息; (b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览…...
2023/3/28 15:52:33 - HashMap何时会链表转红黑树
目录什么时候才会转换为红黑树?为什么要转换为红黑树?为什么不一开始就用红黑树,反而要经历一个转换的过程呢?从链表转化为红黑树的阈值为什么是8?什么时候才会转换为红黑树? 当Map链表长度大于或等于阈值…...
2023/3/28 15:52:20 - Scala的数组,元组,列表,集,映射(Map),迭代器(iterator)
文章目录1. 数组1.1 概述1.2 定长数组1.2.1 特点1.2.2 语法1.2.3 示例1.3 变长数组1.3.1 特点1.3.2 语法1.3.3 示例一: 定义变长数组1.3.4 示例二: 增删改元素1.4 遍历数组1.5 数组常用算法2. 元组2.1 格式2.2 示例2.3 访问元组中的元素3. 列表3.1 不可变列表3.1.1 特点3.1.2 语…...
2023/3/28 15:52:10 - NLP 开源形近字算法之相似字列表(番外篇)
创作目的 国内对于文本的相似度计算,开源的工具是比较丰富的。 但是对于两个汉字之间的相似度计算,国内基本一片空白。国内的参考的资料少的可怜,国外相关文档也是如此。 本项目旨在抛砖引玉,实现一个基本的相似度计算工具&…...
2023/3/28 15:51:25 - Day928.分析工具:几百万行规模的遗留系统怎么分析? -系统重构实战
分析工具:几百万行规模的遗留系统怎么分析? Hi,我是阿昌,今天学习记录的是关于分析工具:几百万行规模的遗留系统怎么分析?的内容。 设想一下如何计划整个重构的工作: 首先,已经设…...
2023/3/28 15:47:27 - 多标签在单行出现省略的实现
简言 实现在有宽度的一行内,标签过多会出现省略号。 实现 首先要实现单行省略的效果。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&quo…...
2023/3/28 15:43:41 - 【Verilog语法013】verilog多维数组(多维矩阵)的写法
有两种表示方法:一种是verilog语法的多维数组,另一种是system verilog语法的多维数组。 这是verilog语法: reg [A1:A0] a [B1:B0] [C1:C0] [D1:D0] ; 引用顺序是:a[B][C][D][A], 定义的a 的左边只有位宽,一对方括号[…...
2023/3/28 15:42:00 - netstat命令参数和arp命令
Usage: netstat [-ral] [-tuwx] [-en] Display networking information -r Routing table -----------------------查看路由表 -a All sockets 所有套接字状态 -l Listening sockets …...
2023/3/28 15:41:49 - macOS Ventura 13.3 (22E252) 正式版发布,ISO、IPSW、PKG 下载
请访问原文链接:https://sysin.org/blog/macOS-Ventura/,查看最新版。原创作品,转载请保留出处。 2023 年 3 月 27 日 (北京时间 28 日凌晨),macOS Ventura 13.3 正式版发布,本更新包括全新表情…...
2023/3/28 15:41:12 - Java设计模式(六)—— 命令模式
命令模式定义如下:将一个请求封装为一个对象,从而使用户可用不用的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 适合命令模式情景如下: 程序需要在不同的时刻指定、排列和执行请求程序需要…...
2023/3/28 15:39:02 - 12代酷睿安装神器!34元让小白装机也不会戳弯针脚
12th CPU 扣件强度太高疑似会造成 CPU 上的金属盖 IHS 中央出现凹陷 虽然我已经在粉丝团已经用数颗全新的 CPU 告诉大家 IHS 从过去刚存在开始到现在,中间就一直存在凹陷公差 即便如此 ~ 原厂 CPU 扣件强度极高,但防板弯的设置强度不足仍然不争的事实 如…...
2023/3/28 15:34:27 - 【ChatGPT】GPT实现原理大解析——看完就知道什么叫颠覆
文章目录前言一、ChatGPT是什么?二、那么,如何计算下一个单词的概率?三, 什么是模型?四,如何制作能完成人类任务的模型五,神经网络总结前言 ChatGPT 能够自动生成类似于人类写作的文本…...
2023/3/28 15:34:09 - OTA(Over-the-air programming)是什么?
OTA(Over the air-programming)是什么? ‒ 是指将新软件,固件,设置,加密密钥更新无线发布到手机,机顶盒等设备的方式。 ‒ 对于固件而言,由于安装在诸如ROM,EPROM和flash memory等的…...
2023/3/28 15:32:53 - FastJson序列化时过滤字段(属性)的方法总结
FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。 方法一、FastJson的注解 JSONField(serialize false)private String name; 最便捷&am…...
2023/3/28 15:32:21 - 相机单独标定的实现过程[autoware标定]、tmp文件的查看方式
安装了autoware1.13和calibration标定包,发现实现相机单独标定的过程较为坎坷,参考了一些博主的方法,发现下面的过程更加适合自己,做个笔记。 1安装标定箱(与calibration标定包的安装并不冲突) 标定工具箱…...
2023/3/28 15:31:55 - seata 使用
1 下载地址 Releases seata/seata GitHub 2 版本 seat 1.6.0 修改配置文件 applciation.yml server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${user.home}/logs/seata e…...
2023/3/28 15:25:31 - 人大金仓赋能网络安全产业,筑牢数字经济发展安全底线
近日,由广东省网络空间安全协会与广东关键信息基础设施保护中心联合举办的网安联广东网络安全大会(首届)暨2023广东省网络空间安全协会年会圆满结束。作为广东省网络空间安全协会会员单位,人大金仓受邀参加,并围绕“国…...
2023/3/28 15:22:37 - Unity和GAN实现AI绘画五等分的新娘、国家队02(附源码)
UnityGAN实现AI绘画五等分的新娘、国家队02附源码写在前面源码演示视频部分界面展示使用教程敬请期待其他写在后面写在前面 博主喜欢二次元,想着在读研期间做点对自己有意义的事,因此选择了动漫人物生成方向(呜呜呜,太感谢导师理解和支持了)…...
2023/3/28 15:20:15 - 4. git 配置 Gitee 远端指定仓库并提交代码
1. 第一步:先创建一个远程仓库 点击创建后,会显示如下界面,箭头所指的地方就是目前创建的仓库的远程地址: 2. 第二步:配置SSH公钥 首先打开git bash,在命令行里输入以下命令: ssh-keygen -t…...
2023/3/28 15:16:33
最新文章
- 基于MATLAB编程的萤火虫改进帝国竞争算法求解多目标优化,FA-ICA目标寻优
目录 背影 帝国竞争 基本定义 优点 萤火虫原理 改进思路 基于萤火虫改进帝国竞争多目标求解 代码 结果分析 展望 背影 多目标多参数优化是常遇到的优化问题,有很多传统算法可以求解,比如fiminmax,fmincon等,但是都容易陷入局部最优,本文用帝国竞争优化萤火虫算法进行多目…...
2023/3/28 16:19:12 - 【Nginx】Nginx的学习(2.Nginx的安装,Linux安装和Windows安装)
1.Nginx下载 Nginx官网下载地址 http://nginx.org/en/download.html 1.1 windows安装 windows安装很简单,直接下载windows的版本,注意不要放到包含中文的路径下面 打开下载路径的cmd的窗口,输入 nginx.exe回车即可, 浏览器输入 ht…...
2023/3/28 16:18:22 - Vue 3.0 应用API
在 Vue 3 中,改变全局 Vue 行为的 API 现在被移动到了由新的 createApp 方法所创建的应用实例上。此外,现在它们的影响仅限于该特定应用实例: import { createApp } from vueconst app createApp({}) 调用 createApp 返回一个应用实例。该实…...
2023/3/28 16:18:07 - Android系统定制及adb日志调试方法
Android系统定制基础 Android双屏异显 深入分析AMS启动流程 WMS启动流程分析和介绍 Android系统启动流程详解 Android Framework学习路线 如何用Android手机抓取Systrace Android Framework基础到深入篇 Android系统定制及adb日志调试方法 Android修改内核源码绕过防调…...
2023/3/28 16:13:53 - VGA、DP、HDMI、DVI、Type-C和Thunderbolt等视频接口对比
问:VGA、DP、HDMI、DVI、Type-C和Thunderbolt这几种视频输入接口的定义、技术特点、版本迭代和年代的表格。表格按时间排序 答:以下是VGA、DP、HDMI、DVI、Type-C和Thunderbolt这几种视频输入接口的定义、技术特点、版本迭代和年代的表格,按…...
2023/3/28 16:10:29 - 关于线程池你了解些什么?
前言学习线程池的思维导图线程池是什么?它有什么用?虽然线程比进程更轻量级,但是每个进程所占的资源空间是有限,如果我们频繁创建和销毁线程也会消耗很多CPU资源,那么我们该如何解决这个问题呢?官方解释:线程池是一种多线程处理形式,其处理过程可以将多个任务添加到阻塞队列…...
2023/3/28 16:09:16 - 线程安全、线程同步(同步代码块、同步方法、同步锁)
一. 线程安全 1.1 线程安全问题是什么,发生的原因 多个线程同时修改同一共享资源的时候,会出现线程安全问题。读数据是绝对不会出现线程安全问题的,它一定是因为同时在修改。一旦线程同步了,就是解决了安全问题了。CPU负责调度线…...
2023/3/28 16:06:34 - java-04
类与对象对象内存布局(重要) 属性细节类与对象的内存分配机制(重要)注意这边 b null 改的是b指向的地址哦,我一开始想错了,以为a也会变成null方法调用机制原理图方法调用细节方法练习public class Lianxi{public stat…...
2023/3/28 16:01:35 - 队列的基本实现
队列的基本实现一、队列的概念二、队列的基本实现1.前期准备2.队列的初始化3.队列的销毁4.入队5.出队6.取队头的数据7.取队尾的数据8.队列数据的个数9.判断队列是否为空10.队列出队顺序11.功能展示12.代码展示一、队列的概念 队列:只允许在一端进行插入数据操作&am…...
2023/3/28 16:01:00 - Redis高频40问
Redis连环40问,绝对够全! Redis是什么? Redis(Remote Dictionary Server)是一个使用 C 语言编写的,高性能非关系型的键值对数据库。与传统数据库不同的是,Redis 的数据是存在内存中的…...
2023/3/28 16:00:25 - 学习HM微博项目第3天
步骤:自定义tabBar -> 版本新特性01-搭载界面 -> 版本新特性02-按钮的使用细节 -> 版本新特性03-新版本判断 自定义tabBar 在前面的学习中,系统自带的tabBar是这样的: 由于某个需求,需要在tabBar的中间加上一个发送微博…...
2023/3/28 15:53:47 - 中国象棋隐私政策
1. 适用范围 (a) 在您注册本应用帐号时,您根据本应用要求提供的个人注册信息; (b) 在您使用本应用网络服务,或访问本应用平台网页时,本应用自动接收并记录的您的浏览器和计算机上的信息,包括但不限于您的IP地址、浏览…...
2023/3/28 15:52:33 - HashMap何时会链表转红黑树
目录什么时候才会转换为红黑树?为什么要转换为红黑树?为什么不一开始就用红黑树,反而要经历一个转换的过程呢?从链表转化为红黑树的阈值为什么是8?什么时候才会转换为红黑树? 当Map链表长度大于或等于阈值…...
2023/3/28 15:52:20 - Scala的数组,元组,列表,集,映射(Map),迭代器(iterator)
文章目录1. 数组1.1 概述1.2 定长数组1.2.1 特点1.2.2 语法1.2.3 示例1.3 变长数组1.3.1 特点1.3.2 语法1.3.3 示例一: 定义变长数组1.3.4 示例二: 增删改元素1.4 遍历数组1.5 数组常用算法2. 元组2.1 格式2.2 示例2.3 访问元组中的元素3. 列表3.1 不可变列表3.1.1 特点3.1.2 语…...
2023/3/28 15:52:10 - NLP 开源形近字算法之相似字列表(番外篇)
创作目的 国内对于文本的相似度计算,开源的工具是比较丰富的。 但是对于两个汉字之间的相似度计算,国内基本一片空白。国内的参考的资料少的可怜,国外相关文档也是如此。 本项目旨在抛砖引玉,实现一个基本的相似度计算工具&…...
2023/3/28 15:51:25 - Day928.分析工具:几百万行规模的遗留系统怎么分析? -系统重构实战
分析工具:几百万行规模的遗留系统怎么分析? Hi,我是阿昌,今天学习记录的是关于分析工具:几百万行规模的遗留系统怎么分析?的内容。 设想一下如何计划整个重构的工作: 首先,已经设…...
2023/3/28 15:47:27 - 多标签在单行出现省略的实现
简言 实现在有宽度的一行内,标签过多会出现省略号。 实现 首先要实现单行省略的效果。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content&quo…...
2023/3/28 15:43:41 - 【Verilog语法013】verilog多维数组(多维矩阵)的写法
有两种表示方法:一种是verilog语法的多维数组,另一种是system verilog语法的多维数组。 这是verilog语法: reg [A1:A0] a [B1:B0] [C1:C0] [D1:D0] ; 引用顺序是:a[B][C][D][A], 定义的a 的左边只有位宽,一对方括号[…...
2023/3/28 15:42:00 - netstat命令参数和arp命令
Usage: netstat [-ral] [-tuwx] [-en] Display networking information -r Routing table -----------------------查看路由表 -a All sockets 所有套接字状态 -l Listening sockets …...
2023/3/28 15:41:49 - macOS Ventura 13.3 (22E252) 正式版发布,ISO、IPSW、PKG 下载
请访问原文链接:https://sysin.org/blog/macOS-Ventura/,查看最新版。原创作品,转载请保留出处。 2023 年 3 月 27 日 (北京时间 28 日凌晨),macOS Ventura 13.3 正式版发布,本更新包括全新表情…...
2023/3/28 15:41:12 - Java设计模式(六)—— 命令模式
命令模式定义如下:将一个请求封装为一个对象,从而使用户可用不用的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。 适合命令模式情景如下: 程序需要在不同的时刻指定、排列和执行请求程序需要…...
2023/3/28 15:39:02 - 12代酷睿安装神器!34元让小白装机也不会戳弯针脚
12th CPU 扣件强度太高疑似会造成 CPU 上的金属盖 IHS 中央出现凹陷 虽然我已经在粉丝团已经用数颗全新的 CPU 告诉大家 IHS 从过去刚存在开始到现在,中间就一直存在凹陷公差 即便如此 ~ 原厂 CPU 扣件强度极高,但防板弯的设置强度不足仍然不争的事实 如…...
2023/3/28 15:34:27 - 【ChatGPT】GPT实现原理大解析——看完就知道什么叫颠覆
文章目录前言一、ChatGPT是什么?二、那么,如何计算下一个单词的概率?三, 什么是模型?四,如何制作能完成人类任务的模型五,神经网络总结前言 ChatGPT 能够自动生成类似于人类写作的文本…...
2023/3/28 15:34:09 - OTA(Over-the-air programming)是什么?
OTA(Over the air-programming)是什么? ‒ 是指将新软件,固件,设置,加密密钥更新无线发布到手机,机顶盒等设备的方式。 ‒ 对于固件而言,由于安装在诸如ROM,EPROM和flash memory等的…...
2023/3/28 15:32:53 - FastJson序列化时过滤字段(属性)的方法总结
FastJson序列化时(即转成JSON字符串时),可以过滤掉部分字段,或者只保留部分字段,方法有很多,下面举一些常用的方法。 方法一、FastJson的注解 JSONField(serialize false)private String name; 最便捷&am…...
2023/3/28 15:32:21 - 相机单独标定的实现过程[autoware标定]、tmp文件的查看方式
安装了autoware1.13和calibration标定包,发现实现相机单独标定的过程较为坎坷,参考了一些博主的方法,发现下面的过程更加适合自己,做个笔记。 1安装标定箱(与calibration标定包的安装并不冲突) 标定工具箱…...
2023/3/28 15:31:55 - seata 使用
1 下载地址 Releases seata/seata GitHub 2 版本 seat 1.6.0 修改配置文件 applciation.yml server: port: 7091 spring: application: name: seata-server logging: config: classpath:logback-spring.xml file: path: ${user.home}/logs/seata e…...
2023/3/28 15:25:31 - 人大金仓赋能网络安全产业,筑牢数字经济发展安全底线
近日,由广东省网络空间安全协会与广东关键信息基础设施保护中心联合举办的网安联广东网络安全大会(首届)暨2023广东省网络空间安全协会年会圆满结束。作为广东省网络空间安全协会会员单位,人大金仓受邀参加,并围绕“国…...
2023/3/28 15:22:37 - Unity和GAN实现AI绘画五等分的新娘、国家队02(附源码)
UnityGAN实现AI绘画五等分的新娘、国家队02附源码写在前面源码演示视频部分界面展示使用教程敬请期待其他写在后面写在前面 博主喜欢二次元,想着在读研期间做点对自己有意义的事,因此选择了动漫人物生成方向(呜呜呜,太感谢导师理解和支持了)…...
2023/3/28 15:20:15 - 4. git 配置 Gitee 远端指定仓库并提交代码
1. 第一步:先创建一个远程仓库 点击创建后,会显示如下界面,箭头所指的地方就是目前创建的仓库的远程地址: 2. 第二步:配置SSH公钥 首先打开git bash,在命令行里输入以下命令: ssh-keygen -t…...
2023/3/28 15:16:33