1、如果不能全款,一定要用公积金买房,能剩下很多钱,不要看利率只低了一两个点
使用window开发时候,会出现端口被占用的情况,导致应用打开不了
之前的应用没有正常关闭,导致端口一直被占用
netstat -aon | findstr "端口号"
netstat -aon
:查询所有网络端口占用findstr "端口号"
:从上一步获得的数据中,过滤出符合要求的数据taskkill -pid 查到的PID
/F
,taskkill -pid 查到的PID /F
PID
是否正确netstat
:net
+stat
,网络统计,Netstat是在内核中访问网络连接状态及其相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。-a 显示所有socket,包括正在监听的。
-n 以数字形式显示地址和端口号。
-r 显示核心路由表,格式同“route -e”。
-t 显示当前连接卸载状态。
-v 显示正在进行的工作。
-p proto 显示proto指定的协议的连接。
-b 显示在创建每个连接或侦听端口时涉及的可执行程序。
-e 显示以太网统计。此选项可以与 -s 选项结合使用。
-f 显示外部地址的完全限定域名(FQDN)。
-o 显示拥有的与每个连接关联的进程PID。
-q 显示所有连接、侦听端口和绑定的非侦听 TCP 端口。
-s 显示每个协议的统计。
-x 显示 NetworkDirect 连接、侦听器和共享端点。
-y 显示所有连接的 TCP 连接模板。无法与其他选项结合使用。
findstr
:搜索包含关键词的数据/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF[LINE] 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表 strings 要查找的文字。
涉及前后端分开的项目,一定要先做好前端原型,如果没有原型,优先需要做好前端
前期分析不够的情况下,原型上可能会存在较大的问题,这时候已开发好的后端,就需要进行修改
在使用一个框架前,需要了解框架的常用功能的使用
项目完成主要有以下几个节点
1、有一个想法
2、分析想法是否可行
3、得出核心的需求
4、核心业流程图
5、系统流程图、数据字典、功能结构图、页面结构图
6、原型图
7、前端实现
8、后端接口实现
9、测试
10、发布上线
timer = window.setInterval(function() {}
我们需要学习window.setInterval
window.setInterval
每隔一段时间执行一次代码
timer = window.setInterval(function() {}
计时器 = 函数每隔一段时间调用一次
let timer
timer = window.setInterval(function() {
time++
},1000//间隔一秒)
```
document.getElementById(“timer”).innerHTML = time;
我们需要学习getElementById("timer").innerHTML
getElementById innerHTML
document.getElementById("timer").innerHTML = time;
修改id为timer元素内的内容
document.getElementById(“timer”).innerHTML = time;
```
我们需要学习Array.sort
Array.sort
Array.sort
新数组 = 久数组.sort([排序函数])
var arr = [5,7,5,1,2,6,3,4,7]
var arrNew = arr.sort() // 默认排序
var arr = [5,7,5,1,2,6,3,4,7]
var arrNew = arr.sort(function(a,b){
return a-b
}) // 默认排序
现在有两个分支,一个主分支,一个开发分支,开发分支上有多次提交,现在只想合并某次提交到主分支
可以使用 git cherry-pick
命令将指定的提交合并到主分支。
具体步骤如下:
git checkout main
git log --oneline <dev-branch>
其中,<dev-branch>
是开发分支的名字。
找到想要合并的提交的 ID,复制它。
将复制的提交 ID 应用到主分支中:
git cherry-pick <commit-id>
其中,<commit-id>
是刚刚复制的提交 ID。
git add <冲突文件> # 添加已解决冲突的文件
git cherry-pick --continue # 继续进行 cherry-pick 操作
git push
这样就可以将某次提交从开发分支合并到主分支了。
1、编辑java文件Shop.java
//类名大写
class Shop{
// 入口方法,不从属任何对象
public static void main(String[] args){
System.out.println('hello');
}
}
2、编译 javac Shop.java
,生成Shop.class
文件
3、运行 java Shop
,注意不要带class
1、编辑java文件Shop.java
//类名大写
class Shop{
// 入口方法,不从属任何对象
public static void main(String[] args){
System.out.println('hello');
}
}
2、编译 javac Shop.java
,生成Shop.class
3、运行 java Shop.class
hello worldSystem.out.println("helle.world")
\exit
jvm: JVM是JavaVirtualMachine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
jre:Java Runtime Environment,简称JRE
jdk:Java Development Kit (JDK) 是Sun公司(已被Oracle收购)针对Java开发员的软件开发工具包
J2EE的全称是Java 2 Platform Enterprise Edition,Java2平台企业版
它是由SUN公司领导、各厂家共同制定的工业标准,或者说,它是在SUN公司领导下,多家公司参与共同制定的企业级分布式应用程序开发规范。J2EE是市场上主流的企业级分布式应用平台的解决方案。
在熟悉新项目或者二开项目的时候,有时为了查询某个字段在哪个数据表
(1)精确查询语句如下:
SELECT * FROM information_schema.columns WHERE column_name='column_name';
(2)模糊匹配查询
SELECT * FROM information_schema.columns WHERE column_name LIKE '%column_name%';
SQLServer数据库查询带有某个字段的所有表名:
(1)精确查询语句如下:
SELECT [name] FROM [库名].[dbo].sysobjects WHERE id IN (SELECT id FROM [库名].[dbo].syscolumns WHERE name = '字段名')
(2)模糊匹配查询
SELECT [name] FROM [库名].[dbo].sysobjects WHERE id IN (SELECT id FROM [库名].[dbo].syscolumns WHERE name LIKE '%字段名%')
(1) 文本、图片等行内元素
<style>
.parent {
text-align: center;
}
</style>
<div class='parent'>
文本
</div>
<div class='parent'>
<img src=''>
</div>
(2) 定宽块级元素
<style>
.child {
width:800px;
margin: 0 auto;
}
</style>
<div class='child'>
</div>
(3) 不定宽块元素
方法1:设置内容为行内元素,同(1)
方法2:table + margin
<style>
.child {
display: table;
margin: 0 auto;
}
</style>
<div class='child'>
</div>
方法3:float + relative
<style>
.parent {
float: left;
position: relative;
left: 50%;
}
.child {
position: relative;
left: -50%;
}
</style>
方法4:absolute + transform
<style>
.parent {
position: relative;
}
.child {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
</style>
(4) 多个块级元素(单个块级元素也可用)
方法1:inline-block + text-align
<style>
.parent {
text-align: center;
}
.child {
display: inline-block;
*display: inline;
*zoom:1;
}
</style>
方法2:flex + justify-content
<style>
.parent {
display: flex;
}
.child {
justify-content: center;
}
</style>
有时发送的请求太多没有返回,为了终止之前发送的请求。也可以设置请求的超时时间
$.xhrPool = [];
$.xhrPool.abortAll = function() {
$(this).each(function(idx, jqXHR) {
jqXHR.abort();
});
$.xhrPool = [];
};
$.ajaxSetup({
beforeSend: function(jqXHR) {
$.xhrPool.push(jqXHR);
},
complete: function(jqXHR) {
var index = $.xhrPool.indexOf(jqXHR);
if (index > -1) {
$.xhrPool.splice(index, 1);
}
}
});
// Everything below this is only for the jsFiddle demo
$('#cancelBtn').click(function() {
$.xhrPool.abortAll();
});
参考:https://blog.csdn.net/fay462298322/article/details/51910565
有时发送的请求太多没有返回,为了终止之前发送的请求。也可以设置请求的超时时间
$.xhrPool = [];
$.xhrPool.abortAll = function() {
$(this).each(function(idx, jqXHR) {
jqXHR.abort();
});
$.xhrPool = [];
};
$.ajaxSetup({
beforeSend: function(jqXHR) {
$.xhrPool.push(jqXHR);
},
complete: function(jqXHR) {
var index = $.xhrPool.indexOf(jqXHR);
if (index > -1) {
$.xhrPool.splice(index, 1);
}
}
});
// Everything below this is only for the jsFiddle demo
$('#cancelBtn').click(function() {
$.xhrPool.abortAll();
});
中文名:汉字编码字符集
外文名:Chinese Internal Code Specification
GBK编码,是对GB2312编码的扩展,因此完全兼容GB2312-80标准。GBK编码依然采用双字节编码方案,其编码范围:8140-FEFE,剔除xx7F码位,共23940个码位。共收录汉字和图形符号21886个,其中汉字(包括部首和构件)21003个,图形符号883个。GBK编码支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年12月15日正式发布,这一版的GBK规范为1.0版.
UTF-8是Unicode的一种实现方式,也就是它的字节结构有特殊要求,所以我们说一个汉字的范围是0X4E00到0x9FA5,是指unicode值,至于放在utf-8的编码里去就是由三个字节来组织,所以可以看出unicode是给出一个字符的范围,定义了这个字是码值是多少,至于具体的实现方式可以有多种多样来实现。
UTF-8是一种变长字节编码方式。对于某一个字符的UTF-8编码,如果只有一个字节则其最高二进制位为0;如果是多字节,其第一个字节从最高位开始,连续的二进制位值为1的个数决定了其编码的位数,其余各字节均以10开头。UTF-8最多可用到6个字节。
如表:
1字节 0xxxxxxx
2字节 110xxxxx 10xxxxxx
3字节 1110xxxx 10xxxxxx 10xxxxxx
4字节 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
5字节 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
6字节 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
因此UTF-8中可以用来表示字符编码的实际位数最多有31位,即上表中x所表示的位。除去那些控制位(每字节开头的10等),这些x表示的位与UNICODE编码是一一对应的,位高低顺序也相同
实际将UNICODE转换为UTF-8编码时应先去除高位0,然后根据所剩编码的位数决定所需最小的UTF-8编码位数。 因此那些基本ASCII字符集中的字符(UNICODE兼容ASCII)只需要一个字节的UTF-8编码(7个二进制位)便可以表示。二者字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。
至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
比如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,而无需他们下载IE的中文语言支持包。 所以,对于英文比较多的论坛 ,使用GBK则每个字符占用2个字节,而使用UTF-8英文却只占一个字节。
UTF8是国际编码,它的通用性比较好,外国人也可以浏览论坛,GBK是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBK大。
UTF-8是一种国际化标准的文字编码,我们已知Windows系统程序已经将最初的UTF-8转向Unicode,而GBK的存在是为了中国国情而创造的,不过GBK也将伴随着中文字符的一直流传下去。
GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。
至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。对于英文字符较多的论坛则用UTF-8节省空间。
UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示。
UTF-8版本虽然具有良好的国际兼容性,但中文需要比GBK/BIG5版本多占用50%的数据库存储空间,因此并非推荐使用,仅供对国际兼容性有特殊要求的用户使用。
总结:
GBK就是在保存你的帖子的时候,一个汉字占用两个字节。外国人看会出现乱码,此为我中华为自己汉字编码而形成之解决方案。
UTF8就是在保存你的帖子的时候,一个汉字占用3个字节。但是外国人看的话不会乱码,此为西人为了解决多字节字符而形成之解决方案。
ASCII(ISO-8859-1)是鼻祖,最简单的方式,字节高位为0。
GB2312、GBK、GB18030,这几个是中文编码方式,并向下兼容。GB2312包含7000多个汉字和字符,GBK包含21000多个,GB18030更厉害,到了27000多个。他们都是用2个字节来表示一个汉字。跟ascii是怎么区分的呢?如果高字节的高位为1(也就是高字节大于127),就表示是汉字,低字节并无明显特征。
Unicode是统一编码,它建立了一个全世界统一的码表。世界上的所有文字,在这张码表中都是唯一的。
UTF-8是Unicode的一种存储、传输方式。它将整个Unicode码表分为3部分。
0000 - 007F 这部分是最初的ascii部分,按原始的存储方式,即0xxxxxxx。
0080 - 07FF 这部分存储为110xxxxx 10xxxxxx。
0800 - FFFF 这部分存储为1110xxxx 10xxxxxx 10xxxxxx。
因此,一个汉字究竟被存储为什么,就需要:先查unicode码表,然后根据在码表的位置进行计算。例如:“电”字,在码表中是3575,计算成utf8就是E794B5,而在GB2312的码表中为B5E7。
UTF-8的好处:兼容ASCII,存储英文文件都是单字节,文件小。当然,当以存中文为主时就变成了3字节编码了,比GB系列还大!如何标明一个文件是utf8格式呢?这个标记是可选的:EF BB BF。比如,用windows自带的记事本创建一个utf8格式的文件,就会加上这个标记。但是,如果用ultraedit创建utf8文件,并不会加上这个标记。这个标记有个术语,叫做BOM(Byte Order Mark)。不带BOM的utf8文件和GB2312文件怎么区分呢?我也不知道。唯一能想到的办法就是:先用一种试,如果出现乱码,就用另一种再试。
简言而知,GBK编码方式的编码是以中国国情而创造的,在国际上的兼容性不好,这也是为什么大多数的网页是使用UTF-8编码而不是GBK。
版权声明:本文为CSDN博主「江月未来」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_52072846/article/details/121617621
$configuration = Configuration::forSymmetricSigner(
// You may use any HMAC variations (256, 384, and 512)
new Sha256(),
// replace the value below with a key of your own!
InMemory::base64Encoded('YWFhc0pOU0RLSkJITktKU0RiamhrMTJiM2Joa211')
// You may also override the JOSE encoder/decoder if needed by providing extra arguments here
);
使用jwt生成秘密的时候,报错Key provided is shorter than 256 bits, only 240 bits provided
使用InMemory::base64Encoded
时密钥少了四位字符,导致生成的密钥长度只有240
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (\node_modules\webpack\lib\NormalModule.js:417:16)
at handleParseError (\node_modules\webpack\lib\NormalModule.js:471:10)
at \node_modules\webpack\lib\NormalModule.js:503:5
at \node_modules\webpack\lib\NormalModule.js:358:12
at \node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at iterateNormalLoaders (\node_modules\loader-runner\lib\LoaderRunner.js:221:10)
at \node_modules\loader-runner\lib\LoaderRunner.js:236:3
at runSyncOrAsync (\node_modules\loader-runner\lib\LoaderRunner.js:130:11)
at iterateNormalLoaders (\node_modules\loader-runner\lib\LoaderRunner.js:232:2)
at Array.<anonymous> (\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
at Storage.finished (\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
at \node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
node:internal/crypto/hash:71
this[kHandle] = new _Hash(algorithm, xofLen);
^
Error: error:0308010C:digital envelope routines::unsupported
at new Hash (node:internal/crypto/hash:71:19)
at Object.createHash (node:crypto:133:10)
at module.exports (\node_modules\webpack\lib\util\createHash.js:135:53)
at NormalModule._initBuildHash (\node_modules\webpack\lib\NormalModule.js:417:16)
at handleParseError (\node_modules\webpack\lib\NormalModule.js:471:10)
at \node_modules\webpack\lib\NormalModule.js:503:5
at \node_modules\webpack\lib\NormalModule.js:358:12
at \node_modules\loader-runner\lib\LoaderRunner.js:373:3
at iterateNormalLoaders (\node_modules\loader-runner\lib\LoaderRunner.js:214:10)
at Array.<anonymous> (\node_modules\loader-runner\lib\LoaderRunner.js:205:4)
at Storage.finished (\node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:55:16)
at \node_modules\enhanced-resolve\lib\CachedInputFileSystem.js:91:9
at \node_modules\graceful-fs\graceful-fs.js:123:16
at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read_file_context:68:3) {
opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ],
library: 'digital envelope routines',
reason: 'unsupported',
code: 'ERR_OSSL_EVP_UNSUPPORTED'
}
Node.js v18.11.0
框架:vue-element-admin
nodejs版本:18.11
高版本的node.js由于一些严格的限制导致
卸载高版本nodejs,安装16版本的nodejs
一.通过命令配置淘宝镜像
切换为淘宝镜像命令
npm config set registry https://registry.npm.taobao.org
切换原始镜像
npm config set registry https://registry.npmjs.org
查看当前使用的镜像地址命令
npm config get registry
#https://registry.npm.taobao.org
nodjs官网是:https://nodejs.org/en/download/, 但是国内下载可能慢
可以使用国内镜像网址:http://nodejs.cn/download/
版本兼容性问题
vue 只兼容ie8以上版本;
ie8及以下版本不支持Object.defineProperty方法,但这个是vue实现响应式的所必须的,所以从Vue的源码来看根本就无法支持IE8
2、IE 不兼容 axios的promiss对象;
在项目中使用了ES6 promise对象
安装:npm install es6-promise;
3、IE 不兼容es6语法;
IE不支持ES6语法
安装:npm install —save babel-polyfill;
配置:module.exports = { entry: [“babel-polyfill”, “./src/main.js”] };
main.js中配置:import ‘babel-polyfill’ //放在最顶部,确保全面加载。
http网络请求(跨域)
http 组件使用 axios,xios 对 ie9 版本以下跨域由前端项目打包的解决方案 webpack 代理webpack 的 devServer.proxy的功能实现。
devServer: {
public: "",
// 代理
proxy: {
"/api": {
target: process.env.VUE_APP_USE_IP,
changeOrigin: true,
},
},
},
IE浏览器下功能无效
1、dom.click()方法无点击事件进行下载ie认为是漏洞,判断下是不是IE浏览器,然后特殊处理:
let blob = 'xxx' // blob对象
if (!!window.ActiveXObject || 'ActiveXObject' in window) {
window.navigator.msSaveBlob(blob, imgText + '.png')
} else {
let a = document.createElement('a')
a.setAttribute('href', URL.createObjectURL(blob))
a.clock()
}
:IE11 中app.js报语法错误或者缺少‘:’ ‘等
是因为文件里面还有ES6语法,需要转换,修改build/webpack.base.conf.js文件
{
test:/.js$/,
loader:"babel-loader",
include:[
//把这个⽂件添加进去让他进⾏babel编译
resolve(
“node_modules/_vue-particles@1.0.9@vue-particles/src/vue-particles”
),
resolve(“src”),
resolve(“test”),
}
ie11打不开vue项⽬,报错 “对象不⽀持“addEventListener”属性或⽅法
在head标签中加⼊< meta http-equiv=“X-UA-Compatible” content=“IE=EDGE”/>这个属性主要是设置浏览器优先使⽤什么模式来渲染页⾯的。代码IE=edge告诉IE使⽤最新的引擎渲染⽹页,这个在需要兼容IE浏览器的情况下都可以加上这句话。
4、:IE 11 flex:1;样式会出错,跟实际想要的效果不同:
因为IE11 flex:1;会识别为flex:1 1 0;⽽其他浏览器是flex:1 1 auto;
所以改为width:100%;flex:1 1 auto; 或width:100%;flex-grow:1
4、elementui框架在ie9浏览器下的兼容性问题
1、el-select组件内在IE9中会出现下图样式错乱,解决办法:
// select框固定下拉箭头兼容ie9
.el-select .el-input .el-input__suffix .el-icon-arrow-up{
-ms-transform: rotate(180deg)\0;
}
2、IE9中elementui的message提示框会出现样式错乱,解决方法:
// 兼容ie9,使提示框显示正常, \0是让这条代码只在IE9中生效;
.el-message .el-message__content{
display: inline-block\0;
}
3、IE9中el-cascader组件下拉没有水平对齐,解决方法:
// ie9 el-cascader兼容性问题
.el-cascader-menulist .el-cascader-node .el-cascader-nodepostfix,
.el-cascader-menulist .is-active .el-cascader-nodeprefix{
top: 10px\0;
}
4、IE9日期组件样式问题解决方法:
/ 解决IE9 日期组件样式问题 /
.demonstration, .el-date-editor—datetimerange {
display: inline-block !important;
vertical-align: middle;
line-height: 24px;
}
5、IE9的弹性布局flex都会失效,凡是在IE9中使用flex的都需要改成float浮动布局或者使用display: inline-block;属性来纠正。
6、如果要想使某一行代码在IE9中生效那么只需在代码后面添加 \0 ,例如: float: left\0;
————————————————
版权声明:本文为CSDN博主「赵晓霞」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42459543/article/details/124987901
使用Navicat导入数据表,报错:Incorrect datetime value: ‘0000-00-00 00:00:00’ for column ‘update_time’,
因为update_time字段是datetime/timestemp类型,那么它的值不能为 ‘0000-00-00 00:00:00’
具体出现这个问题的原因就是MySQL的配置不一致导致的。
编辑配置文件:
[mysqld]
sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
重启数据库
ssh-copy-id -i ~/.ssh/id_rsa.pub 172.29.0.*
PasswordAuthentication no //修改为no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
service sshd restart
场景:PHP系统有时候上传文件会报错,可能是php配置限制了上传大小
1、memory_limit内存设置限制
2、max_execution_time程序执行时间限制
3、post_max_size最大POST数据限制
4、upload_max_filesize最大上传文件大小限制
场景:支付场景情况下,需要对参数进行加密
问题:使用RSA对参数进行加密时,报错:
openssl_sign(): supplied key param cannot be coerced into a private
处理流程
1、检查是否时使用公钥
2、检查公钥是否一行显示,公钥文件通过都是多行显示
3、不需要填写文件头和尾,代码会对公钥进行拼接
4、检查代码里面的拼接是否正常,有的代码凭借的是
----BEGIN PRIVATE KEY----
实际上是
----BEGIN RSA PRIVATE KEY----
为了记录支付回调的信息,以便测试,可以再回调接口,添加记录,把回调信息记录下来,判断回调是否正常
if(strtolower($_SERVER['REQUEST_METHOD']) == 'post'){} //判断是否POST提交
问题:设置captcha报错
public function captcha()
{
$captcha_data = ThinkCaptcha::create(null, true);
$captcha_id = md5(uniqid(null, true));
// 验证码10分钟有效
Cache::set($captcha_id, $captcha_data[ 'code' ], 600);
return success(0, '', [ 'id' => $captcha_id, 'img' => $captcha_data[ 'img' ] ]);
}
原因:captcha版本
解决:更新、降低captcha版本
安装
yun install openssl
打开openssl
openssl #打开
exit #退出
基础使用
genrsa -out rsa_private_key.pem 1024 #生成私钥
rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
问题出现:
composer require 包名
出现报错:
Installation failed, reverting ./composer.json to its original content.
可能原因:
你安装的包依赖包A2.0,但由于另外一个包依赖包 A1.0,导致冲突。
解决:先移除包,再安装
composer remove 包名
场景:
composer版本对应的php版本过低,导致composer安装失败
解决:
1、删除原来的php版本
rm -f /usr/bin/php
2、关联新版本到跟命令
ln -sf php安装路径/bin/php /usr/bin/php
ln -s 源文件 目标地址 #建立软连接
ln 源文件 目标地址 #建立硬连接
问题分析:libonig.so.2不存在
可能原因:php版本升级、切换或者库名不对
解决:
1、检查库是否不存在、有可能存在其他版本的库文件
ll /usr/lib64/
2、安装库
yum install oniguruma - y
yum install libsodium -y
3、查看库是否下载
ll /usr/lib64/
4、如果存在其他版本的库文件
ln -s /usr/lib64/实际有的文件 /usr/lib64/libonig.so.2
composer require 包名 版本号
原因:php版本过高7.3,且代码中有相应的代码不支持7.3版本
解决:使用小于7.3版本的php
a标签添加download即可下载
<a href="下载地址" download="下载名称">名称</a>
a标签下载跨域文件
<a @click="downloadFile(fileUrl,fileName)">下载文件</a>
downloadFile(url, fileName) {
var x = new XMLHttpRequest();
x.open("GET", url, true);
x.responseType = 'blob';
x.onload=function(e) {
var url = window.URL.createObjectURL(x.response)
var a = document.createElement('a');
a.href = url
a.download = fileName;
a.click()
}
x.send();
},
原因:导入密钥为“OPENSSH密钥”,xshell仅支持“RSA密钥”
解决:
在linux服务器上执行.
id_rsa 为openssh密钥
id_rsa.pem 为rsa密钥
yum install -y putty
puttygen id_rsa -o id_rsa.ppk
puttygen id_rsa.ppk -O private-openssh -o id_rsa.pem
原因:
解决:安装fileinfo扩展
查看文件夹大小
du -sh –max-depth=1 *
zip -r 压缩文件名.zip -x "需要压缩的文件"
webshell 就是一种可以在 web 服务器上执行的后台脚本或者命令执行环境,黑客通过入侵网站上传 webshell 后获得服务器的执行操作权限,比如执行系统命令、窃取用户数据、删除 web 页面、修改主页等,其危害不言而喻。
暗链,指站点被黑客利用技术入侵,并且取得权限,经过代码的添加,实现隐藏的一个或者多个导出链接,站长以及管理员很难发现链接的存在。暗链的存在往往标志着该网站存在安全漏洞,轻则该网站会成为一些非法网站提升 seo 排名的工具,重则该漏洞会被不法分子利用攻击。
WebShellkiller 作为一款 web 后门专杀工具,不仅支持 webshell 的扫描,同时还支持暗链的扫描。这是一款融合了多重检测引擎的查杀工具。在传统正则匹配的基础上,采用模拟执行,参数动态分析监测技术、webshell 语义分析技术、暗链隐藏特征分析技术,并根据 webshell 的行为模式构建了基于机器学习的智能检测模型。传统技术与人工智能技术相结合、静态扫描和动态分析相结合,更精准地检测出 WEB 网站已知和未知的后门文件。
WebShellkiller3.3 版本在原来的基础上,优化了 webshell 检出规则,大大提高 webshell 检出率。同时支持敏感关键词的暗链检测,除了默认敏感词,用户可自行定义敏感词。
echo 1 > /proc/sys/vm/drop_caches
方法一: typeof
var arr = []
console.log(typeof arr );
方法二: instanceof
var arr = []
console.log(arr instanceof Array)
方法三: constructor
var arr = []
console.log(arr.constructor == Array)
.text{ white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }
Git错误:You asked to pull from the remote 'xxx', but did not specify a branch,
原因:没有设置默认分支
解决方法:指定分支,git pull origin master
原因:git默认对文件的长度有限制,可以通过取消限制来解决
git config --global core.longpaths true
phpstorm,无法全局搜索、编辑文件
原因:没有以项目的方式打开文件夹
Select CONCAT( 'drop table ', table_name, ';' ) FROM information_schema.tables Where table_name LIKE 'sample_%';
<td class="tbTitle" valign="top">模板内容:</td>
运行thinkphp6框架报错,错误信息:Parse error: syntax error, unexpected
问题原因:在低版本PHP中运行