Elsevier期刊Latex模板注意事项总结

目前遇到的问题 Elsevier(爱思唯尔)论文模板下载地址及说明 https://blog.csdn.net/yhcwjh/article/details/122101397#comments_24217163 模板最下面页码那一行(preprint submitted to elsevier)怎么去掉呢? 找到cas-common.sty文件中的\cs_new:Npn __first_footerline:,去掉对应的内容即可;另外,没有必要去掉这个 论文作者名字部分白色怎么才能调整回黑色? 在开头增加字体颜色的宏包\usepackage{color},之后将作者名改为\textcolor{black}{作者名}即可如何正确使用Elsevier的LaTeX模板 https://zhuanlan.zhihu.com/p/596176788Elsevier期刊Latex模板图片及表格Caption的修改 https://blog.csdn.net/weixin_40437996/article/details/110777515Elsevier(爱思唯尔)LaTex 模板详细说明 https://blog.csdn.net/anshiquanshu/article/details/129860036 包括:去掉页脚的orcid,修改图表的caption等方法如何取消subsection标题加粗 https://wenwen.sogou.com/question/q725601623.htm 注:取消了之后,不是很美观。可能不需要取消,后面出版社应该会排版吧。Elsevier Latex模板图片标题由Figure 1:变为Fig. 1. https://blog.csdn.net/qq_39213284/article/details/127652835 双栏模板遇到的问题 解决Elsevier cas-dc Class, 在双栏情况下并排图片出现的标题错位问题 https://blog.csdn.net/kaede0v0/article/details/121796532 单栏模板遇到的问题 图片caption标题无法左对齐,或者居中 将代码中的[htbp] 命令注释掉即可 https://blog.csdn.net/anuory/article/details/107758980 \caption{\centering{这里是标题}}%居中标题 https://blog.csdn.net/CRG_hunter/article/details/127977890表格的标题和内容不对齐 参考模板给的example,使用\begin{tabular*}{\tblwidth}{@{} C|C|CC@{} }\end{tabular*} 其他latex问题 Latex 公式左对齐 https://blog.csdn.net/u014071947/article/details/122060689 https://www.jianshu.com/p/47f6d4f696fd https://blog.csdn.net/ivvrr/article/details/125652964LaTex多张子图并排排列方法 https://blog.csdn.net/qzzqcz/article/details/109478121 中文 Latex插入中文 https://blog.csdn.net/yq_forever/article/details/82632036LaTex支持中文的三种方式(首推第一种) https://www.cnblogs.com/chuqianyu/p/14620014.htmlLaTeX的学习–字体 https://www.jianshu.com/p/9c3845f76668 目前未遇到的问题-备用 解决Elsevier cas-dc Class, 在双栏情况下并排图片出现的标题错位问题 https://blog.csdn.net/weixin_40471468/article/details/121632730表格过长或过窄问题 https://blog.csdn.net/shine4869/article/details/108683262

SQL注入-产生位置+post注入+sqlmap

数据请求方式-GET&POST&COOKIE等 ——url没有参数并不代表没有注入,有时会在数据包中,http数据包中每个部分只要可以被接收,都可能产生漏洞 get参数传递位置 post参数传递位置 cookie参数传递位置 request参数传递位置:可以在GET&POST&COOKIE三个位置传递 1.后台要记录访问的ip IP会写到数据库,如果能自定义ip数据(X_Forwarded_For),就可以尝试sql注入 2.网站根据用户的访问设备给予显示页面 数据库将各种UA信息整理保存,用户访问后数据库会获取用户的UA信息进行对比,涉及到数据库查询操作。就可以更改UA信息进行SQL注入 sql注入案例 实例黑盒-用户登录-POST注入 打开——墨者(mozhe.cn)SQL注入漏洞测试(post) burp抓取登录包 使用--+测试发现页面报错 使用#测试发现页面正常,说明支持#注释 测试出字段数后,输入' and 1=2 union select 1,2,3#测试显错位,结果直接爆出了key 使用sqlmap工具 sqlmap数据包形式注入 将name参数值设置为*(name=123*),将数据包保存为1.txt,执行命令:python sqlmap.py -r 1.txt --dbs 依次查询"库"——"表"——"字段". 最后查询指定字段数据: python sqlmap.py -r 1.txt --dump -C "name,password" -T "StormGroup_member" -D "mozhe_Discuz_StormGroup" 成功查询出账号密码 还有一种方式,不用保存数据包,可以直接扫描,就是使用--data参数 --data #通过post发送数据 抓取登录数据包,右键copy要扫描的url,然后将数据包中的两个post参数复制放到--data后面 命令:python sqlmap.py -u "http://124.70.71.251:42179/login.php" --data "name=1&password=1" --dbs 成功爆出数据库 如果在--data后面的其中一个参数加上*号,就只会测试加*号的参数,如果没有加*号就会测试全部参数 当然在这里还是建议使用数据包形式的注入方式,不容易出错。 注入总结: 数据库类型决定——攻击的手法和payload样式 不同数据类型注入——payload要考虑闭合、数据格式 各种提交方式——数据请求不同,注入需要按照指定的方式去测试 网站url没有参数不代表没有注入,有些数据会在数据包才有体现 http数据包任何一个地方只要数据被接收,就可能产生漏洞

Apache seatunnel集群部署

跳转到安装目录 cd /opt/soft/seatunnel 1.设置环境变量 export SEATUNNEL_HOME=/opt/soft/seatunnel export PATH=$PATH:$SEATUNNEL_HOME/bin 启动服务端 ./bin/seatunnel-cluster.sh -d 启动客户端 ./bin/seatunnel.sh --config ./config/kafka2gbase_udf.conf 这样就启动成功啦

