import java.sql.Timestamp;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

import java.util.HashMap;

import java.util.Map;

import org.apache.commons.lang.time.DateUtils;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import com.hurong.core.Constants;

public class DateUtil {

private static final Log logger = LogFactory.getLog(DateUtil.class);

/**

* 设置当前时间为当天的最初时间(即00时00分00秒)

*

* @param cal

* @return

*/

public static Calendar setStartDay(Calendar cal) {

cal.set(Calendar.HOUR_OF_DAY, 0);

cal.set(Calendar.MINUTE, 0);

cal.set(Calendar.SECOND, 0);

return cal;

}

public static Calendar setEndDay(Calendar cal) {

cal.set(Calendar.HOUR_OF_DAY, 23);

cal.set(Calendar.MINUTE, 59);

cal.set(Calendar.SECOND, 59);

return cal;

}

/**

* 把源日历的年月日设置到目标日历对象中

* @param destCal

* @param sourceCal

*/

public static void copyYearMonthDay(Calendar destCal,Calendar sourceCal){

destCal.set(Calendar.YEAR, sourceCal.get(Calendar.YEAR));

destCal.set(Calendar.MONTH, sourceCal.get(Calendar.MONTH));

destCal.set(Calendar.DAY_OF_MONTH, sourceCal.get(Calendar.DAY_OF_MONTH));

}

/**

* 格式化日期为

*

* @return

*/

public static String formatEnDate(Date date) {

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss a");

return sdf.format(date).replaceAll("上午", "AM").replaceAll("下午", "PM");

}

public static Date parseDate(String dateString) {

Date date = null;

try {

date = DateUtils.parseDate(dateString, new String[]{Constants.DATE_FORMAT_FULL,Constants.DATE_FORMAT_YMD});

} catch (Exception ex) {

logger.error("Pase the Date(" + dateString + ") occur errors:"

+ ex.getMessage());

}

return date;

}

public static String getDateAndTime() {

Calendar calendar = Calendar.getInstance();

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

return sdf.format(calendar.getTime());

}

public static String getYearAndMonth(){

Calendar calendar=Calendar.getInstance();

SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMM");

return simpleDateFormat.format(calendar.getTime());

}

public final static Timestamp stringToTS(String time) {

SimpleDateFormat sf =  new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Timestamp ts = null;

try {

ts = new Timestamp(sf.parse(time).getTime());

} catch (ParseException e) {

e.printStackTrace();

}

return ts ;

}

public final static Timestamp stringToTsDate(String time){

SimpleDateFormat sf =  new SimpleDateFormat("yyyy-MM-dd");

Timestamp ts = null;

try {

ts = new Timestamp(sf.parse(time).getTime());

} catch (ParseException e) {

e.printStackTrace();

}

return ts ;

}

/**

* @function 得到现在的时间     yyyy-MM-dd HH:mm:ss

*

* @auther     jiangwanyu

*

* @return String

*/

public final static String getNowDateTime(){

Date nowDate = new Date();

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

return sf.format(nowDate);

}

/**

* @function 自定义 日期格式

* @param dateFormat

* @return

*/

public final static String getNowDateTime(String dateFormat){

Date nowDate = new Date();

SimpleDateFormat sf = null;

try {

sf = new SimpleDateFormat(dateFormat);

} catch (Exception e) {

e.printStackTrace();

return "";

}

return sf.format(nowDate);

}

/**

* @funciton 得到 Timestamp 类型的nowDateTime

*

* @author credit004

*

* @return      Timestamp

*/

public final static Timestamp getNowDateTimeTs(){

return stringToTS(getNowDateTime());

}

public final static Timestamp getNowDayTimeTs(){

return stringToTsDate(getNowDateTime());

}

/**

* @funciton 节点任务期限---XXXX年XX月XX日 星期X

* @param dayLimit

* @return

*/

public final static String getTaskTimeLimit(int dayLimit){

Date nowDate = new Date();

int mod = dayLimit % 5;

int other = dayLimit / 5 * 7;

SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar calendar = Calendar.getInstance();

calendar.setTime(nowDate);

/*

* 判断双休日  jiang

*/

for (int i = 0; i < mod;) {

calendar.add(Calendar.DATE, 1);

switch (calendar.get(Calendar.DAY_OF_WEEK)) {

case Calendar.SUNDAY:

case Calendar.SATURDAY:

break;

default:

i++;

break;

}

}

if (other > 0){

calendar.add(Calendar.DATE, other);

}

//          calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + dayLimit);

return sf.format(calendar.getTime());

}

/**

* @funciton 节点任务期限---XXXX年XX月XX日 星期X  ---放假天数【非双休人为放假   比如 春节 比如 十一】

* @param dayLimit

* @return

*/

public final static String getTaskTimeLimit(int dayLimit, int holidays){

Date nowDate = new Date();

dayLimit = dayLimit+holidays;

SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日 E");

Calendar calendar = Calendar.getInstance();

calendar.setTime(nowDate);

calendar.set(Calendar.DAY_OF_YEAR,calendar.get(Calendar.DAY_OF_YEAR) + dayLimit);

return sf.format(calendar.getTime());

}

/**

* @funciton 得到 (time)时间 后的第(months)个月

*/

public final static Timestamp getNextTerm(Timestamp time, int months){

Calendar calendar = Calendar.getInstance();

calendar.setTime(time);

calendar.add(Calendar.MONTH, months);

Timestamp timestamp = new Timestamp(calendar.getTime().getTime());

return timestamp;

}

/**两个日期的 日期差  参数s1:被减数  参数s2 :减数*/

public final static int getSurplusDays(Timestamp s1, Timestamp s2){

Calendar c1 = Calendar.getInstance();

c1.setTime(s1);

Calendar c2 = Calendar.getInstance();

c2.setTime(s2);

long diff = (c1.getTimeInMillis()-c2.getTimeInMillis())/(1000*60*60*24);

return ((Long)diff).intValue();

}

//      DateFormat   format=new   SimpleDateFormat("yyyy-MM-dd");

//      Calendar   calendar=Calendar.getInstance();

//      calendar.setTime(mdefSetting.getDate());

//      calendar.add(Calendar.DAY_OF_MONTH,1);

//      mdefs.setName(format.format(calendar.getTime())+" 至 "+mdefSetting2.getDate());

/**

* 在日期上加days天,得到新的日期

* @return

*/

public final static Date addDaysToDate(Date date,int days){

Calendar c = Calendar.getInstance();

c.setTime(date);

c.add(Calendar.DATE,days);

return c.getTime();

}

/**

* @function 得到自定义 日期格式

* @param dateFormat

* @return

*/

public final static String getFormatDateTime(Date date,String dateFormat){

SimpleDateFormat sf = null;

try {

sf = new SimpleDateFormat(dateFormat);

} catch (Exception e) {

e.printStackTrace();

return "";

}

return sf.format(date);

}

/**

* 在日期上加months月,得到新的日期

* @return

*/

public final static Date addMonthsToDate(Date date,int months){

Calendar c = Calendar.getInstance();

c.setTime(date);

c.add(Calendar.MONTH,months);

return c.getTime();

}

/**

* 在日期上加months月和日,得到新的日期

* @return

*/

public final static Date addMonthsToDate(Date date,int months,int days){

Calendar c = Calendar.getInstance();

c.setTime(date);

c.add(Calendar.MONTH,months);

c.add(Calendar.DATE,days);

//      c.roll(Calendar.DATE, days);

return c.getTime();

}

/**

* 计算两日期之间相隔月份和天数

* @return

*/

public static Map<Integer, Integer> getMonthAndDaysBetweenDate(String date1,String date2){

Map<Integer, Integer>  map=new HashMap();

SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");

Date d1 = null;

try {

d1 = sd.parse(date1);

} catch (ParseException e) {

e.printStackTrace();

}

Date d2=null;

try {

d2 = sd.parse(date2);

} catch (ParseException e) {

e.printStackTrace();

}

int months=0;//相差月份

int days=0;

int y1=d1.getYear();

int y2=d2.getYear();

int dm1=d2.getMonth();//起始日期月份

int dm2=d2.getMonth();//结束日期月份

int dd1=d1.getDate(); //起始日期天

int dd2=d2.getDate(); //结束日期天

if(d1.getTime()<d2.getTime()){

months=d2.getMonth()-d1.getMonth()+(y2-y1)*12;

if(dd2<dd1){

months=months-1;

}

System.out.println(getFormatDateTime(addMonthsToDate(DateUtil.parseDate(date1, "yyyy-MM-dd"),months),"yyyy-MM-dd"));

days=getDaysBetweenDate(getFormatDateTime(addMonthsToDate(DateUtil.parseDate(date1, "yyyy-MM-dd"),months),"yyyy-MM-dd"),date2);

map.put(1, months);

map.put(2, days);

}

return map;

}

/**

* 计算两日期之间相隔月份和天数,目前只有按月计算用到 2012.03.09

* @return

*/

public static Map<Integer, Integer> getMonthAndDaysBetweenDate2(String date1,String date2){

Map<Integer, Integer>  map=new HashMap();

SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");

Date d1 = null;

try {

d1 = sd.parse(date1);

} catch (ParseException e) {

e.printStackTrace();

}

Date d2=null;

try {

d2 = sd.parse(date2);

} catch (ParseException e) {

e.printStackTrace();

}

int months=0;//相差月份

int days=0;

int y1=d1.getYear();

int y2=d2.getYear();

int dm1=d2.getMonth();//起始日期月份

int dm2=d2.getMonth();//结束日期月份

int dd1=d1.getDate(); //起始日期天

int dd2=d2.getDate(); //结束日期天

if(d1.getTime()<d2.getTime()){

months=d2.getMonth()-d1.getMonth()+(y2-y1)*12;

if(dd2<dd1){

months=months-1;

}

if(dd2==dd1-1){

months = months +1;

}

System.out.println(getFormatDateTime(addMonthsToDate(DateUtil.parseDate(date1, "yyyy-MM-dd"),months),"yyyy-MM-dd"));

days=getDaysBetweenDate2(getFormatDateTime(addMonthsToDate(DateUtil.parseDate(date1, "yyyy-MM-dd"),months),"yyyy-MM-dd"),date2);

map.put(1, months);

map.put(2, days);

}

return map;

}

/**

* 计算两日期之间相隔月份和天数,目前只有按月计算用到 2012.03.09

* @return

*/

public static Map<Integer, Integer> getMonthAndDaysBetweenDate3(String date1,String date2){

Map<Integer, Integer>  map=new HashMap();

SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");

Date d1 = null;

try {

d1 = sd.parse(date1);

} catch (ParseException e) {

e.printStackTrace();

}

Date d2=null;

try {

d2 = sd.parse(date2);

} catch (ParseException e) {

e.printStackTrace();

}

int months=0;//相差月份

int days=0;

int y1=d1.getYear();

int y2=d2.getYear();

int dm1=d2.getMonth();//起始日期月份

int dm2=d2.getMonth();//结束日期月份

int dd1=d1.getDate(); //起始日期天

int dd2=d2.getDate(); //结束日期天

if(d1.getTime()<d2.getTime()){

months=d2.getMonth()-d1.getMonth()+(y2-y1)*12;

if(dd2<dd1){

months=months-1;

}

System.out.println(getFormatDateTime(addMonthsToDate(DateUtil.parseDate(date1, "yyyy-MM-dd"),months),"yyyy-MM-dd"));

days=getDaysBetweenDate2(getFormatDateTime(addMonthsToDate(DateUtil.parseDate(date1, "yyyy-MM-dd"),months),"yyyy-MM-dd"),date2);

if(dd2 == dd1){

days = 0;

}

map.put(1, months);

map.put(2, days);

}

return map;

}

/**

* 计算两日期之间的天数

* @return

*/

public final static int getDaysBetweenDate(String date1,String date2){

SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");

Date d1 = null;

try {

d1 = sd.parse(date1);

} catch (ParseException e) {

e.printStackTrace();

}

Date d2=null;

try {

d2 = sd.parse(date2);

} catch (ParseException e) {

e.printStackTrace();

}

Calendar c1 = Calendar.getInstance();

c1.setTime(d1);

Calendar c2 = Calendar.getInstance();

c2.setTime(d2);

long diff = (c2.getTimeInMillis()-c1.getTimeInMillis())/(1000*60*60*24);

return ((Long)diff).intValue();

}

/**

* 计算两日期之间的天数,目前只有按月计算用到2012.03.09

* @return

*/

public final static int getDaysBetweenDate2(String date1,String date2){

SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd");

Date d1 = null;

try {

d1 = sd.parse(date1);

} catch (ParseException e) {

e.printStackTrace();

}

Date d2=null;

try {

d2 = sd.parse(date2);

} catch (ParseException e) {

e.printStackTrace();

}

int rdays =0;

if(d2.getDate()>= d1.getDate()){

rdays = d2.getDate()-d1.getDate()+1;

}else{

rdays = d2.getDate()+30-d1.getDate()+1;

}

return rdays;

}

/**

*

* @param dateString 日期字符串 如2011-01-03

* @param dateFormate  日期格式 如yyyy-MM-dd

* @return 根据传入的日期字符串和日期格式返回指定格式的日期

*/

public final static Date parseDate(String dateString,String dateFormate) {

SimpleDateFormat sd=new SimpleDateFormat(dateFormate);

Date date=null;

try {

date=sd.parse(dateString);

} catch (Exception ex) {

logger.error("Pase the Date(" + dateString + ") occur errors:"

+ ex.getMessage());

}

return date;

}

public static String getNowDate(String formart){

String temp_str="";

Date dt = new Date();

SimpleDateFormat sdf = new SimpleDateFormat(formart);

temp_str=sdf.format(dt);

return temp_str;

}

/**

* 计算两日期之间的相差月份和天数

* @return

*/

public final static int getMonthDaysBetweenDate(String date1,String date2){

Date d1=new Date(date1);

return 0;

}

public static String dateToStr(Date date, String format){

SimpleDateFormat dateFormat = new SimpleDateFormat(format);

return dateFormat.format(date);

}

/**得到今天中小时(24H)*/

public final static int getHourOfDay(){

Calendar calendar=Calendar.getInstance();

return calendar.get(calendar.HOUR_OF_DAY);

}

/**得到今天中分钟*/

public final static int getMinOfDay(){

Calendar calendar=Calendar.getInstance();

return calendar.get(calendar.MINUTE);

}

public final static long getDateTimeNow(){

Date date=new Date();

return date.getTime();

}

// 返回第几个月份,不是几月

// 季度一年四季, 第一季度:2月-4月, 第二季度:5月-7月, 第三季度:8月-10月, 第四季度:11月-1月

public static int getQuarterInMonth(int month, boolean isQuarterStart) {

int months[] = { 1, 4, 7, 10 };

if (!isQuarterStart) {

months = new int[] { 3, 6, 9, 12 };

}

if (month >= 2 && month <= 4)

return months[0];

else if (month >= 5 && month <= 7)

return months[1];

else if (month >= 8 && month <= 10)

return months[2];

else

return months[3];

}

// 返回第几季度

public static int getQuarterInMonth(int month) {

int months[] = { 1, 2, 3, 4 };  //4个季度

if (month >= 1 && month <= 3)

return months[0];

else if (month >= 4 && month <= 6)

return months[1];

else if (month >= 7 && month <= 9)

return months[2];

else

return months[3];

}

public static String getBetweenDate(String date1,String date2){

return null;

}

public static String dateDiff(String startTime, String endTime,

String format, String str) {

String ret="";

// 按照传入的格式生成一个simpledateformate对象

SimpleDateFormat sd = new SimpleDateFormat(format);

long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数

long nh = 1000 * 60 * 60;// 一小时的毫秒数

long nm = 1000 * 60;// 一分钟的毫秒数

long ns = 1000;// 一秒钟的毫秒数

long diff;

long day = 0;

long hour = 0;

long min = 0;

long sec = 0;

// 获得两个时间的毫秒时间差异

try {

diff = sd.parse(endTime).getTime() - sd.parse(startTime).getTime();

day = diff / nd;// 计算差多少天

hour = diff % nd / nh + day * 24;// 计算差多少小时

min = diff % nd % nh / nm + day * 24 * 60;// 计算差多少分钟

sec = diff % nd % nh % nm / ns;// 计算差多少秒

// 输出结果

System.out.println("" + day + "天" + (hour - day * 24) + "小时"

+ (min - day * 24 * 60) + "分钟" + sec + "秒。");

System.out.println("hour=" + hour + ",min=" + min);

ret="" + day + "天" + (hour - day * 24) + "小时"

+ (min - day * 24 * 60) + "分钟" + sec + "秒。";

if (str.equalsIgnoreCase("h")) {

// return hour;

} else {

//return min;

}

} catch (ParseException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

if (str.equalsIgnoreCase("h")) {

//return hour;

} else {

//return min;

}

return ret;

}

public static String getCurrentMonthFistDay() {

Calendar cal = Calendar.getInstance();

SimpleDateFormat datef=new SimpleDateFormat("yyyy-MM-dd");

//当前月的最后一天

cal.set( Calendar.DATE, 1 );

cal.roll(Calendar.DATE, - 1 );

//当前月的第一天

cal.set(GregorianCalendar.DAY_OF_MONTH, 1);

Date beginTime=cal.getTime();

String beginTime1=datef.format(beginTime)+" 00:00:00";

return beginTime1;

}

public static String getCurrentMonthLastDay() {

Calendar cal = Calendar.getInstance();

SimpleDateFormat datef=new SimpleDateFormat("yyyy-MM-dd");

//当前月的最后一天

cal.set( Calendar.DATE, 1 );

cal.roll(Calendar.DATE, - 1 );

Date endTime=cal.getTime();

String endTime1=datef.format(endTime)+" 23:59:59";

return endTime1;

}

/**

* @param date1  起始日期

* @param date2 截止日期

* @return  两日期之间的天数

*/

public final static int getDaysBetweenDate(Date date1,Date date2){

Calendar c1 = Calendar.getInstance();

c1.setTime(date1);

c1.set(Calendar.HOUR_OF_DAY, 0);

c1.set(Calendar.MINUTE, 0);

c1.set(Calendar.SECOND, 0);

c1.set(Calendar.MILLISECOND, 0);

Calendar c2 = Calendar.getInstance();

c2.setTime(date2);

c2.set(Calendar.HOUR_OF_DAY, 0);

c2.set(Calendar.MINUTE, 0);

c2.set(Calendar.SECOND, 0);

c2.set(Calendar.MILLISECOND, 0);

long diff = (c2.getTimeInMillis()-c1.getTimeInMillis())/(1000*60*60*24);

return ((Long)diff).intValue();

}

/**

* 获取一个日期的一天第一个时间和最后一个时间

* strDate 传入日期

* strKey用来判断是获取最开始日期还是最后日期 first  开始 end最后

* 返回的日期格式为 String类型

*/

public static String getFirstDate(Date strDate,String strKey){

SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd 00:00:00");

SimpleDateFormat formatEndDate = new SimpleDateFormat("yyyy-MM-dd 23:59:59");

if(strDate!=null&&!"".equals(strDate)){

if(strKey!=null&&"first".equals(strKey)){

return formatDate.format(strDate);

}if(strKey!=null&&"end".equals(strKey)){

return formatEndDate.format(strDate);

}else{

return formatDate.format(strDate);

}

}else{

return null;

}

}

/**

* 获取一个日期的一天第一个时间和最后一个时间

* strDate 传入日期

* strKey用来判断是获取最开始日期还是最后日期 first  开始 end最后

* 返回的日期格式为Date  类型

*/

public static Date getDateFirstDate(Date strDate,String strKey){

try {

SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:SS");

String date=getFirstDate(strDate,strKey);

if(date!=null){

return formatDate.parse(date);

}else{

return null;

}

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

public static String getMaxMonthDate(String date) throws ParseException{

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

Calendar calendar = Calendar.getInstance();

calendar.setTime(dateFormat.parse(date));

calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));

return dateFormat.format(calendar.getTime());

}

}

时间工具类DateUtil的更多相关文章

