#干货
SELECT
count(1) as a
FROM
gdm.gdm_m04_ord_sum
where
dt = '2019-12-09'
and parent_sale_ord_id = sale_ord_id
dp='ACTIVE' 卡分区
中通快递的正则校验。目前中通正则为:
^((118|828|618|680|518|528|688|689|010|880|660|805|888|988|628|205|717|718|719|728|738|76[0-9]|701|757|751|768|778|779|358)[0-9]{9})$|^((5711|2008|2009|2010|1180)[0-9]{8})$|^((66|88)[0-9]{8})$|^(3[5,6,7]|4[0-9]|5[3-6]|[7|8]8)\d{10}$|^(78|63|12|64)\d{10}$|^(11|13|54|55|56|50|51|72)\d{10}$|^9\d{11}$|^2[1-9]{1}[0-9]{10}$|^2710[0-9]{11}$|^731[0-9]{11}$|^751[0-7]{1}[0-9]{10}$|^753[0-9]{11}$|^771[0-9]{11}$|^73[0-9]{12}$
-------------- before -----------------
map = new HashMap<>();
for (Strategy strategy : strategies) {
map.put(strategy.getType(), strategy);
}
-------------- after Java8 -----------------
map = strategies.stream().collect(Collectors.toMap(Strategy::getType, strategy -> strategy));
java8的收集器。
//引入模块
var fs = require("fs");
var request = require('request');
//下面是百度翻译API的函数文件和参数
var fn = require('./js-sdk/md5.js');//百度的MD5编码文件
var appid = '';//你申请的百度APIID
var key = '';//你的秘钥
var salt = (new Date).getTime();//随机数
var rename = function(src) {
// 读取目录中的所有文件/目录
fs.readdir(src, function(err, paths) {
if (err) {
throw err;
}
paths.forEach(function(path) {
//拼合路径
var _src = src + '/' + path;
//判断文件状态
fs.stat(_src, function(err, st) {
if (err) {
throw err;
}
// 判断是否为文件
if (st.isFile()) {
var query = path.split('.')[0];
// 多个query可以用\n连接 如 query='apple\norange\nbanana\npear'
var from = 'zh';//转译之前的语种
var to = 'en';//转译之后的语种
var str1 = appid + query + salt + key;
//这里的fn是我将MD5.js文件中的MD5函数暴露并引入的
var sign = fn.fn(str1);
var url = 'http://api.fanyi.baidu.com/api/trans/vip/translate?q=' + query + '&from=' + from + '&to=' + to + '&appid=' + appid + '&salt=' + salt + '&sign=' + sign;
request(encodeURI(url), function(error, response, body) {
if (!error && response.statusCode == 200) {
//将返回的数据拼合成为路径
var newPath = src + '/' + ((JSON.parse(body).trans_result[0].dst).replace(/\s+/g, "")).toLowerCase() + '.png';
//重命名
fs.rename(_src, newPath, function(err) {
if (err) throw err;
});
}
})
}
// 如果是目录则递归调用自身
else if (st.isDirectory()) {
exists(_src, rename);
}
});
});
});
var exists = function(src, callback) {
callback(src);
};
exists('./test', rename);
};
for fn in `ls /Users/sunhuaili1/test`
do
mv ${fn} ${fn}.xlsx
done
//1-引包 nodejs中文件操作主要依靠fs模块
const fs = require('fs')
//2-实现
// 1. 定义两个工具函数
// 获取指定目录路径下的所有文件名
const getFileNames = path => {
// 使用readdir获取指定目录下的所有文件名
return fs.readdirSync(path);;
}
// 根据指定字符截取文件名,返回截取后的字段
const getFileSuffix = (fileName, splitChar) => {
// 取字符第一次出现的位置
const first = fileName.indexOf(splitChar);
// 取字符最后一次出现的位置(根据需要选择)
// const first = fileName.lastIndexOf(splitChar);
const namelength = fileName.length; //取到文件名长度
return fileName.substring(first + 1, namelength); //截取获得后缀名
}
// 2. 定义目录
const dirName = `D:\\3. 生活\\3.2 文件下载\\硕鼠下载\\我的解析任务1912152356`;
// 3. 读取与改写
let files = getFileNames(dirName);
files.forEach((item, i) => {
// 这里对旧名操作获取新名
let newName = getFileSuffix(item, "-")
// 使用rename方法进行重命名
fs.rename(`${dirName}\\${item}`, `${dirName}\\${newName}`, (err) => {
if (err) throw err;
console.log('重命名完成');
});
})
修改名字
const fs = require('fs');
const path = require('path');
const url = path.join(__dirname,'/web/');
fs.readdir(url, 'utf8', (err, fileList) => {
if (err) throw err;
fileList.forEach((item,index)=>{
let length = item.split('.').length;
//获取文件后缀名
let type = '.'+ item.split('.')[length-1];
let oldName = item;
//新名称,根据需求修改名称,可以使用正则等等
let newName = index + '-' + type;
fs.rename(url+oldName,url+newName,(err)=>{
throw err;
});
})
1 const fs = require(‘fs’);
2 const path = require(‘path’);
3 const url = path.join(__dirname,’/data/’);
4 fs.readdir(url, ‘utf8’, (err, fileList) => {
5 if (err) throw err;
6 fileList.forEach((item,index)=>{
7 let oldName = item;
8 let newName = item + ‘.xls’;
9 fs.rename(url+oldName,url+newName,(err)=>{}
10 );
11 })
12 }
13 );
const fs = require('fs');
2 const path = require('path');
3 const url = path.join(__dirname,'/data/');
4 fs.readdir(url, 'utf8', (err, fileList) => {
5 if (err) throw err;
6 fileList.forEach((item,index)=>{
7 let oldName = item;
8 let newName = item + '.xls';
9 fs.renameSync(url+oldName,url+newName);
10 })
11 console.log("done!");
12 }
13 );
14
服务器端过滤XSS(Java)
分类: 存储式(盗用其他用户隐私)、反射(构造url盗取数据)、DOM的xss()
区别CSRF
Xss为客户端信任服务端,允许服务端的任何信息进行允许
CSRF则为服务端信任客户端,没有对用户信息进行校验
Xss主要集中于html标签以及js脚本,对客户端进行破坏
CSRF主要侧重于跨站,伪造获取服务端信息
出现原因
html特性决定,可以执行脚本地方太多了,比如onclick时间,html标签属性
解决原则
一个中心
不要相信任何用户的输入或者间接输入
两个操作
对输入内容进行转码
对输入内容进行过滤
实现方法
1、replacerx
for fn in `ls /Users/yangbin5/7.大促/7-icorder/original`
do
str=${fn:4:10}
datestr=$(date -r `expr ${str}` +"%Y-%m-%d %H:%M:%S")
echo " $fn --> $datestr"
done
冰洗2-1591847110020.xlsx --> 2020-06-11 11:45:10
冰洗2-1591847173777.xlsx --> 2020-06-11 11:46:13
冰洗2-1591847302348.xlsx --> 2020-06-11 11:48:22
select id,pin, state,yn,createDate
from dingdan_#t
where createDate>'2020-03-16 09:00:00' and createDate<'2020-03-20 18:00:00' and substring(sendpay,239,1) = 2
limit 100
截取小总结
excle用MID
SQL用substring
bash用${fn:开始:多少个}
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home
export M2_HOME=/Applications/IntelliJ\ IDEA.app/Contents/plugins/maven/lib/maven3
export PATH=$PATH:$JAVA_HOME/bin:$M2_HOME/bin
iconv -f UTF-8 -t GBK utf8.html > gbk.html
from to
window.speechSynthesis.cancel()
window.speechSynthesis.speak=function(){}
window.speechSynthesis.pause()