一文读懂AI框架——这些关于AI框架的事,你知道多少?

随着数智化进程的加快 多元化、复杂化的场景持续涌现 大模型俨然成为当下产业、甚至整个智能时代 的支柱力量 越来越多的企业开始构建AI大模型 以应对全新的业务需求和挑战 作为实现大模型的重要工具 AI框架也逐渐进入了发展繁荣期 开始收获越来越多的关注 在中国这片土壤上发展自己的AI框架 已是人工智能领域的焦点话题 PART.1 AI框架:人工智能技术发展的基石 什么是AI框架? AI框架是AI算法模型设计、训练和验证的一套标准接口、特性库和工具包,集成了算法的封装、数据的调用以及计算资源的使用,同时面向开发者提供了开发界面和高效的执行平台,是现阶段AI算法开发的必备工具。 AI框架的作用与价值 AI框架就类似Windows、安卓一般,是“AI领域的操作系统”,所有人工智能的算法及应用都要通过AI框架进行训练与部署。作为人工智能领域的“根技术”,AI框架在人工智能技术的发展中具有重要作用: 01 AI框架下接硬件、上承应用,是整个人工智能技术体系的核心,可实现AI算法工程化,提高人工智能学习效率、强化模型能力。 02 AI框架是智能应用快速落地的关键支撑者,是大规模并行计算的关键调度者,将主导智能经济时代各行各业细分场景。 03 AI框架将成为智能经济时代的操作系统,“AI框架+算力硬件”的组合在一定程度上决定了人工智能产业应用的主体技术路线。 AI框架在日常生活中的应用 科技终要服务于社会,随着相关技术的不断发展完善,AI框架现已在日常生活中得到广泛应用。 01 在交通领域 通过AI框架开发的深度学习算法可以检测车辆违停、逆行等违章现象;大部分交通摄像头也已植入AI框架,可以精准识别车辆的车型、车牌号、车内人员等信息,甚至在发生事故时自动报警,辅助交管部门进行交通管理。 02 在金融行业 大量银行通过AI框架综合分析用户数据,并根据社交关系建立图神经网络模型,更好地判断用户的信用与还款能力,便于精准服务、降低贷款风险。 随着人工智能技术的持续进步,深度学习算法将拥有更加广阔的应用。作为其底层技术基石,AI框架也会进一步融入我们的日常生活,使能千行百业呈现智能时代新风貌。 PART.2 昇思MindSpore:中国AI框架首选 Google的TensorFlow,和Meta的PyTorch两款AI框架起步早、发展快,目前已经占据了业界的主导地位。但国内也有一些厂商奋起直追,呈现出双寡头并驱下的多元发展态势,也涌现出一批以昇思MindSpore为代表的优秀AI框架。 昇思MindSpore是什么? 昇思MindSpore 是华为开源的新一代全场景AI框架,可以实现数据模型的训练-推理-全场景部署。大到地球系统模拟、自动驾驶,小到蛋白质结构预测,统统都可以通过昇思MindSpore实现。 为何选择昇思MindSpore? 01 开发体验简单 可帮助开发者实现网络自动切分,只需串行表达就能实现并行训练,极大降低大模型训练门槛与成本,简化开发流程。 02 充分发挥硬件潜能 特有图算融合网络性能优化技术,可充分发挥AI硬件算力,帮助开发者缩短训练时间,提升推理性能。 03 全场景快速部署 具备端云协同能力,端边云接口统一、模型统一无需转换,可在云、边缘和手机上快速部署,实现更好的资源利用和隐私保护,让开发者专注于AI应用的创造。 04 企业级可信能力 密态AI、对抗样本识别、差分隐私训练、系统资源强制隔离等多项技术加持,打造“模型‘偷’不走、隐私不泄露、模型抗攻击、OS级安全保护”四位一体的可信生态。 中国AI框架首选昇思MindSpore 2022年,中国信息通信研究院发布《AI框架发展白皮书》,指出昇思MindSpore作为国内优质AI框架代表,在Gitee千万个开源项目中综合排名第一,已是国内开源社区最活跃的AI框架,为学术科研与产业应用提供了重要的技术支撑。 作为新兴的AI框架,昇思MindSpore在行业赋能方面已有斐然成绩。截至2023年6月,MindSpore 社区下载量超495万,社区核心贡献者超18000名,昇思MindSpore 服务企业达5500多家,广泛应用于工业制造、金融、能源电力、交通、医疗等行业,现已成为国内大模型首选AI框架。 当AI遍布于生活生产的每一处细节 昇思MindSpore这样的AI框架 将成为我们日常生活中不可缺少的一部分 期待昇思MindSpore为我们带来更多可能

大数据存储架构详解:数据仓库、数据集市、数据湖、数据网格、湖仓一体

