主頁 > 後端開發 > 第 3 章 處理資料

第 3 章 處理資料

2022-07-22 08:13:44 後端開發

說明

看《C++ Primer Plus》時整理的學習筆記,部分內容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,張海龍 袁國忠譯,人民郵電出版社,只做學習記錄用途,

目錄
  • 說明
  • 3.1 簡單變數
    • 3.1.1 變數名
    • 3.1.2 整型
    • 3.1.3 符號整型
    • 3.1.4 無符號整型
    • 3.1.5 選擇整型型別
    • 3.1.6 整型字面值
    • 3.1.7 C++ 如何確定常量的型別
    • 3.1.8 char 型別:字符和小整數
    • 3.1.9 bool 型別
  • 3.2 const 限定符
  • 3.3 浮點數
    • 3.3.1 書寫浮點數
    • 3.3.2 浮點型別
    • 3.3.3 浮點常量
    • 3.3.4 浮點數的優缺點
  • 3.4 C++ 算術運算子
    • 3.4.1 運算子優先級和結合性
    • 3.4.2 除法分支
    • 3.4.3 求模運算子
    • 3.4.4 型別轉換
    • 3.4.5 C++11 中的 auto 宣告

3.1 簡單變數

內置的 C++ 型別分兩組:基本型別復合型別,本章主要介紹基本型別

3.1.1 變數名

變數命名時,需遵循以下規則:

  • 名稱只能使用字母數字下劃線
  • 名稱第一個字符不能是數字
  • 區分大寫字母與小寫字母,
  • 名稱不能是 C++ 關鍵字
  • 兩個下劃線下劃線和大寫字母打頭的名稱被保留給實作(編譯器及其使用的資源)使用,以一個下劃線開頭的名稱被保留給實作,用作全域識別符號,
  • C++ 對名稱沒有長度限制,但有些平臺有長度限制,

倒數第二點原因:使用像 _time_stop_Donut 這樣的名稱不會導致編譯錯誤,但會導致行為的不確定性,不知道結果將是什么,最后一點需注意:ANSI C (C99標準) 只保證名稱中的前 63 個字符有意義(前 63 個字符相同的名稱被認為是相同的,即使第 64 個字符不同),目前比較流行的有 4 種命名習慣:

  1. 小駝峰命名法:第一個單詞首字母小寫,后面單詞首字母大寫,如 myVariableName
  2. 大駝峰命名法:又稱帕斯卡命名法(Pascal),所有單詞的首字母都大寫,如 MyVariableName
  3. 匈牙利命名法:變數名 = 屬性 + 型別 + 物件描述,如 m_lpctstrStudentName 表示類中一個成員變數(屬性m_),型別為指向字串常量的長指標(型別lpctstr),所指字串常量用來表示學生姓名(物件描述StudentName),
  4. 下劃線命名法:用下劃線分隔單詞,如 my_variable_name

3.1.2 整型

計算機語言只能表示所有整數的一個子集,存盤時使用的記憶體量越大,可表示的整數值范圍也越大,C++ 的基本整型按記憶體量寬度排序有 charshortintlong和 C++11 新增的long long,其中每種型別都有符號版本無符號版本,因此總共有 10 種型別可供選擇(實際上shortshort int的簡稱,longlong int的簡稱,long longlong long int的簡稱,但一般不使用長名稱),最好在宣告變數時就對它的值進行初始化,即將宣告陳述句與賦值陳述句合并在一起,以防出現未初始化就使用變數的情況,這時變數的值是不確定的,C++ 變數初始化有以下幾種方式:

//傳統C語言方式
int uncles = 5;

//C++支持的方式
int uncles(5);

//C++98支持的方式
int uncles = {5};

//C++11支持的方式
int uncles = {5};
int uncles{5};

//C++11將變數初始化為0
int uncles = {};
int uncles{};

3.1.3 符號整型

不是在所有的系統中,每種型別的寬度都相同,例如int不總是 32 位,在早期的 16 位作業系統中,int是 16 位,但在后來的 32 位作業系統以及 64 位作業系統中,int是 32 位,C++ 標準只確保了最小寬度:

  • short至少 16 位,
  • int至少和short一樣寬,
  • long至少 32 位,且至少和int一樣寬,
  • long long至少 64 位,且至少和long一樣寬,

想知道某種整型的記憶體量大小,可以使用sizeof運算子回傳型別或變數的記憶體量寬度,單位為位元組(位元組的含義也依賴于實作,在一個系統中一個位元組可能是 8 位,而在另一個系統中可能是 16 位),對型別名(如int)使用sizeof運算子時,應將名稱放在括號里面,但對變數名(如n_short)使用該運算子,括號是可選的,

