zoukankan      html  css  js  c++  java
  • Java 时间工具类

      1 /**
      2      * 格式化字符串为日期格式
      3      *
      4      * @param dateStr 需要格式化的字符串
      5      * @param format  需要的日期格式,例如"yyyy-MM-dd HH:mm:ss"
      6      * @return
      7      */
      8     public static Date formatDate(String dateStr, String format) {
      9         SimpleDateFormat dateFormat = new SimpleDateFormat(format,
     10                 Locale.CHINESE);
     11         try {
     12             return dateFormat.parse(dateStr);
     13         } catch (ParseException e) {
     14             e.printStackTrace();
     15         }
     16 
     17         return null;
     18     }
     19 
     20     /**
     21      * 格式化字符串为"yyyy-MM-dd HH:mm:ss"的日期
     22      *
     23      * @param dateStr
     24      * @return
     25      */
     26     public static Date formatDate(String dateStr) {
     27         if(StrUtil.isBlank(dateStr)){
     28             return null;
     29         }
     30         return formatDate(dateStr, "yyyy-MM-dd HH:mm:ss");
     31     }
     32 
     33     public static String getFormatDateStr(long date, String format) {
     34         return formatDate2Str(new Date(date), format);
     35     }
     36 
     37     public static String getMonthDayStr(Date date) {
     38         if (date == null) {
     39             return "";
     40         }
     41         return formatDate2Str(date, "MM-dd");
     42     }
     43 
     44     public static String getNormalDateStr(Date date) {
     45         if (date == null) {
     46             return "";
     47         }
     48         return formatDate2Str(date, "yyyy-MM-dd HH:mm:ss");
     49     }
     50 
     51     public static String formatDate2Str(Date date, String formatter) {
     52         SimpleDateFormat sdf = new SimpleDateFormat(formatter);
     53         return sdf.format(date);
     54     }
     55 
     56     /**
     57      * date 日期加上,或减去几天
     58      *
     59      * @param date
     60      * @param day
     61      * @return
     62      */
     63     public static Date addDateInDiff(Date date, int day) {
     64         Calendar cal = Calendar.getInstance();
     65         cal.setTime(date);
     66         cal.add(Calendar.DATE, day);
     67         return cal.getTime();
     68     }
     69 
     70     public static Date addMinuteInDiff(Date date, int minute) {
     71         Calendar cal = Calendar.getInstance();
     72         cal.setTime(date);
     73         cal.add(Calendar.MINUTE, minute);
     74         return cal.getTime();
     75     }
     76 
     77     public static Date addSecondInDiff(Date date, int sec) {
     78         Calendar cal = Calendar.getInstance();
     79         cal.setTime(date);
     80         cal.add(Calendar.SECOND, sec);
     81         return cal.getTime();
     82     }
     83 
     84     /**
     85      * 日期加个月
     86      *
     87      * @param date
     88      * @param mon
     89      * @return
     90      */
     91     public static Date addMonthInDiff(Date date, int mon) {
     92         Calendar cal = Calendar.getInstance();
     93         cal.setTime(date);
     94         cal.add(Calendar.MONTH, mon);
     95         return cal.getTime();
     96     }
     97 
     98     public static Date addYearInDiff(Date date, int mon) {
     99         Calendar cal = Calendar.getInstance();
    100         cal.setTime(date);
    101         cal.add(Calendar.YEAR, mon);
    102         return cal.getTime();
    103     }
    104 
    105     /**
    106      * 获取当前日期是星期几<br>
    107      *
    108      * @param dt
    109      * @return 当前日期是星期几
    110      */
    111     public static String getWeekOfDate(Date dt) {
    112         String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    113         Calendar cal = Calendar.getInstance();
    114         cal.setTime(dt);
    115         int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
    116         if (w < 0)
    117             w = 0;
    118         return weekDays[w];
    119     }
    120 
    121     /**
    122      * 获取当前日期是周几<br>
    123      *
    124      * @param dt
    125      * @return 当前日期是周几
    126      */
    127     public static String getWeekOfDate2(Date dt) {
    128         String[] weekDays = {"周日", "周一", "周二", "周三", "周四", "周五", "周六"};
    129         Calendar cal = Calendar.getInstance();
    130         cal.setTime(dt);
    131         int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
    132         if (w < 0)
    133             w = 0;
    134         return weekDays[w];
    135     }
    136 
    137     /**
    138      * <pre>
    139      * 判断date和当前日期是否在同一周内
    140      * 注:
    141      * Calendar类提供了一个获取日期在所属年份中是第几周的方法,对于上一年末的某一天
    142      * 和新年初的某一天在同一周内也一样可以处理,例如2012-12-31和2013-01-01虽然在
    143      * 不同的年份中,但是使用此方法依然判断二者属于同一周内
    144      * </pre>
    145      *
    146      * @param date
    147      * @return
    148      */
    149     public static boolean isSameWeekWithToday(Date date) {
    150         return isSameWeek(date, new Date());
    151     }
    152 
    153     public static boolean isSameWeek(Date date1, Date date2) {
    154         if (date1 == null || date2 == null) {
    155             return false;
    156         }
    157 
    158         // 0.先把Date类型的对象转换Calendar类型的对象
    159         Calendar date1Cal = Calendar.getInstance();
    160         Calendar date2Cal = Calendar.getInstance();
    161 
    162         date1Cal.setTime(date1);
    163         date2Cal.setTime(date2);
    164 
    165         // 1.比较当前日期在年份中的周数是否相同
    166         if (date1Cal.get(Calendar.WEEK_OF_YEAR) == date2Cal
    167                 .get(Calendar.WEEK_OF_YEAR)) {
    168             return true;
    169         } else {
    170             return false;
    171         }
    172     }
    173 
    174     /**
    175      * 取得当前日期所在周的第一天
    176      *
    177      * @param date
    178      * @return
    179      */
    180     public static Date getFirstDayOfWeek(Date date) {
    181         Calendar c = new GregorianCalendar();
    182         c.setFirstDayOfWeek(Calendar.MONDAY);
    183         c.setTime(date);
    184         c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek()); // Monday
    185         return c.getTime();
    186     }
    187 
    188     /**
    189      * 取得当前日期是多少周
    190      *
    191      * @param date
    192      * @return
    193      */
    194     public static int getWeekOfYear(Date date) {
    195         Calendar c = new GregorianCalendar();
    196         c.setFirstDayOfWeek(Calendar.MONDAY);
    197         c.setMinimalDaysInFirstWeek(7);
    198         c.setTime(date);
    199 
    200         return c.get(Calendar.WEEK_OF_YEAR);
    201     }
    202 
    203     /**
    204      * 得到某一年周的总数
    205      *
    206      * @param year
    207      * @return
    208      */
    209     public static int getMaxWeekNumOfYear(int year) {
    210         Calendar c = new GregorianCalendar();
    211         c.set(year, Calendar.DECEMBER, 31, 23, 59, 59);
    212 
    213         return getWeekOfYear(c.getTime());
    214     }
    215 
    216     /**
    217      * 得到某年某周的第一天
    218      *
    219      * @param year
    220      * @param week
    221      * @return
    222      */
    223     public static Date getFirstDayOfWeek(int year, int week) {
    224         Calendar c = new GregorianCalendar();
    225         c.set(Calendar.YEAR, year);
    226         c.set(Calendar.MONTH, Calendar.JANUARY);
    227         c.set(Calendar.DATE, 1);
    228 
    229         Calendar cal = (GregorianCalendar) c.clone();
    230         cal.add(Calendar.DATE, week * 7);
    231 
    232         return getFirstDayOfWeek(cal.getTime());
    233     }
    234 
    235     /**
    236      * 得到某年某周的最后一天
    237      *
    238      * @param year
    239      * @param week
    240      * @return
    241      */
    242     public static Date getLastDayOfWeek(int year, int week) {
    243         Calendar c = new GregorianCalendar();
    244         c.set(Calendar.YEAR, year);
    245         c.set(Calendar.MONTH, Calendar.JANUARY);
    246         c.set(Calendar.DATE, 1);
    247 
    248         Calendar cal = (GregorianCalendar) c.clone();
    249         cal.add(Calendar.DATE, week * 7);
    250 
    251         return getLastDayOfWeek(cal.getTime());
    252     }
    253 
    254     /**
    255      * 取得当前日期所在周的最后一天
    256      *
    257      * @param date
    258      * @return
    259      */
    260     public static Date getLastDayOfWeek(Date date) {
    261         Calendar c = new GregorianCalendar();
    262         c.setFirstDayOfWeek(Calendar.MONDAY);
    263         c.setTime(date);
    264         c.set(Calendar.DAY_OF_WEEK, c.getFirstDayOfWeek() + 6); // Sunday
    265         return c.getTime();
    266     }
    267 
    268     /**
    269      * 获得当前日期所在月份的最后一天(最后一个day)
    270      *
    271      * @param date
    272      * @return Date
    273      */
    274     public static Date getLastDayOfMonth(Date date) {
    275         Calendar ca = Calendar.getInstance();
    276         ca.setTime(date);
    277         ca.set(Calendar.DAY_OF_MONTH,
    278                 ca.getActualMaximum(Calendar.DAY_OF_MONTH));
    279         return ca.getTime();
    280     }
    281 
    282     public static Date getFirstDayOfMonth(Date date) {
    283         Calendar c = Calendar.getInstance();
    284         c.add(Calendar.MONTH, 0);
    285         c.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
    286         return c.getTime();
    287     }
    288 
    289     /**
    290      * 获取两个日期之间的天数
    291      *
    292      * @param startDate
    293      * @param endDate
    294      * @return
    295      */
    296     public static Long getDaysBetween(Date startDate, Date endDate) {
    297         Calendar fromCalendar = Calendar.getInstance();
    298         fromCalendar.setTime(startDate);
    299         fromCalendar.set(Calendar.HOUR_OF_DAY, 0);
    300         fromCalendar.set(Calendar.MINUTE, 0);
    301         fromCalendar.set(Calendar.SECOND, 0);
    302         fromCalendar.set(Calendar.MILLISECOND, 0);
    303 
    304         Calendar toCalendar = Calendar.getInstance();
    305         toCalendar.setTime(endDate);
    306         toCalendar.set(Calendar.HOUR_OF_DAY, 0);
    307         toCalendar.set(Calendar.MINUTE, 0);
    308         toCalendar.set(Calendar.SECOND, 0);
    309         toCalendar.set(Calendar.MILLISECOND, 0);
    310 
    311         return (toCalendar.getTime().getTime() - fromCalendar.getTime()
    312                 .getTime()) / (1000 * 60 * 60 * 24);
    313     }
    314 
    315     /**
    316      * 计算两个分钟差
    317      *
    318      * @return
    319      */
    320     public static Long getMinutesBetween(Date startDate, Date endDate) {
    321         long diff = startDate.getTime() - endDate.getTime();//这样得到的差值是微秒级别
    322         long days = diff / (1000 * 60 * 60 * 24);
    323 
    324         long hours = (diff - days * (1000 * 60 * 60 * 24)) / (1000 * 60 * 60);
    325         long minutes = diff / (1000 * 60);
    326         System.out.println("" + days + "天" + hours + "小时" + minutes + "分");
    327         return minutes;
    328     }
    329 
    330     /**
    331      * 计算两个小时差
    332      *
    333      * @return
    334      */
    335     public static Long getHourBetween(Date startDate, Date endDate) {
    336         long diff = startDate.getTime() - endDate.getTime();//这样得到的差值是微秒级别
    337         long days = diff / (1000 * 60 * 60 * 24);
    338 
    339         long hours = diff / (1000 * 60 * 60);
    340         System.out.println("" + days + "天" + hours + "小时" + "分");
    341         return hours;
    342     }
    343 
    344     /**
    345      * 计算两个秒差
    346      *
    347      * @return
    348      */
    349     public static Long getSecondBetween(Date startDate, Date endDate) {
    350         long diff = startDate.getTime() - endDate.getTime();//这样得到的差值是微秒级别
    351         long seconds = diff / (1000);
    352         return seconds;
    353     }
    354 
    355     /**
    356      * 日期转换为今天,明天,后天
    357      * startDate (2018-09-10 00:00:00)
    358      */
    359     public static String getDateDesc(Date startDate) {
    360         String todayStr = formatDate2Str(new Date(), "yyyy-MM-dd");
    361         Date today = formatDate(todayStr + " 00:00:00");
    362         long days = getDaysBetween(today, startDate);
    363         if (days == 0) {
    364             return "今天";
    365         } else if (days == 1) {
    366             return "明天";
    367         } else if (days == 2) {
    368             return "后天";
    369         }
    370         return formatDate2Str(startDate, "yyyy-MM-dd");
    371     }
    372 
    373     /**
    374      * 显示时间,如果与当前时间差别小于一天,则自动用**秒(分,小时)前,如果大于一天则用format规定的格式显示
    375      *
    376      * @param ctime  时间
    377      * @param format 格式 格式描述:例如:yyyy-MM-dd yyyy-MM-dd HH:mm:ss
    378      * @return
    379      */
    380     public static String showTime(Date ctime, String format) {
    381         // System.out.println("当前时间是:"+new
    382         // Timestamp(System.currentTimeMillis()));
    383 
    384         // System.out.println("发布时间是:"+df.format(ctime).toString());
    385         String r = "";
    386         if (ctime == null)
    387             return r;
    388         if (format == null)
    389             format = "MM-dd HH:mm";
    390 
    391         boolean isSameYear = isSameYear(ctime, new Date());
    392         if (!isSameYear) {
    393             format = "yy-M-d";
    394             SimpleDateFormat df = new SimpleDateFormat(format);
    395             return df.format(ctime);
    396         }
    397 
    398         long nowtimelong = System.currentTimeMillis();
    399 
    400         long ctimelong = ctime.getTime();
    401         long result = Math.abs(nowtimelong - ctimelong);
    402 
    403         if (result < 60000) {// 一分钟内
    404             // long seconds = result / 1000;
    405             // if(seconds == 0){
    406             // r = "刚刚";
    407             // }else{
    408             // r = seconds + "秒前";
    409             // }
    410             r = "刚刚";
    411         } else if (result >= 60000 && result < 3600000) {// 一小时内
    412             long seconds = result / 60000;
    413             r = seconds + "分钟前";
    414         } else if (result >= 3600000 && result < 86400000) {// 一天内
    415             long seconds = result / 3600000;
    416             r = seconds + "小时前";
    417         } else if (result > 86400000 && result < 172800000) {// 三十天内
    418             // long seconds = result / 86400000;
    419             // r = seconds + "天前";
    420             r = "昨天";
    421         } else if (result >= 172800000) {
    422 //            format = "M-d";
    423             SimpleDateFormat df = new SimpleDateFormat(format);
    424             r = df.format(ctime).toString();
    425         }
    426         // else{// 日期格式
    427         // format="MM-dd HH:mm";
    428         // SimpleDateFormat df = new SimpleDateFormat(format);
    429         // r = df.format(ctime).toString();
    430         // }
    431         return r;
    432     }
    433 
    434     public static boolean isSameYear(Date ctime, Date nTime) {
    435         Calendar cDate = Calendar.getInstance();
    436         cDate.setTime(ctime);
    437         Calendar nDate = Calendar.getInstance();
    438         nDate.setTime(nTime);
    439         int cYear = cDate.get(Calendar.YEAR);
    440         int nYear = nDate.get(Calendar.YEAR);
    441         if (cYear == nYear) {
    442             return true;
    443         }
    444         return false;
    445     }
    446 
    447     /***
    448      * 出生日期转换年龄
    449      ***/
    450     public static int getAgeByBirthday(Date birthday) {
    451         Calendar cal = Calendar.getInstance();
    452         if (birthday.getTime() > new Date().getTime()) {
    453             return 0;
    454         }
    455         int year = cal.get(Calendar.YEAR);
    456         int month = cal.get(Calendar.MONTH) + 1;
    457         int day = cal.get(Calendar.DAY_OF_MONTH);
    458 
    459         cal.setTime(birthday);
    460         int yearBirth = cal.get(Calendar.YEAR);
    461         int monthBirth = cal.get(Calendar.MONTH) + 1;
    462         int dayBirth = cal.get(Calendar.DAY_OF_MONTH);
    463         int age = year - yearBirth;
    464         if (monthBirth > month)
    465             return age - 1;
    466         if (monthBirth == month && dayBirth > day)
    467             return age - 1;
    468         return age > 0 ? age : 0;
    469     }
    470 
    471     /***
    472      * 根据年龄取得出生日期
    473      *
    474      * @param age
    475      * @return
    476      */
    477     public static String getBirthdayByAge(int age) {
    478         Calendar cal = Calendar.getInstance();
    479         int year = cal.get(Calendar.YEAR);
    480         int month = cal.get(Calendar.MONTH) + 1;
    481         int day = cal.get(Calendar.DAY_OF_MONTH);
    482         int birthYear = year - age;
    483         Date birthDay = formatDate(birthYear + "-" + month + "-" + day,
    484                 "yyyy-MM-dd");
    485         return formatDate2Str(birthDay, "yyyy-MM-dd");
    486     }
    487 
    488 
    489     /**
    490      * 判断结束时间是否早于当前时间
    491      **/
    492     public static boolean isTimeout(String date) {
    493         if (date == null)
    494             return false;
    495         long now = new Date().getTime();
    496         long end = formatDate(date.toString()).getTime();
    497         if (now > end)
    498             return true;
    499         return false;
    500     }
    501 
    502     /**
    503      * @param date
    504      * @return
    505      */
    506     public static boolean isTimeout(Date date) {
    507         if (date == null) return false;
    508         long now = new Date().getTime();
    509         long end = date.getTime();
    510         if (now > end) return true;
    511         return false;
    512     }
    513 
    514     /**
    515      * 判断date2时间是否早于date1时间
    516      **/
    517     public static boolean isTimeout(String date1, String date2) {
    518         if (date1 == null || date2 == null)
    519             return false;
    520         long start = formatDate(date2.toString()).getTime();
    521         long end = formatDate(date1.toString()).getTime();
    522         if (start > end)
    523             return true;
    524         return false;
    525     }
    526 
    527     /**
    528      * 判断传入的时间是否已满一周年
    529      */
    530     public static boolean isLastYear(Date date) {
    531         Calendar calendar = Calendar.getInstance();
    532         Date lastYear = new Date(System.currentTimeMillis());
    533         calendar.setTime(lastYear);
    534         calendar.add(Calendar.YEAR, -1);
    535         lastYear = calendar.getTime();
    536         if (date.getTime() < lastYear.getTime()) {
    537             return true;
    538         }
    539         return false;
    540     }
    541 
    542     public static int getSpecVoteFailTime() {
    543         Date nowDate = new Date();
    544         Date addDateInDiff = addDateInDiff(nowDate, 1);
    545         String endDateStr = formatDate2Str(addDateInDiff, "yyyy-MM-dd") + " 00:00:00";
    546         Date formatDate = formatDate(endDateStr);
    547         long time1 = formatDate.getTime();
    548         long time2 = nowDate.getTime();
    549         long abs = Math.abs(time1 - time2);
    550         long l = abs / 1000;
    551         return Integer.valueOf(String.valueOf(l));
    552     }
    553 
    554     //2018-09-17 9时 转成日期格式
    555     public static String convertShowTimeToDate(String date) {
    556         StringBuilder str = new StringBuilder();
    557         str.append(date);
    558         if (date.length() == 13) {
    559             str.insert(11, 0);
    560         }
    561         date = date.replace("时", ":00:00");
    562         System.out.println(date);
    563         return date;
    564     }
    565 
    566     //日期格式转成2018-09-17 9时
    567     public static String convertDateToShowTime(Date date) {
    568         String dateStr = UtilDate.formatDate2Str(date, "yyyy-MM-dd HH");
    569         String regx = "\s0";
    570         dateStr = dateStr.replaceAll(regx, " ") + "时";
    571         System.out.println(dateStr);
    572         return dateStr;
    573     }
    574 
    575 
    576     /**
    577      * 第几个工作日
    578      *
    579      * @param date
    580      * @param days
    581      * @return
    582      */
    583     public static Date getWorkDte(Date date, int days) {
    584 
    585         Calendar calendar = Calendar.getInstance();
    586         calendar.setTime(date);
    587         if (days > 0) {
    588             for (int i = 1; i <= days; i++) {
    589                 calendar.add(Calendar.DAY_OF_YEAR, 1);
    590                 if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
    591                     i--;
    592                 }
    593             }
    594         } else if (days < 0) {
    595             for (int i = 0; i > days; i--) {
    596                 calendar.add(Calendar.DAY_OF_YEAR, -1);
    597                 if (calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
    598                     i++;
    599                 }
    600             }
    601         }
    602         return calendar.getTime();
    603     }
    604 
    605     /**
    606      * 几小时几分钟
    607      *
    608      * @param seconds
    609      * @return
    610      */
    611     public static String getTimeStrBySeconds(int seconds) {
    612         String timeStr = "";
    613         int hour = seconds / (60 * 60);
    614         int minute = seconds % (60 * 60) / 60;
    615         if (0 == hour) {
    616             timeStr = seconds % (60 * 60) / 60 + "分钟";
    617 
    618         } else {
    619             timeStr = seconds / (60 * 60) + "小时" + seconds % (60 * 60) / 60 + "分钟";
    620 
    621         }
    622         return timeStr;
    623     }
    624 
    625     //判断选择的日期是否是本周
    626     public static boolean isThisWeek(long time)
    627     {
    628         Calendar calendar = Calendar.getInstance();
    629         int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
    630         calendar.setTime(new Date(time));
    631         int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);
    632         if(paramWeek==currentWeek){
    633             return true;
    634         }
    635         return false;
    636     }
    637     //判断选择的日期是否是今天
    638     public static boolean isToday(long time)
    639     {
    640         return isThisTime(time,"yyyy-MM-dd");
    641     }
    642     //判断选择的日期是否是本月
    643     public static boolean isThisMonth(long time)
    644     {
    645         return isThisTime(time,"yyyy-MM");
    646     }
    647     private static boolean isThisTime(long time,String pattern) {
    648         Date date = new Date(time);
    649         SimpleDateFormat sdf = new SimpleDateFormat(pattern);
    650         String param = sdf.format(date);//参数时间
    651         String now = sdf.format(new Date());//当前时间
    652         if(param.equals(now)){
    653             return true;
    654         }
    655         return false;
    656     }
    657 
    658     /**
    659      * 当天时间获取时分
    660      * @return
    661      */
    662     public static String getIsTodayStartTime(Date date){
    663 //        Date date = UtilDate.formatDate(time, "yyyy-MM-dd HH:mm");
    664         long time1 = date.getTime();
    665         boolean today = UtilDate.isToday(time1);
    666         String todayTime = UtilDate.getFormatDateStr(date.getTime(),"yyyy-MM-dd HH:mm");
    667         if (today){
    668 
    669             String regex = " ";
    670             String[] split = todayTime.split(regex);
    671             return "今天 " + split[1];
    672         }
    673         return todayTime;
    674     }
    675 
    676     /**
    677      * 当天时间获取时分
    678      * @return
    679      */
    680     public static String getIsTodayEndTime(Date date){
    681 //        Date date = UtilDate.formatDate(time, "yyyy-MM-dd HH:mm");
    682         long time1 = date.getTime();
    683         boolean today = UtilDate.isToday(time1);
    684         String todayTime = UtilDate.getFormatDateStr(date.getTime(),"yyyy-MM-dd HH:mm");
    685         if (today){
    686             String regex = " ";
    687             String[] split = todayTime.split(regex);
    688             return split[1];
    689         }
    690         return todayTime.substring(11);
    691     }
  • 相关阅读:
    【大厂面试06期】谈一谈你对Redis持久化的理解?
    【大厂面试05期】说一说你对MySQL中锁的了解?
    【大厂面试04期】讲讲一条MySQL更新语句是怎么执行的?
    【大厂面试03期】MySQL是怎么解决幻读问题的?
    【大厂面试02期】Redis过期key是怎么样清理的?
    【大厂面试01期】高并发场景下,如何保证缓存与数据库一致性?
    透过面试题掌握Redis【持续更新中】
    MySQL慢查询优化(线上案例调优)
    分享一个集成.NET Core+Swagger+Consul+Polly+Ocelot+IdentityServer4+Exceptionless+Apollo+SkyWalking的微服务开发框架
    微服务框架Demo.MicroServer运行手册
  • 原文地址:https://www.cnblogs.com/zhanglingbing/p/10974999.html
Copyright © 2011-2022 走看看