A. 求java項目名的命名規范!
我經過資料的搜索, 以及個人實踐, 建議採用PascalCase.
以下是我個人對Java命名的方方面面的總結:
NamingConvention
0)Project
單詞首字母大寫,即PascalCase
BillSystem
170213_JQueryDemo//一般我會在項目名前加上日期,便於在文件系統中能按照時間排序.
1)Package:
全部小寫
com.sina.is
e.bdqn.u2
2)Class/Interface:
首字母大寫,每個單詞的首字母都大寫,盡量避免縮寫,除非這些縮寫用得比原始單詞還廣泛得多,比如URL,HTTP.
StudentDao
StudentDaoImpl
StudentServlet
3)Methods:
service();
getsNo();
setAddress();
4)Variables:
simpleandexplicit,concise,correct,clear,camelCase.
datetime
unit
itemName
B. 阿里巴巴 用什麼java框架
1、現在的大公司都是有很多積累的,他們都擁有適合自己的框架技術,這些全靠積累。所以阿里巴巴的主流Java框架是自己寫的,同時結合了大量open source的資源。2、WEB層 —— 使用webx框架。主要利用velocity模板技術來展現頁面。3、業務層 —— 主要使用command模式實現。WEB層通過command dispatcher的調用來使用業務邏輯。4、數據訪問層 —— 使用DAO(Data Access Object)模式。底層使用iBatis來訪問資料庫。數據採用的是Oracle。資料庫操作的SQL語句需要你手工書寫相關的SQL代碼(對於復雜的SQL語句需要通過DBA的評審)。5、開發工具,採用IDE和命令行相結合的模式。在命令行上,我們用antx工具來組織項目、build項目、發布項目。但我們多數時間會在eclipse集成環境上,開發、調試應用。6、版本控制,採用了Subversion。但部分項目因為歷史的原因,暫時使用CVS,將來必然會遷移到Subversion上。Subversion有很多種操作方式:通過命令行、通過TortoiseSVN集成工具、通過WEB、通過Eclipse插件。總結:在所有層次上,他們都廣泛使用了Spring framework。因此您需要對Spring有一定的了解才行。阿裡面試時非常考驗基礎知識的,因為他們有自己的技術積累,框架技術已經趨於成熟,所以面試都是一些基礎知識與演算法知識。現在的阿里技術或許已經更加成熟,
C. jdk內有哪些約定俗成的命名規則和規范
2017版的阿里java開發手冊:比較多,只能復制一部分,你可以去網路具體的
一、編程規約
(一)命名規約
1.【強制】代碼中的命名均不能以下劃線或美元符號開始,也不能以下劃線或美元符號結束。
反例:_name/__name/$Object/name_/name$/Object$
2.【強制】代碼中的命名嚴禁使用拼音與英文混合的方式,更不允許直接使用中文的方式。
說明:正確的英文拼寫和語法可以讓閱讀者易於理解,避免歧義。注意,即使純拼音命名方式
也要避免採用。
反例:DaZhePromotion[打折]/getPingfenByName()[評分]/int某變數=3
正例:alibaba/taobao/youku/hangzhou等國際通用的名稱,可視同英文。
3.【強制】類名使用UpperCamelCase風格,必須遵從駝峰形式,但以下情形例外:(領域模型
的相關命名)DO/BO/DTO/VO等。
正例:MarcoPolo/UserDO/XmlService/TcpUdpDeal/TaPromotion
反例:macroPolo/UserDo/XMLService/TCPUDPDeal/TAPromotion
4.【強制】方法名、參數名、成員變數、局部變數都統一使用lowerCamelCase風格,必須遵從
駝峰形式。
正例:localValue/getHttpMessage()/inputUserId
5.【強制】常量命名全部大寫,單詞間用下劃線隔開,力求語義表達完整清楚,不要嫌名字長。
正例:MAX_STOCK_COUNT
反例:MAX_COUNT
6.【強制】抽象類命名使用Abstract或Base開頭;異常類命名使用Exception結尾;測試類
命名以它要測試的類的名稱開始,以Test結尾。
7.【強制】中括弧是數組類型的一部分,數組定義如下:String[]args;
反例:使用Stringargs[]的方式來定義。
8.【強制】POJO類中布爾類型的變數,都不要加is,否則部分框架解析會引起序列化錯誤。
反例:定義為基本數據類型BooleanisSuccess;的屬性,它的方法也是isSuccess(),RPC
框架在反向解析的時候,「以為」對應的屬性名稱是success,導致屬性獲取不到,進而拋出異
常。
9.【強制】包名統一使用小寫,點分隔符之間有且僅有一個自然語義的英語單詞。包名統一使用
單數形式,但是類名如果有復數含義,類名可以使用復數形式。
正例:應用工具類包名為com.alibaba.open.util、類名為MessageUtils(此規則參考
spring的框架結構)
10.【強制】杜絕完全不規范的縮寫,避免望文不知義。
反例:AbstractClass「縮寫」命名成AbsClass;condition「縮寫」命名成condi,此類
隨意縮寫嚴重降低了代碼的可閱讀性。
11.【推薦】如果使用到了設計模式,建議在類名中體現出具體模式。
說明:將設計模式體現在名字中,有利於閱讀者快速理解架構設計思想。
正例:publicclassOrderFactory;
publicclassLoginProxy;
publicclassResourceObserver;
12.【推薦】介面類中的方法和屬性不要加任何修飾符號(public也不要加),保持代碼的簡潔
性,並加上有效的Javadoc注釋。盡量不要在介面里定義變數,如果一定要定義變數,肯定是
與介面方法相關,並且是整個應用的基礎常量。
正例:介面方法簽名:voidf();
介面基礎常量表示:StringCOMPANY="alibaba";
反例:介面方法定義:publicabstractvoidf();
說明:JDK8中介面允許有默認實現,那麼這個default方法,是對所有實現類都有價值的默
認實現。
13.介面和實現類的命名有兩套規則:
1)【強制】對於Service和DAO類,基於SOA的理念,暴露出來的服務一定是介面,內部
的實現類用Impl的後綴與介面區別。
正例:CacheServiceImpl實現CacheService介面。
2)【推薦】如果是形容能力的介面名稱,取對應的形容詞做介面名(通常是–able的形式)。
正例:AbstractTranslator實現Translatable。
14.【參考】枚舉類名建議帶上Enum後綴,枚舉成員名稱需要全大寫,單詞間用下劃線隔開。
說明:枚舉其實就是特殊的常量類,且構造方法被默認強制是私有。
正例:枚舉名字:DealStatusEnum,成員名稱:SUCCESS/UNKOWN_REASON。
15.【參考】各層命名規約:
A)Service/DAO層方法命名規約
1)獲取單個對象的方法用get做前綴。
2)獲取多個對象的方法用list做前綴。
3)獲取統計值的方法用count做前綴。
4)插入的方法用save(推薦)或insert做前綴。
5)刪除的方法用remove(推薦)或delete做前綴。
6)修改的方法用update做前綴。
B)領域模型命名規約
1)數據對象:xxxDO,xxx即為數據表名。
2)數據傳輸對象:xxxDTO,xxx為業務領域相關的名稱。
3)展示對象:xxxVO,xxx一般為網頁名稱。
4)POJO是DO/DTO/BO/VO的統稱,禁止命名成xxxPOJO。
(二)常量定義
1.【強制】不允許出現任何魔法值(即未經定義的常量)直接出現在代碼中。
反例:Stringkey="Id#taobao_"+tradeId;
cache.put(key,value);
2.【強制】long或者Long初始賦值時,必須使用大寫的L,不能是小寫的l,小寫容易跟數字
1混淆,造成誤解。
說明:Longa=2l;寫的是數字的21,還是Long型的2?
3.【推薦】不要使用一個常量類維護所有常量,應該按常量功能進行歸類,分開維護。如:緩存
相關的常量放在類:CacheConsts下;系統配置相關的常量放在類:ConfigConsts下。
說明:大而全的常量類,非得使用查找功能才能定位到修改的常量,不利於理解和維護。
4.【推薦】常量的復用層次有五層:跨應用共享常量、應用內共享常量、子工程內共享常量、包
內共享常量、類內共享常量。
1)跨應用共享常量:放置在二方庫中,通常是client.jar中的constant目錄下。
2)應用內共享常量:放置在一方庫的moles中的constant目錄下。
反例:易懂變數也要統一定義成應用內共享常量,兩位攻城師在兩個類中分別定義了表示
「是」的變數:
類A中:publicstaticfinalStringYES="yes";
類B中:publicstaticfinalStringYES="y";
A.YES.equals(B.YES),預期是true,但實際返回為false,導致產生線上問題。
3)子工程內部共享常量:即在當前子工程的constant目錄下。
4)包內共享常量:即在當前包下單獨的constant目錄下。
5)類內共享常量:直接在類內部privatestaticfinal定義。
5.【推薦】如果變數值僅在一個范圍內變化用Enum類。如果還帶有名稱之外的延伸屬性,必須
使用Enum類,下面正例中的數字就是延伸信息,表示星期幾。
正例:publicEnum{MONDAY(1),TUESDAY(2),WEDNESDAY(3),THURSDAY(4),FRIDAY(5),SATURDAY(6),
SUNDAY(7);}
(三)格式規約
1.【強制】大括弧的使用約定。如果是大括弧內為空,則簡潔地寫成{}即可,不需要換行;如果
是非空代碼塊則:
1)左大括弧前不換行。
2)左大括弧後換行。
3)右大括弧前換行。
4)右大括弧後還有else等代碼則不換行;表示終止右大括弧後必須換行。
2.【強制】左括弧和後一個字元之間不出現空格;同樣,右括弧和前一個字元之間也不出現空
格。詳見第5條下方正例提示。
3.【強制】if/for/while/switch/do等保留字與左右括弧之間都必須加空格。
4.【強制】任何運算符左右必須加一個空格。
說明:運算符包括賦值運算符=、邏輯運算符&&、加減乘除符號、三目運算符等。
5.【強制】縮進採用4個空格,禁止使用tab字元。
說明:如果使用tab縮進,必須設置1個tab為4個空格。IDEA設置tab為4個空格時,
請勿勾選Usetabcharacter;而在eclipse中,必須勾選insertspacesfortabs。
正例:(涉及1-5點)
publicstaticvoidmain(String[]args){
//縮進4個空格
Stringsay="hello";
//運算符的左右必須有一個空格
intflag=0;
//關鍵詞if與括弧之間必須有一個空格,括弧內的f與左括弧,0與右括弧不需要空格
if(flag==0){
System.out.println(say);
}
//左大括弧前加空格且不換行;左大括弧後換行
if(flag==1){
System.out.println("world");
//右大括弧前換行,右大括弧後有else,不用換行
阿里巴巴Java開發手冊
——禁止用於商業用途,違者必究——6/37
}else{
System.out.println("ok");
//在右大括弧後直接結束,則必須換行
}
}
6.【強制】單行字元數限制不超過120個,超出需要換行,換行時遵循如下原則:
1)第二行相對第一行縮進4個空格,從第三行開始,不再繼續縮進,參考示例。
2)運算符與下文一起換行。
3)方法調用的點符號與下文一起換行。
4)在多個參數超長,逗號後進行換行。
5)在括弧前不要換行,見反例。
正例:
StringBuffersb=newStringBuffer();
//超過120個字元的情況下,換行縮進4個空格,並且方法前的點符號一起換行
sb.append("zi").append("xin")...
.append("huang")...
.append("huang")...
.append("huang");
反例:
StringBuffersb=newStringBuffer();
//超過120個字元的情況下,不要在括弧前換行
sb.append("zi").append("xin")...append
("huang");
//參數很多的方法調用可能超過120個字元,不要在逗號前換行
method(args1,args2,args3,...
,argsX);
7.【強制】方法參數在定義和傳入時,多個參數逗號後邊必須加空格。
正例:下例中實參的"a",後邊必須要有一個空格。
method("a","b","c");
8.【強制】IDE的textfileencoding設置為UTF-8;IDE中文件的換行符使用Unix格式,
不要使用windows格式。
9.【推薦】沒有必要增加若干空格來使某一行的字元與上一行的相應字元對齊。
正例:
inta=3;
longb=4L;
floatc=5F;
StringBuffersb=newStringBuffer();
說明:增加sb這個變數,如果需要對齊,則給a、b、c都要增加幾個空格,在變數比較多的
情況下,是一種累贅的事情。
阿里巴巴Java開發手冊
——禁止用於商業用途,違者必究——7/37
10.【推薦】方法體內的執行語句組、變數的定義語句組、不同的業務邏輯之間或者不同的語義
之間插入一個空行。相同業務邏輯和語義之間不需要插入空行。
說明:沒有必要插入多行空格進行隔開。
(四)OOP規約
1.【強制】避免通過一個類的對象引用訪問此類的靜態變數或靜態方法,無謂增加編譯器解析成
本,直接用類名來訪問即可。
2.【強制】所有的覆寫方法,必須加@Override註解。
反例:getObject()與get0bject()的問題。一個是字母的O,一個是數字的0,加@Override
可以准確判斷是否覆蓋成功。另外,如果在抽象類中對方法簽名進行修改,其實現類會馬上編
譯報錯。
3.【強制】相同參數類型,相同業務含義,才可以使用Java的可變參數,避免使用Object。
說明:可變參數必須放置在參數列表的最後。(提倡同學們盡量不用可變參數編程)
正例:publicUsergetUsers(Stringtype,Integer...ids)
4.【強制】外部正在調用或者二方庫依賴的介面,不允許修改方法簽名,避免對介面調用方產生
影響。介面過時必須加@Deprecated註解,並清晰地說明採用的新介面或者新服務是什麼。
5.【強制】不能使用過時的類或方法。
說明:java.net.URLDecoder中的方法decode(StringencodeStr)這個方法已經過時,應
該使用雙參數decode(Stringsource,Stringencode)。介面提供方既然明確是過時介面,
那麼有義務同時提供新的介面;作為調用方來說,有義務去考證過時方法的新實現是什麼。
6.【強制】Object的equals方法容易拋空指針異常,應使用常量或確定有值的對象來調用
equals。
正例:"test".equals(object);
反例:object.equals("test");
說明:推薦使用java.util.Objects#equals(JDK7引入的工具類)
7.【強制】所有的相同類型的包裝類對象之間值的比較,全部使用equals方法比較。
說明:對於Integervar=?在-128至127之間的賦值,Integer對象是在
IntegerCache.cache產生,會復用已有對象,這個區間內的Integer值可以直接使用==進行
判斷,但是這個區間之外的所有數據,都會在堆上產生,並不會復用已有對象,這是一個大坑,
推薦使用equals方法進行判斷。
8.關於基本數據類型與包裝數據類型的使用標准如下:
1)【強制】所有的POJO類屬性必須使用包裝數據類型。
2)【強制】RPC方法的返回值和參數必須使用包裝數據類型。
3)【推薦】所有的局部變數使用基本數據類型。
說明:POJO類屬性沒有初值是提醒使用者在需要使用時,必須自己顯式地進行賦值,任何
NPE問題,或者入庫檢查,都由使用者來保證。
正例:資料庫的查詢結果可能是null,因為自動拆箱,用基本數據類型接收有NPE風險。
反例:比如顯示成交總額漲跌情況,即正負x%,x為基本數據類型,調用的RPC服務,調用
不成功時,返回的是默認值,頁面顯示:0%,這是不合理的,應該顯示成中劃線-。所以包裝
數據類型的null值,能夠表示額外的信息,如:遠程調用失敗,異常退出。
9.【強制】定義DO/DTO/VO等POJO類時,不要設定任何屬性默認值。
反例:POJO類的gmtCreate默認值為newDate();但是這個屬性在數據提取時並沒有置入具
體值,在更新其它欄位時又附帶更新了此欄位,導致創建時間被修改成當前時間。
10.【強制】序列化類新增屬性時,請不要修改serialVersionUID欄位,避免反序列失敗;如
果完全不兼容升級,避免反序列化混亂,那麼請修改serialVersionUID值。
說明:注意serialVersionUID不一致會拋出序列化運行時異常。
11.【強制】構造方法裡面禁止加入任何業務邏輯,如果有初始化邏輯,請放在init方法中。
12.【強制】POJO類必須寫toString方法。使用IDE的中工具:source>generatetoString
時,如果繼承了另一個POJO類,注意在前面加一下super.toString。
說明:在方法執行拋出異常時,可以直接調用POJO的toString()方法列印其屬性值,便於排
查問題。
13.【推薦】使用索引訪問用String的split方法得到的數組時,需做最後一個分隔符後有無
內容的檢查,否則會有拋IndexOutOfBoundsException的風險。
說明:
Stringstr="a,b,c,,";
String[]ary=str.split(",");
//預期大於3,結果是3
System.out.println(ary.length);
14.【推薦】當一個類有多個構造方法,或者多個同名方法,這些方法應該按順序放置在一起,
便於閱讀。
15.【推薦】類內方法定義順序依次是:公有方法或保護方法>私有方法>getter/setter
方法。
說明:公有方法是類的調用者和維護者最關心的方法,首屏展示最好;保護方法雖然只是子類
關心,也可能是「模板設計模式」下的核心方法;而私有方法外部一般不需要特別關心,是一個
黑盒實現;因為方法信息價值較低,所有Service和DAO的getter/setter方法放在類體最
後。
16.【推薦】setter方法中,參數名稱與類成員變數名稱一致,this.成員名=參數名。在
getter/setter方法中,盡量不要增加業務邏輯,增加排查問題的難度。
反例:
publicIntegergetData(){
if(true){
returndata+100;
}else{
returndata-100;
}
}
17.【推薦】循環體內,字元串的連接方式,使用StringBuilder的append方法進行擴展。
反例:
Stringstr="start";
for(intI=0;I<100;i++){
str=str+"hello";
}
說明:反編譯出的位元組碼文件顯示每次循環都會new出一個StringBuilder對象,然後進行
append操作,最後通過toString方法返回String對象,造成內存資源浪費。
18.【推薦】下列情況,聲明成final會更有提示性:
1)不需要重新賦值的變數,包括類屬性、局部變數。
2)對象參數前加final,表示不允許修改引用的指向。
3)類方法確定不允許被重寫。
19.【推薦】慎用Object的clone方法來拷貝對象。
說明:對象的clone方法默認是淺拷貝,若想實現深拷貝需要重寫clone方法實現屬性對象
的拷貝。
20.【推薦】類成員與方法訪問控制從嚴:
1)如果不允許外部直接通過new來創建對象,那麼構造方法必須是private。
2)工具類不允許有public或default構造方法。
3)類非static成員變數並且與子類共享,必須是protected。
4)類非static成員變數並且僅在本類使用,必須是private。
5)類static成員變數如果僅在本類使用,必須是private。
6)若是static成員變數,必須考慮是否為final。
7)類成員方法只供類內部調用,必須是private。
8)類成員方法只對繼承類公開,那麼限制為protected。
說明:任何類、方法、參數、變數,嚴控訪問范圍。過寬泛的訪問范圍,不利於模塊解耦。思
考:如果是一個private的方法,想刪除就刪除,可是一個public的Service方法,或者一
個public的成員變數,刪除一下,不得手心冒點汗嗎?變數像自己的小孩,盡量在自己的視
線內,變數作用域太大,如果無限制的到處跑,那麼你會擔心的。
D. 求一個javaweb+mysql的圖書管理系統,可運行的
在CSDN下載專區搜索關鍵詞如「圖書管理系統」「javaweb」「mysql」,很容易找到滿足你需求的項目。
如果沒有積分可以在t寶上買一個賬號,也很便宜的。
jsp+mysql圖書館管理系統jsp做的圖書館管理系統,用的資料庫是mysql,附帶有library.sql文件,可以直接導入生成資料庫,還有使用說明,是菜鳥不可多得的源碼。
圖書管理系統Java+ MySQL完整實訓代碼,包含所有用到的圖片資源以及資料庫文件,大三上學期實訓,注釋很詳細,按照阿里巴巴Java編程規范編寫
圖書管理系統,用JAVA和MYSQL。。。
E. java程序員有哪些應該注意的編碼規范
Java編碼規范:盡量使用完整的英文描述符採用適用於相關領域的術語採用大小寫混合使名字可讀盡量少用縮寫,但如果用了,必須符合整個工程中的統一定義避免使用長的名字(小於15個字母為正常選擇)避免使用類似的名字,或者僅僅是大小寫不同的名字避免使用下劃線(除靜態常量等)標識符類型說明包(Package)的命名Package的名字應該採用完整的英文描述符,都是由一個小寫單片語成。並且包名的前綴總是一個頂級域名
,通常是com、e、gov、mil、net、org等;如:com.yjhmily.test類(Class)的命名類名應該是個一名詞,採用大小寫混合的方式,每個單詞的首字母大寫。盡量保證類名簡潔而富於描述。
F. java招聘崗位要求
總結了進入阿里巴巴、網路、騰訊這三家公司你所需掌握的Java技能,一起來看看吧!
1、阿里巴巴篇
扎實的計算機專業基礎,包括演算法和數據結構,操作系統,計算機網路,計算機體系結構,資料庫等;
具有扎實的Java編程基礎,理解IO、多線程等基礎框架;;
熟練使用linux系統的常用命令及shell有一定了解;
精通多線程編程,熟悉分布式,緩存,消息隊列等機制;熟悉JVM,包括內存模型、類載入機制以及性能優化;
精通spring mvc、orm框架(ibatis或hibernate)、模板引擎(velocity)、關系型資料庫設計及SQL;
具備良好的面向對象編程經驗,深入理解OO、AOP思想,具有很強的分析設計能力,熟悉常用設計模式;
有大型分布式、高並發、高負載、高可用性系統設計和穩定性經驗;
熟悉面向對象設計開發,熟悉各種常用設計模式,並有在具體的應用場景落地經驗;;
熟悉Spring、iBatis,等開源框架及消息,存儲等常用中間件。 有通讀過開源框架源碼;
熟悉基於Oracle或者Mysql的設計和開發、Linux操作系統;
熟悉SOA,有平台化實施經驗者,有大數據量、高並發系統和大型網站構建經驗;
分布式系統應用架構設計與研發經驗,精通JavaEE、SOA、OSGI等相關技術;
對各種開源的框架如Spring、Hibernate等有深入的了解,對框架本身有過開發或重構者可優先考慮;
具有大型電子商務網站、O2O行業、C端產品系統架構設計經驗。
2、網路篇
熟悉常見設計模式,掌握Java流行的開源框架SpringMVC/Spring Boot/Spring Cloud,熟練使用至少一種ORM框架;
熟練掌握基本的數據結構和演算法,有系統分析和設計的實踐經驗;
熟悉Rest,HTTP,Socket、webservice、HTTP協議,具備並發、多線程的編程經驗;
對Mysql、Redis、MongoDB 等資料庫有研究或者項目經驗;
具有大型互聯網服務設計及開發經驗;
熟悉JVM,對JVM有一定理解,並能藉助相關工具進行JVM性能調優;
熟悉常見的開源分布式中間件、緩存、消息隊列等,熟悉nginx,MySQL,Redis,mongodb等常用的開源軟體;
熟悉MySQL資料庫設計和優化,有NoSQL資料庫使用經驗;
具有大數據存儲或者高性能計算平台架構、設計及開發等方面經歷;
具有大型互聯網服務設計及開發經驗。
3、騰訊篇
精通Web後台開發語言至少一種(PHP、Java、.Net、C++),有一定的架構能力和良好代碼規范;
熟悉linux/unix系統與開發環境;
熟悉TCP/IP協議,socket編程;
熟悉mysql以及SQL語言;
有高性能大容量服務系統設計開發經驗;
精通面向對象設計,精通J2EE開發,Javaweb開發;
全面並且扎實的軟體知識結構(操作系統、軟體工程、設計模式、數據結構、資料庫系統、網路安全);
具備良好的分析解決問題能力,能獨立承擔任務和有系統進度把控能力;
精通MySQL或Mongo DB,熟悉緩存技術memcached、redis;
有大型分布式、高並發、高負載、高可用系統設計、開發和調優經驗;
B/S結構系統分析及設計經驗,有構建可伸縮、可擴展、高可用系統經驗;
有良好的開發習慣,熟悉Maven, Jenkins, JUnit等工具;
精通MVC/REST架構、模板引擎、中間件的原理與應用;
熟悉MySQL資料庫,了解MySQL索引優化、查詢優化和存儲優化。
以上這些都是進入這三家公司你所需掌握的技能要點。整個互聯網在不斷發展,Java技術也在不斷進步,Java應用會越來越廣泛,人才需求當然也不會止步於當前,未來優秀Java工程師將成為市場爭搶的資源。所以,想學就趁早吧。
G. 阿里巴巴java開發手冊及java代碼規約掃描eclipse和idea插件怎麼導入本地包
點擊設置面板(Ctrl+alt+S),選擇「Paths」,在classpath標簽項中將你在global libraries中創建的項選中就可以啦。在Global Libraries創建的項如果不被選擇,是不會添加到項目中的。