//對型別名使用sizeof運算子(必要括號)
cout << "int is " << sizeof(int) << " bytes.\n";

//對變數名使用sizeof運算子(括號可選)
cout << "short is " << sizeof(n_short) << " bytes.\n";
cout << "short is " << sizeof n_short << " bytes.\n";

想知道某種整型所能表示的整數范圍,一種方式是根據該整型的記憶體量寬度進行計算,例如:若short為 16 位,則其符號版本可表示的整數范圍為 \([-2^{15}, 2^{15}-1]\)\([-32768, 32767]\),無符號版本可表示的整數范圍為 \([0, 2^{16}-1]\)\([0, 65535]\),這樣計算的原因可參考原碼補碼反碼的相關資料,另一種方式是#include <climits>,這個庫檔案里面包含了關于整型限制的資訊,使用示例如下:

//獲得int所能表示的最小整數值
cout << "Minimum int value = "https://www.cnblogs.com/young520/archive/2022/07/22/<< INT_MIN << endl;

//獲得當前系統一個位元組占多少位
cout <<"Bits per byte = " << CHAR_BIT << endl;

climits檔案中將上述限制資訊定義為

#define INT_MIN -2147483648

編譯指令#define的作業方式與文本編輯器的全域搜索并替換的命令相似,它告訴前處理器:查找獨立的標記INT_MIN并將其替換為-2147483648,但它會跳過嵌入的INT_MIN,不會將PINT_MINTM替換為-2147483648,C++ 有一種更好的創建符號常量的方法,就是使用const關鍵字,這將在后續章節學習,

3.1.4 無符號整型

前面介紹的 4 種符號整型都有對應的無符號版本,僅當數值不會為負時才使用無符號版本:unsigned shortunsigned intunsigned longunsigned long long整型變數的取值如果超過了取值限制,其值將成為另一端點的值,依然以 16 位short為例,其符號版本的最大值加 1 后,值會變成 -32768,最小值減 1 后,值會變成 32767,其無符號版本的最大值加 1 后,值會變成 0,最小值減 1 后,值會變成 65535,這種現象分別稱為整型的上溢下溢

3.1.5 選擇整型型別

int被設定為計算機處理起來效率最高的長度,若沒有非常有說服力的理由選擇其他型別,則應首選int,若變數取值不可能為負數,則應首選無符號版本,若變數取值可能超過 16 位整數的最大值,則應首選long型別,這樣可確保程式移植到 16 位系統時不會出現問題,若變數取值超過 20 億(\(2^{31}=2147483648\)),則可選擇long long,若存在大型陣列且節省記憶體很重要,可考慮使用short

3.1.6 整型字面值

整型字面值是顯式地書寫的常量,C++ 能夠以三種不同的計數方式來書寫整數:基數為 10、基數為 8(老式UNIX版本)、基數為 16(硬體黑客的最愛),C++ 使用前一(兩)位來標識數字常量的基數,如果第一位為 1~9,則基數為10(十進制),例如 93,如果第一位為 0,第二位為 1~7,則基數為8(八進制),例如 042(等于十進制數 34),如果前兩位為 0x 或者 0X,則基數為16(十六進制),例如 0x42(等于十進制數 66),

//十進制
int chest = 42;

//八進制
int waist = 042;

//十六進制
int inseam = 0x42;

3.1.7 C++ 如何確定常量的型別

數字常量后面可以添加后綴以指明型別:

后綴 常量型別
l , L long
u , U unsigned int
UL , LU , ul , lu , Ul , Lu , uL , lU unsigned long
LL , ll long long
ULL , ull , Ull , uLL unsigned long long

對于不帶后綴的十進制整數,使用下面幾種型別中能夠存盤該數的最小型別做默認值:intlonglong long

對于不帶后綴的十六進制和八進制整數,使用下面幾種型別中能夠存盤該數的最小型別做默認值:intunsigned intlongunsigned longlong longunsigned long long

3.1.8 char 型別:字符和小整數

char 型別是專為存盤字符(如字母和數字)而設計的,通常為 8 位,也用來表示比 short 更小的整型,常用的符號集有 ASCII字符集國際Unicode字符集,例如字符 A 的 ASCII 碼是 65,字符 a 的 ASCII 碼是 97,另外還有一種特殊的字符:轉義字符,常用的轉義字符有:

字符名稱 ASCII符號 C++代碼 十進制ASCII碼 十六進制ASCII碼
換行符 NL(LF) \n 10 0xA
水平制表符 HT \t 9 0x9
垂直制表符 VT \v 11 0xB
回車 CR \r 13 0xD
反斜杠 \ \\ 92 0x5C
單引號 ' \' 39 0x27
雙引號 " \" 34 0x22

