主頁 > 後端開發 > Java 常用類總結(SE基礎)

Java 常用類總結(SE基礎)

2021-04-28 07:35:50 後端開發

本篇博客對java常用類相關知識進行了歸納總結,比較詳細,適用于學習和復習,

1. 字串相關的類

1.1 String

String是一個final類,代表不可變的字符序列,不可被繼承,

String物件的字符內容是存盤在一個位元組陣列byte[]中,JDK1.8中存盤的是char[]注意區別,

  • String實作了Serializable介面,支持序列化
  • 實作了Comparable介面,表示可以比較大小
  • 通過字面量的方式(區別于new)給一個String賦值,此時的字串值在字串常量池中(和方法區在同一個地方)
  • String進行連接操作、重新賦值、replace()等操作時,會重新指定記憶體區域賦值,不使用原有的value進行賦值
String str = "hello";  //字面量賦值
String s1 = new String();//本質上為,this.value = https://www.cnblogs.com/gaoyuan206/archive/2021/04/27/new byte[0]
String s2 = new String(String str); //放一個String型別的引數
String s3 = new String(byte[] a);
String s3 = new String(byte[] a,int off,int length);//構造方法,放char[]也是可以的

考慮如下代碼:

String s1 = "javaEE";
String s2 = "javaEE";
String s3 = new String("javaEE");
String s4 = new String("javaEE");

這里,s1==s2trues1==s3, s1==s4, s3==s4均為false

原因如下:

實際上,通過構造方法來構造String會指向value,而value再去指向字串常量,

String s3 = new String("javaEE");在記憶體中創建了兩個物件:一個是堆中的value結構,一個是常量池中的字串資料,

  • intern() 回傳字串物件的規范表示, 這里會回傳一個字串常量,記憶體空間在常量池中,

另外,有一個關于形參實參方面的需要注意:

public class StringTest {
    String str = new String("hello");
    char[]ch = {'t','e','s','t'};

    public void change(String str,char ch[]){
        str = "hello,world";
        ch[0]='b';
    }

    public static void main(String[] args) {
        StringTest st = new StringTest();
        st.change(st.str, st.ch);
        System.out.println(st.str);
        System.out.println(st.ch);
    }
}

這里的結果為:"hello" /n "best"

類似于C語言中,根據指標進行交換兩個指標中的內容,值傳遞程序中,實際引數的值傳入形參,形成副本,方法結束后形參消失,實際引數值并沒有改變,

另外還有一點需要注意:

String str = null; //這個指標指向null,并沒有實體化
System.out.println(str);//輸出”null“
System.out.println(str.length());//例外

1.2 String的常用方法

String的常用方法總結如下(未總結的請自己查閱):

同時還需要注意的一些方法如下,重要程度依次降低,但仍需掌握:

注意:上表下部的4個int方法如果未找到,回傳的均為-1

再舉例一些方法(一些可能不太常用的):

String regex一般都用正則運算式表示

String轉換為基本資料型別或包裝類

呼叫包裝類的靜態方法:對應的型別,如要轉int,呼叫Integer.parseInt(str)

基本資料型別、包裝類轉為String

呼叫String多載的valueOf(xxx)

另外

int num = 100;
String str = num+"";  //存在變數才會回傳堆中,如果常量相加則會回傳常量池

這樣也可以轉換為String,但是需要注意,該型別是在堆中生成了value陣列,和new String的方式類似,

String與char[], byte[]的相互轉換

String-->char[]:呼叫String.toCharArray即回傳了一個char[]

char[]或byte[] --> String:直接呼叫構造器

String-->byte[]:呼叫String.getBytes即回傳了一個byte[],使用默認的字符集(例如"gbk、utf-8"等)進行轉換,

getBytes(Charset charset) 使用給定的charset將該String編碼為位元組序列,將結果存盤到新的位元組陣列中,不同的編碼方式回傳的可能不同,

1.3 StringBuffer與StringBuilder

StringStringBuffer, StringBuilder之間的異同?

String:不可變的字符序列,注意理解不可變性

StringBuffer:可變的字符序列,執行緒安全,效率較低(都是同步方法)

StringBuilder:jdk5.0新增,可變的字符序列,執行緒不安全,效率高

final byte[] value  //String中的
byte[] value  //StringBuffer和StringBuilder中的

StringBuffer

String str = new String();// new char[0]
String str1 = new String("abc");//new char[] {'a','b','c'};

StringBuffer sb = new StringBuffer();//new char[16] 初始容量為16
sb.append('a');// value[0]='a';依次進行

