jQuery使用工具集
//jq-util.js
$.extend({
Util:{
/* 浏览器 */
browser:{
IE: !!document.all,
IE6: !!document.all && !window.XMLHttpRequest,
IE7: !!document.all && /msie 7.0/gi.test(window.navigator.appVersion),
IE8: !!document.all && /msie 8.0/gi.test(window.navigator.appVersion),
Firefox: /firefox/gi.test(window.navigator.userAgent),
Opera: /opera/gi.test(window.navigator.userAgent),
Chrome: /Chrom/gi.test(window.navigator.userAgent)
},
/*去除字符串首尾空格的方法*/
trim:function(str){
return str.trim ? str.trim():str.replace(/^\s+|\s+$/g,"");
},
/*获取地址栏参数
* key:要查询的字段,缺省返回地址栏所有数据
* */
getQueryString: function (key) {
var search=window.location.search;
if(search.length<1){
return false;
}
if(key && search.indexOf(key)<0){
return false;
}
search=search.substring(1);
search=decodeURI(search);
var searchArr=search.split("&");
var searchJSON={};
for(var i=0;i<searchArr.length;i++){
var item=searchArr[i].split("=");
searchJSON[item[0]]=item[1];
}
if(key){
return searchJSON[key];
}else {
return searchJSON;
}
},
/*获取随机数*/
getRandom:function (min,max) {
return Math.floor(Math.random() * (max-min))+min+1;
},
/*字符串截取*/
substring:function (str,length) {
if(str.length>length){
return str.substring(0,length)+"...";
}else {
return str;
}
}, /* 操作cookie*/
cookie: {
/* 设置 */
set:function (key,val,len,unit) {
if(!key || typeof val=='undefined'){
return false;
}
var cookieVal=val;
if(typeof cookieVal=='object'){
var valArr=[];
$.each(cookieVal,function (val_k,val_v) {
valArr.push(val_k+"="+val_v);
});
cookieVal=valArr.join("&");
}
var len=len || 1;
var unit=unit || "d";
var units={
"d":len*24*60*60*1000,
"h":len*60*60*1000,
"m":len*60*1000,
"s":len*1000
};
var dt = new Date();
dt.setTime(dt.getTime() + (units[unit]));
var expires = ";expires=" + dt.toGMTString();
var path=';path=/', domain='', secure='';
document.cookie=[key, '=', cookieVal, expires, path, domain, secure].join('');
},
/* 获取
* key:cookie的名称,必传参数
* name:cookie中的指定值,缺省默认返回cookie下所有值
* */
get:function (key,name) {
var cookieStr=document.cookie;
var start=cookieStr.indexOf(key+"=");
if(!key || start<0){
return false;
}
cookieStr=cookieStr.substring(start);
var end=cookieStr.indexOf(";");
if(end>=0){
cookieStr=cookieStr.substring(0,end);
}
cookieStr=cookieStr.substring(key.length+1);
cookieStr=decodeURIComponent(cookieStr);
var keyArr=cookieStr.split("&");
if(keyArr.length<2){
return keyArr[0];
}
var keyJSON={};
for(var i=0;i<keyArr.length;i++){
var item=keyArr[i].split("=");
keyJSON[item[0]]=item[1];
}
if(!name){
return keyJSON;
}else {
if(keyJSON.hasOwnProperty(name)){
return keyJSON[name];
}else {
return false;
}
}
},
/* 删除 */
del:function (key) {
this.set(key,"",-365);
}
}, /*
* window对象
*/
win: {
/*窗口跳转地址*/
href: function (url, time) {
var time = time || 0;
setTimeout(function () {
window.location.href = url;
}, time);
},
/*打开新窗口*/
open: function (url, time) {
var time = time || 0;
setTimeout(function () {
window.open(url);
}, time);
},
/*回退历史记录*/
back: function () {
window.history.back();
},
/*刷新当前页面*/
read: function (time) {
var time = time || 0;
setTimeout(function () {
window.location.reload();
}, time);
}
}, /**
* 校验
* @param {Object} key
* @param {Object} val
*/
verify:function (key,val) {
var regs={
/* 邮箱 */
"email":/^[0-9a-zA-Z_]+@[0-9a-zA-Z_]+[\.]{1}[0-9a-zA-Z]+[\.]?[0-9a-zA-Z]+$/,
/* 手机 */
"mobile":/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/,
/* 超链接 */
"url":/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i,
/* 身份证 */
"idCard":/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/,
/* 邮政编码 */
"postal":/^[1-9]\d{5}(?!\d)$/,
/* YY-MM-dd 格式日期 */
"date":/^[1-2][0-9][0-9][0-9]-[0-1]{0,1}[0-9]-[0-3]{0,1}[0-9]$/,
/* QQ */
"qq":/^[1-9][0-9]{4,9}$/,
/* 全部为数字 */
"numAll":/^\d+$/,
/* 适合的帐号 英文/数字 */
"befitName":/^[a-z0-9A-Z]+$/i,
/* 适合的密码 英文/数字/下划线 */
"befitPwd":/^[0-9a-zA-Z_]+$/,
/* 是否包含中文 */
"chinese":/[\u4e00-\u9fa5]/,
/* IP地址有效性 */
'ip':/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/
};
return regs[key].test(val);
}, /**
* 不为空
* @param {Object} val
*/
isNotEmpty: function(val){
return !this.isEmpty(val);
}, /**
* 是否为空
* @param {Object} val
*/
isEmpty: function(val){
if ((val==null || typeof(val)=="undefined")|| (typeof(val)=="string"&&val==""&&val!="undefined")){
return true;
}else{
return false;
}
}, /**
* 去除元素内所有内容 strIds:"#id1,#id2,#id3"
* @param {Object} strIds
*/
emptyHtml: function(strIds){
try{
var ids = strIds.trim(",").split(",");
$(ids).each(function(){
var obj = $(this.toString());
if(obj.length>0){
$(obj).each(function(){
$(this).html("");
});
}else{
obj.html("");
}
});
}catch(ex){
throw new Error("js方法:【emptyHtml(strIds)】,error!");
}
}, /**
* 去除元素的值 strIds:"#id1,#id2,#id3"
* @param {Object} strIds
*/
emptyValue: function(strIds){
try{
var ids = strIds.trim(",").split(",");
$(ids).each(function(){
var obj = $(this.toString());
if(obj.length>0){
$(obj).each(function(){
$(this).val("");
});
}else{
obj.val("");
}
});
}catch(ex){
throw new Error("js方法:【emptyValue(strIds)】,error!");
}
}, /**
* 去除Textarea内所有内容 strIds:"#id1,#id2,#id3"
* @param {Object} strIds
*/
emptyTextarea: function(strIds){
try{
var ids = strIds.trim(",").split(",");
$(ids).each(function(){
var obj = $(this.toString());
if(obj.length>0){
$(obj).each(function(){
$(this).empty();
$(this).val("");
});
}else{
obj.empty();
obj.val("");
}
});
}catch(ex){
throw new Error("js方法:【emptyTextarea(strIds)】,error!");
}
}, /**
* 18位身份证简单校验
* @param {Object} idCard
*/
isSimpleIdCard18: function(idCard) {
return /^(?:1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5])\d{4}(?:1[89]|20)\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}(?:\d|[xX])$/.test(idCard);
}, /**
* 15位身份证简单校验
* @param {Object} idCard
*/
isSimpleIdCard15: function(idCard) {
return /^(?:1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5])\d{4}\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\d|3[01])\d{3}$/.test(idCard);
}, /**
* 18位身份证校验码校验
* @param {Object} idCard
*/
checkIdCard18Code: function(idCard) {
var multiplier = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var idDatas = idCard.split("");
var len = 17;
var sum = 0;
for(var i = 0; i < len; i++) {
sum += idDatas[i] * multiplier[i];
}
var remainder = sum % 11;
var checkCodeArr = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
var checkCode = checkCodeArr[remainder];
return checkCode === idCard[17];
}, /**
* 18位身份证严格校验
* @param {Object} idCard
*/
isIdCard18: function(idCard) {
//先校验格式
if(this.isSimpleIdCard18(idCard)) {
//校验日期时间是否合法
var dateStr = idCard.substr(6, 8);
var dateStrNew = dateStr.replace(/(\d{4})(\d{2})(\d{2})/, "$1/$2/$3");
var dateObj = new Date(dateStrNew);
var month = dateObj.getMonth() + 1;
if(parseInt(dateStr.substr(4, 2)) === month) {
return this.checkIdCard18Code(idCard);
}
}
return false;
}, /**
* 获取最大值
* @param {Object} arr
*/
getArrayMaxValue: function(arr) {
return Math.max.apply(Math, arr);
}, /**
* 获取最小值
* @param {Object} arr
*/
getArrayMinValue: function(arr) {
return Math.min.apply(Math, arr);
}, /**
* 判断某个值是否在数组
* @param {Object} arr
* @param {Object} ele
*/
inArray: function(arr, ele) {
var len = arr.length;
for(var i = 0; i < len; i++) {
if(ele === arr[i]) {
return true;
}
}
return false;
}, /**
* 删除数组元素
* @param {Object} arr
* @param {Object} val
*/
removeArrayValue: function (arr, val) {
for(var i = 0; i < arr.length; i++) {
if(arr[i] == val) {
arr.splice(i, 1);
break;
}
}
}, /**
* obj转为url参数
* @param {Object} baseUrl
* @param {Object} obj
*/
objToUrl: function(baseUrl, obj) {
var parameters = "";
var url = "";
for(var key in obj) {
parameters += key + "=" + obj[key] + "&";
}
parameters = parameters.replace(/&$/, "");
if(/\?$/.test(baseUrl)) {
url = baseUrl + parameters;
} else {
url = baseUrl.replace(/\/?$/, '?') + parameters;
}
return url;
}, /**
* url参数转obj,若一个字段有多个值的话,返回数组
* @param {Object} url
*/
parseQueryString: function(url) {
var obj = {};
if(url) {
url = url.replace(/#[^#]*$/, "");
var index = url.indexOf("?");
if(index != -1) {
var queryStr = url.substr(index + 1);
var marchResult = null;
var regex = /(\w+)(=([^&#]+)?)?/g;
while((marchResult = regex.exec(queryStr)) != null) {
if(marchResult[1] in obj) {
var values = obj[marchResult[1]];
if(values instanceof Array) {
values.push(marchResult[2] ? (marchResult[3] ? marchResult[3] : "") : null);
obj[marchResult[1]] = values;
} else {
var arr = [];
arr.push(values);
arr.push(marchResult[2] ? (marchResult[3] ? marchResult[3] : "") : null);
obj[marchResult[1]] = arr;
}
} else {
obj[marchResult[1]] = marchResult[2] ? (marchResult[3] ? marchResult[3] : "") : null;
}
}
}
}
return obj;
}, /**
* 获取当前时间
*/
getCurrentTime: function() {
var today = new Date();
var year = today.getFullYear();
var month = today.getMonth() + 1;
var day = today.getDate();
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
var timeString = year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
return timeString;
}, /*
* 比较时间大小
* time1>time2 return 1
* time1<time2 return -1
* time1==time2 return 0
*/
compareTime: function(time1, time2) {
var d1 = time1;
var d2 = time2;
if((typeof d1) === "string") {
d1 = new Date(Date.parse(d1.replace(/-/g, "/")));
}
if((typeof d2) === "string") {
d2 = new Date(Date.parse(d2.replace(/-/g, "/")));
}
var t1 = d1.getTime();
var t2 = d2.getTime();
if(t1 === t2) {
return 0;
} else if(t1 > t2) {
return 1;
}
return -1;
}, /**
* 是否闰年
* @param {Object} year
*/
isLeapYear: function(year) {
return((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0);
}, /*
* 距离现在几天的日期:负数表示今天之前的日期,0表示今天,整数表示未来的日期
* 如-1表示昨天的日期,0表示今天,2表示后天
*/
fromToday: function(days) {
var today = new Date();
today.setDate(today.getDate() + days);
var date = today.getFullYear() + "-" + (today.getMonth() + 1) + "-" + today.getDate();
return date;
}, /**
* 日期时间格式化
* @param {Object} dateTime 需要格式化的日期时间
* @param {String} pattern 格式化的模式,如yyyy-MM-dd hh(HH):mm:ss.S a k K E D F w W z Z
*/
formt: function(dateTime, pattern) {
var date = new Date(dateTime);
if(this.isEmpty(pattern)) {
return date.toLocaleString();
}
return pattern.replace(/([a-z])\1*/ig, function(matchStr, group1) {
var replacement = "";
switch(group1) {
case 'y': //年
replacement = date.getFullYear();
break;
case 'M': //月份
var month = date.getMonth() + 1;
replacement = (month < 10 && matchStr.length >= 2) ? "0" + month : month;
break;
case 'd': //月份的天数
var days = date.getDate();
replacement = (days < 10 && matchStr.length >= 2) ? "0" + days : days;
break;
case 'k': //一天中的小时数(1-24)
var hours24 = date.getHours();
replacement = hours24;
break;
case 'H': //24小时制,一天中的小时数(0-23)
var hours24 = date.getHours();
replacement = (hours24 < 10 && matchStr.length >= 2) ? "0" + hours24 : hours24;
break;
case 'm': //小时中的分钟数
var minutes = date.getMinutes();
replacement = (minutes < 10 && matchStr.length >= 2) ? "0" + minutes : minutes;
break;
case 's': //秒
var seconds = date.getSeconds();
replacement = (seconds < 10 && matchStr.length >= 2) ? "0" + seconds : seconds;
break;
case 'S': //毫秒
var milliSeconds = date.getMilliseconds();
replacement = milliSeconds;
break;
case 'w'://一年中的第几个星期
var days = this.dayOfTheYear(date);
replacement = Math.ceil(days / 7);
break;
case 'W': //一月中的第几星期(会根据实际情况来算)
var days = date.getDate();
replacement = Math.ceil(days / 7);
break;
case 'a': //上下午标识
var hours24 = date.getHours();
replacement = hours24 < 12 ? "\u4e0a\u5348" : "\u4e0b\u5348";
break;
case 'h': //12小时制 ,am/pm 中的小时数(1-12)
var hours12 = date.getHours() % 12 || 12; //0转为12
replacement = (hours12 < 10 && matchStr.length >= 2) ? "0" + hours12 : hours12;
break;
case 'K': //和h类型
var hours12 = date.getHours() % 12;
replacement = hours12;
break;
default:
break;
}
return replacement;
});
},
/**
* 计算一个日期是当年的第几天
* @param {Object} date
*/
dayOfTheYear: function(date) {
var obj = new Date(date);
var year = obj.getFullYear();
var month = obj.getMonth(); //从0开始
var days = obj.getDate();
var daysArr = [31, (this.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
for(var i = 0; i < month; i++) {
days += daysArr[i];
}
return days;
},
/**
* 获得时区名和值
* @param {Object} dateObj
*/
getZoneNameValue: function(dateObj) {
var date = new Date(dateObj);
date = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()));
var arr = date.toString().match(/([A-Z]+)([-+]\d+:?\d+)/);
var obj = {
'name': arr[1],
'value': arr[2]
};
return obj;
}, /**
* trim去掉字符串两边的指定字符,默去空格
* @param {Object} str
* @param {Object} tag
*/
strToTrim:function(str, tag){
if (!tag) {
tag = '\\s';
}else {
if (tag == '\\') {
tag = '\\\\';
} else if (tag == ',' || tag == '|' || tag == ';') {
tag = '\\' + tag;
}else {
tag = '\\s';
}
}
eval('var reg=/(^' + tag + '+)|(' + tag + '+$)/g;');
return this.replace(reg, '');
},
/**
* 将一个字符串用给定的字符变成数组
* @param {Object} str
* @param {Object} tag
*/
strToArray:function(str, tag){
if (str.indexOf(tag) != -1) {
return str.split(tag);
}else {
if (str != '') {
return [str.toString()];
}else {
return [];
}
}
}, /**
* 只留下数字(0123456789)
* @param {Object} str
*/
strToNumber:function(str){
return str.replace(/\D/g, "");
}, /**
* 字符串截取后面加入...
*/
interceptString: function(str, len) {
if(str.length > len) {
return str.substring(0, len) + "...";
} else {
return str;
}
},
/**
* 保留中文
* @param {Object} str
*/
strToCN:function(str){
var regEx = /[^\u4e00-\u9fa5\uf900-\ufa2d]/g;
return str.replace(regEx, '');
},
/**
* 转成int
* @param {Object} str
*/
strToInt:function(str){
var temp = str.replace(/\D/g, "");
return isNaN(parseInt(temp)) ? str.toString() : parseInt(temp);
}, /**
* 是否是以XX开头
* @param {Object} str
* @param {Object} tag
*/
strStartsWith:function(str, tag){
return str.substring(0, tag.length) == tag;
}, /**
* 是否是以XX结尾
* @param {Object} str
* @param {Object} tag
*/
strEndWith: function(str, tag){
return str.substring(str.length - tag.length) == tag;
}, /**
* 将str字符串的s1字符替换为s2字符
* @param {Object} str
* @param {Object} s1
* @param {Object} s2
*/
strReplaceAll:function(str, s1, s2){
return str.replace(new RegExp(s1,"gm"),s2);
}, /**
* 进入全屏模式, 判断各种浏览器,找到正确的方法
* @param {Object} element
*/
launchFullScreen: function (element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
return true;
}, /**
* 退出全屏模式
*/
exitFullScreen: function () {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozCancelFullScreen) {
document.mozCancelFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
return false;
} }
}); jQuery.HashMap = function(param){
//定义长度
var length = 0;
//创建一个对象
var obj = new Object(); /**
* 判断Map是否为空
*/
this.isEmpty = function() {
return length == 0;
}; /**
* 判断对象中是否包含给定Key
*/
this.containsKey = function(key) {
return(key in obj);
}; /**
* 判断对象中是否包含给定的Value
*/
this.containsValue = function(value) {
for(var key in obj) {
if(obj[key] == value) {
return true;
}
}
return false;
}; /**
*向map中添加数据
*/
this.put = function(key, value) {
if(!this.containsKey(key)) {
length++;
}
obj[key] = value;
}; /**
* 根据给定的Key获得Value
*/
this.get = function(key) {
return this.containsKey(key) ? obj[key] : null;
}; /**
* 根据给定的Key删除一个值
*/
this.remove = function(key) {
if(this.containsKey(key) && (delete obj[key])) {
length--;
}
}; /**
* 获得Map中的所有Value
*/
this.values = function() {
var _values = new Array();
for(var key in obj) {
_values.push(obj[key]);
}
return _values;
}; /**
* 获得Map中的所有Key
*/
this.keySet = function() {
var _keys = new Array();
for(var key in obj) {
_keys.push(key);
}
return _keys;
}; /**
* 获得Map的长度
*/
this.size = function() {
return length;
}; /**
* 清空Map
*/
this.clear = function() {
length = 0;
obj = new Object();
}; /**
* 将HashMap转换为string的数据
*/
this.toString = function(){
$.Util.sear
}; /**
* 将HashMap转换为JSON格式的数据
*/
_map.toJson = function(){
return this[0];
};
}
jQuery使用工具集的更多相关文章
- jQuery实用工具集
插件描述:jQuery实用工具集,该插件封装了常用功能,如序列化表单值获取地址栏参数window对象操作等 此工具集包含判断浏览器,判断浏览终端,获取地址栏参数,获取随机数,数据校验等常用操作功能 引 ...
- 价值1400美元的CEH(道德黑客)认证培训课程长啥样?(3)工具集
美元的CEH(道德黑客)认证培训课程长啥样?(3)工具集 这是我收到的CEH官方发来的邮件,参加CEH认证培训原价为1424.25刀,可以给我便宜到1282刀.只有一个感觉,心在流血.站在这价值120 ...
- Apache Commons 工具集
一.Commons BeanUtils http://jakarta.apache.org/commons/beanutils/index.html 说明:针对Bean的一个工具集.由于Bean往往是 ...
- kali linux 渗透测试视频教程 第五课 社会工程学工具集
第五课 社会工程学工具集 文/玄魂 教程地址:http://edu.51cto.com/course/course_id-1887.html 目录 第五课社会工程学工具集 SET SET的社会工程 ...
- 如何判断平台工具集去做条件编译(VC++目录、预处理器定义、$(PlatformToolsetVersion))
作者:zyl910 从VS2010开始,提供了一个平台工作集(Platform ToolSet)选项用于配制vc编译版本.到了VS2012,更是因为默认平台工具集不支持WindowsXP,导致经常需要 ...
- VS平台工具集版本
参考:http://blog.csdn.net/hillseas/article/details/47373313 VS从2010之后开始支持使用之前的版本进行编译,可以在工程属性->常规中进行 ...
- Android虚拟环境的工具集Genymotion完整安装教程
Genymotion提供Android虚拟环境的工具集.相信很多Android开发者一定受够了速度慢.体验差效率及其地下的官方模拟器了.如果你没有物理机器,又不想忍受官方模拟器的折磨,Genymoti ...
- vs2010问题 error MSB8008: 指定的平台工具集(v110)未安装或无效
vs2012上的项目导入到vs2010中,编译出现 >------ 已启动生成: 项目: HelloGame.win32, 配置: Debug Win32 ------ >生成启动时间为 ...
- 基于msys2工具集,自编译gcc-6.2.0、Qt-5.6.1-1和Qt-4.8.7(有nuwen.net网站提供的脚本)
好久没更新(其实大可不要经常更新吧),一直都是用Qt4,最近想着转向Qt5了,msys2是自带Qt的,但工具链经常会更新,依赖也较多,简便才方便,做了最后一组Qt工具的更新,如题,Qt-4.8.7作为 ...
随机推荐
- C# 中的委托和事件(一)
引言 委 托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真 是太容易了,而没有 ...
- 转:linux 安装 Elasticsearch5.6.x 详细步骤以及问题解决方案
在网上有很多那种ES步骤和问题的解决 方案的,不过没有一个详细的整合,和问题的梳理:我就想着闲暇之余,来记录一下自己安装的过程以及碰到的问题和心得:有什么不对的和问题希望及时拍砖. 第一步:环境 li ...
- 转:logback的使用和logback.xml详解
一.logback的介绍 Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch.它当前分为下面下个模块: logback-core:其它两 ...
- JMeter 实用插件配置
插件下载地址:链接 观察实时TPS,TRT,多用户负载图. 将 jpgc-graphs-dist-2.0.zip 解压缩至jmeter下的lib目录下,重启jmeter Transactions pe ...
- iOS RSA加解密签名和验证
转自:http://www.jianshu.com/p/81b0b54436b8 Pre:在公司负责了一个项目,需要用到iOS RSA验证签名的功能.后台给我的仅仅是一个公钥的字符串.经过起初的一段时 ...
- zabbix4.0.1 安装部署
zabbix安装部署 目录 一.环境准备... 3 1.1.版本:... 3 1.2.部署环境... 3 二.安装部署... 3 2.1.zabbix安装... 3 2.1.1.下载zabbix的rp ...
- imagenet-vgg-verydeep-19.mat格式详解
.mat是matlab生成的文件.用matlab打开文件imagenet-vgg-verydeep-19.mat可以帮助理解其结构.matlab代码如下: a = open('D:\imagenet- ...
- CMFCPropertyGridCtrl的属性改变事件代码
//用于区分Prop, 使用SetData, GetData方法 CMFCPropertyGridProperty* pProp1 = new CMFCPropertyGridProperty(str ...
- 【JS】379- 教你玩转数组 reduce
reduce 是数组迭代器(https://jrsinclair.com/articles/2017/javascript-without-loops/)里的瑞士军刀.它强大到您可以使用它去构建大多数 ...
- SQL Server导入mdf数据库文件
方法一: 1.新建查询然后输入如下代码,点击F5键或者点击运行按钮即可 EXEC sp_attach_db @dbname = '你的数据库名', @filename1 = 'mdf文件路径(包缀名) ...