Ⅰ 設計模式js阮一峰
有面向對象基礎自學前端想達到找工作的水平要多長時間需要看哪些書呢客觀的講自學的話還是要看你自己的毅力和恆信,這個是最重要的,其次是學習的方法和方向。
首先說網站前端在目前來說需求還是很大的,但是需要的不是初級的前端而是高級前端,因為一般學習計算機的人自己學幾個月就能到初級的水平,而高級前端是沒有那麼容易的,你說的面向對象思想是一個很好的思想,不只是純編程用,現在網站前端也需要面向對象思想的指導。
1、關於學習時間
如果自己有毅力恆信和充足的時間來自學,加上正確的方法和方向,一般需要1年左右的時間的可以勉強到中級前端的水平,首先明確中級前端不只是些css代碼,而是對javaScript有深入的了解,且使用JavaScript來解決前端中的一些問題和優化前端頁面。補充一下從入門到精通的大致流程:html、css2(深入了解兩者的兼容性及解決主流瀏覽器的兼容性問題)——javascript知識(了解其簡單的框架或者類庫如jQuery等)——javascript高級知識(了解一些深入的JavaScript知識和其一些閉缺高級框架如angularjs等)——移動端頁面的開發html5+css3(同時要學習一些移動端的前端框架和JavaScript框架)——可以發webapp(精通js和其相關的框架且懂一些安卓或者ios知識)。當我們到第三個階段或者第四個階段就是可以算中級的前端的了。
2、關於學習的方法和推薦的書
首先說現在網上的資源是相當的豐富的,我們完全可以下載一些視頻或者其他的資源驚醒學習,關於推薦的書,個人推薦基本就自己感覺非常不錯的書和一些網上評價宴世不錯的書,都是關於JavaScript的。
入門級,也適合想掌握一些前端技能的非前端工程師
JavaScriptDom編程藝術
成為一名合格的前端工程師
JavaScript高級程序設計
精通JavaScript
更優秀的代碼,更優良的設計JavaScript語言精粹
JavaScript設計模式
同時建議看國內知名大牛的博客,如王福朋、阮一峰等,其博客上有大師門對晌態肢前端深入的理解。
為什麼昨天阮一峰老師發布全棧工程師資料中主要學習react和node,js
JavaScript是一種(最好的)編程語言,主要作為前端開發中用來增加網頁的動態功能。
NodeJs是基於JavaScript的,可以做為後台開發的語言.提供了很多系統級的API,如文件派斗賀操作、網路編程等.用事件驅動,非同步編程,主要塵派是為後台網路服務設計。
ReactJS為Facebook開發的,更多的像一個JS的庫.主要是在前端Web開發中,對MVC中的V進銷爛行操作。
ReactNative它基於開源框架ReacJS,並可用來開發iOS和Android原生應用,主要為移動端服務。
GitHub上有哪些值得推薦的開源電子書語言無關類
操作系統
鳥哥的Linux私房菜(簡體)
Linux系統高級編程
TheLinuxCommandLine(中英文版)
Linux設備驅動(第三版)
深入分析Linux內核源碼
UNIXTOOLBOX
Docker中文指南
Docker——從入門到實踐
FreeRADIUS新手入門
Mac開發配置手冊
FreeBSD使用手冊
Linux命令行(中文版)
智能系統
一步步搭建物聯網系統
web伺服器
Nginx開發從入門到精通(淘寶團隊出品)
版本控制
Git教程(本文由?@廖雪峰創作,如果覺得本教程對您有幫助,可以去?iTunes購買)
git–簡易指南
猴子都能懂的GIT入門
Git參考手冊
ProGit
GitMagic
GotGitHub
GitCommunityBook中文版
Mercurial使用教程
HgInit(中文版)
沉浸式學Git
Git-Cheat-Sheet(感謝@flyhigher139翻譯了中文版)
GitHub秘籍
NoSQL
NoSQL資料庫筆談(pdf)
Redis設計與實現
Redis命令參考
帶有詳細注釋的Redis3.0代碼
帶有詳細注釋的Redis2.6代碼
TheLittleMongoDBBook
TheLittleRedisBook
Neo4j簡體中文手冊v1.8
Neo4j.rb中文資源
MySQL
MySQL索引背後的數據結構及演算法原理
項目相關
持續集成(第二版)(譯言網)
讓開發自動化系列專欄
追求代碼質量
selenium中文文檔
Joel談軟體
約耳談軟體(JoelonSoftware)
Web
關於瀏覽器和網路的20項須知
前端知識體系
瀏覽器開發工具的秘密
Chrome開發者工具中文手冊
Chrome擴展開發文檔
Grunt中文文檔
移動Web前端知識庫
正則表達式30分鍾入門教程
前端開發體系建設日記
移動前端開發收藏夾
JSON風格指南
HTTP介面設計指北
前端資源分享(一)
前端資源分享(二)
前端代碼規范及最佳實踐
w3school教程整理
大數據
大數據/數據挖掘/推薦系統/機器學習相關資源
編程藝術
程序員編程藝術
每個程序員都應該了解的內存知識(譯)【第一部分】
取悅的工序:如何理解游戲(豆瓣閱讀,免費書籍)
其他
OpenWrt智能、自動、透明翻牆路由器教程
語言相關類AWK
awk程序設計語言
C/C++
C++並發編程指南(@傅海平ICT)
LinuxC編程一站式學陪襲枯習(宋勁杉,北京亞嵌教育研究中心)
CGDB中文手冊
100個gdb小技巧
100個gcc小技巧禪碰
ZMQ指南
(中英文版)
跟我一起寫Makefile(PDF)
GNUmake中文手冊
GNUmake指南
GoogleC++風格指南
C/C++Primer(by@andycai)
簡單易懂的C魔法
Cmake實踐(PDF版)
C++FAQLITE(中文版)
C++Primer5thAnswers
CSS/HTML
學習CSS布局
通用CSS筆記、建議與指導
CSS參考手冊
Emmet文檔
前端代碼規范(騰訊alloyteam團隊)
Dart
Dart語言導覽
Fortran
Fortran77和90/95編程入門
Java
實時Java系列
ApacheShiro用戶指南
使用Eclipse和JavaSE6創建獨立WebServices應用程序
第1部分:WebServices服務端應用程序
第2部分:Web服務客戶端應用程序
JavaServerFaces1.2入門
第1部分:構建基本應用程序
第2部分:JSF生命周期、轉換、檢驗和階段監聽器
用EclipseEuropa進行Web開發
第1部分:EclipseJavaEE
第2部分:PHP開發工具
第3部分:RubyDevelopmentToolkit和RadRails
使用JavaServerFaces構建蘆洞ApacheGeronimo應用程序
第1部分:使用Eclipse和ApacheMyFacesCore構建基本的應用程序
第2部分:在JavaServerFaces中使用Tomahawk
第3部分:使用ajax4jsf添加Ajax功能
第4部分:使用ApacheTrinidad組件擴展JSF
第5部分:將JSF應用程序與Spring集成
ApacheGeronimo和Spring框架
第1部分:開發方法學
第2部分:構建第一個應用程序
第3部分:集成DAO與ORM
第4部分:混合使用SpringAOP和SpringWebFlow
第5部分:SpringMVC
第6部分:SpringMVC:使用Web視圖技術
終極mashup——Web服務和語義Web
第1部分:使用與組合Web服務
第2部分:管理Mashup數據緩存
第3部分:理解RDF和RDFs
第4部分:創建本體
第5部分:切換Web服務
Jersey2.x用戶指南
MyBatis中文文檔
JavaScript
GoogleJavaScript代碼風格指南
AirbnbJavaScript規范
JavaScript標准參考教程(alpha)
Javascript編程指南(源碼)
javascript的12個怪癖
JavaScript秘密花園
JavaScript核心概念及實踐(PDF)(此書已由人民郵電出版社出版發行,但作者依然免費提供PDF版本,希望開發者們去購買,支持作者)
《JavaScript模式》翻譯,此書中文版有售,但是紙質書翻譯的還沒有這個版本翻譯的好
命名函數表達式探秘(注:原文由為之漫筆翻譯,原始地址無法打開,所以此處地址為我博客上的備份)
學用JavaScript設計模式(開源中國)
深入理解JavaScript系列
ECMAScript6入門(作者:阮一峰)
jQuery
jQuery解構
簡單易懂的JQuery魔法
HowtowritejQueryplugin
Node.js
Node入門
七天學會NodeJS
NodejsWikiBook(繁體中文)
express.js中文文檔
koa中文文檔
使用Express+MongoDB搭建多人博客
Express框架
nodejs文檔
Node.js包教不包會
LearnYouTheNode.jsForMuchWin!(中文版)
Nodedebug三法三例
underscore.js
Underscore.js中文文檔
backbone.js
backbone.js入門教程(PDF)
Backbone.js入門教程第二版
DevelopingBackbone.jsApplications(中文版)
AngularJS
AngularJS最佳實踐和風格指南
AngularJS中譯本
AngularJS入門教程
構建自己的AngularJS
在Windows環境下用Yeoman構建AngularJS項目
zepto簡明中文手冊
Sea.js
HelloSea.js
CoffeeScript
CoffeeScriptCookbook
TheLittleBookonCoffeeScript中文版
ExtJS
Ext4.1.0中文文檔
Chrome擴展及應用開發
JavaScript入門教程
PHP
PHP調試技術手冊(PDF)
XDebug2中文手冊(譯)(CHM)
PHP之道
PHP最佳實踐
PHP安全最佳實踐
深入理解PHP內核
PHP擴展開發及內核應用
CodeIgniter用戶指南
Laravel4中文文檔
Laravel入門
Symfony2中文文檔(未譯完)
Phalcon中文文檔(翻譯進行中)
YiiBook幾本Yii框架的在線教程
簡單易懂的PHP魔法
swoole文檔及入門教程
iOS
iOS開發60分鍾入門
iOS7人機界面指南
GoogleObjective-CStyleGuide中文版
iPhone6屏幕揭秘
AppleWatch開發初探
馬上著手開發iOS應用程序
網易斯坦福大學公開課:iOS7應用開發字幕文件
Android
AndroidDesign(中文版)
GoogleAndroid官方培訓課程中文版
Android學習之路
小白的Python教程
簡明Python教程
零基礎學Python
Python2.7官方教程中文版
Python3.3官方教程中文版
深入Python3
PEP8Python代碼風格規范
GooglePython風格指南中文版
Python入門教程(PDF)
Python的神奇方法指南
笨辦法學Python(PDF版下載)
Django文檔中文版
Django最佳實踐
TheDjangoBook中文版
web.py0.3新手指南
Web.pyCookbook簡體中文版
DiveIntoPython中文版
Bottle文檔中文版(需翻牆)
Flask文檔中文版
Jinja2文檔中文版
Werkzeug文檔中文版
Flask之旅
IntroctiontoTornado中文翻譯
Python自然語言處理中文版(感謝陳濤同學的翻譯,也謝謝?@shwley聯系了作者)
Python繪圖庫matplotlib官方指南中文翻譯
Scrapy0.25文檔
ThinkPython
Ruby
Ruby風格指南
Rails風格指南
笨方法學Ruby
RubyonRails指南
RubyonRails實戰聖經
RubyonRailsTutorial原書第2版(本書網頁版免費提供,電子版以PDF、EPub和Mobi格式提供購買,僅售9.9美元)
編寫Ruby的C拓展
Ruby源碼解讀
Shell
Shell腳本編程30分鍾入門
Go
Go編程基礎
Go入門指南
學習Go語言(PDF)
GoWeb編程(此書已經出版,希望開發者們去購買,支持作者的創作)
Go實戰開發(當我收錄此項目時,作者已經寫完第三章,如果讀完前面章節覺得有幫助,可以給作者捐贈,以鼓勵作者的繼續創作)
NetworkprogrammingwithGo中文翻譯版本
Groovy
實戰Groovy系列
LaTeX
一份其實很短的LaTeX入門文檔
一份不太簡短的LATEX2ε介紹(PDF版)
LISP
ANSICommonLisp中文翻譯版
Lua
Lua編程入門
Haskell
RealWorldHaskell中文版
R
R語言忍者秘笈
Scala
Scala課堂(Twitter的Scala中文教程)
EffectiveScala(Twitter的Scala最佳實踐的中文翻譯)
Scala指南
Swift
TheSwiftProgrammingLanguage中文版
Perl
ModernPerl中文版
Perl程序員應該知道的事
Prolog
笨辦法學Prolog
Vim中文文檔
Vimscript
笨方法學Vimscript中譯本
Vim中文文檔
讀書筆記及其它讀書筆記
編譯原理(紫龍書)中文第2版習題答案
把《編程珠璣》讀薄
EffectiveC++讀書筆記
Golang學習筆記、Python學習筆記、C學習筆記(PDF)
Jsoup學習筆記
學習筆記:Vim、Python、memcached
圖靈開放書翻譯計劃–C++、Python、Java等
蒂姆·奧萊利隨筆(由譯言網翻譯,電子版免費)
Octave入門(PDF版)
SICP解題集
精彩博客集合
正則表達式簡明參考
學習前端,有什麼好書推薦嗎?對於零基礎想小白,想要自學成為前端人才,可以看看以下書籍
《圖解HTTP》:一本HTTP的神書,圖文並茂,生動形象,中猜非常適合小白學習。
《HeadFirstHTML與CSS(第2版)》:入門真的是經典書籍,手把手教學,豐富的案例讓你從0開始學前端。
《鋒利的jQuery》:作為第一本原因是jQuery入門快,你不會因為js的晦澀難懂而止步不前,因為學習jQuery後你可以自己寫一些可以即使看到效果的小項目從而提升興趣。
《Javascript高級程序設計》:書中涉及的概念基本涵蓋了js的大部分內容,包括作用域鏈、js數據類型、OOP對象在js中的實現、閉包、BOM和DOM模型、對變態IE的系列兼容的解決方案、事件流、還有xml、jason、E4X這些數據格式與js的交互操作簡介、高級技巧的介紹(比如惰性載入)等等
《高性能JavaScript》:揭示了技術和策略能幫助你在開發過程中消除性能瓶頸。你將會了解如何提升各方面的性能,包括代碼的載入、運行、DOM交互、頁面生存周期等。
《JavaScript設計模式與開發實踐》:騰訊前端AlloyTeam團隊出品,綜合講述前端的設計模式,設計原則,編程技巧,旁盯代碼重構等等。
《CSS世界》:CSS和javascript一樣,都是很容易上手,卻很難精通的。這本是前端知名博主張鑫旭的書籍,好評很多,講的很細致。
《CSS揭秘》:CSS進階必備書籍,47個css技巧讓你在面對各種css問題的時候游刃有餘。
《深入淺出Node.js》:針對Node的基本原理賣啟型做了深入,能讓你了解底層的Node實現
Ⅱ 圖解什麼是 Transformer
Transformer 是 Google 團隊在 17 年 6 月提出的 NLP 經典之作,
由 Ashish Vaswani 等人在 2017 年發表的論文 Attention Is All You Need 中提出。
Transformer 在機器翻譯任務上的表現超過了 RNN,CNN,只用 encoder-decoder 和 attention 機制就能達到很好的效果,最大的優點是可以高效地並行化。
Transformer 是一種基於 encoder-decoder 結構的模型,
在 Encoder 中,
在 Decoder 中,
下面我們具體看一下其中這幾個概念,這里主要參考 Jay Alammar,他在 The Illustrated Transformer 中給出了很形象的講解。
例如我們要進行機器翻譯任務,輸入一種語言,經過 Transformer,會輸出另一種語言。
Transformer 的 encoder 由 6 個編碼器疊加組成,
decoder 也由 6 個解碼器組成,
在結構上都是相同的,但它們不共享權重。
每一個 encoder 都分為兩個子層:
每一個 decoder 也具有這兩個層,但還有一個注意力或差層,用來幫助解碼器關注輸入句子的相關部分
首先使用嵌入演算法將輸入的 word 轉換為 vector,
最下面的 encoder ,它的輸入就是 embedding 向量,
在每個 encoder 內部,
輸入向量經過 self-attention,再經過 feed-forward 層,
每個 encoder 的輸出向量是它正上方 encoder 的輸入,
向量的大小是一個超參數,通常設置為訓練集中最長句子的長度。
在這里,我們開始看到 Transformer 的一個關鍵性質,
即每個位置的單詞在 encoder 中都有自己的路徑,
self-attention 層中的這些路徑之間存在依賴關系,
然而在 feed-forward 層不具有那些依賴關系,
這樣各種路徑在流過 feed-forward 層時可以並行執行。
Positional Encoding 是一種考慮輸入序列中單詞順序的方法。
encoder 為每個輸入 embedding 添加了一個向量,這些向量符合一種特定模式,可以確定每個單詞的位置,或者序列中不同單詞之間的距離。
例如,input embedding 的維度為4,那麼實際的positional encodings如下所示:
在下圖中,是20個單詞的 positional encoding,每行代表一個單詞的位置編碼,即第一行是加在輸入序列中第一個詞嵌入的,每行包含 512 個值, 每個值介於 -1 和 1 之間,用顏色表示出來。
可以看到在中心位置分成了兩半,因為左半部分的值由一個正弦函數生成,右半部分由餘弦函數生成,然後將它們連接起來形成了每個位置的編碼向量局團扒。
當然這並不是位置編碼的唯一方法,只是這個方法能夠擴展到看不見的序列長度處,例如當我們要翻譯一個句子,這個句子的長度比我們訓練集中的任何一個句子都長時。
例如我們要翻譯:」The animal didn't cross the street because it was too tired」 這句話
這句話中的「it」是指什麼?它指的是 street 還是 animal?
這對人類來說是一個簡單的問題,但對算桐昌法來說並不簡單。
而 Self-Attention 讓演算法知道這里的 it 指的是 animal
當模型在處理每個單詞時,self-attention 可以幫助模型查看 input 序列中的其他位置,尋找相關的線索,來達到更好的編碼效果。它的作用就是將對其他相關單詞的「understanding」融入我們當前正在處理的單詞中。
例如上圖中,在第5層時,我們就知道 it 大概指的是 animal 了。
第一步,為編碼器的每個輸入單詞創建三個向量,
即 Query vector, Key vector, Value vector
這些向量通過 embedding 和三個矩陣相乘得到,
請注意,這些新向量的尺寸小於嵌入向量。它們的維數為64,而嵌入和編碼器輸入/輸出向量的維數為512.它們不一定要小,這是一種架構選擇,可以使多頭注意力計算(大多數)不變。
將x1乘以WQ得到Query向量 q1,同理得到Key 向量 和, Value 向量
這三個向量對 attention 的計算有很重要的作用
第二步,是計算一個得分
假設我們要計算一個例子中第一個單詞 「Thinking」 的 self-attention,就需要根據這個單詞,對輸入句子的每個單詞進行評分,這個分數決定了對其他單詞放置多少關注度。
分數的計算方法是,
例如我們正在考慮 Thinking 這個詞,就用它的 q1 去乘以每個位置的 ki
第三步和第四步,是將得分加以處理再傳遞給 softmax
將得分除以 8(因為論文中使用的 key 向量的維數是 64,8 是它的平方根)
這樣可以有更穩定的梯度,
然後傳遞給 softmax,Softmax 就將分數標准化,這樣加起來保證為 1。
這個 softmax 分數決定了每個單詞在該位置bbei表達的程度。
很明顯,這個位置上的單詞將具有最高的softmax分數,但有時候注意與當前單詞相關的另一個單詞是有用的。
第五步,用這個得分乘以每個 value 向量
目的讓我們想要關注單詞的值保持不變,並通過乘以 0.001 這樣小的數字,來淹沒不相關的單詞
第六步,加權求和這些 value 向量
這就是第一個單詞的 self-attention 的輸出
得到的向量接下來要輸入到前饋神經網路,在實際實現中用矩陣乘法的形式完成
論文中還增加一種稱為 multi-headed 注意力機制,可以提升注意力層的性能
它使得模型可以關注不同位置
雖然在上面的例子中,z1 包含了一點其他位置的編碼,但當前位置的單詞還是佔主要作用, 當我們想知道「The animal didn』t cross the street because it was too tired」 中 it 的含義時,這時就需要關注到其他位置
這個機制為注意層提供了多個「表示子空間」。下面我們將具體介紹,
1. 經過 multi-headed , 我們會得到和 heads 數目一樣多的 Query / Key / Value 權重矩陣組
論文中用了8個,那麼每個encoder/decoder我們都會得到 8 個集合。
這些集合都是隨機初始化的,經過訓練之後,每個集合會將input embeddings 投影到不同的表示子空間中。
2. 簡單來說,就是定義 8 組權重矩陣,每個單詞會做 8 次上面的 self-attention 的計算
這樣每個單詞會得到 8 個不同的加權求和 z
3. 但在 feed-forward 處只能接收一個矩陣,所以需要將這八個壓縮成一個矩陣
方法就是先將8個z矩陣連接起來,然後乘一個額外的權重矩陣WO
下圖顯示了在例句中,it 的不同的注意力 heads 所關注的位置,一個注意力的焦點主要集中在「animal」上,而另一個注意力集中在「tired」,換句話說,it 是 「animal」和「tired」的一種表現形式。
當然如果選了8個層,將所有注意力 heads 都添加到圖片中,就有點難以解釋了。
這里有一個細節,
即在每個 encoders 和 decoders 裡面的 self-attention, ffnn,encoders-decoders attention 層,都有 resial 連接,還有一步 layer-normalization
下面我們看一下 Decoder 部分
1. 輸入序列經過編碼器部分,然後將最上面的 encoder 的輸出變換成一組 attention 向量 K和V
這些向量會用於每個 decoder 的 encoder-decoder attention 層,有助於解碼器聚焦在輸入序列中的合適位置
重復上面的過程,直到 decoder 完成了輸出,每個時間步的輸出都在下一個時間步時喂入給最底部的 decoder,同樣,在這些 decoder 的輸入中也加入了位置編碼,來表示每個字的位置。
2. 解碼器中的 self attention 層與編碼器中的略有不同
在解碼器中,在 self attention 的 softmax 步驟之前,將未來的位置設置為 -inf 來屏蔽這些位置,這樣做是為了 self attention 層只能關注輸出序列中靠前的一些位置。
Encoder-Decoder Attention 層的工作方式與 multiheaded self-attention 類似,只是它用下面的層創建其 Queries 矩陣,從編碼器棧的輸出中獲取 Keys 和 Values 矩陣。
3. 解碼器最後輸出的是一個向量,如何把它變成一個單詞,這就要靠它後面的線性層和 softmax 層
線性層就是一個很簡單的全連接神經網路,將解碼器輸出的向量映射成一個更長的向量。
例如我們有 10,000 個無重復的單詞,那麼最後輸出的向量就有一萬維。
每個位置上的值代表了相應單詞的分數。
softmax 層將這個分數轉換為了概率。
我們選擇概率最大的所對應的單詞,就是當前時間步的輸出。
學習資源:
https://arxiv.org/pdf/1706.03762.pdf
https://jalammar.github.io/illustrated-transformer/
https://ai.googleblog.com/2017/08/transformer-novel-neural-network.html
Ⅲ 前端書籍推薦
對於零基礎小白,可以看看以下書籍
《圖解 HTTP》:一本HTTP的神書,圖文並茂,生動形象,非常適合小白學習。
《Head First HTML與CSS(第2版)》:入門真的是經典書籍,手把手教學,豐富的案例讓你從 0 開始學前端。
《鋒利的jQuery》:作為第一本原因是jQuery入門快,你不會因為js的晦澀難懂而止步不前,因為學習jQuery後你可以自己寫一些可以即使看到效果的小項目從而提升興趣。
《Javascript 高級程序設計》:書中涉及的概念基本涵蓋了js的大部分內容,包括作用域鏈、js數據類型、OOP對象在js中的實現、閉包、BOM和DOM模型、對變態IE的系列兼容的解決方案、事件流、還有xml、jason、E4X這些數據格式與js的交互操作簡介、高級技巧的介紹(比如惰性載入)等等
《高性能JavaScript》:揭示了技術和策略能幫助你在開發過程中消除性能瓶頸。你將會了解如何提升各方面的性能,包括代碼的載入、運行、DOM交互、頁面生存周期等。
《JavaScript 設計模式與開發實踐》:騰訊前端AlloyTeam團隊出品,綜合講述前端的設計模式,設計原則,編程技巧,代碼重構等等。
《CSS 世界》:CSS和javascript一樣,都是很容易上手,卻很難精通的。這本是前端知名博主張鑫旭的書籍,好評很多,講的很細致。
《CSS 揭秘》:CSS進階必備書籍,47 個 css 技巧讓你在面對各種 css 問題的時候游刃有餘。
《深入淺出Node.js》:針對Node的基本原理做了深入,能讓你了解底層的Node實現
Ⅳ 演算法圖解 PDF 高清版
像小說集一樣趣味的演算法新手入門書。
演算法是解決困難的一步步步驟,都是電子信息科學行業的關鍵主題。現如今程序員*常見的演算法早已歷經了古人的探索、檢測及證實。假如你要搞明白這種演算法,又不願困在在繁雜的證實中,這書更是你的不二選擇。這部圖例豐富多彩、扣人心弦的好用手冊將給你輕輕鬆鬆懂得怎樣在自身的程序流程中高效率應用關鍵的演算法。
這書範例豐富多彩,圖片配文字,以令人非常容易了解的方法詮釋了演算法,致力於協助程序員在平時新項目中充分發揮演算法的動能。書中的前三章將協助你奠定基礎,陪你學習培訓二分查找、大O表示法、二種基礎的數據結構及其遞歸等。剩下的篇數將關鍵詳細介紹運用普遍的演算法,主要內容包含:應對實際難題時的處理方法,例如,什麼時候選用貪欲演算法或動態規劃;散列表的運用;圖演算法;Kzui近鄰演算法。
目錄
前言
致謝
關於本書
第1章 演算法簡介1
1.1引言1
1.1.1性能方面1
1.1.2問題解決技巧2
1.2二分查找2
1.2.1更佳的查找方式4
1.2.2運行時間8
1.3大O 表示法8
1.3.1演算法的運行時間以不同的速度增加9
1.3.2理解不同的大O運行時間10
1.3.3大O 表示法指出了最糟情況下的運行時間12
1.3.4一些常見的大O運行時間12
1.3.5旅行商13
1.4小結15
第2章 選擇排序16
2.1內存的工作原理16
2.2數組和鏈表18
2.2.1鏈表19
2.2.2數組20
2.2.3術語21
2.2.4在中間插入22
2.2.5刪除23
2.3選擇排序25
2.4小結28
第3章 遞歸29
3.1遞歸29
3.2基線條件和遞歸條件32
3.3棧33
3.3.1調用棧34
3.3.2遞歸調用棧36
3.4小結40
第4章 快速排序41
4.1分而治之41
4.2快速排序47
4.3再談大O表示法52
4.3.1比較合並排序和快速排序53
4.3.2平均情況和最糟情況54
4.4小結57
第5章 散列表58
5.1散列函數60
5.2應用案例63
5.2.1將散列表用於查找63
5.2.2防止重復64
5.2.3將散列表用作緩存66
5.2.4小結68
5.3沖突69
5.4性能71
5.4.1填裝因子72
5.4.2良好的散列函數74
5.5小結75
第6章 廣度優先搜索76
6.1圖簡介77
6.2圖是什麼79
6.3廣度優先搜索79
6.3.1查找最短路徑82
6.3.2隊列83
6.4實現圖84
6.5實現演算法86
6.6小結93
第7章 狄克斯特拉演算法94
7.1使用狄克斯特拉演算法95
7.2術語98
7.3換鋼琴100
7.4負權邊105
7.5實現108
7.6小結116
第8章 貪婪演算法117
8.1教室調度問題117
8.2背包問題119
8.3集合覆蓋問題121
8.4NP 完全問題127
8.4.1旅行商問題詳解127
8.4.2如何識別NP 完全問題131
8.5小結133
第9章 動態規劃134
9.1背包問題134
9.1.1簡單演算法135
9.1.2動態規劃136
9.2背包問題FAQ143
9.2.1再增加一件商品將如何呢143
9.2.2行的排列順序發生變化時結果將如何145
9.2.3可以逐列而不是逐行填充網格嗎146
9.2.4增加一件更小的商品將如何呢146
9.2.5可以偷商品的一部分嗎146
9.2.6旅遊行程最優化147
9.2.7處理相互依賴的情況148
9.2.8計算最終的解時會涉及兩個以上的子背包嗎148
9.2.9最優解可能導致背包沒裝滿嗎149
9.3最長公共子串149
9.3.1繪制網格150
9.3.2填充網格151
9.3.3揭曉答案152
9.3.4最長公共子序列153
9.3.5最長公共子序列之解決方案154
9.4小結155
第10章 K 最近鄰演算法156
10.1橙子還是柚子156
10.2創建推薦系統158
10.2.1特徵抽取159
10.2.2回歸162
10.2.3挑選合適的特徵164
10.3機器學習簡介165
10.3.1OCR165
10.3.2創建垃圾郵件過濾器166
10.3.3預測股票市場167
10.4小結167
第11章 接下來如何做168
11.1樹168
11.2反向索引171
11.3傅里葉變換171
11.4並行演算法172
11.5MapRece173
11.5.1分布式演算法為何很有用173
11.5.2映射函數173
11.5.3歸並函數174
11.6布隆過濾器和HyperLogLog174
11.6.1布隆過濾器175
11.6.2HyperLogLog176
11.7SHA 演算法176
11.7.1比較文件177
11.7.2檢查密碼178
11.8局部敏感的散列演算法178
11.9Diffie-Hellman 密鑰交換179
11.10線性規劃180
11.11結語180
練習答案181
自取: https://url80.ctfile.com/f/32319880-518802548-9892a0
(訪問密碼:3284)
Ⅳ 目標檢測演算法圖解:一文看懂RCNN系列演算法
姓名:王咫毅
學號:19021211150
【嵌牛導讀】CNN如此風靡,其衍生演算法也是層出不窮,各種衍生演算法也可以應用於各種應用場景,各類場合。本文則是了解每個衍生演算法的各個使用場景、原理及方法。
【嵌牛鼻子】RCNN 目標檢測
【嵌牛提問】RCNN系列演算法有何區別和聯系?
【嵌牛正文】
在生活中,經常會遇到這樣的一種情況,上班要出門的時候,突然找不到一件東西了,比如鑰匙、手機或者手錶等。這個時候一般在房間翻一遍各個角落來尋找不見的物品,最後突然一拍大腦,想到在某一個地方,在整個過程中有時候是很著急的,並且越著急越找不到,真是令人沮喪。但是,如果一個簡單的計算機演算法可以在幾毫秒內就找到你要找的物品,你的感受如何?是不是很驚奇!這就是對象檢測演算法(object detection)的力量。雖然上述舉的生活例子只是一個很簡單的例子,但對象檢測的應用范圍很廣,跨越多個不同的行業,從全天候監控到智能城市的實時車輛檢qian測等。簡而言之,物體檢測是強大的深度學習演算法中的一個分支。
在本文中,我們將深入探討可以用於對象檢測的各種演算法。首先從屬於RCNN系列演算法開始,即RCNN、 Fast RCNN和 Faster RCNN。在之後的文章中,將介紹更多高級演算法,如YOLO、SSD等。
1.解決對象檢測任務的簡單方法(使用深度學習)
下圖說明了對象檢測演算法是如何工作。圖像中的每個對象,從人到風箏都以一定的精度進行了定位和識別。
下面從最簡單的深度學習方法開始,一種廣泛用於檢測圖像中的方法——卷積神經網路(CNN)。如果讀者對CNN演算法有點生疏,建議 閱讀此文 。
這里僅簡要總結一下CNN的內部運作方式:
首先將圖像作為輸入傳遞到網路,然後通過各種卷積和池化層處理,最後以對象類別的形式獲得輸出。
對於每個輸入圖像,會得到一個相應的類別作為輸出。因此可以使用這種技術來檢測圖像中的各種對象。
1.首先,將圖像作為輸入;
2.然後,將圖像分成不同的區域;
3.然後,將每個區域視為單獨的圖像;
4.將所有這些區域傳遞給CNN並將它們分類為各種類別;
5.一旦將每個區域劃分為相應的類後,就可以組合所有這些區域來獲取具有檢測到的對象的原始圖像:
使用這種方法會面臨的問題在於,圖像中的對象可以具有不同的寬高比和空間位置。例如,在某些情況下,對象可能覆蓋了大部分圖像,而在其他情況下,對象可能只覆蓋圖像的一小部分,並且對象的形狀也可能不同。
基於此,需要劃分大量的區域,這會花費大量的計算時間。因此,為了解決這個問題並減少區域數量,可以使用基於區域的CNN,它使用提議方法選擇區域。
2.基於區域的卷積神經網路
2.1 RCNN的思想
RCNN演算法不是在大量區域上工作,而是在圖像中提出了一堆方框,並檢查這些方框中是否包含任何對象。RCNN 使用選擇性搜索從圖像中提取這些框。
下面介紹選擇性搜索以及它如何識別不同的區域。基本上四個區域形成一個對象:不同的比例、顏色、紋理和形狀。選擇性搜索在圖像中識別這些模式,並基於此提出各種區域。以下是選擇性搜索如何工作的簡要概述:
首先, 將圖像作為輸入:
然後,它生成初始子分段,以便獲得多個區域:
之後,該技術組合相似區域以形成更大的區域(基於顏色相似性、紋理相似性、尺寸相似性和形狀兼容性):
最後,這些區域產生最終的對象位置(感興趣的區域);
下面是RCNN檢測對象所遵循的步驟的簡要總結:
1.首先採用預先訓練的卷積神經網路;
2.重新訓練該模型模型——根據需要檢測的類別數量來訓練網路的最後一層(遷移學習);
3.第三步是獲取每個圖像的感興趣區域。然後,對這些區域調整尺寸,以便其可以匹配CNN輸入大小;
4.獲取區域後,使用SVM演算法對對象和背景進行分類。對於每個類,都訓練一個二分類SVM;
最後,訓練線性回歸模型,為圖像中每個識別出的對象生成更嚴格的邊界框;
[對上述步驟進行圖解分析]( http://www.robots.ox.ac.uk/~tvg/publications/talks/Fast-rcnn-slides.pdf ):
首先,將圖像作為輸入:
然後,使用一些提議方法獲得感興趣區域(ROI)(例如,選擇性搜索):
之後,對所有這些區域調整尺寸,並將每個區域傳遞給卷積神經網路:
然後,CNN為每個區域提取特徵,SVM用於將這些區域劃分為不同的類別:
最後,邊界框回歸(Bbox reg)用於預測每個已識別區域的邊界框:
以上就是RCNN檢測物體的全部流程。
2.2 RCNN的問題
從上節內容可以了解到RCNN是如何進行對象檢測的,但這種技術有其自身的局限性。以下原因使得訓練RCNN模型既昂貴又緩慢:
基於選擇性搜索演算法為每個圖像提取2,000個候選區域;
使用CNN為每個圖像區域提取特徵;
RCNN整個物體檢測過程用到三種模型:
CNN模型用於特徵提取;
線性svm分類器用於識別對象的的類別;
回歸模型用於收緊邊界框;
這些過程相結合使得RCNN非常慢,對每個新圖像進行預測需要大約40-50秒,這實際上使得模型在面對巨大的數據集時變得復雜且幾乎不可能應用。
好消息是存在另一種物體檢測技術,它解決了RCNN中大部分問題。
3.了解Fast RCNN
3.1Fast RCNN的思想
RCNN的提出者Ross Girshick提出了這樣的想法,即每個圖像只運行一次CNN,然後找到一種在2,000個區域內共享該計算的方法。在Fast RCNN中,將輸入圖像饋送到CNN,CNN生成卷積特徵映射。使用這些特徵圖提取候選區域。然後,使用RoI池化層將所有建議的區域重新整形為固定大小,以便將其饋送到全連接網路中。
下面將其分解為簡化概念的步驟:
1.首先將圖像作為輸入;
2.將圖像傳遞給卷積神經網路,生成感興趣的區域;
3.在所有的感興趣的區域上應用RoI池化層,並調整區域的尺寸。然後,每個區域被傳遞到全連接層的網路中;
4.softmax層用於全連接網以輸出類別。與softmax層一起,也並行使用線性回歸層,以輸出預測類的邊界框坐標。
因此,Fast RCNN演算法中沒有使用三個不同的模型,而使用單個模型從區域中提取特徵,將它們分成不同的類,並同時返回所標識類的邊界框。
對上述過程進行可視化講解:
將圖像作為輸入:
將圖像傳遞給卷積神經網路t,後者相應地返回感興趣的區域:
然後,在提取的感興趣區域上應用RoI池層,以確保所有區域具有相同的大小:
最後,這些區域被傳遞到一個全連接網路,對其進行分類,並同時使用softmax和線性回歸層返回邊界框:
上述過程說明了Fast RCNN是如何解決RCNN的兩個主要問題,即將每個圖像中的1個而不是2,000個區域傳遞給卷積神經網路,並使用一個模型來實現提取特徵、分類和生成邊界框。
3.2Fast RCNN的問題
Fast RCNN也存在一定的問題,它仍然使用選擇性搜索作為查找感興趣區域的提議方法,這是一個緩慢且耗時的過程,每個圖像檢測對象大約需要2秒鍾。
因此,又開發了另一種物體檢測演算法——Faster RCNN。
4.了解Faster RCNN
4.1. Faster RCNN的思想
Faster RCNN是Fast RCNN的修改版本,二者之間的主要區別在於,Fast RCNN使用選擇性搜索來生成感興趣區域,而Faster RCNN使用「區域提議網路」,即RPN。RPN將圖像特徵映射作為輸入,並生成一組提議對象,每個對象提議都以對象分數作為輸出。
以下步驟通常採用Faster RCNN方法:
1.將圖像作為輸入並將其傳遞給卷積神經網路,後者返回該圖像的特徵圖;
2.在這些特徵圖上應用RPN,返回提議對象及其分數;
3.在這些提議對象上應用RoI池層,以將所有提案降低到相同的大小;
4.最後,將提議傳遞到全連接層,該層在其頂部具有softmax層和線性回歸層,以對對象的邊界框進行分類和輸出;
這里簡要解釋一下RPN是如何運作的:
首先,Faster RCNN從CNN獲取特徵圖並將它們傳遞到區域提議網路。RPN在這些特徵圖上使用滑動窗口,每個窗口生成不同形狀和大小的k個方框( Anchor boxe):
方框是固定尺寸的邊界箱,具有不同的形狀和尺寸。對於每個方框,RPN預測兩件事:
預測錨是對象的概率;
用於邊界框回歸器調整錨點以更好地適合物體的形狀;
在有了不同形狀和大小的邊界框後,將其傳遞到RoI池層。對每個提案並對其進行裁剪,以便每個提案都包含一個對象。這就是RoI池層所做的事情,它為每個方框提取固定大小的特徵圖:
然後將這些特徵圖傳遞到全連接層,該層具有softmax和線性回歸層,最終對對象進行分類並預測已識別對象的邊界框。
4.2Faster RCNN的問題
上述討論過的所有對象檢測演算法都使用區域來識別對象,且網路不會一次查看完整圖像,而是按順序關注圖像的某些部分,這樣會帶來兩個復雜性的問題:
該演算法需要多次通過單個圖像來提取到所有對象;
由於不是端到端的演算法,不同的系統一個接一個地工作,整體系統的性能進一步取決於先前系統的表現效果。
鏈接: https://www.jianshu.com/p/51fc039ae7a4
Ⅵ 《程序員的數學》pdf下載在線閱讀,求百度網盤雲資源
《程序員的數學(第2版)》([日]結城浩)電子書網盤下載免費在線閱讀
鏈接:
書名:程序員的數學(第2版)
作者:[日]結城浩
譯者:管傑
豆瓣評分:8.7
出版社:人民郵電出版社
出版年份:2020-4-1
頁數:262
內容簡介:
《程序員的數學 第2版》面向程序員介紹了編程中常用的數學知識,藉以培養初級程序員的數學思維。讀者無須精通編程,也無須精通數學,只要具備四則運算和乘方等基礎知識,即可閱讀本書。
《程序員的數學 第2版》講解了二進制計數法、邏輯、余數、排列組合、遞歸、指數爆炸、不可解問題等許多與編程密切相關的數學方法,分析了哥尼斯堡七橋問題、高斯求和、漢諾塔、斐波那契數列等經典問題和演算法。引導讀者深入理解編程中的數學方法和思路。
《程序員的數學 第2版》新增一個附錄來介紹機器學習的基礎知識,內容涉及感知器、損失函數、梯度下降法和神經網路,旨在帶領讀者走進機器學習的世界。
作者簡介:
結城浩(作者)
生於1963年,日本知名技術作家和程序員。在編程語言、設計模式、數學、加密技術等領域,編寫了很多深受歡迎的入門書。代表作有《數學女孩》系列、《程序員的數學》《圖解密碼技術》等。
管傑(譯者)
畢業於復旦大學日語系,現為對日軟體工程師,具有多年日語技術文檔編寫經驗。愛好日漢翻譯和日本文化史,譯有《明解C語言:入門篇》等。
盧曉南(譯者)
本科就讀於西安交通大學少年班、數學系。名古屋大學博士(信息科學)。現於山梨大學計算機系任助理教授。主要研究方向包括組合數學(離散數學)及其在信息科學、計算機科學、統計學中的應用。譯著有《程序員的數學3:線性代數》。
Ⅶ 2021年你讀了哪些覺得比較好的計算機書籍
[美] 馬丁·福勒(Martin Fowler) 著,徐昊,鄭曄,熊節 譯
領域特定語言DSL,通過Java和C語言分析具體案例,講解DSL的構造方式和通用原則,軟體開發程序員的教程,馬丁·福勒新的力作。
《領域特定語言》是領域特定語言(Domain-Specific Language,DSL)領域的豐碑之作,由軟體開發大師馬丁·福勒(Martin Fowler)歷時多年寫作而成。
全書共57章,分為6個部分,全面介紹了DSL概念、DSL常見主題、外部DSL主題、內部DSL主題、備高段選計算模型以及代碼生成等內容,揭示了與編程語言無關的通用原則和模式,闡釋了如何通過DSL有效提高開發人員的生產力以及增進與領域專家的有效溝通,能為開發人員選擇和使用DSL提供有效的決策依據和指導方法。
本書適合想要了解各種DSL及其構造方式,理解其通用原則、模式和適用場景,以提高開灶念州發生產力和溝通能力的軟體開發人員閱讀。
[美] 肯尼思·,A.蘭伯特(Kenneth,A.,Lambert,) 著,肖鑒明 譯
數據結構演算法入門教程,基於Python語言進行講解,國外高等院校教材升級,書中包含大量習題和編程項目,隨書贈送配套資源。
本書用 Python 語言來講解數據結構及實現方法。全書首先概述 Python 編程的功能—這些功能是實際編程和解決問題時所必需的;其次介紹抽象數據類型的規范、實現和應用,多項集類型,以及介面和實現之間的重要差異;隨後介紹線性多項集、棧、隊列和列表;最後介紹樹、圖等內容。本書附有大量的復習題和編程項目,旨在幫助讀者鞏固所學知識。
本書不僅適合高等院校計算機專業師生閱讀,也適合對 Python 感興趣的讀者和程序員閱讀。
喬恩·克萊因伯格(Jon Kleinberg) 著,王海鵬 譯
用實際示例闡明枯燥的演算法理論,更注重演算法設計思維的培養,適合作為演算法入門書。
這是一本被眾多名校採用的演算法設計課程教材,強調用實際示例闡明枯燥的演算法理論,更注重演算法設計思路而非演算法復雜度分析。本書採用新穎的教學方式,通過分析真實世界的問題來激發演算法思想。兩位作者以一種清晰、直接的方式,指導學生自己分析和定義問題,並從中找出適用於給定場景的演算法設計原則。本書鼓勵讀者更深入地理解演算法設計過程, 探索 演算法在計算機科學的更廣闊領域中的應用。
本書具有以下特色:
王爭著
20個數據結構與演算法,100個真實項目場景案例,300多幅演算法手繪圖解
本書分為11章。第1章介紹復雜度分析方法。第2章介紹數組、鏈表、棧和隊列這些基礎的線性表數據結構。第3章介紹遞歸編程技巧、8種經典排序、二分查找及二分查找的變體問題。第4章隱蔽介紹哈希表、點陣圖、哈希演算法和布隆過濾器。第5章介紹樹相關的數據結構,包括二叉樹、二叉查找樹、平衡二叉查找樹、遞歸樹和B+樹。第6章介紹堆,以及堆的各種應用,包括堆排序、優先順序隊列、求Top K、求中位數和求百分位數。第7章介紹跳錶、並查集、線段樹和樹狀數組這些比較高級的數據結構。第8章介紹字元串匹配演算法,包括BF演算法、RK演算法、BM演算法、KMP演算法、Trie樹和AC自動機。第9章介紹圖及相關演算法,包括深度優先搜索、廣度優先搜索、拓撲排序、Dijkstra演算法、Floyd演算法、A*演算法、Z小生成樹演算法、Z大流演算法和Z大二分匹配等。第10章介紹4種演算法思想,包括貪心、分治、回溯和動態規劃。第11章介紹4個經典項目中的數據結構和演算法的應用,包括Redis、搜索引擎、鑒許可權流和短網址服務。另外,附錄A為書中的思考題的解答。
[美] 阿爾·斯維加特(Al Sweigart) 著
Python編程從入門到實踐姊妹篇,零基礎自學Python教程書籍,提供配套同步教學視頻、在線編程環境!針對Python3.X版本更新
在本書中,你將學習利用Python編程在幾分鍾內完成手動需要幾小時的工作,無須事先具備編程經驗。通過閱讀本書,你會學習Python的基本知識, 探索 Python豐富的模塊庫,並完成特定的任務(例如,從網站抓取數據,讀取PDF和Word文檔等)。本書還包括有關輸入驗證的實現方法,以及自動更新CSV文件的技巧。一旦掌握了編程的基礎知識,你就可以毫不費力地創建Python程序,自動化地完成很多繁瑣的工作,包括:
何華平 著
Python編程零基礎入門實踐教程,用Python處理Excel、Word、PPT、PDF、圖像文件,提升職場辦公效率,解決辦公難題,附贈學習資源和教學視頻
這是一本關於如何利用Python提高日常辦公效率的書,書中凝聚了作者多年的實踐經驗和獨特思考,旨在幫助讀者准確、高效地完成大量高重復度的工作。
《學Python,不加班:輕松實現辦公自動化》匯集了日常辦公和處理文檔時常見的問題,通過實例的演示與講解,幫助讀者靈活有效地使用Python處理工作中遇到的問題。全書共11章,涵蓋Python的各種應用場景,具體包括文件管理自動化,網路信息自動獲取,TXT、XLS/XLSX、DOC/DOCX、PPT、PDF、圖片文件的自動化處理,模擬滑鼠、鍵盤操控本地軟體,自動化運行管理等。本書力圖淡化編程中的抽象概念,貼合工作場景,注重實戰效果,通過對Python技術的巧妙講解,幫助讀者成為高效率的辦公室「超人」。
雷明 著
人工智慧深度學習領域教程,AI程序員的數學參考書,透徹理解機器學習演算法,從數學層面搞懂核心演算法原理的邏輯,python程序講解
本書的目標是幫助讀者全面、系統地學習機器學習所必須的數學知識。全書由8章組成,力求精準、最小地覆蓋機器學習的數學知識。包括微積分,線性代數與矩陣論,最優化方法,概率論,資訊理論,隨機過程,以及圖論。本書從機器學習的角度講授這些數學知識,對它們在該領域的應用舉例說明,使讀者對某些抽象的數學知識和理論的實際應用有直觀、具體的認識。 本書內容緊湊,結構清晰,深入淺出,講解詳細。可用作計算機、人工智慧、電子工程、自動化、數學等相關專業的教材與教學參考書。對人工智慧領域的工程技術人員與產品研發人員,本書也有很強的參考價值。對於廣大數學與應用的數學愛好者,本書亦為適合自學的讀本。
張逸 著
DDD領域驅動設計教程,進一步精化領域驅動設計方法體系,通過實戰案例演示統一過程的實施,可幫助讀者提高領域建模及軟體設計能力。
本書全面闡釋了領域驅動設計(domain-driven design,DDD)的知識體系,內容覆蓋領域驅動設計的主要模式與主流方法,並在此基礎上提出「領域驅動設計統一過程」(domain-driven design unified process,DDDUP),將整個軟體構建過程劃分為全局分析、架構映射和領域建模3個階段。除給出諸多案例來闡釋領域驅動設計統一過程中的方法與模式之外,本書還通過一個真實而完整的案例全面展現了如何進行領域驅動設計統一過程的實施和落地。為了更好地運用領域驅動設計統一過程,本書還開創性地引入了業務服務、菱形對稱架構、領域驅動架構、服務驅動設計等方法與模式,總結了領域驅動設計能力評估模型與參考過程模型。本書提出的一整套方法體系已在多個項目中推廣和落地。
劉遄 著
Linux入門教程書籍,基於Linux系統RHEL8編寫,每章帶有圖表及習題,知識點覆蓋紅帽認證RHCE考試要求。
1.本書耗時近3年時間,修訂1500餘次,內容源自國內每天訪問量近60000人次的同名Linux培訓課程;
2.在上一版的基礎上進行了系統的更新,基於Linux系統RHEL 8編寫,適用於CentOS、Fedora、Ubuntu等主流衍生版本;
3.面向零基礎讀者,從Linux基礎知識講起,漸進式地提高內容難度。
《Linux就該這么學(第2版)》在上一版的基礎上進行了大量的更新,基於紅帽RHEL 8系統編寫,且內容適用於CentOS、Fedora等系統。本書共分為20章,內容涵蓋了部署Linux系統,常用的Linux命令,與文件讀寫操作有關的技術,使用Vim編輯器編寫和修改配置文件,用戶身份與文件許可權的設置,硬碟設備分區、格式化以及掛載等操作,部署RAID磁碟陣列和LVM,firewalld防火牆與iptables防火牆的區別和配置,使用ssh服務管理遠程主機,使用Apache服務部署靜態網站,使用vsftpd服務傳輸文件,使用Samba或NFS實現文件共享,使用BIND提供域名解析服務,使用DHCP動態管理主機地址,使用Postfix與Dovecot部署郵件系統,使用Ansible服務實現自動化運維,使用iSCSI服務部署網路存儲,使用MariaDB資料庫管理系統,使用PXE+Kickstart無人值守安裝服務,使用LNMP架構部署動態網站環境等。此外,本書的配套站點還深度點評了紅帽RHCSA、RHCE、RHCA認證,方便讀者備考。
張鑫旭 著
CSS3.0入門到進階教程,前端博客"鑫空間-鑫生活"博主十年經驗沉澱之作,大量實戰案例且具有在線Demo演示,配套官方網站,隨時與作者溝通學習。
本書是「CSS世界三部曲」的最後一部。這是一本關於CSS的進階讀物,專門講CSS3及其之後版本的新特性。在本書中,作者結合自己多年的從業經驗,講解CSS基礎知識,並充分考慮前端開發者的需求,以CSS新特性的 歷史 背景為線索,去粗取精,注重細節,深入淺出地介紹了上百個CSS新特性。此外,作者專門還為本書開發了配套網站,用於書中實例效果的在線展示和問題答疑。
本書的所有內容都是作者經過深入思考和 探索 後提煉出來的,知識點多且內容豐富,注重技術細節、經驗分享和解決問題的思路。本書的主要目標是幫助前端開發者突破CSS技能提升的瓶頸,非常適合具有一定CSS基礎的前端開發者閱讀。
[美] 威廉·肖特斯(William Shotts) 著,門佳,李偉 譯
手把手教你學Linux操作系統,腳本shell編程代碼書寫,系統管理編程運維,學習使用bash(LinuxShell)編寫完整的程序。
本書對Linux命令行進行詳細的介紹,全書內容包括4個部分,第一部分由Shell的介紹開啟命令行基礎知識的學習之旅;第二部分講述配置文件的編輯,如何通過命令行控制計算機;第三部分探討常見的任務與必備工具;第四部分全面介紹Shell編程,讀者可通過動手編寫Shell腳本掌握Linux命令的應用,從而實現常見計算任務的自動化。通過閱讀本書,讀者將對Linux命令有更加深入的理解,並且可以將其應用到實際的工作中。
本書適合Linux初學人員、Linux系統管理人員及Linux愛好者閱讀。
[美] 布萊恩·W.克尼漢(Brian,W.,Kernighan) 著,韓磊 譯
UNIX的誕生記與發展史,計算機先驅布萊恩·W.克尼漢繼C程序設計語言後又一力作,講述貝爾實驗室的幕後故事,C/C++等重要發明的起源,探尋計算科學之光!
自1969年在貝爾實驗室的閣樓上誕生以來,Unix操作系統的發展遠遠超出其創造者們的想像。它帶動了許多創新軟體的開發,影響了無數程序員,改變了整個計算機技術的發展軌跡。
本書不但書寫Unix的 歷史 ,而且記錄作者的回憶,一探Unix的起源,試圖解釋什麼是Unix,Unix是如何產生的,以及Unix為何如此重要。除此之外,本書以輕松的口吻講述了一群在貝爾實驗室工作的發明天才的有趣往事,本書中每一個故事都是鮮為人知卻又值得傳播的寶貴資源。
本書適合對計算機或相關 歷史 感興趣的人閱讀。讀者不需要有太多的專業技術背景,就可以欣賞Unix背後的思想,了解它的重要性。
[印] 拉胡爾·沙瑪(Rahul Sharma)[芬]韋薩·凱拉維塔 著,鄧世超 譯
Rust系統編程指南自學教程書籍,學習Rust編程語言基礎,掌握更高端的編程範式,成就高段位的編程極客。
本書內容共17章,由淺入深地講解Rust相關的知識,涉及基礎語法、軟體包管理器、測試工具、類型系統、內存管理、異常處理、高級類型、並發模型、宏、外部函數介面、網路編程、HTTP、資料庫、WebAssembly、GTK+框架和GDB調試等重要知識點。
本書適合想學習Rust編程的讀者閱讀,希望讀者能夠對C、C++或者Python有一些了解。書中豐富的代碼示例和詳細的講解能夠幫助讀者快速上手,高效率掌握Rust編程。