初学帆软踩得坑——数据填报_Excel数据导入

第一次做数据填报,按照教程做完在用excel导入工具本地数据报表的时候出现 1、整块空白合并单元格,数据无法填入的现象 2、表格重新导入一批,无法成功入库,导致只能导入一次,如下图: 说明:点击增量导入,会在第一行下面追加二次导入的数据,但提交之后仍显示第一批数据 原因:单元格数据设置为默认分组,应当改成列表,所在行的每个单元格都要改成列表(包括隐藏) 官方文档提示:Excel多次导入 修改完成后 1.数据可正常导入 2.【表格重新导入一批,无法成功入库,导致只能导入一次】问题解决:点击增量导入-提交,数据成功入库

node多版本控制(nvm的下载安装及使用)

nvm的下载安装及使用 一、nvm介绍二、nvm下载安装及使用2.1 nvm下载2.2 nvm安装2.3 nvm的使用 一、nvm介绍 在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换。 二、nvm下载安装及使用 2.1 nvm下载 安装包下载地址:https://github.com/coreybutler/nvm-windows/releases,windows系统下载nvm-setup.zip安装包 2.2 nvm安装 如果电脑上之前已经单独安装了node,先卸载,然后解压nvm-setup.zip安装包,进入解压的文件夹,双击exe后缀文件进行安装 下面这个界面是选择安装nvm的路径,自己可以更改安装路径,一般默认路径 下面这个是nodejs的安装位置,如果没有nodejs文件夹就新建一个(后来发现他会自动生成一个快捷方式) 安装完毕后输入 nvm -v 查看版本。 下面设置setting.txt,可忽略不设置 安装完毕后,找到安装的路径,一些简单配置,打开setting.txt 在后面添加这两行代码 node_mirror: https://npm.taobao.org/mirrors/node/ npm_mirror: https://npm.taobao.org/mirrors/npm/ 2.3 nvm的使用 nvm off // 禁用node.js版本管理(不卸载任何东西) nvm on // 启用node.js版本管理 nvm install <version> // 安装node.js的命名 version是版本号 例如:nvm install 8.12.0 nvm uninstall <version> // 卸载node.js是的命令,卸载指定版本的nodejs,当安装失败时卸载使用 nvm ls // 显示所有安装的node.js版本 nvm list available // 显示可以安装的所有node.js的版本 nvm use <version> // 切换到使用指定的nodejs版本 nvm v // 显示nvm版本 nvm install stable // 安装最新稳定版 查看所有版本 # 显示已安装的`Node`版本列表(`list`可简化为`ls`)。 nvm list # 显示可安装的`Node`版本列表(`available`可选参数)。 nvm list available 安装指定版本 # 1、安装指定版本的`Node`(`version`是指定版本)。 nvm install <'version'> # 2、安装指定版本的`Node`(`latest`是最新稳定版本) nvm install latest # 3、`arch`指定安装`32`位还是`64`位版本(可选参数,默认是系统位数)。 # 可以添加`--insecure`绕过远程服务器的`SSL`。 nvm install <'version'> ['arch'] ['--insecure'] # 安装`11.

springboot春华纺织厂的仓储管理系统7s177[独有源码]了解毕业设计的关键考虑因素