前言 本文隶属于专栏《大数据理论体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见大数据理论体系 姊妹篇 《分布式数据模型详解:OldSQL => NoSQL => NewSQL》 《分布式计算模型详解:MapReduce、数据流、P2P、RPC、Agent》 《大数据存储架构详解:数据仓库、数据集市、数据湖、数据网格、湖仓一体》 《大数据处理架构详解:Lambda架构、Kappa架构、流批一体、Dataflow模型、实时数仓》 《实时数仓详解》 思维导图 数据仓库 数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、 相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合。 数据仓库的主要目标是提供一致、可靠、易于访问的数据, 以支持企业的决策制定和分析。 它可以帮助企业了解自己的业务、市场以及客户, 并提供决策支持和预测分析的能力。 数据仓库在商业智能和数据分析领域有着广泛的应用。 关于数据仓库的详情请参考我的博客——数据仓库是什么? 关于商业智能请参考我的博客——什么是商业智能(BI)? 数据库 VS 数据仓库 区别数据库数据仓库设计目标支持企业的日常业务操作支持企业的决策制定和分析数据结构面向应用的设计面向主题的设计数据处理方式在线事务处理(OLTP)方式在线分析处理(OLAP)方式数据范围当前状态数据存储历史的、完整的、反应历史变化的数据数据变化支持频繁的增删改查操作可添加、无删除、无变更、反应历史变化的设计理论遵循三范式、避免冗余违范式、适当冗余处理量频繁、小批次、高并发、低延迟非频繁、大批量、高吞吐、有延迟 关于数据库和数据仓库的对比详情请参考我的博客——数据仓库与数据库的区别? OLTP vs OLAP 对比项目OLTPOLAP用户操作人员、底层管理人员决策人员、高级管理人员功能日常操作处理分析决策DB设计基于ER模型,面向应用星型/雪花/星座模型,面向主题DB规模GB至TB≥TB数据最新的、细节的、二维的、分立的历史的、聚集的、多维的、集成的存储规模读/写数条(甚至数百条)记录读上百万条(甚至上亿条)记录操作频度非常频繁(以秒计)比较稀松(以小时甚至以周计)工作单元严格的事务复杂的查询用户数数百个至数千万个数个至数百个度量事务春吐量査询吞吐量、响应时间 关于 OLTP 和 OLAP 的对比详情请参考我的博客——OLTP和OLAP的区别? 数据仓库分层 数据仓库分层的详情请参考我的博客——数据仓库是如何分层的? 数据仓库建模 关于建模方法论的详情请参考我的下面 2 篇博客: 典型的数据仓库建模方法论数据仓库是如何建模的? 数据集市 数据集市是一个专门针对特定业务部门或主题领域的数据仓库子集。 它集中于存储公司在更大的存储系统中选定的一小部分数据, 并且从比数据仓库更少的数据来源中获取数据。 关于数据集市的详情请参考我的博客——数据集市是什么?数据集市和数据仓库有什么区别 如果把数据仓库看作是全公司的数据集合的话,数据集市可以看作是其中一个部门的,这个部门只负责处理特定业务的数据。 数据集市 VS 数据仓库 数据仓库(Data Warehouse)是一个用于整个企业的存储库,包含来自不同业务、系统和部门的集成数据。它基于整个企业的数据模型建立,面向企业范围内的主题。 数据仓库的特点包括: 覆盖全企业:数据仓库为整个企业的各个部门和运作提供决策支持。集成数据:数据仓库汇集来自多个业务、系统和部门的数据,通过数据清洗、整合和转换,以满足企业的分析和报告需求。企业级架构:数据仓库是一个企业级的解决方案,通常由专业团队负责设计、构建和维护。面向企业主题:数据仓库的主题是与整个企业运营相关的,如销售、客户、供应链等。 数据集市(Data Mart)是一个面向特定业务领域或功能单元的主题化数据存储库。它通常是部门级的,为某个局部范围内的管理人员提供决策支持。 数据集市的特点包括: 部门级应用:数据集市主要为某个特定部门或功能单元的业务需求服务,提供针对该部门的数据分析和报告。面向部门主题:数据集市的主题是与特定业务或功能单元相关的,如销售业绩、市场营销、财务等。数据来源:数据集市的数据来源可以是从数据仓库获取的(从属数据集市),也可以来自各个生产系统(独立数据集市)。相对较小规模:数据集市的规模通常是几十GB的数量级,相对于数据仓库来说较小。 下面是描述数据仓库和数据集市区别的表格: 数据仓库数据集市适用范围整个企业特定部门或功能单元数据来源来自不同业务、系统和部门的集成数据可从数据仓库获取,或来自各生产系统规模较大(企业级)相对较小(部门级)架构企业级架构部门级架构主题面向企业主题面向部门主题目标为整个企业各部门提供决策支持为特定部门提供决策支持功能提供企业范围内的数据分析和报告提供部门级的数据分析和报告 数据湖 数据湖是一个存储大规模、多样化数据的组织方法,可以存储结构化、非结构化和半结构化的数据,是一个大型、灵活的数据存储仓库,可以将企业的所有数据源整合起来。 关于数据湖的详情请参考我的博客——什么是数据湖?为什么需要数据湖?

vscode中vue3+ts报类型“{ }“上不存在属性“ “,以及ts.config.app.json和tsconfig.node.json中报错(彻底解决)

亲爱的小伙伴们,你们是否遇到过使用vscode打开vue3+ts项目时一片爆红,一直提示类型"{}"上不存在属性 "",以及ts.config.app.json和tsconfig.node.json中报“在没有"node"模块解析策略的情况下,无法指定选项"-resolveJsonModule”的问题,不要担心,不要着急,看了很多篇的博客,我终于是彻底解决了这些恶心的报错,然后就迫不及待地想要分享给大家,希望对各位有所帮助哦! 1.解决类型不存在属性问题 首先找到ts.config.json文件,然后在文件中添加如下代码即可,当你保存后你会惊喜地发现刚才vue文件中的爆红已经完全消失了。 "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], 2.解决ts.config.app.json和tsconfig.node.json中报错 首先找到ts.config.app.js文件,然后在compilerOptions下添加"moduleResolution":"node",保存后关闭掉爆红的json文件,重新打开后你会发现刚才的爆红已经消失了 最后,如果我的小经验对你有所帮助的话,麻烦动动你可爱的小手指,为我点个赞吧!

Python web实战 | 使用 Django 搭建 Web 应用程序 【干货】

概要 从社交媒体到在线购物,从在线银行到在线医疗,Web 应用程序为人们提供了方便快捷的服务。Web 应用程序已经成为了人们日常生活中不可或缺的一部分。搭建一个高效、稳定、易用的 Web 应用程序并不是一件容易的事情。本文将介绍如何使用 Django 快速搭建一个强大的 Web 应用程序。我将从如何安装 Django 开始,一步一步地讲解如何创建、设计和部署一个完整的 Web 应用程序。 安装 Django 在开始之前,我们需要安装 Django。Django 是一个开源的 Web 应用框架,基于 Python 编程语言。它提供了一系列工具和库,可以帮助我们快速地搭建 Web 应用程序。以下是安装 Django 的步骤: 步骤 1:安装 Python 略 步骤 2:安装 Django 安装 Python 之后,我们需要安装 Django。打开终端或命令提示符,输入以下命令: pip install Django 创建 Django 项目 安装 Django 之后,我们可以开始创建 Django 项目了。以下是创建 Django 项目的步骤: 步骤 1:创建项目 首先,我们需要在命令提示符或终端中进入我们要存放项目的目录。然后,输入以下命令,创建一个 Django 项目: django-admin startproject myproject 这将会创建一个名为 myproject 的 Django 项目。myproject 目录下的文件和子目录如下: myproject/ manage.py myproject/ __init__.py settings.

