即看即用
1、下载 https://www.oracle.com/downloads/server-storage/vdbench-downloads.html
(外网不一定能访问下载,可以直接在csdn下载栏搜索。下载)
2、解压
文件夹中的vdbench.bat是个windows用,vdbench 给linux用
Linux
3、进入文件夹
./vdbench -t 测试一下可用性
运行测试模型
./vdbench -f {filename} -o {exportpath}
#注:-f后接测试参数文件/名脚本名,-o后接导出测试结果路径
脚本的编写
这部分可以参考解压后的examples文件夹下的脚本,比如create_files;也可以参考output目录下的parmfile.html
运行脚本
root@node1:/home/vdbench50406# ./vdbench -f examples/filesys/create_files -jn
其中-jn是为了做数据校验,见文章末尾解释。
输出结果
windows
3、进入文件夹
可以执行./vdbench.bat -t 测试一下可用性(需要安装jre/jdk,要配置好环境变量)
编写windows vdbench 脚本(或叫做配置文件) parmfile
./vdbench -f parmfile
这里的parmfile需要根据测试环境修改,可以参考output目录下的parmfile
样例:
dd if=/dev/zero of=/tmp/disk1 bs=4 count=1M
vim parmfile
sd=sd1,lun=/tmp/disk1 size=4m
wd=wd1,sd=sd1,xfersize=4096,readpct=100
rd=run1,wd=wd1,iorate=100,elapsed=10,interval=1
[root@localhost vdbench504]# ./vdbench -f parmfile.html
建立rsh通信
./vdbench rsh
注:此命令是用于windows系统多主机联机跑vdbench时使用,因为windows操作系统不支持ssh,因此,vdbench提供了rsh的通信方式。在目标主机上执行此工具后,vdbench将会启动一个java socket用于vdbench slave与master之间通信
详细说明
vdbench简介
vdbench 是一个磁盘I/O负载生成器,主要用于基准测试和存储产品的测试。
前言 昨天实验课试着做了一个 Spark SQL 小案例,发现好多内容还是没有掌握,以及好多书上没有的内容需要学习。
一、数据准备 csv 文件内容部分数据展示:
PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked 1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S 2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C 3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S 4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S 5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S 6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q 字段说明 • PassengerId : 乘客编号。
• Survived : 是否存活,0表示未能存活,1表示存活。
• Pclass : 描述乘客所属的等级,总共分为三等,用1、2、3来描述:1表示高等;2表示中等;3表示低等。
• Name : 乘客姓名。
• Sex : 乘客性别。
• Age : 乘客年龄。
• SibSp : 与乘客同行的兄弟姐妹(Siblings)和配偶(Spouse)数目。
在本文里,我们来了解几个能帮你在日常工作中舒服地用上 Git 的工具。我是在这许多漂亮界面出来之前学习的 Git,而且我的日常工作经常是基于字符界面的,所以 Git 本身自带的大部分功能已经足够我用了。在我看来,最好能理解 Git 的工作原理。不过,能有的选也不错,下面这些就是能让你不用终端就可以开始使用 Git 的一些方式。 KDE Dolphin 里的 Git
我是一个 KDE 用户,如果不在 Plasma 桌面环境下,就是在 Fluxbox 的应用层。Dolphin 是一个非常优秀的文件管理器,有很多配置项以及大量秘密小功能。大家为它开发的插件都特别好用,其中一个几乎就是完整的 Git 界面。是
的,你可以直接在自己的桌面上很方便地管理你的 Git 仓库。
但首先,你得先确认已经安装了这个插件。有些发行版带的 KDE 将各种插件都装的满满的,而有些只装了一些最基本的,所以如果你在下面的步骤里没有看到 Git 相关选项,就在你的软件仓库里找找类似 dolphin-extras 或者 dolphin-plugins 的包。
要打开 Git 集成功能,在 Dolphin 的任一窗口里点击 Settings 菜单,并选择 Configure Dolphin。
在弹出的 Configure Dolphin 窗口里,点击左边侧栏里的 Services 图标。
在 Services 面板里,滚动可用的插件列表找到 Git。
(勾选上它,)然后保存你的改动并关闭 Dolphin 窗口。重新启动 Dolphin,浏览一个 Git 仓库试试看。你会发现现在所有文件图标都带有标记:绿色方框表示已经提交的文件,绿色实心方块表示文件有改动,没加入库里的文件没有标记,等等。
之后你在 Git 仓库目录下点击鼠标右键弹出的菜单里就会有 Git 选项了。你在 Dolphin 窗口里点击鼠标就可以检出一个版本,推送或提交改动,还可以对文件进行 git add 或 git remove 操作。
在vscode中安装插件vue-helper即可 (vue-helper支持CTRL+点击函数跳转 || 绑定对象跳转)
1.首先建立springboot项目 2.引入pom文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.2</version> </dependency> <!-- ____________________________________________________________ --> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- ____________________________________________________________ --> <!-- lombok --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- ____________________________________________________________ --> <!-- 数据库性能分析插件 --> <dependency> <groupId>p6spy</groupId> <artifactId>p6spy</artifactId> <version>3.8.6</version> </dependency> <!-- ____________________________________________________________ --> <!--swagger--> <dependency> <groupId>io.
目录
前言
一、技术栈
二、系统功能介绍
管理员功能实现
宿管员功能实现 编辑
学生功能实现 三、核心代码
1、登录模块
2、文件上传模块
3、代码封装
前言 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对学生宿舍信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用学生宿舍管理系统可以有效管理,使信息管理能够更加科学和规范。
学生宿舍管理系统在Eclipse环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理员管理宿管员,管理学生,修改密码,维护个人信息。宿管员管理公寓资产,缴费信息,公共场所清理信息,日常事务信息,审核学生床位安排信息。学生查看公共场所清理信息,日常事务,缴费信息,在线申请床位,查看床位安排。
总之,学生宿舍管理系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化。
一、技术栈 末尾获取源码
SpringBoot+Vue+JS+ jQuery+Ajax...
二、系统功能介绍 管理员功能实现 管理员进入指定功能操作区之后可以管理宿管员。其页面见下图。宿管员的资料需要管理员负责管理,包括修改,新增,删除等操作。
管理员进入指定功能操作区之后可以管理学生。其页面见下图。学生信息也需要管理员负责管理,包括信息的增删改查操作。
宿管员功能实现 宿管员进入指定功能操作区之后可以管理学生信息。其页面见下图。宿管员增删改查学生信息,为各位学生申请床位,管理学生的卫生记录和日常事务评分。
宿管员进入指定功能操作区之后可以管理公寓资产。其页面见下图。公寓资产存在损坏情况,需要宿管员通过损坏按钮登记公寓资产损坏信息。
宿管员进入指定功能操作区之后可以管理缴费信息。其页面见下图。宿管员增删改缴费信息。
宿管员进入指定功能操作区之后可以管理床位安排。其页面见下图。宿管员审核对学生的床位安排信息。
学生功能实现 学生进入指定功能操作区之后可以查看清理公共场所信息。其页面见下图。各位学生负责清理的公共场所信息都会显示在本页面,学生可查询也能查看。
学生进入指定功能操作区之后可以申请床位。其页面见下图。学生可以选择床位号进行床位申请,宿管员审核通过之后,学生才能使用申请的床位。
学生进入指定功能操作区之后可以查看日常事务。其页面见下图。学生查看日常事务的加分项和评分标准信息。
学生进入指定功能操作区之后可以查看缴费信息。其页面见下图。学生查看住宿费用,以及缴费时间等信息。
三、核心代码 1、登录模块 package com.controller; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; import com.
“月圆人团圆,天涯共此时。”对于我们这些在全球各地分布的程序员来说,中秋这个富有诗意的节日,也许并非如诗如画般的浪漫,但却别有一番韵味。在这个特殊的日子里,我想借着这个平台,和大家分享我的中秋故事,也希望能够通过这个平台,将我对中秋的热爱,对编程的热爱,传递给大家。
“每逢佳节倍思亲。”在中秋节这一天,我身在异乡,却深深地体会到了这句话的深意。尽管我无法和家人团聚,尽管我无法像其他人那样与朋友相聚,但是,我有着编程的陪伴,有着这个“虚拟社区”的温暖。
在这个数字化的时代,我们通过代码传递思想,通过程序解决问题。中秋节并不能阻止我们前行的步伐,反而更加坚定了我们前行的决心。
我在这个特殊的节日里,选择了与代码为伍,与机器为伴。这也许是我作为一名程序员,对于中秋最好的致敬。在键盘上敲击出的不是简单的文字,而是我对未来的憧憬,对技术的热爱。
在这个日子里,我选择了与开源为伍。我参与了各种编程项目,为开源社区贡献了自己的一份力量。这些项目或许不是最炫酷的,或许不是最具有商业价值的,但是它们带给我无尽的乐趣和满足感。
当我在中秋节这一天写下这些文字的时候,我想说:我爱编程,我享受这个与我为伍的中秋节。这也许有些难以理解,也许有些与众不同,但这正是我作为程序员的独特中秋节。
正如古人所说:“海上生明月,天涯共此时。”尽管我们不能共享月饼,不能同看一轮明月,但是我们的心是相通的。我们有着同样的情感,有着同样的热爱。我们热爱编程,热爱这个让我们欢笑、思考、成长的中秋节。
在这个中秋节里,我选择了与代码共舞。这也许是我最好的中秋节礼物,是与编程共度的中秋之夜。在这个特殊的日子里,我感受到了编程带给我的喜悦和满足感。这是一种无法用言语表达的情感,是一种源自内心的热爱和激情。
在这个中秋节里,我感受到了编程的魅力。我感受到了编程带给我的快乐和成就感。这是一种无法用言语表达的情感,是一种源自内心的热爱和激情。
在这个中秋节里,我更加深刻地理解了编程的意义。编程不仅仅是一种技能,更是一种思考方式,一种解决问题的方法。通过编程,我能够更好地理解世界运行的规律,更好地解决现实中的问题。这是一种非常有价值的体验,是一种源自内心的热爱和追求。
在这个中秋节里,我更加珍惜编程带给我的机会。我明白了编程是我能够在这个世界上留下自己足迹的工具。通过编程,我能够将自己的想法变为现实,为世界贡献一份力量。这是一种非常宝贵的经历,是一种源自内心的动力和信念。
在这个中秋节里,我想对所有正在编程的你说:无论你身处何方,无论你正经历什么困难和挑战,都请记住你的选择、你的热爱、你的梦想。编程带给我们无尽的可能性和机会,让我们在中秋这个特殊的日子里,用代码书写自己的故事和未来。”
九九乘法表
for i in range(1, 10): for j in range(1, i + 1): print(f"{j}*{i}=%-3d" % (i * j), end="") if j == i: print("\n", end="") 逢7拍手
for i in range(1, 100): f = 0 if i % 7 == 0: # 倍数 f = 1 #print("a") elif i // 10 == 7: # 十位 f = 1 #print("c") elif i % 10 == 7: # 个位 f = 1 #print("
判断是否包含大写字母
x=input("请输入字符串:") for i in x: if 'A' <= i <= 'Z': print(True) break elif i == x[len(x)-1]: print(False) 输出字符串里s的位置和数量,替换
string = 'wuhan institute of design and sciences' print(string.count('s')) for i in range(0, len(string)): n = string.find('s', i, i + 1) if n > 0: print(n) print(string.replace(" ", "*")) 字符串的分割和拼接
string = 'wuhan institute of design and sciences' x = '*' print(string.split(' ')) print(x.join(string)) 英文格式(删除乱码,多余空格,统一大小写)
#string = 'wuhan >>>institute of design?
根据某会计反馈,做资产月结的时候出现如下错误
旧财年结算之前,要检查旧财年的资产业务是否已经全部入账,每个资产应计提折旧与实际计提折旧计算是否正确;
旧财年结算后,要关闭旧财年的资产财政年度,打开新的资产财政年度。
打开下一个资产会计年度
AJRW
确认无误后正式运行,此操作同资产月结一样需要转入后台执行,查看:SM37。
结转资产到下一个会计年度——关闭旧会计年度
AJAB
确认无误后正式运行,此操作同资产月结一样需要转入后台执行,查看:SM37。
资产反年结操作:OAAQ
只需要把“结算会计年度”改小一年,然后去处理错误,处理完毕之后重新进行年结的操作即可。
运行结束之后可以通过事务代码S_ALR_87011994查看结转情况。
win11无法删除Chrome注册表项 删除以下注册表项发生错误:
计算机\HKEY_LOCAL_MACHINE\SOFTWAR\Google计算机\HKEY_CURRENT_USER\Software\Google 尝试了很多删除注册表方法(例如:编辑remove.reg文件),都不行。
无法删除应该还是由于权限问题。
解决方法(给予权限) 展开Chrome根项目(从根项目一层一层删除),右击com.microsoft.browsercore,选择权限选择Administrators,选择高级
更改所有者 -> 选择高级->立即查找->选择Administrator(图标是一个小人的就是你的用户)
day06菜品管理 1、新增菜品 1.1、功能分析
点击新增菜品,进入添加菜品网页【标1】;添加完成菜品名称和单价【标2】后,选择菜品所属的菜品分类【标4】【标5】(需要一个菜品分类选择列表功能);为需要添加口味偏好的菜品添加特色口味【标6】和【标7】(需要一个口味选择列表功能,前端固定死了,后端省略),点击【标8】为菜品添加图片(图片上产),图片上传后,自动执行图片下载(图片显示),这个功能前面已经完成;菜品添加完成后,点击【标10】,向后端发送保存请求; 1.2、代码
Category_controller /** * 查找所有符合条件的数据列表 * @param categoryListDto dto * @return Result<List<Category>> */ @GetMapping("/list") @ApiOperation(value = "查找所有符合条件的数据列表" ) public Result<List<Category>> getList(CategoryListDto categoryListDto) { log.info("CategoryListDto={}",categoryListDto); //执行查询 List<Category> list= categoryService.list(categoryListDto); return Result.success(list); } Service List<Category> list(CategoryListDto categoryListDto); Impl @Override public List<Category> list(CategoryListDto categoryListDto) { //1.准备查询条件和排序规则 LambdaQueryWrapper<Category> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(categoryListDto.getType() != null,Category::getType,categoryListDto.getType()); queryWrapper.orderByAsc(Category::getSort).orderByDesc(Category::getUpdateTime); //2.查询数据 List<Category> list = super.list(queryWrapper); //3.返回数据 return list; } 1.3、问题
因为Dish实体类不满足接收flavor参数,需要创建一个Dish的子类DishDto,用于封装口味数据
2、删除菜品 控制层
目录 一、概述二、抓取模组log2.1 硬件接口2.2 用户登录2.3 相关指令 三、测试AT指令3.1 查看端口3.2 进入模式 四、串口发16进制echo使用 一、概述 二、抓取模组log 在之前记录了通过USB,使用移远工具Qwinlog来抓取log(3.3 抓取模组log)。
现在记录下使用debug串口抓取模组log。
2.1 硬件接口 根据模组手册,debug串口如下:
2.2 用户登录 使用MobaXterm进行串口连接。通过上电后会看到打印的log。敲击回车,会提示输入用户名。依次输入用户名、密码,即可登录设备:
2.3 相关指令 抓取log方法如下:
1. 在模组debug UART口执行以下命令: echo 1 > /sys/module/printk/parameters/perf_mode_console echo 1 > /sys/module/msm_show_resume_irq/parameters/debug_mask echo 0x2 > /sys/module/ipc_router_core/parameters/debug_mask 2. 然后让模块进入休眠,复现到问题,提供下模组debug 口的log. 模组休眠后,并不会断开连接。可以抓取模组的唤醒过程。
三、测试AT指令 通过debug串口也是可以发送AT指令的。
3.1 查看端口 结合时间,可以看出是smd8。
3.2 进入模式 使用microcom /dev/smd8指令(microcom用法),进入测试。在刚进入的时候,输入AT等指令,可以回复(无指令回显)。但是过一会就异常了:
使用ctrl+x退出测试。异常原因和指令没有回显的问题,暂未解决。
四、串口发16进制 通过在MPU端直接发送串口指令给MCU,来模拟APP远程控制。为了不修改MPU程序,在终端使用echo发送数据:0x55 0xAA 0x02 0x40 0x00 0x01 0x81 0x3C 0x01,也就是:
echo -e "\x55\xAA\x02\x40\x00\x01\x81\x3C\x01" > /dev/ttyHS0 echo使用 使用>
Nginx核心指令listen与server_name入门
域名 一般一个域名对应一个IP,而一个IP可以有多个域名。
域名是分级别的:一级域名(顶级域名)、二级域名、三级域名等,以英文的句点(.)进行分隔;一级域名可以包括多个二级域名,一个二级域名可以包括多个三级域名,以此类推。域名是需要在特定的组织进行注册或备案。
顶级域名就是一级域名,比如 .com、.net、.org、.com. cn、.cn,N级域名就是在N-1级域名前追加一级。
各种域名后缀都有不同含义。例如 .com 意为商业/公司(Commercial / companies / company ),.net 意为网络(network),.org 意为组织(organization)。
比如二级域名是在一级域名前加一级,二级域名示例:http://baidu.com http://qq.com
注: 有些人会说 http://baidu.com 知乎 - 有问题,就会有答案 http://qq.com 是一级域名,虽然是错误的-但可以理解(说的人多了也就是对的了……),这是站在使用者/购买者角度看的,对于购买域名者来说 http://xxx.com http://xxx.com.cn就相当一级域名,但是从真正的域名分级看,它们俩分别是二级域名、三级域名。
多级域名 顶级域名、一级域名 Top-level domains,first-level domains(TLDs),也翻译为国际顶级域名,也成一级域名。
.com 供商业机构使用,但无限制最常用
.net 原供网络服务供应商使用,现无限制
.org 原供不属于其他通用顶级域类别的组织使用,现无限制
.edu / .gov / .mil 供美国教育机构/美国政府机关/美国军事机构。因历史遗留问题一般只在美国专用
.tel 供连接电话网络与因特网的服务使用
.post 供邮政服务使用
.mail 供邮件网站使用
国家顶级域名:cn(中国大陆)、de(德国)、eu(欧盟)、jp(日本)、hk(中国香港)、tw(中国台湾)、uk(英国)、us(美国)
二级域名 二级域(或称二级域名;英语:Second-level domain;英文缩写:SLD)是互联网DNS等级之中,处于顶级域名之下的域。二级域名是域名的倒数第二个部分,例如在域名example.baidu.com中,二级域名是baidu。
.com 顶级域名/一级域名,更准确的说叫顶级域
baidu.com 二级域名,更准确的说叫二级域
tieba.baidu.com 三级域名,更准确的说叫三级域
detail.tieba.baidu.com 四级域名,更准确的说叫四级域
......
子域名 子域名(或子域;英语:Subdomain)是在域名系统等级中,属于更高一层域的域。
比如,mail.example.com和calendar.example.com是example.com的两个子域,而example.com则是顶级域.com的子域。
凡顶级域名前加前缀的都是该顶级域名的子域名,而子域名根据技术的多少分为二级子域名,三级子域名以及多级子域名。
一、背景 nacos安全预警,对问题复现后进行修复。
漏洞原理为开源服务管理平台 Nacos在默认配置下未对 token.secret.key 进行修改,导致远程攻击者可以绕过密钥认证进入后台造成系统受控等后果。
漏洞信息
漏洞类型:身份认证绕过
漏洞等级:高危
漏洞编号:NVDB-CNVDB-2023674205
漏洞影响范围:
0.1.0 <= Nacos <= 2.2.0基本上都受到了影响,最新的版本已修复漏洞。
漏洞的本质是因为使用了默认的key
JWT(JSON Web Token)是一种用于在网络应用之间安全传递信息的开放标准。在使用JWT时,通常需要使用密钥对token进行签名,以确保token在传输过程中不被篡改。如果在代码中将密钥硬编码到应用程序中,将会存在JWT硬编码漏洞。
JWT硬编码漏洞是指将密钥硬编码到应用程序代码中,而不是存储在安全的密钥存储库中,攻击者可以轻松地获取该密钥并使用其签署和验证JWT。这使攻击者可以创建或修改JWT,或者验证伪造的JWT,从而导致安全漏洞。例如,应用程序使用硬编码密钥对JWT进行签名,攻击者可以轻松获取该密钥并创建有效的JWT,该JWT会被误认为是经过身份验证的用户,从而获得未经授权的访问权限。因此,为了避免JWT硬编码漏洞,应该将密钥存储在安全的密钥存储库中,并且只有授权的应用程序可以访问它。
二、复现步骤 (一)安装nacos服务 略过
(二)JWT构造 1、nacos默认key nacos默认key(token.secret.key值的位置在conf下的application.properties)
SecretKey012345678901234567890123456789012345678901234567890123456789
2、unix时间戳 需要大于当前系统时间
3、JWT认证构造 https://jwt.io
(三)浏览器fetch重发确认 1、报文复制 2、添加认证信息 3、报文重发 确认可以登录成功
(四)burp拦截模拟 关闭代理,成功绕过
配置环境变量 source /opt/xilinx/p201/settings.sh 如果已经在bashrc里面添加了这行,则可以省略
2. 创建project
创建工程有几种方式
1)基于cpu模板创建基本的框架,然后在后续用petalinux-config导入vivado导出的xsa(hdf)文件
petalinux-create -t project --template <CPU-TYPE> -n <PROJECT-NAME>
其中,
<CPU-TYPE>为CPU类型,具体值可为:zynqMP (for UltraScale+ MPSoC)、zynq (for Zynq)、microblaze (for MicroBlaze)<PROJECT-NAME>为工程名称 例如:
petalinux-create -t project --template zynqMP -n test1
2) 基于官方提供的bsp包
petalinux-create -t project -s test.bsp
3. 基于Vivado产生的硬件描述文件的创建工程
petalinux-config --get-hw-description=<PATH-TO-HDF/XSA-DIRECTORY>
其中,<PATH-TO-HDF/XSA-DIRECTORY>为Vivado硬件描述文件所在目录路径;老版本的硬件描述文件的后缀名为hdf,新版本的后缀名为xsa,其他是相同的。
注意:这里是指xsa文件所在的目录,不是文件名
假设test1.xsa在当前目录,则
cd test1
petalinux-config --get-hw-description=../
4.设置缓存目录
在project-spec/meta-user/conf/petalinuxbsp.conf文件中
gedit project-spec/meta-user/conf/petalinuxbsp.conf
增加以下几行
DL_DIR = "/opt/xilinx/p201/downloads"
SSTATE_DIR = "/opt/xilinx/p201/sstate/aarch64"
RM_WORK_EXCLUDE += "linux-xlnx"
RM_WORK_EXCLUDE += "u-boot-xlnx"
5. 配置u-boot
在命令行输入chcp查看当前windows默认编码
936 对应 GBK
65001 对应 UTF-8
方法1:临时更改cmd和powershell窗口中文编码方法 在命令行输入如下命令,可以临时更改当前窗口编码
chcp 936 改为gbk
chcp 65001 改为utf-8
方法2:永久修改cmd编码,修改注册表,适用于cmd,在各种开发工具终端中均生效 按win+r,输入regedit运行,进入注册表
找到【HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor】
新建一个表项,命名为autorun,值设为chcp 65001
每次启动cmd会自动更改编码为utf-8
方法3:永久修改powershell编码,添加profile文件,在VSCode/IDEA等开发工具中均生效。 以管理员身份打开powershell,注意,以管理员身份,不然不能生效,依次执行如下命令:
#允许运行自定义脚本 set-executionpolicy remotesigned #创建默认profile,如果存在则不创建 if (!(Test-Path -Path $PROFILE)) { New-Item -ItemType File -Path $PROFILE -Force } #查看创建的profile文件位置 $PROFILE 根据输出的位置,找到profile文件,例如
C:\Users\Yuanfei\Documents\PowerShell\Microsoft.PowerShell_profile.ps1 使用编辑器打开,加入一行:
$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding 然后重启powershell,使用chcp查看编码,发现已经修改成了65001.
方法4:安装Terminal终端,统一管理cmd和powershell编码方法 从微软商店或者github搜索 terminal,安装后打开,会自动集成cmd和powershell,打开下拉菜单进入设置
点击powershell的配置项,编辑命令行,在命令后面加上 -NoExit -Command chcp 65001,保存,每次使用终端打开powershell会自动设置为utf-8
打开cmd配置项,编辑命令行,加上/k chcp 65001,保存,每次使用终端打开cmd会自动设置为utf-8。
如果不希望自动改为utf-8,只需要把上述步骤中添加的命令删除即可。 方法5: 创建快捷方式,添加运行参数,powershell cmd通用 以powershell为例,cmd操作类似。
欢迎关注同名微信公众号,更多文章推送:
本次Arcpy脚本工具用的是ArcGisPro2.8版本,尽量使用同一版本,其它版本可以参照。
工具介绍 本工具通过高德开放的【搜索POI】的API进行爬取。在此之前,需要先进入官网申请一个key。网址如下:
获取高德地图Keyhttps://lbs.amap.com/api/webservice/guide/create-project/get-key
申请方法可以看下这个指南,或者网上搜一下别的大神的教程。
参数设置 参数只有2个。
1、【输入城市名或城市代码】——这里随工具附带了一个高德地图的城市代码表,分别是城市名和对应的城市代码,一般情况下填城市名就可以了,不过有的城市特别是区会存在重名的情况,而城市代码都是唯一值,填代码更稳妥一点:
2、【输出POI点】——输出一个点要素。
脚本编写 代码比较长,就不细说了,就是调用官方提供的POI,获取POI信息,转点,再通过坐标转换,把高德用的【gcj02坐标】,也称为火星坐标,转换成【WGS84坐标】,和【CGCS2000国家大地坐标】基本可以认为一致。
其中坐标转换的代码单独写成了一个脚本,不要删掉它!
主代码如下:
# -*- coding:utf-8 -*- from urllib.parse import quote from urllib import request import json import xlwt import requests import arcpy import os arcpy.env.overwriteOutput = True # 工具箱输入参数 cityname = arcpy.GetParameterAsText(0) # 输入城市名称或代码 point = arcpy.GetParameterAsText(1) # 输出结果POI # 获取文档位置 default_path = os.path.dirname(__file__) arcpy.ImportToolbox(default_path + r"\cc工具箱.tbx") # 加载cc工具箱 excelPath = default_path + r'\output.xls' # 临时excel文件 tablePath = r'memory\tablePOI' # 临时的坐标点表格 #TODO 替换为申请的密钥 amap_web_key = '6d71f68deb0d1b2087b482242d93f030' poi_search_url = "
node的下载 下载方式: 可以在首页直接下载最新版本:https://nodejs.cn/download/可以查看所有安装包并选择自己需要的版本:https://registry.npmmirror.com/binary.html?path=node/ 文件类型的选择: 以msi结尾的是可执行程序压缩包的可以手动解压并添加相关环境配置
下载方式 msi 一直【next】就完了,然后【install】安装,安装完后点击【Finish】按钮完成安装
压缩包安装方式 将下载好的压缩包解压到对应的文件夹即可。
配置环境变量 首先在安装node的界面创建两个文件夹:
同时点击:win+r键输入cmd点击回车打开黑窗口
在黑窗口中执行以下两行命令
随后在用户环境变量的Path中添加路径
在系统变量中通过点击新建按钮创建新的环境变量,如果之前已经配置过node则直接添加即可。
最后进行测试
本文目录 1.创建IntStream流(IntStream中的静态方法:of / builder/ range / rangeClosed / generate / iterate)2.filter3.map4.flatMap5.peek6.mapToObj / mapToLong / mapToDouble / asLongStream / asDoubleStream7.forEach / forEachOrdered8.distinct9.sorted10.limit11.skip12.reduce13.sum / min / max / count / average / summaryStatistics14.anyMatch / allMatch / noneMatch15.findFirst / findAny16.sequential / parallel17.iterator18.boxed19.toArray20.close / onClose21.collect 本章节我们提供一些 Java 8 中的 IntStream、LongStream 和 DoubleStream 使用范例。IntStream、LongStream 和 DoubleStream 分别表示原始 int 流、 原始 long 流 和 原始 double 流。
这三个原始流类在 java.util.stream 命名空间下,并提供了大量的方法用于操作流中的数据,同时提供了相应的静态方法来初始化它们自己。
本文仅介绍IntStream的方法,LongStream/DoubleStream 的使用同 IntStream 一致,此处不再过多介绍。
1.创建IntStream流(IntStream中的静态方法:of / builder/ range / rangeClosed / generate / iterate) 创建IntStream流的几种方式,如下:
1.Stream流由来 首先我们应该知道:Stream流的出现,主要是用在集合的操作上。在我们日常的工作中,经常需要对集合中的元素进行相关操作。诸如:增加、删除、获取元素、遍历。
最典型的就是集合遍历了。接下来我们先举个例子来看看 JDK8 Stream流式操作出现之前,我们对集合操作的过程,从中来了解一下 JDK8 之前集合操作数据的弊端。
Demo:现在有一个List集合,集合中有如下数据:"张无忌"、"周芷若"、"杨逍"、"张强"、"张三丰"、"赵敏"
需求:1.拿到所有姓"张"的名字 2.拿到长度为3个字的名字 3.将最终结果进行打印
/** * TODO JDK8前遍历集合 Vs JDK8 Stream()流遍历集合 * * @author liuzebiao * @Date 2020-1-7 17:49 */ public class Demo { public static void main(String[] args) { List<String> list = new ArrayList<>(); Collections.addAll(list,"张无忌","周芷若","杨逍","张强","张三丰","赵敏"); /** * 需求: * 1.拿到所有姓"张"的名字 * 2.拿到长度为3个字的名字 * 3.将最终结果进行打印 */ //JDK8 以前遍历操作集合 /*****************多次for循环********************/ //1.1 拿到所有行"张"的名字 List<String> zhangList = new ArrayList<>(); for (String name : list) { if(name.
博主在研究Spring事务源码,编写测试代码时,出现了Closing non transactional SqlSession 导致事务失败的问题,于是写下这篇文章,记录一下这个问题。
前提 已经通过配置方式,开启了 Spring 声明式事务。配置没问题,按正常情况,如下代码将会在执行两次 insert() 插入操作后,因 RuntimeException 异常而导致回滚。
@Override @Transactional public void add(Integer num){ userDao.insertB(); userDao.insertA(); if (num < 5) { throw new RuntimeException("测试异常"); } } 结果却是: 事务都是正提交。然后博主在 编程式事务 和 声明式事务 之前切换,怀疑自己配置错了,却始终都是一样的结果。完全无厘头了,因为自己配置没有任何问题,都开始怀疑 Spring 版本的问题了。
在测试项目中,有配置多个 xml 文件,通过 <import> 的方式引入。如下图所示:各个配置文件分别对应 MVC,MyBatis,Transaction 的配置。
问题所在:
在 spring-mvc.xml 中,配置 <context:component-scan base-package=“com.mvc”/> 开启配置扫描。就是在这里出了问题!!! 它会扫描 com.mvc 包下的所有注解。
此处我们将扫描注解配置分开来扫。
spring-mvc.xml 中,修改为只扫描com.mvc.Controller 包下的注解。spring-mybatis.xml中,只扫描 service 和 dao包下的注解。 配置完成后,再次启动工程,测试发现:事务OK了。 如图↓↓↓
完美。具体原因不清楚为什么。。。正常了,就这吧,也不深研究为什么了。代码就是太深奥
我的整个工程只配置了一个 <context:component-scan>,有的小伙伴可能配置了多个扫描,出现一个包被多次扫描的问题,导致冲突。也有可能出现事务失败的问题。
博主写作不易,来个关注呗
接上篇:组件中调用Vuex的state,getters,mutations,actions,modules的数据传递、传参问题
Vuex由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
因此,Vuex 允许我们将 store 分割成模块(module),每个模块拥有自己的 state、mutation、action、getter、甚至是嵌套子模块。
默认情况下,模块内部的 action、mutation 和 getter 是注册在全局命名空间的,这样使得多个模块能够对同一 mutation 或 action 作出响应。如果希望你的模块具有更高的封装度和复用性,此时就用到了命名空间这个概念。
1.如何使模块成为一个命名空间模块? 你可以在单个模块中通过添加namespaced:true的方式使其成为带命名空间的模块。
const moduleA ={ namespaced:true, //开启namespace:true,该模块就成为命名空间模块了 state:{ count:10, countA:888 }, getters:{...}, mutations:{...}, actions:{...} } 2.组件中如何获取带有命名空间moduleA中的state数据? 1、基本方式: this.$store.state.moduleA.countA 2、mapState辅助函数方式: ...mapState({ count:state=>state.moduleB.countB }) 获取state数据,与11.组件中调用Vuex的state,getters,mutations,actions,modules的数据传递、传参问题_扛麻袋的少年的博客-CSDN博客 中的1.State中的取法一样
3.组件中调用命名空间模块中的getters 共有三种方式,如下: //1. commonGetter(){ this.$store.getters['moduleA/moduleAGetter'] }, //2. ...mapGetters('moduleA',['moduleAGetter']),此处的moduleA,不是以前缀的形式出现!!! //3.别名状态下 ...mapGetters({ paramGetter:'moduleA/moduleAGetter' }), 4.组件中调用命名空间模块中的Mutations 共有三种方式,如下: //1,3加个前缀moduleA/,都可以实现。2使用辅助函数未变名称的特殊点!!! //1. commonMutation(){ this.$store.commit('moduleA/moduleAMutation'); }, //2. ...mapMutations('moduleA',['moduleAMutation']), //3.别名状态下 ...mapMutations({ changeNameMutation:'moduleA/moduleAMutation' }), 5.组件中调用命名空间模块中的Actions(与mutations一致) 共有三种方式,如下: 1,3加个前缀moduleA/,都可以实现。2使用辅助函数未变名称的特殊点!!! //1.
docker 构建 java web 项目 和 docker 构建 spring boot 项目,除了 Dockerfile 不同,其他是都一样的。其他步骤参考:idea 使用 docker 构建 spring boot 项目,构建 Java Web 项目的 Dockerfile示例如下:
因为 java web 项目打的是 war 包,docker 需要依赖的基础镜像是 tomcat
附一个 Dockerfile 示例:
# 基于 Tomcat9 作为基础镜像 FROM tomcat:9.0 # 作者 MAINTAINER lzb<xxx@qq.com> # 进入 Tomcat 部署目录 WORKDIR /usr/local/tomcat/webapps # 定义参数 ARG JAR_FILE # 将 war 包拷贝到 tomcat 中,并且改名为 ROOT COPY ${JAR_FILE} ROOT.war # 回到 Tomcat 根目录 WORKDIR /usr/local/tomcat/ # 启动时运行命令 CMD bin/catalina.
PhotoShop 将所有图层按照当前画布大小导出 前言项目代码编写运行脚本导出图 前言 需要一个将PS图层按照当前画布大小全部导出的功能。
项目 代码编写 将下面代码保存成ExportAllLayer.jsx,作为ps运行脚本
// 保存当前活动文档和图层 var originalDoc = app.activeDocument; var originalLayer = originalDoc.activeLayer; // 打开一个对话框,让用户选择保存文件的文件夹 var folder = Folder.selectDialog("请选择保存文件的文件夹"); if (folder !== null) { // 遍历原始文档的所有图层 for (var i = 0; i < originalDoc.artLayers.length; i++) { var layer = originalDoc.artLayers[i]; originalDoc.activeLayer = layer; // 设置活动图层 layer.copy(); // 复制图层内容 // 创建一个临时文档用于存储每个图层 var tempDoc = app.documents.add(originalDoc.width, originalDoc.height, originalDoc.resolution, "temp", NewDocumentMode.RGB, DocumentFill.TRANSPARENT); tempDoc.paste(); // 粘贴复制的内容 // 保存图层为PNG var outputFile = new File(folder + '/' + layer.
tep1:引入watch函数和toRaw方法
import { watch, toRaw } from "vue" tep2:监听
// 监听函数,监听formState对象,对象类型监听要开启deep深度监听 watch( formState, (newData, oldData) => { console.log(toRaw(newData), toRaw(oldData));//toRaw()为取到proxy对象中的数据 }, { deep: true, } ); tep3:监听对象中某一属性的变化时需要改为回调函数
watch( () => formState.value.user, () => console.log(formState.value.user) );
使用 getCurrentInstance()方法: tep1:
// 在main.js先引入ant的提醒方法 import { message } from 'ant-design-vue'; // 全局挂载ant提醒方法 app.config.globalProperties.$message = message tep2:
// 在页面中定义{ proxy } 为 getCurrentInstance()方法 const { proxy } = getCurrentInstance(); // 使用 proxy.$message.success("操作成功"); 以上内容为最新Vue3版本删除了,但还能使用,挂载全局方法官方推荐使用provide,inject
tep1:
// 在main.js先引入ant的提醒方法(挂载什么就用什么) import { message } from 'ant-design-vue'; // 在定义app的原型上用provide进行挂载 app.provide("message", message) // 在页面中引入inject import { inject, onMounted } from 'vue' // 定义一个方法取出inject中挂载的需要的方法 var msg = inject('message') // 在onMounted中直接使用 onMounted(()=>{ msg.success("操作成功") })
项目使用 element ui 的表格实现拖动表头可改变列的宽度,又使用sortablejs实现表格的列可拖拽到其他列的位置,导致出现如下的一些问题:
1、某一列宽变大或变小后,只有当前列可拖拽,其他列无法拖拽。
解决方案:在列宽发生改变后,销毁当前拖拽实例,再重新创建拖拽实例。
this.sortDemo.destroy() 此方法可查看sortablejs官网 Sortable.js中文网
2、当表格没有横向滚动条时,某一列宽变大或变小时,其他列宽也会变大或变小。
根因:表格的每一列设置了min-width,当表格没有横向滚动条时,某一列宽变大或变小时,min-width 会把剩余宽度按比例分配给设置了 min-width 的列,这样才可以撑开表格的整体宽度。
结论:当表格有横向滚动条时就不会出现这个问题。
3、当表格没有数据时,列不可以拖拽,改变列宽后可拖拽。
解决方案:表格数据更新后,不管表格数据接口有没有返回数据,都需重新挂载拖拽监听事件,才可以拖拽列。
this.reDrawTable()
下载地址 MySQL :: Download MySQL Installer
https://dev.mysql.com/downloads/installer/
选择版本 下载 安装
181/2461/8938描述
2400型源表是一个20W的仪器,可以提供和测量从1 V到200V DC的电压和从10pA到1A的电流。它非常适合测试各种器件,包括二极管、电阻、电阻网络、有源电路保护器件以及便携式电池供电器件和元件。它对于系统电源和IDDQ测试应用也很有用
Keithley 2400 SourceMeter是一款20W仪器,可以采集和测量从5 V(采集)和1 V(测量)到200V DC的电压以及从10pA到1A的电流。万用表的功能包括高重复性和低噪声。结果是一个紧凑的,单通道,DC参数测试仪。在操作中,Keithley 2400源表可以作为电压源、电流源、电压表、电流表和欧姆表。通信、半导体、计算机、汽车和医疗行业的组件和模块制造商将会发现SourceMeter仪器对于各种表征和生产测试应用具有不可估量的价值。
Keithley 2400源表非常适合测试各种器件,包括二极管、电阻、电阻网络、有源电路保护器件、便携式电池供电器件和元件,以及热敏电阻、太阳能电池、电池和大电流或中功率二极管,包括开关和肖特基二极管。该源表也适用于系统供电和IDDQ测试应用。
Keithley 2400源表的特性和规格包括:
四象限运行0.012%基本精度,5 1/2位数分辨率带可编程I源和V箝位的6线O测量通过GPIB以4 1/2位数每秒1700次读数电源特性包括低噪声、高精度和回读用于快速通过/失败测试的内置比较器用于快速宁滨的数字I/O和到组件处理器的连接GPIB、RS-232和触发链路接口测试点和LabVIEW驱动程序
文章目录 写在前面的话Token的生成的官方描述1. JWT Token(透明Token)2. Opaque Token(不透明Token)2.1 默认128位字符的Opaque Token2.2 自定义Token生成器,生成一个UUID类型的OpaqueToken 写在前面的话 因为SpringBoot3.x是目前最新的版本,整合spring-security-oauth2-authorization-server的资料很少,所以产生了这篇文章,主要为想尝试SpringBoot高版本,想整合最新的spring-security-oauth2-authorization-server的初学者,旨在为大家提供一个简单上手的参考,如果哪里写得不对或可以优化的还请大家踊跃评论指正。
前面一篇文章《spring-security-oauth2-authorization-server(一)SpringBoot3.1.3整合》主要介绍了如何简单搭建一个认证服务器,这一篇算番外篇主要结合官网的描述简单分析一下Token的几种生成策略,以及如何自定义Token生成器来生成我们在OAuth2.0中常见的形如这样:Bearer 237d224d-1bdc-4d48-855a-f6abb37e378f的不透明OpaqueToken。
整个项目的配置还是复用的上一篇。
Token的生成的官方描述 取自官方文档:
OAuth2TokenGenerator负责从所提供的OAuth2TokenContext中的信息生成 OAuth2Token,生成的 OAuth2Token 主要取决于在 OAuth2TokenContext 中指定的 OAuth2TokenType。
当 OAuth2TokenType的value 为:
code,则生成 OAuth2AuthorizationCode。access_token,则生成 OAuth2AccessToken。refresh_token,则生成 OAuth2RefreshToken。id_token,则生成 OidcIdToken。 所以我们用到的授权码,access-token,refresh-token,设备码等都是由OAuth2TokenGenerator的子类实现的。
1. JWT Token(透明Token) spring-security-oauth2-authorization-server默认生成的Token是JWT类型的,生成的 OAuth2AccessToken 的格式是不同的,取决于为 RegisteredClient 配置的TokenSettings.getAccessTokenFormat()。如果格式是 OAuth2TokenFormat.SELF_CONTAINED(默认),那么就会生成一个 JWT。如果格式是 OAuth2TokenFormat.REFERENCE,那么就会生成一个 "opaque"不透明Token。
官网上还有这么一句话:
OAuth2TokenGenerator 是一个可选的组件,默认为由 OAuth2AccessTokenGenerator 和 OAuth2RefreshTokenGenerator 组成的 DelegatingOAuth2TokenGenerator。
如果注册了 JwtEncoder @Bean 或 JWKSource @Bean,那么在 DelegatingOAuth2TokenGenerator 中还会额外组成一个 JwtGenerator。
可以在源码找到出处。
DelegatingOAuth2TokenGenerator实例化的时候将tokenGenerators塞进去的,那么再往上找何处实例化的
因为我们注册了相应的JWKSource、JwtEncoder的Bean,所以Token的生成会实现在JwtGenerator上。
如果我们不注册JWT相关的Bean就是将上一篇文章中的3.3.5节的JWT相关Bean全部去掉,debug会发现还是默认加进来了JwtGenerator。
原因应该是在我们在注册RegisteredClientRepository Bean时默认为我们指定了tokenSettings。
所以oauth2_registered_client表的token_settings也会看到org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat类型为self-contained
2. Opaque Token(不透明Token) 2.
前言
安装 Oracle 一直是本人工作以来想要做的事情,但是一直都没有安装成功,本人有一个习惯,所有的软件基本上都安装在centos系统下,这样,一方面是 在日常工作中,都是linux环境,另一方面,装在linux虚拟中,万一哪天你想退出江湖,可以一键删除走人; 下边是我折腾了很久,记录的centos下安装Oracle 19C的教程,中间踩了很多坑,为避免大家踩坑,我把整个安装的过程及踩到的坑,都记录下来;不可否认,中间参考了很多网上的教程
大家可以参考这边博客,博主本人就是参考的本篇文章
Linux 系统服务端oracle19c数据库全英文版安装教程
1 安装准备 1) 下载预安装包, 下载网址,我已分享到百度云:
地址如下 :
链接:https://pan.baidu.com/s/18kfSC7KRjTsOKRG6UokOFA 提取码:yyds 官网下载地址
下载完成后,会得到如下两个文件
上传文件到centos虚拟机
创建用户
adduser oracle ## 需要输入2次密码 passwd oracle 2) 预安装 cp oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm.rpm /root/ mv oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm.rpm oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm ## 本地安装 yum localinstall -y /root/oracle-database-preinstall-19c-1.0-1.el7.x86_64.rpm 安装成功后
3) 安装依赖包 yum install -y bc gcc gcc-c++ binutils compat-libcap1 compat-libstdc++ dtrace-modules dtrace-modules-headers dtrace-modules-provider-headers dtrace-utils elfutils-libelf elfutils-libelf-devel fontconfig-devel glibc glibc-devel ksh libaio libaio-devel libdtrace-ctf-devel libX11 libXau libXi libXtst libXrender libXrender-devel libgcc librdmacm-devel libstdc++ libstdc++-devel libxcb make smartmontools sysstat 4) 创建所需文件夹 并授权 mkdir -p /app/oracle/product/19.
1 官网地址 https://kuboard.cn/install/v3/install.html#kuboard-v3-x-%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E 2 找到推荐的安装方式 先点击左上角的安装
3 进入安装引导页面 复制出来里面的docker 命令,根据需求修改外面端口映射,KUBOARD_ENDPOINT 随便写一个ip即可。
下面红字提示很重要,请仔细阅读。
docker run -d \ --restart=always \ --name=kuboard-xiaoma \ -p 30080:80/tcp \ -p 30081:10081/tcp \ -e KUBOARD_ENDPOINT="http://1.2.3.4:80" \ -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \ -v /root/kuboard-data:/data \ eipwork/kuboard:v3 访问一下
访问地址:http://部署主机IP 默认账号:admin 默认密码:Kuboard123 4 根据提示导入集群 根据提示获取授权字符串
粘贴到黑色输入框里面
1、主要原因是用户没有授权或masterIP写错
last io error: error connecting to master 'slave@172.25.250.155:3306' - retry-time: 60 retries: 6 slave_ io running: connecting 解决:检查自己的master服务器是否授权给slave用户,检查slave用户能否在其他服务器登录,检查,change 规则是否写错,主要是ip,用户,密码
2、原因是server-id冲突
Slave_IO_Running: No 和 The slave I/O thread stops because master and slave have equal MySQL server ids; 解决:将master或slave服务器中,mysql的配置文件中的server-id值更改并重启服务
3、为数据库或表的建库建表语句冲突,可能是库或表已经存在。
Last_SQL_Error: Error 'Table 'book' already exists' on query. Default database: 'mybook'. Query: 'create table book(id int,num int)' 或 Last_SQL_Error: Error 'Can't create database 'mybook'; database exists' on query. Default database: 'mybook'.
1 基础1.1 关闭代码执行输出,否则每一行都会替换结果后输出1.2 goto, 用冒号开头标识一个起点,使用goto语句跳转到flag位置执行1.3 注释的两种方法1.4 变量声明1.5 延迟解析, 动态替换1.7 常用命令对比1.8 for循环1.8.1 遍历一组数字1.8.2 遍历一组字符串1.8.3 遍历文件1.8.3 遍历文件夹1.8.4 遍历命令的输出1.8.5 for /f 使用实例1.9 字符串操作2 代码实例 1 基础 1.1 关闭代码执行输出,否则每一行都会替换结果后输出 @echo off 1.2 goto, 用冒号开头标识一个起点,使用goto语句跳转到flag位置执行 :flag goto flag 1.3 注释的两种方法 @rem hello ::hello 1.4 变量声明 @rem 以下三种方式都可以, 不过需要注意类型 set "result=111" set result=111 set result="111" @rem 设置为空变量 set "result=" set result="" @rem 字符串拼接 @rem 1.这种方式输出的 "111"222 set result="111" set "result1=%result%222" @rem 2.这种方式输出的 111222 set result=111 set "
- [1 基础](#1-基础)
- [1.1 关闭代码执行输出,否则每一行都会替换结果后输出](#11-关闭代码执行输出否则每一行都会替换结果后输出)
- [1.2 goto, 用冒号开头标识一个起点,使用goto语句跳转到flag位置执行](#12-goto-用冒号开头标识一个起点使用goto语句跳转到flag位置执行)
- [1.3 注释的两种方法](#13-注释的两种方法)
- [1.4 变量声明](#14-变量声明)
- [1.5 延迟解析, 动态替换](#15-延迟解析-动态替换)
- [1.7 常用命令对比](#17-常用命令对比)
- [1.8 for循环](#18-for循环)
- [1.8.1 遍历一组数字](#181-遍历一组数字)
- [1.8.2 遍历一组字符串](#182-遍历一组字符串)
- [1.8.3 遍历文件](#183-遍历文件)
- [1.8.3 遍历文件夹](#183-遍历文件夹)
- [1.8.4 遍历命令的输出](#184-遍历命令的输出)
- [1.8.5 for /f 使用实例](#185-for-f-使用实例)
- [1.9 字符串操作](#19-字符串操作)
- [2 代码实例](#2-代码实例)
# 1 基础
# 1.1 关闭代码执行输出,否则每一行都会替换结果后输出
```bat
@echo off
```
# 1.2 goto, 用冒号开头标识一个起点,使用goto语句跳转到flag位置执行
```bat
:flag
goto flag
Maxon的Cinema 4D 2024是一款在全球范围内广受赞誉的三维动画和建模软件。新版本在速度、性能、本地化、功能增强等多个方面进行了全面的提升,为用户提供了更加流畅、高效且丰富的创作体验。
飞一般的速度 Cinema 4D 2024在速度上较之前的版本有了显著的提升,其运行速度是以前版本的的两倍多。这一显著的提升得益于Maxon全新内核的强大功能,优化了速度和性能。无论是复杂的模型渲染,还是大规模的动画制作,Cinema 4D 2024都能以飞一般的速度轻松应对。
全面本地化 Cinema 4D 2024在本地化方面也做出了重要的更新。对于中国用户来说,最直观的感受就是界面更加易用,操作更加人性化。此外,新版本还支持多种语言和地区设置,让用户在创作过程中能享受到更加流畅的体验。这也是Maxon对于全球用户需求的一种深度理解和精准响应。
功能增强 除了速度和本地化的提升,Cinema 4D 2024还增加了一些重要的新功能。首先是“pyro”增强,这个功能对于喜欢制作火焰、水花等特效的用户来说是一大福音。新版本的“pyro”功能在渲染质量和渲染速度上都有显著的提升,可以轻松制作出逼真的火焰和水花效果。
其次是VAMP的引入,这是Maxon的一款强大且易用的材质编辑器。它可以帮助用户更加便捷地创建和修改材质,使三维模型的表面属性更加丰富和逼真。同时,Cinema 4D 2024还加强了建模功能,增加了新的标签、间隔选择、笔刷保持边界等功能,使得建模过程更加流畅,结果更加丰富。
最后是动力学方面的提升。Cinema 4D 2024在动力学模拟上也进行了重大改进,通过更精确的模拟算法和更高效的计算性能,能够为用户提供更加逼真的动力学模拟效果。这将有助于用户在动画制作中实现更加自然和逼真的动画效果。
Mac安装:Cinema 4D 2024 for mac(c4d 2024)v2024.0.0激活版
Win安装:Maxon Cinema 4D 2024(C4D 2024)v2024特别版
综上所述,Maxon Cinema 4D 2024在各个方面都做出了重大更新和提升。无论你是专业的动画师,还是刚刚开始接触三维动画的新手,Cinema 4D 2024都能满足你的需求。通过这款软件,你可以轻松地创造出令人惊叹的三维动画作品。我们强烈推荐你尝试一下这款强大的工具,相信它一定能帮助你打开新的创作天地。
PS:介绍代码仅供介绍,源代码后期经过修改与介绍代码不一定完全相同
索引表 使用到的库数据加载和预处理划分训练集和测试集模型选择和训练模型评估模型优化结果展示尾声
使用到的库 import pandas as pd # 数据处理库 from gensim.models import Word2Vec # 自然语言处理模型库 import numpy as np # 科学计算库 import os # 文件操作 from sklearn.metrics import mean_squared_error # 均方误差评估 from sklearn.metrics import mean_absolute_error # 绝对误差评估 from sklearn.ensemble import RandomForestRegressor # 随机森林回归模型 import matplotlib.pyplot as plt # 绘图库 import random # 随机库 import joblib # 用于模型的保存 import datetime # 获取当前时间 数据加载和预处理 初步检查数据集 初步观察,发现: 1. 有一些游戏属于当时未发行状态(TBD),数据是无效的,故删除 2. 发行日期未格式化,故用excel自带功能将日期从1-May-20修改为2020/5/1 3.
tensorflow安装位置 如果在安装tensorflow 的时候是安装在anaconda虚拟环境中的话,直接通过命令"conda remove tensorflow"卸载tensorflow会报错找不到tensorflow,那是因为先进入虚拟环境,然后在虚拟环境中再使用该命令进行删除
虚拟环境
以管理员身份打开Anaconda Prompt,然后使用如下命令进入虚拟环境 conda activate tensorflow 删除tensorflow
进入虚拟环境后使用如下命令删除tensorflow conda remove tensorflow 随后选择确定删除Y看到如下结果就是卸载成功了!
二级标题 三级标题 四级标题 五级标题 六级标题
POI下载excel通用方法 最近遇到一个业务是需要下载excel,使用POI,这里记录一下实现过程
1、导包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> 2.公共方法的编写 package com.pingan.esbx.cassandra.util; import org.apache.commons.io.FileUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.util.CellRangeAddress; import org.springframework.util.CollectionUtils; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.lang.reflect.Method; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import java.util.Objects; public class ExcelDonload { /** * 26个英文字母表 **/ public static final String[] letters = {"A", "B", "C", "D", "E", "F", "G", "
<!DOCTYPE html> <html> <script> //需要分页的数组 let arr = [1,2,3,4,5,6,7,8,9,10] //分割数组,每页4条 splitArr(arr,4) /** * 分割数组 */ function splitArr(idList,size){ //当前页数 let num = 1 //共多少页 let count = Math.ceil(idList.length / size) //定时器 let timer = setInterval(function(){ //起始下标,根据页码计算 (当前页 - 1)* 每页条数 let start = (num - 1) * size //结束下标,起始下标 + 每页条数 let end = start + size console.log("start:end",start,end) //需要的数据 let splitArr = idList.slice(start, end) console.log(splitArr) //页码加1 num++ console.log("num",num) //超出最大页数,清除定时器 if(num > count){ clearInterval(timer) } //请求数据,渲染节点 queryData(splitArr) },1000) } /** * 分批请求数据 */ function queryData(splitIds){ for (let i = 0; i < splitIds.
可以使用CSS的text-overflow和ellipsis属性来实现文本超过2行时显示省略号。
设置文本溢出隐藏
使用CSS的overflow属性来将文本溢出部分隐藏,同时使用white-space属性来设置文本换行方式为normal或者nowrap。
.overflow { overflow: hidden; white-space: normal; /* 或者 white-space: nowrap; */ } 设置文本超过2行显示省略号 使用CSS的text-overflow属性来设置文本超过2行后显示省略号。同时,需要设置宽度和高度来控制文本显示的区域。
.ellipsis { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; /* 设置宽度和高度 */ width: 200px; height: 40px; } 上述代码中,-webkit-line-clamp属性设置为2表示最多显示2行文本,-webkit-box-orient属性设置为vertical表示文本垂直排列。注意这里使用了CSS3的属性,需要在不同浏览器中加上不同的前缀。
示例代码如下:
<div class="ellipsis"> This is a long text that needs to be truncated after two lines in order to improve the design. </div> .ellipsis { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; width: 200px; height: 40px; }
文章目录 python与数学建模(一)——线性与非线性规划一、什么是线性规划?二、python求解线性规划问题三、python求解非线性规划 python与数学建模(一)——线性与非线性规划 数学建模国赛刚刚结束,博主想做一个有关使用python进行数学建模的专题。python作为一个简单高效的语言,虽然执行速度慢,不过能够快速开发。相比matlab, python更加轻量,集成度更高,使用在数学建模上完全可以胜任。
一、什么是线性规划? 我们不阐述具体的概念,可以将由以下形式的优化问题看成线性规划问题:
m i n ∑ j = 1 n c j x j s . t . ∑ j = 1 n a i j x j = b i , i = 1 , . . . , m , x j > = 0 , i = 1 , . . . , m , min\sum_{j=1}^{n}c_{j}x_{j}\\s.t.\sum_{j=1}^{n}a_{ij}x_{j}=b_{i}, i=1,...,m,\\x_{j}>=0,i=1,...,m, minj=1∑ncjxjs.t.j=1∑naijxj=bi,i=1,...,m,xj>=0,i=1,...,m,
或者我们可以用矩阵表示:
Python 是一种高级编程语言,它是一种解释性的语言,它有一些常用的环境变量配置。在本文中,我们将详细探讨这些配置。这些配置包括:
PATH 环境变量 PATH 环境变量是最重要的环境变量之一,因为它告诉操作系统可执行文件所在的位置。当你在命令行中键入一个命令时,操作系统会在 PATH 环境变量中列出的所有目录中查找该命令。
在 Windows 中配置 PATH 环境变量
在 Windows 中,为了将 Python 添加到 PATH 环境变量中,你需要进行以下步骤:
打开“控制面板”并单击“系统”。
点击“高级系统设置”链接。
点击“环境变量”按钮。
在“系统变量”列表中,查找名为“Path”的变量,并点击“编辑”按钮。
在变量值的末尾添加 Python 目录的路径。请注意,你需要用分号(“;”)将新路径和现有路径分开。
在 Linux 和 macOS 中配置 PATH 环境变量
在 Linux 或 macOS 中,你可以通过编辑 .bashrc 文件来配置 PATH 环境变量。该文件位于你的主目录下。
使用以下命令打开 .bashrc 文件:
$ nano ~/.bashrc 在文件的末尾添加以下行:
export PATH="$PATH:/path/to/python/directory" 请将“/path/to/python/directory”替换为你的 Python 目录的路径。
PYTHONPATH 环境变量 PYTHONPATH 环境变量告诉 Python 寻找模块文件的位置。当你尝试导入模块时,Python 将在 PYTHONPATH 环境变量中列出的所有目录中查找该模块。
在 Windows 中配置 PYTHONPATH 环境变量
目录 前言颜色配置数据准备errorbar函数绘制误差线patch函数绘制误差填充图细节调整设置次刻度线设置坐标轴线宽度、刻度线长度设置全局字体、刻度标签、图例取消上、右边框刻度线 保存图片总代码总结 前言 关于MATLAB中errorbar函数和patch函数的使用以及美化加工。如有些细节的地方不清楚的可以点击此先去看看这篇文章:
【MATLAB学习笔记】绘图——去除上、右边框刻度
颜色配置 这里分享一下本人常用的颜色配置:
对应的颜色代码如下
myColors = ["#9489fa"; "#f06464"; "#f7af59"; "#f0da49"; "#71c16f"; "#2aaaef"; "#5690dd"; "#bd88f5"; "#009db2"; "#024b51"; "#0780cf"; "#765005"]; 数据准备 随机生成一些数据,这里有y和z两组数据,同时计算误差err。
x = 3:0.08:5; y = exp(1.1*x); y1 = y.*(1+0.1.*x); err = y1 - y; z = exp(1.3*x)+100; z1 = z.*(1+0.03.*x); err1 = z1 - z; errorbar函数绘制误差线 errorbar第一个参数为x,第二个参数为y,第三个参数为误差。
f = figure("Name","误差"); e = errorbar(x,y,err); e.Color = myColors(1); % 颜色 e.LineWidth = 1.5; % 线宽 e.CapSize = 10; % 误差帽宽度 hold on e2 = errorbar(x,z,err1); e2.
第一步,win+r,输入 gpedit.msc 并回车,打开【组策略】
第二步,依次点击 管理模板->Windows组件->Windows更新
第三步,双击Windows更新,然后在设置中双击 指定 intranet Microsoft 更新服务位置
第四步,点击 已启用,将下面的服务地址全部改成 127.0.0.1 ,
第五步,点击确定,重启电脑,以后就不会再更新了
如果哪天又想更新了,再改成禁用就行。
参考网站
禁用Win10自动更新——改域名
win10如何打开组策略(两种方法)
找到C:\Windows\System32\drivers\etc目录下的hosts文件,将hosts文件拖到桌面,右键->属性,将只读勾选去掉,变成可读写,再用记事本打开修改,在文件最下方加入如下两行内容:
# 谷歌翻译
216.239.32.40 translate.googleapis.com
216.239.32.40 translate.google.com
64.233.189.191 translate.googleapis.com
64.233.189.191 translate.google.com
https://github.com/Ponderfly/GoogleTranslateIpCheck
GoogleTranslateIpCheck 扫描国内可用的谷歌翻译IP 如果都不能使用可以删除 ip.txt 文件调用远程IP或进入扫描模式 使用参数 -s 可以直接进入扫描模式 -y 自动写入Host文件 -6 进入IPv6模式(如果支持IPv6推荐优先使用) Windows 需要使用管理员权限运行 Mac和Linux运行 需要在终端中导航到软件目录然后执行 chmod +x GoogleTranslateIpCheck sudo ./GoogleTranslateIpCheck 下载地址 Mac OS https://github.com/Ponderfly/GoogleTranslateIpCheck/releases/download/1.6/GoogleTranslateIpCheck-mac-x64.zip Window https://github.com/Ponderfly/GoogleTranslateIpCheck/releases/download/1.6/GoogleTranslateIpCheck-win-x64.zip Linux https://github.com/Ponderfly/GoogleTranslateIpCheck/releases/download/1.6/GoogleTranslateIpCheck-linux-x64.zip 常见问题 1.如果所有IP都超时,请检查是否开了代理 2.Mac 中使用: 打开终端 输入cd 把解压后的文件夹拖进终端,点击回车 复制粘贴代码,点击回车 chmod +x GoogleTranslateIpCheck sudo ./GoogleTranslateIpCheck 3.Mac 提示来自不明身份: 系统偏好设置-->安全性与隐私--->选择允许 扫描逻辑参考 https://repo.or.cz/gscan_quic.git 项目,感谢大佬
在 SQL 中,可以使用函数来获取当前时间。具体取决于你使用的数据库系统,以下是一些常见的方法:
MySQL:
SELECT CURRENT_TIMESTAMP;
SQL Server:
SELECT GETDATE();
Oracle:
SELECT SYSDATE FROM DUAL;
PostgreSQL:
SELECT CURRENT_TIMESTAMP;
这些函数将返回当前日期和时间。你可以在需要的地方使用它们,例如在查询中或者赋值给变量。
总结 1.水平垂直居中的六句话:
position: absolute; left: 0; top: 0; right: 0; bottom: 0; margin: auto; 2.overflow:hidden(让父节点高度不受浮动影响,隐藏溢出部分)
3.div标签:
<!-- div 默认沾满整行,多个div 换行排列 --> <!-- 如果要一行排列,需要使用浮动 float,会脱离文档流 --> <!-- 样式可以重复使用,可以用空格隔开写多个样式一起用 --> 色块完整代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { width: 500px; height: 500px; border: 5px solid black; } .box_t { height: 100px; /* 水平居中 */ text-align: center; /* 垂直居中,设置行高 = div的高度 */ line-height: 100px; font-size: 28px; } .
文章目录 漏斗图 简介配置步骤简易示例 漏斗图 简介 Echarts漏斗图(Funnel Chart)是一种常用的数据可视化图表类型,用于展示数据在不同阶段的流转和转化情况。漏斗图通过不同大小的梯形图形来表示各个阶段的数据量,从而形成一个逐渐减少的漏斗形状,帮助用户直观地理解数据的流失情况和转化率。
Echarts漏斗图的特点如下:
阶段流转展示:漏斗图适用于展示数据在不同阶段的流转情况,例如销售流程、转化率分析、客户端行为分析等。通过不同阶段的梯形图形,可以清晰地展示数据在不同阶段的数量变化和流失情况。
转化率可视化:漏斗图可以展示数据的转化率,即各个阶段之间的比例关系。通过梯形的宽度和高度,可以直观地展示不同阶段之间的转化率和流失比例,帮助用户了解数据的流动情况和转化效果。
数据排序和筛选:Echarts漏斗图支持对数据进行排序和筛选,可以根据不同的指标对阶段进行排序,以便更好地理解数据的流转情况。同时,漏斗图还可以通过交互操作来对数据进行筛选,例如点击某个阶段来展示该阶段的详细信息。
数据标签和提示:漏斗图可以在图形上显示数据标签,例如阶段名称、数量或百分比等信息。同时,鼠标悬停在图形上时,还可以显示数据的详细信息,方便用户查看和分析数据。
多样化的样式和配置:Echarts漏斗图提供了丰富的样式和配置选项,用户可以根据需求自定义漏斗图的外观和功能。例如,可以调整图表的颜色、形状、边框样式等,以及添加动画效果和交互操作。
兼容性强:Echarts漏斗图能够兼容主流的浏览器,并且提供了响应式布局的功能,可以自适应不同的屏幕尺寸。
可扩展性好:Echarts提供了丰富的扩展插件和主题,用户可以根据需求自定义图表的功能和外观。同时,Echarts还支持与其他前端框架(如Vue、React)的集成,方便开发者更好地使用和扩展。
总之,Echarts漏斗图是一种功能强大、配置灵活、可视化效果好的数据可视化工具,能够有效地展示数据在不同阶段的流转和转化情况。通过漏斗图,用户可以更加直观地了解数据的流失情况和转化率,从而做出更准确的数据分析和决策。
配置步骤 Echarts漏斗图的详细配置过程如下:
引入Echarts库:在HTML文件中引入Echarts库的JavaScript文件。 <script src="echarts.min.js"></script> 创建一个具有指定宽度和高度的DOM容器,用于显示漏斗图。 <div id="chart" style="width: 600px; height: 400px;"></div> 初始化echarts实例,并将其绑定到指定的DOM容器上。 var chart = echarts.init(document.getElementById('chart')); 配置漏斗图的相关参数: var option = { title: { text: '漏斗图示例', // 图表标题 x: 'center' // 标题位置 }, series: [{ type: 'funnel', // 图表类型为漏斗图 data: [ { name: '阶段1', value: 100 }, // 阶段数据,指定阶段的名称和数值 { name: '阶段2', value: 80 }, { name: '阶段3', value: 60 }, { name: '阶段4', value: 40 }, { name: '阶段5', value: 20 } ] }] }; 将配置应用到漏斗图上,并显示出来。 chart.