软件测试|好用的pycharm插件推荐(三)——Rainbow Brackets

简介 我们平时写代码的时候,括号是让我们非常头疼的地方,特别是代码逻辑很多,层层嵌套的情况。 一眼很难看出,代码是从哪个括号开始,到哪个反括号结束的。这个时候要是有一款工具能够让我们一眼就看出代码从哪个括号开始,到哪个反括号结束,无疑对我们会有很大帮助。 PyCharm Rainbow Brackets是一款用于PyCharm的插件,它通过为不同层级的括号添加不同颜色的高亮显示,帮助开发者更好地识别代码块和调试代码。在本文中,我们将详细介绍如何安装和使用PyCharm Rainbow Brackets插件。 安装Rainbow Brackets插件 打开PyCharm IDE,并点击顶部菜单栏中的"File"(文件)选项。选择"Settings"(设置)选项,在弹出的菜单中选择"Plugins"(插件)。 在插件窗口的搜索栏中输入"Rainbow Brackets",然后点击右侧的"Install"(安装)按钮。 安装完成后,重启PyCharm使插件生效。 使用Rainbow Brackets插件 Rainbow Brackets插件的使用非常简单,一旦安装并启用,它会自动为代码中的括号添加彩虹色的高亮显示。 打开一个Python文件或新建一个Python文件。输入一些包含括号的代码块,例如函数、条件语句或循环等。当你输入左括号(如"("、"["、"{"等)时,插件会自动为该括号及其对应的右括号添加不同颜色的高亮显示。当你输入右括号时,插件会自动匹配并高亮显示相应的左括号,以帮助你更好地理解代码结构。 如下图所示: 其他选项和定制 Rainbow Brackets插件还提供了一些选项和定制功能,允许你根据个人喜好调整高亮显示的样式和颜色。 打开PyCharm的"Settings"(设置)菜单。在插件窗口中,找到"Rainbow Brackets"选项,并展开。在这里,你可以调整括号的颜色、样式和匹配方式。你可以通过单击颜色选择器来选择自定义颜色,也可以勾选"Enabled for non-bracket pairs"选项来启用对非括号对的高亮显示。 通过这些选项,你可以根据自己的喜好和需求来定制Rainbow Brackets插件的高亮显示效果。 总结 Rainbow Brackets是一款非常实用的PyCharm插件,通过为括号添加彩虹色的高亮显示,帮助开发者更好地理解代码结构。安装和使用该插件非常简单,并且还提供了一些选项来定制高亮显示效果。 最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走: 这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

springboot 集成kafka

1. SpringBoot快速集成Kafak_springboot集成kafaka-CSDN博客 2. kafka 启动:Windows系统下快速启动Kafka_windows启动kafka-CSDN博客 3.

每日一题——LeetCode1103.分糖果 ||