Java开发 - 深入理解Redis Cluster的工作原理

前言 前面我们讲过Redis Cluster的搭建方式,也是本着应用优先的原则,所以对其基础概念和原理几乎没有涉及,但当学会了Redis集群的搭建方式之后,对于其原来我们还是要知道一些的,所以这篇博客,我们将一起来学习Redis Cluster的一些相关知识。 导读 在开始Redis Cluster的讲解之前,还不熟悉Redis Cluster,还不知道怎么搭建Redis Cluster的小伙伴,可以先去看看以下这篇博客: Java开发 - 让你少走弯路的Redis集群搭建 看完这篇博客,对于里面一些基础知识,我们就开始给大家科普了。 Redis Cluster Redis Cluster是什么 我们首先要知道,Redis Cluster是在Redis3.0之后才出现的去中心化分片集群。传统的Redis集群是基于主从复制加哨兵来实现的,这在前面的文章中博主也有详细的搭建流程和原理剖析: Java开发 - 让你少走弯路的Redis的主从复制 Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式 Java开发 - 深入理解Redis哨兵机制原理 有需要的小伙伴自行前往查看。在这种传统的Redis集群中,最多也只能有一个节点来提供写服务,这一点谁都无法改变。 不同于传统的Redis集群模式,在Redis3.0后,Redis Cluster支持多主多从的方式,也就是可以同时开启多个主节点,主节点之下再挂其他的从节点的方式。在这个过程中,Cluster会将数据分散到多个主节点上,这些主节点也都可以对外提供读写服务。这种方式突破了Redis单机存储的内存大小限制,扩展了集群的存储容量。不仅如此,Redis Cluster的每个主节点都有至少一个从节点,当某个主节点挂掉后,Redis Cluster就通过故障转移将其从节点切换为新的主节点。 总结:Redis Cluster是一个去中心化的Redis集群,每个节点都会与其他节点保持互通,通过gossip协议来进行信息的交换、探测新加入的节点、监听缩容的节点。最大的好处是,Redis Cluster⽆需任何代理,客户端会直接与集群中的节点连接。 注意:每个redis要放开两个端口号,一个是6379,另外一个就是在这基础上+10000,也就是16379,用来做节点间的通信!!! 分片方式 在创建Redis Cluster集群时,需要保证至少6个Redis服务,不要怀疑,就是6个,这6个Redis里的主节点会按照一定的规则来瓜分redis的16384个Slot槽,这个过程我们称之为分片,也将是我们接下来要讲解的内容。 Slot槽是Redis Cluster的一个重要概念,它将哈希表拆分成多个小的哈希表,并将这些小的哈希表分布在不同的节点上。每个节点管理一个或多个Slot槽,每个Slot槽包含一定的数据,这种分片的方式可以提高Redis的可扩展性和可靠性,避免单点故障时所有数据都丢失的问题。 哈希取模 哈希取模类似于我们使用HashMap选址的方式,我们对要存入的值的key进行hash计算,实际上是一个crc16效验,根据这个最终的值来决定它应该被分配在哪个Slot上,而这个Slot也决定了它在哪个节点上。 这里有个问题,在扩容或者缩容的时候,Slot槽可能需要重新进行分配,会导致key重新计算存储位置,从⽽导致缓存失效,但我们也应该知道,这种情况并不是总是经常出现。 一致性哈希 一致性哈希将哈希值组成了一个闭合的虚拟圆环,其大小在0 ~ 2^32-1之间,这个值非常熟悉有没有?我们来看下图: 这是一个扩容前的状态图,我们计算key的哈希值,确定它在环上的位置,然后顺时针开始找,找到的第一个节点就是它这个key所在的节点,是不是很简单? 但在我们需要向这个环中插入或者删除节点时,就不需要重新对整个环/集群中的key进行重新运算,⼀致性哈希算法会将增减节点的影响限制在相邻的节点上,而不对其他的节点造成影响。如下图: 当我们node2和node4之间新增一个node5,此时只会把node4的一部分数据迁移到node5上‘如果对node4的服务进行下线,那么node4的数据将只迁移到相邻的node3上,是不是很神奇? 一致性哈希算法在节点很多的时候还是不错的,但在节点较少时,会因为删除节点导致Slot槽或者说数据出现分布不均的情况,以上图最开始4个节点的情况来说,如果删除一个节点,势必会有一个节点的数据由原来的四分之一(1/4)变成二分之一(1/2)。 以上是一个最差的结果,但在进行扩容和缩容的时候,Slot槽在重新分配时,怎么分配,这个规则掌握在我们的手中。比如说,人工分配容易导致食物,Slot就有一个自动平衡算法,具体做法就是通过redis-trib做rehash操作。但我还是要提醒大家,生产环境慎用!!! 虚拟节点+⼀致性哈希 这有时候吧,节点在环上分配严重不均,也就是slot槽分配不均,节点又少,就有导致雪崩和数据倾斜,这时候就在一致性哈希的基础上提出了一种新的虚拟节点的方式,如下图: 注意:真实节点不放置到哈希环上,只有虚拟节点才会放上去 !!! 这种方式将通过实际节点抢占哈希环的方式变成了由实际节点下的虚拟节点来抢占的方式,简单来说就是通过虚拟节点来映射实际的节点,好处是, 扩容或缩容时,其他节点只需要将自身虚拟节点下的一部分slot分配出去,从而达到slot槽的均匀分配,这个看起来就像是一种负载均衡的分配方式,而这正是我们所希望的。 选举策略 在说之前,我想给大家推荐几篇博客: Redis 集群模式(Cluster)原理详解 redis(六)Redis Cluster集群原理 Redis学习(二)之 Redis Cluster集群

Tomcat 的使用(图文教学)

