Time of Update: 2018-12-05
對於一些介面,我們應該有一些不同的狀態。應該有一些開始性抽象方法,如startXXX。應該有一些結束性的抽象方法,如finishXXX一些特別的事件,應該有一些回調,如updateXXX對於不同性質的東西,可以提供不同的bind方法例子:在Launcher裡,載入應用程式的資訊,提供了如下的介面:public interface Callbacks { public boolean setLoadOnResume(); public int
Time of Update: 2018-12-05
//============================================================================// Name : InsertSort.cpp// Author : jue// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//==================
Time of Update: 2018-12-05
1.使用log列印感興趣的相關資訊。2.列印方法的調用棧package com.jue.test;public class TestMain {public static void main(String[] args) {test();}private static void test() {System.out.println("test start");new Exception().printStackTrace();System.out.println("test end");}}3.
Time of Update: 2018-12-05
代碼重構-尋找壞味道本文參考了一下書籍:《重構-改善既有代碼的設計》《重構手冊》1. 重複的代碼a) 封裝成類,使用組合方式。b) 封裝成方法,通常是在同一類中。c) 參數少的方法調用參數多的代碼,並賦予預設值。d) 提取公用基類,把共同的代碼放到父類。2. 過長a) 方法i. 提取子方法。ii. 移動這個方法動作外的函數到外面。b) 類i. 提取類(一起變化的,邏輯上有依賴的變數封裝在一起)ii. 考慮move method來搬移不屬於該類的方法。c) 參數列i. 封裝成一個代表參數的對象。i
Time of Update: 2018-12-05
此題摘自<<c語言範例開發大全>>一個球從100米的高度自由落下,每次落地後反跳回原高度的一半再落下,求他在第10次落地的時候,共經過多少錢。1.已知要點:第一次落下時候經過的距離。2.上次的落下距離跟下一次的落下距離有一定關係。package com.jue.falldown;public class TestFallDown {/** * @param args */public static void main(String[] args) {// TODO
Time of Update: 2018-12-05
簡單原廠模式的一些基本知識本文主要參見自《Java與模式》一、UML類圖表示如下二、角色如下1.Product介面:a.含有具體產品的共有介面。2.ProductA,ProductBa.工廠類所建立的這個角色的執行個體。3.Factroy:a.簡單原廠模式的核心。b.工廠類在用戶端的直接調用下建立產品對象。三、基本代碼實現如下:1.Product介面:package com.jue.dp;public interface Fruit {void grow();void
Time of Update: 2018-12-05
看王擇佑老師的JNI視頻,學習總結的一些基礎知識。1.JNIEnv通過JNIEnv的指標能夠對Java端的代碼進行操作:a.建立Java對象.NewObject/NewString/New<Type>Arrayb.調用Java對象的方法。Call<Type>Method/CallStatic<Type>Methodc.擷取及設定Java對象的屬性。Get/Set[Static]<Type>Method2.JNI中通常用JType指代Java環境中的
Time of Update: 2018-12-05
1.結束條件:當指向無序序列的索引大於數組的長度-1的時候。java實現package com.jue.insertsort;public class TestInsertSort {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stubint data[] = { 4, 3, 5, 6, 1, 8, 7, 9, 2 };insertSort(data, 0);}
Time of Update: 2018-12-05
這是Launcher的一個例子,在Package改變的時候,通知更新訊息。主線程收到事件開啟額外線程處理事情處理完回到主線程,更新UI查詢的時候,只做查詢相關的,修改的時候,只做修改相關的1.當事件發生的時候,onReceive收到if (Intent.ACTION_PACKAGE_CHANGED.equals(action) || Intent.ACTION_PACKAGE_REMOVED.equals(action) ||
Time of Update: 2018-12-05
我們的工程中會有很多工具類,工具類通常有如下的特點。工具類的方法大多是靜態方法。(使用的過程中,不需要new建立對象)構造方法應該是private的,做到一種強制性的非new建立 ,而是通過類名直接調用。如PackgeUtils.getPackageInforation();方法中需要的變數如Context,是通過參數傳入,非屬性(因為在靜態方法中,需要靜態屬性,靜態屬性會引用當前對象,阻止了記憶體回收)。類名通常是XXXUtils一個節選例子如下:package
Time of Update: 2018-12-05
Android Message實現處理大致如下涉及到的幾個問題Message的資料結構:通過next成員,保持一種鏈表的連結關係// sometimes we store linked lists of these things/*package*/ Message next;pool的處理形式:就是一個靜態節點,由於next的鏈表結構,能夠保持一種連結。其中sPool總是指向最上面的meesage pool中最上面的message對象。private static Message sPool;
Time of Update: 2018-12-05
對於重載的方法,可以使用參數少的去調用參數多的(多出來的參數,使用預設值代替)。代碼的重用性,減少了冗餘的code單需要改動的時候,只需要改動參數最多的實現,而不是改動每一個方法實現。無論從代碼規模還是清晰度,都有很大提高。一個例子:public class CellLayout extends ViewGroup { public CellLayout(Context context) { this(context, null); } public
Time of Update: 2018-12-05
通常情況通常程式的UI不太複雜,我們會直接載入這些UI資訊複雜的UI載入的元素就相對多一些。載入的資料相對多。因為UI元素和資料元素都比較多,載入的時間相對多。可視者優先載入不是預設的載入順序,而是有選擇的載入一些首先使用者看到的UI,再去載入暫時沒有看到的。例如1:當Launcher啟動的時候,在案頭上會有預設的5個螢幕的widget
Time of Update: 2018-12-05
本文參考了http://wenku.baidu.com/view/8de1a06b011ca300a6c390d2.html1.String類的對象a.一旦建立就不能改變。b.如果把一個引用的對象賦一個新值,只是將新的引用指向了一個新的對象,舊的對象依然沒有變。(也就是每次賦一個新值都建立了新的對象)2.StringBuffer, StringBuilder:a.對象的內容是可以修改的,每次操作都會對對象本身進行操作,而不是產生新的對象。3.下面是一個類的測試package
Time of Update: 2018-12-05
通常以onXXX開頭的方法是被回調的主動調用的通常不會用on開頭。各種listener,當事件發生的時候會接受到回調。諸如Button.OnClickListener,實現這個介面的,需要實現onClick抽象方法,當發生onClick事件的時候,會被調用。package android.view;public class View {public interface OnKeyListener {boolean onKey(View v, int keyCode, KeyEvent
Time of Update: 2018-12-05
定義:當資料量比較大的時候,我們把資料的查詢和處理分開,保持資料操作的整潔,方法功能的確定性。例如:Launcher load和bind資料的時候,可以在load的過程中執行bind,但是在這個時候,資料量比較大,代碼寫在一起比較混亂複雜。private void loadAndBindWorkspace() { // Load the workspace if (!mWorkspaceLoaded) { loadWorkspace();//這裡只做load的操作
Time of Update: 2018-12-05
Mat工具一、圖示1.餅狀圖:反應的大的對象的佔用的retainedsize。a.可以反映出相關對象所在的類,大小,以及classloader。2.柱狀圖:根據不同的類類型的執行個體個數,按執行個體的數目多少列出。a.根據不同的類類型來列出所佔用的大小。比如int[]類型的大小佔用。b.通過listobjects->with incoming
Time of Update: 2018-12-05
1.記錯公交車時間:2013-07-21事件:本應該坐966公交車,結果坐的是996公交車。結果:到達地離目的地差很遠,還需要朋友家人去接。原因:馬虎影響:給朋友帶來了麻煩2.在32系統的ubuntu上安裝64位的軟體時間:2013-07-17事件:在ubuntu上安裝java及eclipse都是安裝的64位系統的軟體結果:軟體啟動無反應原因:靠猜靠感覺認為機器是64的,而沒有通過查詢,詢問影響:浪費了寶貴的時間3.遲到時間:2013-07-21事件:本說的是4點出去,結果吃完飯,磨嘰半天最後5
Time of Update: 2018-12-05
例題摘自<<C語言範例開發大全>>題:計算a+aa+aaa+...+aaaa...a(x個a),其中a與x的值從鍵盤上輸入,如輸入a=1,x=3,相當於計算1+11+111注:1.找到aaaa的實現規律。2.找到a + aa+ aaa的實現。 package com.jue.addition;public class Testaddition {/** * @param args */public static void main(String[] args) {//
Time of Update: 2018-12-05
題目:把一個單鏈表反轉C語言解題#include <stdio.h>#include <stdlib.h>typedef struct Node{struct Node *next;int data;}Node,LinkedList;/** *鏈表的初始化 */LinkedList* init(){Node* list = NULL;Node* currentNode = list;int i;for(i = 0; i < 5; i ++){Node * node