原创 劍指:鏈表中的倒數第k個結點

題目描述 輸入一個鏈表,輸出該鏈表中倒數第k個結點。 思路:兩個指針相隔k-1個結點,同時前進,當第一個的指針到達尾結點時,第二個指針指向的節點即是倒數第K個結點 ListNode* FindKthToTail(ListNode

原创 劍指:跳臺階與變態跳臺階

題目描述 一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。 思路:採用分治法,本次跳的跳法等於他的前一步和前兩部的跳法之和,運用遞歸求解,即和斐波那契數列一樣 int jumpFloor

原创 劍指:斐波納契數列動態規劃求解

題目描述 在數學上,斐波納契數列以如下被以遞歸的方法定義:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*),現在要求輸入一個整數n,請你輸出斐波那契數列的第n項。 n<=39 思路1:迭代法

原创 CocoaPods安裝和使用教程

CocoaPods是什麼? 開發iOS應用時,會經常使用到很多第三方開源類庫,比如JSONKit,AFNetWorking等等。可能某個類庫又用到其他類庫,所以要使用它,必須得另外下載其他類庫,而其他類庫又用到其他類庫,“子子孫孫無窮盡

原创 劍指:矩形覆蓋

題目描述 我們可以用2*1的小矩形橫着或者豎着去覆蓋更大的矩形。請問用n個2*1的小矩形無重疊地覆蓋一個2*n的大矩形,總共有多少種方法? 思路: 第一塊有兩種方式:橫着放和豎着放 橫這放對應爲發f(n-2); 豎着放下一

原创 iOS 沙盒目錄結構解析

原文地址:http://blog.csdn.net/wzzvictory/article/details/18269713 出於安全考慮,iOS系統的沙盒機制規定每個應用都只能訪問當前沙盒目錄下面的文件(也有例外,比如系統通訊錄能

原创 iOS 多線程與GCD

進程:系統中正在運行的一個程序,進程之間是相互獨立的,每個進程都有屬於自己的內存空間。比如手機中的 微信 應用和 印象筆記 應用,他們都是iOS系統中獨立的進程,有着自己的內存空間。 線程:進程內部的任務執行路徑,可簡單理解爲 一個程

原创 iOS 最詳細清晰的NSTimer定時器與內存泄漏剖析

iOS NSTimer與內存泄漏NStimer的基本用法內存泄漏解除循環引用 NStimer的基本用法 NSTimer有如下兩種基本的使用方式: 1. 創建對象並加入到當前的runloop裏 self.timer = [N

原创 iOS MVC和MVP的項目重構總結

iOS中的MVC和MVP Cocoa版本的MVC 根據官網上的描述, Cocoa中的MVC是這樣的: Model Objects Encapsulate Data and Basic Behaviors View Obj

原创 《MySQL必知必會》筆記一 數據庫入門及數據檢索

數據庫是保存表和其他SQL結構的容器 客戶機--服務器軟件,服務器部分負責所有的數據訪問和處理,運行在數據庫服務器上;關於數據的增刪、更新等的請求都由服務器軟件完成,這些請求來自運行客戶機的計算機;客戶機是與用戶打交道的軟件; 表由行和列

原创 iOS 內存緩存和磁盤緩存

在項目中我們難免會用到一些緩存方式來保存服務器傳過來的數據,以減少服務器的壓力。 緩存的方式分爲兩種分別爲內存緩存和磁盤緩存,內存緩存速度快容量小,磁盤緩存容量大速度慢可持久化。常見的內存緩存框架有NSCache、TMMemoryCa

原创 原生、混合、react-native應用對比分析

原生開發、純網頁開發(H5開發)/混合開發(H5+原生)、React-Native開發 原生開發是系統自帶的app開發方式,也是大部分人最熟悉app開發的技術,如android、ios、wp。H5開發是Html5開發的app,本質上運

原创 iOS UITableView優化技巧

UITableView的簡單認識 UITableView最核心的思想就是UITableViewCell的重用機制。簡單的理解就是:UITableView只會創建一屏幕(或一屏幕多一點)的UITableViewCell,其他都是從中取出

原创 iOS 內存管理

軟件運行時會分配和使用設備的內存資源,因此,在軟件開發的過程中,需要進行內存管理,以保證高效、快速的分配內存,並且在適當的時候釋放和回收內存資源。一、Objective-C內存管理的對象IOS開發中,內存中的對象主要有兩類,一類是值類型,

原创 iOS NSObject中forwardInvocation消息重定向

NSObject是大多數系統 api的基類,現在介紹一下它的forwardInvocation消息重定向功能。 在obj-c中我們可以向一個實例發送消息,實例收到消息後會進行一些處理。比如我們想調用一個方法,便向這個實例發送一個消息,