日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用Linux進(jìn)行高效程序部署 (linux 部署 程序)

現(xiàn)代軟件開發(fā)中程序部署是不可或缺的一部分,在部署過程中通常需要考慮多種因素,包括目標(biāo)機(jī)器的硬件、網(wǎng)絡(luò)環(huán)境以及軟件本身的特點(diǎn)等。而在眾多操作系統(tǒng)中,Linux因其穩(wěn)定性和效率而備受開發(fā)者青睞,也成為了程序部署的首選平臺之一。本文將介紹如何,包括以下幾個方面:

1. 選擇合適的Linux發(fā)行版

Linux有眾多發(fā)行版,每個發(fā)行版都有其特點(diǎn)和適用場景。在選擇Linux發(fā)行版的時候需要根據(jù)實(shí)際情況進(jìn)行選擇,比如目標(biāo)機(jī)器的硬件配置、需要安裝的軟件包以及使用場景等。

常用的Linux發(fā)行版包括Ubuntu、CentOS、Debian等,它們分別適用于不同的場景。比如Ubuntu適用于桌面應(yīng)用和個人服務(wù)器,CentOS適用于企業(yè)服務(wù)器,而Debian則適用于穩(wěn)定性和安全性較高的場景。

2. 使用包管理器進(jìn)行軟件安裝

Linux下的軟件安裝和Windows下略有不同,Linux通常使用包管理器進(jìn)行軟件安裝。包管理器可以簡化軟件安裝和升級的流程,同時也可以保證軟件的穩(wěn)定性和安全性。

常見的包管理器有yum、apt-get、pacman等,它們分別對應(yīng)不同的Linux發(fā)行版。通過包管理器安裝軟件時,需要指定軟件名稱和版本號等參數(shù),也可以使用通配符進(jìn)行搜索。

3. 使用版本控制工具管理代碼

代碼的版本控制是一個必不可少的環(huán)節(jié),在程序部署過程中也不例外。使用版本控制工具可以方便地進(jìn)行代碼管理、修改和回滾等操作。

常見的版本控制工具有Git、SVN等,其中Git是目前更流行的版本控制工具之一。使用Git可以方便地進(jìn)行代碼管理、分支合并以及代碼提交等操作。

4. 使用自動化工具進(jìn)行部署

手動部署可能會帶來諸多不便,比如部署時間長、易出錯等。使用自動化工具可以方便地進(jìn)行程序部署,減少手動干預(yù)的風(fēng)險。

常見的自動化工具有Ansible、Chef、Puppet等,它們都可以方便地進(jìn)行程序部署和配置,同時也可以保證部署的一致性和可靠性。

Linux作為一個高效且穩(wěn)定的操作系統(tǒng),在程序部署中擁有不可或缺的作用。通過選擇合適的Linux發(fā)行版、使用包管理器安裝軟件、利用版本控制工具管理代碼和使用自動化工具進(jìn)行部署等方法,可以大幅提高程序部署的效率和質(zhì)量。

相關(guān)問題拓展閱讀:

  • 菜鳥關(guān)于linux下裝應(yīng)用程序的問題

菜鳥關(guān)于linux下裝應(yīng)用程序的問題

Linux 操作系統(tǒng)、構(gòu)建工具和多數(shù)語言的編譯器可免費(fèi)獲得并可從因特網(wǎng)上下載。為了開始移植,您將需要提供硬件和開發(fā)人員:

第 1 步 — 下載所需的開發(fā)工具和 Linux 分發(fā)版。

第 2 步 — 改用 Linux 開發(fā)工具但仍然運(yùn)行 Solaris。這種方法使得轉(zhuǎn)變更平緩。

第 3 步 — 熟悉 Linux 操作系統(tǒng)但仍舊在 Sun 硬件上運(yùn)行遲閉。

第 4 步 — 把應(yīng)用程序移到目標(biāo) Linux 平臺。

第 1 步:下載

以下列出的是所需的編譯器、構(gòu)建工具和相關(guān)的在線文檔鏈接:

GCC(GNU Compiler Collection)工具套件包含一個 C 編譯器和一個 C++ 編譯器