本项目包含程序+源码+数据库+LW+调试部署环境,文末可获取一份本项目的java源码和数据库参考。 系统的选题背景和意义 选题背景: 随着信息技术的快速发展和企业规模的不断扩大,仓储管理对于现代企业来说变得越来越重要。特别是在制造业中,仓储管理系统的高效运作直接关系到生产效率和客户满意度。然而,传统的手工操作和纸质记录已经无法满足日益增长的需求,因此需要一种更先进、更智能的解决方案来提升仓储管理的效率和精确性。 选题意义: 春华纺织厂作为一家规模庞大的纺织企业,其仓储管理面临着诸多挑战和问题。首先,由于产品种类繁多、库存量大,传统的人工盘点和记录容易出现错误和遗漏,导致库存准确性下降。其次,仓库空间有限,如何合理利用仓储空间,提高存储密度,成为了一个亟待解决的问题。此外,订单处理和货物出入库的流程繁琐,需要耗费大量时间和人力资源。 因此,开发一套适用于春华纺织厂的仓储管理系统具有重要意义。该系统将通过引入先进的信息技术,实现对仓库内货物的自动化管理和追踪,提高库存准确性和操作效率。同时,通过智能算法优化仓储空间的利用,最大限度地提高存储密度,降低仓储成本。此外,系统还将简化订单处理和货物出入库流程,减少人力资源的浪费,提升企业整体运营效率。 综上所述,春华纺织厂的仓储管理系统的选题背景和意义在于解决传统仓储管理中存在的问题,提高仓储效率和精确性,降低成本,从而推动企业的可持续发展。 以上选题背景和意义内容是根据本选题撰写,非本作品实际的选题背景、意义或功能。各位童鞋可参考用于写开题选题和意义内容切勿直接引用。本作品的实际功能和技术以下列内容为准。 技术栈: 本项目的技术栈主要包括前端Vue、后端Java程序语言开发、SSM框架和MySQL5.7数据库。 Vue是一种轻量级的JavaScript框架,能够快速构建交互式的用户界面。Vue提供了易于使用的API,使得开发者可以非常容易地创建组件化、可复用的代码。 Java是一种跨平台的编程语言,拥有丰富的库和工具生态系统,广泛用于企业级应用开发。Java在后端服务开发方面拥有强大的性能和可伸缩性,并且能够很好地与其他技术栈集成,如Spring、Hibernate、MyBatis等。 SSM框架是Spring、SpringMVC和MyBatis三个框架的结合体,其整合了各自优势,形成了完整的Web开发框架。本系统客户端向服务器发送请求,SpringMVC拦截请求交给相应的控制器(Controller)处理,使用注解或配置文件定义URL和方法映射,控制器调用Service层中的业务逻辑处理方法,Service层处理完毕后将结果返回给控制器,控制器根据返回的结果选择适当的视图(View)进行展示,视图渲染完成后返回给客户端的过程。 MySQL5.7是一种开源的关系型数据库管理系统,在数据存储和管理方面表现优异。它能够轻松地集成到任何技术栈中,如Java、Python、Ruby等。除此之外,MySQL还具备高可靠性、高稳定性、易扩展性和强数据安全性等特点。 我们选择Vue、Java、SSM框架和MySQL5.7作为本作品的技术栈,具有语言间的无缝协作、代码复用性强、开发效率高、性能高等诸多优势。 3.1 需求描述 根据日常实际需要,一方面需要在系统中实现基础信息的管理,同时还需要结合实际情况的需要,提供春华纺织厂的仓储管理功能,方便春华纺织厂的仓储管理工作的展开,综合考虑,本套系统应该满足如下要求: 首先,在系统中需要实现对基础信息,包括登录注册、个人信息修改等信息的管理,这些是系统的基础信息,和系统中其他内容密切相关。 然后,系统中需要实现对仓管员信息的管理,允许管理员对仓管员信息进行必要的设置,同时要避免管理员对个人信息进行操作,保障仓管员的信息安全。 3.2 系统角色需求分析 综合春华纺织厂的仓储管理经历和对网上信息归纳整理的结果,在实际应用中,将用户分为两种:管理员和仓管员两个角色。其中仓管员可以操作的内容是有限的,管理员可以进行的操作最多。了解系统用户的分类以及可以进行的操作,对于接下来实现相关的功能具有重要的意义。 3.3 系统功能需求分析 (1)系统的通用功能包括用户登录和密码修改,是两个角色共同需要使用的功能,用例分析如图3-1所示。 图3-1 系统通用功能用例分析图 (2)管理员可以对首页、个人中心、仓管员管理、供应商管理、客户信息管理、布匹种类管理、布匹信息管理、入库信息管理、出库信息管理、系统管理等进行基本的信息管理。其用例分析如图3-2所示。 图3-2 管理员用例图 (3)仓管员可以对首页、个人中心、布匹信息管理、入库信息管理、出库信息管理、系统管理等功能进行相应操作,用例分析如图3-3所示。 图3-3仓管员用例图 3.4 非功能性需求分析 在系统的需求分析中除了保证系统功能需求分析准确完整,还应考虑与其相辅相成的各种其他因素,这样才能确保系统后续设计能够更加完善、清晰,确保系统实现后的有较高的使用价值。 3.4.1 先进性 为保证系统的先进性开发过程中应尽量使用先进的软件开发技术、设计方法、体系架构,符合当下的应用需求和保证性能可靠。 3.4.2 安全性 本系统中涉及两种用户角色,根据用户角色类型合理划分其页面访问权限。系统允许管理员对仓管员进行必要的设置,同时要避免管理员对个人重要信息进行操作,保障仓管员的信息安全。 3.4.3 易用性 系统使用方便、界面友好是提高用户使用体验的重要因素。系统实现其主体功能同时,界面设计要简洁大方、使用方便、美观清晰。系统的每一项反馈都要逻辑严密,弹窗信息也是简洁明了[12]。 3.4.4 可扩展性 可扩展性要求软件的设计要留有可升级接口和升级空间,便于今后根据新的模式需求进行功能的拓展。 3.4.5 可修改性 可修改性要求使用科学的方法设计软件,形成良好的结构和完备的文档[13]。它的前提要保证系统设计逻辑清晰,软件结构简单明了,代码编写过程中有良好的注释习惯,便于后续对系统性能进行调整。 3.5 系统流程分析 3.5.1 登录流程 每个用户都有专属的密码和账号,在输入合法的账号和密码之后即可进入系统。登录流程如图3-4所示: 图3-4登录流程图 3.5.2 添加信息流程 管理层人员有添加信息功能。添加信息流程如图3-5所示: 图3-5 添加信息流程图 3.5.3 删除流程 用户可以选择把自己发布的信息删掉,选择要删除的信息确认之后,删除信息的操作就完成了。删除信息流程图如图3-6所示。 图3-6 删除信息流程图 3.6 本章小结 本章首先对整个系统进行了详细的需求描述,然后按照这些要求对系统的角色和功能进行了详细的分析,并对这些要求进行了详细的说明。同时为保证需求分析的全面性,还对系统的一些非功能性需求进行描述和对系统流程进行分析,为以后的系统的开发提供了一个比较完善的参考依据。

掌握远程桌面的命令,提升工作效率

