主頁 > 軟體設計 > 2020-10-15時間日期工具類

2020-10-15時間日期工具類

2020-10-18 05:36:12 軟體設計

java中常用時間/日期工具類

  • Date類
  • DateFormat類
  • Calendar類

Date類

java.lutil.Date類表示特定的瞬間,精確到毫秒,簡單來說,使用無參構造,可以自動設定當前系統時間的毫秒時刻,指定long型別的構造引數,可以自定義毫秒時刻;毫秒值的作用:可以對時間和日期進行計算
public Date():分配Date物件并初始化此物件,以表示分配他的時間(精確到毫秒)

System.currentTimeMillis用于獲取當前系統日期到時間原點之間一共經歷了多少毫秒

Long getTime()把日期轉換為毫秒值;效果相當于System.currentTimeMillis()

public Date(long date):分配Date物件并初始化此物件,以表示自從標準基時間(成為“歷元(epoch)”,即1970年1月1日00:00:00 GMT)以來的指定毫秒數,由于我們位于東八區,所以我們的基準時間為1970年1月1日8時0分0秒

代碼演示


/**
 * java.util.Date:表示日期和時間的類
 * 類 Date表示特定的瞬間,精確到毫秒
 * 毫秒:千分之一秒,1000毫秒 = 1秒
 * 特定的瞬間:一個時間點,一剎那時間
 * 例:2088-08-08 09:55:33:333 瞬間
 * 例:2088-08-08 09:55:33:334 瞬間
 * 例:2088-08-08 09:55:33:335 瞬間
 *      ...
 *      毫秒值的作用:可以對時間和日期進行計算
 *      2099-01-03 到 2088-01-01中間一共到底有多少天
 *      可以吧日期轉換為毫秒進行計算,計算完畢,在把毫秒轉換為日期
 *
 *      日期轉換為毫秒
 *          當前的日期:2020-10-14
 *          時間原點(0毫秒):1970年 1 月 1 日00:00:00(英國格林威治)
 *          就是計算當前日期到時間原點之間一共經歷了多少毫秒(1602646882205)
 *      注意:
 *          中國屬于東八區,會把時間增加8個小時
 *          1970年 1 月 1 日 00:08:00
 *      把毫秒轉換為日期:
 *          1天 = 24 * 60 * 60 = 86400 秒 = 86400 * 1000 = 86400000毫秒;
 *
 * @author Administrator
 * @date 2020-10-14  上午 11:27
 */
public class Demo01Date {
    public static void main(String[] args) {
        //獲取當前系統一共到 1970年1月1日00:00:00 經歷了多少毫秒
        long time = System.currentTimeMillis();
        long day = time / 86400000;
        long month = day / 30;
        System.out.println("毫秒值:"+time);
        System.out.println("天數:"+day);
        System.out.println("月:"+month);
    }
}

毫秒值:1602668621597
天數:18549
月:618
import java.util.Date;

/**
 * Date類的空參構造方法和Long getTime()方法獲取時間
 *
 * @author Administrator
 * @date 2020-10-14  上午 11:48
 */
public class Demo02Date {
    public static void main(String[] args) {
        demo01();
        demo02();
        demo03();
    }
    /**
     * long getTime()
     * 回傳1970年1月1日 00:00:00 GMT 以來此 Date物件表示的毫秒數,
     * 相當于 System.currentTimeMillsIs(1602654121272)
     */
    private static void demo03() {
        Date date = new Date();
        long time = date.getTime();
        System.out.println(time);
    }


    /**
     * Date類的帶引數的構造方法
     * Date(long date):傳遞毫秒值,把毫秒值轉換為Date日期
     */
    private static void demo02() {
        Date date = new Date(0L);
        System.out.println(date);

        date = new Date(1602646882205L);
        System.out.println(date);
    }

    /**
     * Date類的空參構造方法
     * Date()獲取當前系統的時間和日期
     */

    private static void demo01() {
        Date date = new Date();
        System.out.println(date);
    }
}

輸出結果為:

Wed Oct 14 17:48:04 CST 202
Thu Jan 01 08:00:00 CST 1970
Wed Oct 14 11:41:22 CST 2020
1602668884370

DateFormat類

Java.text.DateFormat 是時間/日期格式化子類的抽象類,我們通過這個類可以幫我完成日期和文本之間的轉換,也就是可以把Date物件與String物件之間進行來回轉換,
格式化:按照指定的格式,從Date物件轉換為String物件,
決議:按照指定的格式,從String物件轉換為Date物件

構造方法:由于DateFormat為抽象類,不能直接使用,所以需要常用的子類java.text.SimpleDateFormat,這個類需要一個模式(格式)來指定格式化或決議的標準,構造方法為:
public SimpleDateFormat(String pattern):用給定的模式和默認語言環境的日期格式符號構造SimpleDateFormat,

引數pattern是一個字串,代表日期是時間的自定義格式,
格式規則:y 年、 M 月、d 日、H 時、m 分、s 秒;
例如 “yyyy-MM-dd HH:mm:ss”
1.String format(Date date):按照指定的模式,把Date日期,格式化為符合模式的字串
2.Date parse(String source):把符合模式的字串決議為Date日期;