gcc.gnu.org/releases.html

在線文檔

gcc.gnu.org/onlinedocs/gcc-2.95.2/gcc_toc.html

Solaris GNU 編譯器和 make(gmake)實(shí)用程序

www.sunfreeware.com/

在線文檔

docs.sun.com/

gnu.org/manual/make-3.79.1/html_mono/make.html

Linux 可從以下 Linux 發(fā)行商那里獲得。

Caldera

www.calder/

Red Hat

www.redhat.com/

SuSE

www.suse.com/

Turbolinux

www.turbolinux.com/

— Linux 的 UltraSPARC 版本

Sun

www.sun.com

第 2 步:為 Solaris 上的 Linux 構(gòu)建您的 C/C++ 應(yīng)用程序

安裝工具 — 先在 Solaris 上安裝 GNU 工具。由于 GNU 編譯器和 make 實(shí)用程序在 Solaris 和 Linux 上都能用,所以使用這些工具來嘗試初次構(gòu)建您的 Linux 應(yīng)用程序相對較容易。

轉(zhuǎn)換 makefile — 構(gòu)建您的應(yīng)用程序時請用 GNU gmake 實(shí)用程序,別用 Solaris make 實(shí)用程序。根據(jù)您的 makefile 中用到的構(gòu)造,您可能遇到 GNU gmake 實(shí)用程序產(chǎn)生的錯誤消息,因?yàn)?GNU gmake 實(shí)用程序和 Solaris make 實(shí)用程序是有區(qū)別的。請用 make 工具文檔來幫助找出 makefile 中有問題的地方,然后對 makefile 作出所需的調(diào)整。

編譯和調(diào)試 — 當(dāng)您通過修改您的 makefile、使之能被 gmake 使用后,把 makefile 中調(diào)用 C 編譯器的名字 cc 改為 gcc,C++ 編鏈毀譯器的名字 CC 改為 g++。然后編譯該應(yīng)用程序。您在構(gòu)建中所遇到的錯誤消息,如果有的話,可被分成兩類:命令行選項問題和代碼問題。

找出由于 GNU 和 Sun 編譯器所接受的命令行選項有所不同而產(chǎn)生的消息。除了幾個基本選項(例如“-c”和“-g”),兩個編譯器能接受的多數(shù)選項是不同的。請碼喚裂參閱編譯器文檔,修改您的 makefile,以適應(yīng)編譯器選項間的區(qū)別。

下一步,您可以處理剩下的與代碼有關(guān)的錯誤消息和警告。請參閱編譯器文檔,理解并解決由于編譯器之間的差別而產(chǎn)生的問題。

第 3 步:在 Linux 的 Sun UltraSPARC 版本上構(gòu)建和測試您的應(yīng)用程序。

如果所移植的應(yīng)用程序依賴特定的 UltraSPARC 硬件,那么這是移植過程中的重要階段。Solaris 開發(fā)者有機(jī)會熟悉 Linux 環(huán)境而不必放棄下層的 UltraSPARC 硬件,也不必修改應(yīng)用程序中特定于硬件的部分。

安裝 Linux 環(huán)境 — 在 Sun UltraSPARC 上,安裝 Linux 和 GNU 實(shí)用程序。

編譯并調(diào)試運(yùn)行時 API — 因?yàn)槟跇?gòu)建您的應(yīng)用程序時用的是 GNU 實(shí)用程序,所以您在這步看到的區(qū)別限于 Solaris 和 Linux 之間的運(yùn)行時應(yīng)用程序編程接口(application programming interfaces,API)的區(qū)別。如果您想了解這些區(qū)別的更多信息,請參閱運(yùn)行時接口部分(第 7 頁)。對應(yīng)用程序作出所需的調(diào)整。

測試 — 當(dāng)應(yīng)用程序被完全地重新構(gòu)建后,進(jìn)行徹底的驗(yàn)證測試。

第 4 步:在目標(biāo) Linux 平臺上構(gòu)建和測試您的應(yīng)用程序。

安裝 Linux 環(huán)境 — 在目標(biāo)硬件上安裝 Linux 和 GNU 工具。

