配置干货

#干货

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}$

java8

--------------  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 

StripXSS

服务器端过滤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

utf8转gbk

iconv -f UTF-8 -t GBK utf8.html > gbk.html
from to

window.speechSynthesis.cancel()
window.speechSynthesis.speak=function(){}
window.speechSynthesis.pause()

gson太粗暴
gson 1.7.1里面序列化居然用的美国时间序列化,太简单粗暴了~
配置干货_第1张图片

你可能感兴趣的:(Java)