Time of Update: 2017-01-19
對HDFS上的檔案進行上傳和下載是對叢集的基本操作,在《HADOOP權威指南》一書中,對檔案的上傳和下載都有代碼的執行個體,但是對如何配置HADOOP用戶端卻是沒有講得很清楚,經過長時間的搜尋和調試,總結了一下,如何配置使用叢集的方法,以及自己測試可用的對叢集上的檔案進行操作的程式。首先,需要配置對應的環境變數:複製代碼 代碼如下:hadoop_HOME="/home/work/tools/java/hadoop-client/hadoop"for f in
Time of Update: 2017-01-19
需要用到 java 寫一個 ftp 的工具,因為只有一點點 java 基礎,但是由於好幾年不用,幾乎算是不會了,只好一點點來搞,還好能撿起來。不過因為是在 Linux 下使用 javac 編譯,不是在 WIN 下使用 IDE 來做這些事情,所以在運行和編譯上又費了一些時間,不過正是因為這樣對 JAVA 的一些編譯、啟動並執行知識又瞭解了一些。對於 ftp 下載工具,代碼如下:複製代碼 代碼如下:import java.io.File; import
Time of Update: 2017-01-19
本文執行個體講述了java擷取兩個數組中不同資料的方法。分享給大家供大家參考。具體實現方法如下:public static <T> List<T> compare(T[] t1, T[] t2) { List<T> list1 = Arrays.asList(t1); List<T> list2 = new ArrayList<T>(); for (T t : t2) { if
Time of Update: 2017-01-19
package snake;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import com.lowagie.text.Document;import com.lowagie.text.DocumentException;import com.lowagie.text.
Time of Update: 2017-01-19
編寫一個程式 將a.txt檔案中的單詞與b.txt檔案中的單詞交替合并到c.txt檔案中 a.txt檔案中的單詞用斷行符號符分隔,b.txt檔案中用斷行符號或空格進行分隔。複製代碼 代碼如下:package javase.arithmetic;import com.google.common.base.Charsets;import com.google.common.base.Joiner;import com.google.common.base.Splitter;import
Time of Update: 2017-01-19
快速排序是C.R.A.Hoare於1962年提出的一種劃分交換排序。該方法的基本思想是:1.先從數列中取出一個數作為基準數。2.分區過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3.再對左右區間重複第二步,直到各區間只有一個數。演算法的思路很清晰,但是如果在區間劃分過程中邊界值沒有處理好,也是很容易出現bug的。下面給出兩種比較清晰的思維來指導區間劃分代碼的編寫。第一種思維即所謂的挖坑法思維,下面通過分析一個執行個體來分析一下挖坑法的過程:以一個數組作為樣本,取區間第一個
Time of Update: 2017-01-19
兩個介面都是繼承自Collection.List (inteface) 次序是List 的最重要特點,它確保維護元素特定的順序. --ArrayList 允許對元素快速隨機訪問. --LinkedList 對順序訪問進行最佳化,向List 中間插入與移除的開銷並不大,具有addFrist(),addLast(),getFirst,getLast,removeFirst和removeLast().這些方法使得LinkedList可當作堆棧/隊列/雙向隊列.Set (inteface) 存入Set
Time of Update: 2017-01-19
JAVA反射機制JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法;這種動態擷取的資訊以及動態調用對象的方法的功能稱為java語言的反射機制。Java反射機制主要提供了以下功能: 在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變數和方法;在運行時調用任意一個對象的方法;產生動態代理。1. 得到某個對象的屬性複製代碼 代碼如下:public Object
Time of Update: 2017-01-19
原廠模式定義:提供建立對象的介面。為何使用原廠模式原廠模式是我們最常用的模式了,著名的Jive論壇,就大量使用了原廠模式,原廠模式在Java程式系統可以說是隨處可見。為什麼原廠模式是如此常用?因為原廠模式就相當於建立執行個體對象的new,我們經常要根據類Class產生執行個體對象,如A a=new A()
Time of Update: 2017-01-19
Prototype模式定義:用原型執行個體指定建立對象的種類,並且通過拷貝這些原型建立新的對象。Prototype模式允許一個對象再建立另外一個可定製的對象,根本無需知道任何如何建立的細節,工作原理是:通過將一個原型對象傳給那個要發動建立的對象,這個要發動建立的對象通過請求原型對象拷貝它們自己來實施建立。如何使用原型模式因為Java中的提供clone()方法來實現對象的複製,所以Prototype模式實現一下子變得很簡單。以勺子為例:複製代碼 代碼如下:public abstract
Time of Update: 2017-01-19
題目要求為:卡拉茲(Callatz)猜想:對任何一個自然數n,如果它是偶數,那麼把它砍掉一半;如果它是奇數,那麼把(3n+1)砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到n=1。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每一個數。例如對n=3進行驗證的時候,我們需要計算3、5、8、4、2、1,則當我們對n=5、8、4、2進行驗證的時候,就可以直接判定卡拉茲猜想的真偽,而不需要重複計算,因為這4個數已經在驗證3的時候遇到過了,我們稱5、8、4、2是被3“覆蓋”的
Time of Update: 2017-01-19
Memento定義:memento是一個儲存另外一個對象內部狀態拷貝的對象,這樣以後就可以將該對象恢複到原先儲存的狀態。Memento模式相對也比較好理解,我們看下列代碼:複製代碼 代碼如下:public class Originator { private int number; private File file = null; public Originator(){} // 建立一個Memento public Memento getMemento(){ return
Time of Update: 2017-01-19
Visitor定義:作用於某個對象群中各個對象的操作。它可以使你在不改變這些對象本身的情況下,定義作用於這些對象的新操作。在Java中,Visitor模式實際上是分離了collection結構中的元素和對這些元素進行操作的行為。為何使用Visitor模式Java的Collection(包括Vector和Hashtable)是我們最經常使用的技術,可是Collection好象是個黑色大染缸,本來有各種鮮明類型特徵的對象一旦放入後,再取出時,這些類型就消失了。那麼我們勢必要用If來判斷,如:複製代碼
Time of Update: 2017-01-19
OpenCSV是一個簡單的用於解析CSV檔案的java類庫,它封裝了CSV格式檔案的輸出和讀入,可以自動處理CSV格式中的特殊字元,最重要的是OpenCSV可以用於商業化(commercial-friendly)。具體的使用方法:讀CSV檔案1、使用Iterator方式讀複製代碼 代碼如下:CSVReader reader = new CSVReader(new FileReader("yourfile.csv"));String [] nextLine;while ((nextLine =
Time of Update: 2017-01-19
本文為用 MediaRecorder 錄製小視頻的控制項,可以設定視頻錄製的時間、空間大小、初始時是否開啟網路攝影機等。 此控制項為群組控制項,繼承自 LinearLayout ,為防止出錯,需實現 android.media.MediaRecorder.OnErrorListener 介面。小視頻錄製介面MovieRecorderView.javaimport java.io.File;import java.io.IOException;import
Time of Update: 2017-01-19
類比單鏈表線性表:線性表(亦作順序表)是最基本、最簡單、也是最常用的一種資料結構。線性表中資料元素之間的關係是一對一的關係,即除了第一個和最後一個資料元素之外,其它資料元素都是首尾相接的。線性表的邏輯結構簡單,便於實現和操作。在實際應用中,線性表都是以棧、隊列、字串等特殊線性表的形式來使用的。線性結構的基本特徵為:1.集合中必存在唯一的一個“第一元素”;2.集合中必存在唯一的一個 “最後元素” ;3.除最後一個元素之外,均有 唯一的後繼(後件);4.除第一個元素之外,均有
Time of Update: 2017-01-19
前兩天給同事做 code review,感覺自己對 Java 的 Generics 掌握得不夠好,便拿出 《Effective Java》1 這本書再看看相關的章節。在 Item 24:Eliminate unchecked warnings 這一節中,作者拿 ArrayList 類中的 public <T> T[] toArray(T[] a) 方法作為例子來說明如何對變數使用 @SuppressWarnings annotation。ArrayList 是一個 generic
Time of Update: 2017-01-19
今天看了看Java並發程式,寫一寫入門程式,並設定了線程的優先順序。class Elem implements Runnable{ public static int id = 0; private int cutDown = 5; private int priority; public void setPriority(int priority){ this.priority = priority; } public int getPriority(){
Time of Update: 2017-01-19
一、裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬於結構型模式,它是作為現有的類的一個封裝。這種模式建立了一個裝飾類,用來封裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。我們通過下面的執行個體來示範裝飾器模式的使用。其中,我們將把一個形狀裝飾上不同的顏色,同時又不改變形狀類。二、實現我們將建立一個 Shape 介面和實現了 Shape 介面的實體類。然後我們建立一個實現了 Shape
Time of Update: 2017-01-19
SHA1package com.stone.security; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.security.DigestInputStream; import java.security.DigestOutputStream; import