mac安装BCompare教程

1.去BCompare官网下载最新版的BCompare,正常解压安装。 官网下载地址https://www.scootersoftware.com/download.php 2.安装完后如果你是第一次使用可以免费使用30天,如果想免费永久使用有下面两种方式 (1)手动删除/Library/Application Support/Beyond Compare文件夹中的registry.dat文件 这个文件里是你的注册信息,删除后你就又有30天的免费使用期,如此反复可达到永久免费使用目的 备注:如果找不到该文件夹,可以在访达上方的工具栏中选择“前往”—》“前往文件夹”—〉输入/Library/Application Support进入该文件夹,找到对应的Beyond Compare或BCompare文件夹 (2)自动删除 a)找到你的BCompare显示它的包内容 b)进入MacOS文件夹将原来的BCompare文件重命名为BCompare.real,并创建一个新的BCompare文件,该文件内容如下 #!/bin/bash rm "/Users/$(whoami)/Library/Application Support/Beyond Compare/registry.dat" "`dirname "$0"`"/BCompare.real $@ 注解:第一行代表注明解释器,第二行代表删除 registry.dat文件,第三行代表启动真正的主程序即被我们重命名的BCompare.real 这样每次启动BCompare时就会帮我们自动删除注册文件了。 注意事项:如果你是新建一个文件然后转格式的话,最后可能导致文件内存在一些乱码 chmod a+x /Applications/Beyond\ Compare.app/Contents/MacOS/BCompare 在命令行输入这段命令执行,给你的BCompare文件执行权限 可以使用vi /Applications/Beyond\ Compare.app/Contents/MacOS/BCompare命令查看编辑BCompare文件里的内容 输入:wq!保存退出

GragGAN:人工智能黑科技,本地使用详细教程

人工智能黑科技 - GragGAN 简介 DragGAN是一种由Max Planck研究所开发的创新型人工智能工具,通过仅需几个点击和拖动操作,能够实现对照片的真实修改。根据一篇研究论文,该工具主要包括两个要素:基于特征的运动监控和一种革命性的点追踪技术。 DragGAN赋予用户交互性,使其能够自主拖动图片中的点,并将其移动至所选择的目标位置。通过基于特征的运动监控,用户可以精确地调整处理点的位置,从而完全掌控图片修改的过程。此外,点追踪技术确保在整个编辑过程中准确地跟踪处理点的位置。 DragGAN超越了传统图片编辑软件的功能范畴。它提供了超越简单像素操作的修改能力,让用户能够在多个对象类型之间应用不同的修改效果。举例来说,它可以重新生成底层项目,而不仅仅是扭曲,甚至可以旋转3D图片。 尽管DragGAN目前仅作为演示版本存在,但它已经引起了那些渴望了解其能力的用户的想象力。它能够在几秒钟内实现逼真和互动的图片修改,成为各种技能水平用户的有前途的工具。 DragGAN通过生成图像的3D模型来改变图片,然后对该模型进行编辑。用户可以调整图像中物体的位置、形状、情感和布局,而不会影响图像的其他部分。DragGAN首先利用卷积神经网络(CNN)从图像中提取特征,然后使用这些特征生成图像的3D表示。接下来,使用第二个CNN来修改3D模型,该CNN通过使用经过人类修改过的图像数据集进行训练。这些修改过的照片用于教导CNN如何修改3D模型。一旦训练完成,CNN就可以用于修改任何图片。 本地安装运行 你可以根据自己的实际情况来选择是使用 pyPI 来安装还是 手动安装或使用 docker 安装 系统要求 此实现支持在 CPU、Nvidia GPU 和 Apple 的 m1/m2 芯片上运行。使用 GPU 时,1024 型号需要 8 GB 内存。512 型号建议使用 6 GB。 一、使用 PyPI 安装 使用 Conda 来安装需求。 conda create -n draggan python=3.7 conda activate draggan 安装 PyTorch conda install pytorch torchvision torchaudio pytorch-cuda=11.7 -c pytorch -c nvidia 安装 DragGAN pip install draggan # If you meet ERROR: Could not find a version that satisfies the requirement draggan (from versions: none), use pip install draggan -i https://pypi.

【银河麒麟系统V10常见命令】

1、查看麒麟系统版本。 cat /etc/.kyinfo 2、安装软件。 sudo dpkg -i *.deb 3、显示麒麟系统下的隐藏文件。 使用快捷键ctrl+h 4、强制关机。 sudo poweroff 5、修改数据盘权限命令。 sudo chmod 777 /data

Vue2项目引入高德地图并展示

前言 最近项目中需要使用地图来进行展示数据,并且还要进行一些交互的行为。因为之前并没有接触过地图类型的项目,看着原型图感觉还是很不错的,开始开发后也在研究如何在项目中正确引用高德地图,为此也是翻阅了高德官方的文档,发现实现起来还是比较容易的。高德官方文档的说明还是比较详细的。这里就想着把所知道的知识记录一下方便以后自己回来查看,如果也能帮到其他人就更好了,这是我在CSDN的第一篇博客,以后开展项目中所积累的知识或者出现的一些问题也会形成博客发出来,好在以后工作中发现类似的问题后有一个地方可以直观的查看并解决。 正文 引入高德地图前的准备 1.登录高德开放平台控制台,如果还没有开发者账号,需要注册开发者。 2.进入应用管理,创建新应用,在新应用中添加key,服务平台按自己项目需要自行选择。 3.以上操作成功后,就会在你创建的应用中显示key和安全秘钥了,其中key是在项目中引入地图的关键,安全秘钥是提升用户对key的安全有效管理,降低明文传输被窃取的风险。2021年12月02日后创建的key必须配备安全秘钥一起使用,具体用法参见JS API安全秘钥使用。 项目中引入高德地图 1.在项目根目录中找到index.html文件,引入下面两段标签结构,其中的安全秘钥和key是在高德平台获取的,直接替换即可。 <script type="text/javascript"> window._AMapSecurityConfig = { securityJsCode:'你的安全秘钥', } </script> <script type="text/javascript" src="https://webapi.amap.com/mapsv=1.4.4&key=你的key"></script> 2.在需要展示地图的页面,创建地图容器,并指定宽高(高度要必须指定否则不会展示地图)。 <div class="mapContainer" id="map"></div> .mapContainer { width: 100%; height: 100%; } 注:如果指定百分比的高度,父元素也需要设置百分比高度,否则不会生效。 3.初始化地图 在methods中创建initMap方法,如下: //初始化地图 initMap() { this.map = new window.AMap.Map("map", { resizeEnable: true, //是否监控地图容器尺寸变化 center: [116.397428, 39.90923],//地图中心点,按照自己要求设置即可 zoom: 10,//地图缩放级别 }); }, 方法写完后在mouted钩子中调用即可 mounted() { this.initMap(); }, 4.以上工作做完后,打开页面就会显示地图了 总结 以上是我对vue2项目如何引入高德地图步骤的记录,整体实现还是非常容易的,这仅是展示地图,后续还会有增加一些交互效果,创建标记点,绘制轨迹路线等等,高德地图的文档和API还是非常齐全并且给力的。本篇博客分享结束~~

flask快速入门常用插件(草稿)

Flask快速入门,知识整理 扩展列表:http://flask.pocoo.org/extensions/ 扩展名功能Flask-SQLAlchemy操作数据库Flask-Script插入脚本Flask-Migrate管理迁移数据库Flask-SessionSession 存储方式指定Flask-WTF表单Flask-Mail邮件Flask-Babel提供国际化和本地化支持,翻译Flask-Login认证用户状态Flask-OpenID认证Flask-RESTful开发 REST API 的工具Flask-Bootstrap集成前端 Twitter Bootstrap 框架Flask-Moment本地化日期和时间Flask-Admin简单而可扩展的管理接口的框架 Flask:用Python语言基于Werkzeug工具箱编写的轻量级Web开发框架。 Flask和Django对比: 1.Django大而全,提供一站式解决方案,MVT模式,有ORM模式、后台站点管理等功能。 2.Flask轻巧,简洁,可扩展性强(Flask最重要特点), 其核心: WSGI 工具箱采用 Werkzeug(路由模块) 模板引擎则使用 Jinja2 #coding=utf-8 from flask import Flask, make_response, current_app, request from settings import Config # 导入werkzeug的路由模块, 转换器 from werkzeug.routing import BaseConverter # Flask接受一个参数name,参数指向程序所在模块 # __name__参数作用,是为了确认程序所在的位置 # Flask默认创建静态路由 # 默认参数是默认字符串,不能是int整值,不能传入python模块名 app = Flask(__name__) # 配置对象可以导入配置文件,config配置对象,方法from_object,引入配置文件 app.config.from_object(Config) # 自定义转换器 # 正则url作用:限制访问(不符合条件的),优化访问 class Regex(BaseConverter): """Base class for all converters""" def __init__(self, map, *args): super(Regex, self).

解决No module named添加sys.path.append(‘../‘)仍存在的路径问题