代碼演示:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * java.text.DateFormat:是時間/日期格式化子類的抽象類
 * 作用:
 *     格式化:(日期->文本) 決議:(文本->日期)
 * 成員方法:
 *      String format(Date date):按照指定的模式,把Date日期,格式化為符合模式的字串
 *      Date parse(String source):把符合模式的字串決議為Date日期;
 * DateFormat類是一個抽象類,無法直接創建物件使用它,可以使用DateFormat的子類
 *      SimpleDateFormat
 *
 *      構造方法:
 *          SimpleDateFormat(String pattern)
 *          用給定的模式和默認的語言環境的日期格式符號構造 SimpleDateFormat,
 *              引數:
 *              pattern 字串傳遞指定的模式
 *              格式:
 *              小寫y 表示年
 *              大寫M 表示月
 *              小寫d 表示日
 *              大寫H 表示時
 *              小寫m 表示分
 *              小寫s 表示秒
 *              寫對應的模式,會把模式替換為對應的日期和時間;
 *                 例如:
 *                      yyyy年MM月dd日 HH時mm分ss秒
 *                      yyyy-MM-dd HH:mm:ss
 *              注意:
 *                  模式中的字母不能改變,連接模式的符號可以改變
 *
 * @author Administrator
 * @date 2020-10-14  下午 14:09
 */
public class Demo01DateFormat {
    public static void main(String[] args) throws ParseException {
        System.out.println("demo01方法");
        demo01();
        System.out.println("demo02方法");
        demo02();
    }

    /**
     * 使用DateFormat中的方法Date parse,把文本決議為日期;
     * 使用步驟:
     *      1. 創建SimpleDateFormat物件,構造方法中字串指定的模式
     *      2.呼叫SimpleDateFormat物件中的parse方法,把符合構造方法中的字串決議為Data日期
     *      注意事項:
     *              public Date parse(String source)throws ParseException
     *              parse宣告了一個例外叫做ParseException
     *              如果字串和構造方法的模式不一樣,那么程式就會拋出此例外
     *              呼叫了一個拋出例外的方法,就必須處理這個例外,要么throws繼續拋出這個例外,要么try catch自己處理
     */
    private static void demo02() throws ParseException {
        // 1. 創建SimpleDateFormat物件,構造方法中字串指定的模式
        //采用格式:yyyy年MM月dd日 HH時mm分ss秒
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
        SimpleDateFormat tdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        // 2.呼叫SimpleDateFormat物件中的parse方法,把符合構造方法中的字串決議為Data日期
        Date dateOne = sdf.parse("2020年10月14日 14時54分15秒");
        System.out.println("格式一");
        System.out.println(dateOne);
        Date dateTwo = tdf.parse("2020-10-14 14:56:07");
        System.out.println("格式二");
        System.out.println(dateTwo);
    }

    /**
     * 使用DateFormat類中的方法format,把日期格式轉換為文本:
     * 使用步驟:
     *      1.創建SimpleDateFormat物件,構造方法中字串指定的模式
     *      2.呼叫SimpleDateFormat物件中的format方法,按照構造方法指定模式,把Date日期格式化為符合模式的字串(文本)
     */
    private static void demo01() {
        //1.創建SimpleDateFormat物件,構造方法中字串指定的模式
        SimpleDateFormat sdfOne = new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒");
        SimpleDateFormat sdfTwo = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //2.呼叫SimpleDateFormat物件中的format方法,按照構造方法指定模式,把Date日期格式化為符合模式的字串(文本)
        Date date = new Date();
        //采用格式:yyyy年MM月dd日 HH時mm分ss秒
        String strOne = sdfOne.format(date);
        System.out.println("格式一");
        System.out.println(date);
        System.out.println(strOne);
        //采用格式:yyyy-MM-dd HH:mm:ss
        String strTwo = sdfTwo.format(date);
        System.out.println("格式二");
        System.out.println(date);
        System.out.println(strTwo);
    }
}

輸出結果為:

demo01方法
格式一
Wed Oct 14 17:54:12 CST 2020
2020年10月14日 17時54分12秒
格式二
Wed Oct 14 17:54:12 CST 2020
2020-10-14 17:54:12
demo02方法
格式一
Wed Oct 14 14:54:15 CST 2020
格式二
Wed Oct 14 14:56:07 CST 2020

Calendar類

Java.util.Calendar是日歷類,在Date后出現,替換了許多Date的方法,該類見所有可能出現的時間資訊封裝為靜態成員變數,方便獲取,日歷類就是方便獲取各個時間屬性,
獲取方式:Calendar為抽象類,由于語言敏感性,Calendar類在創建物件是并非直接創建,而是通過靜態方法創建,回傳子類物件,如下:
Calendar靜態方法:
Public static Calendar getInstance():使用默認時區和語言環境獲得一個日歷

Calendar常用的成員方法:
? public int get(int field):回傳給自定日歷欄位的值,
? public void set(int field,int amount):將給定的日歷欄位設定為定值
? public abstract void add(int field,int amount):根據日歷的規則,為給定的日歷欄位添加或減去指定的時間量
? public Date getTime:回傳一個表示此Calendar時間值(從歷元到現在的毫秒偏移量)的Date物件

