『壹』 怎麼給自己的程序提供介面(API)給別的程序操作
API(Advanced Programmers Interface,高級程序員介面)(注:API實際是指Application Programming Interface,應用程序編程介面;此處疑為原文錯誤,不過在VB中也可以這么說吧!)是一套用來控制Windows的各個部件(從桌面的外觀到位一個新進程分配的內存)的外觀和行為的一套預先定義的Windows函數.用戶的每個動作都會引發一個或幾個函數的運行以Windows告訴發生了什麼.
這在某種程度上很象Windows的天然代碼.其他的語言只是提供一種能自動而且更容易的訪問API的方法.VB在這方面作了很多工作.它完全隱藏了API並且提供了在Windows環境下編程的一種完全不同的方法.
這也就是說,你用VB寫出的每行代碼都會被VB轉換為API函數傳遞給Windows.例如,Form1.Print...VB 將會以一定的參數(你的代碼中提供的,或是默認參數)調用TextOut 這個API函數.
同樣,當你點擊窗體上的一個按鈕時,Windows會發送一個消息給窗體(這對於你來說是隱藏的),VB獲取這個調用並經過分析後生成一個特定事件(Button_Click).
API函數包含在Windows系統目錄下的動態連接庫文件中(如User32.dll,GDI32.dll,Shell32.dll...).
API 聲明
正如在"什麼是API"中所說,API函數包含在位於系統目錄下的DLL文件中.你可以自己輸入API函數的聲明,但VB提供了一種更簡單的方法,即使用API Text Viewer.
要想在你的工程中聲明API函數,只需運行API Text Viewer,打開Win32api.txt(或.MDB如果你已經把它轉換成了資料庫的話,這樣可以加快速度.注:微軟的這個文件有很多的不足,你可以試一下本站提供下載的api32.txt),選擇"聲明",找到所需函數,點擊"添加(Add)"並"復制(Copy)",然後粘貼(Paste)到你的工程里.使用預定義的常量和類型也是同樣的方法.
你將會遇到一些問題:
假設你想在你的窗體模塊中聲明一個函數.粘貼然後運行,VB會告訴你:編譯錯誤...Declare 語句不允許作為類或對象模塊中的 Public 成員...看起來很糟糕,其實你需要做的只是在聲明前面添加一個Private(如 Private Declare Function...).--不要忘了,可是這將使該函數只在該窗體模塊可用.
在有些情況下,你會得到"不明確的名稱"這樣的提示,這是因為函數.常量或其他的什麼東西共用了一個名稱.由於絕大多數的函數(也可能是全部,我沒有驗證過)都進行了別名化,亦即意味著你可以通過Alias子句使用其它的而不是他們原有的名稱,你只需簡單地改變一下函數名稱而它仍然可以正常運行.
你可以通過查看VB的Declare語句幫助主題來獲取有關Alias的詳細說明.
消息(Messages)
好了,現在你已經知道什麼是API函數了,但你也一定聽說過消息(如果你還沒有,你很快就會)並且想知道它是什麼.消息是Windows告訴你的程序發生了哪些事件或要求執行特定操作的基本方法.例如,當用戶點擊一個按鈕,移動滑鼠,或是向文本框中鍵入文字時,一條消息就會被發送給你的窗體.
所有發送的消息都有四個參數--一個窗口句柄(hwnd),一個消息編號(msg)還有兩個32位長度(Long)的參數.
hwnd即要接受消息的一個窗口的句柄,msg即消息的標識符(編號).該標識符是指引發消息的動作類型(如移動滑鼠),另外兩個參數是該消息的附加參數(例如當滑鼠移動時游標的當前位置)
但是,當消息發送給你時你為什麼看不到呢--就象有人在偷你的信一樣?請先別惱火,讓我告訴你.
小偷其實是Visual Basic.但它並沒有偷走你的信,而是在閱讀了之後挑出重要的以一種好的方式告訴你.這種方式就是你代碼中的事件(Event).
這樣,當用戶在你的窗體上移動滑鼠時,Windows會發送一條WM_MOUSEMOVE消息給你的窗口,VB得到這條消息以及它的參數並運行你在事件MouseMove中的代碼,同時VB會把這條消息的第二個32位數(它包含了x,y坐標,單位為像素(Pixel),每個位16位)轉換為兩個單精度數,單位為緹(Twip).
現在,如果你需要游標坐標的像素表示,然而VB已經把它轉換成了緹,因此你需要重新把它轉換為以像素為單位.在這里,Windows給了你所需要的,但VB"好意地"進行了轉換而使你不得不重新轉換.你可能會問--我難道不能自己接收消息嗎?答案是肯定的,你可以使用一種叫做子類處理(Subclass)的方法.但你除非必須否則最好不要使用,因為這與VB的安全程序設計有一點點的違背.(注:子類處理確實有很大的風險,但如果使用得當,是很有用處的.不過有一點一定要注意,即千萬不要使用VB的斷點調試功能,這可能會導致VB崩潰!)
需要補充說明的是:你可以發送消息給你自己的窗口或其他的窗口,只需調用SendMessage或PostMessage(SendMessage會使接受到消息的窗口立刻處理消息,而PostMessage是把消息發送到一個稱為消息隊列的隊列中去,等候處理(它將會在該消息處理完後返回,例如有些延遲)).你必須制定接受消息的窗口的句柄,欲發送消息的編號(所有的消息的編號均為常量,你可以通過API Text Viewer查得)以及兩個32位的參數。
另一種含義:
1:美國石油協會(API:American Petrolenm Institute):制定機油標準的組織。汽車用發動機機油必須符合API提出的標准。
2:API還有一種含意:空氣污染指數。【英文 air pollution index 的縮寫】
3:在JAVA中,API除了有應用「程序程序介面」的意思外,還特指JAVA API的說明文檔,也稱為JAVA幫助文檔。
參考資料:http://bk..com/view/16068.htm
『貳』 android怎麼實現後台對按鍵事件的監控
為了實現鍵盤的監控,從新開發一個輸入法是不現實的,一般的操作就是在系統的輸入法機制中添加介面回調。我們知道,再應用程序中拿到按鍵的回調一般是監聽onKeyDown的介面,如下所示:
public boolean onKeyDown(int keyCode, KeyEvent event)
開發者就可以根據回調方法中的參數, keyCode與KeyEvent來判斷具體事件。但是,由於事件的回調機制在其的沙箱中運行,在其他應用中是無法拿到當前應用事件回調的。
那麼我們就從上到下,具體的看看事件的傳遞機制。如下圖所示,用戶點擊後,軟鍵盤或物理按鍵的輸入驅動就會產生一個中斷,且向/dev/input/event*中寫入一個相應的信號量。Android操作系統則會循環的讀取其中的事件,再分發給WindowManagerServer。由WindowManagerServer根據事件的來源分發到各個不同的ViewGroup與View中,從而產生不同的OnClick、OnKeyDown和OnTouch等事件。
其實這些Lable已經在其input.h頭文件中定義好,其中type的定義如下:
/*
* Event types
*/
#define EV_SYN 0x00
#define EV_KEY 0x01
#define EV_REL 0x02
#define EV_ABS 0x03
#define EV_MSC 0x04
#define EV_SW 0x05
#define EV_LED 0x11
#define EV_SND 0x12
#define EV_REP 0x14
#define EV_FF 0x15
#define EV_PWR 0x16
#define EV_FF_STATUS 0x17
#define EV_MAX 0x1f
#define EV_CNT (EV_MAX+1)
一般來說,常用的是EV_KEY、EV_REL、EV_ABS、EV_SYN,分別對應鍵盤按鍵、相對坐標、絕對坐標、同步事件。EV_SYN則表示一組完整事件已經完成,需要處理,EV_SYN的code定義事件分發的類型。
『叄』 小弟學.Net,想做個API介面,怎麼做 求過程,不要復制黏貼
要想學會怎麼做API,那你必須先學怎麼用,這里有網路API Store中的一個API
http://apistore..com/apiworks/servicedetail/1115.html
你可以試著調用任何介面來實現一個小demo,以上只是舉例
其它的必備技能還有
Oauth2.0協議
Web API
VPS
如果你只想知道Web API如何工作的,不需要做一個商用的API介面,那你直接打開visual studio新建一個Web API項目然後按F5啟動項目,你就可以看到一個大致的API項目了
『肆』 100路網路攝像機監控方案怎麼實現
一、計算線路帶寬。
首先要確定每個攝像頭的視頻輸出所需要的帶寬。攝像頭參數介紹里一般叫「壓縮輸出碼率」
幾乎所有的攝像頭,這個參數是可以手動調整的,一般可調范圍在幾百K到8M或16M。不同廠家不同型號的可調整范圍不同。
這需要根據你對圖像清晰度要求自行決定。
例如,這里假定每個攝像頭的壓縮輸出碼率為4兆。100個攝像頭則為400兆。
一般是幾個攝像頭共用一個交換機。與攝像頭直接相連的交換機可以使用百兆交換機。根據攝像頭地理分布決定幾個攝像頭連在一個交換機上。
這類交換機可以選擇5口、8口、12口的百兆交換機。它們分別對多可以連4個、7個和11個攝像頭。
為了方便區別這里可以把上面這種與攝像頭直接相連的交換機稱為「接入層交換機」
當然,如果部分攝像頭比較集中,12口或24口交換機即可連接11個或23個攝像頭,並且攝像頭輸出碼率比較大,總輸出碼率超過100兆,那這台交換機必須是千兆交換機,可以是22口百兆+2口千兆的交換機。
多個接入層交換機在與專門的交換機相連,這里稱為「核心層交換機」。這里需要確定匯聚層交換機使用百兆還是千兆交換機,以及使用幾個介面。
假如接入層交換機為8口的,每個都連7個攝像頭。那需要15個接入層交換機即。那麼核心層交換機選擇24口交換機即可,是那種有20或22個百兆介面,4個或2個千兆介面的。
但是,接入層交換機有千兆交換機,那麼核心層交換機必須所有口都是千兆。
這樣,核心層交換機與接入層交換機之間用百兆帶寬即可。而與電腦或錄像機之間用千兆帶寬。
『伍』 企業微信開放平台群發監控api二次開發介面怎麼用
企業微信開放平台現在功能多樣,一些公司不知道合適他們的系統軟體,在這里,我給大家總結企業微信第三方應用開發平台的使用方法:
『陸』 用Java編程來實現CPU和Memory監控器並將數據持久化,保存在文件中。急用
眾所周知,java在處理數據量比較大的時候,載入到內存必然會導致內存溢出,而在一些數據處理中我們不得不去處理海量數據,在做數據處理中,我們常見的手段是分解,壓縮,並行,臨時文件等方法;例如,我們要將資料庫(不論是什麼資料庫)的數據導出到一個文件,一般是Excel或文本格式的CSV;對於Excel來講,對於POI和JXL的介面,你很多時候沒有法去控制內存什麼時候向磁碟寫入,很惡心,而且這些API在內存構造的對象大小將比數據原有的大小要大很多倍數,所以你不得不去拆分Excel,還好,POI開始意識到這個問題,在3.8.4的版本後,開始提供cache的行數,提供了SXSSFWorkbook的介面,可以設置在內存中的行數,不過可惜的是,他當你超過這個行數,每添加一行,它就將相對行數前面的一行寫入磁碟(如你設置2000行的話,當你寫第20001行的時候,他會將第一行寫入磁碟),其實這個時候他些的臨時文件,以至於不消耗內存,不過這樣你會發現,刷磁碟的頻率會非常高,我們的確不想這樣,因為我們想讓他達到一個范圍一次性將數據刷如磁碟,比如一次刷1M之類的做法,可惜現在還沒有這種API,很痛苦,我自己做過測試,通過寫小的Excel比使用目前提供刷磁碟的API來寫大文件,效率要高一些,而且這樣如果訪問的人稍微多一些磁碟IO可能會扛不住,因為IO資源是非常有限的,所以還是拆文件才是上策;而當我們寫CSV,也就是文本類型的文件,我們很多時候是可以自己控制的,不過你不要用CSV自己提供的API,也是不太可控的,CSV本身就是文本文件,你按照文本格式寫入即可被CSV識別出來;如何寫入呢?下面來說說。。。在處理數據層面,如從資料庫中讀取數據,生成本地文件,寫代碼為了方便,我們未必要1M怎麼來處理,這個交給底層的驅動程序去拆分,對於我們的程序來講我們認為它是連續寫即可;我們比如想將一個1000W數據的資料庫表,導出到文件;此時,你要麼進行分頁,oracle當然用三層包裝即可,mysql用limit,不過分頁每次都會新的查詢,而且隨著翻頁,會越來越慢,其實我們想拿到一個句柄,然後向下游動,編譯一部分數據(如10000行)將寫文件一次(寫文件細節不多說了,這個是最基本的),需要注意的時候每次buffer的數據,在用outputstream寫入的時候,最好flush一下,將緩沖區清空下;接下來,執行一個沒有where條件的SQL,會不會將內存撐爆?是的,這個問題我們值得去思考下,通過API發現可以對SQL進行一些操作,例如,通過:PreparedStatementstatement=connection.prepareStatement(sql),這是默認得到的預編譯,還可以通過設置:PreparedStatementstatement=connection.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);來設置游標的方式,以至於游標不是將數據直接cache到本地內存,然後通過設置statement.setFetchSize(200);設置游標每次遍歷的大小;OK,這個其實我用過,oracle用了和沒用沒區別,因為oracle的jdbcAPI默認就是不會將數據cache到java的內存中的,而mysql里頭設置根本無效,我上面說了一堆廢話,呵呵,我只是想說,java提供的標准API也未必有效,很多時候要看廠商的實現機制,還有這個設置是很多網上說有效的,但是這純屬抄襲;對於oracle上面說了不用關心,他本身就不是cache到內存,所以java內存不會導致什麼問題,如果是mysql,首先必須使用5以上的版本,然後在連接參數上加上useCursorFetch=true這個參數,至於游標大小可以通過連接參數上加上:defaultFetchSize=1000來設置,例如:jdbc:mysql://xxx.xxx.xxx.xxx:3306/abc?zeroDateTimeconvertToNull&useCursorFetch=true&defaultFetchSize=1000上次被這個問題糾結了很久(mysql的數據老導致程序內存膨脹,並行2個直接系統就宕了),還去看了很多源碼才發現奇跡竟然在這里,最後經過mysql文檔的確認,然後進行測試,並行多個,而且數據量都是500W以上的,都不會導致內存膨脹,GC一切正常,這個問題終於完結了。我們再聊聊其他的,數據拆分和合並,當數據文件多的時候我們想合並,當文件太大想要拆分,合並和拆分的過程也會遇到類似的問題,還好,這個在我們可控制的范圍內,如果文件中的數據最終是可以組織的,那麼在拆分和合並的時候,此時就不要按照數據邏輯行數來做了,因為行數最終你需要解釋數據本身來判定,但是只是做拆分是沒有必要的,你需要的是做二進制處理,在這個二進制處理過程,你要注意了,和平時read文件不要使用一樣的方式,平時大多對一個文件讀取只是用一次read操作,如果對於大文件內存肯定直接掛掉了,不用多說,你此時因該每次讀取一個可控范圍的數據,read方法提供了重載的offset和length的范圍,這個在循環過程中自己可以計算出來,寫入大文件和上面一樣,不要讀取到一定程序就要通過寫入流flush到磁碟;其實對於小數據量的處理在現代的NIO技術的中也有用到,例如多個終端同時請求一個大文件下載,例如視頻下載吧,在常規的情況下,如果用java的容器來處理,一般會發生兩種情況:其一為內存溢出,因為每個請求都要載入一個文件大小的內存甚至於,因為java包裝的時候會產生很多其他的內存開銷,如果使用二進制會產生得少一些,而且在經過輸入輸出流的過程中還會經歷幾次內存拷貝,當然如果有你類似nginx之類的中間件,那麼你可以通過send_file模式發送出去,但是如果你要用程序來處理的時候,內存除非你足夠大,但是java內存再大也會有GC的時候,如果你內存真的很大,GC的時候死定了,當然這個地方也可以考慮自己通過直接內存的調用和釋放來實現,不過要求剩餘的物理內存也足夠大才行,那麼足夠大是多大呢?這個不好說,要看文件本身的大小和訪問的頻率;其二為假如內存足夠大,無限制大,那麼此時的限制就是線程,傳統的IO模型是線程是一個請求一個線程,這個線程從主線程從線程池中分配後,就開始工作,經過你的Context包裝、Filter、攔截器、業務代碼各個層次和業務邏輯、訪問資料庫、訪問文件、渲染結果等等,其實整個過程線程都是被掛住的,所以這部分資源非常有限,而且如果是大文件操作是屬於IO密集型的操作,大量的CPU時間是空餘的,方法最直接當然是增加線程數來控制,當然內存足夠大也有足夠的空間來申請線程池,不過一般來講一個進程的線程池一般會受到限制也不建議太多的,而在有限的系統資源下,要提高性能,我們開始有了newIO技術,也就是NIO技術,新版的裡面又有了AIO技術,NIO只能算是非同步IO,但是在中間讀寫過程仍然是阻塞的(也就是在真正的讀寫過程,但是不會去關心中途的響應),還未做到真正的非同步IO,在監聽connect的時候他是不需要很多線程參與的,有單獨的線程去處理,連接也又傳統的socket變成了selector,對於不需要進行數據處理的是無需分配線程處理的;而AIO通過了一種所謂的回調注冊來完成,當然還需要OS的支持,當會掉的時候會去分配線程,目前還不是很成熟,性能最多和NIO吃平,不過隨著技術發展,AIO必然會超越NIO,目前谷歌V8虛擬機引擎所驅動的node.js就是類似的模式,有關這種技術不是本文的說明重點;將上面兩者結合起來就是要解決大文件,還要並行度,最土的方法是將文件每次請求的大小降低到一定程度,如8K(這個大小是經過測試後網路傳輸較為適宜的大小,本地讀取文件並不需要這么小),如果再做深入一些,可以做一定程度的cache,將多個請求的一樣的文件,cache在內存或分布式緩存中,你不用將整個文件cache在內存中,將近期使用的cache幾秒左右即可,或你可以採用一些熱點的演算法來配合;類似迅雷下載的斷點傳送中(不過迅雷的網路協議不太一樣),它在處理下載數據的時候未必是連續的,只要最終能合並即可,在伺服器端可以反過來,誰正好需要這塊的數據,就給它就可以;才用NIO後,可以支持很大的連接和並發,本地通過NIO做socket連接測試,100個終端同時請求一個線程的伺服器,正常的WEB應用是第一個文件沒有發送完成,第二個請求要麼等待,要麼超時,要麼直接拒絕得不到連接,改成NIO後此時100個請求都能連接上伺服器端,服務端只需要1個線程來處理數據就可以,將很多數據傳遞給這些連接請求資源,每次讀取一部分數據傳遞出去,不過可以計算的是,在總體長連接傳輸過程中總體效率並不會提升,只是相對相應和所開銷的內存得到量化控制,這就是技術的魅力,也許不要太多的演算法,不過你得懂他。類似的數據處理還有很多,有些時候還會將就效率問題,比如在HBase的文件拆分和合並過程中,要不影響線上業務是比較難的事情,很多問題值得我們去研究場景,因為不同的場景有不同的方法去解決,但是大同小異,明白思想和方法,明白內存和體系架構,明白你所面臨的是沈陽的場景,只是細節上改變可以帶來驚人的效果。
『柒』 API是什麼,可以應用於哪些地方,有例子嗎
您好,API這個詞,全稱叫Application Programming Interfaces(應用程序編程介面)。簡單地說,就是一套套的要求,用來管理應用程序之間的溝通。API並不是什麼新事物,在你使用PC或筆記本時,正是API讓數據在程序之間傳輸。例如,把一個LibreOffice文檔中的片斷切割出來並傳輸到Excel表格上。系統級的API讓LibreOffice這類程序能夠運行在Windows這樣的操作系統上。
在互聯網中,API讓其它應用可以使用一些大的服務,如Google Maps和Facebook。例如Yelp,它可以在Google Map上顯示附近的餐館;還有一些游戲可讓用戶通過Facebook與其它玩家聊天、分享得分等。
API是通過把程序內部的一些功能有限地向外開放來做到的,這使得應用之間可基於各自的利益分享數據,同時不需要開發者公布所有的軟體代碼。對開源項目來說也是如此。你可以把它看成是一扇門、窗或杠桿,不管用什麼比喻,一個程序和外面的軟體世界的溝通就是由API定義的。
一個API現在可用,並不意味著將來也可用。以Twitter為例,一年以前就以限制第三方應用使用其API而臭名昭著,這種做法殺死了所有的第三方Twitter客戶端,讓用戶只能使用Twitter自家的網站和應用,Twitter從中展示廣告賺錢。Twitter稱自己堅持這么做是為了保持統一的Twitter用戶體驗。
有些公司可能會關閉服務和API,例如Google就總是把一些見不到利潤的服務關閉,最近的例子是Google Reader,如果你的應用依賴這些API來運行的話,就會隨之一同出現問題。
雖然API的世界並不完美,但依然阻止不了開發者對其的熱情,也阻止不了由其促成的各種多樣化應用和服務。
『捌』 學習API的方法
網上有API電子書的,一邊看,一邊查資料,慢慢學吧!~最好再試著編些小程序.幫助理解
『玖』 字元串常用的api方法有哪些
API(Application Programming Interface):應用程序編程介面
使用Scanner 獲取鍵盤錄入的字元串
next() ; 在遇到空格的時候 會判定為當前的輸入結束 空格之後的內容會收不到
nextLine(); 可以避免被空格中斷 , 但是在於接收數字一起使用的時候會被干擾
創建字元串對象
public String(String original) ---> 通過字元串創建一個字元串對象
public String(char[] value) -=--> 通過一個字元型數組創建一個字元串對象
public String(char[] value,int offset,int count)---> 通過字元型數組的一部分創建一個字元串對象 從索引值為offset開始,持續count個
==的含義
== 代表判斷兩邊是否相等
基本類型判斷是數值
引用類型判斷的是地址
通過構造方法創建字元串對象和直接賦值創建字元串對象的區別:
構造方法創建是在堆區 直接賦值是在常量池
判斷功能
boolean equals(Object obj) // 比較字元串的內容是否相等, 跟哪個字元串比較 參數就寫哪個字元串
boolean equalsIgnoreCase(String str)// 比較字元串的內容是否相等 比較的時候忽略大小寫
boolean startsWith(String str) // 判斷字元串是否以str開頭
boolean endsWith(String str) // 判斷字元串是否以str結尾
獲取的功能
int length() // 獲取字元串的長度(獲取字元串中字元的個數 )
char charAt(int index) // 根據指定的索引返回對應字元
int indexOf(String str) // 獲取str在字元串中出現的索引值 ,如果字元串中沒有str則返回 -1
String substring(int start) // 從索引值為start位置開始到字元串結尾處截取出來作為一個新串返回
String substring(int start,int end) // 截取字元串 從start開始 ,到end-1為止 生成一個新串返回
統計字元串中大寫、小寫及數字字元個數
* String s1 = "aAb0G9c1Kde";
* 字元串遍歷 判斷 定義計數器分別代表三種字元的個數
* 1.定義三個計數器分別代表三種字元的個數
* 2.遍歷字元串獲取每個字元進行判斷
* 3.一旦符合某一種字元就讓對應的計數器+1
12345678910111213141516171819
public static void main(String[] args) { // TODO Auto-generated method stub String s1 = "aAb0G9c1Kde"; // // 1.定義三個計數器分別代表三種字元的個數 int big = 0; int small = 0; int num = 0; // 2.遍歷字元串獲取每個字元進行判斷 for (int i = 0; i < s1.length(); i++) { char ch = s1.charAt(i); if (ch >= '0' && ch <= '9') { num++; } else if (ch >= 'A' && ch <= 'Z') { big++; } else if (ch >= 'a' && ch <= 'z') { small++; } } }
轉換功能方法
char[] toCharArray() ---> 把字元串轉化成數組 返回
String toLowerCase() ---> 把字元串中的數據轉化成小寫字母返回
String toUpperCase() ---> 把字元串中的數據轉化成大寫字母返回
去除空格和分割功能方法
String trim() // 去除空格 字元串兩邊的空格 , 字元串中間的空格不會去掉
String[] split(String str)// 把字元串使用str進行切割, 把切割之後得到的字元串組成一個字元串數組返回
String replaceAll(String regex,String replacement)
boolean contains(String str);
String replaceAll(String regex,String replacement)// 使用 replacement替換字元串中所有的regex
boolean contains(String str);// 判斷字元串是否包含 str 只要字元串中有Str不論幾個都會返回true 一旦沒有 ,就會返回false
StringBuilder構造方法
StringBuilder() ---> 創建一個空的SB容器
StringBuilder(String str)
StringBuilder常見方法
public int capacity()// 容器的容量
public int length() // 實際存儲的字元個數
StringBuilder的方法
public StringBuilder append(任意類型)// 任何類型的數據都可以添加到這個容器中,最終都會以字元串的形式體現 ,調用完畢之後返回的是自己
public StringBuilder reverse() // 翻轉容器中的內容
『拾』 C++監控某個進程是否被關閉,除了定時器的方式,有什麼API可以用嗎
可以通過監控ExitProcess函數進行判斷