项目场景: linux下,文件夹ActionWithPose\Net内,执行ActionWithPoseM.py,需要调用同文件夹下的DSTformer.py和transformer.py ActionWithPoseM.py中: import sys sys.path.append('../') from ActionWithPose.Net.transformer import Transformer from ActionWithPose.Net.DSTformer import DSTformer 仍然报错 ModuleNotFoundError: No module named 'ActionWithPose' 解决方案: shell终端执行py的位置的问题,如果我cd进入Net文件夹,执行会报错 (py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose/Net# python ActionWithPoseM.py Traceback (most recent call last): File "ActionWithPoseM.py", line 15, in <module> from ActionWithPose.Net.transformer import Transformer ModuleNotFoundError: No module named 'ActionWithPose' (py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose/Net# 只需要退出一级文件夹,在python执行的时候再一级路径即可 (py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose/Net# cd .. (py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose# python Net/ActionWithPoseM.py …… (py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose# 受到shell所在位置的影响,内部代码中引入的模块,文件相对路径都要相对执行的路径位置而言 举一反三 sys.path.append('../') 对应执行位置 (py36) root@373c0571a886:/hdd/ljz/mmw/ActionWithPose# python Net/ActionWithPoseM.py 如果我要进入执行

ps技术的革命创新-photoshop beta版

Photoshop 2023 Beta功能介绍 全新的Generative Fill功能现已加入Photoshop Beta桌面应用程序,可以让用户在非破坏性的基础上轻松地添加、扩展或删除图像内容,实现令人惊喜、高兴和震撼的真实效果,仅需数秒。使用此功能,只需要选择图像中的目标对象或区域,然后点击“Generative Fill”按钮或“编辑> Generative Fill”菜单就可以了。 调整面板现在提供了预设选项,包括人像、风景、照片修复、创意、黑白和电影样式,这可以为照片编辑者节省时间和精力,帮助他们在复杂的工作流程中开始创建华丽的图像。 Remove Tool(工具)是一个易于使用且功能强大的工具,能让用户快速轻松地清理照片中的干扰或不需要的区域。它采用智能技术自动从用户刷过的照片中删除不需要的对象,同时保留对象的完整性和背景中的深度。 自Photoshop 24.5版发布后,上下文任务栏为用户提供了正确的工具和时机,加快工作流程。持续显示的菜单呈现了工作流程中最相关的下一步,如选择一个对象时,上下文任务栏会出现在画布上,提供更多定制的选项作为潜在的下一步,如“选取和蒙版”、“羽化”、“反转”、“创建调整层”或“填充选择”。 在Photoshop 24.5版的5月发布中,改进的渐变工具让用户能轻松绘制、预览和修改漂亮渐变。该功能已经得到显著改进,通过引入新的画布控件和实时预览提高了工作效率,后者可以非破坏性地编辑。使用渐变小部件调整渐变,并实时查看其影响。还可以添加颜色停止和不透明度停止,并移动它们以进行颜色、密度、不透明度和混合模式调整。这些改进让用户更加方便地绘制渐变,同时节省时间和精力。 安装方法 1、安装 Creative_Cloud_Set-Up.exe 2、打开Adobe Creative Cloud,会提示登录,选择创建账户 3、推荐使用Gmail邮箱注册 4、国家/地区选印度或美国,点击完成创建账号 5、首次登录会有Adobe服务弹窗,一定要取消勾选AGS 6、进入主页,点击左侧导航进入Beta应用程序,找到PSbeta版本,点击试用安装 7、安装完成,提示剩余7天试用期 8、退出Creative Cloud 9、打开AdobeGenP激活工具 10、点击Search,搜索本机Adobe未激活产品 11、搜索完成,点击Parch,打上激活补丁 12、完成后,剩余7天试用期消失 举例子 随心更改图片的主题背景 首先框选主体,点击“select subject”选择主题, 2)输入你想要的背景样式(这里我们不妨让小鹿迷失于城市的霓虹灯之间),点击“generate”生成 延展照片画面 1)首先扩展画板,露出原图未延展到的像素背景 2)而后框选要填补的部分,在弹出的交互框内输入你想要扩展的画面,点击“Generate”(这里我们不妨生成倒影出冰山和人的冰川)

Echarts的x轴调整间隔,可以用 xAxis数组子项的axisLabel.interval

Echarts的x轴调整间隔,可以用 xAxis数组子项的axisLabel.interval https://echarts.apache.org/zh/option.html#xAxis.axisLabel.interval xAxis.axisLabel.interval = 'auto' 默认值是’auto’ 可设置为 : number 或 Function 数字或函数 坐标轴刻度标签的显示间隔,在类目轴中有效。 默认会采用标签不重叠的策略间隔显示标签。 可以设置成 0 强制显示所有标签。 如果设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此类推。 可以用数值表示间隔的数据,也可以通过回调函数控制。回调函数格式如下: (index:number, value: string) => boolean 第一个参数是类目的 index,第二个值是类目名称,如果跳过则返回 false。 测试模板 option = { color: ["#3398DB"], tooltip: { trigger: "axis", axisPointer: { type: "shadow" } }, grid: {}, xAxis: [{ type: "category", data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"], axisLabel : { interval : 0 } }], yAxis: [{ type: "

Spark集群搭建

系列文章目录 Ubuntu常见基本问题 Hadoop3.1.3安装(单机、伪分布) Hadoop集群搭建 HBase2.2.2安装(单机、伪分布) Zookeeper集群搭建 HBase集群搭建 Spark安装和编程实践(Spark2.4.0) Spark集群搭建 文章目录 系列文章目录前置条件一、配置环境变量二、Spark配置1、slaves2、spark-env.sh 三、启动Spark集群1、启动Hadoop集群2、启动Spark集群3、关闭Spark集群 前置条件 Hadoop集群jdkMaster和Slave1两台机器 一、配置环境变量 在Master节点主机的终端中执行如下命令: vim ~/.bashrc 在.bashrc添加如下配置: export SPARK_HOME=/usr/local/spark export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin 执行如下命令使得配置立即生效: source ~/.bashrc 二、Spark配置 在Master节点主机上进行如下操作: 1、slaves 将 slaves.template 拷贝到 slaves cd /usr/local/spark/ cp ./conf/slaves.template ./conf/slaves sudo vim /usr/local/spark/conf/slaves slaves文件设置Worker节点。编辑slaves内容,把默认内容localhost替换成如下内容: slave1 2、spark-env.sh 将 spark-env.sh.template 拷贝到 spark-env.sh cp ./conf/spark-env.sh.template ./conf/spark-env.sh sudo vim /usr/local/spark/conf/spark-env.sh 修改为: export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath) export HADOOP_CONF_DIR=/usr/local/hadoop/etc/hadoop export SPARK_MASTER_IP=192.168.1.104 SPARK_MASTER_IP 指定 Spark 集群 Master 节点的 IP 地址;

halcon error 3142:[Can not open file for writing in operator write_image.]问题解决方法

目录: 问题描述解决方法 问题描述 🌀如果你在直接运行halcon或者其他语言编程接口的halcon的调用算子代码,碰到Halcon error: Can not open file for writing in operator write_image.,证明你是个大冤种了,碰到个头大的问题,开干🌈! 解决方法 问题类型:发生错误的通常是write_image算子,所以从算子的输入或输出参数寻找即可。 1️⃣文件名编码问题,例如要指定文件名为某种编码后可能发生,因为如果是从程序外部文件中读取信息,有可能受到其中的文件名编码影响或者由于打开文件时,指定某种编码格式打开,这些情况最有可能发生,所以要注意包含文件目录的文件名的编码格式问题!2️⃣文件太大问题:因为文件太大,write_image函数可能在该环境中无法写入,导致报错问题,在存图函数之前,线程休眠或延时一下,或者通过操纵IO的方式减少短时间内写入大文件内存!3️⃣文件名太长。这种问题比较少发生(但被我碰到了),由于write_image上面的包含目录的文件名太长的话也会发生(路径项或文件名项的字符串太长了),解决方法是减少该文件名(或文件路径)的长度,就普适性来说,改文件名最好 最后,文中,若有不足,敬请批评指正!!!

linux下一次复制cp多个文件(含scp命令)

