原创 第九章:泛型

泛型類型參數 類型參數約束:限制作爲(泛型)類和(泛型)函數的類型實參的類型 如果把一個類型指定爲泛型類型形參的上界約束,在泛型具體的初始化中,其對應的類型實參就必須是這個具體類型或者是它的子類型。 指定多個約束:使用關鍵字whe

原创 竟然還有數據運營?

前言 昨天收到友盟的一份郵件,裏面是介紹一場關於數據分析大賽的報名活動。活動的詳情請點擊這裏:https://info.umeng.com/detail?id=116&&cateId=1?utm_source=pcedm 恰巧的是最

原创 第八章:高階函數:Lambda作爲形參和返回值

聲明高階函數 高階函數定義:是以另外一個函數作爲參數或者返回值的函數;在Kotlin中可以用lambda或者函數引用來表示函數; 任何以lambda或者函數引用作爲參數的函數,或者返回值爲lambda或者函數引用的函數或者兩者

原创 第七章:運算符重載及其他約定

重載算術運算髮 重載運算符需要使用關鍵字: operator , 表明該函數作爲相應的約定來實現; Kotlin限制了可以重載的運算符 注意: 不要求兩個運算數的類型相同; 不會自動支持交換性(1.5 * p & p *1.5)

原创 第六章:類型系統

可空性(空安全) 幫助解決NullPointerException , 解決問題的方法:把運行時錯誤轉變成編譯期錯誤 ; Kotlin通常要求你在構造方法中初始化所有屬性,如果某個屬性是非空類型,你就必須提供非空的初始化值,否則你就

原创 第五章:Lambda編程

Lambda表達式和成員引用 Lambda本質上是可以傳遞給其他函數的一小段代碼 ; 函數式編程提供了另外一種解決問題的方法:把函數當作值 來對待; Lambda和集合 maxBy{} 指定比較哪個值找到最大元素,需要一個參數:一

原创 第四章:類、對象和接口

定義類繼承結構 接口的聲明:關鍵字: interface ,可以有一個默認實現,只需要提供方法體即可; 繼承(實現)使用:符號,一個類可以實現任意接口,但只能繼承一個類(與Java相同);override修飾符用來標註被從重寫的父類

原创 第七章:確保web安全的HTTPS

HTTP的缺點 通信使用明文(不加密),內容可能會被竊聽; 不驗證通信方的身份,因此有可能遭遇僞裝; 無法證明報文的完整性,所以有可能已遭篡改; 這些問題不僅在 HTTP 上出現,其他未加密的協議中也會存在這類問題。 TCP/

原创 第九章:基於HTTP功能的追加協議

HTTP存在的問題: 一條連接上只可發送一個請求; 請求只能從客戶端開始。客戶端不可以接收除響應以外的指令; 請求 / 響應首部未經壓縮就發送。首部信息越多延遲越大; 發送冗長的首部。每次互相發送相同的首部造成的浪費較多; 可任意選

原创 第十一章:Web 的攻擊技術

針對 Web 應用的攻擊模式 主動攻擊 主動攻擊(active attack)是指攻擊者通過直接訪問 Web 應用,把攻擊代碼傳入的攻擊模式。由於該模式是直接針對服務器上的資源進行攻擊,因此攻擊者需要能夠訪問到那些資源。 主動攻擊

原创 第八章:確認訪問用戶的身份認證

何爲認證 計算機本身無法判斷坐在顯示器前的使用者的身份。進一步說,也無法確認網絡的那頭究竟有誰。可見,爲了弄清究竟是誰在訪問服務器,就得讓對方的客戶端自報家門。就算正在訪問服務器的對方聲稱自己是ueno,身份是否屬實這點卻也無從談起

原创 第十章:構建 Web 內容的技術

Web 頁面幾乎全由 **HTML (HyperText Markup Language,超文本標記語言)**構建 設計應用 CSS: **CSS(Cascading Style Sheets,層疊樣式表)**可以指定如何展現 HT

原创 第六章:HTTP首部

HTTP 協議的請求和響應報文中必定包含 HTTP 首部。 請求報文由方法 、URI 、HTTP 版本 、HTTP 首部字段等部分構成。 響應報文由 HTTP 版本、狀態碼(數字和原因短語)、HTTP 首部字段 3 部分構成。

原创 《Kotlin實戰》第三章:函數的定義與調用

Kotlin沒有采用自己的集合類,而是採用標準的Java集合類; 命名參數 :調用一個Kotlin定義的函數時,可以顯示地表明一些參數的名稱(如果指明瞭一個參數的名稱,爲了避免混淆,那它之後的所有參數都要表明名稱) 默認參數值:在

原创 第五章:與HTTP協作的web服務器

HTTP/1.1 規範允許一臺 HTTP 服務器搭建多個 Web 站點(利用了虛擬主機(Virtual Host,又稱虛擬服務器)),即使物理層面只有一臺服務器,但只要使用虛擬主機 的功能,則可以假想已具有多臺服務器; HTTP 通