Calendar類提供了很多靜態成員變數,代表給定的日歷欄位:
public final static int YEAR = 1; 年
public final static int MONTH = 2; 月
西方的月份是011,東方的月份是112使用時要給變數+1;
public final static int DATE = 5; 日
public final static int DAY_OF_MONTH = 5; 月中的某一天
public final static int HOUR = 10;時
public final static int MINUTE = 12; 分
public final static int SECOND = 13; 秒

import java.util.Calendar;
import java.util.Date;

/**
 * java.util.Calendar類:日歷類
 * Calendar是一個抽象類,提供了很多操作日歷的方法;(YEAR、MONTH、DAY_OF_MONTH、HOUR)
 * Calendar無法直接創建物件使用,里面有一個靜態方法叫getInstance,該方法回傳了Calendar的子類物件
 * static Calendar getInstance()使用了默認時區和語言環境獲得一個日歷,
 *  成員方法:
 *      public int get(int field):回傳給自定日歷欄位的值,
 *      public void set(int field,int amount):將給定的日歷欄位設定為定值
 *      public abstract void add(int field,int amount):根據日歷的規則,為給定的日歷欄位添加或減去指定的時間量
 *      public Date getTime:回傳一個表示此Calendar時間值(從歷元到現在的毫秒偏移量)的Date物件
 *
 *
 * @author Administrator
 * @date 2020-10-14  下午 15:28
 */
public class Demo01Calendar {
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        //toString方法被重寫,回傳值不是地址;
        System.out.println(c);
        demo01();
        System.out.println();
        demo02();
        System.out.println();
        demo03();
        System.out.println();
        demo04();
    }

    /**
     * public Date getTime:回傳一個表示此Calendar時間值(從歷元到現在的毫秒偏移量)的Date物件
     *  把日歷物件,轉換成日期物件;
     */
    private static void demo04() {
        Calendar calendar = Calendar.getInstance();
        Date date = calendar.getTime();
        System.out.println(date);
    }

    /**
     *  public abstract void add(int field,int amount):根據日歷的規則,為給定的日歷欄位添加或減去指定的時間量
     *  引數:
     *      int field:傳遞知道你過的日歷欄位(YEAR,MONTH...)
     *      int amount:增加/減少指定的值
     *          正數:增加
     *          負數:減少
     */
    private static void demo03() {
        //使用getInstance方法獲取calendar物件
        Calendar calendar = Calendar.getInstance();

        //設定年月日
       calendar.set(2010,9,01);

       //增加
        calendar.add(Calendar.YEAR,10);
        calendar.add(Calendar.MONTH,1);
        calendar.add(Calendar.DATE,14);
        //減少
        calendar.add(Calendar.YEAR,-2);
        calendar.add(Calendar.MONTH,-6);
        calendar.add(Calendar.DATE,-11);
       //獲取年月日
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH);
        int day = calendar.get(Calendar.DATE);

        System.out.println(year+"."+month+"."+day);
    }

    /**
     * public void set(int field,int value):將指定的日歷欄位設定為給定值,
     *  引數:
     *  int field:遞指定的日歷里欄位;{YEAR,MONTH...}
     *  int value:給指定欄位設定的值
     *
     */
    private static void demo02() {
        //getInstance方法獲取Calendar物件
        Calendar calendar = Calendar.getInstance();

        //設定年為9999年
        calendar.set(Calendar.YEAR,9999);

        //設定月為9月
        calendar.set(Calendar.MONTH,9);

        //設定天為9日
        calendar.set(Calendar.DATE,9);

        //同時設定年月日,方法多載
        calendar.set(2020,10,15);

        int month = calendar.get(Calendar.MONTH);
        int year = calendar.get(Calendar.YEAR);
        int day = calendar.get(Calendar.DATE);

        System.out.println(year);
        System.out.println(month);
        System.out.println(day);
    }

    /**
     * public int get(int field):回傳給自定日歷欄位的值,
     * 引數: 傳遞指定的日歷里欄位;{YEAR,Month...}
     * 回傳值:日歷欄位代表的具體的值
     */
    private static void demo01() {
        //getInstance方法獲取Calendar物件
        Calendar c = Calendar.getInstance();
        int year = c.get(Calendar.YEAR);
        System.out.println(year);

        //西方的月份時0~11,東方的月份是1~12;使用時給MONTH變數+1
        //該月是10月,列印得到的是9月
        int month = c.get(Calendar.MONTH);
        System.out.println(month);
        System.out.println(month+1);

        int date = c.get(Calendar.DAY_OF_MONTH);
        int day = c.get(Calendar.DATE);
        System.out.println(date);
    }
}

輸出結果

demo01
2020
9
10
15

demo02
2020
10
15

demo03
2018.4.4

demo04
Thu Oct 15 17:07:35 CST 2020

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/177451.html

標籤:其他

上一篇:幾大排序總結!圖解決議+代碼實體(冒泡、選擇、插入、希爾、快排、歸并)

下一篇:六年面試經驗來分享JAVA基礎面試題

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more