一:Date类型介绍

要创建一个日期对象,使用new操作符和Date构造函数即可:

var now = new Date();

Date.parse()方法

其中Date.parse()方法接收一个表示日期的字符串参数,然后尝试根据这个字符串返回相应日期的毫秒数。ECMA-262没有定义Date.parse()应该支持哪种日期格式,因此这个方法的行为因实现而异,而且通常是因地区而异。将地区设置为美国的浏览器通常都接受下列日期格式:

  • "月/日/年",如6/13/2004;

  • "英文月名 日,年",如May 12,2004;

  • "英文星期几 英文月名 日 年 时:分:秒 时区",如Tue May 25 2004 00:00:00 GMT+0800。

  • ISO 8601扩展格式YYYY-MM-DDTHH:mm:ss:sssZ(例如 2004-05-25T00::00:00)。只有兼容ECMAScript5的实现支持这种格式。

例如,要为2004年5月25日创建一个日期对象,可以使用下面的代码:

//Tue May 25 2004 00:00:00 GMT+0800 (中国标准时间)
var someDate = new Date(Date.parse('May 25,2004'));

如果传入Data.parse()的方法的字符串不能表示日期格式,会返回NAN。实际上,如果直接将表示日期的字符串传递给Date构造函数,也会在后台调用Date.parse()方法,例如下面的代码跟前面的是等价的。

//Tue May 25 2004 00:00:00 GMT+0800 (中国标准时间)
var someDate = new Date('May 25,2004');

这行代码将会得到与前面一行相同的日期对象。

Date.UTC()方法
Date.UTC()同样返回日期的毫秒数。但它与Date.parse()在构建值时使用的是不同的信息Date.UTC()的参数分别表示年份、基于0的月数(一月是0,二月是1,依次类推)、月中的哪一天(1到31)、小时数(0到23)、分钟、秒、毫秒数。在这些参数中只有前两个参数是必须的(年和月)。如果没有提供月中的天数,则假设天数为1;如果省略其它参数,则统统假设为0,如下例子:

//GMT时间2000年1月1日午夜零时
var y2k = new Date(Date.UTC(2000,0));
console.log(y2k); //Sat Jan 01 2000 08:00:00 GMT+0800 (中国标准时间) //GMT时间2005年5月5日下午5:55:55
var allFives = new Date(Date.UTC(2005,4,5,17,55,55));
console.log(allFives);//Fri May 06 2005 01:55:55 GMT+0800 (中国标准时间)

说明下:Greenwich Mean Time (GMT)格林尼治标准时间英国、爱尔兰、冰岛和葡萄牙属于该时区。这个时区与中国北京时间的时差是8个小时,也就是说比北京时间晚8个小时。

Date构造函数
Date构造函数会模仿Date.UTC(),但有一点不同的是,日期和时间都是基于本地时区而非GMT来创建。不过他们的参数跟Date.UTC()的参数一样。

例如:

//本地时间2000年1月1日午夜零时
var y2k = new Date(2000,0);
console.log(y2k); //Sat Jan 01 2000 00:00:00 GMT+0800 (中国标准时间) //本地时间2005年5月5日下午5:55:55
var allFives = new Date(2005,4,5,17,55,55);
console.log(allFives);//Thu May 05 2005 17:55:55 GMT+0800 (中国标准时间)

给Date构造函数传递参数常使用如下几种方式:(注:参数可以为整数; 也可以为字符串; 但格式必须正确)

  • new Date(2009,1,1); //正确

  • new Date("2009/1/1"); //正确

  • new Date("2009-1-1"); //不兼容,在谷歌下能解析,在IE浏览器9及以上结果为[date] Invalid Date,IE8及以下结果为NAN。

说明:日期对象new Date()的参数形式如下:

1)new Date("month dd,yyyy hh:mm:ss");
2)new Date("month dd,yyyy");
3)new Date(yyyy,mth,dd,hh,mm,ss);
4)new Date(yyyy,mth,dd);
5)new Date(ms);

