推薦幾款好用的markdown編輯器
arkdown編輯器
Markdown 其實在 2004 年就有了,不過之前一直很小眾,這幾年隨著相關應用平臺的發展,Markdown以其獨到的優勢迅速火起來了。Markdown編輯器使用一套格式標記語言來對文檔內容進行排版和格式顯示。而Markdown的標記很少,常用的也就十個左右,它是一種非常輕量的標記語言。
Markdown編輯器深受技術人員的喜愛,Markdown可以用來編寫說明文檔,用它寫的文檔很多技術平臺都能通用;Markdown可以用來寫技術博客,可以使說明部分和代碼都非常清晰易讀;Markdown格式轉換方便,還可以輕松地將文本轉換為 html、pdf等。
Markdown編輯器分類
按照Markdown編輯器的使用環境,可以將它們歸納為三類。
- 平臺集成工具:各大在線博客、社區平臺自帶的寫作工具,比如CSDN、博客園、簡書等。
- 獨立軟件類:下載到自己機器上使用的獨立產品,可以編輯本地文件,比如Mou、MarkdownEditor、Haroopad等。
- 插件類:他自己本身是不能獨立使用的,可以在你現有的主流編輯器安裝,使你現有的編輯器具有Markdown的功能,比如Atom、WebStorm、Sublime Text等。
這三類軟件分別面向三類Markdown用戶,大家可以根據自己的需求來選擇使用。
下面是我收集的一些業界比較受歡迎的Markdown編輯器,喜歡用Markdown的朋友可以一起看看,一起探討。
1 Mou
Mou 是一款由國人開發的Markdown 編輯器,支持實時預覽,但是僅支持 蘋果操作系統,可以說是目前最好用的免費 Markdown 編輯器,對漢字兼容性非常好。提供語法高亮、在線預覽、同步滾動、全屏模式,支持自定保存、自動匹配,允許自定義主題等等。支持 CSS,HTML 和 PDF 導出等功能。
Mou是獨立的軟件。
更多介紹及下載:http://25.io/mou/
2 MarkdownPad
MarkdownPad被很多人稱贊為windows下最好用的Markdown編輯器之一,不過僅支持windows。它有免費版和收費版(MarkdownPad Pro),一般情況下免費版就夠用了,想用pro版的可以自行網上下載,強大的國人crack無處不在的~ ~。
MarkdownPad支持鍵盤快捷鍵和工具欄操作,即可添加標記也可移除,支持即時HTML預覽、支持自定義配色方案、字體、大小和布局、支持音樂視頻,可以導出HTML和PDF。
MarkdownPad是獨立的軟件。
更多介紹及下載:http://markdownpad.com/
3 Typora
Typora也是非常用名,非常好用的markdown編輯器,它的設計理念很不一樣,是真正的即時預覽型編輯器,不同于左右兩個窗口的編輯器。Typora的設計理念就是極致簡潔,它將「寫字」和「預覽」這兩件事情合并了。
如果要修改已經寫好的markdown標記可以點擊切換到“源代碼模式”。
Typora 同樣支持 Windows、OS X 和 Linux多個操作系統,支持數學編輯,可與 Word 直接格式轉換,可以進行多種文檔格式轉換。Typora 流暢度和反應速度很快,特別適合那些手速快的人。
Typora是獨立的軟件。
更多介紹及下載:https://www.typora.io/
4 Atom
Atom 可以說是專門為程序員推出的一個文本編輯器,界面簡潔,支持實時預覽。功能非常多,除了Markdown同時支持CSS,HTML,JavaScript等網頁編程語言,還支持宏定義,自動分屏功能等。Atom還具有語義輸入模式,比例輸入code即會自動開啟代碼模式。
Atom支持windows、蘋果、linux等多種操作系統。Atom是由著名的github平臺出品的。
Atom是獨立的軟件,也支持插件方式。
更多介紹及下載:https://atom.io/
5 Haroopad
Haroopad也是一款非常流行的編輯器,來自韓國。Haroopad支持 Windows、Mac OS X 和 Linux三大操作系統。Haroopad的特色是主題樣式豐富,語法高亮支持無數種編程語言,幾乎你能想到的編程語言他都支持。Ubuntu/Linux 用戶使用該工具比例很高,Haroopad 也是開源免費的。Haroopad也支持導出HTML、PDF,也支持數學公式和流程圖。
Haroopad是獨立的軟件。
更多介紹及下載:http://pad.haroopress.com/user.html
6 SublimeText
SublimeText界面簡約大方,定位專業,功能強大,并具有良好的擴展功能。SublimeText是收費軟件,支持windows、蘋果、linux三大操作系統。支持的編程語言有十幾種,并可通過第三方插件無限擴充。
SublimeText默認不能實時預覽,但通過 Markdown Preview 的插件來實現該功能。SublimeText屏幕右邊有一個文檔縮略圖,可以看到文檔全貌。
SublimeText是獨立的軟件,也支持插件方式。
更多介紹及下載:http://www.sublimetext.com/
7 Cmd Markdown
Cmd Markdown是一款不錯的寫作工具,同時也兼顧博客等寫作平臺,國內作業部落出品,同時支持Windows、蘋果、Linux操作系統,也有 Web 在線創作平臺,界面很舒服。
Cmd Markdown是獨立的軟件、也有平臺集成版本。
更多介紹及下載:https://www.zybuluo.com/mdeditor
8 Byword
Byword。一款輕量級的 Markdown 編輯器,比較容易上手,適合新手使用。支持蘋果系列系統,包括臺式機、iPad和iPhone,收費軟件。
Byword是獨立的軟件。
更多介紹及下載:https://bywordapp.com/
9 CuteMarkEd
CuteMarkEd 是一個基于qt5的Markdown 編輯器,開源免費,支持windows、蘋果、linux多種系統平臺,提供實時 HTML 預覽、數學表達式、代碼高亮和PDF導出。
CuteMarkEd是獨立的軟件。
更多介紹及下載:https://cloose.github.io/CuteMarkEd/
10 Dillinger
Dillinger是國外的 Markdown 編輯器,Web在線創作。漂亮強大,支持md、 html、pdf 文件導出,支持Dropbox、Bitbucket、Github、Google Drive、Onedrive 一鍵保存,也可以編寫本地文件。支持實時預覽,跨平臺,瀏覽器打開。
Dillinger是平臺集成工具,不是獨立的軟件。
更多介紹及下載:https://dillinger.io/
11、EpicEditor
EpicEditor 是個嵌入式 JavaScript Markdown 編輯器,可以全屏編輯,在線預覽,自動草稿保存,支持離線等功能。對于開發者有很大吸引力,很容易集成在自己的系統中,并很容易自定義,也支持主題自定義。
EpicEditor屬于插件類的API工具。
更多介紹及下載:http://ww1.epiceditor.com/
12 MarkdownEditor
MarkdownEditor是一款基于瀏覽器的 Markdown 編輯器,雖然他是獨立軟件,但該軟件內嵌一個瀏覽器。功能非常簡單實用、反應速度很快,號稱是Markdown領域的NotePad(記事本)。MarkdownEditor還有拼寫檢查功能。
MarkdownEditor有兩個版本,都是國人開發的,都是開源免費的。
MarkdownEditor是獨立的軟件、也有在線Web集成版。
更多介紹及下載:http://jbt.github.io/markdown-editor/
13 MarkPad
MarkPad是免費開源的 Markdown 編輯器,界面風格與window系統類似,同時只支持Window。支持實時預覽,開放直接保存到你的博客或github的接口,有語法檢查,支持代碼高亮。
MarkPad是獨立的軟件。
更多介紹及下載:http://code52.org/DownmarkerWPF/
14 Marxico
Marxico中文名馬克飛象,有桌面版、Chrome App插件,也支持Web集成版。這款編輯器的特點是可以直接把文本存到印象筆記平臺中,另外還有導出HTML時可以將其中的圖片自動轉成base64保存。其他的實時預覽、語法高亮也都支持。
不過這款軟件是收費的~ ~
Marxico是獨立的軟件、同時有Chrome App插件,也支持Web集成。
更多介紹及下載:http://marxi.co/
實在太困了,就先介紹這么多吧~ ~ ~ (PS:剛接觸寫博客,發現還真是個累活呀:-P)
最后
markdown編輯器產品非常多,以上只是本人接觸過的一些,相信還有很多很好的markdown存在,其實也沒必要全都試一遍,只有最適合自己的,才是最好的。
如果你用過其中的一種,或者你用過其他好用的markdown編輯器,歡迎交流分享。
TTP 基本概念
1. 什么是 HTTP?HTTP 的作用是什么?
HTTP 全稱:HyperText Transfer Protocol ,超文本傳輸協議。
HTTP 從客戶端到服務器端等一系列運作流程提供規范,是目前互聯網上使用的最廣泛的一種規范。
- HTTP 協議用于客戶端和服務器端之間的通信
- 通過請求和相應的交換達成通信
- HTTP 是一種不保存狀態的協議
- HTTP 通過使用 URI 來定位互聯網的資源
2. 什么是 TCP/IP?
- 計算機與網絡設備通信,須基于一定的方法規范來進行。確定通信對象、通信語言選擇、開始結束通信方式、不同操作系統或者硬件之間如何通信,這些都是需要制定的規則協議。
- TCP/IP 協議就是由這些多種互聯網通信相關協議組合而成,HTTP 為期子集。大部分常用的互聯網網絡,均通過 TCP/IP 協議族來進行。
- TCP/IP 協議族常見的協議還包括:TCP、IP、HTTP、FDDI、FTP、DNS、UDP、SNMP 等。
- TCP/IP 也是指 TCP 和 IP 這兩種協議,是在 IP 協議的通行過程中,使用到的協議族的統稱。
3. TCP/IP 協議族分幾層?
TCP/IP 協議族可以分為 4 層,分別是應用層、傳輸層、網絡層和鏈路層。
1. 應用層:應用服務之間的通信協議規范,如 FTP、DNS 和 HTTP 都在這層。
2. 傳輸層:傳輸層對應用層傳輸兩臺計算機之間的數據。傳輸層主要使用以下兩種協議:
- 傳輸控制協議 TCP(數據傳輸的單位是報文段)
- 用戶數據報協議 UDP(數據傳輸的單位是用戶數據報),不保證提供交付的可靠性。
3. 網絡層:網絡層對傳輸層提供的數據包進行傳送。用來處理網絡上流動的數據包,使用無連接的網際協議 IP 和許多種路由選擇協議。網絡層還有另一個任務就是選擇合適的路由。
4. 鏈路層(數據鏈路層):硬件上的處理均在鏈路層的范圍內。如:操作系統、硬件設備的驅動、網卡等。
4. TCP/IP 協議族分層有什么優點?
TCP/IP 協議族分層的優點是:
- 改動方便:如果僅使用一個協議,那么當其中的某一部分發生改變的時候,就需要把整體全部替換掉。
- 設計簡單:使用分層時候,僅需要替換改變的層的內容,只需要把每層之間的接口部分定義規劃好,那么各層內部就可以隨意改變,更加靈活自由,在設計上也簡單很多。
5. TCP/IP 分層與 OSI 分層對比
TCP/IP 協議族按層次分為以下 4 層:應用層、傳輸層、網絡層和數據鏈路層。
OSI 則分為 7 層:應用層、表示層、會話層、運輸層、網絡層、數據鏈路層和物理層。
對應關系如下:
6. 什么是 TCP/IP 通信傳輸流?
通過 TCP/IP 協議通信方式,會遵循分層的順序與對方進行通信
- 發送端的順序是:應用層 -> 傳輸層 -> 網絡層 -> 鏈路層;
- 接受端的順序是:鏈路層 -> 網絡層 -> 傳輸層 -> 應用層。
7. TCP/IP 協議族中的 IP 協議
IP 網際協議處于網絡層,用于傳送數據包。它通過 IP 地址和 MAC 地址將數據包傳送到指定的位置。
其中 IP 地址指明了分配給節點的地址,可變化;MAC 地址指明了所屬網卡的固定地址,不可變化。
IP 之間的通信是依賴于 MAC 地址的,在網絡通信的過程中,根據 ARP (一種地址解析協議)協議,通過 IP 反查出對應 MAC 地址,再通過 MAC 地址來搜索中轉目標。
8. TCP/IP 協議族中的 TCP 協議是什么?
TCP 協議提供可靠的字節流服務,主要是通過采用三次握手的策略來確保傳輸數據的準確性的。
用 TCP 協議將數據包發送之后,它會向對方確認是否成功送達。握手過程中使用了 TCP 的標志(flag)——SYN(synchronize)和 ACK(acknowledgement)。
- 發送端 A 發送 SYN 標志的數據包給信息接收方 B。
- B 收到后數據包之后,回傳 SYN/ACK 標志的數據包,表示確認信息。
- 發送端 A 再回傳一個 ACK 標志的數據包,代表“握手”結束。
- 若在握手過程中某個階段莫名中斷,TCP 協議會再次按照相同順序發送相同的數據包。
9. 請介紹一下 TCP/IP 協議中的 DNS
DNS 全稱為 Domain Name System。
DNS 協議與 HTTP 一樣位于應用層,主要負責將域名和 IP 之間的相互解析。
10. IP、TCP、DNS 和 HTTP 的關系
11. URI 和 URL
- URI (統一資源標識符):用字符串標識互聯網上的某一資源。
- URL (統一資源定位符):表示網絡資源所在的位置。由上可見,URL 是 URI 的一個子集。
12. HTTP 向服務器傳遞信息的方法
方法名稱含義GET(獲取資源)請求訪問已被 URI 標識的資源。響應返回經服務器解析后的內容POST(傳輸實體主題)GET 和 POST 都可以傳輸實體的主題,但一般使用 POST 方法來傳輸。區別在意 POST 的主要目的并不是獲取響應的主體內容。PUT(傳輸文件)用來傳輸文件。將文件內容放到請求報文的主題之中,然后放到請求的 URI 中HEAD(獲得報文首部)HEAD 方法和 GET 方法一樣,但不返回報文主體的部分。用于確認 URI 是否有效及更新資源的時間等。DELETED(刪除文件)用來刪除文件,與 PUT 方法相反。DELETED 根據請求刪除 URI 內指定的資源OPTIONS(詢問支持的方法)查詢根據請求 URI 指定的資源支持方法TRACE(路徑追蹤)讓 Web 服務器端將之前的請求返回個客戶端的方法CONNECT(用隧道協議連接代理)與代理服務器通信時建立隧道,使用 SSL 和 TLS 協議把加密后的通信內容經網絡隧道進行傳輸。
13. 什么是持久連接?為什么要持久連接?
在使用 HTTP 協議建立通信之后,在沒有提出要斷開連接的時候,TCP 將一直保持連接狀態。
持久連接好處是減少了 TCP 連接的重復建立和斷開所造成的的額外開銷,減輕了服務器端的負載。而且減少重復建立連接的時間可以使 HTTP 請求和相應更早的結束,這樣 Web 頁面的加載速度也相應提高了。
14. Cookie 的作用是什么?它是怎樣工作的?
- Cookie 技術將 Cookie 寫入請求信息和響應報文中,以此來控制和管理客戶端的狀態。
- Cookie 是通過由服務器端發出響應報文中的 SetCookie 的首部字段的信息,告知客戶端需要保存 Cookie 的。當客戶端再次發送請求的時候,會在請求報文中加入 Cookie 值。服務器端在接收到帶有 Cookie 值的請求后,就會去查連接請求的來源,對比服務器存儲的記錄,然后得到之前的狀態信息。
15. 什么是 HTTP 報文?
HTTP 協議交互的信息被稱為 HTTP 報文。報文大致可以分為報文首部和報文主體兩塊,兩者由空行(CR+LF)來劃分,報文主體可以不要。
報文首部服務器端或者客戶端需要處理的請求或響應的內容及屬性空行(CR+LF)CR(回車)+ LF(換行)報文主體應被發送的數據(可以不要
1. 客戶端的 HTTP 報文被稱為請求報文
2. 服務器端的 HTTP 報文為響應報文
由上可知,請求報文和相應報文都是由請求行、狀態行、首部字段和其他組成。
16. HTTP 傳輸數據的方式有哪些?
- HTTP 可以直接按照數據的原貌進行傳輸,也可以在傳輸的過程中對數據進行編碼來提升傳輸的速率。但是在提高傳輸速率的同時,編碼操作會占用更多的 CPU 等資源。
- 可以采用壓縮傳輸內容的編碼方式提高傳送速率。采用將主題編碼分割成塊,然后進行編碼傳輸的分塊傳輸編碼形式,這種操作可以提高用戶的使用體驗。
注意:通常報文主體等同于實體主體。但是如果在傳輸的過程中進行編碼操作,實體主體的內容將發生變化,會導致它和報文主體產生差異。
17. 怎樣發送多種數據的多部分對象集合?
- 在 HTTP 報文中使用多部分對象集合時,需要在首部字段里加上 Contenttype。
- 通過字符串 boundary 來切分各類實體,這些實體是由多部分對象集合指定的。
18. 怎樣獲取部分內容的范圍請求?
可以通過首部字段 Range 來指定資源的 byte 的范圍。
1. 1001~2000 字節
?Range:bytes=1001-2000
2. 1001 以后的所有字節
Range:bytes=1001-
3. 從開始到 1000 字節和 2001~5000 的多重范圍
?Range:bytes=0-1000,2001-5000
?針對范圍請求,響應會返回狀態碼為 206 的響應報文。而對于多重范圍的范圍請求,響應會在首部字段 ContentType 標明 multipart/byteranges 后返回響應報文。
19. 什么是內容協商?有哪些類型?
內容協商機制是指客戶端和服務器端就響應的資源內容進行交涉,然后提供給客戶端最為適合的資源。內容協商會以響應資源的語言、字符集、編碼方式等作為判斷的基準。其內容包含在首部以下字段中:Accept、Accept-Charset、Accept-Encoding、Accept-Language、Content-Language。
內容協商包括:服務器驅動協商、客戶端驅動協商和透明協商三種。
- 服務器驅動協商:由服務器端進行內容協商。以請求的首部字段為參考,在服務器端自動處理。但對用戶來說,以瀏覽器發送的信息作為判定的依據,并不一定能篩選出最優內容。
- 客戶端缺東協商:?由客戶端進行內容協商的方式。用戶從瀏覽器顯示的可選項列表中手動選擇。還可以利用 JavaScript 腳本在 Web 頁面上自動進行上述選擇。比如按 OS 的類型或瀏覽器類型,自行切換成 PC 版頁面或手機版頁面。
- 透明協商:是服務器驅動和客戶端驅動的結合體,是由服務器端和客戶端各自進行內容協商的一種方法。
20. 基于 HTTP 的功能追加的協議有哪些?
- 消除 HTTP 瓶頸的 SPDY 協議
- 通過瀏覽器進行全雙工通信的 WebSocket
- 成長了的 HTTP 2.0
- Web 服務器管理文件的 WebDAV
21. 構建 Web 內容的技術有哪些?
- HTML:Web 頁面幾乎都是由 HTML 寫成的。
- 動態 HTML:是指使用客戶端腳本語言將靜態 HTML 變為動態的 HTML 的技術的總稱。例如:客戶端腳本語言 JavaScript 和指定于發生動態變化的 HTML 的 DOM 等。
- Web 應用:如通過 Web 功能提供的應用程序;與 Web 服務器及程序協作的 CGI;因 Java 而普及的 Servletv 等。
- 數據發布格式及語言:如可擴展標記語言 XML;發布更新信息的 RSS 和 Atom;JavaScript 衍生的輕量級易用 JSON 等。
22. HTTP 協議無狀態指什么?怎么才能將狀態保存?
HTTP 協議無狀態在一個會話里面,不同的兩次請求彼此是不了解。
但是通過 Cookie 或者 Session 可以將狀態保存,后續訪問可能利用到前面的信息。
23. GET 和 POST 的區別是什么?
- 從服務器獲取信息一般使用 GET,想服務器發送信息一般用 POST。
- GET 和 POST 數據提交方式不同,GET 通過在 URL 請求后面增加 filed=value 的封裝形式來進行;POST 則利用協議 BODY 來進行數據的封裝。
- GET 傳輸數據量比較小,效率也不高;而 POST 可以傳輸比較大的數據量。
- GET 不安全,可以被外部看見,造成信息泄露的風險,POST 相對來說安全一些。
24. HTTP 2.0 與 HTTP 1.1 的區別
- HTTP 2.0 沒有采用文本格式,采用的是二進制格式。
- HTTP 2.0 采用的是完全多路復用機制,而非有序并阻塞的。
- HTTP 2.0 將報頭進行壓縮,降低了成本。
- HTTP 2.0 服務器主動將響應“推送”到客戶端的緩存里面。
HTTP 狀態碼詳解
1. 什么是 HTTP 狀態碼?
HTTP 狀態碼全稱:HTTP Status Code。表示服務器在響應超文本傳輸協議訪問的時候返回的狀態 3 位數字代碼。例如,當客戶端向服務端進行 HTTP 請求的時候,服務器會返回一個代碼數據來回應請求,這個代碼數據就是: HTTP 狀態碼。
2. 請介紹一下常用的 HTTP 狀態碼?并解釋一下分別表示什么含義
- 200:OK,基于 HTTP 協議的訪問在服務端被正常處理并返回。
- 302:臨時重定向,表示請求的網頁臨時移動到其他的 URI。
- 404:表示服務器上無法找到訪問的資料員。
- 500:表明服務器端訪問響應發生了錯誤。可能是后臺 BUG,也可能是機器故障導致。
3. 狀態的主要類別有哪幾種?分別表示什么含義?
- 1XX Informational(信息性狀態碼): 服務器正在處理當前的請求。
- 2XX Success(成功狀態碼):請求被服務器正確接收,并正確執行。
- 3XX Redirection(重定向狀態碼):需要再次操作,才能完成整個訪問操作。
- 4XX Client Error(客戶端錯誤狀態碼):客戶端的請求出現問題,服務端無法響應(例如,訪問不存在的資源)。
- 5XX Server Error(服務器錯誤狀態碼):服務器內部處理訪問請求的時候出現異常。
HTTP 報文解析
1. HTTP 報文首部包含哪些內容?
HTTP 協議的請求和響應報文中必定包含 HTTP 首部。首部內容為客戶端和服務器分別處理請求和響應提供所需要的信息。
在請求中,HTTP 報文由方法、URI、HTTP 版本、HTTP 首部字段等部分構成。
在響應中,HTTP 報文由 HTTP 版本、狀態碼(數字和原因短語)、HTTP 首部字段 3 部分構成。
2. 介紹一下 HTTP 首部字段,以及構成方式
首部字段的主要作用:給瀏覽器和服務器提供一些必要信息,如報文主體 SIZE、語言類型、認證方式等內容。它是 HTTP 報文的組成要素之一。
首部字段構成方式:由字段名稱和字段值組成,用冒號“:”分隔。例如:Content-type:text/html。首部字段可以有多個值組成。
3. 請介紹一下 HTTP 首部字段的類型有哪幾種
首部字段類型總共分為四類。如下所示:
- 通用首部字段(General Header Fields)
- 請求首部字段(Request Header Fields)
- 響應首部字段(Response Header Fields)
- 實體首部字段(Entity Header Fields)
3. HTTP 協議首部字段
通用首部字段
(請求報文與響應報文
都會使用的首部字段)Date創建報文時間Connection連接的管理Cache-Control緩存的控制Transfer-Encoding報文主體的傳輸編碼方式請求首部字段
(請求報文會使用的首部字段)Host請求資源所在服務器Accept可處理的媒體類型Accept-Charset可接收的字符集Accept-Encoding可接受的內容編碼Accept-Language可接受的自然語言響應首部字段
(響應報文會使用的首部字段)Accept-Ranges可接受的字節范圍Location令客戶端重新定向到的 URIServerHTTP 服務器的安裝信息實體首部字段
(請求報文與響應報文的實體
部分使用的首部字段)Allow資源可支持的 HTTP 方法Content-Type實體主類的類型Content-Encoding實體主體適用的編碼方式Content-Language實體主體的自然語言Content-Length實體主體的的字節數Content-Range實體主體的位置范圍,一般用于發出部分請求時使用
HTTPS 的使命
1. HTTP 的缺點及解決方案
缺點:
- 明文形式通信(未進行加密操作),極可能被盜取數據。
- 沒有驗證訪問者的合法身份,會遇到被偽裝欺騙可能。
- 報文完整性無法進行驗證,所以內容信息會被篡改的可能。
解決方案:
1. 加密處理預防竊聽
- 通信加密:HTTP 協議加密機制缺失,但利用 SSL(SecureSocketLayer,安全套接層)或 TLS(TransportLayerSecurity,安全傳輸層協議)共同作用,加密 HTTP 的傳輸信息。
- 內容加密:HTTP 協議不提供加密操作,因此 HTTP 協議傳輸的數據本身加密,把 HTTP 報文里所含的數據進行加密操作。但數據傳輸的過程中仍有數據被篡改的可能。
2. 使用 SSL 可以驗證對方身份。SSL 除了具備加密處理能力,還使用了稱為證書的方法,可用于確定通信方。
3. 可以使用 MD5 和 SHA1 等散列值校驗的方法,以及用來確認文件的數字簽名方法。
非常可惜的是,以上的一些方法仍然存在很大的風險,如果想要有效地保證信息的安全性,則需要使用 HTTPS。
2. 什么是 HTTPS
HTTP + 加密 + 認證 + 完整性保護=HTTPS
1. HTTP 加上加密處理和認證以及完整性保護后即是 HTTPS
2. HTTPS 是身披 SSL 外殼的 HTTP
3. 什么是相互交換密鑰的公開密鑰加密技術
公開密鑰加密處理起來比共享密鑰加密方式更為復雜,因此若在通信時使用公開密鑰加密方式,效率就很低。
1. 使用公開密鑰加密方式,安全地交換在稍后的共享密鑰加密中要使用的密鑰
2. 確保交換的密鑰是安全的前提下,使用共享密鑰加密方式進行通信。
4. 請介紹一下 HTTPS 的安全通信機制
- 利用對稱秘鑰原理,服務器端生成對稱秘鑰,私鑰自己保存,公鑰發送到外部。
- 客戶端向一個權威的服務器檢查證書的合法性,如果合法,客戶端生成隨機數,這個數字就是通信的秘鑰,用公鑰加密這段隨機數,然后發送到服務器。
- 服務器使用密鑰解密獲取對稱密鑰,然后,雙方就可以安全通信了。
5. HTTP 與 HTTPS 的區別是什么?
- 安全性質不同:HTTP 是不安全的,而 HTTPS 是安全的。
- URL 開頭不同:HTTP 以 http:// 開頭,HTTPS 以 https:// 開頭。
- 標準端口不同:HTTP 標準端口是 80 ,HTTPS 的標準端口是 443。
- 加密要求不同:HTTP 無需加密,而 HTTPS 對傳輸的數據進行加密。
- 證書要求不同:HTTP 無需證書,而 HTTPS 需要 SSL 證書。
安全及漏洞全面解析
1. 什么是 SQL 注入?
SQL 注入是一種注入攻擊。攻擊者通過將破壞性 SQL 代碼進行數據庫查詢,使攻擊者能夠完全控制數據庫資源。
2. 如何防止 SQL 注入攻擊?
- 不要使用動態 SQL,使用完整的語句和參數化方式來查詢。
- 合理設置數據庫的權限。
- 禁止直接向用戶顯示數據庫錯誤。
- 對訪問數據庫的 Web 服務,使用 Web 應用程序防火墻。
3. 什么是 XSS?
XSS 全稱:跨站腳本攻擊(Cross Site Scripting)。是將前端腳本代碼插入 Web 頁面中,當用戶瀏覽頁面時,會執行嵌套在 Web 頁面里面的腳本代碼,從而達到攻擊用戶的目的。
XSS 類型包括:
- 存儲型 XSS:存入了數據庫,再取出來時導致的 XSS
- 反射型 XSS:在網址 URL 后輸入 XSS 代碼,如 <script> alert(1)</script>,然后訪問時導致 HTML 頁面加載這段代碼即可達到彈框效果。
4. 如何防止 XSS 漏洞
- 在信息提交或者 url 參數傳遞前,對需要的參數進行過濾
- 過濾用戶輸入,檢查用戶輸入的內容中是否有非法內容。如 <>(尖括號)、""(引號)、''(單引號)
5. 請介紹一下 CSRF 是什么?
CSRF:Cross-site request forgery 跨站請求偽造。
cookie 是網站利用來識別用戶的,用戶成功登陸之后瀏覽器就會得到一個 cookie 來標識其身份,在不關閉瀏覽器或者退出登錄,以后訪問這個網站會帶上這個 cookie。
- 登錄某一受信任網站 X,并生成本地 Cookie。
- 如果此時用戶也訪問了網站 B,訪問者在網站 A 的數據就會被 B 使用用戶 cookie 假冒更新。
6. CSRF 怎么防御?
- 驗證碼與二次驗證
- 對請求的 referer 進行檢測
- 添加隨機 token 校驗
- 本樣式對齊文本text-align屬性用于指定文本塊的對齊方式,可選值包括: 1)start:內容對齊開始邊界,默認; 2)end:內容對齊結束邊界; 3)left:內容左對齊; 4)right:內容右對齊; 5)center:內容居中對齊; 6)justify:內容兩端對齊。當text-align屬性使用了justify值時,可以使用text-justify屬性指定文本添加空白的方式,這個屬性...
- 了解了包的概念,就可以系統的介紹Java中的訪問控制級別。在Java中,針對類、成員方法和屬性提供了四種訪問級別,分別是private、default、protected和public。 權限訪問修飾符(權限從大到小依次往右排) public(公共) protected(受保護) default(缺省) private(私有) 同一個類 √ √...
- Rust 提供了代碼封裝的機制。可以通過crate (等同于Java中的package)創建相對獨立的module模塊,模塊中封裝了可以重復使用的功能函數。當創建了自己的 lib 庫或者要使用第三方的庫的時候(這些庫就是一些事先寫好的crate)需要將這些庫中的module 模塊引用到當前的環境中。Rust提供了以下幾種引用方式:一、使用 extern crate在使用這些Module的文件中,通過...
- 填空題: 他______犧牲生命_______出賣組織? 據數據統計,不同年代的同學回復的最多的是….. 60后,他寧可犧牲生命,也不出賣組織。 70后,他害怕犧牲生命,所以出賣組織。 80后,他與其犧牲生命,不如出賣組織。 90后,他即使犧牲生命,也要出賣組織。 00后,他白白犧牲了生命,忘了出賣組織。 上邊的案例,引發了大家對”自我與企業關系的思考”. 能力與欲望...
- 歷屆試題 國王的煩惱 時間限制:1.0s 內存限制:256.0MB 問題描述 C國由n個小島組成,為了方便小島之間聯絡,C國在小島間建立了m座大橋,每座大橋連接兩座小島。兩個小島間可能存在多座橋連接。然而,由于海水沖刷,有一些大橋面臨著不能使用的危險。 如果兩個小島間的所有大橋都不能使用,則這兩座小島就不能直接到達了。然而,只要這兩座...
- go test命令參數問題在使用go test對go代碼進行單元測試的時候,遇到關于命令參數的問題,google了一下,沒有找到很好的說明,其實就是一些細節而已。問題是這樣的,在進行單元測試的時候,我希望輸入一些命令行參數來控制程序的運行。 參考go官方文檔,只需要在go test后面加上-args和參數就可以了 例如 go test -args -classpath E:\testcase...
- 阿里云OSS-使用經驗總結,存儲,賬號-權限,分頁,縮略圖,賬號切換最近項目中,需要使用云存儲,最后選擇了阿里云-對象存儲服務OSS。總的來說,比較簡單,但是仍然遇到了幾個問題,需要總結下。1.OSS總的使用介紹 https://help.aliyun.com/document_detail/oss/sdk/java-sdk/manage_object.html?spm=5176.docoss/...
- WEB應用圖片的格式,以及各自的特點和優化(一) by FungLeo前言12年前我入行三天.用table布局做了一個非常粗糙的網頁.我說了一句話,”網頁就是表格加文字加圖片,圖片分兩種,插入圖片和背景圖片”.這句話在今天看來,當然是一個笑話.但是當時我說出這句話的時候,當時的那些前輩都非常認可我的總結,并且認為我很有從事網絡發展的潛力啊.哎,要不是他們的鼓勵,說不定我早轉行了……扯遠了.說回正題,...
- 1. 單表數據的導出針對單表數據的導出操作,MongoDB 提供了 mongoexport 命令。mongoexport 既可以將數據導出為 CSV 格式的文件,也可以導出 JSON 格式的文件。這兩者之間的區別是:JSON 是 mongoexport 默認的導出格式,不需要指定,而要導出 CSV 格式的話需要明確指定;導出 CSV 格式必須顯式指定各屬性名,而導出 JSON 格式不需要。由此可見...
- 商業智能對于中小企業來說,由于其高昂的費用和運行維護技術水平要求高,往往難以承受,商業智能SAAS系統平臺+模塊的創新模式的出現能幫助中小企業走上商業智能之路。...
- stack.sh給出了一個非常好的例子,關于學習openstack創建 1.檢查devstack文件,檢查bash4.2以上,檢查用戶,不能是root2.準備環境,導入函數3.檢查local.conf和localrc是否都存在,如果存在使用localrc4.檢查是否已經運行devstack5.代理設置和禁用無效服務6.配置sudo7.配置distro庫8.配置目標目錄,創建目標目錄9.配置主機、日...
- 博客地址:http://blog.csdn.net/FoxDave本文介紹如何利用SharePoint客戶端對象模型(.NET)逐級獲取Office 365網站中List的內容,僅僅是示例,沒有講究太多東西。代碼如下:ClientContext ctx=new ClientContext(""); ctx.Credentials=new SharePointOn...
- 題外話Atom,風風雨雨走過一年多了.,目前最新版本是V1.7.0 .社區還是相當活躍;體驗也改善了很多;但是性能上還是欠缺;今天我再來介紹自己常用的一款插件git-control插件介紹 官方介紹頁面 作者: jacogr Github地址 我的介紹 就是命令行的GUI版本,,有些類似sourcetree,但是不如它強大,日用滿足使用在編輯器下加載git版本的工作目錄;工具默認啟用快捷鍵...
- 安裝devstack后,如果沒有設置參數,執行openstack命令是不成功的。1.登錄到horizon頁面,使用admin登入,進入project->compute-> Access&Security -> API Access,記錄下Service Endpoint。或選擇download OpenStack RC File按鈕,下載demo-openrc.sh文件2.將demo-openrc...
- 對于這樣的問題,看到第一眼就是暴力破解,所以也就遞歸找到所有情況,再篩選出合格的小明被劫持到X賭城,被迫與其他3人玩牌。 一副撲克牌(去掉大小王牌,共52張),均勻發給4個人,每個人13張。 這時,小明腦子里突然冒出一個問題: 如果不考慮花色,只考慮點數,也不考慮自己得到的牌的先后順序,自己手里能拿到的初始牌型組合一共有多少種呢?思路: 首先無論怎么取,手牌為13張的時候結束.也就是遞歸結束標...
- 網紅和粉絲經濟,是最近幾年流行起來的概念。 截至目前,有一些初步的認識,整理成文。 粉絲,最早是明星的跟隨者比較多。 我的理解是,對于一個人物、動物、運動等,有著共同的興趣,從而建立多個人和一個人之間的關系,比如粉絲和明星。 粉絲經濟,大獲成功的標志是,雷軍和小米科技。在創業早期,就把粉絲經濟和社交傳播結合在一起,低成本地實現了全網營銷。從此以后,各大手機廠商等很多領域的企業,都...
- 關于android端apk退出方式的設計,現在大體只有下面幾種:1,有退出和取消按鈕;2,一定時間內兩次返回為退出;3,一次返回就是退出。首先可以看到這兩個用按鈕的,退出都在左側,設計者肯定沒有看過十年前雅虎研究院出的web端設計指導,下一步的操作一定是在右側,而返回上一步的操作是在左側。但是到了移動端應該考慮用戶是左手還是右手使用,也就是說,如果是左手使用,這個位置設計沒有問題,反之就不用說了。...
- 寫在最前:本文主要描述在網站的不同的并發訪問量級下,Mysql架構的演變可擴展性架構的可擴展性往往和并發是息息相關,沒有并發的增長,也就沒有必要做高可擴展性的架構,這里對可擴展性進行簡單介紹一下,常用的擴展手段有以下兩種Scale-up : 縱向擴展,通過替換為更好的機器和資源來實現伸縮,提升服務能力Scale-out : 橫向擴展, 通過加節點(機器)來實現伸縮,提升服務能力對于互聯網的高并...
- angular.js中,指令是最基礎的也是最重要的工具之一。angular.js指令指的是以ng為前綴的HTML屬性。在之前的ng-app、ng-model等,都屬于指令。 angular.js中的基本指令包括如下內容: · 1.ng-app/ng-model ng-app指令用于聲明angular,js的作用范圍,ng-model用于聲明模型。這些在之前都已經進行過詳細介紹。 2.ng-...
- java編碼 當你的字節序列是某種編碼時,這個時候想把字節序列變成 字符串,也需要用這種編碼方式,否則會出現亂碼 文本文件就是字節序列 可以是任意編碼的序列,如果在中文機器上直接創建文本文件,那么該文本文件 只認識ANSI編碼 案例: public class Bianma { public static void main(Strin...
- 調試JDK源碼-一步一步看HashMap怎么Hash和擴容調試JDK源碼-ConcurrentHashMap實現原理調試JDK源碼-HashSet實現原理調試JDK源碼-調試JDK源碼-Hashtable實現原理以及線程安全的原因 ConcurrentHashMap線程安全的總結是我從源碼分析出來的:ConcurrentHashMap所謂線程安全是哈希沖突的時候新增的節點是線程安全的,而 Conc...
- 對于后臺系統的搜索進行UI自動化,主要是比對頁面查詢結果是否與預期一致(即數據庫查詢結果) search.py# -*- coding:utf8 -*- import HTMLTestRunner import time import unittest import public from selenium import webdriver class Search(unittest.TestCa...
- ajax 的全稱是Asynchronous(異步的意思) JavaScript and XML,是一種創建交互式網頁應用的網頁開發技術 ajax技術的流行得益于google的大力推廣,正是由于google產品對ajax技術的廣泛應用,使得ajax流行起來了。 Ajax其核心有JavaScript、XMLHTTPRequest、DOM對象組成,通過XmlHttpRequest對象來向服務器發異步請求,從服務器獲得數據,然后用JavaScript來操作DOM而更新頁面。這其中最關鍵的一步就是從服務器獲得請...
- 一、SpringMVChttp://blog.csdn.net/evankaka/article/details/45501811Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基于請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,Spring Web MVC也是要簡...
- 概念: 優化策略:字段選擇性 選擇性較低索引 可能帶來的性能問題索引選擇性=索引列唯一值/表記錄數;選擇性越高索引檢索價值越高,消耗系統資源越少;選擇性越低索引檢索價值越低,消耗系統資源越多;查詢條件含有多個字段時,不要在選擇性很低字段上創建索引可通過創建組合索引來增強低字段選擇性和避免選擇性很低字段創建索引帶來副作用;盡量減少possible_keys,正確索引會提高sql查詢速度,過多索引...
- 一. 什么是Spark? Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的并行計算框架,Spark基于map reduce算法實現的分布式計算,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是Job中間輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需...
- 相比之前的增改查,刪除就顯得簡單的多了。 這里的request的type為delete,刪除成功的status為204,404則是要刪除的記錄不存在 var id='BAD90A95-7FEA-E511-9414-ADA183AB6249'; $.ajax({ async: false, type: "DELETE ", co...
- 關于JPush極光推送是國內的服務廠商提供的一站式push服務(同時支持iOS、android),后面也加入了即時通訊的能力供app使用。致力于打造簡單、可靠、價格有競爭力的服務(簡單功能全免費,高級版才收費),讓應用開發商可以聚焦業務開發,push相關的技術實現全部通過極光推送來解決,僅需調用極光推送的api即可。正因為如此,開發者小伙伴們對其的評價相當不錯。筆者的app新增了從服務器往移動客戶端...
- Mapreduce初析 Mapreduce是一個計算框架,既然是做計算的框架,那么表現形式就是有個輸入(input),mapreduce操作這個輸入(input),通過本身定義好的計算模型,得到一個輸出(output),這個輸出就是我們所需要的結果。 重點就是這個計算模型的運行規則。在運行一個mapreduce計算任務時候,任務過程被分為兩個階段:map階段...
- Jquery對象常用的方法:$(”p”).addClass(css中定義的樣式類型); 給某個元素添加樣式 $(”img”).attr({src:”test.jpg”,alt:”test Image”}); 給某個元素添加屬性/值,參數是map $(”img”).attr(”src”,”test.jpg”); 給某個元素添加屬性/值 $(”img”).attr(”title”, function(...