復(fù)制并重新構(gòu)建應(yīng)用程序 — 把您的源代碼樹和 makefile 復(fù)制到新的 Linux 機(jī)器上并重新構(gòu)建應(yīng)用程序。如果您沒完成第 3 步,那么您可能需要修改應(yīng)用程序,以適應(yīng) Solaris 和 Linux 之間運(yùn)行時 API 的區(qū)別。最后,如果您的應(yīng)用程序包含任何特定于 UltraSPARC 的代碼,那么,請作出所需的修改,以解決那部分代碼的問題。

修改安裝例程,以適應(yīng)目標(biāo) Linux 平臺。各種 Linux 平臺(分發(fā)版)的配置和啟動文件的位置稍有不同。

測試 — 在結(jié)束移植前,對移植的應(yīng)用程序運(yùn)行徹底的驗(yàn)證測試套件。另外,在目標(biāo) Linux 平臺上測試配置和安裝。

警告!許可證和版權(quán)條款 — 當(dāng)您移植到 Linux 并把您的應(yīng)用程序和開放源代碼的庫鏈接時,請注意和這些庫有關(guān)的許可證和版權(quán)。至少來說,您新移植的 C/C++ 應(yīng)用程序?qū)⒈绘溄拥?GNU C/C++ 運(yùn)行時庫。這些庫受 GNU Lesser General Public License 的保護(hù)。如果您移植的軟件是專利性質(zhì)的并且您想在用 GNU 工具構(gòu)建該軟件后出售它,那么謹(jǐn)慎的作法是完全理解 GNU General Public License 和 GNU Lesser General Public License(

www.gnu.org/licenses/licenses.html

)中列出的條款和條件。如果您的軟件和受 GNU 許可證保護(hù)的庫鏈接,那么 GNU 許可證中的某些條款和條件將對您的軟件也適用。

Java 應(yīng)用程序的移植指南

第 1 步 — 下載所需的開發(fā)工具。

第 2 步 — 在目標(biāo) Linux 平臺上使用應(yīng)用程序。

第 1 步:下載

把用 Java 寫的應(yīng)用程序的開發(fā)從 Solaris 移到 Linux 是很簡單的。您移植任務(wù)所需的工具有:

Java 2 Developer Kit 的 Linux 版包括重建的 Java 虛擬機(jī)(Java Virtual Machine,JVM),該 JVM 有改進(jìn)的即時(just-in-time)編譯功能 ibm.com/developerworks/java/jdk/linux130/

GCC 工具套件包含一個 Java 編譯器(GCJ)gnu.org/software/gcc/java/

第 2 步:在目標(biāo) Linux 平臺上使用應(yīng)用程序

無論 JVM 運(yùn)行在什么操作系統(tǒng)上,JVM 接受同樣的字節(jié)碼,所以您可以選擇在某個操作系統(tǒng)中編譯 Java 源文件,然后在另一操作系統(tǒng)中運(yùn)行生成的類文件。例如,如果 Linux 是您的主要開發(fā)平臺,那么您在 Linux 上創(chuàng)建的 Java 類文件能同樣好地運(yùn)行在 Solaris 或其它有兼容 JVM 的平臺上。

運(yùn)行時接口

盡管 Linux 和 Solaris 的絕大部分運(yùn)行時接口是相同的,但有些地方還是有區(qū)別的。在您的應(yīng)用程序中,每處用到 Linux 上沒有或不完全相同的 Solaris 接口的地方都需要被修改,否則您的應(yīng)用程序無法被正確地構(gòu)建。以下列出的是有區(qū)別的地方。

系統(tǒng)調(diào)用、C 庫和 C++ 庫

API 差別 — Solaris 內(nèi)核提供邏輯卷支持、文件的訪問控制表(Access control list,ACL)的管理和系統(tǒng)審計日志功能。Linux API 中的這些功能(如果有的話)與 Solaris 上的并不相同。還有,在缺省情況下,Linux 不支持 STREAMS。在網(wǎng)絡(luò)中用到 STREAMS 的應(yīng)用程序需要改用 POSIX 套接字。另外,不少 Linux 上也有的 Solaris API 使用不同的返回和參數(shù)類型,或在不同的頭文件中聲明。但是,這些差別往往不大,通常不需要在應(yīng)用程序中修改代碼。