需要注意最后一种形式,参数表示的是需要创建的时间和 GMT时间1970年1月1日之间相差的毫秒数。各种函数的含义如下:

month:用英文 表示月份名称,从January到December
mth:用整数表示月份,从0(1月)到11(12月)
dd:表示一个 月中的第几天,从1到31
yyyy:四位数表示的年份
hh:小时数,从0(午夜)到23(晚11点)
mm: 分钟数,从0到59的整数
ss:秒数,从0到59的整数
ms:毫秒数,为大于等于0的整数

例如:

new Date("January 12,2006 22:19:35");
new Date("January 12,2006");
new Date(2006,0,12,22,19,35);
new Date(2006,0,12);
new Date(1137075575000);

上面的各种创建形式都表示2006年1月12日这一天。

Date.now()方法
ES5添加了Date.now()方法,返回表示这个方法时的日期和时间的毫秒数。这个方法简化了使用Date对象分析代码的工作,例如:

//取得开始时间
var start = Date.now(); //调用函数
dosomething(); //取得结束时间
var stop = Date.now(),
result = stop - start;
console.log(start,stop,result); //1494292306763 1494292306768 5 function dosomething(){
console.log('打印结果');
}

支持Date.now()方法的浏览器包括IE9+,FireFox3+,Safari3+,Opera10.5+和Chrome。在不支持的其它浏览器,使用+操作符把Date对象转成字符串,也可以达到相同的目的。

//取得开始时间
var start = +new Date(); //调用函数
dosomething(); //取得结束时间
var stop = +new Date(),
result = stop - start;
console.log(start,stop,result); //1494292306763 1494292306768 5 function dosomething(){
console.log('打印结果');
}

那么就出来这么一个例子,JavaScript 获取当前毫秒时间戳有以下几种方法:

console.log(Date.parse(new Date()));    //结果:1494301186000//不推荐; 毫秒改成了000显示
console.log((new Date()).valueOf()); //结果:1494301186175
console.log(new Date().getTime()); //结果:1494301186175
console.log(Date.now()); //结果:1494301186175
console.log(+new Date()); //结果:1494301186175

继承的方法

与其它引用类型一样,Date类型也重写了toLocaleString()toString()valueOf()方法。

其中toLocaleString()toString()在显示日期和时间没有什么价值;而valueOf()方法不是返回的字符串,而是返回日期的毫秒表示。因此可以方便使用比较操作符(大于或小于)来比较日期值。如下面的例子:

var date1 = new Date(2007,0,1);
var date2 = new Date(2007,1,1);
console.log(date1 < date2); //true
console.log(date1 > date2); //false

日期格式化方法

Date类型还有一些专门用于将日期格式化为字符串的方法,如下:

toDateString()——以特定于实现的格式显示星期几、月、日和年;

toTimeString()——以特定于实现的格式显示时、分、秒和时区;

toLocaleDateString()——以特定与地区的格式显示星期几、月、日和年;

toLocaleTimeString()——以特定于实现的格式显示时、分、秒;

toUTCString()——以特定于实现的格式完整的UTC日期。

与toLocaleString()和toString()方法一样,以上这些字符串格式的方法输出也是因浏览器而异的。因此没有哪一个方法能够用来在用户界面上显示一致的日期信息。

日期/时间组件方法

以下红色标记为常用:

Date() 返回当日的日期和时间。
getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
setTime() 以毫秒设置 Date 对象。
setUTCDate() 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。
setUTCMonth() 根据世界时设置 Date 对象中的月份 (0 ~ 11)。
setUTCFullYear() 根据世界时设置 Date 对象中的年份(四位数字)。
setUTCHours() 根据世界时设置 Date 对象中的小时 (0 ~ 23)。
setUTCMinutes() 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。
setUTCSeconds() 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。
setUTCMilliseconds() 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。

调用方式:

var myDate = new Date();
myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月) // 所以获取当前月份是myDate.getMonth()+1;
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)

简单常用示例

1.获取当前时间

function getNowTime() {
return new Date();
}

2.时间与天数相加