StringBuffer sb1 = new StringBuffer("abc");//new char["abc".length()+16]
System.out.println(sb.length()); //return的是count,每append操作count+=len,這里為1,并不是value.length

接下來看StringBuffer的擴容機制

簡述:一般情況下,若容量不夠的時候,擴充為原來容量的2倍+2,同時將原有陣列的元素復制到新陣列中

JDK15中,原始碼已經改變,為:

private int newCapacity(int minCapacity) {
    int oldLength = value.length;
    int newLength = minCapacity << coder;
    int growth = newLength - oldLength;
    int length = ArraysSupport.newLength(oldLength, growth, oldLength + (2 << coder));
    if (length == Integer.MAX_VALUE) {
        throw new OutOfMemoryError("Required length exceeds implementation limit");
    }
    return length >> coder;
}

ArraysSupport.newLength這里就是比較growtholdLength + (2 << coder)誰大,大者加上oldLength(這樣就成了2倍+2),這里coder原始值為0,我只看了append相關原始碼,coder值并沒有變,其他原始碼沒有看,注意可能發生改變,

JDK1.8中是直接進行移位操作+2的,現版本已更新,

StringBuffer常用方法

StringBuilder的API與之相同,只是執行緒不安全,沒有保證同步,

2. 日期時間

2.1 JDK8之前的日期時間

java.lang.System中的static long currentTimeMillis() 回傳當前時間與1970年1月1日00:00:00之間的時間差(以毫秒為單位),適用于計算時間差,(時間戳)

計算世界時間的主要標準有:UTC, GMT, CST

java.util.Date

java.sql中也有一個Date類,是java.util.Date的子類

表示特定的時間,精確到毫秒

兩個構造器的使用:

構造器一: 創建一個當前時間的Date物件

Date date = new Date();
System.out.println(date);//sout自帶.toString,輸出:Mon Apr 26 01:16:00 CST 2021
System.out.println(date.getTime());//回傳當前date物件對應的時間戳

//Date中的無參構造原始碼
public Date() {
        this(System.currentTimeMillis());
    }

構造器二: 創建了一個指定時間的Date物件

Date date1 = new Date(1619371381884L); //隨便找了個時間戳
System.out.println(date1);

構造器的其余方法均已過時,不建議使用,

java.sql.Date對應的是資料庫中的日期時間類,一般在資料庫互動時使用

java.sql.Date date2 = new java.sql.Date(1619371381884L); //2021-04-26
System.out.println(date2);

該類沒有無參構造,輸出形式不同,

兩種Date互轉:

Date date3 = (Date)date2;  //子類轉父類
System.out.println(date3);
java.sql.Date date4 = new java.sql.Date(new Date().getTime()); //父類轉子類,不能強制型別轉換

java.text.SimpleDateFormat

允許進行格式化:日期-->文本,決議:文本-->日期

格式化:

決議:

Date parse(String text, ParsePosition pos) 從字串中決議文本以產生一個 Date

pattern舉例如下圖:

demo1默認模式

SimpleDateFormat sdf = new SimpleDateFormat();
Date date = new Date();
String format = sdf.format(date);
System.out.println(date); //Mon Apr 26 02:38:11 CST 2021
System.out.println(format); //2021/4/26 上午2:38

//決議程序
String str = "2021/4/16 上午12:38";  //格式有要求
Date date1 = sdf.parse(str);
System.out.println(date1); //Fri Apr 16 00:38:00 CST 2021

使用指定模式:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy,MM,dd HH:mm:ss aaa");
String str2 = sdf1.format(date);
System.out.println(str2); //2021,04,26 02:47:22 上午
//決議的話也需要按這種模式進行,正常模式通常為”yyyy-MM-dd hh:mm:ss“
String str3 ="2021,04,26 02:47:22 上午";
Date date2 = sdf1.parse(str3);
System.out.println(date2); //Mon Apr 26 02:47:22 CST 2021

Calendar

Calendar是一個抽象類,主要用于完成日期欄位之間的相互操作,

Calendar提供了一種類方法getInstance ,用于獲取此型別的一般有用的物件, CalendargetInstance方法回傳一個Calendar物件,其日歷欄位已使用當前日期和時間進行初始化:

Calendar rightNow = Calendar.getInstance();呼叫了它的子類GregorianCalendar的構造器

Calendar calendar = Calendar.getInstance();
System.out.println(calendar.getClass());//class java.util.GregorianCalendar