Tomcat 的使用(图文教学) 前言一、什么是Tomcat?二、Tomcat 服务器和 Servlet 版本的对应关系三、Tomcat 的使用1、安装2、目录介绍3、如何启动4、Tomcat 的停止5、如何修改 Tomcat 的端口号6、如何部暑 web 工程到 Tomcat 中6.1 方式一6.2 方式二 四、两种访问页面的方式1、手托 html 页面到浏览器2、在浏览器中输入访问路径进行访问 五、ROOT工程和index页面的默认访问1、ROOT 的工程的访问2、默认 index.html 页面的访 问 六、IDEA 整合 Tomcat 服务器七、IDEA 中动态 web 工程的操作1、IDEA 中如何创建动态 web 工程2、Web 工程的目录介绍3、如何给动态 web 工程添加额外 jar 包4、如何在 IDEA 中部署工程到 Tomcat 上运行5、在 IDEA 中如何运行,和停止 Tomcat 实例。6、修改工程访问路径7、修改运行的端口号8、修改运行使用的浏览器 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主! 也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远! 一、什么是Tomcat? Tomcat 是一款免费、开源的 Web 服务器和 Servlet 容器,由 Apache 软件基金会开发和维护。Tomcat 实现了 Java Servlet、JavaServer Pages(JSP)、Java Expression Language(EL)和 WebSocket 等 Java 技术规范,可以作为 Web 应用程序的运行环境。

2023年最新JavaScript 基础面试题(62题&附答案)

目录 1. 介绍 JavaScript 的基本数据类型? 2. 浅谈 JavaScript 中变量和函数声明的提升? 3. 什么是闭包,闭包有什么特性? 4. 说说对闭包的理解和闭包的作用 5. 说说 This 对象的理解 6. 事件模型的理解 7. new 操作符具体干了什么? 8. 说说栈和堆的理解,以及它们的区别? 9. JS 数组和对象的遍历方式,以及几种方式的比较 10. map 与 forEach 的区别 11. 谈一谈箭头函数与普通函数的区别? 12. JavaScript 定义类的 4 种方法 13. JavaScript 实现继承的 3 种方法 14. 对原生 Javascript 了解程度 15. Js 动画与 CSS 动画区别及相应实现 16. 谈一谈你理解的函数式编程 17. 说说你对作用域链的理解 18. JavaScript 原型,原型链 ? 有什么特点? 19. 说说什么是事件代理? 20. 说说 ajax 原理? 21. 说说如何解决跨域问题?

(三)InfluxDB入门(借助Web UI)

以下内容来自 尚硅谷,写这一系列的文章,主要是为了方便后续自己的查看,不用带着个PDF找来找去的,太麻烦! 第 3 章 InfluxDB入门(借助Web UI) 借助Web UI,我们可以更好地理解InfluxDB的功能划分。接下来,我们就从Web UI入手,先了解InfluxDB的基本功能。 3.1 数据源相关 3.1.1 Load Data(加载数据) 如图所示,页面上左侧的向上箭头,对应着InfluxDB Web UI的Load Data(加载数据)页面。 3.1.1.1 上传数据文件 在Web UI上,你可以用文件的方式上传数据,前提是文件中的数据符合InfluxDB支持的类型,包括CSV、带Flux注释的CSV和InfluxDB行协议。 点击其中任意一个按钮,将进入数据的上传页面,页面中包含了详细的说明文档,包含你的数据应该符合什么格式,你要把数据放到哪个存储桶里,还包括用命令行来上传数据的命令模板。 3.1.1.2 写入InfluxDB的代码模板 InfluxDB提供了各种编程语言的连接库,你甚至可以在前端嵌入向InfluxDB写入数据的代码,因为InfluxDB向外提供了一套功能完整的REST API。 点击任何一个语言的LOGO,你会看到使用这门语言,将数据写入到InfluxDB的代码模板。建议从这里拷贝初始化客户端的代码 配置Telegraf的输入插件 Telegraf是一个插件化的数据采集组件,在这里你可以找一下没有对应你的目标数据源的插件,点击它的logo。可以看到这个插件配置的写法,但是关于这方面的内容,还是建议参考Telegraf的官方文档,那个更细更全一些。 3.1.2 管理存储桶 你可以将InfluxDB中的bucket理解为普通关系型数据库中的database。在Load data页面上,点击上访的BUCKETS选项卡,就可以进入bucket管理页面了。 3.1.2.1 创建Bucket 点击右上角的CREATE BUCKET按钮,会有一个创建存储桶的弹窗,这里你可以给bucket指定一个名称和数据的过期时间。比如,你设置过期时间为 6 小时,那InfluxDB就会自动把这个存储桶中距离当前时间超过 6 小时的数据删除。 3.1.2.2 调整Bucket的设置 存储桶的过期时间的名称都是可以修改的,点击任一Bucket信息卡的SETTINGS按钮会弹出一个调整设置的会话框。 重命名是 InfluxDB不建议的操作,因为大量的代码和InfluxDB定时任务都需要通过指定Bucket的名称来进行连接,贸然更改Bucket的名称可能导致这些程序无法正常工作。 3.1.2.3 设置Label 在每个Bucket信息卡的左下方都有一个 Add a label按钮,点击这个按钮,你可以为Bucket添加一个标签。不过这个功能一般很少用 3.1.2.4 向Bucket添加数据 每个存储桶信息卡的右边都有一个添加数据按钮,点击这个按钮可以快速导入一些数据。这里还可以创建一个抓取任务(被抓取的数据在格式上必须符合prometheus数据格式) 3.1.3 示例 1 :创建Bucket并从文件导入数据 3.1.3.1 创建Bucket 1、将鼠标悬停在左侧的按钮上,点击 Buckets,进入Bucketde的管理页面。 2、点击 CREATE BUCKET按钮,指定一个名称,这里我们将其设为example01,删除策略保留默认的NEVER,表示永远不会删除数据 3、点击CREATE按钮,可以看到我们的Buckets已经创建成功了。

E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-front

出现的问题 在Linux终端中使用apt指令安装软件时,有时会出现如下报错: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-frontend),是否有其他进程正占用它? 解决办法 在命令行输入如下命令: sudo rm /var/cache/apt/archives/lock sudo rm /var/lib/dpkg/lock 如果还无法解决再输入: sudo dpkg --configure -a sudo rm /var/lib/dpkg/lock-frontend 即可恢复使用apt指令安装软件

NSGA-II:快速精英多目标遗传算法(论文+代码解读)