function getTimeAddDays(time, days) {
return new Date(time.getTime() + days * 24 * 60 * 60 * 1000);
}

3.获取并格式化日期:年-月-日

function getFormatDate(time) {
return time.getFullYear() + "-" + (time.getMonth() + 1) + "-" + time.getDate();
}

4.字符串转换为日期,字符串格式:2011-11-20

function convertToDate(strings) {
return new Date(Date.parse(strings.replace(/-/g, "/")));
}

或者

function convertToDate(strings) {
return new Date(strings.replace(/-/g, "/"));
}

5.获取并格式化星期

// 计算系统当前是星期几
var str = "今天是星期" + "日一二三四五六".charat(new Date().getDay());

可查看JS计算系统当前日期是星期几的几种方法

6.时间比较

function compareTime(time1, time2) {
return time1.getTime() - time2.getTime();
}

7.计算两个日期之间相隔的天数

function getDays(time1, tiem2){
var day = 24*60*60*1000;
return (time1.getTime() - time2.getTime())/day;
}

扩展示例

1.JS判断某年某月有多少天

JavaScript里面的new Date("xxxx/xx/xx")这个日期的构造方法有一个妙处,当你传入的是"xxxx/xx/0"(0号)的话,得到的日期是"xx"月的前一个月的最后一天("xx"月的最大取值是69,题外话),如果传入"1999/13/0",会得到"1998/12/31"。而且最大的好处是当你传 入"xxxx/3/0",会得到xxxx年2月的最后一天,它会自动判断当年是否是闰年来返回28或29,不用自己判断,太方便了!!所以,我们想得到选 择年选择月有多少天的话,只需要

var d=new Date("选择年/选择月+1/0");alert(d.getDate());

下面是使用Javascript编写的获取某年某月有多少天的getDaysInOneMonth(year, month)方法:

function getDaysInOneMonth(year, month){
month = parseInt(month,10)+1;
var d= new Date(year+"/"+month+"/0");
return d.getDate();
}

Chrome浏览器(谷歌浏览器)对这个特性不支持,得到的结果是NAN。兼容性问题啊!其原因就是非标准日期格式。

改成如下的格式就OK:

function getDaysInMonth(year,month){
var month = parseInt(month,10);
var temp = new Date(year,month,0);
return temp.getDate();
}
console.log(getDaysInMonth(2017,2)); //28

2.js获取某年某月的哪些天是周六和周日

<div id="text"></div>
<script type="text/javascript">
function time(y,m){
var tempTime = new Date(y,m,0);
var time = new Date();
var saturday = new Array();
var sunday = new Array();
for(var i=1;i<=tempTime.getDate();i++){
var ss = time.setFullYear(y,m-1,i);
var day = time.getDay();
if(day == 6){
saturday.push(i);
}else if(day == 0){
sunday.push(i);
}
}
var text = y+"年"+m+"月份"+"<br />"
+"周六:"+saturday.toString()+"<br />"
+"周日:"+sunday.toString();
document.getElementById("text").innerHTML = text;
} time(2017,2);
</script>

3.使用JavaScript生成一个倒数7天的数组

描述:

比如今天是10月1号,生成的数组是["9月25号","9月26号","9月27号","9月28号","9月29号","9月30号","10月1号"]。这个难点就是需要判断这个月份(可能还需要上一个月份)是30天还是31天,而且还有瑞年的2月28天或者29天。

方法一:
不需要那么复杂,在js中非常简单,因为js的date对象是可以参与数学运算的!!!看下面的代码:

var now = new Date('2012/3/2 12:00:00');
var s = '';
var i = 0;
while (i < 7) {
s += now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate() + '\n'; // 这个是关键!!!减去一天的毫秒数效果就是把日期往前推一天
now = new Date(now - 24 * 60 * 60 * 1000);
i++;
}
console.log(s);

结果:

2012/3/2
2012/3/1
2012/2/29
2012/2/28
2012/2/27
2012/2/26
2012/2/25

方法二:
根据当前系统时间,来计算这个倒数7天的数组:

