整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          黑客零基礎(chǔ)入門 - 網(wǎng)絡(luò)安全

          黑客零基礎(chǔ)入門 - 網(wǎng)絡(luò)安全

          學(xué)習(xí)資料】

          導(dǎo)語(yǔ)

          什么是Web安全?我又該如何入門學(xué)習(xí)它呢?學(xué)習(xí)過(guò)程中又應(yīng)注意哪些問(wèn)題呢?...或許你的心中有著這樣的疑問(wèn)、不過(guò)別著急,本文會(huì)為你一一解答這些問(wèn)題。

          正文

          定義

          Web安全,顧名思義便是由保障Web應(yīng)用能夠持續(xù)安全運(yùn)行而衍生出的一個(gè)分支領(lǐng)域。

          Web應(yīng)用指的是一個(gè)網(wǎng)站的前端頁(yè)面到后端服務(wù),可以粗略的理解為一個(gè)網(wǎng)站及其配套的相關(guān)服務(wù),該領(lǐng)域中常見的漏洞有SQL注入漏洞,XSS漏洞,CSRF漏洞等等,漏洞種類多樣,趣味性強(qiáng),較為適合新手入門。

          下面為你介紹Web安全方面的常見漏洞,以下講解主要從原理角度出發(fā),旨在幫助新手朋友更好的理解相關(guān)漏洞,具體技術(shù)細(xì)節(jié)暫不討論。

          常見漏洞

          SQL注入(SQL Injection)

          網(wǎng)站,也就是web應(yīng)用中往往會(huì)涉及到數(shù)據(jù)的查詢與修改,對(duì)數(shù)據(jù)進(jìn)行操作則需要用到SQL語(yǔ)言(結(jié)構(gòu)化查詢語(yǔ)言(Structured Query Language)簡(jiǎn)稱SQL,是一種特殊目的的編程語(yǔ)言)。

          網(wǎng)站在使用SQL查詢數(shù)據(jù)時(shí),用戶輸入的信息或提交的參數(shù)(比如你在使用百度時(shí)輸入的“關(guān)鍵詞”,登錄某些網(wǎng)站時(shí)提交的賬戶密碼..)將會(huì)參與到SQL數(shù)據(jù)查詢的過(guò)程中,一旦用戶提交了有害數(shù)據(jù),便有可能對(duì)網(wǎng)站運(yùn)行產(chǎn)生危害。

          將有害數(shù)據(jù)“注入”到SQL查詢過(guò)程之中,這也正是“SQL注入”得名的緣由。

          SQL注入漏洞往往會(huì)導(dǎo)致數(shù)據(jù)泄露,例如前些年爆出的沸沸揚(yáng)揚(yáng)的”社工庫(kù)",”人rou"搜索,全球數(shù)十億密碼泄露等事件,他們的背后或多或少有著SQL注入的影子。

          SQL注入的定義為:

          當(dāng)Web應(yīng)用向后臺(tái)數(shù)據(jù)庫(kù)傳遞SQL語(yǔ)句進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)。如果對(duì)用戶輸入的參數(shù)沒有經(jīng)過(guò)嚴(yán)格的過(guò)濾處理,那么攻擊者就可以構(gòu)造特殊的SQL語(yǔ)句,直接輸入數(shù)據(jù)庫(kù)進(jìn)行執(zhí)行,獲取或修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)。

          XSS跨站腳本攻擊(Cross-Site Scripting,XSS)

          同樣是由于網(wǎng)站對(duì)于用戶的輸入內(nèi)容沒有進(jìn)行嚴(yán)格的過(guò)濾處理,一些惡意的腳本代碼被用戶的瀏覽器執(zhí)行而引發(fā)了XSS漏洞。

          一個(gè)網(wǎng)站的呈現(xiàn)是基于HTML,CSS,JS等腳本語(yǔ)言的,瀏覽器的作用是什么?簡(jiǎn)單來(lái)說(shuō)便是將只有計(jì)算機(jī)才能“讀懂”的腳本語(yǔ)言及代碼渲染成我們所看到的的圖像與文字。

          這里以百度為例。

          在與架設(shè)著網(wǎng)站的服務(wù)器通信時(shí),我們實(shí)際上收到的是使用HTML等語(yǔ)言編寫的源代碼,瀏覽器會(huì)將該源代碼“翻譯”出來(lái)。

          (瀏覽器將下方的源代碼“翻譯”成“百度搜索”的頁(yè)面)

          如果我們能利用網(wǎng)站的某些缺陷,將自行構(gòu)造的惡意腳本代碼‘’注入”到網(wǎng)站源代碼之中,在別的用戶在瀏覽網(wǎng)頁(yè)時(shí),我們構(gòu)造的惡意代碼便會(huì)被瀏覽器“翻譯”出來(lái),造成危害(Cookie泄露,鍵盤記錄等),這便形成了XSS漏洞。

          CSRF跨站請(qǐng)求偽造(Cross Site Request Forgery)

          該漏洞往往不直接攻擊網(wǎng)站服務(wù)器,而是冒充用戶在站內(nèi)的正常操作以達(dá)到攻擊目的。我們?cè)谂c網(wǎng)站進(jìn)行交互操作時(shí),絕大多數(shù)操作是基于瀏覽器與網(wǎng)站服務(wù)器的通信請(qǐng)求的,比如我們會(huì)在某些購(gòu)物網(wǎng)站下商品訂單,給指定用戶轉(zhuǎn)賬,或者查詢自己的考試成績(jī)。

          如果能夠在用戶沒有察覺的情況下,“悄無(wú)聲息”通過(guò)瀏覽器偽造一些請(qǐng)求操作,進(jìn)而產(chǎn)生對(duì)用戶有害的攻擊行為,那么便形成了CSRF漏洞。

          上文提到過(guò),XSS漏洞可以在用戶不知情的情況下執(zhí)行惡意操作,如果我們?cè)赬SS攻擊代碼中包含偽造好的特定請(qǐng)求呢?這便與CSRF漏洞不謀而合。所以,XSS與CSRF常相配合使用,威力巨大。

          防范CSRF漏洞,需要添加 token 或 referer 來(lái)防御,云影安全后續(xù)會(huì)對(duì)此進(jìn)一步講解。

          DDOS 分布式拒絕攻擊(Distributed Denial of Service)

          起源于二十世紀(jì)九十年代,歷經(jīng)二十多年發(fā)展而經(jīng)久不衰,DDoS攻擊已經(jīng)成為網(wǎng)絡(luò)安全領(lǐng)域影響最為深遠(yuǎn)的威脅之一。

          嚴(yán)格地來(lái)講,DDOS并不完全歸屬于Web安全的范疇,凡是對(duì)外提供服務(wù)的服務(wù)器或主機(jī)都存在被DDOS攻擊的風(fēng)險(xiǎn),但DDOS攻擊在Web領(lǐng)域較為常見且危害大,我們?cè)谶@里加以講解。

          那么什么是DDOS攻擊呢?如果多臺(tái)主機(jī)對(duì)目標(biāo)網(wǎng)站或服務(wù)器發(fā)送大量請(qǐng)求,超出了該網(wǎng)站或服務(wù)器的處理能力上限,導(dǎo)致服務(wù)癱瘓,這種行為便可以稱作DDOS攻擊。

          舉一個(gè)較為經(jīng)典的例子,假設(shè)一個(gè)餐廳最多可以同時(shí)容納50人就餐,假設(shè)在極短時(shí)間內(nèi)該餐廳涌入成百上千的顧客,該餐廳的正常就餐秩序必然會(huì)受到毀滅性的沖擊。

          DDOS攻擊如今已發(fā)展出多種攻擊模式與手段,目前還沒有一個(gè)較為完美的應(yīng)對(duì)策略,關(guān)鍵點(diǎn)在于精心發(fā)動(dòng)的DDOS攻擊往往會(huì)利用合理的服務(wù)請(qǐng)求來(lái)占用過(guò)多的服務(wù)資源,難與正常用戶的請(qǐng)求相區(qū)分,從而使服務(wù)器無(wú)法處理合法用戶的指令。

          方法論

          孤帆終究要起航,俠客也要去闖蕩。在你開始踏上Web安全之路前,我們?cè)概c你分享一些在探索學(xué)習(xí)中可能會(huì)有所幫助的心得與經(jīng)驗(yàn)。

          1.親手實(shí)踐

          紙上得來(lái)終覺淺,絕知此事要躬行。在學(xué)習(xí)漏洞原理或是利用技巧時(shí),最好不要止步于只看懂技術(shù)文章。相關(guān)的介紹文章往往以講解思路為主,為保證文章整體的連貫性,部分技術(shù)細(xì)節(jié)會(huì)被忽略掉。例如程序的運(yùn)行環(huán)境,設(shè)備的網(wǎng)絡(luò)情況以及相關(guān)應(yīng)用組件的具體版本號(hào)。然而對(duì)于初學(xué)者來(lái)說(shuō),這些技術(shù)細(xì)節(jié)同樣至關(guān)重要,如果沒有親手實(shí)踐過(guò),親手復(fù)現(xiàn)出相同的漏洞或利用技巧,你永遠(yuǎn)不會(huì)接觸到那些被忽視的種種細(xì)節(jié)。而細(xì)節(jié)決定成敗,對(duì)漏洞利用過(guò)程的殘缺理解會(huì)對(duì)進(jìn)一步的學(xué)習(xí)探索造成難以估量的影響。同時(shí),動(dòng)手操作也有利于鞏固對(duì)于所學(xué)知識(shí)的理解與記憶,加深印象。漏洞種類繁多,差異化的利用條件同樣決定著漏洞利用的成功與否,因此在動(dòng)手實(shí)踐復(fù)現(xiàn)漏洞的同時(shí),還需要完整的筆記記錄。

          2.構(gòu)建體系

          什么是體系?體系的本質(zhì)是各個(gè)知識(shí)點(diǎn)的靈活串聯(lián)與應(yīng)用。在體系里,知識(shí)不再是孤零零散落在大腦各處信息點(diǎn),而是互相補(bǔ)充互相協(xié)作而成的系統(tǒng)化的有機(jī)整體。其實(shí)這并不難理解。舉個(gè)簡(jiǎn)單的例子,假如現(xiàn)在有一篇中文技術(shù)文檔放在面前,雖然我們并不是專業(yè)人士,但將這份文檔讀完還是可以做到的,但如果換一個(gè)不懂中文的外國(guó)人來(lái)看這篇文章,那么他連閱讀都無(wú)法完成。我們之所以可以將一篇不能完全理解的專業(yè)文章看完,是因?yàn)槲覀冇幸欢ǖ恼Z(yǔ)文基礎(chǔ)知識(shí)。也就是說(shuō),在我們的大腦里,儲(chǔ)存著識(shí)字的能力。我們可以將這些已經(jīng)擁有的能力整合在知識(shí)體系中。這樣的話,當(dāng)我們?nèi)W(xué)習(xí)新知識(shí)時(shí),完全可以從構(gòu)建好的體系里,找到已經(jīng)形成的能力。 好處即,完全陌生的知識(shí)會(huì)被分解形成一些小的知識(shí)點(diǎn)。然后再聯(lián)系體系中已有的能力,去逐一攻克這些陌生的難題。

          3.分享交流

          什么是黑客?真正的黑客可能與大多數(shù)人所理解的有所差異。黑客,由英語(yǔ)Hacker音譯出來(lái)的,狹義是指專門研究、發(fā)現(xiàn)計(jì)算機(jī)和網(wǎng)絡(luò)漏洞的計(jì)算機(jī)愛好者。根據(jù)黑客的原始定義,黑客對(duì)計(jì)算機(jī)有著狂熱的興趣和執(zhí)著的追求,不斷推動(dòng)著計(jì)算機(jī)和網(wǎng)絡(luò)的發(fā)展與完善。顯而易見,黑客與網(wǎng)絡(luò)安全緊密相關(guān)。 黑客精神是關(guān)于開放的精神。而黑客行為是基于團(tuán)隊(duì)的,只有開放才能讓參與者們發(fā)揮出最大的能量,去修補(bǔ),去改造。互聯(lián)網(wǎng)上最有價(jià)值行為就是「奉獻(xiàn)」,技術(shù)在奉獻(xiàn)中獲得了進(jìn)步,知識(shí)在共享中得到了豐富。“分享交流”無(wú)疑是構(gòu)成互聯(lián)網(wǎng)這座大廈的基石,只有知識(shí)共享才能推動(dòng)我們不斷向前走。逛一逛社區(qū),分享些自我學(xué)習(xí)的心得,于人于己,都是大有裨益的。

          點(diǎn)擊查看【黑客學(xué)習(xí)資料·攻略】

          CSDN編者按】本文的作者是一名軟件開發(fā)工程師,在讀過(guò)《大教堂與市集》的作者、《新黑客詞典》的維護(hù)人、著名黑客ESR(Eric Steven Raymond)的博客文章《如何成為一名黑客》之后,對(duì)計(jì)算機(jī)程序產(chǎn)生濃厚興趣,并受此影響走向軟件開發(fā)的職業(yè)道路。來(lái)了解下他的故事和對(duì)于黑客的見解吧!

          作者 | Zach Alberico

          譯者 | 蘇本如,責(zé)編 | 夕顏

          頭圖 | CSDN付費(fèi)下載自視覺中國(guó)

          出品 | CSDN(ID:CSDNnews)

          以下為譯文:

          為什么要寫這篇文章?

          當(dāng)我十三歲開始上高中的時(shí)候,我讀了ESR寫的這篇博客文章:如何成為一名黑客(http://www.catb.org/~esr/faqs/hacker-howto.html)。這篇文章讓我了解了程序員們一起在互聯(lián)網(wǎng)上構(gòu)建東西的社區(qū),這讓我很興奮。我試著開始著手安裝Fedora Core 4,最終安裝成功了Ubuntu 6.06,通過(guò)這一過(guò)程,我自己學(xué)到了很多關(guān)于故障排除的知識(shí),并且努力嘗試著讓系統(tǒng)真正工作起來(lái)。這個(gè)過(guò)程對(duì)于培養(yǎng)幫助我獲得現(xiàn)在這份工作的技能至關(guān)重要。我讀了關(guān)于Python的書,寫了一些小程序,然后決定學(xué)習(xí)計(jì)算機(jī)科學(xué),了解計(jì)算機(jī)是如何工作的。在我不確定自己將來(lái)想做什么的時(shí)候,這對(duì)我來(lái)說(shuō)是一個(gè)相當(dāng)有影響力的文章。

          在布法羅郊區(qū)長(zhǎng)大的我,在紐約可能感到相當(dāng)孤獨(dú)。雖然我很幸運(yùn),我父親在大學(xué)里因?yàn)楹猛娑帉懥艘粋€(gè)Apple II程序(所以我應(yīng)該有一些編程背景/黑客精神),但他對(duì)更現(xiàn)代的軟件開發(fā)知之甚少。我喜歡電腦,也喜歡玩電腦,但我不知道什么是計(jì)算機(jī)可以做到的,甚至不知道在哪里可以了解更多計(jì)算機(jī)知識(shí)。當(dāng)搜索空間如此之大,并且有許多未知的信息時(shí),你甚至很難找到好的信息來(lái)源來(lái)學(xué)習(xí)。有能力選擇好的信息來(lái)源需要一些現(xiàn)有的知識(shí),如果沒有經(jīng)驗(yàn)豐富的人的指導(dǎo),這可能會(huì)很困難。我認(rèn)為,現(xiàn)在互聯(lián)網(wǎng)更發(fā)達(dá),情況可能會(huì)更好,但在某種程度上說(shuō),現(xiàn)在比過(guò)去可能更加困難,因?yàn)橛懈嗟倪x擇需要篩選。

          16年后,我想寫我自己的版本的《如何成為一名黑客》,來(lái)對(duì)ESR的原著進(jìn)行補(bǔ)充,這一定是件很有趣的事。我想在這篇文章加入那些我在13歲時(shí)想讀到的一些東西,并且重點(diǎn)關(guān)注那些我覺得很有幫助的其他內(nèi)容。現(xiàn)在很多關(guān)于編程及其相關(guān)主題的文章都在拼命鼓噪,試圖說(shuō)服你采用特定的編程語(yǔ)言、框架、操作系統(tǒng)、或者特定的編程方法。本文在這些方面著墨不多,盡管我也提出了一些建議,但它們只是一些溫和的觀點(diǎn)。本文的主要目標(biāo)是填補(bǔ)那些在ESR的原始文章未曾觸及而我非常想了解的空白(所以你應(yīng)該先讀ESR的那篇文章)。

          要學(xué)習(xí)的東西有很多

          記得在剛開始的時(shí)候,我讀過(guò)一些文章和書,但對(duì)其中的很多行業(yè)術(shù)語(yǔ)不甚理解 - 這很正常。隨著你接觸到了更多的事情,并深入到每一件你不理解的事情中去,那些一開始看起來(lái)不可理解的事情會(huì)慢慢變得可以理解。保持繼續(xù)閱讀并且挺過(guò)這段艱難時(shí)期是很好的方法,當(dāng)你不理解的時(shí)候就去查找,當(dāng)你可以提問(wèn)的時(shí)候就去問(wèn)問(wèn)題(ESR也有一篇關(guān)于如何問(wèn)好問(wèn)題的文章)。

          每個(gè)人都會(huì)在某個(gè)時(shí)候第一次學(xué)到一些東西,然后這些東西就會(huì)慢慢地積累起來(lái),直到你掌握了那些基本知識(shí)為止。我記得一開始我不懂任何細(xì)節(jié)(比如:我不知道如何在終端中輸入命令來(lái)運(yùn)行它們,或者cd代表“change directory”)。你從接觸中獲得這些知識(shí),你玩得越多,你接觸得就越多,你積累的知識(shí)和經(jīng)驗(yàn)也就越多。如果你有幸生活在一個(gè)地區(qū)有一群對(duì)軟件感興趣的人,你就能夠更快地學(xué)習(xí)。

          不要害怕你不理解的事情

          學(xué)習(xí)一些復(fù)雜的新事物開始時(shí)往往會(huì)感到困難 - 如果感覺很容易,那么它可能是你已經(jīng)知道的東西,或者它可能不是真正考驗(yàn)?zāi)愕闹R(shí)(閱讀如何解決一個(gè)物理問(wèn)題并認(rèn)為“它很合理”,比你自己用剛剛學(xué)會(huì)的工具解決一個(gè)問(wèn)題要容易得多)。感覺吃力是個(gè)好現(xiàn)象 - 這意味著你真的在學(xué)習(xí),集中精力一直堅(jiān)持做下去,當(dāng)你感覺變好的時(shí)候你的學(xué)習(xí)就會(huì)變得更容易。

          我認(rèn)為,一個(gè)新人在這方面甚至有一點(diǎn)優(yōu)勢(shì):當(dāng)你積累了一點(diǎn)經(jīng)驗(yàn)后,只做你已經(jīng)知道怎么做的事情,而不是學(xué)習(xí)新的東西,會(huì)讓你感覺容易和舒適。這會(huì)導(dǎo)致你陷入一個(gè)停滯期,在那里你只是重復(fù)做你已經(jīng)知道怎么做的事情,就像一個(gè)人只能用吉他彈一首歌,并且他總是彈同一首歌一樣。對(duì)于一個(gè)新人來(lái)說(shuō),一切都很難,但這樣做不應(yīng)該是一個(gè)新人真正的選擇。

          第一次學(xué)習(xí)一些復(fù)雜的東西應(yīng)該會(huì)感覺有點(diǎn)痛苦 - 你應(yīng)該習(xí)慣這種感覺,因?yàn)檫@是件好事,意味著你在成長(zhǎng)。不要因此覺得自己不夠聰明而被嚇跑了。因?yàn)橛刑鄸|西要學(xué),有太多不同的途徑要走(僅就計(jì)算機(jī)科學(xué)來(lái)說(shuō),就有很多東西,像計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)安全、機(jī)器學(xué)習(xí)、算法、移動(dòng)、網(wǎng)絡(luò)、基礎(chǔ)設(shè)施等等分支),所以有一個(gè)讓自己成長(zhǎng)并走出舒適區(qū)去學(xué)習(xí)新事物的心態(tài)是至關(guān)重要的。

          學(xué)習(xí)編程 - 邊做邊學(xué)

          僅僅通過(guò)閱讀一本關(guān)于編程的書來(lái)學(xué)習(xí)編程,就像僅僅通過(guò)閱讀一本關(guān)于跳傘的書來(lái)學(xué)習(xí)跳傘一樣。你可能需要讀一本書(而且在開始的時(shí)候你需要用它作為一個(gè)起點(diǎn)),但是除非你同時(shí)也在寫一些小程序,否則你從中得到的有限。木匠通過(guò)建造東西來(lái)使技術(shù)變得更熟練,作家通過(guò)撰寫文章來(lái)使文筆變得更優(yōu)美,而程序員則通過(guò)編寫代碼來(lái)提高編碼水平。這并不意味著你不應(yīng)該讀書,也不意味著一本好書不能給你帶來(lái)價(jià)值。但是僅僅這樣做會(huì)很容易讓你陷入一個(gè)誤區(qū):你只是在那里讀關(guān)于編程的書而不是自己做任何事情,會(huì)讓你覺得讀起來(lái)容易,做起來(lái)也容易。然而,當(dāng)你真正開始編程的時(shí)候,你會(huì)發(fā)現(xiàn)憑空想象出來(lái)一些程序是很困難的。

          我同意ESR的觀點(diǎn),Python是一種很好的作為編程起點(diǎn)的語(yǔ)言,而且有一個(gè)很好的學(xué)習(xí)網(wǎng)站,名為苦學(xué)Python,專門針對(duì)初學(xué)者,并在教學(xué)過(guò)程中使用一些練習(xí)。

          一開始,你會(huì)覺得語(yǔ)法很難理解,當(dāng)你開始學(xué)習(xí)的時(shí)候,很多時(shí)間都花在了語(yǔ)法上。因?yàn)槊糠N編程語(yǔ)言都有不同的語(yǔ)法,它們看起來(lái)非常不同。當(dāng)你開始掌握語(yǔ)法后,你更多的精力就會(huì)放在關(guān)于如何解決問(wèn)題和使用什么數(shù)據(jù)結(jié)構(gòu)的通用知識(shí)上。最終,你對(duì)于使用常見的數(shù)據(jù)結(jié)構(gòu)已經(jīng)相當(dāng)嫻熟,然后你的重點(diǎn)將會(huì)轉(zhuǎn)向更高層次的抽象和更通用的設(shè)計(jì)或基礎(chǔ)架構(gòu),這些設(shè)計(jì)或基礎(chǔ)架構(gòu)使得軟件開發(fā)更易于在規(guī)模上管理或在將來(lái)更易于更改。

          在掌握了一門編程語(yǔ)言的語(yǔ)法并且能夠編寫簡(jiǎn)單的程序之后,學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)是最重要的下一步。Cracking the Coding Interview這本書對(duì)一些核心的數(shù)據(jù)結(jié)構(gòu)有很詳細(xì)的描述(并且還附帶有一些示例問(wèn)題)。令人困惑的是,不同的語(yǔ)言在實(shí)現(xiàn)相同的數(shù)據(jù)結(jié)構(gòu)時(shí)往往有不同的名稱(比如,Python稱哈希表(hash table)為‘字典( dictionary)’),但大多數(shù)語(yǔ)言都會(huì)實(shí)現(xiàn)一些核心數(shù)據(jù)結(jié)構(gòu),即使它們都有一個(gè)不同的名稱。

          故障排除或調(diào)試也是一項(xiàng)核心編程技能 - 大多數(shù)編程時(shí)間實(shí)際上都是在調(diào)試,因此,如果你喜歡調(diào)試代碼,這可能是一個(gè)好現(xiàn)象。當(dāng)你不得不到處搜索以試圖理解某件事情,或者當(dāng)你正在閱讀的文檔不起作用,或者當(dāng)你在環(huán)境中遇到一些意外錯(cuò)誤時(shí),不要?dú)怵H ,記住這是正常的,而且這也不是你能力低下的反映。

          大多數(shù)軟件都不工作,而且經(jīng)常有未記錄的error、bug和一些難以糾正的瑣碎問(wèn)題。例如,Github上的大多數(shù)開源項(xiàng)目都有某種構(gòu)建系統(tǒng),用于處理將軟件配置為運(yùn)行的問(wèn)題。這將執(zhí)行諸如拉入依賴項(xiàng)(需要與之配合工作的其他代碼)之類的操作,以及執(zhí)行任何必要的命令來(lái)實(shí)際運(yùn)行它。如果你要在Github上下載一個(gè)有趣的項(xiàng)目并嘗試運(yùn)行它,你可能會(huì)在這個(gè)過(guò)程中遇到很多意外的錯(cuò)誤,而這些錯(cuò)誤通常沒有文檔記錄。

          運(yùn)行時(shí)遇到這些錯(cuò)誤并且將問(wèn)題解決是很正常的事情,經(jīng)驗(yàn)豐富的程序員也必須處理這些問(wèn)題(如果幸運(yùn)的話,我們以前也見過(guò)這種類型的問(wèn)題)。我見過(guò)有人遇到這樣的錯(cuò)誤,并且認(rèn)為自己做錯(cuò)了什么,但實(shí)際上錯(cuò)不是你,而是編程就是這樣的過(guò)程。圍繞著構(gòu)建系統(tǒng)并試圖使其更好,有很多相互競(jìng)爭(zhēng)的工具甚至行業(yè)(這可能會(huì)使初學(xué)者更加困惑,因?yàn)闆]有真正的標(biāo)準(zhǔn)化,并且配置軟件使之運(yùn)行的正確方法也因?yàn)榫幊汰h(huán)境和語(yǔ)言的不同而各不相同)。

          計(jì)算機(jī)實(shí)際上是如何工作的?

          我記得那時(shí)我很沮喪,因?yàn)槲液茈y找到關(guān)于計(jì)算機(jī)實(shí)際工作方式的信息。我能找到的關(guān)于計(jì)算機(jī)的一切都是用毫無(wú)用處的過(guò)于簡(jiǎn)單的類比(比如,磁盤是“存放文件的柜子”),我找不到任何我可以閱讀并且?guī)椭艺嬲斫庥?jì)算機(jī)是如何工作的,并且如果把我轉(zhuǎn)移到過(guò)去,我就能真正解釋如何構(gòu)建出一個(gè)計(jì)算機(jī)的東西。這些是比軟件更具體的電子或計(jì)算機(jī)工程,它們?cè)趲椭斫庥布矫嫒匀挥泻芏鄡r(jià)值(這很有趣!)。

          我愿意推薦的最好的書是Charles Petzold撰寫的《Code》。它引導(dǎo)你從電子位開始,一直到布爾邏輯和電路設(shè)計(jì)的歷史,再到簡(jiǎn)單電路的實(shí)際圖形,以及如何將位存儲(chǔ)在內(nèi)存中。這是知識(shí)依照發(fā)現(xiàn)的歷史背景一步步地介紹給你,直到構(gòu)建出一個(gè)真正的小CPU。Charles Petzold還學(xué)習(xí)了一些匯編和基本的計(jì)算機(jī)圖形學(xué)。他是一個(gè)邏輯非常清楚的作家和老師,所以這本書的細(xì)節(jié)具備令人驚訝的可讀性。

          關(guān)于計(jì)算機(jī)的更多的歷史背景,我推薦Mitchell Waldrop的《夢(mèng)幻機(jī)器》和Steven Levy的《黑客》。書中的敘述性的故事使學(xué)習(xí)和記憶更容易,我認(rèn)為這些發(fā)現(xiàn)的背景有助于學(xué)習(xí)事物的實(shí)際工作方式。

          軟件工具:代碼編輯器,編程環(huán)境

          工具是有趣的,了解你的工具是件好事,但是你可以永遠(yuǎn)定制一些東西,爭(zhēng)論一些無(wú)關(guān)緊要的小細(xì)節(jié)。當(dāng)你剛開始的時(shí)候,定制工具是一個(gè)有趣的學(xué)習(xí)方式,但是我看到人們花了大量的時(shí)間在這個(gè)上面,與實(shí)際編寫解決問(wèn)題的程序或者學(xué)習(xí)更多的通用編程技巧相比,它產(chǎn)生的價(jià)值相對(duì)較小(關(guān)于這點(diǎn)的一本很好的書是設(shè)計(jì)數(shù)據(jù)密集型應(yīng)用程序)。過(guò)于專注于定制工具會(huì)束縛你前進(jìn)的腳步。

          不要太擔(dān)心Vim或Emacs之類的工具,也不要太擔(dān)心你正在使用何種操作系統(tǒng) -你可以在任何地方學(xué)習(xí)這些核心技能(這是我與ESR原始文章的最大分歧)。也就是說(shuō),玩Linux對(duì)我來(lái)說(shuō)是一個(gè)非常有價(jià)值的學(xué)習(xí)故障排除的方法 - 主要是因?yàn)槲业腖inux沒有很好地工作,我不得不花上幾個(gè)小時(shí)來(lái)嘗試讓無(wú)線互聯(lián)網(wǎng)正常工作,讓筆記本電腦成功掛起,甚至讓用戶界面出現(xiàn)(現(xiàn)在情況稍微好一點(diǎn))。

          我開始嘗試安裝Gentoo(實(shí)際上從未成功)。這種故障排除技巧對(duì)于我獲得現(xiàn)在的工作非常有幫助,所以如果你喜歡玩不同的操作系統(tǒng),我肯定會(huì)鼓勵(lì)你,我只是不認(rèn)為這是必要的。不過(guò),在macOS或Linux上學(xué)習(xí)可能更容易,因?yàn)榇蠖鄶?shù)現(xiàn)有的工具都是針對(duì)這些環(huán)境,而且大多數(shù)程序員都在使用這兩種工具中的一種。

          值得一提的另外一個(gè)特定工具是版本控制,特別是git。花點(diǎn)時(shí)間熟悉其基本知識(shí)是值得的,但它可能是在你編程一段時(shí)間之后才需要關(guān)注的東西。

          不要沒完沒了地研究

          在開始一個(gè)項(xiàng)目之前,進(jìn)行沒完沒了地“研究”會(huì)導(dǎo)致項(xiàng)目容易拖延 - 閱讀和探索可用的選項(xiàng)(研究)會(huì)很有趣,花一點(diǎn)時(shí)間做一點(diǎn)這樣的事情會(huì)很好,但你也可能永遠(yuǎn)被困在這樣的事情中。當(dāng)有疑問(wèn)的時(shí)候,只需選擇一個(gè)已經(jīng)開始了一段時(shí)間并且最受歡迎的項(xiàng)目。使用這個(gè)項(xiàng)目,如果它很受歡迎,它可能有一個(gè)像樣的社區(qū),你可以向它學(xué)習(xí),如果它存在一段時(shí)間,它可能會(huì)更穩(wěn)定(或者至少它會(huì)更充實(shí),不太可能被拋棄)。

          計(jì)算機(jī)科學(xué)

          我真的很喜歡學(xué)習(xí)計(jì)算機(jī)科學(xué),并且認(rèn)為這可能仍然是獲得最大機(jī)會(huì)的最佳途徑(尤其是如果你像我一樣住在郊區(qū),周圍沒有很多軟件人員的話)。如果可能的話,我認(rèn)為嘗試學(xué)習(xí)最好的計(jì)算機(jī)科學(xué)課程是很好的。網(wǎng)上也有很多好的課程,但是如果你的生活和我高中時(shí)一樣,在家里很難真正利用這些。

          編程面試

          如果說(shuō)學(xué)習(xí)是獲得好成績(jī)的天然解決方案,那么做好一個(gè)酷項(xiàng)目編程就是在編程面試中表現(xiàn)出色的天然解決方案。要想在競(jìng)爭(zhēng)激烈的公司的編程面試中處于有利地位,你需要對(duì)leetcode網(wǎng)站上和Cracking the Coding Interview這本書中提到的編程問(wèn)題非常熟悉。編程面試需要大量的實(shí)踐,并且它是一個(gè)可以讓自身能力得以發(fā)展的獨(dú)特技能。

          你可以獲得一個(gè)完整的計(jì)算機(jī)科學(xué)學(xué)位,但仍然不知道如何編程。你也可以獲得一個(gè)計(jì)算機(jī)科學(xué)學(xué)位,但仍然不能通過(guò)編程面試(這兩個(gè)可能是默認(rèn)情況)。學(xué)會(huì)編程,學(xué)會(huì)在編程面試中做得更好,你需要自己集中精力在這些方面。計(jì)算機(jī)科學(xué)學(xué)位可能有助于一些方向和重點(diǎn)項(xiàng)目(Lambda School可能更適合培養(yǎng)編程人員,也許最終會(huì)更適合),但你必須自己掌握很多這方面的知識(shí)。

          角色和職位

          除了“軟件工程師”之外,還有很多不同的角色。SRE(網(wǎng)站可靠性工程師)關(guān)注代碼運(yùn)行的基礎(chǔ)設(shè)施,并為其編寫軟件。內(nèi)部工具和devops開發(fā)人員專注于自動(dòng)化軟件構(gòu)建和測(cè)試所需的所有工具(閱讀The Phoenix Project,了解一個(gè)有趣的故事來(lái)說(shuō)明這一點(diǎn))。除此之外,有些角色和用戶有密集的交互,如開發(fā)者支持工程師(developer support engineer)幫助用戶處理API、解決bug或配置問(wèn)題)。還有些角色重點(diǎn)關(guān)注游戲引擎,有些角色重點(diǎn)關(guān)注虛擬現(xiàn)實(shí)或計(jì)算機(jī)圖形。有些角色則關(guān)注編寫新的計(jì)算機(jī)語(yǔ)言和新的編譯器。

          在所有這些角色中,根據(jù)使用的產(chǎn)品和使用的為解決新問(wèn)題而創(chuàng)建的新工具的不同,有更多的專業(yè)化。計(jì)算機(jī)安全也是一個(gè)有趣的領(lǐng)域,對(duì)此領(lǐng)域我所知不多,并且我認(rèn)為ESR在他的文章中對(duì)此是持輕視態(tài)度的,但我認(rèn)為它也是一個(gè)很難開始的地方,因?yàn)樗枰獙?duì)事物是如何工作的已知理解的基礎(chǔ)上才能知道事物是如何被打破的。我記得我很早就開始讀Hacking: The Art of Exploitation這本書,但當(dāng)時(shí)我對(duì)這個(gè)領(lǐng)域還是一知半解。

          當(dāng)然,你也可以創(chuàng)辦自己的公司,建立自己的創(chuàng)始人角色。

          還有很多東西要學(xué)(再來(lái)一次)

          一輩子是很長(zhǎng)的一段時(shí)間,而專業(yè)化并不是永遠(yuǎn)的,所以要深入到不同的事物中去。你可以接觸很多新事物,一路玩得開心。

          獎(jiǎng)勵(lì):社區(qū)

          ESR在他的文章中談到加入一個(gè)本地Linux用戶組,但是至少對(duì)我來(lái)說(shuō),當(dāng)我讀到他的文章的時(shí)候,這是不現(xiàn)實(shí)的,一方面是因?yàn)檫@個(gè)用戶組真的沒有那么多人,另一方面是因?yàn)槲姨×瞬荒荛_車,我自己也沒法那么容易地到達(dá)任何地方。有一些在線社區(qū)我覺得很有趣,如果換在那時(shí)我想我也會(huì)覺得很有趣。

          Hacker News:Ycombinator的新聞網(wǎng)站(海灣地區(qū)的創(chuàng)業(yè)孵化器)。對(duì)它的評(píng)價(jià)有好有壞,但好處在于它確實(shí)很好,很多業(yè)內(nèi)人士都在那里出現(xiàn)。Paul Graham和Jessica Livingston是Ycombinator的創(chuàng)始人,Paul寫了很多有趣的文章。

          Twitter:很大程度上取決于你在關(guān)注誰(shuí),但如果你想的話,它可以成為一個(gè)好地方。很難知道你應(yīng)該從誰(shuí)開始關(guān)注,但你可以看看我從誰(shuí)開始關(guān)注。

          Less Wrong:不是注重編程的社區(qū),但是理性社區(qū)和編程社區(qū)之間有相當(dāng)多的重疊,我喜歡那里的很多文章,這肯定是我在發(fā)現(xiàn)如何成為黑客的同時(shí),希望找到的東西。這里有一個(gè)我非常喜歡的例子:Disputing Definitions

          歡迎聯(lián)系我

          我有更多的文章和書,都鏈接在我自己網(wǎng)站的about網(wǎng)頁(yè)上。

          我記得在我讀到他的文章時(shí),ESR回復(fù)了我發(fā)給他的一封關(guān)于讓iPod在Fedora Core 4工作的郵件,我很確定Richard Stallman也回復(fù)了我當(dāng)時(shí)發(fā)的一些郵件。我覺得那樣做對(duì)初學(xué)者來(lái)說(shuō)很好。本著以他們?yōu)榘駱拥木瘢绻阍敢獾脑挘?qǐng)隨時(shí)向我提出任何具體的問(wèn)題。

          原文鏈接:

          https://zalberico.com/essay/2020/04/19/how-to-become-a-hacker.html

          本文為CSDN翻譯文章,轉(zhuǎn)載請(qǐng)注明出處。

          ?Facebook 公司:如何清除 960 萬(wàn)句“臟話”?

          ?Linux 之父怒刪工程師提交的補(bǔ)丁,稱“太蠢了”網(wǎng)友:懟得好!

          ?張一鳴是如何練就字節(jié)跳動(dòng)的

          ?性能超越最新序列推薦模型,華為諾亞方舟提出記憶增強(qiáng)的圖神經(jīng)網(wǎng)絡(luò)

          ?DevOps 在移動(dòng)應(yīng)用程序開發(fā)中扮演什么角色?

          ?穩(wěn)定幣經(jīng)濟(jì):十大穩(wěn)定幣簡(jiǎn)史

          天我們繼續(xù)看看html的學(xué)習(xí)筆記。

          文本標(biāo)簽

          標(biāo)題標(biāo)簽<hn>

          將文本設(shè)置為標(biāo)題顯示的標(biāo)簽對(duì)。設(shè)定標(biāo)題字體大小,n=1(大)~6(小),標(biāo)題大小一共有6種,也就是從<h1>……</h1>到<h6>……</h6>

          <html lang="zh-cn">
          <head>
          <meta content="text/html;charset=utf-8">
          <title>菜鳥小白的學(xué)習(xí)分享</title>
          </head>
          <body bgcolor="11ffff" text="000000">
          <h1>我是菜鳥小白</h1>
          <h2>你們的好朋友</h2>
          <h3>  讓我們一起學(xué)習(xí)吧!!!</h3>
          </body>
          </html>
          

          顯示效果如下:


          字體修飾標(biāo)簽

          對(duì)文字的格式做相應(yīng)的變化,如粗體、斜體、底線、上標(biāo)、下標(biāo)等。常用的字體修飾標(biāo)簽有以下幾種。

          • <b>……</b>:指定文字為粗體字
          • <i>……</i>:指定文字為斜體字
          • <u>……</u>:指定文字為帶有下劃線
          • <tt>……</tt>:指定文字為打字機(jī)效果
          • <sup>……</sup>:指定文字為上標(biāo)
          • <sub>……</sub>:指定文字為小標(biāo)
          • <em>……</em>:對(duì)某段文字進(jìn)行強(qiáng)調(diào),通常用斜體字顯示出來(lái)
          • <strong>……</strong>:對(duì)文本進(jìn)行強(qiáng)調(diào),通常用粗體字顯示出來(lái)我們看下加粗前后對(duì)比,其它效果類似方式
          <html lang="zh-cn">
          <head>
          <meta content="text/html;charset=utf-8">
          <title>菜鳥小白的學(xué)習(xí)分享</title>
          </head>
          <body bgcolor="11ffff" text="000000">
          <b>我是菜鳥小白呀</b>
          我是菜鳥小白呀
          </body>
          </html>
          

          顯示效果如下:


          字體標(biāo)簽<font>

          設(shè)置文檔的字體,改變其屬性,對(duì)文本進(jìn)行不同的設(shè)置,包含字體、大小、顏色等

          • size
          • face
          • color

          我們看看大小的對(duì)比區(qū)別

          <html lang="zh-cn">
          <head>
          <meta content="text/html;charset=utf-8">
          <title>菜鳥小白的學(xué)習(xí)分享</title>
          </head>
          <body bgcolor="11ffff" text="000000">
          我是菜鳥小白
          <font size="20px">我是菜鳥小白呀</font>
          </body>
          </html>
          

          顯示效果如下:


          超鏈接標(biāo)簽

          超鏈接的定義

          在不同文檔、同一個(gè)文檔的不同段落之前相互跳轉(zhuǎn)。html鏈接包含兩部分:錨標(biāo)和目標(biāo)點(diǎn)。錨標(biāo)就是鏈接的源點(diǎn),當(dāng)鼠標(biāo)被移動(dòng)到錨標(biāo)處時(shí)會(huì)變成小手狀。此時(shí),用戶通過(guò)點(diǎn)擊鼠標(biāo)就可以到達(dá)鏈接的目標(biāo)點(diǎn)。目標(biāo)點(diǎn)可以是一張圖片、一個(gè)網(wǎng)絡(luò)文件、一個(gè)多媒體文件等。

          屬性href(hypertext reference)

          用于設(shè)定鏈接地址,其鏈接地址必須是URL地址,必須給出具體的路徑。其中URL地址可以為下面內(nèi)容:

          • 網(wǎng)站:可以設(shè)置ip地址或者是網(wǎng)站的網(wǎng)址。
          <a href="http://www.baidu.com">百度地址</a>
          

          點(diǎn)擊頁(yè)面的百度地址可直接跳轉(zhuǎn)到百度頁(yè)面


          • 網(wǎng)頁(yè):鏈接到本機(jī)的網(wǎng)頁(yè)。
          <a href="cainiao-跳轉(zhuǎn)后頁(yè)面.html">跳轉(zhuǎn)</a>
          

          跳轉(zhuǎn)前頁(yè)面


          點(diǎn)擊跳轉(zhuǎn)后直接跳轉(zhuǎn)到新的本機(jī)頁(yè)面


          • 可執(zhí)行文件:當(dāng)文件擴(kuò)展名不是html、asp等時(shí),會(huì)將鏈接到的文件下載到本地計(jì)算機(jī)或直接執(zhí)行。如果是文本文件(如word格式),則在瀏覽器中打開文件并進(jìn)行編輯。
          <a href="index.txt">txt文件,打開進(jìn)行編輯</a>
          <a href="index.wav">播放聲音</a>
          
          • 網(wǎng)頁(yè)上的書簽:通常使用在網(wǎng)頁(yè)的長(zhǎng)度超過(guò)屏幕時(shí),可以使用書簽直接跳轉(zhuǎn)到該書簽指向的具體內(nèi)容,節(jié)省移動(dòng)滾動(dòng)條的時(shí)間。

          屬性target

          • 屬性值分別為_blank、_self、_parent、_top。
          • target=_blank:在新的瀏覽器窗口中打開連接的文檔,同時(shí)保持當(dāng)前窗口不變
          • target=_self:將鏈接的文檔載入鏈接所在的同一框架或窗口,默認(rèn)設(shè)置為_self
          • target=_parent:將鏈接的文檔載入該鏈接所在框架的父框架或父窗口。如果包含鏈接的框架不是嵌套框架,則所鏈接的文檔載入整個(gè)瀏覽器窗口。
          • target=_top:將鏈接的文檔載入整個(gè)瀏覽器窗口,從而刪除所有框架我們以“_blank”為例,可以按照如下方式編寫:
          <!--在新的窗口中打開百度首頁(yè)-->
          <a href="http://www.baidu.com" target=_blank>百度地址</a>
          

          屬性title

          瀏覽器會(huì)以浮動(dòng)提示的方式顯示解釋信息

          <a href="http://www.baidu.com" target=_blank title="百度歡迎你">百度地址</a>
          

          實(shí)際效果展示:


          屬性name

          利用name屬性作為錨定位,可以實(shí)現(xiàn)文檔內(nèi)部的定位。這個(gè)需要我們?cè)趦蓚€(gè)<a>標(biāo)簽中,一個(gè)寫明name,作為一個(gè)錨點(diǎn);另外一個(gè)寫明herf,用于指向錨點(diǎn)。如下面的示例,點(diǎn)擊“百度地址”會(huì)跳轉(zhuǎn)到“這是測(cè)試跳轉(zhuǎn)處”(當(dāng)頁(yè)面超過(guò)一頁(yè)長(zhǎng)度時(shí),測(cè)試效果更明顯)

          <html lang="zh-cn">
          <head>
          <meta content="text/html;charset=utf-8">
          <title>菜鳥小白的學(xué)習(xí)分享</title>
          </head>
          
          <body bgcolor="11ffff" text="000000">
          <a name=ceshi>這是測(cè)試跳轉(zhuǎn)</a>
          <a href="#ceshi" title="百度歡迎你">百度地址</a>
          ?
          </body>
          </html>
          

          圖像標(biāo)簽

          圖片標(biāo)簽<img 屬性=“屬性值”>

          • 屬性src:來(lái)定義圖片的URL(統(tǒng)一資源定位符)地址,是圖片必不可少的屬性。用法形如:<img src="url">
          <img src="https://mmbiz.qpic.cn/sz_mmbiz_png/l8AWk3KYjz4lGzzlHNpH7gCkT3kPLd0OSvgQJIp5RotD7VwV0zmYdXMACNBoOWE12FXnYZOkbv0VmnxkWibic5eQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1">
          
          • 屬性height和width:規(guī)定圖片的大小。屬性值都是數(shù)字,表示圖像寬度和高度所占的像素點(diǎn)數(shù)。默認(rèn)是瀏覽器窗口將自動(dòng)調(diào)整圖像顯示尺寸
          <img heigh="500px" width="500px" src="https://mmbiz.qpic.cn/sz_mmbiz_png/l8AWk3KYjz4lGzzlHNpH7gCkT3kPLd0OSvgQJIp5RotD7VwV0zmYdXMACNBoOWE12FXnYZOkbv0VmnxkWibic5eQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1">
          
          • 屬性align:設(shè)置圖片對(duì)齊方式,垂直對(duì)齊(居上、居中和居下)和水平對(duì)齊(居左、居中和居右)。
          <img align="right" heigh="500px" width="500px" src="https://mmbiz.qpic.cn/sz_mmbiz_png/l8AWk3KYjz4lGzzlHNpH7gCkT3kPLd0OSvgQJIp5RotD7VwV0zmYdXMACNBoOWE12FXnYZOkbv0VmnxkWibic5eQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1">
          
          • 屬性border:默認(rèn)圖片是沒有邊框的,可以利用border屬性添加邊框。
          <img border="20px" align="rows" heigh="500px" width="500px" src="https://mmbiz.qpic.cn/sz_mmbiz_png/l8AWk3KYjz4lGzzlHNpH7gCkT3kPLd0OSvgQJIp5RotD7VwV0zmYdXMACNBoOWE12FXnYZOkbv0VmnxkWibic5eQ/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1">
          

          表格標(biāo)簽

          表<table>

          創(chuàng)建一個(gè)表格,有屬性width(寬度)、height(高度)、border(邊框)、bordercolor(邊框顏色)、cellspacing、cellpadding

          行<tr>

          創(chuàng)建表格中的每一行,有屬性align、valign、bgcolor

          列<td>

          創(chuàng)建表格的中每一列,有屬性

          表頭<th>

          設(shè)置表頭

          我們現(xiàn)在建造一個(gè)表

          <html lang="zh-cn">
          <head>
          <meta content="text/html;charset=utf-8">
          <title>菜鳥小白的學(xué)習(xí)分享</title>
          </head>
          ?
          <body bgcolor="11ffff" text="000000">
          ?
          <table border>
          <th>測(cè)試表頭</th>
          ?
          <tr>
          <td>這是第一行第一列</td>
          <td>這是第一行第二列</td>
          <td>這是第一行第三列</td>
          </tr>
          <tr>
          <td>這是第二行第一列</td>
          <td>這是第二行第二列</td>
          <td>這是第二行第三列</td>
          </tr>
          </table>
          
          </body>
          </html>
          

          顯示如下:


          框架標(biāo)簽

          框架<frame>

          一個(gè)瀏覽器文檔窗口一般只能顯示一個(gè)網(wǎng)頁(yè)文件,但是使用框架標(biāo)簽就可以將一個(gè)瀏覽器文檔窗口分割成多個(gè)子窗口,每個(gè)子窗口中都可以顯示一個(gè)獨(dú)立的網(wǎng)頁(yè)文件。

          框架集<frameset>

          多個(gè)框架組成了一個(gè)框架集(Frameset),定義了各個(gè)框架如何排列的。有屬性rows和cols,兩個(gè)屬性至少選擇一個(gè),否則瀏覽器只顯示第一個(gè)定義的框架。

          <html lang="zh-cn">
          <head>
          <meta content="text/html;charset=utf-8">
          <title>菜鳥小白的學(xué)習(xí)分享</title>
          </head>
          ?
          <frameset cols="25%,50%,25%">
          <frame src="https://www.baidu.com"></frame>
          <frame src="https://www.qq.com"></frame>
          <frame src="https://www.sina.com"></frame>
          </frameset>
          ?
          </html>
          

          最終我們將三個(gè)頁(yè)面在同一個(gè)web窗口展示出來(lái)了


          表單標(biāo)簽

          表單標(biāo)簽<form>

          主要用于采集和提交用戶輸入的信息,使網(wǎng)頁(yè)具有交互功能。有屬性:

          • action(處理提交數(shù)據(jù)的頁(yè)面)
          • method(提交方式(get、post、request))
          • target()

          用戶輸入?yún)^(qū)域標(biāo)簽<input type="">

          這個(gè)標(biāo)簽必須放在<form>……</form>標(biāo)簽之間。有屬性type,具體參數(shù)值有:

          • text(單行文本輸入框)
          • textarea(多行輸入框)
          • password(密碼輸入框)
          • radio(單選框)
          • checkbox(復(fù)選框)
          • select(下拉框)
          • submit(提交)
          • reset(重置)
          • image(圖片提交)
          • file(上傳文件)
          <html lang="zh-cn">
          <head>
          <meta content="text/html;charset=utf-8">
          <title>菜鳥小白的學(xué)習(xí)分享</title>
          </head>
          ?
          <body>
          <p>用戶名<input type="text"></input></p>
          <p>多行輸入框<textarea></textarea></p>
          <p>密  碼<input type="password"></input></p>
          <p>單選框<input type="radio"></input></p>
          <p>復(fù)選框<input type="checkbox"></input></p>
          <p>下拉框<input type="select"></input></p>
          <p>提交<input type="submit"></input></p>
          <p>重置<input type="reset"></input></p>
          <p>圖片提交<input type="image"></input></p>
          <p>文件提交<input type="file"></input></p>
          ?
          </body>
          </html>
          

          實(shí)現(xiàn)效果:



          好了,今天的內(nèi)容就分享完了,如有什么意見和建議可以私信菜鳥小白哦,我們下期再會(huì)~


          主站蜘蛛池模板: 中文字幕一区日韩在线视频| 无码日韩精品一区二区三区免费 | 国产一区二区三区在线影院 | 在线日产精品一区| 中文字幕亚洲一区| 亚洲一区二区成人| 人妻在线无码一区二区三区| 多人伦精品一区二区三区视频| 亚洲一区二区在线视频| 日韩精品一区二区亚洲AV观看| 无码囯产精品一区二区免费| 亚洲一区二区三区首页| 精品国产一区二区三区| 福利片免费一区二区三区| 91精品一区国产高清在线| 精品国产日韩亚洲一区| 国99精品无码一区二区三区| 91国偷自产一区二区三区| 能在线观看的一区二区三区| 日韩精品在线一区二区| 日韩精品中文字幕视频一区| 中文字幕不卡一区| 精品人妻少妇一区二区三区不卡| 日韩av片无码一区二区三区不卡 | 中文无码精品一区二区三区| 亚洲欧洲日韩国产一区二区三区| 美女视频黄a视频全免费网站一区 美女免费视频一区二区 | 国产精品无码一区二区在线观 | 日本一区视频在线播放| 一区二区三区视频| 无码AV天堂一区二区三区| 亚洲一区二区三区在线视频| 国产乱人伦精品一区二区| 成人免费区一区二区三区| 国产伦精品一区二区三区四区| 日本一区二区视频| 老熟妇仑乱视频一区二区| 亚洲AV福利天堂一区二区三| 国内偷窥一区二区三区视频| 国产精品第一区第27页| 免费人妻精品一区二区三区|