Objective-C如何使用物件集合學習系列二
c
)
OBJECT AT INDEX 1 EXCHANGED WITH OBJECT AT INDEX 2 IN ARRAY: (
B,A,a,c
)
OBJECT 'A' REMOVED IN ARRAY: (
B,a,c
)
OBJECT AT INDEX 1 REMOVED IN ARRAY: (
B,
c)
LAST OBJECT REMOVED IN ARRAY: (
B
)
ALL OBJECTS REMOVED IN ARRAY: (
)
3.8 將陣列儲存到檔案系統中
問題
你想將陣列中的物件儲存到檔案系統中以供其他程式使用。
解決方案
如果陣列包含了數字或字串物件的列表,那麼可以將所有這些物件儲存到檔案系統中以供後續使用,使用 writeToFile:atomically:方法可以做到這一點。注意,該方法無法處理自定義物件。自定義物件需要使用 NSCoding 協議並使用歸檔類(參見第 9 章)或 Core Data(參見第 10 章)。
說明
該攻略需要建立如下由字串與數字組成的陣列:
NSArray *listOfObjects = [NSArray arrayWithObjects:@"A", @"B", @"C",[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumber numberWithInt:3],nil];
要想將陣列儲存到檔案系統中,首先需要如下檔案引用:
NSString *filePathName = @"/Users/Shared/array.txt";
說明:
本攻略假設你使用的是 Mac 應用。iOS 檔案引用的工作方式與此不同,參見 2.5 節以瞭解如何獲得 iOS 檔案引用。
現在可以使用 writeToFile:atomically:方法將陣列內容寫到 Mac 檔案系統中:[listOfObjects writeToFile:filePathName
atomically:YES];
參見程式清單 3-12。程式碼
程式清單3-12
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSArray *listOfObjects = [NSArray arrayWithObjects:@"A", @"B", @"C",
[NSNumber numberWithInt:1], [NSNumber numberWithInt:2], [NSNumbernumberWithInt:3], nil];
NSString *filePathName = @"/Users/Shared/array.txt";[listOfObjects writeToFile:filePathName
}
return 0;}
使用
atomically:YES];
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。使用 Finder 找到建立的檔案,位於/Users/Shared/array.txt。下面列出文字檔案的內容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0">
<array>
<string>A</string>
<string>B</string>
<string>C</string>
<integer>1</integer>
<integer>2</integer>
<integer>3</integer>
</array>
</plist>
資料以 XML 格式組織為屬性列表(一種儲存鍵資料的 Objective-C 格式)。
3.9 從檔案系統讀取陣列
問題
有一些應用可以訪問到的檔案,其中包含了以陣列形式組織的內容,你想在應用中使
用這些內容。
解決方案
如果你有通過陣列建立的檔案(使用 writeToFile:atomically:方法儲存),那麼可以使用initWithContentsOfFile:建構函式例項化新的陣列,新陣列是由檔案內容構成的。
說明
本攻略使用 3.8 節中的檔案(已將陣列的內容儲存到檔案系統中)。因此,這裡會使用相同的檔案路徑名:
NSString *filePathName = @"/Users/Shared/array.txt";
接下來就可以使用 initWithContentsOfFile:建構函式建立由檔案內容構成的新陣列:NSArray *listOfObjects = [[NSArray alloc] initWithContentsOfFile:filePathName];參見程式清單 3-13。
程式碼
程式清單3-13 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSString *filePathName = @"/Users/Shared/array.txt";NSArray *listOfObjects = [[NSArray alloc]
initWithContentsOfFile:filePathName];
NSLog(@"%@", listOfObjects);
注意:
本攻略假設你使用的是 Mac 應用。iOS 檔案引用的工作方式與此不同,參見 2.5 節以瞭解如何獲得 iOS 檔案引用。
}
return 0;}
使用
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。通過日誌可以檢視陣列內容:(
A,B,C,1,2,3
)
3.10 建立字典
問題
應用需要對列表中的物件進行分組,你想要通過鍵來引用物件。
解決方案
可以通過兩個 Objective-C Foundation 類——NSDictionary 與 NSMutableDictionary 來建立帶有鍵的物件列表。如果不需要修改列表,就使用 NSDictionary;如果在後面要向字典中新增或刪除物件,就使用 NSMutableDictionary。
說明
在 Objective-C 中,字典的建立與其他物件一樣:可以使用 alloc 與 init 建構函式,或者使用 dictionaryWithObjects:forKeys:等便捷函式建立字典。如果使用 NSDictionary 建立字典,那麼字典一旦建立完畢後,就無法再進行修改。使用 NSMutableDictionary 建立的字典可以在後面進行修改。
在下面的示例中,建立的字典包含了不同語言版本的 Hello World。該短語的每個版本都會被錄入到相應的語言中:
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",@"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english", @"french",@"spanish", nil];
NSDictionary *dictionary2 = [NSDictionarydictionaryWithObjects:listOfObjects forKeys:listOfKeys];
NSDictionary 建構函式 arrayWithObjects:forKeys:需要兩個陣列作為引數。第一個陣列必須包含待儲存的物件,第二個陣列必須包含與這些物件關聯的鍵。
如果使用 NSMutableDictionary,那麼可以通過相同的建構函式建立字典(NSMutable-Dictionary 是 NSDictionary 的子類)。如果後面還要向字典中新增物件,那麼還可以通過alloc 與 init 來建立 NSMutableDictionary 物件。表 3-3 完整列出了 NSDictionary 與 NSMutable-Dictionary 類的建構函式,程式清單 3-14 列出了相關程式碼。
程式碼
程式清單3-14 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSDictionary *dictionary1 = [[NSDictionary alloc] init];
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",
@"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english",
@"french", @"spanish", nil];
NSDictionary *dictionary2 = [NSDictionary
dictionaryWithObjects:listOfObject forKeys:listOfKeys];NSLog(@"dictionary2 = %@", dictionary2);
}
return 0;}
使用
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。可以設定斷點並使用 Xcode偵錯程式檢視這些字典的內容。3.11 節將會介紹如何引用每個字典元素,這樣就可以將它們的內容列印到日誌中或是在程式的其他地方使用它們了。你會看到字典的全部內容被列印到日誌中:
dictionary2 = {
english = "Hello World";
french = "Bonjour tout le monde";
spanish = "Hola Mundo";
}
3.11 引用陣列中的物件
問題
你想要獲得指向字典中物件的引用以便訪問它們的屬性或是向物件傳送訊息。
解決方案
使用 objectForKey:方法可以獲得與你提供的鍵相對應的物件引用。說明
NSDictionary 根據你提供的鍵來組織物件。這樣一來,查詢物件就變得非常簡單和快速。只需要使用 objectForKey:並提供與想要查詢的物件相對應的鍵,就可以獲得物件引用:
NSString *helloWorld = [dictionary objectForKey:@"english"];
參見程式清單 3-15。程式碼
程式清單3-15 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",
@"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english",
@"french", @"spanish", nil];NSDictionary *dictionary = [NSDictionary
dictionaryWithObjects:listOfObjects forKeys:listOfKeys];NSString *helloWorld = [dictionary objectForKey:@"english"];NSLog(@"%@", helloWorld);
84
}
return 0;}
使用
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。打印出的 hello world 訊息是與English 鍵對應的物件:
Hello World
要想檢視法語版本的 hello world 訊息,請將下述程式碼新增到應用中:helloWorld = [dictionary objectForKey:@"french"];
NSLog(@"%@", helloWorld);
再次執行應用,檢查最後一條控制檯訊息,你會看到法語版本的 hello world 訊息。可以針對西班牙語進行同樣操作。
3.12 獲取字典中元素的數量
問題
應用使用了字典中的內容,你需要知道字典中有多少元素以便能恰當地顯示出內容。
解決方案
NSDictionary 物件提供了 count 屬性,可以通過該屬性獲得字典中元素的數量。說明
要想使用 count 屬性,可以對字典物件使用點符號(dictionary.count)或是傳送 count 訊息([dictionary count]),從而獲得字典中元素的數量。參見程式清單 3-16。
程式碼
程式清單3-16 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",
@"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english",
@"french", @"spanish", nil];NSDictionary *dictionary = [NSDictionary
dictionaryWithObjects:listOfObjects forKeys:listOfKeys];NSUInteger count = dictionary.count;
NSLog(@"The dictionary contains %lu items", count);
}
return 0;}
使用
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。日誌訊息會顯示出元素的數量:The dictionary contains 3 items
3.13 遍歷字典
問題
你有了物件字典,想要對字典中的每個物件傳送相同的訊息或是訪問同樣的屬性。
解決方案
使用 NSDictionary 函式 allValues 將字典轉換為陣列,接下來就可以使用 for-each 迴圈了,此外還可以使用 enumerateKeysAndObjectsUsingBlock:方法來處理字典中的每個物件。
說明
NSDictionary 物件提供了內建方式來遍歷物件列表。然而,如果想要使用 3.4 節中介紹的方式,那麼可以臨時將字典的鍵與物件內容轉換為陣列。例如,要想使用 for-each 迴圈遍歷字典中的物件,可以通過如下程式碼實現:
for (NSString *s in [dictionary allValues]) {
NSLog(@"value: %@", s);
}
NSDictionary 函式 allValues 會返回以陣列而非字典形式組織的物件。函式 allKeys 會將鍵值作為陣列返回:
for (NSString *s in [dictionary allKeys]) {
NSLog(@"key: %@", s);
}
還可以使用塊,通過 enumerateKeysAndObjectsUsingBlock:方法針對字典中的每個物件執行程式碼。可以用來定義程式碼塊,然後應用到字典中的每個物件,同時又不必建立 for-each迴圈或是獲得陣列版本的字典引用:
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {NSLog(@"key = %@ and obj = %@", key, obj);
}];
參見程式清單 3-17。程式碼
程式清單3-17 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",
@"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english",
@"french", @"spanish", nil];NSDictionary *dictionary = [NSDictionary
dictionaryWithObjects:listOfObjects forKeys:listOfKeys];for (NSString *s in [dictionary allValues]) {
NSLog(@"value: %@", s);
}
for (NSString *s in [dictionary allKeys]) {NSLog(@"key: %@", s);
}
[dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj,BOOL *stop) {
NSLog(@"key = %@ and obj = %@", key, obj);}];
}
return 0;}
使用
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。日誌訊息會顯示出使用各種方
式遍歷字典後的結果:
value: Hello World
value: Bonjour tout le monde
value: Hola Mundo
key: english
key: french
key: spanish
key = english and obj = Hello World
key = french and obj = Bonjour tout le mondekey = spanish and obj = Hola Mundo
3.14 操縱字典內容問題
你希望字典內容能夠更具動態性,這樣使用者或你就可以在字典中新增、刪除和插入物件了。然而,NSDictionary 是不可變類,因此一旦建立 NSDictionary 物件,你就無法再修改其中的內容。
解決方案
如果知道字典會動態變化,那麼請使用 NSMutableDictionary。NSMutableDictionary 是NSDictionary 的子類,這意味著可以像使用 NSDictionary 那樣使用 NSMutableDictionary。但 NSMutableDictionary 提供了額外的一些方法,可以在字典中新增、刪除和插入物件。
說明
首先需要例項化 NSMutableDictionary 類,可以通過任何建構函式做到這一點。要想建立新的、空的 NSMutableDictionary 物件,只需要使用 alloc 與 init 即可:
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];
要想向字典中新增物件,需要向字典傳送 setObject:forKey:訊息,同時帶上要新增的物件以及與物件關聯的鍵:
[dictionary setObject:@"Hello World"
forKey:@"english"];
[dictionary setObject:@"Bonjour tout le monde"forKey:@"french"];
[dictionary setObject:@"Hola Mundo
forKey:@"spanish"];
在使用 setObject:forKey:時,你向字典中新增的物件一定是由你提供的鍵索引的。要想從字典中刪除物件,就必須擁有與物件匹配的鍵。如果擁有鍵,那麼可以通過
removeObjectForKey:方法刪除物件:
[dictionary removeObjectForKey:@"french"];
最後,可以通過 removeAllObjects:方法一次性刪除字典中的全部物件。參見程式清單3-18。
程式碼
程式清單3-18 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] init];[dictionary setObject:@"Hello World"
forKey:@"english"];
[dictionary setObject:@"Bonjour tout le monde"
forKey:@"french"];
[dictionary setObject:@"Hola Mundo"
forKey:@"spanish"];
NSLog(@"OBJECTS ADDED TO DICTIONARY: %@", dictionary);
[dictionary removeObjectForKey:@"french"];
NSLog(@"OBJECT REMOVED FROM DICTIONARY: %@", dictionary);[dictionary removeAllObjects];
NSLog(@"ALL OBJECTS REMOVED FROM DICTIONARY: %@", dictionary);
}
return 0;}
使用
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。通過日誌控制檯,可以檢視在應用每個操作後字典都發生了哪些變化:
OBJECTS ADDED TO DICTIONARY: {
english = "Hello World";
french = "Bonjour tout le monde";
spanish = "Hola Mundo";
}
OBJECT REMOVED FROM DICTIONARY: {
english = "Hello World";
spanish = "Hola Mundo";
}
ALL OBJECTS REMOVED FROM DICTIONARY: {
}
3.15 將字典儲存到檔案系統中
問題
你想將字典中的物件儲存到檔案系統中以供日後或是其他程式使用。
解決方案
如果字典中包含數字或字串物件的列表,那麼可以將所有這些物件儲存到檔案系統中以供後續使用,使用 writeToFile:atomically:方法可以做到這一點。注意,該方法無法處理自定義物件。
說明
該攻略需要建立如下字典,其中的內容是與鍵匹配的短語:
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",@"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english", @"french",@"spanish", nil];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:listOfObjectsforKeys:listOfKeys];
要想將字典儲存到檔案系統中,首先需要獲得如下檔案引用:
NSString *filePathName = @"/Users/Shared/dictionary.txt";
現在可以使用 writeToFile:atomically:方法將字典內容寫到 Mac 檔案系統中:[dictionary writeToFile:filePathName
atomically:YES];
參見程式清單 3-19。程式碼
程式清單3-19 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSArray *listOfObjects = [NSArray arrayWithObjects:@"Hello World",
@"Bonjour tout le monde", @"Hola Mundo", nil];
NSArray *listOfKeys = [NSArray arrayWithObjects:@"english",
@"french", @"spanish", nil];NSDictionary *dictionary = [NSDictionary
dictionaryWithObjects:listOfObjects forKeys:listOfKeys];NSString *filePathName = @"/Users/Shared/dictionary.txt";[dictionary writeToFile:filePathName
}
return 0;}
使用
atomically:YES];
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。使用 Finder 找到建立的檔案,位於/Users/Shared/dictionary.txt。下面列出文字檔案的內容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0">
<dict>
<key>english</key>
<string>Hello World</string>
<key>french</key>
<string>Bonjour tout le monde</string>
<key>spanish</key>
<string>Hola Mundo</string>
</dict>
</plist>
資料以 XML 格式組織為屬性列表(一種儲存鍵資料的 Objective-C 格式)。
3.16 從檔案系統讀取字典
問題
有一些應用可以訪問到的檔案,其中包含了以字典形式組織的內容,你想在應用中使
用這些內容。
解決方案
如果有了通過字典建立的檔案(使用 writeToFile:atomically:方法儲存),那麼可以使用
initWithContentsOfFile:建構函式例項化新的字典,新字典是由檔案內容構成的。說明
本攻略使用 3.15 節中的檔案(已將字典的內容儲存到檔案系統中)。因此,這裡會使用相同的檔案路徑名:
NSString *filePathName = @"/Users/Shared/dictionary.txt";
接下來就可以使用 initWithContentsOfFile:建構函式建立由檔案內容構成的新字典:NSDictionary *dictionary = [[NSDictionary alloc]
initWithContentsOfFile:filePathName];
參見程式清單 3-20。程式碼
程式清單3-20 main.m
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]){
@autoreleasepool {
NSString *filePathName = @"/Users/Shared/dictionary.txt";NSDictionary *dictionary = [[NSDictionary alloc]
initWithContentsOfFile:filePathName];NSLog(@"dictionary: %@", dictionary);
}
return 0;}
使用
要想使用上述程式碼,請從 Xcode 構建並執行 Mac 應用。可通過日誌檢視字典的內容:
dictionary: {
english = "Hello World";
french = "Bonjour tout le monde";
spanish = "Hola Mundo";
}
相關推薦
Objective-C如何使用物件集合學習系列二
c ) OBJECT AT INDEX 1 EXCHANGED WITH OBJECT AT INDEX 2 IN ARRAY: ( B,A,a,c ) OBJECT 'A' REMOVED IN ARRAY: ( B,a,c ) OBJECT AT INDEX 1 REM
深入Java集合學習系列(二):
HashSet的實現原理 1. HashSet概述 HashSet實現Set介面,由雜湊表(實際上是一個HashMap例項)支援。它不保證set 的迭代順序;特別是它不保證該順序恆久不變。此類允許使用null元素。 2. HashSet的實
C# 多執行緒學習系列二
一、關於前臺執行緒和後臺執行緒 1、簡介 CLR中執行緒分為兩種型別,一種是前臺執行緒、另一種是後臺執行緒. 前臺執行緒:應用程式的主執行緒、Thread構造的執行緒都預設為前臺執行緒 後臺執行緒:執行緒池執行緒都為後臺執行緒 2、區別 前臺執行緒:前臺執行緒一般執行重要性很高的任
Java學習系列(二十三)Java面向物件之內部類詳解
一、前言 內部類也稱寄生類,就是把一個類放在類裡面(即內部類的上一級程式單元是類)定義,將其作為外部類的成員。內部類主要用幾種定義形式:靜態(static)內部類,非靜態內部類,匿名內部類(也就是沒有名字的寄生類)。內部類的好處就是內部類可以直接外部類的(包括私有)
Java學習系列(二十一)Java面向物件之註解詳解
一、前言 Java中的註解Annotation運用到很多方面,比如之前講的單元測試中的@Test、Spring、SpringMVC還有其他框架等等。Java本身自帶的註解也有一些,比如:@Override(子類要重寫/覆寫父類的對應方法)、@Deprecated(表
Java學習系列(二十二)Java面向物件之列舉詳解
一、前言 今天我們來講講列舉,希望通過這篇部落格大家能對列舉有個更全面的瞭解。列舉是一種例項(大寫)數固定的類(不能再建立例項),列舉改變了常量的宣告方式,而且它在編譯期間就限定了型別。列舉多用於確定的狀態數(如:滑鼠上下左右、IM訊息已讀未讀)、型別數(如:系統
轉:深入Java集合學習系列:HashSet的實現原理
是否 abstract arc html 源代碼 cat param body static 0.參考文獻 深入Java集合學習系列:HashSet的實現原理 1.HashSet概述: HashSet實現Set接口,由哈希表(實際上是一個HashMap實例)支持。它
.net reactor 學習系列(二)---.net reactor界面各功能說明
resource set 分享 native ont 快捷操作 term 沖突 string 安裝了.net reactor之後,可以在安裝目錄下找到幫助文檔REACTOR_HELP.chm,目前沒有中文版本,裏面詳細介紹了.net reactor的各功能及使用場景。本
Spring學習系列(二) 自動化裝配Bean
can one bean 工作 顯式 實例 cnblogs con frame 一、Spring裝配-自動化裝配 @[email protected]/* */ 通過spring註解(@Component)來表明該類會作為組件類,並告知Spring要為這類創建b
[jQuery學習系列二 ]2-JQuery學習二-數組操作
hit fun 沒有 hello second tag you jquer 操作 前言 上一篇內容 已經對於Jquery 有了一些認識, 包括Jquery的選擇器和DOM對象, 那麽這一篇繼續來看下Jquery中很實用的Jquery對於數組的操作. Jquery中對數組的
【C#】EF學習<二> DbFirst (先建立資料庫,表及其關聯關係)
工程壓縮檔案放到百度雲盤---20181019001資料夾 1. 建立表的指令碼 create table Teacher ( TID char(12) primary key, Tname char(6) not null ) create table
webservice 教程學習系列(二)——http 協議
請求request的組成 (1)請求頭(請求方式(post get) path http1.1)PS:http1.0和http1.1的區別:1.0對於每個資源都需要傳送一次請求,1.1是一次請求可以獲取多個資源。 (2)請求行 (3)請求體 只有post請求才會有請求體 例
Identity Server4學習系列二
1、簡介 通過前文知道了Identity Server4的基本用途,現在必須瞭解一些實現它的基本細節. 2、關於服務端生成Token令牌 頭部(Header): { “typ”: “JWT”, //token的型別 “alg”: “HS256” //Token使用的加密演算法
Quartz_2.2.X學習系列二十:Example 8
Demonstrates how a Holiday calendar can be used to exclude execution of jobs on a holiday ---------------------------------------------
Effective Objective-C 2.0 筆記 (二)
第15條 用字首避免名稱空間衝突 最好遵循蘋果的程式設計規範,使用 3個字的字首。 對於全域性的變數,常量以及C函式,也應該加上字首。 第16條 提供“全能初始化方法“ 這種程式設計模式就是定義一個引數最全的初始化方法,在其中初始化所有的成員變數,其餘的初始化方
C++11併發學習之二:執行緒管理
1.啟動執行緒 (1)使用物件 “小試牛刀”中thread構造時傳入的是函式,還可以傳入物件。 #include <thread> #include <iostream> void func() { std::cout<<
Identity Server4學習系列三 Identity Server4學習系列一 Identity Server4學習系列二之令牌(Token)的概念
1、簡介 在Identity Server4學習系列一和Identity Server4學習系列二之令牌(Token)的概念的基礎上,瞭解了Identity Server4的由來,以及令牌的相關知識,本文開始實戰,實現Identity Server4基本的功能。 2、前提 本文基於.Ne
SpringCloud 學習系列(二)
1、建立application-peer1.properties,作為peer1服務中心的配置,並將serviceUrl指向peer2 spring.application.name=spring-cloud-eureka server.port=8000 eureka
C++物件模型學習筆記7 站在物件模型的尖端
{P310} C++被吹毛求疵的一點是:它缺乏一個保證安全的downcast。只有在型別真的可以被適當轉換的情況下,你才能夠執行downcast。一個type-safe downcast必須在執行期對指標有所查詢,查檢視它是否指向它所展現(表達)之object的真正型別。 危險在於,如果一個父類指標原本指向
webservice 教程學習系列(二)——關於webservice的幾個問題
1.webservice是什麼 (1)給予web服務,伺服器端整出一些資源讓客戶端應用訪問(獲取資源); (2)一個跨語言、跨平臺的規範(抽象); (3)多個跨平臺、跨語言的應用間通訊整合的方案(實