按照本文梳理的算法各个模块实现,NSGA-II完整代码见GitHub - bujibujibiuwang/NSGA-II-in-python: 《A fast and elitist multi-objective genetic algorithm: NSGA-II》 目录 1.介绍 2. NSGA-II 2.1 快速非支配排序 2.1.1 NSGA的传统非支配排序 2.1.2 NSGA-II的快速非支配排序 2.2 多样性保护(Diversity Preservation) 2.2.1 NSGA的共享函数方法(sharing function) 2.2.2 NSGA-II的拥挤距离方法(crowded-comparison) 2.3 NSGA-II主循环 3. 代码实现 3.1 第三方库 3.2 自定义 NSGA提出原文 Muiltiobjective Optimization Using Nondominated Sorting in Genetic Algorithms | MIT Press Journals & Magazine | IEEE Xplore Srinivas, N., & Deb, K. (1994). Muiltiobjective Optimization Using Nondominated Sorting in Genetic Algorithms. Evolutionary Computation, 2(3), 221-248.

SQL Server 2022 彻底卸载教程

目录 一、停止 SQL Server 2022 运行 win+R --> services.msc 二、卸载相关应用 控制面板 --> 卸载程序 三、利用 Everything 软件 (免费) 搜索相关文件删除 四、疑难杂症软件 -- 卸载方法 !!! 一二三顺序最好不要乱,博主好奇二三顺序换了一下,结果只能靠第四步来挽回 !!! 一、停止 SQL Server 2022 运行 win+R --> services.msc 二、卸载相关应用 控制面板 --> 卸载程序 三、利用 Everything 软件 (免费) 搜索相关文件删除 Everything 软件下载链接https://pan.baidu.com/s/1leR1grdVz_3sSOvFe0-Lew?pwd=yeom 四、疑难杂症软件 -- 卸载方法 1.在系统的运行中输入cmd打开cmd命令窗口; 2.在命令窗口中输入WMIC然后回车; 3.然后输入Product list等待一段时间(大约5分钟)后就会列出 当前系统上安装的应用程序Microsoft SQL Server XX RsFx Driver; 4.找到需要写在的程序将其 IdentifyingNumber号码复制下来; 5.然后输入exit; 6.最后输入msiexec /x{复制的号码}命令行进行卸载。 原文链接:https://blog.csdn.net/scholar_man/article/details/60318453https://blog.csdn.net/scholar_man/article/details/60318453 如有错误,烦请批评指正

Python中安装Gurobi:配置与使用

目录 一、什么是gurobipy 二、安装gurobipy 1. 未完成配置的报错 2. 安装配置步骤 第一步 下载 ​第二步 安装 第三步 获取许可证 第四步 激活 第五步 Python配置 三、使用gurobipy 1. 导入gurobipy 2. 创建模型 3. 定义变量 4. 目标函数 5. 约束条件 6. 模型求解 一、什么是gurobipy gurobipy是一种Python接口,用于与商业数学软件Gurobi中的C ++库进行通信。gurobipy通过提供高层次的Python方法,使得使用gurobipy更加容易,并且在遵循Gurobi许可证条款的前提下可以免费使用。 二、安装gurobipy 1. 未完成配置的报错 2. 安装配置步骤 第一步 下载 在官网注册学术版账号并根据电脑操作系统下载gurobi。 第二步 安装 点击下载的.msi文件,进行安装,点击下一步即可,安装位置可以根据需要修改,最后注意是否重启。 第三步 获取许可证 可参考Gurobi 免IP验证学术许可申请方法。 材料有两个: 其一, 个人申请表;其二,学信网的学籍在线验证报告,个人申请表需要自行填写并电子签名,学籍验证报告申请一个即可。 准备好材料之后发送到help@gurobi.cn。 官方邮件回复很快,在邮件中获取激活码即可:安装软件后,在计算机连接互联网的情况下,输入 cmd 进入到命令提示符窗口。在命令行下使用 cd 命令进入到 Gurobi 安装目录/win64/bin 目录下,使用激活码。 第四步 激活 直接进入目录输入cmd即可,输入激活码。 最终提示:info : License XXXXXX written to file C:\Users\.

【数据结构】一文带你全面了解排序(下)——冒泡排序、快速排序、归并排序、计数排序

目录 一、常见排序算法的实现 1.1 交换排序 1.1.1 基本思想 1.1.2 冒泡排序 1.1.3 快速排序 1.2 归并排序 1.3 非比较排序 二、排序算法复杂度及稳定性分析 人总得为过去的懒惰而付出点代价! 一、常见排序算法的实现 1.1 交换排序 1.1.1 基本思想 基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置,交换排序的特点是:将键值较大的记录向序列的尾部移动,键值较小的记录向序列的前部移动。 1.1.2 冒泡排序 详细内容见:冒泡排序链接 冒泡排序: void BubbleSort(int* a, int n) { for (int i = 0; i < n - 1; i++)//趟数 { int end = n - i - 1; for (int j = 0; j < end; ++j)//交换次数 { if (a[j] > a[j + 1]) { Swap(&a[j], &a[j + 1]); } } } } 冒泡排序优化:【当第一趟进行交换的时候,没有进行交换,说明数组是有序的,那么就不需要进行后面几趟的冒泡了】 void BubbleSort(int* a, int n) { for (int i = 0; i < n - 1; i++)//趟数 { int exchange = 0; int end = n - i - 1; for (int j = 0; j < end; ++j)//交换次数 { if (a[j] > a[j + 1]) { exchange = 1; Swap(&a[j], &a[j + 1]); } } if (exchange == 0) { break; } } } 把直接插入排序和优化后的冒泡排序进行比较: 如果顺序是有序的,两者是一样的;但是,如果是局部有序,或者接近有序,那么插入适应性和比较次数更少

【数据结构】一文带你全面了解排序(上)——直接插入排序、希尔排序、选择排序、堆排序

目录 一、排序的概念及其运用 1.1 排序的概念 1.2 常见的算法排序 二、常见排序算法的实现 2.1 插入排序 2.1.1 思想 2.1.2 直接插入排序 2.1.3 希尔排序(缩小增量排序) 2.2 选择排序 2.2.1 基本思想 2.2.2 直接选择排序 2.2.3 堆排序 没有坚持的努力实质上并没有太大的意义! 一、排序的概念及其运用 1.1 排序的概念 排序 :所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性 :假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i]=r[j] ,且r[i]在r[j] 之前,而在排序后的序列中, r[i] 仍在 r[j] 之前,则称这种排 序算法是稳定的;否则称为不稳定的。 稳定的:直接插入排序、冒泡排序、归并排序 不稳定的:希尔排序、选择排序、堆排序、快速排序 内部排序 :数据元素全部放在内存中的排序。 外部排序 :数据元素太多不能同时放在内存中,根据排序过程的要求不能在内外存之间移动数据的排序。 1G = 1024MB 1024MB = 1024*1024KB 1024*1024KB = 1024 * 1024 * 1024byte(10亿) (1) 直接插入排序、希尔排序、直接选择排序、桶排序、冒泡排序、快速排序、归并排序都是内部排序。 归并排序可以外部排序 (2)内部排序:数据在内存中,速度快、下标可以随机访问(因为是数组);外部排序:数据在磁盘、速度慢、串行访问(文件)、数据量很大 给一个10亿(4G内存)个整数的文件,但是只给1G的运行内存,请对文件的10亿个数据进行排序? 思想:数据量大加载不到内存,想办法控制两个有序文件归并成一个更大的有序文件 思路:首先分成4等份,分别读到内存排序(这里不能使用归并排序,因为需要额外空间),排完序,写回到磁盘小文件,然再磁盘中,进行归并 1.2 常见的算法排序 冒泡排序<直接插入排序<堆排序<希尔排序<【越大越优】 二、常见排序算法的实现 2.1 插入排序 2.