Calendar物件可以產生實作特定語言和日歷風格的日期時間格式化所需的所有日歷欄位值(例如日語 - 公歷,日語 - 繁體), Calendar定義某些日歷欄位回傳的值的范圍及其含義, 例如,日歷系統第一個月的值為MONTH == JANUARY為所有日歷, 其他值由具體的子類定義,如ERA , 有關詳細資訊,請參閱各個物體檔案和子類檔案,

常用方法:

void set(int field, int value) 將給定的日歷欄位設定為給定的值,

void add(int field, int amount) 根據日歷的規則,將指定的時間量添加或減去給定的日歷欄位,

final Date getTime() 回傳一個 Date表示此物體 Calendar的時間值

void setTime(Date date) 使用給定的 Date設定此日歷的時間

demo如下:

Calendar calendar = Calendar.getInstance();
//get
int i = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(i);//獲取這個月的第幾天,本實體為26,當前時間4/26
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));//類似上一個
//set
calendar.set(Calendar.DAY_OF_MONTH,12);
int j = calendar.get(Calendar.DAY_OF_MONTH);  //12,改變了
System.out.println(j);
//add
calendar.add(Calendar.DAY_OF_MONTH,3);
j = calendar.get(Calendar.DAY_OF_MONTH); //15,還是改變,增加3天
System.out.println(j);
//getTime
Date date = calendar.getTime(); //Thu Apr 15 03:10:28 CST 2021,回傳時間戳
System.out.println(date);
//setTime:Date --> Calendar
calendar.setTime(date);//直接操作當前物件
int days = calendar.get(Calendar.DAY_OF_MONTH);  //15
System.out.println(days);

獲取月份時,一月是0;獲取星期幾時,周日是1

2.2 JDK8中的日期時間

因為之前的類具有4個問題:

  • 可變性:例如Calendarset,它們都是可變的
  • 偏移性:Date中的年份都是從1900開始,月份從0開始,如果呼叫有參構造,會發生偏移,
  • 格式化:格式化只對Date有用,對于Calendar則不行
  • 執行緒不安全

java8中的java.time API已經糾正了過去的缺陷,

時間日期的相關packge:

LocalDate, LocalTime, LocalDateTime是其中比較重要的幾個類,他們的實體均為不可變實體,使用ISO-8601日歷系統,

ISO-8601日歷系統是國際標準話組織制定的現代公民的日期和時間的表示法(公歷)

相關方法:

上面四個層次其實就是構造、get、set、加減操作,和Calendar類似,

localDate是一個final類,有構造方法,類似String, Math,舉例當前時間生成:

LocalDate localDate = LocalDate.now();  //2021-04-27
LocalTime localTime = LocalTime.now();  //19:24:37.171676500
LocalDateTime localDateTime = LocalDateTime.now();  //2021-04-27T19:24:37.171676500

舉例設定指定時間:

LocalDateTime localDateTime1 = LocalDateTime.of(2020,10,6,13,12,13);//2020-10-06T13:12:13

舉例相關get操作:

System.out.println(localDateTime.getMonth()); //APRIL
System.out.println(localDateTime.getMonthValue()); //4

這里的月份是從1開始的,

.with操作(設定相關屬性):

LocalDate localDate1 = localDate.withDayOfMonth(22); //2021-04-22
System.out.println(localDate);  //2021-04-27
System.out.println(localDate1);

locatDate實體本身并沒有發生變化(不可變性),

加減操作:

LocalDate localDate2 = localDate.plusDays(4); //localDate為4-27
System.out.println(localDate2);//2021-05-01
//減的話即將Plus換位minus

2.3 Instant(瞬時)

時間線上的一個瞬時點,可能用來記錄應用程式中的事件時間戳,

同樣是起始于1970年1月1日00:00:00的一個時間戳(納秒級),

相關方法:

時間標準主要有:UTC, GMT, CST,UTC時間與倫敦本地時間相同,與北京相差8個小時(早了8個小時)

Instant instant = Instant.now();
System.out.println(instant); //2021-04-27T11:45:00.321544Z,實際時間19:45,相差8個小時

偏移應用:

OffsetDateTime offsetDateTime = instant.atOffset(ZoneOffset.ofHours(8));
System.out.println(offsetDateTime);  //2021-04-27T19:48:17.448368100+08:00

回傳時間戳(毫秒數):

System.out.println(instant.toEpochMilli());//1619524168468

設定特定時間,和Date類似:

Instant instant1 = Instant.ofEpochMilli(1619524168468L);  //2021-04-27T11:49:28.468Z,這里的時間就是毫秒級的了
System.out.println(instant1);