可以使用數字轉義序列(只支持八進制、十六進制)或符號轉義序列來表示轉義字符,但數字轉義序列與特定的編碼方式(如ASCII)相關,而符號轉義序列適用于任何編碼方式,可讀性也更強,比如\n\012\0xA 都表示換行符,C++ 標準還允許實作提供擴展源字符集和擴展執行字符集,這種機制獨立于任何特定的鍵盤,使用的是通用字符名,通用字符名以 \u 或者 \U 打頭,\u 后接 8 個十六進制位,\U 后則是 16 個十六進制位,這些位表示的是字符的 ISO 10646 碼點,

char 用于表示整型時,其默認情況下既不是沒有符號,也不是有符號,這由具體的 C++ 實作來決定,可以顯式地對其進行設定:

//默認可能是無符號,也可能是有符號
char fodo;

//顯式宣告為無符號
unsigned char bar;

//顯式宣告為有符號
signed char snark;

寬字符型別 wchar_t 可以表示擴展字符集,它的記憶體量寬度由 C++ 實作來決定,可能是 16 位,也可能是 32 位,可能是有符號的,也可能是無符號的,其底層型別可能是 int 也可能是 unsigned short ,前綴 L 可以用來指明寬字符常量與寬字串:

//右邊為寬字符常量
wchar_t bob = L'P';

//輸出寬字串
std::wcout << L"tall" << endl;

C++11 新增了型別 char16_tchar32_t ,這兩者都是無符號的,分別長 16 位、32 位,其底層型別也是一種內置整型,具體底層型別隨系統而變化,前綴 u 用來指明 char16_t 字符常量和字串常量,前綴 U 用來指明 char132_t 字符常量和字串常量,可使用通用字符名來對它們進行初始化,

3.1.9 bool 型別

ANSI/ISO C++ 標準添加了一種名叫 bool 的新型別,它只有兩種取值 true 或者 false,常用于判斷陳述句,記憶體量寬度一般為 8 位,過去,C++ 和 C 一樣,是沒有布爾型別的,布爾型別支持隱式轉換,任何數字值或指標值都可以轉換為 bool 值,轉換時任何非零值都被轉為 true ,零值轉換為 false ,布林值也可以隱式提升為 int 型別,true被轉換為 1,false被轉換為 0,

//布林值隱式提升為1
int ans = true;

//布林值隱式提升為0
int ans = false;

//非零被轉換為true
bool ans = -100;

//零值被轉換為false
bool ans = 0;

3.2 const 限定符

創建常量的通用格式如下:

const type name = value;

應該在宣告常量時就對其進行初始化,如果在宣告常量時沒有初始化,則該常量的值是不確定的,且無法修改,常量被初始化后,其值就被固定了,編譯器將不允許再修改該常量的值,const 常量相比于 #define 常量的好處有三點:明確指定型別作用域限制可用于復雜型別

C++constANSI Cconst 有兩點主要區別:C++ 版本有作用域限制、可在C++ 中用來宣告陣列長度

3.3 浮點數

浮點型別是 C++ 的第二組基本型別,它能夠表示帶小數部分的數字,

3.3.1 書寫浮點數

C++ 有兩種方式書寫浮點數,一種是常用的標準小數點表示法,另一種是 E 表示法

//標準小數點表示法
12.34;

//E表示法(中間不能有空格)
2.52e+8;
2.52e8;
2.52E+8;
2.52E8;
2.52e-8;
2.52E-8;

3.3.2 浮點型別

ANSI C 一樣,C++ 也有 3 種浮點型別:floatdoublelong double,C 和 C++ 對浮點數記憶體量寬度的要求是:

  • float至少 32 位,
  • double至少 48 位,且至少和float一樣寬,
  • long double至少和double一樣寬,

通常,float為 32 位,double為 64 位,long double為 80、96 或128 位,可以通過 #include <cfloat>獲取各型別浮點數所能表示的數值范圍,各浮點型別所能表示的精度(有效位數)一般為:float至少 6 位,double至少 15 位,long double至少 18 位,

3.3.3 浮點常量

浮點常量后面可以添加后綴以指明型別(部分老式編譯器可能不支持浮點常量后綴):

后綴 常量型別
f , F float
l , L long double

對于不帶后綴的浮點常量,默認型別為 double

3.3.4 浮點數的優缺點

與整數相比,浮點數有兩大優點:可表示整數之間的值可表示的數值范圍更大

與整數相比,浮點數也有兩大缺點:運算更慢精度將降低

3.4 C++ 算術運算子