linux cp 参数说明 -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于dpR参数组合。 -d:复制时保留链接。这里所说的链接相当于Windows系统中的快捷方式。 -f:覆盖已经存在的目标文件而不给出提示。 实际想要达到不提示的效果:应该写成"\cp -rf",比如:\cp -rf ./mdm-bak/2021-06-29-81243/*.war ./webapps -i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答"y"时目标文件将被覆盖。 -p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。 -r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。 -l:不复制文件,只是生成链接文件。 一.常用复制/备份命令 1.备份tomcat中所有的war包,到指定的目录下: cp -p ./webapps/*.war ./mdm-bak/2021-06-29-update-before cp -p ./webapps/*.war /home/tomcat/apache-tomcat-9.0.37/mdm-bak/2021-06-29-update-before 2.多文件复制:(注意文件之间不要有空格) cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/ 3.备份(同目录) //复制 flags.c 到flags_checkered.c 文件,当前文件同属于同一目录下 cp flags.c flags_checkered.c 4.备份(不同目录) //复制当前文件夹下的 flags.c 文件到 lab09 文件夹下flags_recised.c 文件 cp flags.c /home/user05/lab09/flags_revised.c 5.文件夹备份 //复制 lab07文件夹下的所有文件到 lab09 文件夹下 cp -r /home/user05/lab07/* /home/user05/lab09 高级备份语句 : 1.进入到tomcat目录下后,先创建文件夹: mkdir -m 777 ./mdm-bak/2021-06-29-update-before (需要已存在mdm-bak文件夹) 2.1备份所有war文件,到指定目录: cp -p ./webapps/*.war ./mdm-bak/2021-06-29-update-before 2.

找不到msvcr110.dll的解决方法

msvcr110.dll是Microsoft Visual C++ 2012 Redistributable的一部分,它是一种动态链接库(DLL),旨在存储许多Microsoft Visual C++应用程序共享的功能。这些功能包括数学运算、字符串处理、内存分配和释放等。它在Windows操作系统中起着至关重要的作用。下面是msvcr110.dll丢失的解决方法以及详细介绍。 msvcr110.dll丢失的解决方法 1、在浏览器顶部网页搜索【dll修复程序.site 】,进入站点 2、点击下载修复工具,然后右键进行解压,管理员身份运行打开,或许右键直接打开双击 3、打开修复工具,在修复工具的中点击安装,可以看到电脑缺失的dll文件,还有久的需要更新的文件,提示下一步,点击一下步既可。 4、等待文件安装完成,点击完成退出工具,再打开软件程序就恢复正常了。 msvcr110.dll的详细介绍 1、文件名:msvcr110.dll 2、版本号:11.0.51106.1 3、体积:754KB 4、开发商:windows 5、类型:动态链接库 msvcr110.dll总体上是一个非常重要的文件,用于支持众多windows程序的特殊功能。因此,它是Windows操作系统的一个必要组成部分,并确保用户的计算机能够正常地运行应用程序。如果你遇到与此文件相关的任何问题,可以用上面的解决方法来解决问题。 除此之外,msvcr110.dll还是一个被广泛使用的动态链接库,许多第三方应用程序也可能使用它来进行编程。这些应用程序可能包括游戏、音频/视频编辑软件、图片软件等等。因此,如果你遇到草图大师、刺客信条、Photoshop等软件的初始化错误或崩溃,可能是因为msvcr110.dll文件存在问题。 作为一个动态链接库,msvcr110.dll的执行在应用程序运行时是非常快速和高效的。它包括内部实现许多重要的功能,例如:内存分配和释放、文件操作、字符串操作、数学运算、日期和时间等。这些功能支持应用程序更高效地实现它们所需的各种功能。 此外,msvcr110.dll是一个通用库,可在许多应用程序之间共享,这意味着如果一个应用程序使用了此库,其他使用相似功能的应用程序将受益于它的存在。这减少了开发人员的工作负担,让他们更专注于应用程序的核心功能实现。 最后,msvcr110.dll还有一个非常重要的作用,即促进以C++语言编写的应用程序的跨平台兼容性。这意味着开发人员可以针对Windows、Linux和Mac操作系统开发相同的C++代码,并直接链接到相关的库或DLL中,可大大减少编写多个版本的应用程序代码的工作量。

STM32-HAL-串口的printf重定向

一、C语言的格式化输出 C语言的printf是一个标准库函数,用于将格式化的数据输出到标准的输出设备(通常是终端) 基本语法: int printf(const char *format, ...); 其中的第一个参数const char *format表示输出格式,后面的参数是可变参数,用于填充格式化字符串中的占位符。 字符输出原理: 格式化字符串处理:printf函数将第一个参数 const char *format 中的格式占位符解析出来,然后根据占位符的类型和顺序依次取可变参数中的值,将这些值转换为字符串,并将其按照格式化字符串中的顺序和样式组合成最终的输出字符串。输出字符串存储:printf函数将格式化后的输出字符串存储在内存缓冲区中。输出字符串显示:printf函数将内存缓冲区中的输出字符串显示到标准输出设备上,通常是终端。 在学习C语言的时候,在调用头文件#include "stdio.h"的时候,就可以使用printf函数进行格式化打印 #include <stdio.h> int a = 10; char str[] = "hello,world!"; int main(void) { printf("%s\n",str); printf("a = %d",a); return 0; } [result] hello,world! a = 10 但是在Keil中,在stm32的使用中是不能直接使用C语言的打印函数的,需要添加支持设置,即调用MDK的微库(MicroLib) 称之为printf的重定向。其实不仅仅可以把打印字符重定向,而且还可以将获取字符重定向。 二、开发准备 基于STM32L431RCT6的小熊派开发板 windows系统并安装Cubemx和Keil MDK的电脑 三、初始化片上外设 本次开发介绍的主要是串口的重定向,因此就是需要初始化串口外设。 设置串口通信为异步通信,波特率115200 生成代码,并选择keil-MDK打开该工程 四、设置重定向 4.1 点击魔术棒,然后勾选使用微库(Use MicroLIB) 针对MicroLIB的介绍: ​ MicroLIB是Keil公司提供的一个C标准库,专为嵌入式系统设计而开发。相对于标准C库,MicroLIB库更加轻量级,代码量更小,适用于嵌入式系统等资源受限的环境。MicroLIB库支持ISO/ANSI C标准的大部分函数,并增加了一些嵌入式系统常用的函数,例如串口通信、GPIO控制等。在MDK的工程中,开发者可以选择使用MicroLIB库来进行开发,以减小程序的代码大小和占用内存的空间。 ​ 需要注意的是,MicroLIB库并不是一个完整的C标准库,它只实现了一部分的C标准函数,并且一些函数的实现与标准C库可能存在差异。如果需要使用标准C库的函数或者功能更加完整的C标准库,开发者需要使用其他的C标准库,例如GNU C Library(glibc)等。 4.2 添加串口重定向代码 在main.c函数中添加头文件:

maven配置报错The JAVA_HOME environment variable is not defined correctly,this environment variable is

一:maven配置报错The JAVA_HOME environment variable is not defined correctly,this environment variable is 1.问题原因 出现这个错误信息是因为Adminstrator的用户变量JAVA_HOME路径是之前写项目配置的是java版本的与系统变量JAVA_HOME 的路径格格不入,所以就出现了这个错误,你们配置的时候也要注意Adminstrator的用户变量要和系统变量JAVA_HOME一定要相同,如下图 注意事项 对于JAVA_HOME的值构写,路径要写到\bin目录的上一个目录,如 C:\java8\bin,那么JAVA_HOME的值就应该是C:\JAVA8 注意事项 对于Path(路径),如果你的MAVEN_HOME的路径配置在系统变量中,那还是推荐将JAVA_HOME的Path也配置在系统变量中,Path的路径构写如下 2.参考文档 https://blog.csdn.net/HarryMing/article/details/121160829 https://www.jianshu.com/p/1859d1d052a1 //参考了两位师傅的文章,才解决的问题

【测试】JMeter做压力测试的步骤

【测试】JMeter做压力测试的步骤 1、首先在Jmeter可视化界面里配置好线程数和执行时间 2、点击保存该测试样例到一个指定的目录,如 D:\CodeSoftware\apache-jmeter-test-case\测试案例-01.jmx 3、在命令行中执行如下命令,就开始进行压力测试了: D:\>CodeSoftware\apache-jmeter-5\apache-jmeter-5.5\bin\jmeter -n -t D:\CodeSoftware\apache-jmeter-test-case\测试案例-01.jmx -l log.jtl 4、测试日志【log.jtl】我这里是它会直接存放在D盘的根目录里, log.jtl文件就是测试的报告,打开以后如下: 5、这种文本的形式不太友好,可以复制一份,然后将该日志文件后缀修改为【.csv】格式的,是一种表格形式,如下: 6、最后生成 dashboard 图表形式的压测报告,使用如下的命令: 执行完成之后,可以看到在这个目录下产生了一个【report1】的文件夹,这个就是生成的报告

Markdown 跳转到指定位置

这里写自定义目录标题 主要分两步第一步创建锚点第二步跳转 主要分两步 第一步创建锚点 <span id="采样率与带宽"></span> 第二步跳转 直接命令为:[采样率与带宽](#采样率与带宽) 实际显示为: 采样率与带宽

SecureCRT\FX (终端模拟器)win/mac激活版

SecureCRT 是一款终端仿真软件,和 Putty 的功能类似。 不过相比Putty比较简单的功能,SecureCRT 软件还是有许多的优势。比如可以一次创建多个 Tab Page,连接多台远程主机; Button Bar、 定制化界面等等。SecureFX 是用来传输文件,它的优点在于可视化界面,将本地主机和远程主机的目录结构以树形结构的方式显示出来。文件的传输可以直接手动拖动而无需使用命令。目前 SecureFX 支持一下几种协议。 ​ SecureCRT的主要优势: 从运行 Windows、Linux 和 Mac 的机器安全地访问 UNIX、Linux 或 VMS 上的业务应用程序 — 采用对 VT100/102/220 、TN3270 、ANSI、SCO ANSI、Wyse 50/60 、Xterm 的丰富仿真支持和 Linux 控制台。 配置、管理和组织您的所有会话,完全控制回滚、键映射、颜色、字体等 - 无论您有一个还是数千个会话。 通过 SSH(SSH2 、SSH1)、Telnet、Telnet/TLS、串行和其他协议从一个客户端访问您的所有网络设备。 利用具有省时功能的高效率 GUI,包括多会话启动、选项卡式会话、选项卡组、平铺会话、克隆会话、用于重复命令的按钮栏和映射键。 依赖用于加密登录和会话数据的开放标准安全外壳 (SSH) 协议、灵活的身份验证选项和可选的 FIPS 140-2 批准的密码。 通过使用 VBScript、JScript、PerlScript 或 Python 运行脚本,在 SecureCRT 中自动执行重复性任务。脚本记录器将您的击键构建到 VBScript 或 Python 脚本中。 使用 SFTP、Xmodem、Ymodem、Zmodem 或 Kermit 在网络设备之间传输文件。内置的 TFTP 服务器提供了额外的文件传输灵活性。 通过 SecureCRT 和 SecureFX® 文件传输客户端的紧密集成来节省步骤,它们共享会话和设置,让您无需重新输入密码即可运行 SFTP、FTP、SCP 和 FTP/TLS 文件传输会话。

vscode 快捷键与使用配置

vscode 快捷键与配置 文章目录 vscode 快捷键与配置简化记忆 主命令框常用快捷键代码编辑格式调整光标相关重构代码查找替换显示相关其他 前端开发必备插件 简化记忆 F1 F11 Ctrl+P ? ! : @ Ctrl+N Ctrl+Shift+N Ctrl+Shift+W Ctrl+Tab Ctrl+\ Ctrl+[ 、 Ctrl+] 多行左右移动 Shift+Alt+F,或 Ctrl+Shift+P 后输入 format code Alt+Up 或 Alt+Down 选中按TAB右移,按SHIFT+TAB左移 Ctrl+F 主命令框 F1 或 Ctrl+Shift+P: 打开命令面板。在打开的输入框内,可以输入任何命令,例如: 按一下 Backspace 会进入到 Ctrl+P 模式 在 Ctrl+P 下输入 > 可以进入 Ctrl+Shift+P 模式 在 Ctrl+P 窗口下还可以: 直接输入文件名,跳转到文件 ? 列出当前可执行的动作 ! 显示 Errors或 Warnings,也可以 Ctrl+Shift+M : 跳转到行数,也可以 Ctrl+G 直接进入 @ 跳转到 symbol(搜索变量或者函数),也可以 Ctrl+Shift+O 直接进入

Superset 安装配置

文章目录 Superset 安装配置一、Superset 概述1. Superset简介2. 功能概述3. 支持的数据库 二、Superset 环境部署步骤三、创建虚拟机,安装CentOS1.下载CentOS2.创建虚拟机3.编辑虚拟机设置4.安装centos7.9mini版本5.启动centos,并进行登录 四、CentOS配置1. 查看本地windows主机的网络适配器2. 查看虚拟机网络地址配置区间3. 查看本地windows主机的IP地址4. 虚拟机ip配置5. 启动securecrt连接虚拟机6.永久修改主机名7. 建立虚拟机主机名和ip地址的映射关系8. 建立本地windows主机中虚拟机主机名和虚拟机ip的映射关系 五、mysql的安装1.新建文件夹2. 下载mysql安装yum源3. 安装yum源,并更新升级GPG4. 启动mysql服务器5. 获取临时密码6. 用临时密码登录mysql7. 修改root密码8. 添加允许远程连接的用户9. 创建连接10. 远程连接 六、安装 Python 环境1. 安装 Miniconda1)下载 Miniconda(Python3 版本)2)上传文件3)安装 Miniconda4)加载环境变量配置文件,使之生效5)取消激活 base 环境 2. 创建 Python 3.9 环境1)配置 conda 国内镜像2)创建 Python 3.9环境3)激活 superset 环境4)执行 python 命令查看 python 版本 七、Superset 部署1. 安装依赖2. 安装 Superset1)安装(更新)setuptools 和 pip2)安装Superset3)初始化 Supetset 数据库4)创建管理员用户5)Superset 初始化 3. 启动 Supterset1)安装 gunicorn2)启动 Superset(1)确保当前 conda 环境为 superset,及下图所示(2)启动(3)登录 Superset 3)停止 Superset 4.

vue3 video 播放标签,截图并下载图片到本地

效果图1 效果图2 1、html代码 部分 <video autoplay controls loopobject-fit:cover crossOrigin="anonymous" id="videoElement" src="https://video19.ifeng.com/video09/2022/11/10/p6996366852502851668-102-150552.mp4?reqtype=tsl"></video> <button @click="selaction ">截取</button> ps( crossOrigin="anonymous" 这个属性是报错 SecurityError: Failed to execute toDataURL on HTMLCanvasElement : Tainted canvases may not be exported.) 设置的 js代码部分 // 截图转换---------------------------下载------------------------ const dataURLtoBlob = (dataurl: any) => { let arr = dataurl.split(","), mime = arr[0].match(/:(.*?);/)[1], bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n); while (n--) { u8arr[n] = bstr.charCodeAt(n); } return new Blob([u8arr], { type: mime }); }; const downloadFile = (url: any, name = "

css:CSS 线性渐变linear-gradient

CSS 渐变使您可以显示两种或多种指定颜色之间的平滑过渡。 CSS 定义了两种渐变类型: 线性渐变(向下/向上/向左/向右/对角线)径向渐变(由其中心定义) 参考文档 CSS 线性渐变 https://www.w3school.com.cn/css/css3_gradients.aspCSS 径向渐变 https://www.w3school.com.cn/css/css3_gradients_radial.aspMDN linear-gradient() https://developer.mozilla.org/en-US/docs/Web/CSS/gradient/linear-gradient 目录 线性渐变从上到下(默认)从左到右对角线使用角度使用多个色标使用透明度方向控制完整代码 线性渐变 语法 background-image: linear-gradient(direction, color-stop1, color-stop2, ...); 从上到下(默认) background-image: linear-gradient(red, yellow); 从左到右 background-image: linear-gradient(to right, red, yellow); 对角线 从左上角 到右下角 background-image: linear-gradient(to bottom right, red, yellow); 使用角度 -90deg 相当于从右向左 background-image: linear-gradient(-90deg, red, yellow); 使用多个色标 3个颜色 background-image: linear-gradient(red, yellow, green); 彩虹色 background-image: linear-gradient( to right, red, orange, yellow, green, blue, indigo, violet ); 使用透明度 background-image: linear-gradient(to right, rgba(255,0,0,0), rgba(255,0,0,1)); 重复线性渐变

SpringBoot实现前后端数据交互、json数据交互、Controller接收参数的几种常用方式

目录 1.写在最前 2.获取参数的几种常用注解 2.1.请求路径参数 2.2.Body参数 2.3.请求头参数以及Cookie 2.4.HttpServletRequest 3.参数校检 4.最终选择交互方式 5.参考文献 1.写在最前 现在大多数互联网项目都是采用前后端分离的方式开发,前端人员负责页面展示和数据获取,后端负责业务逻辑处理和接口封装。当与前端交互的过程当中,常用json数据与前端进行交互,这样想取出前端传送过来的json数据的时候,就需要用到@RequestBody这个注解。@RequestBody注解用于读取http请求的内容(字符串),通过springmvc提供的HttpMessageConverter接口将读到的内容转换为json、xml等格式的数据并绑定到controller方法的参数上。 提交方式为 POST 时, JQuery Ajax 以 application/x-www-form-urlencoded 上传 JSON对象 , 后端用 @RequestParam 或者Servlet 获取参数。 JQuery Ajax 以 application/json 上传 JSON字符串, 后端用 @RquestBody 获取参数。 2.获取参数的几种常用注解 @PathVariable:一般我们使用URI template样式映射使用,即url/{param}这种形式,也就是一般我们使用的GET,DELETE,PUT方法会使用到的,我们可以获取URL后所跟的参数。 @RequestParam:一般我们使用该注解来获取多个参数,在()内写入需要获取参数的参数名即可,一般在PUT,POST中比较常用。 @RequestBody:该注解和@RequestParam殊途同归,我们使用该注解将所有参数转换,在代码部分在一个个取出来,也是目前我使用到最多的注解来获取参数 还有@RequestHeader来获取头信息里的值,@CookieValue来获取Cookie值等等。在这,我也仅仅说明一些较常用的取值方法而已。 2.1.请求路径参数 2.1.1.get请求 一般用于查询数据,采用明文进行传输,一般用来获取一些无关用户信息的数据, @GetMapping 组合注解,是 @RequestMapping(method = RequestMethod.GET) 的缩写 a).get请求,url路径传参 get请求一般通过url传参,如: http://localhost:4001/api/unit?code=111 后端要获取code参数,可以使用@RequestParam注解 @RestController public class HelloController { @RequestMapping(value="/hello",method= RequestMethod.GET) public String sayHello(@RequestParam Integer id){ return "id:"+id; } } b).

Spring Boot注解@RequestMapping、@RequestBody的详解

目录 1、@RequestMapping 1.1、 value, method; value/method 示例 1.2、 consumes,produces; consumes/produces 示例 1.3、 params,headers; params/headers 示例 2、@PathVariable 2.1、定义单个URL变量 2.2、定义多个URL变量 3、@RequestHeader、@CookieValue 4、@RequestParam 5、@RequestBody 6、@SessionAttributes, @ModelAttribute 6.1、@SessionAttributes: 6.2、@ModelAttribute 7、@RestController 8、其他RabbitMQ 1、@RequestMapping @RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。@RequestMapping用在类上可以没有,但是用在方法上必须有。 窄化请求映射:在class上添加@RequestMapping(url)指定通用请求前缀, 限制此类下的所有方法请求url必须以请求前缀开头,通过此方法对url进行分类管理。 如下: @RequestMapping放在类名上边,设置请求前缀 @Controller @RequestMapping("/item") 方法名上边设置请求映射url: @RequestMapping放在方法名上边,如下: @RequestMapping("/queryItem ") 访问地址为:/item/queryItem @RequestMapping是handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A、处理request url 部分(这里指uri template中variable,不含queryString部分)的注解: @PathVariable; B、处理request header部分的注解: @RequestHeader, @CookieValue; C、处理request body部分的注解:@RequestParam, @RequestBody; D、处理attribute类型是注解: @SessionAttributes, @ModelAttribute; @RequestMapping注解有六个属性,下面我们把她分成三类进行说明 1.1、 value, method; value: 指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明); method: 指定请求的method类型, GET、POST、PUT、DELETE等;

Zotero安装与配置教程

Zotero 安装与配置教程 1. 安装与配置1.1 下载安装1.2 配置云同步1.2.1 配置Zotero网盘数据同步12.2. 配置WebDAV云同步配置TeraCLOUD云同步配置坚果云同步任意网盘云同步 1.2.3 更换WebDAV云盘 2. 插件2.1 Zotero Scihub自动下载文献2.2 .bib管理:Better BibTeX for Zotero安装配置导出 `.bib` 格式文件 2.3 中文文献管理插件:Jasminum - 茉莉花其他配置 2.4 DOI管理 1. 安装与配置 1.1 下载安装 Zotero是开源的文献管理软件,目前版本6已经支持直接查看PDF与做笔记注释等功能,可以在官网免费下载与使用:https://www.zotero.org/download/ 。另外,IOS版本已经上线,苹果用户可以直接在 App Store 中下载使用。 进入下载页面后,会自动识别操作系统,直接点击下载按钮就可以下载安装。如果下默认的操作系统不是自己想要的,也可以点击下面的链接进行切换。 为了方便从网页直接抓取文献到Zotero中,建议将浏览器插件 Zotero Connector 也装上。 装上浏览器插件 Zotero Connector 后,网页上打开文献,就可以直接将文件保存到Zotero中。 在Zotero中对应的工作群组中已经有了刚才网页添加的文件。 Zotero添加文献的PDF版本有以下几种方式: 公开的文献,Zotero会自动下载PDF如果Zotero没有权限获取,但网页可以访问,可以在网页中打开PDF,然后添加到Zotero中。Zotero会自动解析PDF信息,更新PDF的元数据。也可以先将文献元数据添加到Zotero,之后通过手动下载PDF,再将PDF以附件的形式直接拖拽到对应的文章中。直接下载PDF,拖拽到Zotero中,让Zotero自动更新元数据。无法直接获取PDF的文章,也可以尝试通过 Zotero Scihub 插件自动下载。 关于PDF的常用操作: 选中PDF文件,右键选择 Rename File From Paramater Metedata 可以将PDF重命名成 “作者-发表年份-标题” 标准格式。选中PDF文件,右键选择 Show File 可以直接打开PDF所在的文件夹。 奇技淫巧: 当阅读文献的同时需要查看参考文献时,可以右键,选择 横向分割 或 竖向分割 ,将文章分成两栏,然后单独操作每个栏。

Photoshop 2023 Beta 内置Ai绘图功能介绍&安装教程

距离Adobe软件公司首次将图像编辑及数字绘画软件Photoshop推出到大众面前已经过去35年,最近该公司又再次书写了属于Photoshop的历史新篇章。 最近,Adobe 宣布 Photoshop(Beta)迎来更新,新增「创意填充(Generative Fill)」功能,生成式AI绘图由Adobe Firefly提供支持,Adobe的创意生成AI模型系列。 这个版本让用户可以以非破坏性的方式进行图像组合和生成。这一创新功能将为用户带来更加灵活和创造性的体验,让您的创作变得更加自由和多样化。 Photoshop 2023 Beta 内置Ai绘图功能版 Photoshop Beta 应用程序发布了生成式AI绘图,这是世界上第一个创意和设计工作流程的副驾驶,为用户提供了一种神奇的新工作方式。 这将两个强大的成像引擎结合在一起——Photoshop和生成式AI,使您能够通过文本提示从Photoshop内部生成内容,并使用Photoshop的全面工具对其进行编辑以创建非凡的结果。 打开 PS 测试版,用选框工具框选任意位置,「创意填充」工具便开始等待你下第一条指令。 我们尝试使用这一功能进行简单的创作,首先新建一个空白的画布,框选后输入:「On the other side of the river, there are mountains and water, and it’s a sunny day」(江对岸,有山有水,晴天)。稍等片刻,一幅江面图就出现了。 视觉没有重点?那就框选江面,画上一艘红船,再加一个钓鱼的人(a red boat with a fisherman on board)。 天上有些空?只需在天上挂一个热气球(a hot air balloon)、几只飞鸟(A flock of birds)。三句话,让 Photoshop 帮我画一幅春江垂钓风景图。 生成式AI绘图还使您能够快速推进创意学习过程,从根本上缩短学习曲线(即使您是专业人士),并在几秒钟内实现高质量的创意结果。 目前,测试版有几个限制,第一它不能用于商业用途,第二只适用于英语文本提示,目前还不支持中文提示词,还有就是不适合18岁以下的用户。 安装教程 1)下载安装 Creative_Cloud_Set-Up.exe 2)打开Adobe Creative Cloud,会提示登录,选择创建账户,用Gmail邮箱注册(其他邮箱账号都不行!!!),国家/地区选印度或美国。 3)账号创建完成,首次登录会有Adobe服务弹窗,一定要取消勾选AGS,一定要取消勾选AGS,之后等待安装。 4)进入主页,点击左侧导航进入Beta应用程序,找到PSbeta版本,点击试用安装 5)安装完成,提示剩余7天试用期 6)退出Creative Cloud 7)打开AdobeGenP激活工具 8)点击Search,搜索本机Adobe未激活产品 9)搜索完成,点击Parch,打上激活补丁 10)完成后,剩余7天试用期消失,打开PS体验

Python 文件和正则--with文件读取,深浅拷贝,正则表达式

1.with语句 open 方式打开文件 #open()方式打开文件的弊端. f = open('1.txt','w') f.write('hello world') f.flush() # f.close() == 不释放资源--其它人无法操作被占用的文件. ​ #-------------发生异常导致没有释放资源--------- # f = open('1.txt','r') # f.write('hello world') # f.flush() # f.close() ​ # 可以释放资源---但是格式复杂---麻烦!!! f = None try: f = open('1.txt','r') f.write('hello world') f.flush() except Exception as e: print('出错误了') finally: if f is not None: f.close() ​ while True: pass with语句操作文件 with open("1.txt",'w') as f: f.write('hello\n') f.write('world\n') f.write('python\n') # f.close() # 使用with语句后.能帮我们自动释放资源. ​ while True: pass 2.

实战-k8s中部署tomcat(四)

先下载资源:k8s中安装Tomcat 测试 k8s 集群中部署 tomcat 服务 #把 tomcat.tar.gz 上传到 k8s-node1,手动解压 [root@k8s-node1 ~]# ctr images import tomcat.tar.gz [root@k8s-master ~]# kubectl apply -f tomcat.yaml apiVersion: v1 #pod属于k8s核心组v1 kind: Pod #创建的是一个Pod资源 metadata: #元数据 name: demo-pod #pod名字 namespace: default #pod所属的名称空间 labels: app: myapp #pod具有的标签 env: dev #pod具有的标签 spec: containers: #定义一个容器,容器是对象列表,下面可以有多个name - name: tomcat-pod-java #容器的名字 ports: - containerPort: 8080 image: tomcat:8.5-jre8-alpine #容器使用的镜像 imagePullPolicy: IfNotPresent [root@k8s-master ~]# kubectl get pods [root@k8s-master ~]# kubectl apply -f tomcat-service.

C语言中的strncpy函数

C语言中的strncpy函数 在C语言中,strncpy函数是一个用于复制字符串的标准库函数。它与strcpy函数类似,但与strcpy不同的是,strncpy函数可以指定要复制的字符数,从而避免复制过多的字符。 函数原型 strncpy函数的原型如下: char *strncpy(char *dest, const char *src, size_t n); 该函数的参数包括: dest:指向目标字符串的指针,即要将源字符串复制到的位置。src:指向源字符串的指针,即要复制的字符串的起始位置。n:要复制的字符数。 函数返回值为指向目标字符串的指针。 函数功能 strncpy函数的功能是将指定的字符串从源位置复制到目标位置,可以指定要复制的字符数。 函数实现 下面是strncpy函数的一个简单实现: char *strncpy(char *dest, const char *src, size_t n) { char *pd = dest; const char *ps = src; while (n-- && (*pd++ = *ps++)) { ; } if (n) { while (--n) { *pd++ = '\0'; } } return dest; } 该实现的思路是,先使用while循环将源字符串中的字符复制到目标字符串中,直到达到指定的字符数或者复制完整个源字符串。如果指定的字符数大于源字符串的长度,那么还需要使用另一个while循环将目标字符串中剩余的字符设置为\0。 使用示例 下面是一个使用strncpy函数的示例: #include <stdio.h> #include <string.h> int main() { char str1[] = "

【云原生-K8s】k8s可视化管理界面安装配置及比较【Rancher篇】

总览 安装了k8s控制面板,方便日常的问题处理,查看资源状态信息,也可以增加子账号进行开放给其他人员使用,减少命令操作,提升工作效率 前置条件 须有一个正常使用的k8s集群附k8s v1.20版本搭建:https://blog.csdn.net/u010800804/article/details/124524688 Rancher【推荐】 企业级Kubernetes管理平台Rancher为采用容器的团队提供了完整的软件堆栈,解决了跨任何基础设施架构管理多个Kubernetes集群的运维和安全挑战,同时为DevOps团队提供了用于运行容器化工作负载的集成工具。 资源信息 Rancher 可以创建来自 Kubernetes 托管服务提供商的集群,创建节点并安装 Kubernetes,或者导入在任何地方运行的现有 Kubernetes 集群。中国官方网站:https://www.rancher.cn/开源地址:https://github.com/rancher/rancher此外,Rancher 可以为集群和资源提供更精细的监控和告警,将日志发送到外部提供商,并通过应用商店(Application Catalog)直接集成 Helm。如果你拥有外部 CI/CD 系统,你可以将其与 Rancher 对接。没有的话,你也可以使用 Rancher 提供的 Fleet 自动部署和升级工作负载。版本确认:https://www.suse.com/zh-cn/suse-rancher/support-matrix/all-supported-versions/rancher-v2-6-10/ 在线安装 Rancher 的 Docker 安装仅推荐用于开发和测试环境中Rancher 可以通过运行单个 Docker 容器进行安装。在这种安装方案中,你需要将 Docker 安装到单个 Linux 主机,然后使用单个 Docker 容器将 Rancher 部署到主机中。通过docker安装 docker run -d --restart=unless-stopped \ -p 11180:80 -p 11443:443 \ --privileged \ rancher/rancher:latest 浏览器访问 打开浏览器,输入https://<安装容器的主机名或IP地址>,您即可以访问Rancher Server的UI了。跟随用户界面给您的引导,即可设置完成您的第一个Rancher集群。 设置密码 我们这里采用docker进行安装的首先找到docker 容器名字 执行命令获取密码获取密码模板 docker logs container-id 2>&1 | grep "Bootstrap Password:"

利用kaggle的GPU训练自己的模型(项目)

目录 一、上传项目 二、训练模型 1.导入项目 2.关于下包以及配置虚拟环境的问题 1)创建虚拟环境 2)下包 3.训练模型 1)两种方法: 2)关于写文件的问题 3)开启GPU 4)离线训练 4.下载日志、运行结果什么的 5.关掉GPU 三、模型预测 一、上传项目 网址: 登陆后,将项目(连同数据集和代码一起)压缩上传,上传需要梯子。 上传成功后点击create,kaggle会自动解压压缩包,处理完成后会有successful提示。 二、训练模型 1.导入项目 新建一个笔记本(同Jupyter notebook) 左上角的"note..."为该笔记本的名称,可以自行重命名,点击 + 新增一个cell,点击垃圾桶形状的按钮删除当前选定的cell。 选择Add Data添加数据 选择Your Datasets将显示你上传的数据集,选择数据集旁边的 + 则可以将数据集添加到当前笔记本 2.关于下包以及配置虚拟环境的问题 1)创建虚拟环境 我用conda创建虚拟环境报错,解决不了遂放弃。 2)下包 !pip install 包名(感叹号为英文感叹号) ps:哦对,下包要连接网络,第一次使用kaggle的话需要先手机验证 注: 有的时候会发现之前下了的包一段时间后又不存在了,这个时候报错"no model name..."只能重新下。 因为我的项目用到了transformers,虽然kaggle内含transformers,但它的版本比我需要的高,想去降级transformers,下不下来,遂放弃,后来直接使用kaggle内置的transformers运行项目,发现成功跑起来了,不懂,能跑就行。 kaggle内的tensorflow版本是2.0的,我尝试过下载tensorflow1.0版本,下载失败,遂放弃。 综上,kaggle内有很多库,直接运吧,缺啥补啥。 3.训练模型 1)两种方法: 1.!python xxx.py 注:使用此语句需确保代码在本地的时候已调试通,否则报错只能在本地改好后再重新上传,如果项目很大的话上传很浪费时间。 2.将你需要运行的代码复制粘贴到一个cell里,这样你可以直接在这里调试你的代码,不需要回到本地改了再上传。 (很重要!!!)不管你使用哪种方法,都建议在你的代码里面使用的文件路径最好用相对路径,因为你使用Add Data添加数据时,你的数据的路径其实是/kaggle/input/数据集的名字(就是上传数据时命名那个),如果使用绝对路径的话,只能回到本地改了再上传,但使用相对路径的话,你就可以通过 cd /kaggle/input/数据集的名字 将你的工作路径定位到此,此时运行程序的话就不会报找不到文件的错误。 2)关于写文件的问题 如果你的模型在训练过程需要写文件,那么你就可以通过下述方法将你的数据复制到/kaggle/working/目录下,因为input目录只可读,而working目录可读可写。 (如果想在input运,则要更改写文件的地址,很麻烦不推荐) import shutil # 复制文件或目录 shutil.copytree('/kaggle/input/数据集名字', '/kaggle/working/随便取个名字') 注:能不能就这样 ‘/kaggle/working/’ 答:不知道,可以尝试一下

AuthenticationEntryPoint使用

AuthenticationEntryPoint AuthenticationEntryPoint : spring security 中的一个接口,用于处理认证失败或者未认证的请求。当用户尝试访问受保护的资源而未经过身份验证,,或者身份验证失败的时候,调用 FilterSecurityInterceptor : 对受保护资源的控制访问 和 权限验证 作用: 访问控制决策权限验证异常处理前置处理和后置处理 ExceptionTranslateFilter : 处理身份验证和访问控制过程中的异常,,主要捕获spring security中抛出的异常,,并根据异常的类型,,来处理 作用: 异常处理认证失败处理访问拒绝处理异常转换 AuthenticationEntryPoint使用 定义一个 AuthenticationEntryPoint 的bean @Component public class CustomAuthenticationEntryPoint implements AuthenticationEntryPoint { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { String requestURI = request.getRequestURI(); String msg = String.format("请求访问 %s,认证失败,无法访问系统资源 ", requestURI); response.setStatus(200); response.setContentType("application/json"); response.setCharacterEncoding("utf-8"); response.getWriter().write(msg); } } 配置到spring-security中 原理: 所有需要被认证的请求 都会走FilterSecurityInterceptor 这个拦截器会去判断是否认证,是否有权限访问,,如果没有权限,,,会被跳到 ExceptionTranslateFilter这个filter中

Cesium教程(十):标签加载

标签是一种特殊的空间数据,相当于二维地图中的图标,主要用作标注信息,标明三维模型或其他 地理空间数据的名称等属性。 这里以天河机场为例,添加文字和图片等信息。 代码编写 const viewer = new Cesium.Viewer("cesiumContainer", { imageryProvider: Cesium.createWorldImagery({ style: Cesium.IonWorldImageryStyle.AERIAL_WITH_LABELS, }) }); viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(114.21147 , 30.77195), label: { text: "天河机场", font: "42px Helvetica", fillColor: Cesium.Color.RED, }, }); viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(114.21147 , 30.77195), billboard: { image: "./data/img.png", width: 100, height: 100, }, }); 实现效果

Stable Diffusion 超详细讲解

Stable Diffusion 超详细讲解 这篇文章是 《Stable Diffusion原理详解》的后续,在《Stable Diffusion原理详解》中我更多的是以全局视角讲解了 Stable Diffusion 的原理和工作流程,并未深入步骤细节。本文将在《Stable Diffusion原理详解》和《Diffusion Model 深入剖析》这两篇文章的基础上,进一步细致地讲解 Stable Diffusion 的算法原理。 文章目录 Diffusion ModelDiffusion Model 概览正向扩散过程逆向扩散过程训练采样扩散速度问题 Stable Diffusion潜在空间Latent Diffusion调节机制训练采样 架构对比纯扩散模型Stable Diffusion (潜在扩散模型) 总结 Diffusion Model Stable Diffusion 脱胎于 Diffusion 模型。因此在搞懂 Stable Diffusion 之前,先搞懂 Diffusion Model 模型非常有必要。这一部分我会带大家大致过一遍 Diffusion Model。如果你想了解 Diffusion Model 的全部细节,可以阅读我之前的文章:《Diffusion Model 深入剖析》。 Diffusion Model 概览 图1. 扩散模型原理概要 Diffusion Model的训练可以分为两部分: 正向扩散过程 → 为图像添加噪声。反向扩散过程 → 去除图像中的噪声。 正向扩散过程 正向扩散过程将高斯噪声逐步添加到输入图像中。我们使用以下闭合公式(推导过程详见《Diffusion Model 深入剖析》)更快地完成噪声添加,从而直接获得特定时间步长 t t t 的噪声图像: x t = α t ˉ x 0 + 1 − α ˉ t ε x_t=\sqrt{\bar{\alpha_t}}x_0+\sqrt{1-\bar{\alpha}_t}\varepsilon xt​=αt​ˉ​ ​x0​+1−αˉt​ ​ε

STL模型转有限元网格

随着计算机图形学、硬件和3D打印技术的发展,基于曲面三角网格的图形渲染及其文件格式越来越流行。 在有限元分析(FEA)中,工程师有时会得到基于三角形网格的几何文件(如STL文件等)并进行后续分析。 由于曲面三角网格与有限元网格的根本区别,曲面网格不能直接用于有限元法的计算。 有必要将表面网格转换为 FEA 网格以进行后续分析。 本文概述了STL表面网格和有限元网格的特点,并举例说明了如何将STL网格转换为FEA网格。 推荐:用 NSDT设计器 快速搭建可编程3D场景。 1、三角面网格 三角网格是指由三角形单元组成的曲面模型。 它使用点和边形成许多小的空间三角形来近似 3D 模型的表面。 大多数基于 3D 网格的几何体也使用这种近似方法。 使用这种原始表示方法,几乎所有的 3D 模型表面都可以使用三角形来近似。 由于三角网格处理简单快捷、可视化好、性能好,被认为是描述三维模型的常用方法之一。 随着计算机图形学的飞速发展,三角网格模型在三维动画、电子商务、计算机辅助设计、制造、数字娱乐等诸多领域得到了广泛的应用。 特别是随着3D打印技术的蓬勃兴起,三角面网格成为3D模型表示方法的重点。 同时开发了不同的数据存储格式,其中应用广泛的有STL、OFF、OBJ、PLY等。 STL格式(Stereo Lithography的简称)是3D Systems于1988年开发的一种接口协议,是一种服务于快速原型制作技术的3D图形文件格式。 STL 文件由一系列无序的三角形面组成。 每个三角面的定义包括顶点坐标和三角面的法向量。 注意文件中没有给出三角形面之间的拓扑关系,三角形通过共享两个顶点相邻。 由于简单、不易出错,STL已经成为最常用的文件格式,成为快速成型技术领域事实上的接口标准。 目前市面上几乎所有的3D打印机都是通过识别STL模型进行打印。 另一种广泛使用的三角形格式是 OFF(对象文件格式)。 与STL文件不同的是,OFF文件给出了顶点的个数以及三角形和边的个数等信息,但OFF文件并没有指明三角形的法向量。 OFF文件可读性强,点集和面集简单明了。 它们都以 OFF 关键字开头,易于识别。 除了OFF文件,PLY(Standford triangle mesh)、OBJ等表面网格在工业界和学术界也有一些应用。 我们将在以后的文章中描述它们。 2、有限元分析中的 3D 网格 虽然在三维有限元分析中有一些特殊类型的单元,例如代表板(plate)和壳(shell)的面单元,代表桁架(truss)和梁(beam)的线单元。 但是,3D 实体元素使用最广泛。 常用的实体单元有四面体(terahedral)和六面体(hexahedral)单元,广泛应用于三维结构、热、流体、声学和电磁模拟。 实体单元不仅具有整体的表面信息,而且内部还有离散的网格。 这种差异也使得FEA实体网格比以STL为代表的面网格更加复杂,数据量也大得多。 有限元网格对单元的质量要求比较高。 元素不能过度扭曲。 网格密度需要适中。 粗网格会导致准确的问题。 而密集的网格会导致沉重的计算负担。 一些拓扑复杂的区域也需要密集网格。 常用的网格质量指标是: 雅可比比:由全局坐标和局部坐标得出的雅可比矩阵的比值。 理想值为 1,不能小于 0。纵横比:指元素的最长边与最短边的比值。 理想元素的纵横比为 1。偏度:元素规律性的量度。 取值范围为 0 到 1,值越小,元素越理想。 单元的排列顺序也会影响有限元分析的结果。 一般来说,二阶单元优于线性一阶单元,但二阶单元节点数的增加也会导致计算量相对较大。

JVM学习(十四):垃圾收集器(万字介绍CMS、G1)

目录 一、垃圾收集器们 二、CMS(Concurrent-Mark-Sweep):低延迟 2.1 什么是CMS 2.2 CMS工作流程 2.3 详细描述 2.4 CMS的优缺点 2.4.1 优点 2.4.2 弊端 2.5 CMS常用参数 三、G1(Garbage First)收集器:区域化分代式 3.1 什么是G1 3.2 G1的工作原理 3.3 G1的特点 3.4 G1的优缺点 3.4.1 优点 3.4.2 总结 3.5 G1回收器的使用场景 3.6 分区region——化整为零 3.6.1 单个Region 3.6.2 指针碰撞 3.6.3 TLAB 3.7 G1的垃圾回收过程概述 3.7.1 主要环节 3.7.2 Young GC 3.7.3 老年代并发标记 3.7.4 混合回收 3.7.5 Remember Set 3.8 年轻代GC 3.8.1 dirty card queue(脏卡表队列) 3.9 并发标记 3.10 混合回收 3.11 可选的垃圾回收过程:Full GC 3.12 G1常用的参数 四、革命性的ZGC

Python中的类和对象是什么关系?

嗨,大家好!今天我来给大家讲一下Python中的类和对象。 首先,我们先来举个例子。假设我们要造一辆汽车,我们需要先设计好汽车的样子、性能、大小等等,这个过程就是“类”。然后,我们需要根据这个设计来制造一辆真实的汽车,这个汽车就是“对象”。也就是说,类是一个模板,而对象是这个模板的具体实现。 在Python中,类是一种特殊的 数据类型,它可以用来描述一类东西的共性和特征。而对象则是根据类创建出来的实体,具有类所描述的属性和方法。 下面是一个简单的Python类和对象的例子: # 定义一个Person类 class Person: def __init__(self, name, age): self.name = name self.age = age def say_hello(self): print(f"Hello, my name is {self.name} and I'm {self.age} years old.") # 创建一个Person对象并调用它的方法 p = Person("Tom", 25) p.say_hello() # 输出:Hello, my name is Tom and I'm 25 years old. 上面这个例子中,我们定义了一个Person类,它有两个属性name和age,还有一个方法say_hello()。然后我们根据这个类创建了一个Person对象p,并调用了它的say_hello()方法,输出了问候语。 当然,类的应用远不止于此。在实际开发中,我们可以使用类来描述各种复杂的事物,比如飞机、火车、人、动物等等。下面再来看一个例子: # 定义一个Animal类 class Animal: def __init__(self, name, age): self.name = name self.age = age def speak(self): print(f"{self.name} says:", end="

Java调用参数为xml格式的接口,分析转换返回结果

写在前面 最近第一次接触到xml格式的接口,以下是自己编写的经验,铁汁们可以参考自己的项目自行修改。 完整代码已附在文章末尾,如有缺陷,欢迎评论区或私信交流。 解决思路 首先向接口提供方申请了接口文档,包含了接口地址和参数信息,先使用postman工具调用接口,分析参数和返回值。 调通接口 敏感数据,打码请见谅 其中,传入参数为xml文本,参数在最中间,可以通过字符串拼接,来实现对参数的修改。 <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <GetDataRtnJsonObject xmlns="http://tempuri.org/"> <参数一>张三</参数一> <参数二>某单位</参数二> <参数三>接口授权码</参数三> <参数四>是否仅查询增量数据</参数四> <piPageIndex>页码</piPageIndex> <piPageSize>页行数</piPageSize> </GetDataRtnJsonObject> </soap12:Body> </soap12:Envelope> 返回参数也为xml文本,返回结果也在最中间,可以直接通过字符串截取,再使用JSONObject.parseObject() 将json格式文本转为需要的数据结构。 <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetDataRtnJsonObjectResponse xmlns="http://tempuri.org/"> <GetDataRtnJsonObjectResult> { "DataCount":2, "PageCount":64, "Datas":[ {"ROWID":1,"ORGCODE":"001"}, {"ROWID":2,"ORGCODE":"002"} ], "ErrMsg":"" } </GetDataRtnJsonObjectResult> </GetDataRtnJsonObjectResponse> </soap:Body> </soap:Envelope> 代码编写 吆西,分析完输入参数和返回参数后,解决思路自然就有了。 1、接口的输入参数虽然复杂,且为xml格式,但每次仅需要更改最中间的几个参数即可。 可以编写公共方法,将查询的几个变量塞入xml文本中指定位置,组装成完整xml请求代码块。 注意:在此的输入参数为ABCD等,仅仅为了示例,铁汁们编写代码时要使用英文驼峰命名的变量名,不然以后自己都要看不懂啦QAQ /** * @Description 将请求参数,组合为XML格式 * @Date 17:01 2023/4/27 * @Param [A, B, C, D, page, pageSize] * @return java.

VUE3中检测元素是否出现在视图窗口

直接上代码 <template> <div ref="box"><div> </template> <script setup> import {ref,onMounted} from "vue" // 获取要检测的元素,必须使用的是vue中获取元素的方式 const box = ref(null) onMounted(()=>{ // 检测元素是否在视图窗口的函数 const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { // 当元素进入视窗口时触执行这里面的代码 console.log('元素进入视图窗口', box) } }); }); observer.observe(box.value); }) </script>

three.js粒子系统封装

粒子系统 使用 import * as THREE from 'three/build/three.module'; export default class SpriteParticleSystem extends THREE.Object3D { constructor(param) { super(); this.cloud = param.cloud; this.rate = param.rate !== undefined ? param.rate : 3; this.num = param.num !== undefined ? param.num : 30; this.texture = param.texture; this.scaleR = param.scaleR !== undefined ? param.scaleR : [1, 10]; this.speedR = param.speedR !== undefined ? param.speedR : [10, 10]; this.terminalSpeed = param.terminalspeed !== undefined ? param.terminalspeed : null; this.

uniapp App端 实现pdf文件预览

一、下载pdf预览需要用到的相关文件(即hybrid文件夹) 微信关注公众号【海贼王部落】,回复【uniapp】,获取网盘下载链接。 二、将步骤一下载解压得到的hybrid文件夹放在/src目录下,即 /src/hybrid 三、预览pdf 1、预览pdf需要用到uniapp的webview组件,所以注册并创建一个专门用于预览pdf的页面,页面使用webview组件。 /pages/webview/index.vue: <template> <view style="width: 100%;"> <web-view :src="allUrl"></web-view> </view> </template> <script> export default { data () { return { allUrl: '', viewerUrl: '/hybrid/html/web/viewer.html', pdfUrl: 'http://119.91.134.164:60800/enterprise_integrated_services_file/file/download?fileUrl=n0/publicity/20220314/pdf/058416/%E9%99%84%E4%BB%B6%20%202021%E5%B9%B4%E4%BF%83%E8%BF%9B%E5%B0%8F%E5%BE%AE%E5%B7%A5%E4%B8%9A%E4%BC%81%E4%B8%9A%E4%B8%8A%E8%A7%84%E6%A8%A1%E5%8F%91%E5%B1%95%E6%89%B6%E6%8C%81%E5%AE%A1%E6%A0%B8%E7%BB%93%E6%9E%9C%EF%BC%88%E7%AC%AC%E4%BA%8C%E6%89%B9%EF%BC%89.pdf' } }, onLoad (options) { console.log(20, options.pdfUrl) // this.pdfUrl = options.pdfUrl let fileUrl = encodeURIComponent(this.pdfUrl) // encodeURIComponent 函数可把字符串作为 URI 组件进行编码。 this.allUrl = this.viewerUrl + '?file=' + fileUrl } } </script> <style> </style> 其中,pdfUrl可在跳转到预览页面时作为参数传递过来,也可以在预览页面请求获取,根据实际业务需求。 2、App端预览效果(好像不支持h5) 记录于2022-5-27.

数据库原理(核心知识♥)

目录 一、Database Fundamentals 1.1数据库系统(DBMS)与文件系统(File System) 1.2数据库三级模式(Schema)、两级映像(Mapping) 1.3Responsibilities of DBA 1.4数据独立性(Data Independence) --逻辑(logical)独立性 --物理(physical)独立性 二、Relational Database 主码(Primary Key)、外码(Foreign Key)、候选码(Candidate Key) 关键操作 --选择(Selection) --投影(Projection) --连接(Join) --除(Division) 关系代数(Relation Algebra)运算 三、SQL Characteristics of SQL 一些简单查询语句 SUB-QUERIES 子查询 增删改查 --create、insert、alter、update、drop、delete --select/from/where/group by/having/order by 内连接和外连接(Join/Left Join) 嵌套查询(Embedded Query) --IN/NOT IN --EXISTS/NOT EXISTS 四、Database Objects 索引(Index)的分类和正确使用 --Cluster/Non-cluster/Bitmap/Functional/... CLUSTERED INDEX(聚集索引) NON-CLUSTERED INDEX(非聚集索引) ​Bitmap Index(位图索引) Function-based Indexes(基于函数的索引) 视图(View)的作用 --与基本表的区别和联系 触发器(Trigger) 存储过程(Stored Procedure) 完整性(Integrity) vs 安全性(Security) 五、Normalization 规范化(Normalization)的目的 --冗余(redundancy)

【记录】MPU6050原理快速入门(附手册)

目录 MPU6050 MPU6050主要参数 MPU6050通信接口 MPU6050电路 向MPU6050的一个寄存器写一个字节的数据 从MPU6050的一个寄存器读一个字节的数据 MPU6050 MPU6050是一个运动处理传感器,其内部集成了3轴加速度传感器和3轴陀螺仪(角速度传感器)(芯片内部陀螺仪,当改变其转动时会产生阻力,通过测量产生阻力的大小来测量其角速度大小),以及一个可扩展数字运动处理器。 MPU6050数据手册和寄存器手册链接: 链接:https://pan.baidu.com/s/10sNMvSSCPIlRWJgiucFr3Q 提取码:1111 MPU6050主要参数 可测量X、Y、Z轴三个方向的角速度; 可编程设置角速度测量范围为±250、±500、±1000、±2000°/sec; 可测量X、Y、Z轴三个方向的加速度; 可编程设置加速度测量范围为±2g、±4g、±8g、±16g; 可编程设置低功耗模式; 可编程设置采样频率; ..... MPU6050通信接口 MPU6050可以使用I2C总线和其他器件进行数据交互,我们可以使用I2C总线向MPU6050中的控制寄存器写入数据来设置MPU6050的工作参数;同时,MPU6050测量的角速度、加速度都保存在其内部的角速度寄存器、加速度寄存器中,因此也可以使用I2C总线从MPU6050中的数据寄存器读取数据来获取加速度、角速度等信息。 MPU6050电路 向MPU6050的一个寄存器写一个字节的数据 1.主机(Exynos4412)发送起始信号 2.主机发送从机地址(MPU6050的地址)及读写方向(写) 3.从机(MPU6050)发送应答信号 4.主机发送一个字节数据(要写的寄存器的地址) 5.从机发送应答信号 6.主机发送一个字节数据(要写到寄存器的数据) 7.从机发送应答信号 8.主机发送停止信号 从MPU6050的一个寄存器读一个字节的数据 1.主机(Exynos4412)发送起始信号 2.主机发送从机地址(MPU6050的地址)及读写方向(写) 3.从机(MPU6050)发送应答信号 4.主机发送一个字节数据(要写的寄存器的地址) 5.从机发送应答信号 6.主机(Exynos4412)发送起始信号 7.主机发送从机地址(MPU6050的地址)及读写方向(读) 8.从机(MPU6050)发送应答信号 9.从机发送一个字节数据(要读的寄存器中的数据) 10.主机发送非应答信号(不再接收更多的数据) 11.主机发送停止信号 编程应用可以看这篇文章: 【记录】自己动手使用HAL库对MPU6050进行编程

CNN、RNN、LSTM、BiLSTM、Transformer的在EEG信号处理中的作用

一、CNN与RNN的差异: CNN(卷积神经网络)和RNN(循环神经网络)是深度学习中常用的两种神经网络结构,它们在处理不同类型的数据和解决不同类型的问题时具有不同的优势。 结构和连接方式: CNN主要用于处理具有网格结构的数据,例如图像。它使用卷积层和池化层来提取图像中的特征,通过共享权重和局部感知字段的方式,能够有效地捕捉到图像中的空间局部特征。RNN主要用于处理序列数据,例如自然语言和时间序列数据。它通过循环连接将前一时刻的隐藏状态传递到当前时刻,从而能够捕捉到数据中的时序依赖关系。 数据处理方式: CNN通过卷积操作和池化操作来处理数据,卷积操作可以提取数据的局部特征,并且通过层层叠加的方式逐渐扩大感受野,池化操作可以对特征进行降维和采样,使得网络对输入的变化更加鲁棒。RNN通过时间序列上的循环连接处理数据,能够保留历史信息,并且在处理序列中的每个元素时共享参数,从而在不同位置上学习到相同的模式。 适用场景: CNN在处理图像分类、目标检测和图像生成等计算机视觉任务上表现出色,因为图像具有明显的空间局部特征,并且CNN能够通过卷积和池化操作提取这些特征。RNN在处理自然语言处理(NLP)任务,如语言建模、机器翻译和情感分析等上表现良好,因为语言具有时序性质,RNN能够对句子中的单词进行顺序建模。 需要注意的是,CNN和RNN并不是相互排斥的,它们可以结合使用,例如在图像字幕生成任务中,可以使用CNN提取图像特征,然后将这些特征输入到RNN中生成描述文字。此外,还有一些扩展和变体的神经网络结构,如LSTM(长短期记忆网络)和Transformer,在处理特定任务时可能会取得更好的效果。 二、CNN、RNN、LSTM、BiLSTM、Transformer在信号提取方面的作用: CNN和RNN在处理EEG信号(脑电图信号)时具有不同的特点和应用方式: CNN在EEG信号处理中的应用: 时空特征提取:EEG信号通常是一个二维时间序列数据,其中时间表示不同的时间点,而空间表示不同的电极位置。CNN在处理EEG信号时可以利用其卷积层和池化层来提取时空特征。卷积层可以捕捉到EEG信号的局部特征,例如某个频率范围内的振幅变化,而池化层可以对特征进行降维和采样。多通道处理:EEG信号通常由多个电极采集而来,形成多个通道。CNN可以很好地处理多通道的EEG信号,每个通道可以看作是一个输入通道,通过卷积层提取每个通道的特征,然后将这些特征进行融合或进一步处理。EEG分类和检测:CNN可以应用于EEG信号的分类和检测任务。通过使用卷积层提取EEG信号的特征,然后使用全连接层进行分类或检测,例如脑机接口(Brain-Computer Interface)任务中的运动意图分类或发作检测。 RNN在EEG信号处理中的应用: 时序建模:EEG信号是一个时间序列,RNN能够很好地建模时间上的依赖关系。RNN通过循环连接在不同时间步之间传递信息,可以捕捉到EEG信号中的时间动态变化,例如脑电波的相位和幅度变化。序列生成:RNN也可用于生成EEG信号,例如生成具有与训练数据相似的脑电波形状或频谱特征的合成信号。这在一些模拟实验或信号处理算法验证中很有用。序列标记和预测:RNN可以应用于EEG信号的序列标记和预测任务,例如睡眠分期或癫痫发作检测。RNN可以对每个时间步的EEG信号进行分类或预测,从而识别不同的脑电活动状态或检测异常事件。 总之,CNN主要适用于提取EEG信号的时空特征和多通道处理,而RNN主要适用于捕捉EEG信号中的时间依赖关系和序列建模。在实际应用中,CNN和RNN可以结合使用,以充分利用它们各自的优势。 LSTM的作用: 建模长期依赖关系:EEG信号中的时间依赖关系对于理解脑电活动非常重要。LSTM通过使用门控机制,如遗忘门和输入门,能够有效地捕捉EEG信号中的长期依赖关系。它可以记忆和更新较长时间跨度内的信息,从而更好地捕捉EEG信号中的长期模式。处理变长序列:EEG信号的采样率可能不同,导致序列的长度不一致。LSTM能够适应变长序列的处理,通过动态地调整记忆单元的状态和输出,适应不同长度的EEG信号。 BiLSTM的作用: 捕捉时序信息:EEG信号是时间序列数据,其中时间上的依赖关系对于理解脑电活动非常重要。BiLSTM通过同时考虑过去和未来的上下文信息,能够更全面地捕捉EEG信号中的时序模式和动态变化。它利用前向和后向的循环连接,能够有效地建模时间依赖性,并提取时序特征。上下文特征融合:BiLSTM通过在前向和后向方向上处理输入序列,能够获取更全面的上下文信息。它将前向和后向的隐藏状态进行拼接,形成更丰富的特征表示。这种上下文特征融合有助于提取EEG信号中不同时间点和通道之间的关系,从而改善特征表达能力。 无论是LSTM还是BiLSTM,它们在EEG信号提取中都能够有效地捕捉到时序信息和长期依赖关系。具体选择哪种模型取决于任务需求和数据特点。如果任务更加关注时序动态变化或需要双向建模,BiLSTM可能是更合适的选择。而如果任务更加关注长期依赖关系和变长序列处理,LSTM可能更适合。此外,结合其他模型或进行模型融合也可以进一步提升EEG信号提取的性能。 Transformer在EEG信号提取中可以发挥以下作用: 建模长期依赖关系:EEG信号中可能存在长期的时间依赖关系,而传统的RNN模型在处理长序列时容易出现梯度消失或梯度爆炸问题。Transformer通过自注意力机制可以捕捉序列中的全局依赖关系,有效地处理长序列数据,包括EEG信号。它能够在不受序列长度限制的情况下对长期依赖进行建模,从而更好地捕捉EEG信号中的时序信息。 平行计算与效率:传统的RNN模型是顺序处理序列数据的,而Transformer可以进行并行计算,提高计算效率。对于EEG信号的处理,特别是多通道EEG数据,Transformer能够并行处理多个通道的信号,加快处理速度,适用于大规模数据集和复杂任务。 自注意力机制:Transformer利用自注意力机制,即通过将输入序列中的每个元素与其他元素进行交互,自动学习每个元素的重要性权重。这种机制有助于捕捉EEG信号中的关键时间点或通道,从而提取具有重要信息的特征。在EEG信号中,这种机制可以帮助发现不同时间步之间的相关性和重要的空间模式。 编码器-解码器结构:Transformer模型通常具有编码器-解码器结构,在EEG信号处理中可以用于序列到序列的任务,如EEG信号的生成、修复或预测。编码器部分用于提取输入序列的特征表示,解码器部分根据编码器的输出进行相应的预测或生成。这种结构在EEG信号生成、预测和重建等任务中具有潜力。 综上所述,Transformer在EEG信号提取中通过建模长期依赖关系、并行计算、自注意力机制和编码器-解码器结构等方面发挥作用。它在处理长序列、多通道EEG数据和复杂任务时具有优势,有助于提取EEG信号中的重要特征并改善性能。

git版本管理工具

文章目录 一、环境搭建1.1 安装1.2 环境配置1.2.1配置全局账号1.2.2生成ssh key1.2.3 配置ssh key 1.3 pycharm配置git 二、git常用命令2.1 基础概念2.2 基础命令2.3 示例1-撤销(三种情况)2.3.1代码仅进行了修改2.3.2修改代码且add2.3.3 代码修改,已add、commit2.3.4 小结 三、远程仓库管理3.1介绍3.2 提交本地代码到远程仓库3.2.1基本流程3.2.2小结3.3.3常见错误 四、分支管理4.1 简介4.2常用命令4.3 示例 五、实际项目5.1 gitlab 一、环境搭建 1.1 安装 官网: https://git-scm.com/download下载缓慢,国内镜像地址:https://registry.npmmirror.com/binary.html?path=git-for-windows/选择对应系统的安装包下载后默认安装即可 验证是否安装正确: windows/mac: 在命令行输入:git --version 结果可以看到当前的git版本: C:\Users\gao>git --version git version 2.40.1.windows.1 1.2 环境配置 首先需要一个github或者gitee的账号,去对应平台申请账号,申请之后为了本地可以与git进行代码管理即上传下载到gitee或者github,需要配置相应的账号信息。 windows 鼠标右键,选择 git bash here 在git bash 中进行对应的配置 1.2.1配置全局账号 配置用户名:git config --global user.name "your name" 配置邮箱:git config --global user.email "your email" 验证配置结果:git config --global --list 或者 git config --global -l

系统分析师笔记

信息系统生命周期: 1、立项阶段:企业全局、形成概念、需求分析 2、开发阶段:系统规划、系统分析、系统设计、系统实施、系统验收 3、运维阶段:通过验收和移交之后 4、消亡阶段:更新改造、功能扩展、报废重建 1、系统规划:初步调查、分析系统目标、子系统组成、拟实施方案、可行性研究、制定系统建设方案。输出物:系统设计任务书:系统建设方案、实施计划 2、系统分析:业务流程分析、数据与数据流和分析、软件需求分析、网络需求分析。输出物:系统需求规格说明书、软件需求规格说明书、确认测试计划、系统测试计划、初步的用户手册 3、系统设计:软件架构设计、系统概要设计、详细设计、网络设计。输出物:架构设计文档、概要设计说明书、详细设计说明书、程序规格说明书、概要测试计划、详细测试计划、各类设计图 4、系统实施:软件编码、软件单元/集成/系统测试、综合布张。输出物:源码、单元测试报告、集成测试报告、操作手册 5、系统验收:确认测试、试运行。输出物:确认测试报告、项目验收报告 系统需求分析方法: 1、面向对象的分析方法 2、结构化分析方法 2、面向问题域的分析方法 软件开发方法: 一、结构化方法:自顶向下,逐步分解求精、区分阶段,应变能力差 二、面向对象方法:自底向上,更好应变和复用,符合人们的思维习惯 三、面向服务的方法:粗粒度、松耦合,标准化、构件化,抽象级别:操作-服务-业务流程 四、原型法:水平和垂直、抛弃和演化,展示和获取需求 1、确定用户需求 2、开发初始原型系统 3、使用原型确认用户需求 五、形式化方法:净室软件工程、数学模型化,所有东西均可验证,而不是测试 六、统一过程UP 七、敏捷方法 敏捷宣言:个体和交互胜过过程和工具,可工作的软件胜过大量的文档(实现和测试是核心),客户合作胜过合同谈判,响应变化胜过遵循计划。 是适应性的,不同于预设性。是以人为本,不是以开发过程为本。是增量迭代,小步快跑,不是整体分阶段。适合小项目。 1、XP 4大价值观:沟通,加强面对面沟通。简单:不过度设计。反馈:及时反馈。勇气:接受变更的勇气。 12条过程实践规则:简单设计、测试驱动、代码重构、结对编程、持续集成、现场客户、发行版本小型化、代码集体所有制、规划策略、规划策略、40小时工作机制 软件开发模型: 一、瀑布模型: 1、软件计划 2、需求分析 3、软件设计 4、程序编码 5、软件测试 6、运行维护 二、V模型:测试贯穿始终,测试分阶段,测试计划提前,需求分析对应验收测试,概要设计对应系统测试,详细设计对应集成测试,编码对应单元测试 三、原型模型 四、增量模型 五、螺旋模型/原型+瀑布:以原型为基础,重点考虑风险。 1、制定计划:决定目标、方案和限制 2、风险分析: 3、实施工程:需求确认、详细设计、编码 4、客户评估:需求计划、一切计划、组装与测试 六、喷泉模型/早期面向对象 七、构件组装模型/基于构件的开发方法: 1、需求分析与定义 2、软件架构设计、 3、构件库的建立:1)构件标准:CORBA、COM、EJB;构件库:构件获取、构件管理 4、应用软件构建 5、测试和发布 八、快速应用开发RAD/瀑布+构件组装: 1、业务建模 2、数据建模 3、过程建模 4、应用生成 5、测试与交付 九、统一过程/统一开发方法:用例驱动,以架构为中心,迭代和增量 1、初始阶段:定义最终产品视图和业务模型 2、细化阶段:设计及确定系统架构、制定工作计划及资源要求 3、构建阶段:开发剩余构件和应用程序功能,把这些构件组装为产品,并进行详细测试 4、交付阶段:确保软件对最终用户是用的,进行用户环境测试,制作产品发布版本 十、敏捷开发方法 1、极限编程:费用控制严格 2、水晶方法:最少纪律 3、开放式源码:程序开发人员在地域上分布很广 4、SCRUM:明确定义了可重复的方法过程,

Shell脚本读文件和写文件

记录:439 场景:Shell脚本读文件和写文件。 版本:CentOS Linux release 7.9.2009。 1.Shell脚本使用cat读取文件内容 1.1脚本 脚本名称:b2023060121.sh 脚本内容: #!/bin/bash echo '1.使用cat读取文件内容,使用for in遍历输出' filePath=`pwd` for line in `cat ${filePath}/province.txt` do echo "${line}" done 1.2执行与输出 执行命令:bash b2023060121.sh 执行结果: [root@hadoop211 tutorial]# bash b2023060121.sh 1.使用cat读取文件内容,使用for in遍历输出 长三角省份有浙江、江苏等。 长三角最大都市是上海。 长三角经济发达。 2.Shell脚本使用read命令和cat命令读取文件内容 2.1脚本 脚本名称:b2023060122.sh 脚本内容: #!/bin/bash echo '1.使用read逐行读取cat命令读取的内容,使用while遍历输出' filePath=`pwd` cat ${filePath}/province.txt | while read line do echo "${line}" done 2.2执行与输出 执行命令:bash b2023060122.sh 执行结果: [root@hadoop211 tutorial]# bash b2023060122.sh 1.使用read逐行读取cat命令读取的内容,使用while遍历输出 长三角省份有浙江、江苏等。 长三角最大都市是上海。 长三角经济发达。 3.Shell脚本使用read命令和输入重定向(<)读取文件 3.1脚本