2.4 DateTimeFormatter

三種預定義的標準格式:

DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
//格式化:日期-->字串
LocalDateTime localDateTime = LocalDateTime.now();
String str = dateTimeFormatter.format(localDateTime);  //將當前時間格式化
System.out.println(str); //2021-04-27T19:59:19.0153049

//決議:字串-->日期
TemporalAccessor temporalAccessor = dateTimeFormatter.parse("2021-04-27T19:59:19.0153049");
System.out.println(temporalAccessor);//{},ISO resolved to 2021-04-27T19:59:19.015304900

本地化相關的格式:

DateTimeFormatter format = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
//SHORT 2021/4/27 下午8:09,  MEDIUM  2021年4月27日 下午8:10:02,
// 在java15中LONG會例外,1.8不會,DateTime中沒有FULL,Date中有
String str1 = format.format(localDateTime);
System.out.println(str1);

自定義格式(類似于SimpleDateFormat):

DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss");
String str1 = format.format(localDateTime); //2021-04-27 08:21:52
System.out.println(str1);
TemporalAccessor temporalAccessor1 = format.parse(str1);
System.out.println(temporalAccessor1);
//{MicroOfSecond=0, HourOfAmPm=8, MilliOfSecond=0, NanoOfSecond=0, MinuteOfHour=21, SecondOfMinute=52},ISO resolved to 2021-04-27

決議同上面即可,注意決議時需要一個TemporalAccessor轉承,

其他的一些API(不再詳細贅述):

以上三種Date之間的轉換:

3. 比較器

這里牽扯到物件的比較

實作Comparable介面(自然排序),重寫compareTo()方法,重寫的規則是:當前物件this大于形參物件obj,回傳正整數;this小于,回傳負整數;this等于,回傳0;

使用Comparator介面(定制排序)

適用于該型別沒有實作Comparable介面,且不方便修改代碼;或者實作了Comparable介面但是排序規則不適合當前操作

對比:

  • Comparable介面的方式可以保證類的物件在任何位置都可以實作比較
  • Comparator介面屬于臨時性的比較

關于應用在之前的博客中已有實作,可參考

(Set, Map, Collections工具類)JAVA集合框架二

4. System, Math, BigInteger 和 BigDecimal

4.1 System

java.lang.System

成員變數:in, out ,err三個,分別代表標準輸入流(鍵盤輸入),標準輸出流(顯示幕),標準錯誤輸出流(顯示幕)

static long currentTimeMillis() 回傳當前時間(以毫秒為單位),表達格式同時間戳,

static void exit(int status) 終止當前運行的Java虛擬機,status為0時代表正常退出,非零則為例外退出,

static void gc() 運行垃圾回收器,請求系統進行垃圾回收,

static String getProperty(String key) 獲取指定鍵指示的系統屬性,對于常用的key

4.2 Math

以上為Math常用方法總結,可見開發檔案,

4.3 BigInteger與BigDecimal

BigInteger

構造方法:

BigInteger提供所有java的基本整數運算子的對應物,并提供java.lang.Math的所有相關方法,另外,還提供一下運算:模算術,GCD計算,質數測驗,素數生成,位操作等,

BigDecimal

FloatDouble的精度不能滿足用戶需求時,可以使用BigDecimal

構造方法:

BigDecimal(double val)double轉換為 BigDecimal ,這是 double的二進制浮點值的精確十進制表示,

BigDecimal(String val) 將BigDecimal的字串表示 BigDecimal轉換為 BigDecimal

還有很多,只舉例了兩種常用的,

加減乘除操作類似于BigInteger,說明一下devide

scale即保留多少位小數,背景關系設定用的不多不再贅述,

幾種舍入模式:

其中,有些翻譯不夠準確,解釋一下:

ROUND_UP,即向上舍,0.1203456789,當精度為3的時候,按照ROUND_UP模式,結果是0.121

ROUND_DOWN即向下舍,

ROUND_HALF_EVEN,像鄰近的偶數方向舍,

這幾個可以參考對應英文進行理解,

4.4 個人總結的其他類

其實經常用到的還有Ramdom,生活中經常用到亂數,

例如取一個隨機整數,

Random r1 = new Random();
int i = r1.nextInt(100); //取0到100的隨機整數,無 100

其他方法都是與之類似的,具體可參考開發檔案,

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

標籤:其他

上一篇:實作spaCy訓練詞性標注模型

下一篇:Apache HTTP Server與Tomcat整合學習記錄

標籤雲
其他(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)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more