Code Fragment-對於一些狀態性介面,應該有不同的階段

對於一些介面,我們應該有一些不同的狀態。應該有一些開始性抽象方法,如startXXX。應該有一些結束性的抽象方法,如finishXXX一些特別的事件,應該有一些回調,如updateXXX對於不同性質的東西,可以提供不同的bind方法例子:在Launcher裡,載入應用程式的資訊,提供了如下的介面:public interface Callbacks { public boolean setLoadOnResume(); public int

排序演算法-插入演算法

//============================================================================// Name : InsertSort.cpp// Author : jue// Version :// Copyright : Your copyright notice// Description : Hello World in C++, Ansi-style//==================

定位問題的若干小方法

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.

代碼重構-尋找壞味道

代碼重構-尋找壞味道本文參考了一下書籍:《重構-改善既有代碼的設計》《重構手冊》1. 重複的代碼a) 封裝成類,使用組合方式。b) 封裝成方法,通常是在同一類中。c) 參數少的方法調用參數多的代碼,並賦予預設值。d) 提取公用基類,把共同的代碼放到父類。2. 過長a) 方法i. 提取子方法。ii. 移動這個方法動作外的函數到外面。b) 類i. 提取類(一起變化的,邏輯上有依賴的變數封裝在一起)ii. 考慮move method來搬移不屬於該類的方法。c) 參數列i. 封裝成一個代表參數的對象。i

一天一個演算法題-簡單的-遞迴-計算球的落下

此題摘自<<c語言範例開發大全>>一個球從100米的高度自由落下,每次落地後反跳回原高度的一半再落下,求他在第10次落地的時候,共經過多少錢。1.已知要點:第一次落下時候經過的距離。2.上次的落下距離跟下一次的落下距離有一定關係。package com.jue.falldown;public class TestFallDown {/** * @param args */public static void main(String[] args) {// TODO

簡單原廠模式–使用–擴充–缺點–適用情況–

簡單原廠模式的一些基本知識本文主要參見自《Java與模式》一、UML類圖表示如下二、角色如下1.Product介面:a.含有具體產品的共有介面。2.ProductA,ProductBa.工廠類所建立的這個角色的執行個體。3.Factroy:a.簡單原廠模式的核心。b.工廠類在用戶端的直接調用下建立產品對象。三、基本代碼實現如下:1.Product介面:package com.jue.dp;public interface Fruit {void grow();void

學習JNI一些基礎知識

看王擇佑老師的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環境中的

插入排序的實現

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);}

Code Fragment- 批量的資料處理放到額外的線程裡

這是Launcher的一個例子,在Package改變的時候,通知更新訊息。主線程收到事件開啟額外線程處理事情處理完回到主線程,更新UI查詢的時候,只做查詢相關的,修改的時候,只做修改相關的1.當事件發生的時候,onReceive收到if (Intent.ACTION_PACKAGE_CHANGED.equals(action) || Intent.ACTION_PACKAGE_REMOVED.equals(action) ||

Code Fragment-一些工具類的特點

我們的工程中會有很多工具類,工具類通常有如下的特點。工具類的方法大多是靜態方法。(使用的過程中,不需要new建立對象)構造方法應該是private的,做到一種強制性的非new建立 ,而是通過類名直接調用。如PackgeUtils.getPackageInforation();方法中需要的變數如Context,是通過參數傳入,非屬性(因為在靜態方法中,需要靜態屬性,靜態屬性會引用當前對象,阻止了記憶體回收)。類名通常是XXXUtils一個節選例子如下:package

Code Fragment-Message Pool的實現與處理

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;

Code Fragmen-重載的方法,參數少的去調用參數多的。

對於重載的方法,可以使用參數少的去調用參數多的(多出來的參數,使用預設值代替)。代碼的重用性,減少了冗餘的code單需要改動的時候,只需要改動參數最多的實現,而不是改動每一個方法實現。無論從代碼規模還是清晰度,都有很大提高。一個例子:public class CellLayout extends ViewGroup { public CellLayout(Context context) { this(context, null); } public

Code Fragment-UI載入策略之-可視者優先載入

通常情況通常程式的UI不太複雜,我們會直接載入這些UI資訊複雜的UI載入的元素就相對多一些。載入的資料相對多。因為UI元素和資料元素都比較多,載入的時間相對多。可視者優先載入不是預設的載入順序,而是有選擇的載入一些首先使用者看到的UI,再去載入暫時沒有看到的。例如1:當Launcher啟動的時候,在案頭上會有預設的5個螢幕的widget

String StringBuilder StringBuffer區別

本文參考了http://wenku.baidu.com/view/8de1a06b011ca300a6c390d2.html1.String類的對象a.一旦建立就不能改變。b.如果把一個引用的對象賦一個新值,只是將新的引用指向了一個新的對象,舊的對象依然沒有變。(也就是每次賦一個新值都建立了新的對象)2.StringBuffer, StringBuilder:a.對象的內容是可以修改的,每次操作都會對對象本身進行操作,而不是產生新的對象。3.下面是一個類的測試package

Code Fragment-被回調的方法,通常命名為onXXX

通常以onXXX開頭的方法是被回調的主動調用的通常不會用on開頭。各種listener,當事件發生的時候會接受到回調。諸如Button.OnClickListener,實現這個介面的,需要實現onClick抽象方法,當發生onClick事件的時候,會被調用。package android.view;public class View {public interface OnKeyListener {boolean onKey(View v, int keyCode, KeyEvent

Code Fragment-查詢與改動分開

定義:當資料量比較大的時候,我們把資料的查詢和處理分開,保持資料操作的整潔,方法功能的確定性。例如:Launcher load和bind資料的時候,可以在load的過程中執行bind,但是在這個時候,資料量比較大,代碼寫在一起比較混亂複雜。private void loadAndBindWorkspace() { // Load the workspace if (!mWorkspaceLoaded) { loadWorkspace();//這裡只做load的操作

MAT 工具的使用的一些知識

Mat工具一、圖示1.餅狀圖:反應的大的對象的佔用的retainedsize。a.可以反映出相關對象所在的類,大小,以及classloader。2.柱狀圖:根據不同的類類型的執行個體個數,按執行個體的數目多少列出。a.根據不同的類類型來列出所佔用的大小。比如int[]類型的大小佔用。b.通過listobjects->with incoming

不該應有的錯誤

1.記錯公交車時間:2013-07-21事件:本應該坐966公交車,結果坐的是996公交車。結果:到達地離目的地差很遠,還需要朋友家人去接。原因:馬虎影響:給朋友帶來了麻煩2.在32系統的ubuntu上安裝64位的軟體時間:2013-07-17事件:在ubuntu上安裝java及eclipse都是安裝的64位系統的軟體結果:軟體啟動無反應原因:靠猜靠感覺認為機器是64的,而沒有通過查詢,詢問影響:浪費了寶貴的時間3.遲到時間:2013-07-21事件:本說的是4點出去,結果吃完飯,磨嘰半天最後5

一天一個演算法題-簡單的-遞迴-計算a+aa+aaa+…+aaaa…a的數值

例題摘自<<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) {//

hunter學演算法-鏈表的反轉

題目:把一個單鏈表反轉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

總頁數: 61357 1 .... 13039 13040 13041 13042 13043 .... 61357 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.