var now = new Date();
var s = '';
var i = 0;
while (i < 7) {
s += now.getFullYear() + '/' + (now.getMonth() + 1) + '/' + now.getDate() + '\n'; // 这个是关键!!!减去一天的毫秒数效果就是把日期往前推一天
now = new Date(now - 24 * 60 * 60 * 1000);
i++;
}
console.log(s);

结果:

2017/6/2
2017/6/1
2017/5/31
2017/5/30
2017/5/29
2017/5/28
2017/5/27

方法三:
用Date 的 setDate()方法

var today = new Date();
var curday = today.getFullYear() +"/" + Number(today.getMonth() + 1) +"/"+ today.getDate(); //2017/11/9
var dates = [curday];
for (var i = 1; i < 7; i++) {
var d = new Date(today);
d.setDate(d.getDate() - i);
var ss = d.getFullYear() +"/" + Number(d.getMonth() + 1) +"/"+ d.getDate();
dates.unshift(ss);
}
console.log(dates);

结果:

["2017/11/3", "2017/11/4", "2017/11/5", "2017/11/6", "2017/11/7", "2017/11/8", "2017/11/9"]

注:setDate() 方法用于设置一个月的某一天。
getDate() 方法可返回月份的某一天。
unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。

4.js获取上一个月、下一个月格式为yyyy-mm-dd的日期

function GetMonthFun(){}

//date的日期格式为 yyyyy-mm-dd
GetMonthFun.prototype.getPrevMonth = function(date){
var arr = date.split('-');
var year = arr[0]; //获取当前日期的年份
var month = arr[1]; //获取当前日期的月份
var day = arr[2]; //获取当前日期的日
var days = new Date(year, month, 0);
days = days.getDate(); //获取当前日期中月的天数
var year2 = year;
var month2 = parseInt(month) - 1;
if (month2 == 0) {
year2 = parseInt(year2) - 1;
month2 = 12;
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
}
var t2 = year2 + '-' + month2 + '-' + day2;
return t2;
} //date的日期格式为 yyyyy-mm-dd
GetMonthFun.prototype.getNextMonth = function(date){
var arr = date.split('-');
var year = arr[0]; //获取当前日期的年份
var month = arr[1]; //获取当前日期的月份
var day = arr[2]; //获取当前日期的日
var days = new Date(year, month, 0);
days = days.getDate(); //获取当前日期中的月的天数
var year2 = year;
var month2 = parseInt(month) + 1;
if (month2 == 13) {
year2 = parseInt(year2) + 1;
month2 = 1;
}
var day2 = day;
var days2 = new Date(year2, month2, 0);
days2 = days2.getDate();
if (day2 > days2) {
day2 = days2;
}
if (month2 < 10) {
month2 = '0' + month2;
} var t2 = year2 + '-' + month2 + '-' + day2;
return t2;
} var dateObj = new GetMonthFun();
console.log(dateObj.getPrevMonth('2014-01-25')); //2013-12-25
console.log(dateObj.getNextMonth('2014-10-31')); //2014-11-30

5.判断一组日期是否是连续的

参考文章地址:http://www.cnblogs.com/52cik/p/consecutive-dates.html

如题所示,给定相同格式的5个日期,怎样判断是否是连续的5天?

let days = [
'2016-02-28',
'2016-02-29', // 闰月
'2016-03-01', // 跨月
'2016-03-02',
'2016-03-03',
] // 先排序,然后转时间戳
let _days = days.sort().map((d, i) => {
let dt = new Date(d)
dt.setDate(dt.getDate() + 4 - i) // 处理为相同日期 return +dt
}) // 比较时间戳是否一致
console.log(
_days[0] == _days[1] &&
_days[0] == _days[2] &&
_days[0] == _days[3] &&
_days[0] == _days[4]
)

上述代码还是有点缺陷的,因为时分秒没有处理,如果有时分秒,也要先抹去。