在当今的数字化时代,远程办公已经成为越来越普遍的需求。远程桌面连接是一种方便、实用的技术,它允许我们通过互联网连接到远程电脑,从而访问和控制远程电脑的桌面环境。在本文中,我们将介绍一些与远程桌面的命令相关的知识,帮助您更有效地进行远程办公,提高工作效率。 一、远程桌面的基本概念 远程桌面是一种计算机远程连接技术,它允许用户通过互联网连接到远程电脑,并能够在本地操作远程电脑的桌面环境。远程桌面的实现需要客户端和服务器端的支持,用户需要通过客户端程序来连接服务器端,以实现远程桌面的访问和控制。 二、远程桌面的命令 远程桌面命令主要用于对远程桌面进行管理和控制。我们可以使用远程桌面命令mstsc可以远程控制电脑,具体步骤如下: 步骤1.打开命令提示符或PowerShell窗口。 步骤2.输入mstsc命令,并输入远程电脑的IP地址和端口号,如下所示: mstsc /v:remotecomputer.com /p:portnumber 其中,remotecomputer.com是远程电脑的IP地址,portnumber是远程桌面的端口号,默认为3389。 步骤3.点击“连接”按钮,输入用户名和密码进行身份验证。 需要注意的是,远程电脑必须开启远程桌面服务,并且允许远程连接。另外,为了确保远程桌面的安全性,建议使用专门的网络连接,并设置安全的登录方式和密码。

django中migrate和makemigrations 区别

在Django中,migrate和makemigrations是两个相关但不同的命令。 1. makemigrations:该命令用于创建数据库迁移文件。当你在Django中修改了模型(Model)的结构时,你需要运行makemigrations命令来生成一个包含这些修改的迁移文件。迁移文件包含了数据库模式的变化,包括创建、修改或删除表、添加或删除字段等。 2. migrate:该命令用于执行数据库迁移。迁移是将模型的变化应用到数据库中的过程。当你运行migrate命令时,Django会检查迁移文件,并将其中的变化应用到数据库中,确保数据库的结构与模型的结构保持一致。 总结来说,makemigrations用于生成数据库迁移文件,而migrate用于将迁移文件应用到数据库中。makemigrations是一个生成迁移文件的过程,而migrate是一个执行迁移文件的过程。 在 Django 中,首先需要运行 makemigrations 命令来创建数据库迁移文件,然后再运行 migrate 命令来应用这些迁移文件。 以下是一个示例的执行步骤: 1. 确保你已经在项目的根目录下,可以使用命令 cd your_project_directory 进入项目根目录。 2. 运行 python manage.py makemigrations 命令来创建数据库迁移文件。例如,如果你的项目中有一个名为 myapp 的应用程序,可以运行 python manage.py makemigrations myapp 。 3. 等待命令执行完成后,运行 python manage.py migrate 命令来应用这些迁移文件并更新数据库。同样,如果你只想应用 myapp 应用程序的迁移文件,可以运行 python manage.py migrate myapp 。 这样,你就完成了 Django 中的迁移操作。

CompletableFuture在异常处理方面的一些常见问题和解决方案,建议牢记!

在Java并发编程中,CompletableFuture是一个强大的工具,可以帮助我们实现异步编程。它提供了丰富的方法来处理异步操作的结果和异常。然而,当使用CompletableFuture处理异常时,我们可能会遇到一些坑。本文将详细介绍CompletableFuture在异常处理方面的一些常见问题和解决方案。 CompletableFuture简介 CompletableFuture是Java 8引入的一个类,位于java.util.concurrent包下。它提供了一种方便的方式来进行异步编程,尤其是在处理一系列并发任务时非常有用。 CompletableFuture支持链式调用和组合多个异步任务。我们可以通过调用各种方法来注册回调函数,在任务完成时获取结果或处理异常。 异常处理的常见陷阱 在使用CompletableFuture处理异常时,有几个常见的陷阱可能会导致错误的结果或难以调试的问题。下面是其中一些值得注意的陷阱: 1. 异常被吞噬 在CompletableFuture中,如果一个阶段发生异常并且没有适当处理,异常可能会被吞噬而不会传播到后续阶段。这可能导致我们无法及时发现并处理潜在的问题。 例如,考虑以下代码片段: java复制代码CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { throw new RuntimeException("Oops!"); }); CompletableFuture<String> result = future.thenApply(i -> "Success: " + i); result.join(); // 此处不会抛出异常 在上面的代码中,当我们调用result.join()时,并没有抛出预期的异常。这是因为在future阶段抛出的异常没有正确地传播到result阶段。 2. 异常处理丢失 有时,我们可能会使用CompletableFuture的exceptionally方法来处理异常,并返回一个默认值或执行其他操作。然而,如果我们在exceptionally方法中不正确地处理异常,就会导致异常被丢失。 java复制代码CompletableFuture<Integer> future = CompletableFuture.supplyAsync(() -> { throw new RuntimeException("Oops!"); }); CompletableFuture<String> result = future.exceptionally(ex -> { System.out.println("Error occurred: " + ex); return "Default Value"; }); result.join(); // 此处不会输出错误信息 在上面的代码中,虽然我们在exceptionally方法中打印了错误信息,但是在调用result.join()时,并没有输出预期的错误信息。这是因为exceptionally方法只是对异常进行处理,并返回了一个默认值,而并没有将异常传播到后续阶段。 3. 异常处理导致堆栈追踪丢失 在使用CompletableFuture时,有时我们可能需要将异常重新抛出,以便在调用链的更高层进行处理或记录堆栈追踪信息。然而,如果我们不小心处理异常并重新抛出时,可能会导致堆栈追踪信息丢失。

Flutter中的Web应用程序开发:构建现代Web应用程序