C++ 提供了 5 種運算子來完成基本算術計算:

  • 加法運算子 + 執行加法運算,例如 \(4+20=24\)
  • 減法運算子 - 執行減法運算,例如 \(12-3=9\)
  • 乘法運算子 * 執行乘法運算,例如 \(12*4=112\)
  • 除法運算子 / 執行除法運算,例如 \(1000/5=200\)
  • 求模運算子 % 執行取余運算,兩個運算元必須都為整數,它生成第一個整數除以第二個整數后的余數,計算結果滿足等式 \(a\%b=a-(a/b)*b\)

3.4.1 運算子優先級和結合性

當多個運算子可用于同一運算元時,C++ 使用優先級規則來決定首先使用哪個運算子,也可用括號來執行自己定義的優先級,乘法除法求模運算子的優先級相同,加法減法運算子的優先級相同,但比其他三個要低,當兩個運算子的優先級相同且作用于同一個運算元時,C++ 使用結合性規則來決定首先使用哪個運算子,上述 5 種運算子的結合性規則都是從左到右

3.4.2 除法分支

除法運算子 / 的行為取決于運算元的型別,如果兩個運算元都是整數,則 C++ 將執行整數除法,結果的小數部分將被丟棄,即向零取整,若其中有一個(或兩個)運算元是浮點值,則結果的小數部分將保留,結果為浮點數

3.4.3 求模運算子

求模運算子 % 回傳整數除法的余數,尤其適用于解決要求將一個量分成不同的整數單元的問題,例如單位轉換,

3.4.4 型別轉換

整型和浮點型統稱為算術型別,在以下情況下 C++ 將自動執行型別轉換:

  • 將一種算術型別的值賦給另一種算術型別的變數時,
  • 運算式中包含不同算術型別時,
  • 將引數傳遞給函式時,

自動型別轉換時的規則如下:

  1. 賦值以及普通初始化:將一種算術型別的值賦給另一種算術型別的變數時,值將被轉換為接收變數的型別,有些轉換是安全的,但轉換時也可能出現以下問題:

    轉換 潛在問題
    大浮點數轉小浮點數(如doublefloat 精度(有效位數)降低,超過取值范圍的結果是不確定的
    浮點數轉整型(如doubleint 小數部分丟失(向零取整),超過取值范圍的結果是不確定的
    大整型轉小整型(如longshort 超過取值范圍的結果會出問題,此時只復制右邊的位元組
  2. 串列初始化:C++11 將使用大括號\(\{\}\)的初始化稱為串列初始化,這種初始化方式對型別轉換的要求更嚴格,它不允許縮窄轉換,上面表格中浮點數轉整型在這是不被允許的,當大浮點數轉小浮點數、大整型轉小整型時,若超過了目標型別的取值范圍,也是不被允許的,

  3. 運算式中的轉換:編譯器通過校驗表以及整型級別來確定算術運算式中的型別轉換,有符號整型按級別從高到低依次為long longlongintshortsigned char,無符號整型的排列順序與有符號整型相同,型別charsigned charunsigned char的級別相同,型別bool的級別最低,wchar_tchar16_tchar32_t的級別與其底層型別相同,校驗表的規則較復雜,這里只舉一個簡單的例子:兩個short整型進行算術運算時將先做整型提升至int,然后再運算,最后再轉回short

  4. 傳遞引數時的轉換:傳遞引數時的型別轉換通常由 C++ 原型控制,也可取消原型對引數傳遞的控制,這將在第 7 章介紹,

  5. 強制型別轉換:C++ 允許通過強制型別轉換機制顯式地進行型別轉換,強制轉換的格式有兩種:

    //C語言風格
    (typeName) value;
    
    //純粹的C++風格
    typeName (value);
    

    強制型別轉換不會修改變數本身,而是創建一個新的、指定型別的值,可以在運算式中使用這個值,C++ 還引入了 4 個強制型別轉換運算子,這將在第 15 章介紹,其中static_cast<>可用于將數值從一種數字型別轉換為另一種數值型別:

    //使用運算子強制轉換為typeName型別
    static_cast<typeName> (value);
    

3.4.5 C++11 中的 auto 宣告

C++ 重新定義了 C 語言中的 auto 關鍵字,在初始化宣告中,如果使用關鍵字auto ,而不指定變數的型別,編譯器將把變數的型別設定成與初始值相同(自動型別推斷):

//自動推斷為int型別
auto n = 100;

//自動推斷為double型別
auto x = 1.5;

//自動推斷為long double型別
auto y = 1.3e12L;

本文來自博客園,作者:木三百川,轉載請注明原文鏈接:https://www.cnblogs.com/young520/p/16504130.html

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

標籤:其他

上一篇:HTTPClient示例分享

下一篇: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)

熱門瀏覽
  • 【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