Python毕设-【人脸签到系统】附源码/Python练手项目/Python毕业设计

本人承诺只做技术分享,永不收费。 V----------------->:专栏详情 文章目录 本人承诺只做技术分享,永不收费。V----------------->:专栏详情一、背景二、设计必要性三、项目技术栈四、系统角色及功能设计五、数据库设计六、文件代码及系统演示七、总结 本人承诺只做技术分享,永不收费。V----------------->:专栏详情 一、背景 ​ 课堂签到一直是学校教学管理中的重要环节之一,它是学生出勤情况的重要管理手段,同时也是教师了解学生学习情况、掌握学生出勤情况以及改善教学质量的重要途径之一。然而,传统的课堂签到方式通常使用手写记录或者打卡机等方式,存在着效率低、易产生作弊等问题。此外,传统的课堂签到方式还需要大量的人工操作,这给教师的教学工作带来了很大的负担。随着人工智能技术的不断发展,基于人脸识别技术的课堂签到系统应运而生,其可以实现自动化签到,提高签到效率,同时也能减少作弊现象的发生。 二、设计必要性 ​ 随着计算机视觉和人工智能技术的不断发展,人脸识别技术也日益成熟,应用场景也越来越广泛。基于此,设计开发一种基于Flask框架的课堂人脸签到系统具有重要的研究意义。 ​ 首先,该系统可以提高课堂签到的效率。传统的签到方式需要教师逐一点名或手写签到表,这样一来不仅效率低下,而且容易出错,浪费大量的时间和人力。而基于人脸识别技术的课堂签到系统可以自动完成签到过程,节省了大量的时间和精力。此外,该系统可以实现远程签到,为学生提供更加灵活的签到方式。 ​ 其次,该系统可以降低作弊率。传统的签到方式容易出现学生代签、伪造签到记录等问题,导致签到数据不准确。而基于人脸识别技术的课堂签到系统可以有效防止这些作弊行为的发生。只有经过人脸识别验证后,才能完成签到,从而保证签到数据的准确性和真实性。 ​ 第三,该系统可以减轻教师的工作负担。传统的签到方式需要教师手动完成签到过程,既费时又费力。而基于人脸识别技术的课堂签到系统可以自动完成签到过程,减轻了教师的工作负担,提高了教学效率。 ​ 最后,该系统的研究可以为其他类似应用场景提供参考。基于人脸识别技术的应用越来越广泛,如门禁系统、考勤系统、人脸支付等等。通过研究基于Flask框架的课堂人脸签到系统,可以为这些应用场景的设计和开发提供经验和借鉴。 三、项目技术栈 前端 HTMLCSSJSJQuery 后端 pythonflask框架 人脸识别技术 OpenCV-Python库RNN人脸128D特征 语言 Python 数据库 MySQL 四、系统角色及功能设计 基于flask的课堂人脸签到的功能结构,本系统中共设计到三个角色,分别是学生,老师,管理员。如图所示: 功能设计 基于flask的课堂人脸签到系统的系统功能设计主要包括以下几个方面: 1.人脸识别功能:系统需要能够实现人脸的检测、识别和对比等功能,以达到准确、高效的签到效果。 2.用户管理功能:系统需要实现学生、教师等用户信息的管理,包括添加、修改、删除、查询等操作。 3.签到管理功能:系统需要实现签到管理功能,包括签到记录的添加、修改、查询和统计等操作。 4.数据库管理功能:系统需要实现对数据库的管理,包括备份、恢复、优化、维护等操作。 5.系统配置功能:系统需要实现对系统参数的配置,包括系统主题、界面风格、登录设置、日志管理等操作。 6.权限管理功能:系统需要实现用户权限管理,包括不同角色用户的权限设置、访问控制等操作。 7.界面交互功能:系统需要实现良好的界面交互功能,包括响应速度快、界面友好、操作简单等。 8.系统安全功能:系统需要实现对安全的保护功能,包括用户登录认证、密码加密、系统日志记录、访问控制等。 9.学生选课功能:系统需要实现在学生端可以选择老师发布的课程,包括学生选择课程,退订课程等等。 10.学生人脸录入功能:系统需要实现在老师开启人脸录入权限的时候,学生需要讲自己的人脸图像录入到系统当中,并通过系统后端的计算产生相对于的脸部特征值并存入到数据库当中。 11.考勤记录查询功能:系统需要实现在学生,老师和管理员端对学生的考情记录进行查询,在学生端可以查询自己该门课的靠请记录,在老师端可以查询该课程下面所有学生的考勤记录。 五、数据库设计 学生表 老师表 学生人脸特征表 学生选课表 课程表 考勤表 系统E-R图 六、文件代码及系统演示 人脸录入 人脸录入功能允许管理员或老师向系统中添加新的人脸数据,以便系统能够识别他们在课堂中的签到情况。以下是该功能的详细设计: (1)用户选择人脸录入功能,并输入需要录入的学生或老师的基本信息,如姓名、学号、职工号等。 (2)用户通过摄像头对该用户的人脸进行拍照。 (3)系统使用人脸检测算法对拍摄到的照片进行检测,并提取人脸区域。 (4)系统使用人脸识别算法对提取出的人脸进行特征提取,并保存到数据库中。 (5)保存成功后,系统将该用户的信息和人脸特征一并保存到数据库中。 系统演示图如下所示: 部分核心代码: 人脸识别 人脸识别功能是整个系统的核心功能,其准确性和稳定性直接影响到签到的准确性。以下是该功能的详细设计: (1)用户选择人脸识别功能,并进入签到界面。 (2)系统通过摄像头对学生或老师的人脸进行拍照。 (3)系统使用人脸检测算法对拍摄到的照片进行检测,并提取人脸区域。 (4)系统使用人脸识别算法对提取出的人脸特征与已有的人脸特征进行比对。