作者:禅与计算机程序设计艺术 Flutter 中的 Web 应用程序开发:构建现代 Web 应用程序 作为人工智能专家,程序员和软件架构师,CTO,我今天将为大家分享有关 Flutter 中 Web 应用程序开发的见解。在这篇文章中,我们将深入探讨 Flutter Web 应用程序的开发过程、技术原理以及最佳实践。 引言 1.1. 背景介绍 随着移动设备的普及,Web 应用程序在全球范围内得到了越来越多的应用。开发者们对于移动端应用程序的需求也越来越多样化,Web 应用程序在满足这一需求方面具有巨大的潜力。Flutter 是一个优秀的小说 Flutter 开发框架,可以帮助开发者快速构建高性能、美观的 Web 应用程序。 1.2. 文章目的 本文旨在帮助开发人员了解 Flutter Web 应用程序的开发流程、技术原理以及最佳实践,以便构建出更加现代、高效和美观的 Web 应用程序。 1.3. 目标受众 本文主要面向有经验的开发者、Flutter 开发者以及 Web 应用程序爱好者。对于初学者,我们可以提供一些入门指导;对于有经验的开发者,我们可以深入探讨 Flutter Web 应用程序的开发技巧。 技术原理及概念 2.1. 基本概念解释 2.1.1. Web 应用程序 Web 应用程序是一种通过 Web 浏览器运行的应用程序。它使用 HTML、CSS 和 JavaScript 等脚本语言编写,通过 HTTP 协议与服务器进行通信。Web 应用程序可以分为动态和静态两类。动态 Web 应用程序使用服务器端脚本为用户提供交互功能,如用户登录、数据处理等;静态 Web 应用程序则主要通过页面静态渲染来呈现内容,如文本、图片等。 2.1.2. Flutter 简介 Flutter 是谷歌推出的一款移动应用程序开发框架。它提供了一种快速构建高性能、美观的移动应用程序的方法。Flutter 基于 Dart 语言编写,Dart 是一种静态类型的编程语言,具有丰富的特性,如类型安全、高并发等。

【数集】笔记(1):CMOS、MOS、NMOS、PMOS、MOSFET等的区别

复习时 发现连基础概念都不知道,连忙来找补 FET 把P型半导体放入电场中,根据同电荷排斥、异电荷吸引,电荷情况如下: 这种效应称为电场效应(Field Effect),依据这种现场所发明的半导体器件称为场效应管(Field Effect Transistor ,简称FET)。 MOSFET(MOS) 为了方便产生一个电场,科学家发明了一种器件,最上层是金属,一般是铝化合物,中间层是氧化物(一般是氧化硅),下面是P型半导体,此处也称为P型衬底。这种器件也即MOS(Metal Oxide Semiconductor)。 金属-氧化物半导体场效应晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor),简称MOS。----源自:数字集成电路——电路系统与设计(第二版)P57 NMOS 在P型衬底的两肩腐蚀出N型的电极,器件名为NMOS。金属层为栅极(G),N型掺杂浓度高端称源极(S),稍低的一端称为漏极(D)。 D极电位比S极高。 PMOS 衬底为N型的器件,施加电场产生一个空穴区,即P沟道,这种器件称为PMOS。 G极电势比S极低,S极电势比D极高。 CMOS 互补型MOSFET简称CMOS(complementary MOSFET) 参考文章: 1、从原理的视角,一文彻底区分MOS MOSFET NMOS PMOS CMOS 2、小科普|FET、 MOSFET、 MESFET、 MODFET的区别

Verilog学习笔记(6):课设

1、基于Verilog的跑马灯设计 2、基于Verilog的十字路口交通灯控制电路设计 modelsim安装:Verilog学习笔记(2):Modelsim 10.6安装 modelsim使用:(1)ModelSim的使用详解 (2)modelsim安装与使用 (3)Modelsim观察波形–基础操作 Verilog设计 (一)硬件描述语言verilog

SpringBoot 2.0 中 HikariCP 数据库连接池原理解析