C++ 庫 — Solaris Forte 6 C++ Compiler 包含三個類庫:復(fù)數(shù)(-compat=4)、經(jīng)典 iostream 和 Standard C++ Library(它包含標(biāo)準(zhǔn)的復(fù)數(shù)和 iostream)。GCC 只包含 Standard C++ Library。如果所移植的應(yīng)用程序使用 -compat=4 復(fù)數(shù)庫或經(jīng)典 iostream 庫,那么應(yīng)用程序需改用包含在 Standard C++ Library 中的那些庫的標(biāo)準(zhǔn)版本。作這種修改的額外好處是提高了應(yīng)用程序的可移植性。

桌面:CDE 對 GNOME/KDE

圖形用戶界面(graphical user interface,GUI)— Solaris 的缺省桌面 Common Desktop Environment(CDE)并不包含在常見的 Linux 分發(fā)版中。對于要求 CDE 的應(yīng)用程序或偏愛這種特別的 GUI 環(huán)境的用戶,CDE 的 Linux 版本可從 Xi Graphics(

www.xig.com

)以他們的 DeXtop 產(chǎn)品的形式獲得。在 Linux 上運(yùn)行 DeXtop 使 Solaris 用戶置身于熟悉的 GUI 環(huán)境從而使他們很容易地適應(yīng)轉(zhuǎn)移到 Linux 所帶來的變化。

DeXtop 要求使用也是由 Xi Graphics 提供的 Accelerated-X Linux X-Server。盡管 XFree86 Linux X-Server 可以和 DeXtop 一起運(yùn)行,但是 Xi Graphics 并不正式支持在 XFree86 上運(yùn)行 DeXtop。

線程和進(jìn)程管理

線程/輕量級進(jìn)程(Light Weight Process,LWP)支持 — Solaris 支持 POSIX 線程和特定于 Solaris 的線程模型。如果所移植的應(yīng)用程序使用特定于 Solaris 的線程 API,那么,更好修改應(yīng)用程序,使其改用 POSIX 線程。POSIX 線程的可移植性更好而且 Linux 也支持它。

進(jìn)程管理:/proc 文件系統(tǒng) — /proc 偽文件系統(tǒng)提供了訪問內(nèi)核數(shù)據(jù)結(jié)構(gòu)的方便的方法。在 Solaris 上,/proc 包括關(guān)于活動的進(jìn)程和線程的信息,/proc 還提供控制這些進(jìn)程和線程的接口。Solaris 上的 /proc 控制接口通常被調(diào)試器用來跟蹤程序的執(zhí)行。在 Linux 上,/proc 并不提供進(jìn)程控制接口。在 Linux 上調(diào)試時,為了控制進(jìn)程,請用 ptrace() API 而不是 /proc。

運(yùn)行時要考慮的因素

系統(tǒng)管理:一般地說,管理 Linux 和管理任何其它 UNIX 操作系統(tǒng)非常相似。但在某些命令和任務(wù)的細(xì)節(jié)上是有差別的。IBM 和 UNIXGuide(unixguide.net/unixguide.cgi)已出版了比較圖表,該圖表不僅總結(jié)了 Solaris 和 Linux 之間的一些差別,還總結(jié)了 AIX 和其它版本的 UNIX 之間的差別。有經(jīng)驗(yàn)的 Solaris 系統(tǒng)管理員不會遇到多大困難就能得心應(yīng)手地用 Linux。

其它第三方工具、實(shí)用程序和庫:許多 Solaris 上常見的流行的第三方工具、實(shí)用程序和庫在 Linux 上也有,例如:

Rational Rose 和其它 Rational 產(chǎn)品在 Solaris 和 Linux 上都能用。

Rogue Wave SourcePro C++ 庫在 Forte/Solaris 上能用,在 GCC/Solaris 和 GCC/Linux 上也能用。

Trolltech Qt C++ GUI 框架在 Solaris 和 Linux 上都能用。

