Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
在說什么是領(lǐng)域驅(qū)動設(shè)計(jì)之前,我覺得需要先說一下我們?yōu)槭裁葱枰I(lǐng)域驅(qū)動,我個(gè)人認(rèn)為領(lǐng)域驅(qū)動設(shè)計(jì)對于研發(fā)來說改進(jìn)點(diǎn)主要有下面三個(gè):
領(lǐng)域驅(qū)動設(shè)計(jì)(DDD)是一種軟件設(shè)計(jì)思路,領(lǐng)域指的是業(yè)務(wù)領(lǐng)域,比如銀行業(yè)務(wù)領(lǐng)域,醫(yī)藥銷售領(lǐng)域;不同于傳統(tǒng)以數(shù)據(jù)表為中心的建模方式,它以業(yè)務(wù)領(lǐng)域?yàn)橹行膩斫#艽偈刮覀円哉_的方式使用面向?qū)ο螅枬M的領(lǐng)域?qū)ο蟆?/p>
在進(jìn)行領(lǐng)域建模和開發(fā)時(shí)我們主要需要關(guān)注以下幾點(diǎn):
下面的思維導(dǎo)圖是領(lǐng)域驅(qū)動設(shè)計(jì)需要掌握的一些點(diǎn):
Tips:
1.領(lǐng)域驅(qū)動設(shè)計(jì)是2004年Eric Evans在《領(lǐng)域驅(qū)動設(shè)計(jì):軟件核心復(fù)雜性應(yīng)對之道》這本書中提到的,DDD的出現(xiàn)是為了應(yīng)對復(fù)雜業(yè)務(wù)場景下軟件越來越復(fù)雜問題;也就是說通過DDD可以將軟件的復(fù)雜度控制在合理的范圍內(nèi)。
2.領(lǐng)域驅(qū)動設(shè)計(jì)主要解決的是業(yè)務(wù)復(fù)雜度問題(避免大泥球風(fēng)格:大泥球風(fēng)格就是沒有任何清楚的結(jié)構(gòu),例如隨意共享的數(shù)據(jù),隨意全局化的數(shù)據(jù)結(jié)構(gòu)。這樣風(fēng)格的系統(tǒng)可維護(hù)性(maintainability)和可擴(kuò)展性(extensibility)都很差,最終導(dǎo)致整個(gè)系統(tǒng)難以改動,維護(hù)不下去),如果業(yè)務(wù)不復(fù)雜,則不需要使用DDD方式來處理(推薦用三層架構(gòu))。
領(lǐng)域驅(qū)動設(shè)計(jì)的優(yōu)缺點(diǎn)很明顯,我這邊整理了幾個(gè)優(yōu)缺點(diǎn),供參考。
優(yōu)點(diǎn):
缺點(diǎn):
按照實(shí)現(xiàn)領(lǐng)域驅(qū)動設(shè)計(jì)一書中描述的DDD步驟主要有4步:
軟件開發(fā)實(shí)際作用就是為客戶解決問題或者軟件升級變革,所以在領(lǐng)域中我們劃分了問題空間和解空間兩個(gè)緯度空間,用于描述客戶的問題(需求)和如何解決問題(解決方案)。
問題的來源:
首先我們需要對問題域進(jìn)行拆分,拆分的理念就是由大化小,逐個(gè)擊破。拆分完畢問題空間,我們需要做到逐一擊破,為每一個(gè)問題形成一套落地解決方案。一個(gè)問題對應(yīng)一個(gè)答案,解空間與問題空間基本上應(yīng)該是一一對應(yīng)的。
我們給出的解方案是一個(gè)個(gè)限界上下文,一個(gè)限界上下文負(fù)責(zé)應(yīng)對其對應(yīng)的問題進(jìn)行解決,承載了該問題中的業(yè)務(wù)知識及規(guī)則。限界上下文是解決某一類問題的單一功能模塊,例如訂單限界上下文,處理開單、通知訂單狀態(tài)等一切與訂單關(guān)聯(lián)的功能。
隨著問題的劃分,將領(lǐng)域拆分成了不同的子域,每個(gè)子域有其獨(dú)有的業(yè)務(wù)知識,而這些知識需要靠一門統(tǒng)一語言來描述。而不同限界上下文間的統(tǒng)一語言是相互獨(dú)立的。可能在不同的限界上下文有同樣的名詞,但同樣的名詞在不同的限界上下文中可能表示的不是同一事物,即使是同一事物可能其在不同上下文中的關(guān)注點(diǎn)也不一致。
限界上下文之間的映射關(guān)系:
核心域是一款軟件的所能獲得的競爭優(yōu)勢的根本所在。所以在核心的建模和開發(fā)主要投入大量的時(shí)間和人力。
通用域是許多大型軟件系統(tǒng)都有的子域。通用域例如像電子郵件和短信發(fā)送、OSS、MQ等。
系統(tǒng)中的其他域被稱為支撐域。支撐域的主要作用就是有助于支撐核心域的業(yè)務(wù)。比如:用戶的注冊等。
DDD分析建模主要有兩種方法可以使用:用例分析法、四色建模法、事件風(fēng)暴、領(lǐng)域驅(qū)動建模。
通過對需求進(jìn)行分析構(gòu)建出用例圖如下所示(舉例子不一定正確):
這里列一下標(biāo)準(zhǔn)的四色建模法(https://www.infoq.cn/article/xh-four-color-modeling/),其實(shí)還是需要多聯(lián)系才行。
時(shí)標(biāo)型(Moment-Interval)對象:具有可追溯性的記錄運(yùn)營或管理數(shù)據(jù)的時(shí)刻或時(shí)段對象,用紅色表示 -> 操作
PPT(Party/Place/Thing)對象:代表參與到流程中的參與方/地點(diǎn)/物,用綠色表示 -> 名詞
角色(Role)對象:在時(shí)標(biāo)型對象與 PPT 對象(通常是參與方)之間參與的角色,用黃色表示 -> 操作角色
描述(Description)對象:對 PPT 對象的一種補(bǔ)充描述,用藍(lán)色表示 -> 表述備注
領(lǐng)域建模并不是沒有方法,而是選擇太多,有用例法、四色建模、領(lǐng)域驅(qū)動建模、事件風(fēng)暴等,人有一個(gè)特點(diǎn)是喜歡找最簡單、最易用的方法,每個(gè)方法都有自己的特點(diǎn),并沒有好壞優(yōu)劣之分,只有適不適合。聽到一個(gè)方法就去嘗試,嘗試到一半就放棄,一種種方法嘗試,最終就會迷失在方法選擇上。
對于DDD而言領(lǐng)域建模完成后,我們就需要對照模型進(jìn)行開發(fā),在開發(fā)之間我們需要知道領(lǐng)域戰(zhàn)略設(shè)計(jì)中的幾種架構(gòu)風(fēng)格。
DDD四層架構(gòu)是一個(gè)松散分層架構(gòu)(任意上層可以調(diào)用下層,但是下層不能調(diào)用上層),DDD四層架構(gòu)的含義如下:
如下是DDD四層架構(gòu)圖:
依賴倒置原則:我們要依賴不變或穩(wěn)定的元素(類、模塊或?qū)樱橄蟛粦?yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象。依賴倒置原則可以改進(jìn)分層架構(gòu),即底層服務(wù)應(yīng)該依賴于高層組件所提供的接口。
?采用了依賴注入方式后,其實(shí)可以發(fā)現(xiàn)事實(shí)上已經(jīng)沒有分層概念了。無論高層還是底層,實(shí)際只依賴于抽象,整個(gè)分層好像被推平了,這就引入下一個(gè)架構(gòu)六邊形架構(gòu)。
六邊形架構(gòu)是Alistair Cockburn在2005年提出的,在這種架構(gòu)中,不同的客戶通過“平等”的方式與系統(tǒng)交互。在《實(shí)現(xiàn)領(lǐng)域驅(qū)動設(shè)計(jì)》一書中,作者將六邊形架構(gòu)應(yīng)用到領(lǐng)域驅(qū)動設(shè)計(jì)的實(shí)現(xiàn),六邊形的內(nèi)部代表了application和domain層。外部代表應(yīng)用的驅(qū)動邏輯、基礎(chǔ)設(shè)施或其他應(yīng)用。內(nèi)部通過端口和外部系統(tǒng)通信,端口代表了一定協(xié)議,以API呈現(xiàn)。個(gè)人理解其實(shí)就是變成內(nèi)層、適配層&外部資源,內(nèi)層是應(yīng)用層和領(lǐng)域?qū)樱贿m配層是之前的接口層和基礎(chǔ)設(shè)施層;外部資源就是對外接口、緩存、MQ、數(shù)據(jù)庫等等。六邊形架構(gòu)圖如下所示:
?下面是對六邊型架構(gòu)的一個(gè)落地實(shí)踐示例:
?
四層架構(gòu)、DIP、六邊形架構(gòu)可以參考:
https://www.jianshu.com/p/c405aa19a049
http://it.hzqiuxm.com/ddd%E9%A2%86%E5%9F%9F%E9%A9%B1%E5%8A%A8%E6%88%98%E7%95%A5%E7%AF%87%EF%BC%884%EF%BC%89/#DDD-2
在DDD設(shè)計(jì)思路中,DDD 通過領(lǐng)域?qū)ο笾g的交互實(shí)現(xiàn)業(yè)務(wù)邏輯與流程,并通過分層的方式將業(yè)務(wù)邏輯剝離出來,單獨(dú)進(jìn)行維護(hù),從而控制業(yè)務(wù)本身的復(fù)雜度。但是作為一個(gè)業(yè)務(wù)系統(tǒng),查詢的相關(guān)功能也是不可或缺的。在實(shí)現(xiàn)各式各樣的查詢功能時(shí),往往會發(fā)現(xiàn)很難用領(lǐng)域模型來實(shí)現(xiàn)。假設(shè)在用戶需要一個(gè)訂單相關(guān)信息的查詢功能,展現(xiàn)的是查詢結(jié)果的列表。列表中的數(shù)據(jù)來自于訂單、商品、品類、送貨地址等多個(gè)領(lǐng)域?qū)ο笾械哪硯讉€(gè)字段。這樣的場景如果還是通過領(lǐng)域?qū)ο髞矸庋b就顯的很麻煩,其次與領(lǐng)域知識也沒有太緊密的關(guān)系。所以命令查詢職責(zé)分離的設(shè)計(jì)架構(gòu)(CQRS)是可以很好的解決上述的問題。
CQRS將系統(tǒng)分為兩類操作:命令(command)、查詢(Query)。命令則是對會引起數(shù)據(jù)發(fā)生變化操作的總稱,即我們常說的新增,更新,刪除這些操作,都是命令。而查詢則和字面意思一樣,即不會對數(shù)據(jù)產(chǎn)生變化的操作,只是按照某些條件查找數(shù)據(jù)。CQRS 的核心思想是將這兩類不同的操作進(jìn)行分離,然后在兩個(gè)獨(dú)立的服務(wù)中實(shí)現(xiàn)。這種獨(dú)立服務(wù)可以是兩個(gè)不同的應(yīng)用或者同一個(gè)應(yīng)用中不同的包進(jìn)行隔離。同時(shí)理論上命令和查詢的數(shù)據(jù)源也是不同的(實(shí)現(xiàn)讀寫分離)。
當(dāng)然讀寫分離模式,肯定會遇到事務(wù)的問題,事務(wù)問題主要的包含兩種情況:
所以從事務(wù)的角度來看 CQRS,你需要面對的是問題從根本來說是個(gè)最終一致性的問題。對于團(tuán)隊(duì)處理這種最終一致性問題需要有對應(yīng)的方案。
CQRS架構(gòu)如下所示:
了解了戰(zhàn)略設(shè)計(jì)后,我們主要做具體的實(shí)施,具體實(shí)施時(shí)我們需要了解實(shí)體、值對象和聚合這幾個(gè)領(lǐng)域?qū)ο蟆?/p>
我們先看一下他們的定義:
實(shí)體:許多對象不是由它們的屬性來定義,而是通過一系列的連續(xù)性(continuity)和標(biāo)識(identity)來從根本上定義的。只要一個(gè)對象在生命周期中能夠保持連續(xù)性,并且獨(dú)立于它的屬性(即使這些屬性對系統(tǒng)用戶非常重要),那它就是一個(gè)實(shí)體。
值對象:當(dāng)你只關(guān)心某個(gè)對象的屬性時(shí),該對象便可作為一個(gè)值對象。為其添加有意義的屬性,并賦予它相應(yīng)的行為。我們需要將值對象看成不變對象,不要給它任何身份標(biāo)識,還應(yīng)該盡量避免像實(shí)體對象一樣的復(fù)雜性。
對于實(shí)體Entity,實(shí)體核心是用唯一的標(biāo)識符來定義,而不是通過屬性來定義。即即使屬性完全相同也可能是兩個(gè)不同的對象。同時(shí)實(shí)體本身有狀態(tài)的,實(shí)體又演進(jìn)的生命周期,實(shí)體本身會體現(xiàn)出相關(guān)的業(yè)務(wù)行為,業(yè)務(wù)行為會實(shí)體屬性或狀態(tài)造成影響和改變。
如果從值對象本身無狀態(tài),不可變,并且不分配具體的標(biāo)識層面來看。那么值對象可以僅僅理解為實(shí)際的Entity對象的一個(gè)屬性結(jié)合而已。該值對象附屬在一個(gè)實(shí)際的實(shí)體對象上面。值對象本身不存在一個(gè)獨(dú)立的生命周期,也一般不會產(chǎn)生獨(dú)立的行為。
對于實(shí)體和值對象詳細(xì)說明可以參考:https://www.jianshu.com/p/da51d16dbdc4
聚合是業(yè)務(wù)和邏輯緊密關(guān)聯(lián)的實(shí)體和值對象組合而成,聚合是數(shù)據(jù)修改和持久化的基本單元,一個(gè)聚合對應(yīng)一個(gè)數(shù)據(jù)的持久化;同時(shí)將選擇一個(gè)實(shí)體作為每個(gè)聚合的根,并僅允許外部對象持有對聚合根的引用。作為一個(gè)整體來定義聚合的屬性和不變量,并把其執(zhí)行責(zé)任賦予聚合根或指定的框架機(jī)制。
https://www.cnblogs.com/laozhang-is-phi/p/9916785.html
在所有的DDD項(xiàng)目中,通常存在多個(gè)限界上下文,這意味著我們需要找到合適的方法對這些上下文進(jìn)行集成。當(dāng)模型概念從上游上下文流入下游上下文中時(shí), 盡量使用值對象來表示這些概念。這樣的好處是可以達(dá)到最小化集成,即可以最小化下游模型中用于管理職責(zé)的屬性數(shù)目。使用不變的值對象使得我們做更少的職責(zé)假設(shè)。
貧血模型:指使用的領(lǐng)域?qū)ο笾兄挥衧etter和getter方法(POJO),所有的業(yè)務(wù)邏輯都不包含在領(lǐng)域?qū)ο笾卸欠旁跇I(yè)務(wù)邏輯層。貧血模型中領(lǐng)域?qū)ο笾挥袑傩詻]有豐富的操作,使用時(shí)需要單獨(dú)的Dao層配合使用,風(fēng)格比較面向過程。
充血模型:將大多數(shù)業(yè)務(wù)邏輯和持久化放在領(lǐng)域?qū)ο笾校瑯I(yè)務(wù)邏輯只是完成對業(yè)務(wù)邏輯的封裝、事務(wù)和權(quán)限等的處理。充血模型更加傾向于面向?qū)ο蟮脑O(shè)計(jì)風(fēng)格(可以參考:https://www.jianshu.com/p/fae3da337ebc)。
模塊(Module)是DDD中明確提到的一種控制限界上下文的手段,在我們的工程中,一般盡量用一個(gè)模塊來表示一個(gè)領(lǐng)域的限界上下文。一般的工程中包的組織方式為{com.公司名.組織架構(gòu).業(yè)務(wù).上下文.*},這樣的組織結(jié)構(gòu)能夠明確的將一個(gè)上下文限定在包的內(nèi)部。
領(lǐng)域服務(wù):領(lǐng)域中的服務(wù)表示一個(gè)無狀態(tài)的操作,它用于實(shí)現(xiàn)特定于某個(gè)領(lǐng)域的任務(wù)。
工廠:在DDD中有可能存在復(fù)雜對象的創(chuàng)建,如果使用對象本身進(jìn)行創(chuàng)建有可能會破壞單一責(zé)任原則,所以需要工廠進(jìn)行對象創(chuàng)建。
TML 或超文本標(biāo)記語言 允許 Web 用戶使用元素、標(biāo)簽和屬性創(chuàng)建和構(gòu)造部分、段落和鏈接。然而,值得注意的是,HTML 不能被視為一種編程語言,因?yàn)樗荒軇?chuàng)建動態(tài)功能。
HTML有很多用例,即:
本文將介紹 HTML 的基礎(chǔ)知識,包括它的工作原理、優(yōu)缺點(diǎn)以及它與 CSS 和 JavaScript 的關(guān)系。
HTML(代表超文本標(biāo)記語言)是構(gòu)成大多數(shù)網(wǎng)頁和在線應(yīng)用程序的計(jì)算機(jī)語言。超文本是用于引用其他文本片段的文本,而標(biāo)記語言是告訴 Web 服務(wù)器文檔的樣式和結(jié)構(gòu)的一系列標(biāo)記。
在國內(nèi)的網(wǎng)站上找了一圈,這應(yīng)該是介紹歷史最細(xì)致的,長按保存手機(jī)里翻譯
平均每個(gè)網(wǎng)站包含幾個(gè)不同的信息 HTML 頁面。例如,主頁、關(guān)于頁面和聯(lián)系頁面都將具有單獨(dú)的 HTML 文件。
HTML 文檔是以 .html 或 .htm 擴(kuò)展名結(jié)尾的文件。Web 瀏覽器讀取 HTML 文件并呈現(xiàn)其內(nèi)容,以便互聯(lián)網(wǎng)用戶可以查看它。
所有 HTML 頁面都有一系列 HTML 元素,由一組標(biāo)簽和屬性組成。HTML 元素是網(wǎng)頁的構(gòu)建塊。標(biāo)簽告訴 Web 瀏覽器元素在哪里開始和結(jié)束,而屬性描述元素的特征。
元素的三個(gè)主要部分是:
這三個(gè)部分的組合將創(chuàng)建一個(gè) HTML 元素:
<p>這是在HTML中添加段落的方法。</p>
HTML 元素的另一個(gè)關(guān)鍵部分是它的屬性,它有兩個(gè)部分——名稱和屬性值。名稱標(biāo)識用戶想要添加的附加信息,并且屬性值給出進(jìn)一步的說明。
例如,添加紫色和 font-family verdana 的樣式元素將如下所示:
< p style="color:purple;font-family:verdana" >這是在HTML中添加段落的方法。< /p >
另一個(gè)屬性,HTML 類,對于開發(fā)和編程來說是最重要的。class 屬性添加了可以作用于具有相同類值的不同元素的樣式信息。 例如,我們將對標(biāo)題 <h1> 和段落 <p> 使用相同的樣式。樣式包括背景顏色、文本顏色、邊框、邊距和填充,在 .important 類下。要在 <h1> 和 <p> 之間實(shí)現(xiàn)相同的樣式,請?jiān)诿總€(gè)開始標(biāo)記后添加 class=”important”:
<html>
<head>
<style>
.important {
background-color: blue;
color: white;
border: 2px solid black;
margin: 2px;
padding: 2px;
}
</style>
</head>
<body>
<h1 class="important">This is a heading</h1>
<p class="important">This is a paragraph.</p>
</body>
</html>
大多數(shù)元素都有一個(gè)開始標(biāo)簽和一個(gè)結(jié)束標(biāo)簽,但有些元素不需要結(jié)束標(biāo)簽即可工作,例如空元素。這些元素不使用結(jié)束標(biāo)簽,因?yàn)樗鼈儧]有內(nèi)容:
< img src="/" alt="圖像" >
這個(gè)圖像標(biāo)簽有兩個(gè)屬性——一個(gè)src屬性,圖像路徑,和一個(gè)alt屬性,描述性文本。但是,它沒有內(nèi)容,也沒有結(jié)束標(biāo)簽。
最后,每個(gè) HTML 文檔都必須以 <!DOCTYPE> 聲明開頭,以告知 Web 瀏覽器文檔類型。使用 HTML5,doctype HTML public 聲明將是:
< !DOCTYPE html >
目前,有 142 個(gè) HTML 標(biāo)簽可以用于創(chuàng)建各種元素。盡管現(xiàn)代瀏覽器不再支持其中一些標(biāo)簽,但學(xué)習(xí)所有可用的不同元素仍然是有益的。
第二節(jié)將討論最常用的 HTML 標(biāo)簽和兩個(gè)主要元素——塊級元素和內(nèi)聯(lián)元素。
塊級元素占據(jù)頁面的整個(gè)寬度。它總是在文檔中開始一個(gè)新行。例如,標(biāo)題元素將位于與段落元素不同的行中。
每個(gè) HTML 頁面都使用這三個(gè)標(biāo)簽:
<html>
<head>
<!-- META INFORMATION -->
</head>
<body>
<!-- PAGE CONTENT -->
</body>
</html>
其他流行的塊級標(biāo)簽包括:
內(nèi)聯(lián)元素格式化塊級元素的內(nèi)部內(nèi)容,例如添加鏈接和強(qiáng)調(diào)的字符串。內(nèi)聯(lián)元素最常用于在不破壞內(nèi)容流的情況下格式化文本。
例如,一個(gè) <strong> 標(biāo)簽會以粗體呈現(xiàn)一個(gè)元素,而 <em> 標(biāo)簽會以斜體顯示它。超鏈接也是使用 <a> 標(biāo)記和 href 屬性來指示鏈接目標(biāo)的內(nèi)聯(lián)元素:
<a href="https://www.icodingdeu.com/" >點(diǎn)我!</a>
HTML 的第一個(gè)版本由 18 個(gè)標(biāo)簽組成。從那時(shí)起,每個(gè)新版本都帶有添加到標(biāo)記中的新標(biāo)簽和屬性。迄今為止,該語言最重大的升級是 2014 年引入的 HTML5。
HTML 和 HTML5的主要區(qū)別在于HTML5 支持新類型的表單控件。HTML5 還引入了幾個(gè)語義標(biāo)簽,可以清楚地描述內(nèi)容,例如 <article>、<header> 和 <footer>。
就像任何其他計(jì)算機(jī)語言一樣,HTML 有其優(yōu)點(diǎn)和局限性。以下是 HTML 的優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
就像任何其他計(jì)算機(jī)語言一樣,HTML 有其優(yōu)點(diǎn)和局限性。以下是 HTML 的優(yōu)缺點(diǎn):
缺點(diǎn):
HTML 用于添加文本元素并創(chuàng)建內(nèi)容結(jié)構(gòu)。然而,僅僅建立一個(gè)專業(yè)的和完全響應(yīng)的網(wǎng)站是不夠的。因此,HTML 需要借助層級樣式表 (CSS)和JavaScript來創(chuàng)建絕大多數(shù)網(wǎng)站內(nèi)容。
HTML 是 Internet 上的主要標(biāo)記語言。每個(gè) HTML 頁面都有一系列創(chuàng)建網(wǎng)頁或應(yīng)用程序內(nèi)容結(jié)構(gòu)的元素。
HTML 是一種對初學(xué)者友好的語言,有很多支持,主要用于靜態(tài)網(wǎng)站頁面。HTML 與用于樣式的 CSS 和用于功能的 JavaScript 一起使用效果最好。
我們還向您展示了一些在線教學(xué)課程,它們將有助于提高您的 HTML 知識或提供對 HTML 的基本理解。
如果您有任何其他喜歡的資源來學(xué)習(xí) HTML,請?jiān)谠u論部分告訴我們。
<html>
<head>
標(biāo)題 ---此處放置標(biāo)題、導(dǎo)航、登錄等內(nèi)容
<!此處放置標(biāo)題、導(dǎo)航、登錄等內(nèi)容--->
</head>
<body>
<!此處放置頁面主要內(nèi)容--->
<! :空格
<: 小于號
>: 大于號
": 引號--->
<p>第一段 世界大勢,合久必分,分久必合。</p>
<hr/> <!表示單行橫線顯示--->
<br/> <!表示換行--->
<h1> hello world, html is easy</h1>
<h2> hello world, html is easy</h2>
<h3> hello world, html is easy</h3>
<h4> hello world, html is easy</h4>
<h5> hello world, html is easy</h5>
<h6> hello world, html is easy</h6>
<p>普通字體</p>
<b>粗體</b> <i>斜體</i> <del>本文字已被刪除,請忽略</del>
<p> hello world</p> <!段落標(biāo)記--->
<a href="http://www.baidu.com" target="_self"> 點(diǎn)擊進(jìn)入百度</a>
<br/>
<img src="http://mysite.com/mypic.png" alt="網(wǎng)站作者照片">
<h3> 普通無邊框表格:</h3>
<table>
<tr>
<td>row 1 cell 1</td> <td>row 1 cell 2</td> <td>row 1 cell 3</td>
</tr>
<tr>
<td>row 2 cell 1</td> <td>row 2 cell 2</td> <td>row 2 cell 3</td>
</tr>
</table>
<h3>帶表頭,有邊框,有跨列單元:</h3>
<table border="1">
<tr>
<th>head1</th> <th>head2</th> <th>head3</th>
</tr>
<tr>
<td>row 1 cell 1</td> <td>row 1 cell 2</td> <td>row 1 cell 3</td>
</tr>
<tr>
<td>row 2 cell 1</td> <td>row 2 cell 2</td> <td>row 2 cell 3</td>
</tr>
</table>
<h3>三種列表的表達(dá)方式:</h3>
<table cellpadding="2" cellspacing="2">
<tr>
<td>
<ul><li>python</li> <li>c++</li> <li>java</li> <li>golang</li></ul>
</td>
<td>
<ol><li>python</li> <li>c++</li> <li>java</li> <li>golang</li></ol>
</td>
</tr>
</table>
<dl>
<dt>CPU</dt><dd>處理器</dd>
<dt>MEM</dt><dd>內(nèi)存</dd>
</dl>
<body bgcolor="#FF0000">
<body bgcolor="RGB(255,0,0)">
<body bgcolor="RED">
<p>視頻</p>
<object
classid="clsid:d27sfsfstqwetsasasdfsdfs"
codebase="http://fpdownload.macromedia.com/pub/shckwave/cabs/flash/swflash.cab">
<embed src="flashfile.swf" width="300" height="200"></embed>
</object>
<br/>
<p>音頻</p>
<audio controls="crontrols">
<source src="sample_song.mp3" type="audio/mp3" />
</audio>
<br/>
<p>視頻</p>
<video controls="controls"/>
<source src="sample_video.mp4" type="video/mp4">
</video>
<p>html表單---文本輸入</p>
<table>
<tr>
<td>用戶名:</td>
<td><input type="text" name="name"></td>
<td>密碼:</td>
<td><input type="password" name="pass"></td>
</tr>
<tr>
<tdcolspan="4"> <textarea name="comment" rows="5" cols="60"> </textarea></td>
</tr>
</table>
<table>
<tr>
<td>性別:</td>
<td>用戶名:</td>
<td>男性<input type="radio" checked='checked' name="sex" value="male" /></td>
<td>女性<input type="radio" checked='checked' value="female" /></td>
</tr>
<tr>
<tdcolspan="4"> <textarea name="comment" rows="5" cols="60"> </textarea></td>
</tr>
</table>
</body>
</html>
*請認(rèn)真填寫需求信息,我們會在24小時(shí)內(nèi)與您取得聯(lián)系。