作为后台服务开发,在日常工作中我们天天都在跟数据库打交道,一直在进行各种CRUD操作,都会使用到数据库连接池。按照发展历程,业界知名的数据库连接池有以下几种:c3p0、DBCP、Tomcat JDBC Connection Pool、Druid 等,不过最近最火的是 HiKariCP。 HiKariCP 号称是业界跑得最快的数据库连接池,自从 SpringBoot 2.0 将其作为默认数据库连接池后,其发展势头锐不可当。那它为什么那么快呢?今天咱们就重点聊聊其中的原因。 一、什么是数据库连接池 在讲解HiKariCP之前,我们先简单介绍下什么是数据库连接池(Database Connection Pooling),以及为什么要有数据库连接池。 从根本上而言,数据库连接池和我们常用的线程池一样,都属于池化资源,它在程序初始化时创建一定数量的数据库连接对象并将其保存在一块内存区中。它允许应用程序重复使用一个现有的数据库连接,当需要执行 SQL 时,我们是直接从连接池中获取一个连接,而不是重新建立一个数据库连接,当 SQL 执行完,也并不是将数据库连接真的关掉,而是将其归还到数据库连接池中。我们可以通过配置连接池的参数来控制连接池中的初始连接数、最小连接、最大连接、最大空闲时间等参数,来保证访问数据库的数量在一定可控制的范围类,防止系统崩溃,同时保证用户良好的体验。数据库连接池示意图如下所示: 因此使用数据库连接池的核心作用,就是避免数据库连接频繁创建和销毁,节省系统开销。因为数据库连接是有限且代价昂贵,创建和释放数据库连接都非常耗时,频繁地进行这样的操作将占用大量的性能开销,进而导致网站的响应速度下降,甚至引起服务器崩溃。 二、常见数据库连接池对比分析 这里详细总结了常见数据库连接池的各项功能比较,我们重点分析下当前主流的阿里巴巴Druid与HikariCP,HikariCP在性能上是完全优于Druid连接池的。而Druid的性能稍微差点是由于锁机制的不同,并且Druid提供更丰富的功能,包括监控、sql拦截与解析等功能,两者的侧重点不一样,HikariCP追求极致的高性能。 下面是官网提供的性能对比图,在性能上面这五种数据库连接池的排序如下:HikariCP>druid>tomcat-jdbc>dbcp>c3p0: 三、HikariCP 数据库连接池简介 HikariCP 号称是史上性能最好的数据库连接池,SpringBoot 2.0将它设置为默认的数据源连接池。Hikari相比起其它连接池的性能高了非常多,那么,这是怎么做到的呢?通过查看HikariCP官网介绍,对于HikariCP所做优化总结如下: 1. 字节码精简 :优化代码,编译后的字节码量极少,使得CPU缓存可以加载更多的程序代码; HikariCP在优化并精简字节码上也下了功夫,使用第三方的Java字节码修改类库Javassist来生成委托实现动态代理.动态代理的实现在ProxyFactory类,速度更快,相比于JDK Proxy生成的字节码更少,精简了很多不必要的字节码。 2. 优化代理和拦截器:减少代码,例如HikariCP的Statement proxy只有100行代码,只有BoneCP的十分之一; 3. 自定义数组类型(FastStatementList)代替ArrayList:避免ArrayList每次get()都要进行range check,避免调用remove()时的从头到尾的扫描(由于连接的特点是后获取连接的先释放); 4. 自定义集合类型(ConcurrentBag):提高并发读写的效率; 5. 其他针对BoneCP缺陷的优化,比如对于耗时超过一个CPU时间片的方法调用的研究。 当然作为一个数据库连接池,不能说快就会被消费者所推崇,它还具有非常好的健壮性及稳定性。HikariCP从15年推出以来,已经经受了广大应用市场的考验,并且成功地被SpringBoot2.0作为默认数据库连接池进行推广,在可靠性上面是值得信任的。其次借助于其代码量少,占用cpu和内存量小的优点,使得它的执行率非常高。最后,Spring配置HikariCP和druid基本没什么区别,迁移过来非常方便,这些都是为什么HikariCP目前如此受欢迎的原因。 字节码精简、优化代理和拦截器、自定义数组类型。 四、HikariCP 核心源码解析 4.1 FastList 是如何优化性能问题的 首先我们来看一下执行数据库操作规范化的操作步骤: 通过数据源获取一个数据库连接;创建 Statement;执行 SQL;通过 ResultSet 获取 SQL 执行结果;释放 ResultSet;释放 Statement;释放数据库连接。 当前所有数据库连接池都是严格地根据这个顺序来进行数据库操作的,为了防止最后的释放操作,各类数据库连接池都会把创建的 Statement 保存在数组 ArrayList 里,来保证当关闭连接的时候,可以依次将数组中的所有 Statement 关闭。HiKariCP 在处理这一步骤中,认为 ArrayList 的某些方法操作存在优化空间,因此对List接口的精简实现,针对List接口中核心的几个方法进行优化,其他部分与ArrayList基本一致 。

python 大模型处理的常见问答,知识蒸馏,数据增强,大模型funtuning,大模型训练

