眾賞文庫
全部分類
  • 抗擊疫情 >
    抗擊疫情
    病毒認(rèn)知 防護(hù)手冊 復(fù)工復(fù)產(chǎn) 應(yīng)急預(yù)案 防控方案 英雄事跡 院務(wù)工作
  • 成品畢設(shè) >
    成品畢設(shè)
    外文翻譯 畢業(yè)設(shè)計(jì) 畢業(yè)論文 開題報(bào)告 文獻(xiàn)綜述 任務(wù)書 課程設(shè)計(jì) 相關(guān)資料 大學(xué)生活 期刊論文 實(shí)習(xí)報(bào)告
  • 項(xiàng)目策劃 >
    項(xiàng)目策劃
    土地準(zhǔn)備 規(guī)劃設(shè)計(jì) 開工開盤 項(xiàng)目綜合 竣工移交 售后移交 智慧方案 安全專項(xiàng) 環(huán)境影響評估報(bào)告 可行性研究報(bào)告 項(xiàng)目建議書 商業(yè)計(jì)劃書 危害評估防治 招投標(biāo)文件
  • 專業(yè)資料 >
    專業(yè)資料
    人文法律 環(huán)境安全 食品科學(xué) 基礎(chǔ)建設(shè) 能源化工 農(nóng)林牧畜 綜合待分類 教育經(jīng)驗(yàn) 行政人力 企業(yè)管理 醫(yī)學(xué)衛(wèi)生 IT技術(shù) 土木建筑 考研專題 財(cái)會稅務(wù) 公路隧道 紡織服裝
  • 共享辦公 >
    共享辦公
    總結(jié)匯報(bào) 調(diào)研報(bào)告 工作計(jì)劃 述職報(bào)告 講話發(fā)言 心得體會 思想?yún)R報(bào) 事務(wù)文書 合同協(xié)議 活動策劃 代理加盟 技術(shù)服務(wù) 求職簡歷 辦公軟件 ppt模板 表格模板 融資協(xié)議 發(fā)言演講 黨團(tuán)工作 民主生活
  • 學(xué)術(shù)文檔 >
    學(xué)術(shù)文檔
    自然科學(xué) 生物科學(xué) 天文科學(xué) 醫(yī)學(xué)衛(wèi)生 工業(yè)技術(shù) 航空、航天 環(huán)境科學(xué)、安全科學(xué) 軍事 政學(xué) 文化、科學(xué)、教育、 交通運(yùn)輸 經(jīng)濟(jì) 語言、文字 文學(xué) 農(nóng)業(yè)科學(xué) 社會科學(xué)總論 藝術(shù) 歷史、地理 哲學(xué) 數(shù)理科學(xué)和化學(xué) 綜合性圖書 哲學(xué)宗教
  • 經(jīng)營營銷 >
    經(jīng)營營銷
    綜合文檔 經(jīng)濟(jì)財(cái)稅 人力資源 運(yùn)營管理 企業(yè)管理 內(nèi)控風(fēng)控 地產(chǎn)策劃
  • 教學(xué)課件 >
    教學(xué)課件
    幼兒教育 小學(xué)教育 初中教育 高中教育 職業(yè)教育 成人教育 高等教育 考研資源 試題真題 作業(yè)習(xí)題 課后答案 綜合教學(xué)
  • 土木建筑 >
    土木建筑
    專項(xiàng)施工 應(yīng)急預(yù)案 建筑規(guī)范 工藝方案 技術(shù)交底 施工表格 圖片圖集
  • 課程導(dǎo)學(xué) >
    課程導(dǎo)學(xué)
    醫(yī)學(xué)綜合 中醫(yī)養(yǎng)生 醫(yī)學(xué)研究 身心發(fā)展 醫(yī)學(xué)試題 影像醫(yī)學(xué) 醫(yī)院辦公 外科醫(yī)學(xué) 老年醫(yī)學(xué) 內(nèi)科醫(yī)學(xué) 婦產(chǎn)科 神經(jīng)科 醫(yī)學(xué)課件 眼鼻喉科 皮膚病科 腫瘤科 兒科醫(yī)學(xué) 康復(fù)醫(yī)學(xué) 全科醫(yī)學(xué) 護(hù)理學(xué)科 針灸學(xué)科 重癥學(xué)科 病毒學(xué)科 獸醫(yī) 藥學(xué)
    • 下載積分: 9 賞幣
      上傳時間:2024-03-04
      頁數(shù): 133
      4人已閱讀
      ( 4 星級)
    • 下載積分: 5 賞幣
      上傳時間:2024-03-04
      頁數(shù): 3
      2人已閱讀
      ( 4 星級)
    • 下載積分: 6 賞幣
      上傳時間:2024-03-04
      頁數(shù): 11
      3人已閱讀
      ( 4 星級)
    • 下載積分: 6 賞幣
      上傳時間:2024-03-05
      頁數(shù): 12
      4人已閱讀
      ( 4 星級)
    • 下載積分: 3 賞幣
      上傳時間:2024-03-04
      頁數(shù): 2
      3人已閱讀
      ( 4 星級)
    • 下載積分: 6 賞幣
      上傳時間:2024-03-04
      頁數(shù): 12
      5人已閱讀
      ( 4 星級)
    • 下載積分: 6 賞幣
      上傳時間:2024-03-04
      頁數(shù): 10
      6人已閱讀
      ( 4 星級)
    • 下載積分: 6 賞幣
      上傳時間:2024-03-04
      頁數(shù): 15
      4人已閱讀
      ( 4 星級)
    • 簡介:第7章JAVA輸入輸出流及文件操作,71流的概念72基本輸入輸出流73文件操作,學(xué)習(xí)要求,理解流的概念掌握在JAVA中進(jìn)行文件讀、寫操作的方法,思考,程序中數(shù)據(jù)的存儲方法有單個、臨時的變量多個、同類型、臨時的(退出即消失)數(shù)組多個、不同類型、臨時的向量,若JAVA應(yīng)用程序中需要較多或長久保留的數(shù)據(jù),可以用什么方式進(jìn)行存儲和調(diào)用更有效呢,71流的概念,流(STREAM)是對輸入輸出設(shè)備的一種抽象表示,指在計(jì)算機(jī)的輸入與輸出之間運(yùn)動的數(shù)據(jù)的序列。輸入流代表從外設(shè)流入計(jì)算機(jī)的數(shù)據(jù)序列輸出流代表從計(jì)算機(jī)流向外設(shè)的數(shù)據(jù)序列流的特點(diǎn)數(shù)據(jù)的獲取和發(fā)送均按數(shù)據(jù)序列順序進(jìn)行。JAVA中的流分為兩種(被抽象為四個類)字節(jié)流INPUTSTREAM類和OUTPUTSTREAM類字符流READER類和WRITER類字符流比字節(jié)流更有效。,1字節(jié)流,從抽象類INPUTSTREAM和OUTPUTSTREAM派生出來的一系列類,這類流以字節(jié)BYTE為基本處理單位。,基本輸入流類INPUTSTREAM的常用方法,◇從流中讀取數(shù)據(jù)INTREAD//讀取一個字節(jié),返回值為所讀的字節(jié)INTREADBYTEB讀取多個字節(jié),放置到字節(jié)數(shù)組B中,通常讀取的字節(jié)數(shù)量為B的長度,返回值為實(shí)際讀取的字節(jié)的數(shù)量INTREADBYTEB,INTOFF,INTLEN讀取LEN個字節(jié),放置到以下標(biāo)OFF開始字節(jié)數(shù)組B中,返回值為實(shí)際讀取的字節(jié)的數(shù)量INTAVAILABLE//返回值為流中尚未讀取的字節(jié)的數(shù)量LONGSKIPLONGN;//讀指針跳過N個字節(jié)不讀,返回值為實(shí)際跳過的字節(jié)數(shù)量◇關(guān)閉流CLOSE//流操作完畢后必須關(guān)閉,基本輸出流類OUTPUTSTREAM的常用方法,◇輸出數(shù)據(jù)VOIDWRITEINTB//往流中寫一個字節(jié)BVOIDWRITEBYTEB//往流中寫一個字節(jié)數(shù)組BVOIDWRITEBYTEB,INTOFF,INTLEN把字節(jié)數(shù)組B中從下標(biāo)OFF開始、長度為LEN的字節(jié)寫入流中◇FLUSH//刷空輸出流,并輸出所有被緩存的字節(jié)由于某些流支持緩存功能,該方法將把緩存中所有內(nèi)容強(qiáng)制輸出到流中?!箨P(guān)閉流CLOSE//流操作完畢后必須關(guān)閉,2字符流,從抽象類READER和WRITER派生出的一系列子類,這類流以16位的UNICODE碼表示的字符(一個字符由兩個字節(jié)組成)為基本處理單位。常用字符流子類和功能,72基本輸入輸出流,1鍵盤輸入和格式化輸出JAVA有3個內(nèi)置的標(biāo)準(zhǔn)流對象1)標(biāo)準(zhǔn)輸入流SYSTEMIN用來讀取用戶從鍵盤的輸入2)標(biāo)準(zhǔn)輸出流SYSTEMOUT用來在屏幕上顯示信息3)標(biāo)準(zhǔn)輸出流SYSTEMERR用來顯示出錯信息(1)鍵盤輸入使用SYSTEMIN對象的READ()方法例CHARCCHARSYSTEMINREAD使用INPUTSTREAMREADER、BUFFERREADER流類例INPUTSTREAMREADERISRNEWINPUTSTREAMREADERSYSTEMINBUFFERREADERBRNEWBUFFERREADERISR,通過SCANNER類,SCANNER在JAVAUTIL包中SCANNER類主要方法1)NEXTINT提示輸入一個整數(shù)2)NEXTDOUBLE提示輸入一個浮點(diǎn)數(shù)3)READLINESTRINGPROMPT提示輸入一個字符串,直到行結(jié)束。例SCANNERSNEWSCANNERINTASNEXTINTDOUBLEX1SCANNERNEXTDOUBLE,(2)格式化輸出,用JAVA的標(biāo)準(zhǔn)輸出SYSTEMOUT,可以輸出不同類型的對象例INTA20SYSTEMOUTPRINTASYSTEMOUTPRINTLN“大家好”//加換行用JAVATEXT包中的NUMBERFORMAT類可以控制顯示格式,有三種方法NUMBERFORMATGETNUMBERINSTANCE//附加逗號NUMBERFORMATGETCURRENCYINSTANCE//貨幣符號NUMBERFORMATGETPERCENTINSTANCE//百分號,例IMPORTJAVAIOIMPORTJAVATEXTPUBLICCLASSTESTOUTPUT{PUBLICSTATICVOIDMAINSTRINGARGS{DOUBLEX2345123STRINGS1,S2,S3NUMBERFORMATN1NUMBERFORMATGETNUMBERINSTANCENUMBERFORMATC1NUMBERFORMATGETCURRENCYINSTANCENUMBERFORMATP1NUMBERFORMATGETPERCENTINSTANCES1N1FORMATXS2C1FORMATXS3P1FORMATXSYSTEMOUTPRINTLNS1””S2””S3}}結(jié)果2,3451232,34512234,512,用戶自定義輸出格式用DECIMALFORMAT類和FORMAT類DECIMALFORMAT類適合貨幣之類的格式化FORMAT類(在附帶的COREJAVA包中,要把它加到CLASSPATH中)適合科技方面格式化,和C語言的PRINTF函數(shù)功能類似。DECIMALFORMAT類的范例格式串,,FORMAT的范例格式,首先加IMPORTCOREJAVAFORMATF固定格式的浮點(diǎn)數(shù)FORMATPRINTF“X的值是2F\N”,XD,I以十進(jìn)制表示的整數(shù)S字符串C字符G,G以一般格式表示浮點(diǎn)數(shù),對小數(shù)用定點(diǎn)格式,對大數(shù)用指數(shù)格式X,X以十六進(jìn)制表示的整數(shù)O以八進(jìn)制表示例FORMATPRINTF“你的工資是2F\N”,PAY,73文件操作,1JAVA程序的文件與目錄管理JAVAIO包中的FILE類專門用來管理磁盤文件和目錄。每個FILE類的對象表示一個磁盤文件或目錄,對象屬性中包含名稱、長度、所含文件個數(shù)等信息。(1)創(chuàng)建FILE類對象的三種方法FILESTRINGPATH指明磁盤文件或目錄名及其路徑注意目錄分隔符用SYSTEMDIRSEP表示如FILEF1NEWFILE“C”SYSTEMDIRSEP”SJ”FILESTRINGPATH,STRINGNAME,文件或目錄的路徑,文件或目錄名,FILEFILEDIR,STRINGNAME(2)獲取文件或目錄屬性,已經(jīng)存在的磁盤目錄,(3)文件或目錄的操作,注意由于JAVAAPPLET程序是從網(wǎng)絡(luò)上下載到本地機(jī)器運(yùn)行的,不可知也不可控,所以JAVA的安全機(jī)制禁止JAVAAPPLET程序訪問和存取本地文件,如果試圖在JAVAAPPLET程序中使用文件操作,則將引發(fā)JAVA的安全性異常。,2寫文本文件,方法一用FILEOUTPUTSTREAM打開文件MYTXT,然后用PRINTSTREAM對象P的PRINTLN方法把字符串寫入文件中。例FILEOUTPUTSTREAMFOUTNEWFILEOUTPUTSTREAM“MYTXT”PRINTSTREAMPNEWPRINTSTREAMFOUTPPRINTLN“要寫入文本文件中的內(nèi)容”PCLOSE,寫文本例子1,方法二用FILEWRITER打開文件MYFTXT,又創(chuàng)建了文本輸出流OUT,然后用OUT的PRINT(或者PRINTLN)方法把字符串寫入文件中。例FILEWRITERFWNEWFILEWRITER“MYFTXT”PRINTWRITEROUTNEWPRINTWRITERFWOUTPRINT“要寫入文本文件中的內(nèi)容”O(jiān)UTCLOSE//關(guān)于輸出FWCLOSE//關(guān)閉文件,寫文本例子2,3讀文本文件,方法一用FILEINPUTSTREAM打開文件MYTXT,然后建立DATAINPUTSTREAM的對象IN(文件流),使用IN的READLINE()方法以一行為單位讀出MYTXT文件中的所有字符串。例FILEINPUTSTREAMFSNEWFILEINPUTSTREAM“MYTXT”DATAINPUTSTREAMINNEWDATAINPUTSTREAMFSWHILEINAVAILABLE0SYSTEMOUTPRINTLNINREADLINEINCLOSE//關(guān)閉輸入流,讀文本例子1,方法二用FILEREADER打開文件MYFTXT,然后用BUFFEREDREADER類的對象BR作為文件流,用BR的READLINE()讀取文件中的字符串。例FILEREADERFRNEWFILEREADER“MYFTXT”BUFFEREDREADERBRNEWBUFFEREDREADERFRSTRINGRECORDNEWSTRINGINTRECCOUNT0WHILERECORDBRREADLINENULL{RECCOUNTSYSTEMOUTPRINTLNRECCOUNT””RECORD}BRCLOSE//關(guān)于緩存FRCLOSE//關(guān)閉文件,讀文本例子2,4程序?qū)ξ募碾S機(jī)訪問,用RANDOMACCESSFILE類可以實(shí)現(xiàn)對文件的隨機(jī)讀寫操作,即可以在文件的任意位置執(zhí)行數(shù)據(jù)讀寫;創(chuàng)建RANDOMACCESSFILE的對象例FILEMFNEWFILE“MYFTXT”RANDOMACCESSFILEMYRAFNEWRANDOMACCESSFILEMF,”RW”,訪問模式RW可讀、可寫R只讀,作為數(shù)據(jù)源的文件,對文件位置指針的操作,利用GETPOINTER方法可以獲得當(dāng)前文件位置指針從文件頭算起的絕對位置PUBLICLONGGETPOINTER利用SEEK方法可以將指針移動到POS指定的文件位置PUBLICVOIDSEEKLONGPOS利用LENGTH方法可以返回文件的字節(jié)長度PUBLICLONGLENGTH,從文件頭算起的絕對位置,,對文件進(jìn)行讀寫操作,RANDOMACCESSFILE類實(shí)現(xiàn)了DATAINPUT和DATAOUTPUT接口,在讀/寫時具備強(qiáng)大的含類型轉(zhuǎn)換的輸入/輸出功能;RANDOMACCESSFILE類的所有方法都有可能拋出IOEXCEPTION異常,在利用它實(shí)現(xiàn)文件操作時需要將相關(guān)語句放在TRY塊中,并配上CATCH塊來處理異常。,
      下載積分: 6 賞幣
      上傳時間:2024-01-05
      頁數(shù): 24
      5人已閱讀
      ( 4 星級)
    • 下載積分: 5 賞幣
      上傳時間:2024-03-04
      頁數(shù): 4
      7人已閱讀
      ( 4 星級)
    • 下載積分: 5 賞幣
      上傳時間:2024-03-04
      頁數(shù): 5
      4人已閱讀
      ( 4 星級)
    • 下載積分: 6 賞幣
      上傳時間:2024-03-04
      頁數(shù): 20
      3人已閱讀
      ( 4 星級)
    • 下載積分: 5 賞幣
      上傳時間:2024-03-04
      頁數(shù): 5
      2人已閱讀
      ( 4 星級)
    • 簡介:JAVA程序設(shè)計(jì),第8章多線程,81線程及其創(chuàng)建811JAVA中的線程,JAVA程序通過流控制來執(zhí)行程序流,程序中單個順序的流控制稱為線程,多線程則指的是在單個程序中可以同時運(yùn)行多個不同的線程執(zhí)行不同的任務(wù)。單個程序內(nèi)部也可以在同一時刻進(jìn)行多種運(yùn)算。很多程序語言需要利用外部的線程軟件包來實(shí)現(xiàn)多線程,而JAVA則內(nèi)在支持多線程,它的所有類都是在多線程的思想下定義的。,線程,線程就是程序中單獨(dú)順序的流控制。JAVA的線程是通過JAVA的軟件包JAVALANG中定義的類THREAD來實(shí)現(xiàn)的。,線程體,線程的所有活動都是通過線程體RUN方法來實(shí)現(xiàn)的。在一個線程被建立并初始化以后,JAVA的運(yùn)行時系統(tǒng)就自動調(diào)用RUN方法。正是通過RUN方法才使得建立線程的目的得以實(shí)現(xiàn)。通常,RUN方法是一個循環(huán),例如一個播放動畫的線程要循環(huán)顯示一系列圖片。有時,RUN方法會執(zhí)行一個時間較長的操作,例如下載并播放一個JPEG格式的電影。,812創(chuàng)建線程對象的兩種方法,1.通過繼承THREAD類創(chuàng)建線程CLASSMYTHREADEXTENDSTHREAD{PUBLICVOIDRUN{FORINTI0I100I{SYSTEMOUTPRINT““I}}2.通過向THREAD構(gòu)造方法傳遞RUNNABLE對象來創(chuàng)建線程CLASSMYTASKIMPLEMENTSRUNNABLE{PUBLICVOIDRUN{}}THREADTHREADNEWTHREADMYTASKTHREADSTART3可用匿名類來實(shí)現(xiàn)RUNNABLE,如TESTTHREAD4ANONYMOUSJAVA,813多線程,TESTTHREAD3JAVA多線程。THREADDRAWJAVA多線程繪圖。,82線程的控制,,821線程的狀態(tài)與生命周期,在一個線程的生命周期中,它總處于某一種狀態(tài)中。線程的狀態(tài)表示了線程正在進(jìn)行的活動以及在這段時間內(nèi)線程能完成的任務(wù)。,822線程優(yōu)先級,THREAD類有三個有關(guān)線程優(yōu)先級的靜態(tài)常量MIN_PRIORITY,MAX_PRIORITY,NORM_PRIORITY,823對線程的基本控制,結(jié)束線程現(xiàn)在一般采取給線程設(shè)定一個標(biāo)記變量的方法來決定線程是否應(yīng)該終止。設(shè)定線程的優(yōu)先級可以使用THREAD對象的SETPRIORITYINTPRIORITY方法,,線程的啟動START暫時阻止線程的執(zhí)行THREADSLEEPLONGMILLISECOND來掛起線程的執(zhí)行TRY{THREADSLEEP1000}CATCHINTERRUPTEDEXCEPTIONE{//}JOIN方法。調(diào)用某THREAD對象的JOIN方法,可以將一個線程加入到本線程中,本線程的執(zhí)行會等待另一線程執(zhí)行完畢。THREADT//T是另一線程TRY{TJOIN}CATCHINTERRUPTEDEXCEPTIONE{//},后臺線程,線程有兩種,一類是DAEMON線程,一類是非DAEMON線程。在JAVA程序中,若還有非DEMON線程,則整個程序就不會結(jié)束;當(dāng)正在運(yùn)行的線程都是守護(hù)線程時,JAVA虛擬機(jī)退出。使用SETDAEMONTRUE垃圾回收是后臺線程示例TESTTHREADDAEMONJAVA,83線程的同步,,多線程同步,線程都是獨(dú)立的,而且異步執(zhí)行,也就是說每個線程都包含了運(yùn)行時所需要的數(shù)據(jù)或方法,而不需要外部的資源或方法,也不必關(guān)心其它線程的狀態(tài)或行為。但是經(jīng)常有一些同時運(yùn)行的線程需要共享數(shù)據(jù),例如一個線程向文件寫數(shù)據(jù),而同時另一個線程從同一文件中讀取數(shù)據(jù),因此就必須考慮其它線程的狀態(tài)與行為,這時就需要實(shí)現(xiàn)同步來得到預(yù)期結(jié)果。示例SYNCCOUNTER1JAVA,在JAVA語言中,引入了對象互斥鎖的概念,來保證共享數(shù)據(jù)操作的完整性。每個對象都對應(yīng)于一個可稱為“互斥鎖”的標(biāo)記,這個標(biāo)記用來保證在任一時刻,只能有一個線程訪問該對象。關(guān)鍵字SYNCHRONIZED用來與對象的互斥鎖聯(lián)系。當(dāng)某個對象用SYNCHRONIZED修飾時,表明該對象在任一時刻只能由一個線程訪問。使用WAIT方法可以釋放對象鎖使用NOTIFY或NOTIFYALL可以讓等待的一個或所有線程進(jìn)入就緒狀態(tài),SYNCHRONIZED除了象上面講的放在對象前面限制一段代碼的執(zhí)行外,還可以放在方法聲明中,表示整個方法為同步方法。PUBLICSYNCHRONIZEDVOIDPUSHCHARC{}如果SYNCHRONIZED用在類聲明中,則表明該類中的所有方法都是SYNCHRONIZED的。示例SYNCCOUNTER2JAVA,生產(chǎn)者消費(fèi)者問題,示例PRODUCERCONSUMERSTACKJAVACLASSCUBBYHOLE{PRIVATEINTINDEX0PRIVATEINTDATANEWINT3PUBLICSYNCHRONIZEDVOIDPUTINTVALUE{WHILEINDEXDATALENGTH{TRY{THISWAIT}CATCHINTERRUPTEDEXCEPTIONE{}}DATAINDEXVALUEINDEXTHISNOTIFY},PUBLICSYNCHRONIZEDINTGET{WHILEINDEX0{TRY{THISWAIT}CATCHINTERRUPTEDEXCEPTIONE{}}INDEXINTVALDATAINDEXTHISNOTIFYRETURNVAL}},84并行API,JAVAUTILCONCURRENT包LOCK、REENTRANTLOCKLOCKTRYLOCKUNLOCK例NODEADLOCKDEMOJAVAREADWRITELOCK、REENTRANTREADWRITELOCKWRITELOCKLOCK,READLOCKUNLOCK例ARRAYLIST2JAVA,并行的集合類,產(chǎn)生一個線程安全的集合對象COLLECTIONSSYNCHRONIZEDARRAYLISTLISTCOPYONWRITEARRAYLIST、COPYONWRITEARRAYSET適合于很少寫入而迭代頻繁的對象ARRAYBLOCKINGQUEUE生產(chǎn)者與消費(fèi)者,使用PUT及TAKECONCURRENTHASHMAPPUTIFABSENT,REMOVE,REPLACE,線程相關(guān)的其他問題,使用JAVAUTILTIMER/TIMERTASK類示例TIMERTESTJAVA在線程中更新圖形化界面,要調(diào)用INVOKELATER示例THREADDRAWJJAVA,
      下載積分: 6 賞幣
      上傳時間:2024-01-05
      頁數(shù): 21
      5人已閱讀
      ( 4 星級)
    • 下載積分: 3 賞幣
      上傳時間:2024-03-04
      頁數(shù): 2
      6人已閱讀
      ( 4 星級)
    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服客服 - 聯(lián)系我們

    機(jī)械圖紙?jiān)创a,實(shí)習(xí)報(bào)告等文檔下載

    備案號:浙ICP備20018660號