原创 Java基本功之i++、i--、++i、--i

今天敲代碼的時候被基礎給擊倒了(難受 while (i < j) { res = height[j] > height[i] ? Math.max(res, he

原创 GitHub源碼學習筆記之TableView(一)

寫在前面: 最近發現一個很酷的開源項目,正好自己也打算寫一個TableView,但是。。。寫代碼哪有抄代碼爽!所以我決定來學習一下大佬的代碼(先貼出來Github地址---->TableView) 學習第一步,先看基本架構圖: 按照圖上

原创 LeetCode刷題記錄 Z字型變換

 下面是我在LeetCode中看到的題目,然後自己寫的解決方法 /** * Z字型變化 * 原字符串“LEETCODEISHIRING” * after-> * L C I

原创 算法學習---貪心算法

想通過這篇博客來分享一下學習貪心算法和動態規劃的過程 首先什麼是貪心算法? 百度百科給出的釋義是:貪心算法(又稱貪婪算法)是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,他所做出的是在某種意義上的局

原创 Android Handler知識學習記錄(一)Handler的postDelayed和postAtTime

//Handler中的源碼 public final boolean postDelayed(Runnable r, long delayMillis) { return sendMessageD

原创 Android環境下OpenGL ES的學習

寫在前面:我也是OpenGL的初學者,本篇是作爲一個學習筆記來寫的。 首先學習一下關於OpenGL中的重要概念:矩陣 你做了一個物體想放在空間某一個座標上,需要一個World矩陣吧?然後你需要一個攝像機來拍攝這個物體,讓這個物體可見,對吧

原创 Android View.getLocationOnScreen的作用

Android View.getLocationOnScreen 記錄一下getLocationOnScreen方法的作用 /** * <p>Computes the coordinates of this v

原创 java中Matcher類的find()和matches()的區別

String str = "m222"; Pattern p = Pattern.compile("[0-9]+");//0至9,出現一次或多次 Matcher m = p.matcher

原创 LeetCode解題記錄之隊列最大值

題目: 請定義一個隊列並實現函數 max_value 得到隊列裏的最大值,要求函數max_value、push_back 和 pop_front 的均攤時間複雜度都是O(1)。 若隊列爲空,pop_front 和 max_value 需要

原创 Android之AlertController的源碼學習記錄

 這裏節選了AlertController的源碼,它是AlertDialog.Builder中非常重要的工具類,主要作用是根據Builder中配置好的參數來生成對應的Dialog。 我節選下面這段代碼的原因就是因爲我們通過AlertDia

原创 Android中的Gradle知識學習記錄(一)

目前Android Studio創建項目的時候都是依賴於Gradle的,每個項目都有兩個build.gradle,一個是app.gradle另一個是項目gradle。 項目gradle就是用來配置整個項目的基礎資源引用,包括gradle版

原创 Android原生Dialog的使用

 原文鏈接 /** * 兩個按鈕的 dialog */ private void showTwo() { builder = new AlertDialog.Builder(this).se

原创 在Android開發中不要再用new Thread的方式開啓線程啦

正如標題所言,如果直接使用new Thread的方法創建一個線程,很大概率就會導致內存泄漏。因爲一個內部類始終會持有外部類的引用,如果這個內部類恰好是一個Thread對象,它拿着外部類的引用跑在另一個線程中,這就很容易導致外部類在應該釋放

原创 java中volatile關鍵字的作用和原理

在之前的一篇博客中挖過坑,今天來填一下。之前挖坑的博客 在那篇博客中,我提到了volatile關鍵字,它的作用比較和synchronized類似,但又區別很大。。。要理解它就得要從java中的內存管理講起了。 在java虛擬機的內存模型中

原创 Dialog的彈出位置控制

Dialog一般出現都是屏幕中心,但有的時候我們希望它能在屏幕左側,或者右側亦或者是屏幕頂部。這時候我們就需要用的Dialog.getWindow().getAttributes()方法啦 dialog = new Dialog(get