一、知识蒸馏的过程 知识蒸馏是指将一个复杂的模型或系统的知识压缩成一个更简单的模型或系统的过程。下面是知识蒸馏的一般步骤: 1. 选择源模型:选择一个复杂的源模型,通常是一个在某个任务上表现出色的模型。 2. 准备数据集:为蒸馏过程准备一个适当的数据集。通常情况下,这个数据集应该包含源模型的输入数据和相应的目标输出数据。 3. 训练源模型:使用准备好的数据集对源模型进行训练,以便获取源模型的权重和参数。 4. 定义蒸馏目标:确定蒸馏目标,即希望通过蒸馏过程获得的简化模型的性能指标。 5. 准备简化模型:创建一个简化模型的结构,通常是一个更小、更轻量级的模型。 6. 蒸馏过程:使用源模型的训练数据和目标输出数据,将知识从源模型传递到简化模型。这可以通过多种方法实现,例如使用源模型的输出作为简化模型的目标输出,或者使用源模型的中间表示作为简化模型的输入。 7. 训练简化模型:使用蒸馏过程生成的数据对简化模型进行训练,以获得更简单但性能相近的模型。 8. 评估简化模型:使用测试数据集对简化模型进行评估,以验证其在目标任务上的性能。 9. 迭代优化:根据评估结果,可以对蒸馏过程进行进一步的调整和优化,以提升简化模型的性能。 通过上述步骤,知识蒸馏可以帮助我们将复杂的模型或系统转化为更简单、更高效的模型,从而提高计算效率并减少资源消耗。 二、大模型funtuning的过程 大模型funtuning的过程通常包括以下步骤: 1. 数据准备:首先需要准备训练数据集,包括输入文本和对应的标签。这些数据集可以是自动生成的,也可以由专业人员进行标注。确保训练数据集的质量和多样性对于模型的性能至关重要。 2. 模型选择:选择一个适当的基础模型,通常是一个预训练的大型模型,如GPT、BERT等。这些模型在大规模文本数据上进行了预训练,可以作为起点,通过微调来适应特定的任务。 3. 微调策略:确定用于微调的策略。这可能包括选择要微调的层、设置学习率、批量大小等超参数。 4. 损失函数:选择适当的损失函数来评估模型在训练数据集上的性能。常见的损失函数包括交叉熵损失函数、均方误差损失函数等。 5. 训练过程:使用训练数据集对模型进行训练。训练过程通常使用随机梯度下降等优化算法,通过最小化损失函数来更新模型的参数。 6. 超参数调整:在训练过程中,可以通过验证集的性能来调整超参数,如学习率、正则化参数等,以提高模型的泛化能力和性能。 7. 预测和评估:使用微调后的模型对测试数据集进行预测,并计算模型在测试数据集上的性能指标,如准确率、召回率、F1值等。 8. 迭代优化:根据评估结果,可以对模型进行进一步优化,如调整模型架构、增加训练数据集的规模等。 通过反复迭代以上步骤,直到达到预期的性能水平。需要注意的是,大模型funtuning的过程可能非常耗时和计算资源密集,需要充分利用硬件设备来提高效率。 三、大模型的训练策略 通常有以下几种: 1. 分布式训练:由于大模型的参数量巨大,单个设备无法容纳,因此需要使用多个设备进行分布式训练。可以使用分布式训练框架,如Horovod、TensorFlow的分布式策略等。 2. 梯度累积:由于大模型的参数量多,导致一次前向传播和反向传播所需的内存较大,可能超出设备的限制。梯度累积可以解决这个问题,即将多个小批量数据的梯度累积起来,然后进行一次参数更新。 3. 渐进式训练:渐进式训练是将大模型拆分成多个子模型,逐步进行训练。可以先训练一个较小的子模型,然后逐渐增加模型的大小和复杂度,最终得到完整的大模型。 4. 学习率调度:学习率是训练过程中一个重要的超参数,可以影响模型的收敛速度和性能。对于大模型的训练,可以采用学习率的衰减策略,即随着训练的进行,逐渐降低学习率的大小,以提高模型的稳定性和泛化能力。 5. 正则化和优化算法:对于大模型的训练,正则化和优化算法也是重要的策略。正则化可以防止过拟合,如L1正则化、L2正则化等。优化算法可以选择合适的算法,如Adam、SGD等,以加速收敛和提高模型性能。 6. 数据增强:数据增强是通过对训练数据进行一系列变换和扩充,以增加数据的多样性和数量。对于大模型的训练,数据增强可以提高模型的泛化能力和鲁棒性。 7. 提前停止:提前停止是指在训练过程中,根据验证集的性能指标来判断是否终止训练。对于大模型的训练,为了避免过拟合和浪费计算资源,可以设置一个阈值,当验证集性能指标不再提升时,及时停止训练。 以上是一些常见的大模型训练策略,具体的选择和调整还需要根据具体任务和数据集的特点来决定。同时,不同的策略也可以结合使用,以进一步提高大模型训练的效果和效率。 四、图像处理常见数据增强策略 常见的数据增强策略有以下几种: 1. 随机裁剪:随机裁剪是指从原始图像中随机选择一个子区域作为训练样本。可以随机选择裁剪的位置、大小和宽高比,以增加数据的多样性。 2. 随机翻转:随机翻转是指将图像进行水平或垂直方向的翻转。可以增加数据的多样性,并提高模型对不同方向的鲁棒性。 3. 随机旋转:随机旋转是指对图像进行随机角度的旋转操作。可以模拟实际应用中的旋转变换,提高模型的鲁棒性。 4. 随机缩放:随机缩放是指对图像进行随机比例的缩放操作。可以模拟实际应用中的尺度变换,增加数据的多样性。 5. 随机亮度/对比度调整:随机调整图像的亮度和对比度,可以增加数据的多样性,并提高模型的鲁棒性。

【前端工程化】深入浅出vite(二)--vue3全家桶+ts构建后管系统

安装基础包 npm create vite@latest # 这里选择的是Vue+Typescript的组合 cd vue-admin npm install # 先安装基础包 npm install vue-router@4 npm i pinia npm i axios npm install sass --save-dev npm install element-plus --save npm install @element-plus/icons-vue npm install -D unplugin-vue-components unplugin-auto-import npm i eslint -D # 提交规范 npm i lint-staged husky --save-dev npm install @commitlint/cli @commitlint/config-conventional -D 代码规范 npm init @eslint/config 接下来会有一堆提示,选择如下: Need to install the following packages: @eslint/create-config Ok to proceed? (y) √ How would you like to use ESLint?

npm安装github上的包

npm install git+github仓库地址.git#分支 或者在package.json dependencies 里加入: “仓库名”: “git+github仓库地址.git#分支”,

软件测试(一)--计算机基础知识(精华版)

计算机 computer ,又叫PC。由硬件和软件两部分组成。 计算机分类:个人计算机、工控机、服务器 服务器是提供服务的计算机, 没有装软件的计算机称为裸机 计算机硬件分为运算器、控制器、存储器、输入设备、输出设备组成 运算器和控制器统称为中央处理器 CPU 软件分为系统软件和应用软件 系统软件是 应用软件和硬件直接的桥梁 分为操作系统和驱动程序 操作系统 个人电脑上的操作系统有 苹果系统、windows系统 、linux系统 手机上操作系统有 android 安卓操作系统、IOS 苹果手机操作系统 服务器上的操作系统有linux和window server 这两种 Linux用的最多 应用软件是给用户提供应用服务的,电脑上除了系统软件都是应用软件,我们使用的都是应用软件。 功能键 Tab 制表符 shift alt ctrl delete inter 空格键 window键 PrtSc 截屏(必须记住) 快捷键 全选 ctrL+A 复制 ctrl+C 剪切 ctrl+X 粘贴 ctrl+V 回到桌面 wind+D 撤回 ctrl+z 软件的两种架构模型 B/S和C/S B/S browser server 浏览器服务器 所有的B/S架构的软件都是通过浏览器来访问的 比如百度公司将自己的软件放在他们公司的服务器上,用户在自己的电脑上通过浏览器,输入百度公司的网址就访问到了它的软件 C/S client server 客户端服务器 需要我们在自己的电脑上去安装客户端软件,这个软件的公司会将它的服务端软件安装在他们公司的服务器上。我们就可以通过客户端去访问它的服务器端的软件。 有些软件不需要联网,这也属于C/S架构的。比如扫雷 B/S和C/S两种架构的软件的优缺点(面试) 二进制:电脑使用的是二进制,二进制最小的单位是bit 位,基本单位是字节byte 1B=8bit