let days = [
'2016-02-28 12:00:00',
'2016-02-29 12:00:01', // 闰月
'2016-03-01 12:00:02', // 跨月
'2016-03-02 12:00:03',
'2016-03-03 12:00:04',
'2016-03-04 12:00:04',
] console.log(continueDays(days)) function continueDays(arr_days) {
// 先排序,然后转时间戳
let days = arr_days.sort().map((d, i) => {
let dt = new Date(d)
dt.setDate(dt.getDate() + 4 - i) // 处理为相同日期 // 抹去 时 分 秒 毫秒
dt.setHours(0)
dt.setMinutes(0)
dt.setSeconds(0)
dt.setMilliseconds(0) return +dt
}) let ret = true days.forEach(d => {
if (days[0] !== d) {
ret = false
}
}) return ret
}

这个函数只是改动了2个地方,抹去 时 分 秒 毫秒循环比较,其他都一样。

6.Date format(日期格式化)

方法一:

// 对Date的扩展,将 Date 转化为指定格式的String
// 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.Format = function (fmt) {
var o = {
"M+": this.getMonth() + 1, //月份
"d+": this.getDate(), //日
"H+": this.getHours(), //小时
"m+": this.getMinutes(), //分
"s+": this.getSeconds(), //秒
"q+": Math.floor((this.getMonth() + 3) / 3), //季度
"S": this.getMilliseconds() //毫秒
};
if (/(y+)/.test(fmt)){
fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
}
for (var k in o){
if (new RegExp("(" + k + ")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
}
}
return fmt;
}

调用方式:

var time1 = new Date().Format("yyyy-MM-dd");
var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss");

方法二:

/** * 对Date的扩展,将 Date 转化为指定格式的String * 月(M)、日(d)、12小时(h)、24小时(H)、分(m)、秒(s)、周(E)、季度(q)
可以用 1-2 个占位符 * 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
* eg:
* (new Date()).pattern("yyyy-MM-dd hh:mm:ss.S")==> 2006-07-02 08:09:04.423
* (new Date()).pattern("yyyy-MM-dd E HH:mm:ss") ==> 2009-03-10 二 20:09:04
* (new Date()).pattern("yyyy-MM-dd EE hh:mm:ss") ==> 2009-03-10 周二 08:09:04
* (new Date()).pattern("yyyy-MM-dd EEE hh:mm:ss") ==> 2009-03-10 星期二 08:09:04
* (new Date()).pattern("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
*/
Date.prototype.pattern=function(fmt) {
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours()%12 == 0 ? 12 : this.getHours()%12, //小时
"H+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
}
if(/(E+)/.test(fmt)){
fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "星期" : "周") : "") + "日一二三四五六".charAt(this.getDay()));
}
for(var k in o){
if(new RegExp("("+ k +")").test(fmt)){
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
}
}
return fmt;
}

调用方式:

var date = new Date();
console.log(date.pattern("yyyy-MM-dd EEE hh:mm:ss")); //2017-06-09 星期五 10:16:12
console.log(date.pattern("yyyy-MM-dd EE hh:mm:ss")); //2017-06-09 周五 10:16:12
console.log(date.pattern("yyyy-MM-dd E hh:mm:ss")); //2017-06-09 五 10:16:12