  1. 基于Java8的日期时间工具类DateTimeFormatter

    原文:https://blog.csdn.net/qq_36596145/article/details/85331002 import java.time.Instant; import java. ...

  2. java8时间类API安全问题(赠送新的时间工具类哟)

    LocalDateTime等新出的日期类全是final修饰的类,不能被继承,且对应的日期变量都是final修饰的,也就是不可变类.赋值一次后就不可变,不存在多线程数据问题. simpleDateFor ...

  3. hutool的时间工具类

    hutool的时间工具类 糊涂的时间工具类有很多使用方法,用到了这几个 日期向后偏移     String now = DateUtil.now();        Date date4= DateU ...

  4. 代码片段:基于 JDK 8 time包的时间工具类 TimeUtil

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “知识的工作者必须成为自己时间的首席执行官.” 前言 这次泥瓦匠带来的是一个好玩的基于 JDK ...

  5. Java日期工具类,Java时间工具类,Java时间格式化

    Java日期工具类,Java时间工具类,Java时间格式化 >>>>>>>>>>>>>>>>>&g ...

  6. 小记Java时间工具类

    小记Java时间工具类 废话不多说,这里主要记录以下几个工具 两个时间只差(Data) 获取时间的格式 格式化时间 返回String 两个时间只差(String) 获取两个时间之间的日期.月份.年份 ...