springboot项目部署教程【本地+云服务器】

目录 前言一、环境准备二、项目导入三、配置Maven四、数据库导入五、启动项目六、浏览器访问结语 前言 springboot项目部署教程用最简单、暴力的方法完成项目导入。 🥇个人主页:@MIKE笔记 🥈文章专栏:毕业设计源码合集 ⛄联系博主: wx:mikenote 一、环境准备 环境版本 / 下载系统win 10 /win 11JDK1.8.0_144Maven3.6.3JDK1.8.0_144IDEA2023Node14.16.0 +npm6.14.11 +MySQL5.6.42 / 5.7.x 备注:以上版本为博主电脑配置,可点击进入官网下载 二、项目导入 将项目从根目录直接拖入, 三、配置Maven 找到自己Maven目录对于文件,按图操作。 四、数据库导入 五、启动项目 修改application.yml文件,与自己数据库一致,点击绿色▶️按钮,运行即可 六、浏览器访问 http://localhost:2023 2023为端口号 结语 以上便是springboot项目部署教程,下面是几款spring boot项目: 项目名地址1、基于springboot的大学生综合素质测评管理系统http://t.csdn.cn/smVjL2、基于springboot + vue微信小程序文创平台商城http://t.csdn.cn/rUQDg3、基于springboot+vue—酒店客房管理系统http://t.csdn.cn/4zBzE4、基于springboot+vue前后端分离-考试报名管理系统http://t.csdn.cn/TpHxC5、待补充--------------------------------------http://t.csdn.cn/smVjL6、待补充--------------------------------------http://t.csdn.cn/smVjL 备注:如果你的本地已正确部署完成,需要部署到云服务器可联系博主免费部署:wx:mikenote 如果你的项目是SSM,可查看——项目部署教程【本地部署-图文详解】:http://t.csdn.cn/WZZ5E

TTS语言合成 在线体验|部署

一.前言 TTS技术在很多应用场景中都有广泛的应用,比如语音助手、电子书朗读、语音导航等。基于飞桨PaddleSpeech 开源模型库,本文提供语言合成在线体验应用并介绍部署教程。 二.在线体验 利用百度飞桨深度学习框架,我在飞桨平台部署了TTS语音合成在线应用,用户可以直接体验,可以自由选择声学模型和声码器,支持汉语、英语、汉英和粤语四种语言合成,合成500字仅需10s!前往体验 三.部署 PaddleSpeech支持通过命令行和Python API形式调用,上述的在线应用只提供了部分参数设置,接下来介绍通过Python API方式部署(注意,TTS语音合成使用CPU进行的话速度较慢,如果你本地机器没有GPU配置,可以使用百度飞桨平台提供的免费GPU环境)。 1.依赖安装 pip install paddle paddlespeech # paddlespeech 依赖需要用到 nltk 包,但是有时会因为网络原因导致不好下载,此处手动下载一下放到百度服务器的包 wget https://paddlespeech.bj.bcebos.com/Parakeet/tools/nltk_data.tar.gz # 解压到环境路径目录下 tar zxvf nltk_data.tar.gz 2.API调用 调用非常方便,只需要设置好参数就行,具体声学模型和声码器会自动下载 import paddle from paddlespeech.cli.tts import TTSExecutor tts_executor = TTSExecutor() wav_file = tts_executor( text='今天的天气不错啊', output='output.wav', am='fastspeech2_csmsc', am_config=None, am_ckpt=None, am_stat=None, spk_id=0, phones_dict=None, tones_dict=None, speaker_dict=None, voc='pwgan_csmsc', voc_config=None, voc_ckpt=None, voc_stat=None, lang='zh', device=paddle.get_device()) 具体参数: input(必须输入):用于合成音频的文本。am:TTS 任务的声学模型, 默认值:fastspeech2_csmsc。am_config:声学模型的配置文件,若不设置则使用默认配置,默认值:None。am_ckpt:声学模型的参数文件,若不设置则下载预训练模型使用,默认值:None。am_stat:训练声学模型时用于正则化 mel 频谱图的均值标准差文件,默认值:None。phones_dict:音素词表文件, 默认值:None。tones_dict:声调词表文件, 默认值:None。speaker_dict:说话人词表文件, 默认值:None。spk_id:说话人 id, 默认值: 0。voc:TTS 任务的声码器, 默认值: pwgan_csmsc。voc_config:声码器的配置文件,若不设置则使用默认配置,默认值:None。voc_ckpt:声码器的参数文件,若不设置则下载预训练模型使用,默认值:None。voc_stat:训练声码器时用于正则化 mel 频谱图的均值标准差文件,默认值:None。lang:TTS 任务的语言, 默认值:zh。device:执行预测的设备, 默认值:当前系统下 paddlepaddle 的默认 device。output:输出音频的路径, 默认值:output.