Stable diffusion模型大合集(18个)免费下载

目录 RealDosMix ChilloutMix DDicon Lyriel Realistic Vision V2.0 国风3 hanfu 汉服 fking_scifi_v2 Dreamlike Photoreal 2.0 墨心 MoXin 小人书•连环画 blindbox/大概是盲盒 epi_noiseoffset Miniature world style XP 3D: C4D,3D style on Midjourney 沁彩 Colorwater majicMIX realistic XXMix realistic RealDosMix 介绍:真人模型 下载地址:https://pan.quark.cn/s/ff23d81d6ac4 ChilloutMix 介绍:一个爆火网络的,逼得作者放奔版权的模型,你不试试? 下载地址:https://pan.quark.cn/s/9486ffc4444b DDicon 介绍:生成玻璃质感web风格B端元素 下载地址: https://pan.quark.cn/s/04574399ef9b Lyriel 介绍:该型号通常设计用于肖像和全长动漫风格的照片。梦幻般的风景相当不错。 下载地址: ​​​​​​​https://pan.quark.cn/s/c13508a24a57 Realistic Vision V4.0 介绍:一个现实场景模型 下载地址:https://pan.quark.cn/s/2c1a908ddb98 国风3 介绍:这是一个中国华丽古风风格模型,也可以说是一个古风游戏角色模型,具有2.5D的质感。 下载地址: ​​​​​​​​​​​​​​https://pan.quark.cn/s/d9fa0bc5fc1d hanfu 汉服 介绍:用于生成汉服的模型 下载地址:https://pan.quark.cn/s/89a3fc6833c4 fking_scifi_v2 介绍:科幻模型,它已经接受了盔甲概念,未来派,机器人以及一些幻想的东西,比如狼人 下载地址:https://pan.quark.cn/s/b59de8a0293a Dreamlike Photoreal 2.0 介绍:生成逼真照片风格,如果要避免NSFW,请在否定提示中添加“裸体”。可以在提示中添加

局部路径规划 DWA 算法完全解析(理论推导+代码实现,包你看懂!)

转载请注明出处,谢谢 理论基础 前面学习的全局路径规划方法,Dijkstra、Best-First-Search、A*算法都属于状态采样(State Sampling)方法,而 DWA 局部路径规划则属于典型的动作采样(action sampling)方法 DWA 算法(Dynamic Window Approach)的原理主要是以一定的分辨率在速度空间 (v, w) 中采样多组速度,并模拟出这些速度在一定时间的运动轨迹,得到可行轨迹后通过评价函数对轨迹进行评分,评分后选取最优轨迹对应的 (v, w) 驱动机器人运动 速度空间 速度空间 (v, w) 即机器人的速度范围,机器人的速度受到各种因素的限制 移动机器人受自身最大速度最小速度的限制 Vs 为机器人能够到达的所有矢量速度的集合;机器人受到最大最小线速度和角速度影响 移动机器人受电机性能的影响 由于加速度有一个范围限制,所以最大加速度或最大减速度一定时间内能达到的速度 ,才会被保留,表达式如下: 移动机器人受障碍的影响 为了能在碰到障碍物前停下来,在最大减速度的条件下,速度满足以下条件: 其中dist(v,w)为(v,w)对应的轨迹上离障碍物最近的距离 在上述 3 个约束条件下,速度空间 (v, w) 会有一定的范围,注意速度空间不是固定不变的,而是时变的,t 时刻的速度空间与 t + dt 时刻的速度空间是不同的,故将其称为动态窗口 速度采样 得到 t 时刻的速度空间 (v, w) 后,以一定的分辨率对速度 v 和角速度 w 进行采样 设 t 时刻小车 x 轴线速度取值范围 5~20m/s,为简化数学模型,设 y轴线速度为0m/s,小车的角速度取值范围 0.1~1rad/s,小车的线速度的速度分辨率为0.1m/s,角速度的速度分辨率为0.05rad/s 根据离散的方法,离散 x 轴线速度和角速度如下 运动模型 之所以要分析机器人的运动学模型,是因为要根据采样的速度 (v, w) 模拟机器人的运动轨迹

docker更换国内源加速

更换docker的国内镜像源,可以加快镜像的下载。 1、在/etc/docker/下修改(如有)或创建daemon.json文件 nano /etc/docker/daemon.json 2、把以下内容复制进去: { "registry-mirrors": [ "https://registry.hub.docker.com", "http://hub-mirror.c.163.com", "https://docker.mirrors.ustc.edu.cn", "https://registry.docker-cn.com" ] } 3、重启docker systemctl restart docker 4、查看是否更换成功 docker info 显示如下: root@armbian:~# docker info Client: Docker Engine - Community Version: 24.0.4 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.11.1 Path: /usr/libexec/docker/cli-plugins/docker-buildx compose: Docker Compose (Docker Inc.) Version: v2.19.1 Path: /usr/libexec/docker/cli-plugins/docker-compose Server: Containers: 2 Running: 2 Paused: 0 Stopped: 0 Images: 5 Server Version: 24.