JS日期Date详解与实例扩展的更多相关文章

  1. js new date详解

    创建一个日期对象: var objDate=new Date([arguments list]); var ini_date=new Date(2014,7,0); //是代表7月最后一天 ,也就是2 ...

  2. 《Node.js开发实战详解》学习笔记

    <Node.js开发实战详解>学习笔记 ——持续更新中 一.NodeJS设计模式 1 . 单例模式 顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直 ...

  3. httpd配置文件详解及实例

    httpd配置文件详解及实例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.http协议的组成 http协议是C/S架构:我们可以把浏览器(如:IE,Firefox,Safar ...

  4. JS类型转换规则详解

    JS类型转换规则详解 一.总结 一句话总结:JS强制类型转换中的类型名强制类型转换和其它语言不同,是类型类的构造方法,Number(mix) 一句话总结(JS类型本质):因为js是弱类型语言,所以它相 ...

  5. XML参考 :XmlReader 详解、实例

    XML参考 :XmlReader 详解.实例-- 详解 转:http://www.cnblogs.com/Dlonghow/archive/2008/07/28/1252191.html XML参考 ...

  6. Protocol Buffer技术详解(Java实例)

    Protocol Buffer技术详解(Java实例) 该篇Blog和上一篇(C++实例)基本相同,只是面向于我们团队中的Java工程师,毕竟我们项目的前端部分是基于Android开发的,而且我们研发 ...

  7. Java学习-007-Log4J 日志记录配置文件详解及实例源代码

    此文主要讲述在初学 Java 时,常用的 Log4J 日志记录配置文件详解及实例源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源代码测试通过日期为:20 ...

  8. C语言操作WINDOWS系统存储区数字证书相关函数详解及实例

     C语言操作WINDOWS系统存储区数字证书相关函数详解及实例 以下代码使用C++实现遍历存储区证书及使用UI选择一个证书 --使用CertOpenSystemStore打开证书存储区. --在循环中 ...

  9. log4j.properties配置详解与实例

    log4j.properties配置详解与实例 第一步:加入log4j-1.x.x.jar到lib下. 第二步:在工程的src下下建立log4j.properties.内容如下: #OFF,syste ...

随机推荐

  1. 怎样提供一个好的移动API接口服务/从零到一[开发篇]

    引语:现在互联网那么热,你手里没几个APP都不好意思跟别人打招呼!但是,难道APP就是全能的神吗?答案是否定的,除了优雅的APP前端展示,其实核心还是服务器端.数据的保存.查询.消息的推送,无不是在服 ...

  2. 【Spark调优】:如果实在要shuffle,使用map侧预聚合的算子

    因业务上的需要,无可避免的一些运算一定要使用shuffle操作,无法用map类的算子来替代,那么尽量使用可以map侧预聚合的算子. map侧预聚合,是指在每个节点本地对相同的key进行一次聚合操作,类 ...

  3. 解决SpringBoot jar包太大的问题

    转载 2017年09月18日 09:21:53 577 SpringBoot的web应用一般都添加了spring-boot-maven-plugin插件. Maven xml代码   <buil ...

  4. 人生苦短之---认识Python

    认识 Python 人生苦短,我用 Python —— Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...

  5. HttpClient和HttpURLConnection的使用和区别(下)

    转自来自点击打开链接 接着上一篇,我们继续来分析HttpURLConnection的使用,以及两者的共同点和区别. 目录 用法 HttpURLConnection 区别 引用资料 用法 HttpURL ...

  6. GDB查看内存(x 命令)

    gdb查看内存命令 首先使用gdb [YourFileName].c进入gdb界面 使用examine命令,字母缩写为x查看内存地址的值.x命令语法 x/[number][format] <ad ...

  7. 个人总结的一个中高级Java开发工程师或架构师需要掌握哪几点!

    今天,我来唠叨几句~~ 知识改变命运,对于Java程序员来说,技术不断更新,只有及时充电,才能不被市场淘汰.今天为大家分享Java程序员学习的6个小技巧. 1.一定要看书 现在学习Java变得比以前容 ...

  8. (转)Linux开启路由转发功能

    原文:https://www.linuxidc.com/Linux/2016-12/138661.htm 标记一下,今天想让一台Red Hat Enterprise Linux 7开通iptables ...

  9. Hadoop项目实战-用户行为分析之分析与设计

    1.概述 本课程的视频教程地址:<用户行为分析之分析与设计> 下面开始本教程的学习,本教程以用户行为分析案例为基础,带着大家对项目的各个指标做详细的分析,对项目的整体设计做合理的规划,让大 ...

  10. python虚拟环境 | virtualenv 的简单使用 (图文)

    一.创建virtualenv虚拟环境 mkvirtualenv -p 版本号 虚拟名 mkvirtualenv -p python3 env_1 python3:版本号 env_1: 虚拟环境名称 创 ...