由于 Linux 越來越受到歡迎,支持 Linux 的第三方供應(yīng)商的數(shù)量在不斷增加。

尾數(shù)格式 — Sun SPARC 和 UltraSPARC 處理器用大尾數(shù)法格式存儲整數(shù)。如果您想把應(yīng)用程序移植到使用小尾數(shù)法的 Linux 版本,例如 Linux/Intel,那么您必須解決應(yīng)用程序中所有的尾數(shù)格式的相關(guān)性,以使應(yīng)用程序能正確運(yùn)行。另一種方法是把應(yīng)用程序移植到 Linux/PowerPC、zSeries 上的 Linux 或 Linux/UltraSPARC(它們都是大尾數(shù)法平臺)而不是 Linux/Intel。

從 Linux 移植到 zSeries 上的 Linux

現(xiàn)在移植到一個平臺上(比如說 Intel)的 Linux 已完成,那么移植到其它硬件平臺上的 Linux 怎樣呢?簡短的回答是:這很容易。

由于以下兩個原因,我們選擇以 zSeries 為例。

zSeries 是容易地從一種 Linux 移植到另一種 Linux 的好例子,因?yàn)?zSeries 體系結(jié)構(gòu)和 Intel 體系結(jié)構(gòu)完全不同。許多 ISV 先把他們的 UNIX 應(yīng)用程序移植到 Intel 上的 Linux,這當(dāng)然是自然的選擇。接著再把應(yīng)用程序移植到 zSeries 上的 Linux 就不需要太多的努力。

由于 zSeries 在虛擬化領(lǐng)域的獨(dú)特功能及其硬件可靠性和可用性,所以,對您來說,zSeries 可能是有吸引力的平臺。

為什么要移植到 zSeries 上的 Linux?

zSeries 上的 Linux 是純粹的 Linux:它不是現(xiàn)有的 zSeries 操作系統(tǒng)上特別的 Linux,也不是為 zSeries 體系結(jié)構(gòu)而修改的 Linux 的特別版本。zSeries 上的 Linux 的特征與其它平臺上的 Linux 的特征相同,例如它是純粹的 ASCII 環(huán)境。對于所有的體系結(jié)構(gòu),絕大部分的 Linux 結(jié)構(gòu)是相同的。和 zSeries 相關(guān)的修改使 Linux 能和 zSeries 內(nèi)存、zSeries 磁盤及通信硬件進(jìn)行通信。Linux 和應(yīng)用程序的接口及 Linux 和用戶的界面并不受到影響。

應(yīng)用程序的優(yōu)點(diǎn) — 您在 zSeries 上的 Linux 中的 Linux/UNIX 應(yīng)用程序使您能訪問存儲在 zSeries 環(huán)境中的企業(yè)數(shù)據(jù)(后端集成)。這樣提高了響應(yīng)速度,減少了不必要的數(shù)據(jù)復(fù)制。zSeries 出眾的容量、可伸縮性、可靠性、可用性和安全性使之成為企業(yè)服務(wù)器應(yīng)用程序的完美部署平臺。另外,在商務(wù)環(huán)境中,zSeries 上的 Linux 減少了服務(wù)器的數(shù)量,從而簡化操作并降低成本。

zSeries 上的 Linux 移植提示和技巧

這些提示和技巧是由一個 IBM 技術(shù)小組總結(jié)的,該小組負(fù)責(zé)把應(yīng)用程序移植到 zSeries 上的 Linux。該文檔的全文可從 ibm.com/servers/esdd/articles/linux_s390/index.html 獲得。

小尾數(shù)法到大尾數(shù)法

S/390 是大尾數(shù)法系統(tǒng)。如果代碼要處理由小尾數(shù)法系統(tǒng)上產(chǎn)生的面向字節(jié)的數(shù)據(jù),那么這些代碼可能需要某種字節(jié)對換。這些數(shù)據(jù)可能需要被重新生成,如果這不可能(例如,共享的文件),那么,應(yīng)用程序需被修改,以適合處理小尾數(shù)法數(shù)據(jù)。如果原來的平臺是大尾數(shù)法平臺(例如 UltraSPARC、IBM ~ pSeries?……),那么就不存在這個問題。