Mac苹果系统安装双系统Windows10 Windows11 BOOTCAMP

Mac系统安装双系统Windows10 BOOTCAMP详细 1.下载Windows系统2.开始安装3.安装驱动4.默认启动5.备注 1.下载Windows系统 注意一下所有安装全程接充电器操作,以免安装过程中电脑断电带来不必要影响。 从下列方式选择合适的系统进行下载。 MSDN https://msdn.itellyou.cn/ 微软官方 https://www.microsoft.com/zh-cn/software-download/windows10 2.开始安装 把下载好的Windows10镜像文件放在自己熟悉的地方,我这里是直接放在桌面,注意下载成功完整文件的后缀一定是iso结尾。 打开小组件,打开左下角其他。 打开其他后可以看到最左下角有个启动转换助理,之后打开启动转换助理。 打开启动转换助理后点击右下角继续按钮。 这里点击选取Windows 10 ISO 文件 选择刚才下载好的Windows镜像文件,点击打开。 这里有两个图标,macOS和Windows之间有个小点点击拖动可以调整分配给安装的Windows空间的大小,我这里给了Windows500GB的安装空间。 分配好安装空间后点击安装,这里完成后就会重启进行安装。 mac系统上进度完成后就会自动重启开始安装Windows步骤。 这个步骤选择左下角 我没有Internet连接,跳过联网步骤。 3.安装驱动 设置好Windows系统后,首次进入系统打开此电脑,可以使用快捷键command + E 键 打开此电脑,可以看到有个OSXRESERVED的虚拟磁盘,双击打开。 打开OSXRESERVED可以看到有个BootCamp的文件夹,双击打开。 打开BootCamp后双击打开里面的Setup。 BootCamp就是驱动文件,点击下一页。 点击我接受许可协议中的条款,安装。 安装驱动中。 安装驱动时屏幕可能会闪烁是正常情况,安装完成重启系统就完成了所有安装了。 需要切换两个系统只需要在开机后一直按住键盘的option键,直到出现两个磁盘符号,Macintosh就是mac系统。 4.默认启动 如果需要更改默认系统,则需要进入mac系统进行设置。打开左上角苹果图标,点击系统设置。 进入系统设置后左边选择通用,打开启动磁盘。 这里就可以看到两个磁盘一个是mac一个是windows,如果想要默认进入mac系统则选择左边的磁盘为默认,反之亦然。 选择好后验证密码重新启动就生效了。 5.备注 安装完系统后如果没有虚拟磁盘挂载,可以回到mac系统再次打开启动转换助理,点击左上角操作可以看到有个下载Windows支持软件选项。 这里选择把驱动软件保存到桌面。 下载对应的驱动文件。 下载完成后就可以看到桌面上有个WindowsSupport文件夹,这个就是驱动文件。 打开后可以看到,bootcamp文件夹就是。 找个u盘将文件夹拷贝进去,再复制到Windows系统中打开安装即可。

webpack 打包原理及流程解析,超详细!

webpack 打包原理及流程解析 1. 什么是webpack?2. 关键术语解析3. webpack核心概念4. webpack 构建流程5. webpack应用案例6. 打包分析 1. 什么是webpack? 友情提示: a.前面会稍微有些枯燥,文字居多(建议还是过一遍),后面就劲爆了!!! b.本文干货满满,非常详细,整理资料到发布文章耗时5个小时+,请大家耐心看 本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器。当 webpack 处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个 bundle。webpack 就像一条生产线,要经过一系列处理流程后才能将源文件转换成输出结果。 这条生产线上的每个处理流程的职责都是单一的,多个流程之间有存在依赖关系,只有完成当前处理后才能交给下一个流程去处理。插件就像是一个插入到生产线中的一个功能,在特定的时机对生产线上的资源做处理。webpack 通过 Tapable 来组织这条复杂的生产线。 webpack 在运行过程中会广播事件,插件只需要监听它所关心的事件,就能加入到这条生产线中,去改变生产线的运作。 webpack 的事件流机制保证了插件的有序性,使得整个系统扩展性很好。 官方的说法看不太懂的,🙈🙈可以看这个:在目前的项目中,我们会有很多依赖包,webpack负责将浏览器不能识别的文件类型、语法等转化为可识别的前端三剑客(html,css,js),并在这个过程中充当组织者与优化者的角色。 2. 关键术语解析 2.1 bundle Bundle(捆绑包)是指将所有相关的模块和资源打包在一起形成的单个文件。它是应用程序的最终输出,可以在浏览器中加载和执行。捆绑包通常由Webpack根据入口点(entry)和它们的依赖关系自动创建。当你运行Webpack构建时,它会根据配置将所有模块和资源打包成一个或多个捆绑包。 2.2 Chunk Chunk(代码块)是Webpack在打包过程中生成的中间文件,它代表着一个模块的集合。 Webpack 根据代码的拓扑结构和配置将模块组织成不同的代码块。每个代码块可以是一个独立的文件,也可以与其他代码块组合成一个捆绑包。 Webpack使用代码分割(code splitting)技术将应用程序代码拆分成更小的代码块,以便在需要时进行按需加载。这有助于减小初始加载的文件大小,提高应用程序的性能。 在Webpack中,捆绑包和代码块之间存在一对多的关系。一个捆绑包可以包含多个代码块,而一个代码块也可以属于多个不同的捆绑包。这取决于Webpack配置中的拆分点(split points)和代码块的依赖关系。 总结起来,bundle 是Webpack打包过程的最终输出文件,而chunk是Webpack在打包过程中生成的中间文件,用于组织和按需加载模块。 3. webpack核心概念 3.1 Entry 入口起点(entry point)指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。进入入口起点后,webpack 会找出有哪些模块和库是入口起点(直接和间接)依赖的。每个依赖项随即被处理,最后输出到称之为 bundles 的文件中。 3.2 Output output 属性告诉 webpack 在哪里输出它所创建的 bundles,以及如何命名这些文件,默认值为 ./dist。基本上,整个应用程序结构,都会被编译到你指定的输出路径的文件夹中。 3.3 Module