方法一 个人方法: 有多少人就创建多大的数组并把数组的所有元素初始化为0,只要还有糖果,就循环给数组从头到尾添加糖果,每次分的糖果数递增1,最后可能刚好分完也可能不够,不够就还剩多少给多少。 var distributeCandies = function(candies, num_people) { var res = new Array(num_people).fill(0) var i=0 while(candies>0){ if(candies-i-1>=0){ res[i%num_people]+=i+1 candies-=i+1 }else{ res[i%num_people]+=candies candies=0 } i++ } return res }; 消耗时间和内存情况: 方法二 数学公式 详细公式推导过程: 作者:力扣官方题解 链接:leetcode 1103 题解 var distributeCandies = function(candies, num_people) { let n = num_people let p = Math.floor((2 * candies + 0.25)**0.5 - 0.5) let r = Math.floor(candies - (p + 1) * p * 0.5) let res = new Array(n).

libcurl开源库的编译与使用全攻略

libcurl简介 libcurl 是一个广泛使用的、支持多种协议的、开源的客户端URL传输库,提供了许多用于数据传输的API,例如文件传输、FTP、HTTP、HTTPS、SMTP等。libcurl 的主要特点包括 支持多种协议:libcurl 支持多种协议,如 HTTP、FTP、SMTP 等,方便开发者在不同的场景下使用。易于使用:libcurl 的 API 设计简洁,易于使用,方便开发者快速开发出网络通信功能。可移植性强:libcurl 支持多种操作系统,如 Linux、Windows、MacOS 等,方便开发者在不同的平台上使用。可定制性强:libcurl 支持插件机制,开发者可以根据自己的需求定制不同的插件,实现不同的功能。高效稳定:libcurl 在数据传输过程中采用了多种优化技术,保证了数据传输的高效性和稳定性。 总的来说,libcurl 是一个功能强大、易于使用、可移植性强、可定制性强、高效稳定的网络通信库,被广泛应用于各种软件开发中。本文章主要介绍libcurl在windows和linux平台下的编译步骤,并介绍了libcurl相关的API接口,最后通过一个demo演示如何通过libcurl发送http请求。 libcurl相关包下载 libcurl github路径libcurl发行版本路径 linux平台下载tar.gz包。以7.85.0版本为例,下载curl-7.85.0.tar.gz 包。windows平台下载zip包。 以7.85.0版本为例,下载curl-7.85.0.zip 包 openssl发行版本 :使用libcurl一般都需要依赖openssl库 openssl发行版本只有tar.gz包,windows/linux平台都使用这个包即可。以1.1.1u版本为例,下载 openssl-1.1.1u.tar.gz 包 perl下载 : windows平台安装openssl需要这个工具 linux平台libcurl库编译 由于需要依赖openssl,先编译openssl库 openssl编译 解压openssl压缩包后进入解压后的目录分别执行以下命令 ./config --prefix=${PWD}/_install sudo make sudo make install 编译安装完成后,openssl相关库和头文件都会释放到 _install 目录下 libcurl编译 解压libcurl压缩包后进入解压后的目录分别执行以下命令 ./configure --prefix=${PWD}/_install --with-openssl=${PWD}/../openssl-1.1.1u/_install sudo make sudo make install –prefix 指定的是安装目录,如果不指定会默认安装到系统目录下。–with-openssl 指定的是openssl相关库目录。编译安装完成后,相关库和头文件会释放到_install目录下 windows平台libcurl库编译 先安装perl,还需安装Visual Studio,建议使用 Visual Studio 2015解压libcurl后进入目录进入projects目录执行以下命令先编译openssl build-openssl.bat vc14 -VSpath "

vue 中import 不同层级目录下的文件的表示方式

项目场景: 项目背景: vue 项目中开发页面 需要 用到其它目录下的 文件,需要使用 import 进行导入 问题描述 问题: import util from '@/libs/util.js' import drawer from '../drawer/drawer' import mixinViewModule from '@/mixins/view-module' 解决方案: 解决方案: 一、 import 同一目录下的文件 import MyComponent from ‘./MyComponent.vue’; 二、import 上一级目录文件的方法 vue 中import 上两级的文件 在Vue中导入上两级的文件可以使用相对路径来指定。 如果要导入位于当前目录下的上两级文件,可以使用…/…/作为相对路径。示例代码如下所示: // 导入上两级的文件 import File from ‘…/…/File.js’; 其中,File.js表示需要导入的文件名称。根据实际情况修改文件名称及后缀。 目录 三种不同的表示方式: 第一种表示方式 / :相当于返回到项目根目录,返回到了整个项目的最根部。引入文件就比较繁琐。不过也是可以实现的。 第二种 ./ :这是导入同级目录下的文件。 第三种 …/ :这是导入上一级目录里的文件。 所以 上一级的上一级里面的文件,所有只需要重复两次就行 …/…/

通过Studio 3T对Mongodb进行 创建数据库/集合 增删查改集合文档操作

首先 你需要安装Studio 3T 以及启动 Mongodb服务 具体可以参考我的文章 Studio 3T客户端连接Mongodb数据库服务 我们之前 通过 use 数据库名 随便输切换是可以的 但除了这里能看到的 它们都仅存在于内存 我们右键顶部菜单 选择 添加数据库/创建数据库 这里 我们输入数据库名称 然后 点击OK 这样 我们创建的数据库就出来了 有了数据库 用MySql这种关系型数据库的逻辑 应该就要建表了 但这里不叫表 叫集合 这里 我们双击点开自己创建的数据库目录 我们右键下面的 Collections 目录 选择 添加一个集合 如下图 我们输入一下集合的名称 然后点击创建 然后 我们双击打开它 我们 右键自己创建的集合 然后选择 Open Intellishell 这个 界面 默认就有一个查询此集合的语句 db.getCollection("Book").find({}) 我们点击这里的绿色箭头 运行代码 但是目前 我们集合中没有数据 那么 安装mysql这些关系型数据库的思维 我们应该添加一条数据 这里叫添加文档 这里都是文档 我们改写代码如下 db.getCollection("Book").insertOne({ "name": "springboot" }) 指定 Book 表 insertOne 指令 里面写的有点像一个json 但它叫 Bson 它有自己的格式 我们点击运行代码

【JAVA基础】JVM之类加载--双亲委派机制

目录 1. 类加载的过程描述:看图:解释: 2. 那么类加载器都有哪些呢3. 双亲委派机制3.1 双亲委派机制的过程3.2 图看委派过程3.3 为什么要设计双亲委派机制 4. 自定义类加载器4.1 如何定义自己的类加载器? 1. 类加载的过程 描述: 我们写的.java文件通过编译成字节码文件.class文件,然后再通过我们的类加载器:Class Loader,反射以后,类模板存在方法区,把实例化的对象存在堆里; 看图: 对象的hashcode值 解释: 从图中我们可以看出,从同一个类模板new出来三个对象(实例化过程)car1、car2、car3,而他们通过car1.hashCode(); car2.hashCode(); car3.hashCode()得到的hashCode码是不一样的(说明通过new关键字得到的对象不一样);但是通过 car1.getClass();car2.getClass();car3.getClass();得到的类模板是一样的。(说明是从同一个类模板new出来对象) 总结: 对象. getClass()->获得 类模板;类模板. getClassLoader()->获得 类加载器 2. 那么类加载器都有哪些呢 类加载器主要分为四种: 1.虚拟机自带的加载器2.根加载器(启动类加载器)(BootstrapClassloader)3.扩展类加载器(ExtClassloader) (JKD1.8之后为PlatformClassLoader平台类加载器 )4.应用程序类加载器(AppClassLoader)一般来说,Java 应用的类都是由它来完成加载的 扩展类加载器(Extension ClassLoader)和 应用程序类加载器(Application ClassLoader)是继承自抽象类java.lang.ClassLoader。 需要注意的是:各个类加载器之间是组合关系,并非继承关系 3. 双亲委派机制 那么到底该有哪个类去加载呢 ?所以我们在这引出双亲委派机制; 3.1 双亲委派机制的过程 一句话:向上委派,上面能加载就会加载; 类加载器受到加载类的请求然后将这个请求向上委托给父类加载器去完成,一直向上委托: App -> Platform -> Bootstrap 直至到根加载器-Bootstrap根加载器Bootstrap会检查是否能加载当前这个类,(比如java.lang包下的所有类,根加载器都能加载); 若能加载就由根加载器来加载这个类,加载到此结束;若不能加载,则才向下传递 Bootstrap -> Platform -> App直至有加载器来加载,不然就会报错;比如ClassNotFound 一般来说,Java 应用的类都是由AppClassLoader来完成加载的 总结: 如果一个类加载器收到了类加载的请求,它首先不会自己尝试去加载这个类,而是把这个请求委派给父类加载器,每一个层次的类加载器都是加此,因此所有的加载请求最终到达顶层的启动类加载器,只有当父类加载器反馈自己无法完成加载请求时,子类加载器才会尝试自己去加载。 3.2 图看委派过程 从上图中我们就更容易理解了:

云卷云舒:数据库可以运行在容器里面吗?云可以,因为云不等于容器

数据库到底能不能跑在容器里,如果不能,那么那么多的云服务商的云数据库产品不都跑在容器里面吗? 一、一种声音:认为不能。 1、对于有状态的担忧 数据库一般是有状态的,对于容器的快速扩展十分不利,除非存储服务单独提供,同样对于产品的设计难度要求更高。 2、对于数据安全的担忧 主要是担心容器被rm掉时,容器里的数据会丢失,即使使用数据卷挂载存储数据,由于容器数据卷对Union FS 镜像的持久存储依赖,数据安全缺乏保证,同时如果容器崩溃时,若数据库未正常关闭,可能会损坏数据。 3、对于性能的担忧 数据库一般对IO要求较高,一台物理机上的多个数据库容器将提升对服务器的IO压力。为便于理解,数据库可以抽象为“程序”和“存储”两层,程序层和数据层同时作用于宿主机,对于宿主记的压力降比较大,容易出现故障,IO稍微高一些的场景就会造成数据库的承载能力指数级下降。 4、其他 其他因素也包括大家对于资源隔离、网络的担忧,通过cgroup实现资源隔离的docker仅仅做了上限值限制,并没有做下限值保证,所以其他程序依然可能会影响到本身,对于数据库来说资源的隔离级别不能保障的话,读写效率势必受到影响,而且数据库又是对客户来讲最敏感的软件设施,不容有失;容器的网络和安全性一直是比较复杂的内容,网络的虚拟化技术具有较高的门槛,不那么容易被掌握。 二、云数据库:我行,我能 以上提到的数据库容器化存在状态兼容、性能和安全等的问题,给大家带来了担忧。没错,这些问题在单纯的容器面前确实无法避免,对于重型业务单纯的容器化肯定是不行的。 这里我想说的是一个生态的概念,或者叫平台的概念,这个平台就是“云”,与其说运行在容器里的数据库,不如说“跑在云上的数据库”,因为云是一个囊括了“容器”又不仅仅只有“容器”的容器,这是广义的概念。 1、云平台具备最基本的资源管理、资源调度能力,且是自动化的。 云数据库对用户来说是一种“即开即用”的数据库,并不需要做硬件选配、软件部署和调测等工序,其高可用、数据容灾、监控告警等功能已经存在,无需用户关心资源背后的真相。对于用户来讲首先十分友好,研发团队和运维团队都可以省下大的精力去专注业务发展; 2、云平台的短平快迭代,支持新特性快速享用,新问题无感规避。 云数据库基本功能支持,以及高可用、备份容灾、安全审计等功能均可以实现对客户无感升级,且更新节奏可以做到“天”的级别,客户的研发团队不需要去针对旧版本开源数据库寻找升级版本,在做停服升级,这一点也是非常有诱惑力的,大家都知道一旦一个架构选定了一款数据库,基本都不会再去愿意改变,哪怕数据库问题很多,也不愿意动一下,除非性能严重衰减到无法使用,收到客户投诉的情况,而使用云数据库的话,升级工作交给最专业的数据库运维工程师负责,出错的概率极大降低。 3、云数据库周边生态齐备,数据传输功能齐备。 我们企业里面,往往使用数据库最多的场景就是“增删改查”,个别的使用到“触发器、存储过程”等高级特性,但是对于需要实现数据同步或者数据传输的场景,或者需要把数据通过一个消息队列传给其他团队或应用时,基本上首选思路就是写一个中介程序,通过“读出来”和“写进入”的方式来进行了,传输的性能、安全性、容错性都得不到保证。而使用云数据库,云数据库周边的生态工具比较完备,数据传输DTS、数据快递等功能原生与数据库兼容,且多支持开源数据库和其他品牌数据库,甚至支持异构同步,比如从mysql到tidb,从mysql到kafka,这个也是显著的优势。 另外可以通过DTS产品实现两个独立数据库组建成一个高可用甚至双活的数据库集群,支持MySQL双活、Redis双活不在话下,这个能力的支持线下数据库能轻易做到吗? 三、说结论:适合才是最好 两个方面决定结论: 1、云服务商的实力,头部玩家放心用 比如你用的是TOP10的云服务商,比如阿里云、华为云、腾讯云、移动云、天翼云、AWS等大型云服务商的产品,无疑产品研发迭代效率、研发团队规模等都可以得到保障,放心大胆的取用云数据库,如果你对数据库性能和隔离性要求特别高,那么选择使用他们的私有云或者专属云也是可以的。小型云服务商建议不要用,因为云服务商的竞争下,主动有一大批云服务商要退出舞台,最后剩下的依然是“头部玩家”,要么以阿里云为代表的顶级选手,要么是以“中字号”的超级选手。 2、如果你所在的企业本身就有专门的云事业部,那么也可以放心大胆的使用,但也要留一手,因为你不是“他真正的客户” 比如美团、京东等,都有自己的云事业部,甚至对外提供服务,那么也没啥问题;不过,不过也要给自己留下余地,企业的裁员随时进行,最好给自己找一个“坚强靠背”,你的数据不会因为你用了自己公司的云而提供更高级的SLA,反而在“契约化的市场行为”下,更能得到周全负责的服务保障; 3、如果企业本身是小型企业,那么你的业务可以开始向云迁移了。 数据库上云,先从非敏感性业务(分析、搜索、广告等),再到核心轻量业务(订单、物流、发货等),最后到核心重型业务(用户、财务、交易等),同时开展面向云业务的研发和运维团队构建,通过1-2年的时间完成全部业务的迁移,过程中云化的人才得以锻炼,云数据库所释放出的成本、弹性、安全、容灾、运维、生态能力将彻底改变业务研发的模式,DevOps甚至是DevSecOps不在是“听别人讲讲”,云原生应用的春天来了。 欢迎讨论和投票:你认为数据库跑在容器里面靠谱吗? 推荐文章: 云卷云舒:云原生数据库和普通数据库的区别_云原生数据库具有强一致性和高可扩展性等特点,而普通数据库则采用的是分布式数据-CSDN博客 云卷云舒:算力网络+云原生(中):探索构建算力网络数据库_云卷云舒 csdn-CSDN博客

阿里云OSS上传视频,可分片上传

uniappH5实现 阿里云OSS上传视频 示例图: 上传视频完整示例代码: 使用npm安装SDK开发包,安装命令为 npm install ali-oss --save accessKeyId 和 accessKeySecret 还有 bucket 替换成你的就行。 multipartUpload 的第一个入参是: 文件路径 + 文件名称 第二个入参是文件对象 <template> <view class="quiz"> <!-- <view class="title title3"> 上传 </view> --> <!-- 添加图片 --> <view class="mainAddpic"> <p class="addPic"> <span>选择视频</span> </p> <view class="ThreePic"> <video v-if="locVideoUrl" :src="locVideoUrl" class="add1"></video> <!-- <image class="addPic1" v-else src="@/static/upImg.png" @click="addPic" /> --> <img v-else class="picMore" @click="addPic()" src="@/static/upImg.png" /> </view> </view> <view class="btn" @click="upbtn()"> 上传保存 </view> </view> </template> <script> import OSS from 'ali-oss' import uploadFile from "

vue项目使用typescript创建抽象类及其使用

如题,可以在vue项目使用typescript创建抽象类,然后使用这个抽象类。 通过TypeScript,可以在前端应用抽象类了。抽象类的好处,可以同时满足继承和多态,好处多多。以vue3为例: 1、创建抽象类 据说js类中,#开头的变量或方法,就是私有方法。(见拙作《vue项目中的类》)但是,现在TypeScript有private、protected、public等全套 export abstract class ListPage { #queryForm //查询框表单对象,例如:const queryForm = ref(),<el-form ref="queryForm"> #myPageSetup //分页对象,例如:const myPageSetup = cloneDeep(pageSetup) constructor(queryForm, pageSetup) { this.#queryForm = queryForm this.#myPageSetup = pageSetup } //列表数据请求。抽象方法,子类必须实现 abstract doQuery(): void //查询 onSearch = () => { this.#myPageSetup.pageIndex = 1 this.doQuery() } //重置 onReset = () => { this.#queryForm.value.resetFields() } //跳转至指定页码 onPageChange = (pageIndex) => { this.#myPageSetup.pageIndex = pageIndex this.doQuery() } //改变分页大小 onPageSizeChange = (size) => { this.

企业泛域名SSL证书

SSL数字证书是一种电子证书,它由CA认证机构颁发,提供了加密连接和身份验证的功能。SSL数字证书广泛应用于各种在线服务,如网页浏览、电子邮件、在线银行等。它能够提供安全的连接,保护用户的个人信息和交易数据不被窃取或篡改。企业泛域名SSL证书是其中一种类型,今天就随SSL盾小编了解企业泛域名SSL证书。 1.企业泛域名SSL证书是只支持企事业单位申请,因为可以用一张SSL证书同时保护主域名以及主域名下的所有子域名,可以辅助企事业单位管理同一域名下的所有子域名网站的SSL证书。因此,一些连锁型教育网站、大型商城网站都会尝试使用企业泛域名SSL证书来保护网站的传输信息、用户的个人信息和交易数据不被窃取或篡改。 2.企业泛域名SSL证书手中比较多,一方面的原因就是企业泛域名SSL证书在申请时不仅要验证域名所有权,还需要验证企业的真实性。验证成功颁发SSL证书之后,部署了该证书的网站上可以查看证书信息,证书中会直接携带一些基础的企业信息。这些信息可以证明网站的身份,从而加深用户对网站的信任。 3企业泛域名SSL证书审核严格,审核时间也比较长。这款SSL证书需要人工审核,所以一般需要2-36小时才能完成审核,不过一些提升了审核速度,缩减了等待时间。例如,Sectigo成立了亚太审核中心,旗下的企业泛域名SSL证书价格是一千五百九十元,审核时间最快为2小时。

【自控实验】2. 采样控制系统特性

本科课程实验报告,有太多公式和图片了,干脆直接转成图片了 仅分享和记录,不保证全对 通过对二阶连续系统、二阶采样系统和具有保持器的二阶采样系统仿真实验,比较三种系统的特性,加深对采样控制系统的了解 使用matlab中的simulink进行仿真

开启你的AI绘画之旅!Stable Diffusion傻瓜式安装教程

01 前言 AI绘画热度一直不减,无论是画师还是普通人都可以根据自己的需求生成独一无二的AI图片。 AI画图的两座大山,一座叫Midjourney,一座叫Stable Diffusion。 前者的上手难度更低,对硬件的需求几乎为0。缺点是收费。 后者需要有一定的动手能力,以及一台不错的电脑来进行本地部署。 本文根据“赛博菩萨”B站大佬@秋葉aaaki 提供的整合包进行讲解。一键式部署Stable Diffusion。 获取下载方式: 02 硬件要求 CPU:无 内存:至少8GB或更高。如果想要更好的性能,建议使用16GB或更高的内存。 显卡:Nivida 1060 6G 以上(A卡不支持,只能用处理器进行渲染) 存储:个人建议预留50G以上的硬盘空间。 操作系统:Windows 7或更高版本,或Mac OS X 10.9或更高版本 03 安装教程 1、解压缩安装包“sd-webui-aki-v4.4.7z” 打不开的小伙伴请安装文件夹内的7zip解压软件 2、安装启动器依赖 3、找到目录下的“A启动器.EXE”并打开。第一次打开会安装各种配置文件,等待即可。 4、一键启动 5、等待shell加载完成并弹出网页,至此Stable Diffusion安装成功。 下图就是Stable Diffusion的操作台,有机会再给大家出一期使用教程。 资料分享 小编整理了一份AI绘画的入门资料包,包括Stable Diffusion和Midjourney的安装包等等,wx扫描二v码免费领取 【保证100%免费】

一步步带你解锁Stable Diffusion:SD保姆级安装教程

之前和小伙伴们说过后续也会开始分享 Stable Diffusion 的相关操作指南,不过之前也有分享过 Stable Diffusion 的一些骚操作,比如艺术二维码和艺术光影字体。 但是既然是学习笔记嘛,当然是要有始有终啦,必须系统的开始分享才对得起各位关注我的小伙伴嘛。 所以呢,我们今天就从SD的安装开始讲「后续都以SD来代表 Stable Diffusion 了哈,字少一点也是好的,毕竟手累啊」。 具体介绍呢,其实可以对照 Midjourney「后续简称MJ」 ,只不过MJ是线上付费的,SD是可以免费安装在自己电脑里的「就是对电脑的配置要求有点高」;嗯,MJ相对操作简单一点,SD操作门槛要高一点。 嗯,咋说呢,以武林秘籍为例,SD的心法等级要比MJ更高一些,你投入的精力越多,收获也就越大。SD相对MJ来说,更千变万化一些,你永远不知道SD的潜力在哪里。 话说多了,直接上干货。后续大家可以自行体会哈! — 小伙伴们想体验SD呢,主要可以有三种方式: 方案一:部署在自己电脑上「对电脑的基础配置有要求」。 方案二:部署在云服务器上「需要花点小钱,也不贵」。 方案三:直接白嫖在线网站的SD。 上面三种方案各有各的优缺点,下边等我介绍完以后,大家对号入座,各取所需哈。 方案一:本地部署「安装在自己电脑上Windows版本」 注:Mac我没有啊,没操作过就没有发言权,所以我这边主要介绍Windows版本下的本地部署。 配置要求: 内存16G以上,8G就不太推荐了,8G现在开几个应用就很卡了。显卡一般需要N卡「Nvidia」,不建议A卡「AMD」。显存要4G以上,显存越大越好,尤其涉及到跑大图和炼丹「后续也会介绍」的时候。CPU并没有太多要求。固态硬盘建议200G以上,毕竟一个模型就好几个G了。 以下是显卡在运行 SD 时候的性能对比,大家可以直观感受下,然后选择合适自己的显卡。我自己用的是 RTX3060 12G 版本的显卡,算是入门级配置吧「基本可以体验SD的所有功能,就是慢点」。 首先这里要拜谢一下B站的秋叶大神,开发了 SD 一键整合包,不需要我们一步一步去试错,抓耳挠腮了。没错,就是传说中的懒人整合包,熟悉吧! 以下是整合包的获取方法: 下载下来有这三个文件,首先点击「启动器运行依赖」,按步骤点击安装完成即可。第一个文件先不讲哈,暂时用不上。 然后第二步解压「sd-webui-aki-v4.1.zip」文件,现在已经更新到了4.2版本了,操作是一样的。百度网盘中是4.2的版本。 解压以后是这样的,点击「A启动器.exe」就可以了。 出现这个页面是正常的,等待更新完成就可以了。 这个就是启动页面了,点击「一键启动」即可。 等待启动成功以后,在你的默认浏览器上跳出这个页面就算是启动成功啦,你就可以愉快的玩耍啦! 方案二:云部署 如果电脑配置不够,又想玩 SD 怎么办呢,有办法的,毕竟条条大路通罗马不是,接下来我就来讲讲怎么云部署呢,其实也简单的。 首选呢你需要选择一个 GPU 云租赁平台,因为SD只能在 GPU 云平台上部署,我这边使用的是 AutoDL 算力云平台,我就用 AutoDL 来展示了。 AutoDL 网址:https://www.autodl.com/home 注册登录以后首先当然是先充钱啦,小伙伴们把鼠标移动到首页右上角,会弹出以下界面,点击充值就好了,可以先充个5块10块就足够了。 然后大家选择算力市场,默认计费方式就是「按量计费」,我们默认就行,以下是不同 GPU 型号每个小时的价格,大家可以按自己的需求租赁。我反正一般是用的 RTX 3080 ,每个小时不到1块钱。 进来这个页面以后选择社区镜像,输入 LazyDog ,选择最新版本就行。没错,这里也有懒人一键包,这也是各路大神已经帮你搭建好镜像了,你直接用就行。其他参数默认就行,然后点击右下角的立即创建。 等待实例创建并开机。

设计模式原理与分析

一、设计模式原理与分析 1、概念 设计模式是在软件开发过程中总结得出的一些可重用的解决方案,它能解决一些实际的问题。一些常见的模式,比如工厂模式、单例模式等等。 封装、继承、多态只是类的三大特性,在程序设计时并不是说使用到了这三个特性就是面向对象,真正的面向对象的设计要符合设计模式五个原则。

模型评估:余弦距离的应用

其实在模型训练过程中,我们在不断地评估着样本间的距离,如何评估样本距离也是定义优化目标和训练方法的基础。 在机器学习问题中,通常将特征表示为向量的形式,所以在分析两个特征向量之间的相似性时,常使用余弦相似度来表示。余弦相似度的取值范围是[-1,1],相同的两个向量之间的相似度为1。如果希望得到类似于距离的表示,将1减去余弦相似度即为余弦距离。因此,余弦距离的取值范围为[0,2],相同的两个向量余弦距离为0. 1.为什么在一些场景中要使用余弦相似度而不是欧氏距离 对于两个向量A和B,其余弦相似度定义为,即两个向量夹角的余弦,关注的是向量之间的角度关系,并不关心它们的绝对大小,其取值范围是[-1,1]。当一对文本相似度的长度差距很大,但内容十分相近时,如果使用词频或词向量作为特征,它们在特征空间中的欧氏距离通常很大;而如果使用余弦相似度的话,它们之间的夹角可能很小,因而相似度高。此外,在文本、图像、视频等领域,研究的对象的特征维度往往很高,余弦相似度在高维情况下依然保持“相同时为1,正交时为0,相反时为-1”的性质,而欧氏距离的数值则受维度的影响,范围不固定,并且含义也比较模糊。 在一些场景,例如Word2Vec中,其向量的模长是经过归一化的,此时欧氏距离与余弦距离有着单调的关系,即 其中表示欧氏距离,表示余弦相似度,表示余弦距离。在此场景下,如果选择距离最小(相似度最大)的近邻,那么使用余弦相似度和欧式距离的结果是相同的。 总体来说,欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异。例如,统计两部剧的用户观看行为,用户A的观看向量为(0,1),用户B为(1,0);此时二者的余弦距离很大,而欧氏距离很小;我们分析两个用户对于不同视频的偏好,更关注相对差异,显然应当使用余弦距离。而当我们分析用户活跃度,以登录次数(单位:次)和平均观看时长(单位:分钟)作为特征时,余弦距离会认为(1,10)、(10,100)两个用户距离很近;但显然这两个用户活跃度是有着极大差异的,此时我们更关注数值绝对差异,应当使用欧氏距离。 特定的度量方法适用于什么样的问题,需要在学习和研究中多总结和思考,这样在遇到新的问题时也可以活学活用。 2.余弦距离是否是一个严格定义的距离? 该题主要考察对距离的定义的理解,以及简单的反证和推导。首先看距离的定义:在一个集合中,如果每一对元素均可唯一确定一个实数,使得三条距离公理(正定型、对称性、三角不等式)成立,则该实数可称为这对元素之间的距离。 余弦距离满足正定型和对称性,但是不满足三角不等式,因此他并不是严格定义的距离。具体来说,对于向量A和B,三条距离公理的证明过程如下。 正定性 根据余弦距离的定义,有 考虑到 ,因此有恒成立。特别地,有 对称性 根据余弦距离的定义,有 因此余弦距离满足对称性。 三角不等式 该性质并不成立,下面给出一个反例。给定一个A=(1,0),B=(1,1),C=(0,1),则有 因此有 其实从问题1中,我们也能够得出:单位圆上欧氏距离和余弦距离满足 即有如下关系 显然在单位圆上,余弦距离和欧氏距离的范围都是[0,2]。我们已知欧氏距离是一个合法的距离,而余弦距离与欧氏距离有二次关系,自然不满足三角不等式。具体来说,可以假设A与B、B与C非常近,其欧氏距离为极小量;此时A、B、C虽然在圆弧上,但近似在一条直线上,所以A与C的欧氏距离接近于。因此,A与B、B与C的余弦距离为;A与C的余弦距离接近于,大于A与B、B与C的余弦距离之和。 在机器学习领域,被俗称为距离,却不满足三条距离公理的不仅仅有余弦距离,还有KL距离(Kullback-Leibler Divergence),也叫作相对熵,它用于计算两个分布之间的差异,但不满足对称性和三角不等式。

AI绘图哪家强?50款AI绘图软件大盘点【内附Midjourney保姆级上手教程】

2023年是AI爆炸发展的一年。在ChatGPT、Midjourney推出后,各路AI产品如同雨后春笋一般争先发布。 今天就为大家盘点一下,目前世面上比较火的24款AI绘图软件,并附上Midjourney最新注册教程以及使用方法! Midjourney Midjourney可谓是2023年最火的AI绘画工具,一经发布就让无数设计师直呼“要失业了”。 只要输入关键词,Midjourney就能生成任何你想要的图片。 目前搭载在discord平台上的AI绘画聊天机器人,有点像在微信里使用小程序,需要先注册discord账号,然后进入Midjourney频道即可使用。(文末附注册教程) Stable Diffusion Stable Diffusion 是一个强大的开源AI绘画模型,只需要输入一句提示词(prompt),就能快速生成出令人惊叹的绘画作品。 Stable Diffusion 目前完全免费开源,所有代码均在 GitHub 上公开,任何人都可以拷贝使用。 Leonardo.ai Leonardo是一个AI绘图社区,同时也提供AI绘图功能。 Leonardo的功能是基于Stable Diffusion网站,同时深度集成了Stable Diffusion的各种插件,比如ControlNET的openpose姿势参考、局部重绘、prompt提示等等,甚至还提供了傻瓜式在线训练自己模型的功能。 NightCafe Generator NightCafe Generator一款免费的AI绘画生成器,简单输入一段描述文字,自动生成对应场景的图片。 NightCafe Generator提供丰富的AI绘画生成风格选择,多种类型图像风格可以挑选,输入关键词描述就可以一键生成想象中的绘画作品,功能非常强大,操作简单。 GRAVITI Diffus GRAVITI Diffus是一个在线的AI绘图工具,相当于网页版的Stable Diffusion WebUI ,打开即用,无需部署,无须强大的电脑,更无需GPU显卡! 无界AI 无界AI是一款国产绘图软件。集prompt搜索、AI图库、AI创作、AI广场等为一体的在线产品。提供一站式AI搜索-创作-交流-分享服务。 Aski AI Aski AI是一款中文AI,提供问答、写作、绘画一站式AI创作功能。 小狸猫AI绘画 小狸猫是一款AI绘图工具,目前已经推出微信小程序,内测阶段所有用户无限免费创作。核心功能就是AI绘图和AI词库。 商汤秒画 商汤自研的AI作画产品“秒画”,可以结合文本及图片输入,进行图像内容的创作生成。同时支持多样化的风格选择,模型内使用了flash attention的算法优化技术,出图速度更快。 平台内包含多个商汤自研模型及用户分享的社区模型,同时还支持用户finetune、动作控制等功能。 数字鸭AI助手 数字鸭接入gpt4 api和midjourney最新版本模型,midjourney目前支持MJ v5.1和NIJI 5模型。 造梦日记 造梦日记是西湖心辰联合西湖大学研发的一款AI绘画工具,覆盖多模态模型训练和图像生成,包括二次元头像生成、图片设计等,可应用于绘画、动漫游戏、运营策划和电商等领域,人人都可实现自己的创作梦。 意间AI绘画 意间AI绘画是国产的一款AI绘画产品。通过输入关键词或自定义的参考图,就可以创造出独一无二的AI作品。 360鸿图 360鸿图是 360 公司旗下的AI 绘画产品,输入关键词,图片立即生成。 Stable Diffusion Reimagine Stable Diffusion Reimagine 是一种新的 Clipdrop 工具,它允许用户无限制地生成单个图像的多个变体。无需复杂的提示语:用户只需将图像上传,通过算法即可创建任意数量的变体。

css 怎么绘制一个带圆角的渐变色的边框

1,可以写两个样式最外面的div设置一个渐变的背景色。里面的元素使用纯色。但是宽高要比外面元素的小。可以利用里面的元素设置padding这样挡住部分渐变色。漏出来的渐变色就像边框一样。 <div class="cover-wrapper"> <div class="item-cover"> </div> </div> .cover-wrapper{ background: linear-gradient(310deg,#821ced,#e7166b); border-radius:16px; } .item-cover{ border-radius:16px; padding:2px;//padding值就是渐变边框的宽度 background:#000; } 2.使用 background-image border: 1px solid transparent; background-clip: padding-box,border-box; background-origin: padding-box,border-box; background-image: linear-gradient(90deg,#BBFAEB,#DCF9E6 42%,#F4F9E2),linear-gradient(151deg,#33e9bf,#c7e58a,#b1e8cc); #BBFAEB,#DCF9E6 42%,#F4F9E2是填充的颜色 #33e9bf,#c7e58a,#b1e8cc是边框的颜色 推荐使用第二种方法 。第一种圆角的地方不够圆滑。细看的话稍微有点和其他地方粗细不一致

postgresql 流复制相关参数及影响

修改流复制相关的参数,测试影响 wal_level wal日志级别,这个参数决定了有多少信息写入wal日志,默认是replica。(TDSQL-PG 默认是 logical minimal:除了实例crash恢复需要的记录,其他不记录,比如CREATE TABLE AS,CREATE INDEX,CLUSTER,COPY可以跳过,该模式记录的日志信息不足以支持wal归档和流复制。replica: 这种模式支持复制和wal归档,同时支持备库只读查询。replica:在9.6之前还有archive和hot_standby模式,映射到现在的replica模式。logic:在replica的基础上增加一些信息以支持逻辑解码,该模式会增大wal日志的数量,尤其是大量的update,delete操作的库。 日志写入量为logical>replica>minimal,主备复制配置为replica,逻辑复制配置成logical 实验:将wal_level设置为minimal,观察影响 关闭备机、主机 [pg@localhost data]$ pg_ctl -D /data/db2/ stop waiting for server to shut down.... done server stopped [pg@localhost data]$ pg_ctl -D /data/db1/ stop waiting for server to shut down.... done server stopped 修改主机wal_level为minimal [pg@localhost ~]$ vi /data/db1/postgresql.conf ----------------------------------------- wal_level = minimal ----------------------------------------- [pg@localhost ~]$ pg_ctl -D /data/db1/ -l /data/db1/server.log start waiting for server to start.... stopped waiting pg_ctl: could not start server Examine the log output.

std::vector 常用用法汇总和代码用例

文章目录 用法汇总完整示例代码.begin() 的用法 用法汇总 初始化 vector。添加元素(使用 push_back)。访问元素(使用 [] 运算符和 at() 方法)。获取大小(使用 size())。遍历元素(使用范围基于的 for 循环和迭代器)。删除元素(使用 pop_back() 和 erase())。访问最后一个元素(使用 back())。清空 vector(使用 clear())。 完整示例代码 #include <iostream> #include <vector> int main() { // 1. 初始化 vector std::vector<int> vec; // 2. 添加元素 vec.push_back(1); vec.push_back(2); vec.push_back(3); // 3. 访问元素 std::cout << "第一个元素: " << vec[0] << std::endl; std::cout << "第二个元素: " << vec.at(1) << std::endl; // 4. 获取大小 std::cout << "Vector 大小: " << vec.size() << std::endl; // 5.

SQLAlchemy多列查询去重

1、参考:https://blog.csdn.net/nongcunqq/article/details/120220247 https://docs.sqlalchemy.org/en/14/orm/query.html 2、代码示例: db.session.query(Test).with_entities(Test.Name,Test.Age).distinct().all()

如何查看SSL证书到期时间

随着互联网的发展,SSL证书在保护网站安全方面发挥着越来越重要的作用,SSL证书过期之后带给网站的损失也比较大,许多网站管理员可能会忽略SSL证书到期的问题,从而导致网站安全漏洞。今天,就随SSL盾小编了解有什么办法查看SSL证书的到期时间。 1.用户在购买SSL证书之后用户可以进入SSL证书管理系统,在SSL证书管理系统中可以配置、部署、下载SSL证书,也可以查看SSL证书信息,在证书信息页面回标注SSL证书到期时间。 2.用户也可以通过浏览器来检查SSL证书的到期日期。当用户在浏览器中访问一个部署了SSL证书的网站时,浏览器地址栏会有小锁标志,点击小锁标志会显示证书信息。证书信息中会有证书的过期时间。如果SSL证书已经过期,浏览器通常会显示“不安全”警告,提醒用户网站存在安全风险;如果网站部署的SSL证书不是正规CA认证机构颁发的,浏览器也会提示。 3.除了直接查看SSL证书的过期日期外,我们还可以检查证书颁发机构(CA)的吊销列表。如果SSL证书被吊销,那么它就不再有效。因此,定期检查吊销列表可以确保我们的SSL证书是有效的。 4.在SSL证书到期前30天,SSL证书管理系统会直接向用户发送续费通知,因此,用户可以隔一段时间登录SSL证书管理系统查看SSL证书状态。

申请Certum IP证书的方法

Certum是波兰的一家数字证书颁发机构,可以为只有公网IP地址的网站提供IP证书的申请服务,为网站传输信息进行加密,提高网站SEO排名。Certum旗下的IP证书产品不多,其中比较受欢迎的就是DV基础型IP证书。今天就随SSL盾小编了解Certum旗下的DV基础型IP证书的申请方法。 一、找到正规的Certum IP证书购买平台。 正规的Certum IP证书购买平台都是可以开正规的发票,也不惧怕和用户签订购买合同,还有完善的售后服务,能够在30天内无理由退款。 二、购买Certum IP证书。 在正规的Certum IP证书购买平台选择购买DV基础型的IP证书,这款IP证书是Certum旗下入门级的IP证书,价格是二百六十元,可以保护单个公网IP地址,在证书购买30天内可以联系客服更改公网IP地址。 三、验证公网IP地址 购买Certum旗下的DV基础型IP证书之后,需要生成相对应的CSR与key,将它提交给Certum之后就需要验证公网IP地址的所有权,以确保公网IP地址的真实性和可用性。在验证期间,需要打开443或者80端口,验证结束之后可以关闭多余的端口 四、颁发公网IP证书 如果IP地址验证失败,Certum将通过电子邮件或短信通知用户并提供相应的解决方案;如果验证成功,Certum就会颁发IP证书。当然,如果颁发IP证书出现问题,也可以直接联系服务商客服解决问题。

英语单词词库-资源分享

英语单词词库-资源分享 简介 103976个英语单词库 (sql版,csv版,Excel版) 库表中包含英文单词,中文翻译,单词的词性及多种词义, 执行SQL语句就可以生成表,支持SQL Server,MySQL等多种数据库。 支持phpMyAdmin直接导入。 文件列表说明: EnWords.sql SQL导入文件,MySQL版本,可以直接在phpMyAdmin中导入。也可以直接导入MS SQL Server各个版本中。EnWords.csv Excel格式文件,也可以用于导入到数据库中。SQLQuery.sql MS SQL Server版本。执行效率不高,推荐用EnWords的版本。 需要资源的可以关注我下面的推广的公众号,回复英语即可免费领取。 如果大家觉得有用的话,可以关注我下面的微信公众号,极客图书馆,我会在里面更新更多行业资讯,企业面试内容,编程资源,如何写出可以让大厂面试官眼前一亮的简历,让大家更好学习编程,我的抖音,B站也叫极客李华。

第11届电气与电子工程国际会议(ICEEE 2024)即将召开!

2024年第11届电气与电子工程国际会议(ICEEE 2024)将于2024年4月22-24日在土耳其马尔马里斯召开。随着电气和电子工程领域取得的重大进步,ICEEE也迈向未来,有了更多令人兴奋的发展。本次会议旨在促进对该领域最新技术进步、新兴趋势和创新理念的讨论,来自全球知名的专家将分享他们在电力电子、控制系统、信号处理、通信系统等主题上的见解、经验和研究成果。 会议官网: The 11th ICEEE 2024​www.iceee.org​编辑The 11th ICEEE 2024 / Welcome to Marmaris, Turkey!http://www.iceee.org/The 11th ICEEE 2024​www.iceee.org​编辑 组织单位: 征稿主题: * 发电、输电和配电 * 高压工程与绝缘技术 * 控制 * 电力系统 * 电力电子、系统与应用 * 可再生能源、智能电网技术与应用 * 电路与系统 * 计算机与信息技术 * 电机与可调速驱动器 * 通信系统 * 信号处理 *智能城市 *智能建筑技术 更多征稿主题请见会议官网 会议出版及检索: 录用文章将被收录至 ICEEE 2024 会议论文集, 由IEEE出版, 并被EI Compendex 和 Scopus 检索。 往届录用文章均已被IEEE Xplore收录,并被EI核心和Scopus检索。 会议历史: 核心组委会: - 国际咨询委员会 - Mohamed Benbouzid, 法国布雷斯特大学 Angrisani Leopoldo, 意大利那不勒斯费德里科二世大学

【PDF密码】PDF文件为什么无法修改?为什么PDF文档不支持编辑?

pdf文件大家应该都经常接触,但是不知道大家会遇到这种情况:有些PDF文件打开之后无法编辑?是什么原因呢?今天我们来分析一下都是那些原因导致的。 首先我们可以考虑一下,PDF文件中的内容是否是图片,如果确认是图片文件,那么我们想要编辑,就可以先使用PDF编辑器中的OCR扫描功能,将图片中的内容扫面下来,形成文字文件再进行编辑。 还有一个原因就是我们常见的PDF文件限制编辑,我们需要将限制取消才能够编辑文件。 那么,我们应该如何取消密码,编辑文件呢?方法如下: 打开PDF编辑器,点击工具栏中的文件,选择属性按钮,进入到熟悉感界面之后,点击安全,然后我们点击权限下拉框,选择无保护。 选择无保护之后,PDF编辑中会弹出密码提示框,我们需要输入正确的密码,点击确定。 如果密码正确,则会弹出另一个提示框,提示文档将删除安全设置,我们点击确定,就代表已经取消PDF文件的限制编辑了。 如果密码不正确则无法取消,PDF文件将仍然带有限制编辑,不过我们也可以尝试将PDF文件转换为其他格式的文件来解决问题。不过现在PDF转换器的质量层次不齐,很多PDF文件转换为其他格式之后仍然不便于编辑,还有些PDF转换器不支持带有限制编辑的文件进行转换。那么我们还可以尝试其他工具来解决问题,比如超人PDF解密助手。解除限制功能支持PDF限制编辑的取消。 无需输入密码,添加PDF文件之后点击开始即可取消PDF限制编辑。按照输出目录就可以找到没有限制的PDF文件了。

频数表和列联表,以及进一步处理分析 -- R

目的 数据框包含了一些分类变量,问? 1.如何统计分类变量的分布次数 -- 频数表 2.如何统计多分类变量的分布次数 -- 频联表 3.单个分类变量的分类结果是否满足理论分类结果 -- 拟合优度问题 4.多个分类变量的分类结果是否相关干扰 -- 分类变量(多因素)独立性检验 数据 library(vcd) data(Arthritis) head(Arthritis) # ID Treatment Sex Age Improved #1 57 Treated Male 27 Some #2 46 Treated Male 29 None #3 77 Treated Male 30 None #4 17 Treated Male 32 Marked #5 36 Treated Male 46 Marked #6 23 Treated Male 58 Marked # 频数表 table(Arthritis$Treatment) # Placebo Treated 43 41 # 频联表 table(Arthritis$Treatment,Arthritis$Improved) # None Some Marked # Placebo 29 7 7 # Treated 13 7 21 代码 操作频数表 # 把频数表变成百分比占比 prop.

vue3的自定义hooks

文章目录 前言一、vue3 中的hooks 如何理解二、vue3自定义 hook 需要满足的规范三、hooks与utils的区别总结 前言 Vue3 的 hook函数的出现,可以让我们更好抽离重复逻辑,聚合相同的功能。它与vue2 中的mixins 有点类似,但是相对 mixins 而言, hooks 函数 更清楚复用功能代码的来源, 更清晰易懂。使用 Vue3 的组合 API 封装的可复用,高内聚低耦合。 一、vue3 中的hooks 如何理解 Vue 3 中的自定义 hooks 是一种用于封装可重用逻辑的机制。它的本质和原理是基于 Vue 3 的组合式 API,利用了函数式编程的特性。 在 Vue 3 中,自定义 hooks 实际上是一个普通的 JavaScript 函数,可以在组件的 setup 函数中调用。这个函数可以包含任意的逻辑,例如处理数据、副作用等。自定义 hooks 可以返回任何你想要的值,例如响应式数据、方法或其他工具函数。 自定义 hooks 的关键在于利用了 Vue 3 的 ref、reactive、computed 等函数,以及生命周期钩子函数。通过在 setup 函数中调用这些函数,我们可以创建响应式数据、计算属性,并在适当的生命周期钩子函数中执行相应的操作。 当一个组件使用自定义 hooks 时,它实际上是在执行自定义 hooks 函数,并将返回的值解构到组件的选项中。这样,组件就可以访问自定义 hooks 中定义的响应式数据和方法,并将其用于组件的渲染、交互和其他逻辑中。 自定义 hooks 的原理是基于闭包和函数作用域。每个组件实例都有自己的作用域,当调用自定义 hooks 函数时,它会在组件的作用域中创建一个独立的闭包,以保持自定义 hooks 中的状态和逻辑与组件实例的其他部分隔离。

第九届远程教育与学习国际会议(ICDEL 2024)即将召开!

2024年第九届远程教育与学习国际会议(ICDEL 2024)将于2024年6月14-17日在中国广州召开,由华南师范大学主办。在信息通信技术和学习科学发展的影响下,远程教育的进一步发展和传播,使之逐渐成为当前教育领域的重要组成部分。ICDEL 2024旨在促进远程教育与学习等领域的学术交流与合作,热忱欢迎从事相关技术研究的专家、学者和专业技术人员踊跃投稿并参加大会。 会议官网: ICDEL 2024https://www.icdel.org/index.html 组织单位: 征稿主题: 第一类:一般方法和问题 基于网络的混合学习 开放教育 移动学习(M-learning) 远程教育的关键因素 教学的认知、情感和社会方面 全球背景下的学习 国际化和本地化 新兴和未来趋势 教育应用 教师的信息通信技术技能和能力 ICT 增强语言教学 第二类:实施问题 学习内容的设计与开发 中小学教育 高等教育和职业培训 家庭教育 为不同残疾用户提供无障碍服务 课程交付问题 组织和管理问题 教育教育者 绩效衡量 能力评估 成功的故事 第三类:方法论和教学问题 教学策略和策略 协作学习 传达设计 社交环境中的在线学习 学习游戏化 情境化和情境化学习 结合传统和在线学习 翻转课堂 培养批判性素养 解决个体差异 在线环境中的脚手架自我监管 反馈设计 第四类:工具、系统和技术问题 在线学习基础设施和架构 开源学习环境 智能接口 交互式电子学习系统 个性化的学习环境 电子学习多媒体应用 发布工具 新兴硬件和软件 第五类:道德和社会问题 欺凌 抄袭 股权问题 电子学习对社会变革的影响 文化因素对电子学习的影响 会议出版及检索: ICDEL 2024如往届会议一样,会议被录用并注册的文章将出版到ICDEL 2024会议论文集,并提交至ACM Digital Library数据, 被EI Compendex, Scopus等数据库检索。

thinkphp 3.2查看sql

$model = M('User'); // 创建模型对象 // ...其他操作... echo $model->getLastSql(); // 输出最后执行的SQL语句

批量合并PDF 文件的 5 大解决方案

PDF 可以将一个、两个、三个甚至更多的记录封装在一起,以显示完整的信息和用于逻辑和交互式结构化的不同元素。由于 PDF 可以提出多层结构,因此当用户知道如何最大化这种格式时,将所有文件组织到其中非常有效。正如许多经验丰富的用户和 PDF 格式的用户一样,需要将记录的不同变体合并为一个,而真正令人头疼的是您将需要进入这个过程。 即使是现在,许多用户仍然认为这是一项具有挑战性的任务,但今天,我们将使您的一切变得更轻松。与其在市场上徘徊使用哪个,不如花一分钟阅读我们对此处添加的合并的评论?除此之外,我们还为您提供了将PDF 合并或组合成单个文档的步骤。看完这篇文章,了解更多! 使用最佳 PDF 组合器/合并器合并 PDF 文件的前 5 种方法 对于那些想要更深入地了解我们在此处添加的 PDF 合并器和组合器的人,您最好阅读我们在每个合并器上添加的信息。为了帮助您获得更多帮助,请阅读然后根据您选择使用的应用程序执行此处包含的步骤。 1. 奇客免费PDF合并 - 市场上顶级的 免费PDF 合并器 奇客免费PDF合并是一个简单而有效的应用程序,您可以下载它来了解如何合并 PDF 文件,即使它们是多个文件和页面。它在合并方面的实力是无与伦比的,因为它完全配备了 PDF 用户在此任务中可能需要的合适功能。即使您是新手,也不难理解此应用程序的工作原理。按照以下指示的步骤享受它提供的最终合并。 步骤1: 在您的设备上打开奇客免费PDF合并。 PDF转Word_PDF在线转换_PDF格式转换-奇客在线PDF转换器奇客PDF能让您轻松惬意地将PDF文件转换为Word,PPT,Excel,JPG,PNG,TXT等各种文件格式,也能将其它文件格式转换为PDF文件。文件转换过程不需要您注册账号或安装软件。https://www.geekersoft.cn/pdf-converter-online.html 第2步:在界面的左上角并单击添加文件。上传要合并 PDF 的文件。 第 3 步: 上传 PDF 文件后,您可以先设置最终输出的目标文件夹以快速找到它,然后点击合并按钮让应用程序处理它。您现在可以在等待 PDF 文件时高枕无忧了。 2. Adobe Acrobat Adobe Acrobat是一种流行的解决方案,您可以在 Web 上使用它。该应用程序由 PDF 格式的制造商 Adob​​e 提供支持,因此,自然地,他们将创建一个应用程序来处理该格式。由于本文提到了该应用程序,值得一提的是它还有一个额外的PDF 压缩器,可以快速缩小文件大小。与同一管理下开发的应用程序不同,这个应用程序由于其直观的界面而更易于使用,其目的仅集中于组合。因此,如果您想使用此 Adob​​e 合并 PDF 应用程序,请按照此处的步骤操作。 步骤1: 去网页上访问Adobe合并的官方网页。 第2步: 单击主网站上的“选择文件”按钮以添加要合并的 PDF。上传过程可能需要一段时间,就像后续应用程序一样,因为它们的过程将取决于您的互联网稳定性和强度。 第 3 步: 勾选您要处理的每个 PDF 文件的复选框,然后单击合并。之后,单击下载以在您的设备上下载 PDF 文件。

[开发语言][python][c++]:C++中的this指针和Python中的Self -- 26岁生日

C++中的this指针和Python中的Self 1. python中的Self2. C++中的this指针3. C++中的this指针和Python中self的异同点: 以朋友的新岁祝福开篇,祝笔者也祝大家☺️: 一岁一礼 一寸欢喜 且喜且乐 且以永日 ​ From VardoZ 癸卯年十一月廿六(兔年) 之前一直对 C++ 中的 this 和 python 中的 self 到底是什么关系,为什么 C++ 要显式的写出来,python 则不需要? 模糊不清,趁着周末整理一下相关结论,希望本篇文章可以解答这些问题,同时对C++和Python中的类加深些理解。 1. python中的Self python 当对象调用类中的函数的时候,系统会自动把当前对象传入函数作为函数的第一个参数self(当前对象 = self),不过可以用其他 token 代替 self。因此在定义的时候,需要声明 self 这个形参,调用时,却不需要手动传入对象(系统会自动传入)。 class A: def test(x): print(x) # x 接收 12 这个参数 A.test(12) a = A() # x 接收 a 这个对象 a.test() class A: def test(mine, x): print(x) # mine 接收 1,x 接收 12 A.

[开发语言][c++]:左值、右值、左值引用、右值引用和std::move()

左值、右值、左值引用、右值引用和std::move 1. 什么是左值、右值2. 什么是左值引用、右值引用3. **右值引用和std::move的应用场景**3.1 实现移动语义3.2 **实例:vector::push_back使用std::move提高性能** **4. 完美转发 std::forward**5. Reference 写在前面: 如果你也被左值、右值、左值引用、右值引用和std::move搞得焦头烂额,相关概念和理解不够深入,或者认识模棱两可,那么这篇文章将非常的适合你,耐心阅读,相信一定会有所收获~~ 1. 什么是左值、右值 左值: 可以取地址、位于等号左边 – 表达式结束后依然存在的持久对象(代表一个在内存中占有确定位置的对象) 右值: 没法取地址、位于等号右边 – 表达式结束时不再存在的临时对象(不在内存中占有确定位置的表达式) 便携方法:对表达式取地址,如果能,则为左值,否则为右值 int val; val = 4; // 正确 ① 4 = val; // 错误 ② 上述例子中,由于在之前已经对变量val进行了定义,故在栈上会给val分配内存地址,运算符=要求等号左边是可修改的左值,4是临时参与运算的值,一般在寄存器上暂存,运算结束后在寄存器上移除该值,故①是对的,②是错的 2. 什么是左值引用、右值引用 引用本质是别名,可以通过引用修改变量的值,传参时传引用可以避免拷贝,其实现原理和指针类似。 左值引用:指向左值的引用,称为左值引用 int a = 5; int &ref_a = a; // 左值引用指向左值,编译通过 int &ref_a = 5; // 左值引用指向了右值,会编译失败 引用是变量的别名,由于右值没有地址,没法被修改,所以左值引用无法指向右值。 那么const左值引用可不可以指向右值呢? ​ 可以!!! const int &ref_a = 5; const左值引用不会修改指向值,因此可以指向左值和右值,这也是为什么要使用const &作为函数参数的原因之一,如std::vector的push_back函数原型:

[开发语言][c++]:Static关键字和全局变量

Static关键字和全局变量 1. 生命周期、作用域和初始化时机2. 全局变量3. Static 关键字3.1 面向过程3.1.1 静态全局变量3.1.2 静态局部变量(单例中会使用)3.1.3 静态函数 3.2 面向对象3.2.1 类内静态成员变量3.2.2 类内静态成员函数 Reference 写在前面: 如果您只是想回顾或了解一下static和全局变量的异同点,那么下面的总结将满足您的需求。 如果您是一位初学者或对二者的使用模棱两可,建议您读完该篇文章,相信这一篇将解答完您对于static关键字以及全局变量的所有疑惑。 如有问题或建议欢迎评论 or 私信 or Contact me:jerome.zhou@nio.com~~~ Static关键字和全局变量异同点: 存储位置:全局变量和静态变量都存储在内存的静态存储区。 生命周期:全局变量和静态变量的生命周期都是整个程序的执行期间。 作用域: 全局变量:全局变量在整个程序中都是可见的,可以在任何函数中访问。静态变量:静态变量的作用域仅限于声明它的函数或文件。如果在函数内部声明静态变量,那么该静态变量只在该函数内部可见;如果在文件内部声明静态变量,那么该静态变量只在该文件内部可见。 初始化: 全局变量:如果没有初始化,编译器会自动初始化为0。静态变量:如果没有初始化,编译器也会自动初始化为0。类内成员变量,需要类内声明,类外定义(定义时,可以使用默认初始化) 声明方式: 全局变量:全局变量在所有函数外部声明。静态变量:在变量类型前加上关键字static来声明静态变量(可在任意位置)。 使用场景: 全局变量:当需要在多个函数或文件中共享数据时,可以使用全局变量。静态变量:当需要保持变量的值在函数调用之间不变时,可以使用静态变量。 总的来说,全局变量和静态变量都有全局的生存期,但是静态变量的作用域可以是局部的,因此静态变量相对于全局变量来说,可以更好地保护数据,减少了数据被误操作的风险。 1. 生命周期、作用域和初始化时机 生命周期:变量从定义到销毁的时间范围。堆内存和栈内存章节,介绍了一下程序的内存管理,有一部分是Global Segment(全局段)负责存储静态变量和全局变量,存储在全局段的变量生命周期等于整个程序的运行时间。 作用域: 变量的可见代码区域(块作用域、函数作用域、类作用域和全局作用域)。不管是在全局还是局部声明的static变量都存放在程序的全局段,但是它的作用域却不等同于生命周期,它的作用域决定于它所被定义的位置。 从上述两点可以发现,静态变量和全局变量具有相同的全生命周期,存储在内存的静态存储区,但是二者的作用域却不尽相同。 初始化时机:全局变量、文件域中的静态变量、类中的成员静态变量在main函数执行前初始化(饿汉式);局部变量中的静态变量在第一次调用时初始化(懒汉式)。 在类中声明的静态成员变量,还必须要在类外定义下才可以使用,否则会编译报错。 静态成员变量不属于任何一个对象,对象的数据中不应该包含静态成员的数据。所以在定义类的时候不会给静态变量分配内存只是声明,因此就要在其他地方分配即定义。 定义与声明的区别: 声明:向编译器声明(或介绍)了变量的名称,类型,或者函数及其参数类型等信息。声明并不分配存储空间。你可以多次声明同一个变量。 定义:它除了向编译器声明(或介绍)了变量的名称,类型等信息外,还分配了存储空间。换句话说,定义是声明的扩展。你只能一次定义一个变量。,也可以顺便初始化。程序中变量有且只有一个定义(更能说明为什么要在类外再定义下类的静态成员变量了)。 在C++中,如果你试图多次定义同一个变量,编译器会报错。但是,你可以多次声明同一个变量,只要它在某个地方被定义过一次。 所以,所有的定义(包括变量和函数)都是声明,但并非所有的声明都是定义。 2. 全局变量 全局变量是在所有函数外部定义的变量,其作用域是从定义点开始到文件结尾。全局变量可以被任何函数访问和修改,即全局变量的生命周期是整个程序的执行期间。 在C++中,全局变量的声明和使用主要有以下几点需要注意: 声明全局变量:全局变量在所有函数之外定义,通常是在程序的开头。例如:int x; 使用全局变量:在任何函数中,直接使用变量名即可访问全局变量。例如:x = 10; 如果全局变量和局部变量同名,那么在局部作用域中,局部变量会覆盖全局变量。如果想在局部作用域内访问全局变量,需要使用"::"全局作用域解析运算符。例如:::x = 20; 在一个文件中定义的全局变量,如果想在另一个文件中使用,需要在另一个文件中用关键字 extern 来声明该全局变量。例如:extern int x; 其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。

HarmonyOS4.0系统性深入开发18公共事件简介

公共事件简介 HarmonyOS通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。 公共事件从系统角度可分为:系统公共事件和自定义公共事件。 系统公共事件:CES内部定义的公共事件,只有系统应用和系统服务才能发布,例如HAP安装,更新,卸载等公共事件。目前支持的系统公共事件详见系统公共事件列表。自定义公共事件:应用自定义一些公共事件用来实现跨进程的事件通信能力。 公共事件按发送方式可分为:无序公共事件、有序公共事件和粘性公共事件。 无序公共事件:CES转发公共事件时,不考虑订阅者是否接收到,且订阅者接收到的顺序与其订阅顺序无关。有序公共事件:CES转发公共事件时,根据订阅者设置的优先级等级,优先将公共事件发送给优先级较高的订阅者,等待其成功接收该公共事件之后再将事件发送给优先级较低的订阅者。如果有多个订阅者具有相同的优先级,则他们将随机接收到公共事件。粘性公共事件:能够让订阅者收到在订阅前已经发送的公共事件就是粘性公共事件。普通的公共事件只能在订阅后发送才能收到,而粘性公共事件的特殊性就是可以先发送后订阅。发送粘性事件必须是系统应用或系统服务,且需要申请ohos.permission.COMMONEVENT_STICKY权限,配置方式请参阅访问控制授权申请指导。 每个应用都可以按需订阅公共事件,订阅成功,当公共事件发布时,系统会将其发送给对应的应用。这些公共事件可能来自系统、其他应用和应用自身。 图1 公共事件示意图 公共事件订阅概述 公共事件服务提供了动态订阅和静态订阅两种订阅方式。动态订阅与静态订阅最大的区别在于,动态订阅是应用运行时行为,而静态订阅是后台服务无需处于运行状态。 动态订阅:指订阅方在运行时调用公共事件订阅的API实现对公共事件的订阅,详见动态订阅公共事件。静态订阅:订阅方通过配置文件声明和实现继承自StaticSubscriberExtensionAbility的类实现对公共事件的订阅,详见静态订阅公共事件。 动态订阅公共事件 场景介绍 动态订阅是指当应用在运行状态时对某个公共事件进行订阅,在运行期间如果有订阅的事件发布那么订阅了这个事件的应用将会收到该事件及其传递的参数。例如,某应用希望在其运行期间收到电量过低的事件,并根据该事件降低其运行功耗,那么该应用便可动态订阅电量过低事件,收到该事件后关闭一些非必要的任务来降低功耗。订阅部分系统公共事件需要先申请权限,订阅这些事件所需要的权限请见公共事件权限列表。 接口说明 详细接口见接口文档。 接口名接口描述createSubscriber(subscribeInfo: CommonEventSubscribeInfo, callback: AsyncCallback<CommonEventData>): void创建订阅者对象(callback)createSubscriber(subscribeInfo: CommonEventSubscribeInfo): Promise创建订阅者对象(promise)subscribe(subscriber: CommonEventSubscriber, callback: AsyncCallback): void订阅公共事件 开发步骤 导入CommonEvent模块。 import commonEvent from '@ohos.commonEventManager'; 创建订阅者信息,详细的订阅者信息数据类型及包含的参数请见CommonEventSubscribeInfo文档介绍。 // 用于保存创建成功的订阅者对象,后续使用其完成订阅及退订的动作 let subscriber = null; // 订阅者信息 let subscribeInfo = { events: ["usual.event.SCREEN_OFF"], // 订阅灭屏公共事件 } 创建订阅者,保存返回的订阅者对象subscriber,用于执行后续的订阅、退订等操作。 // 创建订阅者回调 commonEvent.createSubscriber(subscribeInfo, (err, data) => { if (err) { console.error(`[CommonEvent] CreateSubscriberCallBack err=${JSON.stringify(err)}`); } else { console.

HTML+JS+CSS歌词滚动效果

代码下载:【免费】HTML+JS+CSS歌词滚动效果资源-CSDN文库 一些代码说明: 初始化歌词数据和时间字符串转换为秒数: // 初始化歌词数据 const initWords = () => { let lines = lrc.split('\n'); let res = []; lines.forEach(item => { let parts = item.split(']'); let timeStr = parts[0].substring(1); let obj = { time: parseTime(timeStr), // 调用 parseTime 函数将时间字符串转换为秒数 words: parts[1] }; res.push(obj); }); return res; }; // 时间字符串转换为秒数 const parseTime = (timeStr) => { let parts = timeStr.split(':'); let time = +parts[0] * 60 + +parts[1]; return time; }; let lrcData = initWords(); // 调用初始化歌词数据函数 获取当前显示歌词下标: // 得到当前显示歌词下标 const findIndex = () => { let curTime = doms.

【PostgreSql】本地备份为dump文件与恢复数据库(单表和整个数据库)

目录 1.准备脚本1.1 脚本介绍 2.开始备份3.进行恢复3.单张表的备份与恢复3.1 单张表的备份3.2 单张表的恢复 4.常用命令和参数4.1 备份常用参数4.2 备份常用命令4.3 还原常用命令 环境:windows数据库:postgresql 1.准备脚本 backUpDb.bat 脚本为备份脚本,双击运行,右键可以选择编辑;restoreDb.bat 脚本为恢复脚本,双击运行,右键选择编辑; 1.1 脚本介绍 如上图所示编辑脚本文件,选择你的备份路径和相应的程序执行路径,以及要备份的数据库名称,登录账户(此时不需要密码),编辑好以后进行保存,然后就可以开始进行备份; 恢复脚本同理两个脚本所需要的exe应用程序如下: 2.开始备份 双击备份脚本 提示输入密码,此时输入你当前登录用户的密码回车即可(脚本里面不显示输入密码明文和进度,无需担心,输入完成后enter即可) 显示下面画面即为备份成功 去所选路径查看是否含有备份的dump文件(出现.dump文件即为备份成功) 3.进行恢复 1.查看备份前的数据库 2.然后删除相应数据库 3.新建同名数据库(新建数据库只写备份前的数据库名称,其他选项一概不填) 4.新建数据库成功(此时可以看到数据库无table信息) 5.开始运行恢复脚本 输入密码 密码错误情况如下,此时只需要重新再次运行脚本输入正确密码即可 恢复成功页面 6.查看恢复后的数据库 3.单张表的备份与恢复 3.1 单张表的备份 其他参数不变,加上-t 和表名即可 注意是小t(大写T代表除去这张表,其他表都备份) 3.2 单张表的恢复 注意:区分大小写且备份名字和表名最好一致不然容易混淆 多张表的使用:-t[表名1] -t [表名2] 4.常用命令和参数 4.1 备份常用参数 -h host,指定数据库主机名,或者IP -p port,指定端口号 -U user,指定连接使用的用户名 -W,按提示输入密码 -a,–data-only,只导出数据,不导出表结构 -c,–clean,是否生成清理该数据库对象的语句,比如drop table -C,–create,是否输出一条创建数据库语句 -f file,–file=file,输出到指定文件中 -n schema,–schema=schema,只转存匹配schema的模式内容 -N schema,–exclude-schema=schema,不转存匹配schema的模式内容 -O,–no-owner,不设置导出对象的所有权 -s,–schema-only,只导致对象定义模式,不导出数据 -t table,–table=table,只转存匹配到的表,视图,序列,可以使用多个-t匹配多个表 -T table,–exclude-table=table,不转存匹配到的表。 -inserts,使用insert命令形式导出数据,这种方式比默认的copy方式慢很多,但是可用于将数据导入到非PostgreSQL数据库。 dbname,指定连接的数据库名称,实际上也是要备份的数据库名称。 4.

HTML+JS+CSS移动端购物车选购界面

代码打包资源下载:【免费】HTML+JS+CSS移动端购物车选购界面资源-CSDN文库 关键部分说明: UIGoods 类: 构造函数: 创建 UIGoods 实例时,传入商品数据 g,初始化商品的数据和选择数量。getTotalPrice() 方法: 计算商品的总价,考虑了选择数量。isChoose() 方法: 判断是否选中该商品。increase() 方法: 增加商品的选择数量。decrease() 方法: 减少商品的选择数量,但数量不会小于 0。 class UIGoods { constructor(g) { this.data = g this.choose = 0 } getTotalPrice() { return this.data.price * this.choose } isChoose() { return this.choose > 0 } increase() { this.choose++ } decrease() { if (this.choose === 0) { return } this.choose-- } } UIData 类: 构造函数: 初始化页面数据,包括商品列表、起送价格和配送费。getTotalPrice() 方法: 计算购物车中所有商品的总价。increase(index) 和 decrease(index) 方法: 分别用于增加和减少某个商品的选择数量。getTotalChooseNum() 方法: 获取购物车中所有商品的总选择数量。isGoodsInCar() 方法: 判断购物车中是否有商品。isStartSendPrice() 方法: 判断是否达到起送价格。isChoose(index) 方法: 判断某个商品是否被选中。 class UIData { constructor() { let uiGoods = [] goods.

家政服务小程序搭建,有什么优势?

随着我国社会经济的发展,家政服务成为了每个家庭的一部分。家政服务的种类也逐渐多样,满足了大众日益增加的服务需求。 不过,传统的家政行业以中介为主,雇主在找到适合的家政人员较为麻烦,限制了家政行业的发展,因此,家政服务小程序随之出现。小程序将各类服务集中到一起,用户可以根据需求选择合适的服务人员,不需要中介,方便快捷。 家政服务小程序能够带来什么优势? 一、需求大 我国人口众多,对家政服务的需求也相应较大。并且随着我国老龄化的增加,进一步推动了家政行业的发展。小程序的出现能够帮助人们找到适合的服务人员。 二、便捷高效 小程序是依靠互联网发展,只要有网络用户就可以在手机上寻找合适的人员。小程序提供了各类家政服务,保洁、上门维修、上门按摩、月嫂等,用户根据需求在小程序上一键下单预约家政服务。 三、保障权益 小程序提供家政实名认证,用户能够清晰了解服务人员的信息;用户在结束订单后能够对服务人员进行评价,方便其他用户选择,有利于保障用户的权益,进一步提升服务人员的质量。 四、增强竞争力 家政服务商可以打造专属的小程序,能够利用小程序梳理品牌形象。良好优势的家政服务有利于服务商提高知名度,打造口碑。小程序也能够便于服务商推广,吸引用户。 家政服务业在科技的快速发展下,将继续可持续发展。家政小程序也将为大众提供一个便捷、透明高质量的服务预约渠道。

在激光 SLAM 中特别处理第一个雷达数据是为什么?

文章目录 1. 初始化参考帧2. 校准和对齐3. 避免累积误差4. 数据流的一致性代码段解析示例代码说明旋转变换计算原理具体实现结果 在激光 SLAM(Simultaneous Localization and Mapping,即同时定位与建图)中,特别处理第一个雷达数据通常出于以下几个工程实践和原理上的考虑: 1. 初始化参考帧 定义起点:在 SLAM 系统中,需要一个参考点或帧来开始建图和定位。第一个雷达数据提供了这个起始点,从这个点开始,系统可以追踪物体或环境的移动和变化。参考坐标系:首个雷达数据定义了一个初始的参考坐标系。后续接收的所有数据将根据这个初始坐标系进行解释和处理。 2. 校准和对齐 传感器校准:第一个数据点可能用于对激光雷达的读数进行校准,确保后续数据的准确性。初始对齐:在开始导航之前,需要确定机器人或载体的初始姿态。第一个数据点提供了这个姿态信息,帮助系统对齐和校正后续数据。 3. 避免累积误差 在 SLAM 系统中,错误和不确定性可能会随时间累积。通过在一开始就精确地处理第一个雷达数据,可以尽可能地减少这种误差的累积。 4. 数据流的一致性 确保数据流的一致性和可靠性是重要的。第一个数据点的特殊处理可以帮助系统建立一个稳定和一致的数据处理流程。 代码段解析 在您提供的代码段中: base2first_laser_ 被设置为身份转换,然后根据第一个雷达扫描的位置和方向进行更新。这意味着后续所有的雷达数据都将相对于第一个扫描的位置和方向进行解释。位置和方向的更新使用了 Eigen 库,这是一个常用于进行线性代数、矩阵和向量运算的 C++ 库。位置使用平移(translate)来设置,而方向则通过绕不同轴的旋转(rotate)来设定。 总的来说,这种处理方式为激光 SLAM 系统提供了一个稳固的起点,确保了系统的准确性和一致性。 一个简化的 C++ 示例,展示如何在激光 SLAM 系统中特别处理第一个雷达数据。这个示例将假设我们有一个激光雷达数据类和一个 SLAM 系统类。请注意,这个例子是为了演示目的而简化的,并不代表一个完整的 SLAM 系统的实现。 示例代码 #include <iostream> #include <Eigen/Geometry> // 假设的激光雷达数据类 class LaserData { public: Eigen::Vector3d position; // 位置 Eigen::Vector3d orientation; // 方向(假设以欧拉角表示) LaserData(double x, double y, double z, double roll, double pitch, double yaw) : position(x, y, z), orientation(roll, pitch, yaw) {} }; // 假设的 SLAM 系统类 class LaserSLAM { private: Eigen::Isometry3d base2first_laser_; // 初始雷达数据到基准坐标系的变换 bool first_receive_laser_; public: LaserSLAM() : first_receive_laser_(true) {} void processLaserData(const LaserData& laser) { if (first_receive_laser_) { base2first_laser_ = Eigen::Isometry3d::Identity(); base2first_laser_.

新年烟花代码-html版

新年烟花代码 效果展示 代码 <!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <title>2024新年快乐!万事如意!</title> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> <meta name="mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="theme-color" content="#000000"> <link rel="shortcut icon" type="image/png" href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon.png"> <link rel="icon" type="image/png" href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon.png"> <link rel="apple-touch-icon-precomposed" href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon.png"> <meta name="msapplication-TileColor" content="#000000"> <meta name="msapplication-TileImage" content="https://s3-us-west-2.amazonaws.com/s.cdpn.io/329180/firework-burst-icon.png"> <link href="https://fonts.googleapis.com/css?family=Russo+One" rel="stylesheet"><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css"> <link rel="stylesheet" href="./style.css"> <style> * { position: relative; box-sizing: border-box; } html, body { height: 100%; } html { background-color: #000; } body { overflow: hidden; color: rgba(255, 255, 255, 0.

世微大功率 内置2.5A宽电压降压恒流 LED电源驱动车灯IC AP5193

AP5193是一款PWM工作模式,高效率、外围简单、 内置功率MOS管,适用于4.5-100V输入的高精度 降压LED恒流驱动芯片。电流2.5A。AP5193可实现线性调光和PWM调光,线性调光 脚有效电压范围0.55-2.6V. AP5193 工作频率可以通过RT 外部电阻编程来设定,同时内置抖频电路,可以降低对其他设备的 EMI 干扰。另外采用峰值电流采样模式,可以提高 宽输入电压情况下的电流精度。AP5193还有过温调节电流的功能。当芯片内部 的温度达到135℃左右时,会自动调低输出电流。 特点 ◆ 内部集成 100V 功率管 ◆ 宽输入电压范围:4.5~100V ◆ 固定关断时间控制 ◆ 可设定电流范围:10mA~2500mA ◆ 内置抖频电路,降低对其他设备的EMI 干扰 ◆ 输出短路保护 ◆ 过温保护 ◆ 调光功能:线性调光 ◆ ESOP8 封装 应用领域 电动车,摩托车灯照明 汽车灯照明 LED驱动电源

c++学习笔记-STL案例-机房预约系统1-准备工作

前言 准备工作包括:需求分析、项目创建、主菜单实现、退出功能实现 目录 1 机房预约系统需求 1.1 简单介绍 1.2 身份介绍 1.3 机房介绍 1.4 申请介绍 1.5 系统具体要求 1.6 预约系统-主界面思维导图 2 创建项目 2.1 创建项目 2.2 添加文件 ​编辑 3 创建主菜单 3.1 菜单实现 3.2 搭建接口 3.3 代码实现 3.4 结果显示 4 退出功能实现 4.1 退出功能实现 4.2 测试结果 1 机房预约系统需求 1.1 简单介绍 学校有几个规格不同的机房,由于使用经常出现“撞车”现象,现在开发一套预约系统,解决这一问题。 1.2 身份介绍 分别有三种身份使用该系统 学生代表:申请使用机房教师:审核学生的预约申请管理员:给学生、教师创建账号 1.3 机房介绍 机房共三间 1号机房:---最多容纳20人2号机房:---最多容纳50人3号机房:---最多容纳100人 1.4 申请介绍 申请的订单每周由管理员负责清空。学生可以预约未来一周的机房使用,预约日期为周一至周五,预约时需要选择预约时段(上午、下午)教师来审核预约,依据实际情况审核预约通过或者不通过 1.5 系统具体要求 首先进入登录界面,可选择登录身份: 学生代表教师管理员退出 每个身份需要进行验证: 学生需要输入:学号、姓名、登录密码老师需要输入:职工号、姓名、登录密码管理员需要输入:管理员姓名、登录密码 学生具体功能: 申请预约---机房预约查看自身预约---查看自己的预约状态查看所有预约---查看全部预约信息以及预约状态取消预约---取消自身预约,预约成功或审核中的预约可以取消注销登录---退出登录 教师具体功能: 查看所有预约---查看全部预约信息以及预约状态审核预约---对学生的预约进行审核注销登录---退出登录 管理员具体功能: 添加账号---添加学生或教师账号,需要检测学生编号或教师职工编号是否重复查看账号---可以选择查看学生或教师的全部信息查看机房---查看所有机房的信息清空预约---清空所有预约记录注销登录---退出登录 1.6 预约系统-主界面思维导图 2 创建项目 2.

解决git : 无法将“git”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确

首先,确保你已经正确安装了git,并且git的安装路径已经添加到系统的环境变量中。你可以在命令行中输入“git --version”来检查git是否已经正确安装和配置。 如果git已经正确安装并且路径已经添加到系统的环境变量中,但仍然出现这个问题,那么可能是因为系统环境变量没有立即生效。你可以尝试重启计算机来使环境变量生效。 如果重启计算机后仍然无法解决问题,那么可能是因为系统环境变量配置出现了问题。你可以尝试手动添加git的安装路径到系统的环境变量中。具体操作方法是:右键点击“此电脑” -> 属性 -> 高级系统设置 -> 环境变量,然后在系统变量中找到“Path”变量,点击编辑,然后添加git的安装路径,保存并关闭所有窗口后重新打开命令行窗口。 最后,如果以上方法都无法解决问题,那么可能是因为git安装出现了其他问题。你可以尝试重新安装git,并确保在安装过程中选择添加git到系统的环境变量中。 安装方法: 访问Git官方网站(https://git-scm.com/)下载适合你操作系统的Git安装程序。运行安装程序,按照提示进行安装。在安装过程中,确保选择添加Git到系统的环境变量中。安装完成后,打开命令行窗口,输入“git --version”来检查Git是否成功安装和配置。

LeetCode 2645.构造有效字符串的最少插入数:O(n) + O(1)

【LetMeFly】2645.构造有效字符串的最少插入数:O(n) + O(1) 力扣题目链接:https://leetcode.cn/problems/minimum-additions-to-make-valid-string/ 给你一个字符串 word ,你可以向其中任何位置插入 "a"、"b" 或 "c" 任意次,返回使 word 有效 需要插入的最少字母数。 如果字符串可以由 "abc" 串联多次得到,则认为该字符串 有效 。 示例 1: 输入:word = "b" 输出:2 解释:在 "b" 之前插入 "a" ,在 "b" 之后插入 "c" 可以得到有效字符串 "abc" 。 示例 2: 输入:word = "aaa" 输出:6 解释:在每个 "a" 之后依次插入 "b" 和 "c" 可以得到有效字符串 "abcabcabc" 。 示例 3: 输入:word = "abc" 输出:0 解释:word 已经是有效字符串,不需要进行修改。 提示: 1 <= word.length <= 50word 仅由字母 "a"、"b" 和 "c" 组成。 方法一:if-else 从前到后遍历字符串,并补充最少的字符使所有字符都变成abc:

基于springboot实现计算机类考研交流平台项目演示【附项目源码+论文说明】

基于springboot014计算机类考研交流平台演示 摘要 高校的大学生考研是继高校的高等教育更上一层的表现形式,教育的发展是我们社会的根本,那么信息技术的发展又是改变我们生活的重要因素,生活当中各种各样的场景都存在着信息技术的发展。信息技术发展WEB信息化的到来让人们的生活感受到了科技带来的便利,不认识的地方导航就可以找到,没去过的旅游景点线上就可以看到等等;数字化技术的发展给各种各样的企业带来了福音,智能制造、数字化转型给企业的发展提供技术型的力量。这些仅仅是平常接触到的场景,更有些更深入的算法场景更是改变人们的生活,就拿出行最多使用到的导航算法而言,不同时刻所需要的时间及路况也是大不相同的,没有强大的算法功能支持这些都是很难做到的。教育发展始终是我们社会各界关注的一个重要因素,高校信息化的建设也随着互联网的大潮正在不断的进行创新,就高校信息化建设当中以计算机考研最受学生、老师的关注,而传统的考研交流方式还要比较麻烦的即要考虑学生多,又要考虑考研交流地点选择等等,非常麻烦。所以说开发一款计算机类考研交流平台来说非常重要。 本次的设计就是采用我们日常所熟悉的JAVA技术来进行技术支撑的,同时采用JSP的方式来进行一个前端页面的搭载,完善的高级技术给我们带来的是非常良好的感受。此次还采用了Springboot的框架用新的信息技术来解决生活中的问题。 关键词: 考研 学校 SpringBoot 背景及开发意义 教育发展不仅仅是关乎到每一位学生的大事情,更是一个国家发展的基本方针。教育发展当中最重要的就是高校学生的教学工作,信息技术也是能够改变我们生活方式的一种强大力量,就拿我们常见的出行而言,滴滴出行看似是为了打车和出行的人方便,但其实通过另外一种程度上来说,可以通过软件应用的调度和发展来为社会、城市出行的发展做出巨大的贡献。我们国家从最早的中国制造业演变到现在的“智造”,就是因为有软件信息系统的价值,能够将一些智慧的因素加入到制造的过程当中,而这一点就是软件系统来改变生产和现实的需求。近些年来,我们都在高速快速的发展过程当中不断的在变化,这几年,高校学生人数多、基础课程也多等特点影响着高校的考研交流程,考研交流的最终目标就是为了能够让学生学习不同的专业方向。高校信息化的建设也随着互联网的大潮正在不断的进行创新,就高校信息化建设当中计算机类学生的考研也是非常重要的一件事情。考研可以说是继高等教育之上更深的层次学习,那么学习前的交流也是非常重要的。传统意义上的交流,那么我们只是约定三五个人对于相关的知识点进行交流,那么其不仅受到时间和内容的限制,更受到地点的限制,大约我们一般都是在咖啡厅或者图书馆等这种地方,那么时间上、地点上有着诸多的不便。基于此背景之下,我们利用信息化来解决此项关于考研信息技术的基本需求。 国内外研究现状 我们在做毕业设计时一般都进行国内外现状情况的分析,在考研交流平台领域当中在研究设计的过程最能够提出一些具有现实意义的研究性策略主要还是使用其相关领域的一些他人思想,就考研交流平台而言,国内外其相关的研究虽然说是基本差不多,但就研究细节而言还是有一定的区别的。在国内,关于高校的信息化建设基本是在近几年才形成的统一风格,一时间,全国的高校内的信息化软件一下子就铺天盖地的实现了,虽然说国内信息化建设的发展速度很快,但其发展水平还是参差不齐,同行业,同类型有的信息化可成为标杆水平,但有些却仅仅只能满足日常需要。在国外,高校信息化水平起步较早些,所以他们在设计建设过程当中还是有着一些先进的经验可值得我们学习。不过就目前而言我们国内的高校发展形式一片大好,虽然起步晚些但对于我们很多的基础化设施及相关业务流程都已经非常成熟。未来,相信我们国内不仅在考研交流平台上的软件成熟度更高,而且在高校信息化上也会变得非常突出。相信我们的考研交流平台也是有着非常不错的前景。 功能需求 功能需求分析是系统需求分析的一大重要环节,那么功能需求主要是将功能的需求体现在系统当中。计算机类考研交流平台呢,在功能需求上主要分为前端和后端。前端的主要功能包括网站首页、学校信息、学习资料、课程信息。后台主要包括系统用户管理、用户注册管理、学校管理、学习资料管理、课程管理、学习进度管理。 系统页面展示 涉及任何一个系统的首页,不仅仅是为了美观。主要的功能还是能够让用户一眼获得系统的。主题以及系统是做什么的。所以说系统的首页是非常关键的一个部分,能够将系统首页体现淋漓尽致,才是能够让我们用户喜爱系统的一个关键。那么此次设计呢?我们把系统的首页作为一个关键的设计,像还请教了许多同学,那么计算机类考研交流平台首页如下图所示: 学生最关心的就是考研的信息查询了,学校信息是我们系统当中的一个特色功能,可以通过学校信息找到关于此专题的所有信息都进行展示嘛,不管是用户还是管理者,都可以通过新闻信息获得到我们所需要的信息。当然设计方面呢,我们还是使用列表的形式,为了能够展现更多的信息。如下图所示: 在考研交流平台当中,其实和其它的信息系统没什么区别。说实话后台管理页面的风格,每种应用都有自己不同的风格,而大多数的风格也都是按照菜单功能树、操作区域等这种布局进行区分的。在菜单功能树当中有后台管理应用的全部功能,而且这些菜单树的入口也仅仅只是改变右边操作区域的内容,这样一来多个模块可以使用同一个菜单树,既保证了风格统一的美观程度,又能让开发在代码工作量上减少很多。在操作区域还是以上、中、下之样的方式来进行的,每块区域都有它自己的位置功能。如下图所示: 如需要可扫取文章下方二维码联系得源码

基于springboot实现校园爱心捐赠互助管理系统演示【附项目源码+论文说明】

基于springboot实现校园爱心捐赠互助管理系统演示 摘要 随着互联网及电子商务平台的飞速发展,利用在线平台实现的二手商品交易以及在线捐赠已经非常普遍,很多高校目前还存在贫困生需要通过爱心人士的捐助来完成学业,同时很多高校的大学生也希望借助自己的捐赠行为来帮助到身边需要帮助的同学,对于闲置商品的处理以及贫困学生的捐助都急需要一个线上平台实现义卖及互助信息的传递,通过校园内爱心捐赠和互助行为的培养来创造和谐友爱的校园氛围,同时借助线上平台也可以帮助在校大学生养成节俭的生活习惯,通过物品的捐赠或者义卖来实现物品的剩余价值,不仅不会浪费资源同时也可以帮助到有需要的人,利用互助平台信息传递和交流的便捷性来帮助更多的贫困生改变当前的生活现状。 校园爱心捐赠互助模式的开启需要线上平台的加持,本文结合当前在校大学生对于捐赠和互助的应用需求,通过springboot框架结构以及java编程语言实现了前端平台的搭建,利用web服务器端实现了数据信息的呈现和反馈,主要的功能模块内容包括了贫困生帮扶、校园物品义卖、在线捐赠以及校内求助等内容,系统开发设计结合了在校大学生的主要应用需求,通过系统平台的开发可以帮助在校大学生实现资源共享减少资源的浪费,同时爱心捐赠互助系统屏那台也是一种新型的电商模式也是当前的发展趋势。 关 键 词:Springboot框架;Java语言;eclipse;校园爱心互助;在线捐赠 研究背景 电商的飞速发展让人们的生活模式发生了巨大转变,在校大学生作为电商平台的重要消费人群之一,在接触新鲜事物和消费能力上都存在冲动消费行为,与此同时学习用品的升级换代以及生活用品的盲目消费,在物品的处理上普遍通过丢弃的方式,这对于资源、环境以及个人开支而言都是不小的损失,很多物品没有使用几次或者在全新的状态下就因为不适用而被丢弃,在校大学生因为不知道其他同学有没有需求所以很多情况下只能被迫丢弃。然而在校的大学生里面不乏有很多家庭条件一般或者需要资助的同学,但是出于自尊心也无法去索要,长此以往造成校园内大量学习和生活用品的浪费,对于需要帮助的同学以及需要处理物品的同学缺乏一个交易互助的平台。 随着应用系统平台以及二手交易应用的飞速发展,很多二手交易的平台例如闲鱼、转转、58同城等,结合了当前人们对于二手商品处理的需求,借助线上平台实现了供求双方的需求发布,在实现物品二次利用的同时也帮助节约了不少的生活开支。相比综合性的二手交易平台,校园内的捐赠行为以及互助行为需要利用单独的网络平台来实现信息的发布,利用线上平台开通实现物品捐赠和物品互助,通过线上物品求助以及爱心捐赠的方式来实现商品的交换,同时可以借助线上平台发布相关贫困生的信息,在爱心捐赠上可以实现针对性的捐赠,通过求助物品的信息发布可以帮助更多的在校大学生获取到自己想要的物品,因此校园爱心捐赠互助与二手交易应用系统在功能模块的内容呈现上还存在一定的差异。 研究现状 目前我国大学校园内的爱心捐赠及互助平台较少,同时对于物品交易的形式相对简单主要通过校园内的交易网站平台或者论坛发帖的方式来实现,对于交易双方而言都需要花费大量的时间,且论坛发帖的交易模式无法确保物品信息的真实性,同时缺乏审核的人员做商品的检验,对于互助信息的发布以及平台管制上都存在管理缺失,在求助信息的查询以及捐赠物品的处理上都缺乏流程化的管理。另外对于贫困学生的捐助在信息的发布和需求的供给上都存在偏差,对于贫困学生互助、爱心义卖以及在线物品求助需要通过多个平台或者论坛实现,在使用的便捷性上不够。 为了满足在校大学生的需求,近年来很多高等院校通过优化升级校内平台以及开通多个功能模块的方式来提升校内系统平台的应用率,以清华大学的“我们的家园”为例,通过建立校园环境下的二手交易平台来实现校内的商品互换,同时很多高校在原有校内网络平台的基础上新增了物品互助模块,通过平台的信息发布为在校大学生提供更加便捷的校内互助服务。随着系统平台的飞速发展,很多高校将原本论坛内的交易互助行为逐渐推向平台化,同时对于捐赠物品及义卖商品的信息内容需要通过管理员后台的集中审核管理来实现信息发布,利用线上平台实现批量义卖商品信息以及互助商品信息的发布,帮助在校大学生解决了买卖信用危机以及提升了物品信息搜索的便捷性。高校借助互联网平台的校内管理已经成了当前高校信息化建设的常态内容,利用平台实现更加便捷的校内服务已经成为了当前的发展趋势。 系统页面展示 校园爱心捐赠互助管理系统平台的首页内容呈现主要包括了用户注册登录窗口,通过系统导航栏可以查看到贫困生信息、义卖商品信息、在线求助信息以及在线捐赠内容,系统管理员用户可以通过首页的后台管理界面实现后台的登录,具体校园爱心捐赠互助管理系统的首页界面呈现如下图所示: 用户通过首页的义卖商品信息可以查看到商品的名称、类别、价格,通过在线购买填入对应的购买数量就可以实现在线下单,义卖商品信息、个人信息以及购买金额计算内容平台会自动显示,具体义卖商品购买界面内容如下: 用户登录通过个人后台界面可以实现以下内容及信息的查看和管理:个人资料管理、物品申请管理、在线捐赠管理、购买管理、求助管理以及我的收藏,通过以上功能模块的利用实现了用户的捐赠及申请购买内容的实现,同时可以通过个人后台发布相关的求助信息,真正意义上实现了爱心互助实现各取所需的目的。 用户通过在线捐赠可以发布捐赠物品的信息,包括物品内容、数量、图片以及捐赠物品说明,借助平台实现物品的无偿捐赠,在线捐赠的物品需要后台管理人员的审核之后才可以实现首页平台界面的显示,具体在线捐赠信息添加内容如下图所示: 如需要可扫取文章下方二维码联系得源码

TXS0108EPWR引脚说明、参数解读、应用电路图说明分享

TXS0108EPWR是一款8位非反向转换器芯片,具有两个独立的可配置电源轨。A端口设计用于追踪VCCA引脚的电源电压,VCCA引脚接受1.2至3.6V电源电压。B端口设计用于追踪VCCB引脚的电源电压,VCCB引脚接受任何电源电压介于1.65V和5.5V之间。 这两个输入电源引脚允许低压双向转换1.5V、1.8V、2.5V、3.3V和5V电压节点。当输出启用(OE)输入为LOW时,所有输出均置于高阻状态。为确保上电或掉电时的高阻状态,OE应通过下拉电阻连接至GND,电阻的最小值由驱动器的电流源能力决定。 以下是关于TXS0108EPWR引脚图、参数和应用电路的详细说明: 一、引脚图 TXS0108EPWR采用卷带(TR)封装,具有20个引脚,其引脚排列如下: VCCA:A端口电源电压引脚,接受1.2至3.6V电源电压。GNDA:A端口接地引脚。A:A端口数据输入/输出引脚。B:B端口数据输入/输出引脚。GNDB:B端口接地引脚。VCCB:B端口电源电压引脚,接受1.65至5.5V电源电压。OE:输出使能(OE)引脚,用于控制所有输出进入高阻状态。DOUT:数据输出引脚。DIN:数据输入引脚。CLK:时钟引脚。CSB:片选(Chip Select)引脚。SCK:串行时钟(Serial Clock)引脚。SDA:串行数据(Serial Data)输入/输出引脚。SCL:串行控制(Serial Control)引脚。SDO:串行数据(Serial Data)输出引脚。SDI:串行数据(Serial Data)输入引脚。ADDR:地址/数据线复用引脚。CS:片选(Chip Select)输出引脚。VREF:参考电压引脚,提供参考电压输入。GND:接地引脚,用于将电路中的地线连接在一起。 二、参数解读 TXS0108EPWR的主要参数包括: datasheet参数参考:TXS0108EPWR资料 数据速率:最大60Mbps。电源电压范围:A端口接受1.2至3.6V电源电压,B端口接受1.65至5.5V电源电压。输出使能(OE)输入:当OE输入为LOW时,所有输出均置于高阻状态。为确保上电或掉电时的高阻状态,OE应通过下拉电阻连接至GND,电阻的最小值由驱动器的电流源能力决定。工作温度范围:-40°C至+85°C(TA)。最大功耗:根据工作电流和电压可计算出最大功耗。封装尺寸:20-TSSOP(0.173mmx4.40mm宽)。输出类型:开漏极、推挽式。双向通道数:8位(每个端口)。自动方向检测:该芯片具有自动方向检测功能,无需外部控制信号即可自动识别数据传输方向。逻辑电平转换:TXS0108EPWR能够实现逻辑电平转换,使得不同的数字电路接口可以无缝连接。输入信号类型:-信号类型为开漏极或推挽式,具体取决于应用电路的要求。最大工作电流:-根据工作电压和电路负载可计算出最大工作电流。最大拉电流和灌电流:-芯片的最大拉电流和灌电流取决于工作电压、芯片规格和电路负载等因素。根据规格书或芯片数据手册可以找到具体数值。封装形式:-TXS0108EPWR采用20-TSSOP封装形式,具有较小的体积和高度集成度,方便在电路板上布局和焊接。驱动能力:-根据驱动电压、电流和电路负载可计算出驱动能力。

HarmonyOS 开发基础(八)Row和Column

HarmonyOS 开发基础(八)Row和Column 一、Column 容器 1、容器说明: 纵向容器主轴方向:从上到下纵向交叉轴方向:从左到右横向 2、容器属性: justifyContent:设置子元素在主轴方向的对齐格式,参数 FlexAlign 枚举alignItems:设置子元素在交叉轴方向的对齐格式,参数 HorizontalAlign 枚举 3、参数说明: space:内元素之间的间隔,对象值,如:{space: 20},元素之间的间隔为20 二、Row 容器 1、容器说明: 横向容器主轴方向:从左到右横向交叉轴方向:从上到下纵向 2、容器属性: justifyContent:设置子元素在主轴方向的对齐格式,参数 FlexAlign 枚举alignItems:设置子元素在交叉轴方向的对齐格式,参数 VerticalAlign 枚举 3、参数说明: space:内元素之间的间隔,对象值,如:{space: 20},元素之间的间隔为20 三、Column 和 Row 的 justifyContent 属性说明 1、Column:justifyContent 属性说明 FlexAlign.Start:默认参数,主轴方向,从上依次排序往下FlexAlign.Center:主轴方向,居中依次排序往下FlexAlign.End:主轴方向,从下边位置排序保持不变FlexAlign.SpaceBetween:主轴方向,平均分配,上下顶格FlexAlign.SpaceAround:主轴方向,平均分配,距离上下平均分配的一半FlexAlign.SpaceEvenly:主轴方向,平均分配,距离上下平均分配 2、Row:justifyContent 属性说明 FlexAlign.Start:默认参数,主轴方向,从左位置依次排序往右FlexAlign.Center:主轴方向,居中依次排序往右FlexAlign.End:主轴方向,从右边位置排序保持不变FlexAlign.SpaceBetween:主轴方向,平均分配,左右顶格FlexAlign.SpaceAround:主轴方向,平均分配,距离左右平均分配的一半FlexAlign.SpaceEvenly:主轴方向,平均分配,距离左右平均分配 四、Column 和 Row 的 alignItems 属性说明 1、Column:alignItems 属性说明 HorizontalAlign.Start:默认参数,交叉轴方向,左边顶格HorizontalAlign.Center:交叉轴方向,居中HorizontalAlign.End:交叉轴方向,右边顶格 2、Row:alignItems 属性说明 HorizontalAlign.Start:默认参数,交叉轴方向,上边顶格HorizontalAlign.Center:交叉轴方向,居中HorizontalAlign.End:交叉轴方向,下边顶格 五、基础使用 @Entry @Component struct Index { build() { Column() { // Column:纵向 // space 参数:内元素之间的间距 Column({space: 20}) { // Column 里面的第一行内容 Row() { // Text:单行文本组件 Text('第一行') .

3MF/AMF格式在线转换

3D模型在线转换(https://3dconvert.nsdt.cloud/)是一个可以进行3D模型格式转换的在线工具,支持多种3D模型格式进行在线预览和互相转换。 3MF格式与AMF格式简介 微软联合惠普、欧特克、3D Systems、Stratasys等巨头组成的3MF联盟推出的一种格式。3MF格式能够更完整地描述3D模型,除了几何信息外,还可以保持内部信息、颜色、材料、纹理等其它特征。同样也是一种基于XML的数据格式,具有可扩充性,档案格式能够更完整地描述3D模型,除了几何信息外,还可以保持内部信息、颜色、材料、纹理等其它特征。 AMF是以目前3D打印机使用的“STL”格式为基础、弥补了其弱点的数据格式,新格式能够记录颜色信息、材料信息及物体内部结构等。AMF标准基于XML(可扩展标记语言),简单易懂,将来可通过增加标签轻松扩展。新标准不仅可以记录单一材质,还可对不同部位指定不同材质,能分级改变两种材料的比例进行造型。造型物内部的结构用数字公式记录,能够指定在造型物表面印刷图像,还可指定3D打印时最高效的方向。另外,还能记录作者的名字、模型的名称等原始数据。 3MF格式转换成AMF格式 3MF格式和AMF格式都有广泛的用途,在模型应用工作中,经常需要将3MF格式转换成AMF格式,怎么将3MF格式在线转换成AMF格式呢?推荐一款在线模型转换工具:3MF转AMF网站。 3MF转AMF网站是3D模型在线转换工具集中的一个,网站提供多种模型格式文件之间进行互转,支持将3MF格式在线转换为AMF格式。 文件上传 在打开的格式转换页面中,点击【上传文件】,选择待转换的目标文件。 如果模型文件包含有附属文件(如材质贴图),则需要将文件同时上传。上传方式:点击【上传文件】,在文件选择框中,按住键盘上的【Shift】键,通过鼠标左键同时选择多份文件,进行文件上传。 3MF转AMF网站也支持通过拖拽的方式,将文件进行上传。在资源管理器中,选择一份或多份模型相关文件,拖拽至3MF转AMF网站中的文件接收区域,即可完成3D模型文件的上传。 格式转换 在将模型文件上传至3MF转AMF网站后,网站将自动完成模型格式的转换。 3MF转AMF模型格式需要花费一些时间,转换时间长度主要与模型的大小和面数相关,文件越大、模型面数越多,转换需要的时间就越长。 在等待一段时间后,网站完成了模型格式的转换,展示页面如下。 在3MF转AMF网站完成模型格式转换完成后,此时可以在线预览模型转换结果,可以直接下载转换结果,也可以继续转换下一个模型。 模型预览 点击3MF转AMF网站页面中的【预览】按钮,在新开页面中对模型文件进行在线预览。 3MF转AMF网站在进行模型格式在线转换时,支持对顶点颜色和图片纹理进行处理,转换后的模型,不仅保留了基础的模型结构,还保留了模型的顶点颜色和图片纹理。 模型下载 在3MF转AMF网站的转换页面会预览页面中,点击【下载】按钮,网站会自动生成模型文件的下载链接。 通过3MF转AMF网站生成的下载链接,可以将AMF格式的模型文件下载到本地。生成的下载链接24小时内有效,超时将不能下载,需要及时下载文件。 以上就是3MF格式和AMF格式的介绍,以及3MF格式转换成AMF格式的方法。