匯編代碼

匯編代碼需用 S/390 匯編器重寫。所有的操作碼需改成 S/390 操作碼。如果應(yīng)用程序代碼使用匯編頭文件,那么就需要該頭文件的 S/390 版本。S/390 匯編代碼的 Linux 版本使用 S/390 操作碼但遵守 GNU 匯編器的語法約定。您可以從

www.gnu.org/manual/gas-2.9.1/as.html

下載 GNU 匯編器手冊。

絕對地址和高階位

出于各種目的,一些應(yīng)用程序使用硬編碼地址。一個可能的目的是在內(nèi)存中定義固定的頁,用于分配或用 mmap() 來內(nèi)存映射。mmap() 調(diào)用的一種形式允許頁固定。在這種模式中,mmap() 試圖使用在所請求的地址的存儲器來內(nèi)存映射。在 Intel 平臺上,這個地址可能被指定在 zSeries 上的 Linux 無法使用的地方。

每個平臺很可能選擇不同的程序堆棧位置、系統(tǒng)庫、堆等等,所以在移植到其它系統(tǒng)的時候,硬編碼地址往往是糟糕的選擇。zSeries 尋址方式還忽略高階位,所以硬編碼地址 0x(高階位是 1)將被轉(zhuǎn)換成 0x,而這是 zSeries 上的保留地址。在生成地址時,對地址的算術(shù)運(yùn)算也能使高階位變?yōu)?1。

如果應(yīng)用程序因使用絕對地址而產(chǎn)生段違例或其它錯誤,那么必須修改它。/proc//map 顯示一個活動的進(jìn)程是怎樣使用它的尋址空間內(nèi)的存儲范圍的。如果代碼必須使用絕對地址,那么這個 map 可被用來查找還未被保留的地址范圍。

某些地址字段的高階位可能要用“AND”來變?yōu)?0(31 位模式位)。如果該地址被用于算術(shù)運(yùn)算,那么您必須這樣做。

應(yīng)用程序開發(fā)工具

部署應(yīng)用程序要求在目標(biāo)服務(wù)器上有一套健壯的工具。在 ibm.com/servers/eserver/zseries/os/linux/ldt/ 的 Web 站點(diǎn)描述了將部署到 zSeries 上的 Linux 的 C/C++ 應(yīng)用程序的開發(fā)或移植的幾個階段并給出在每個階段中有用的工具列表。

雜項

ptrace 和返回結(jié)構(gòu) — ptrace 和返回結(jié)構(gòu)的使用與體系結(jié)構(gòu)相關(guān)。

Configuration/build/Makefile 腳本或文件 — 很可能需要增加對 S/390 平臺的支持。

proc 文件系統(tǒng) — 有些區(qū)別,例如:

/proc/cpuinfo 格式不同

/proc/interrupts 未被實(shí)現(xiàn)

/proc/stat 不包含 INTR 信息

char 是無符號的 — 在 zSeries 上,字符類型 char 被缺省地解釋為無符號的 char,而在其它平臺上,char 被解釋為有符號的 char。

Va_args — 在 Linux 的 zSeries 版本中,va_list 的定義與其它平臺的不同。如果您的應(yīng)用程序簡單地使用一個 C 賦值語句來復(fù)制 va_list,那么在 Linux 的 zSeries 版本中,您必須換用 _va_copy 宏來復(fù)制。

linux 部署 程序的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux 部署 程序,使用Linux進(jìn)行高效程序部署,菜鳥關(guān)于linux下裝應(yīng)用程序的問題的信息別忘了在本站進(jìn)行查找喔。

成都網(wǎng)站設(shè)計制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務(wù),為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計,成都網(wǎng)站設(shè)計服務(wù);成都創(chuàng)新互聯(lián)服務(wù)內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務(wù)器托管租用等互聯(lián)網(wǎng)服務(wù)。


本文名稱:使用Linux進(jìn)行高效程序部署 (linux 部署 程序)
標(biāo)題來源:http://www.5511xx.com/article/cocioce.html