  7. 超详细的Java时间工具类

    package com.td.util; import java.sql.Timestamp; import java.text.ParseException; import java.text.Pa ...

  8. java时间工具类

    在项目中,很多地方需要根据时间获取相应的数据,将时间格式化,或者时间比较等相关操作.一个良好的工具类不仅可以减少代码冗余,还能促进业务处理,加快进度. /** * @author: lxw * @Da ...

  9. Apache Commons Lang之日期时间工具类

    码农不识Apache,码尽一生也枉然. FastDateFormat FastDateFormat是一个快速且线程安全的时间操作类,它完全可以替代SimpleDateFromat.因为是线程安全的,所 ...

随机推荐

  1. MongoDB 分片的原理、搭建、应用 (转)

    一.概念: 分片(sharding)是指将数据库拆分,将其分散在不同的机器上的过程.将数据分散到不同的机器上,不需要功能强大的服务器就可以存储更多的数据和处理更大的负载.基本思想就是将集合切成小块,这 ...

  2. asp.net core 默认采用小驼峰命名和自定义模型验证

    services.AddMvc(options => { options.Filters.Add<ApiExceptionAttribute>(); }).SetCompatibil ...

  3. web程序防止攻击的一些资料——整理

    地址:https://docs.microsoft.com/en-us/previous-versions/aspnet/a2a4yykt(v=vs.100)?redirectedfrom=MSDN ...

  4. The Sum of the k-th Powers(Educational Codeforces Round 7F+拉格朗日插值法)

    题目链接 传送门 题面 题意 给你\(n,k\),要你求\(\sum\limits_{i=1}^{n}i^k\)的值. 思路 根据数学知识或者说题目提示可知\(\sum\limits_{i=1}^{n ...

  5. windows(hexo)使用git时出现:warning: LF will be replaced by CRLF

    hexo出现warning: LF will be replaced by CRLF git config --global core.autocrlf false //禁用自动转换

  6. easyui 自己写的一些小东西

    1设置combobox,当我们只需要显示一个commbobox的时候,并且默认选择第一项 function Getcombobox(comboId, value, groupNo) { $('#' + ...

  7. 服务端高并发分布式架构演进之路 转载,原文地址:https://segmentfault.com/a/1190000018626163

    1. 概述 本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则. 特 ...

  8. python高性能编程 读书笔记

    GIL 确保 Python 进程一次只能执行一条指令 ====分析工具cProfile 分析函数耗时line_profiler  逐行分析 heapy 追踪 Python 内存中所有的对象— 这对于消 ...

  9. Dubbo源码分析:Serialization

    背景 顺序化逻缉处理! 类图 获取Serialization对象时序图 序列化

  10. 3.Vue 实例

    创建一个 Vue 实例 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: var vm = new Vue({ // 选项 }) 虽然没有完全遵循 MVVM 模型,但是 V ...