Time of Update: 2018-12-04
1.概念 observer模式定義對象間的一對多的依賴關係,當一個對象的狀態發生改變時, 所有依賴於它的對象都得到通知並被自動更新。JDK裡提供的observer設計模式的實現由java.util.Observable類和 java.util.Observer介面組成。從名字上可以清楚的看出兩者在Observer 設計模式中分別扮演的角色:Observer是觀察者角色,Observable是被觀察目標(subject)角色。 2.執行個體 該執行個體類比了燒水的過程,涉及三個對象,Heater(
Time of Update: 2018-12-04
其實學了java這麼長時間,也是盲目的在學習,該如何學如何理解都沒能去深刻研究,看到這位仁兄寫的學java隨筆,我覺得我們該學習他的很多思路,轉 如下: 簡要記錄一下這段時間學習Java的一些Tips:1。文法沒啥好說的,基本花一兩個小時可以搞定;2。每個異常都必須去處理,太麻煩了,不僅影響開發效率而且容易造成異常丟失;3。JDK,JRE,JVM必須能很清楚理解他們的概念;4。package和import機制雖然和namespace很像但用法不同;首先檔案夾要有對應,其次使用時要麼使用全路徑,要
Time of Update: 2018-12-04
VA問題的引出:今天編寫貪吃蛇程式的時候遇到這樣一個問題public class Coordinate { public int headX, headY; Coordinate(int headX, int headY) { this.headX = headX; this.headY = headY; } public boolean equals(Coordinate c) { if(this.headX == c.headX && this.headY ==
Time of Update: 2018-12-04
事實上Java nio引入了非同步機制,非同步I/O 在Linux上有 select poll epoll,支援多工。在Java裡就是通過nio的一整套類來實現的,主要有:ByteBufferSocketChannelServerSocketChannelSelectorSelectionKey 註冊: channel調用 register來向selector註冊,移除: SelectionKey.cancel //僅僅把selectionkey
Time of Update: 2018-12-04
這篇是翻譯官網的編程指南,官網地址:http://www.cybergarage.org/pdfdoc/clinkjavaproguide.pdf 目錄: 1 簡介2 步驟3 裝置 3.1 類概述 3.2 描述 3.3 初始化 3.4 通知 3.5 嵌入的裝置 3.6 服務 3.7 控制 3.8 事件4. 控制點 4.1 類概述 4.2 初始化 4.3 通知 4.4 搜尋 4.5 根裝置 4.6
Time of Update: 2018-12-04
JAVA基礎之理解JNI原理(轉載+修改)JNI是JAVA標準平台中的一個重要功能,它彌補了JAVA的與平台無關這一重大優點的不足,在JAVA實現跨平台的同時,也能與其它語言(如C、C++)的動態庫進行互動,給其它語言發揮優勢的機會。有了JAVA標準平台的支援,使JNI模式更加易於實現和使用。在此總結了下面這個知識圖:環境說明:ubuntu 11.04第一步:程式1 src/com/magc/jni/HelloWorld.javaclass HelloWorld{private native
Time of Update: 2018-12-04
Java 遠程方法調用(Remote Method Invocation, RMI)使得運行在一個 JAVA 虛擬機器(Java Virtual Machine, JVM)的對象可以調用運行另一個 JVM 之上的其他對象的方法,從而提供了程式間進行遠程通訊的途徑。RMI 是 J2EE 的很多分布式技術的基礎,比如 RMI-IIOP 乃至 EJB。本文是 RMI 的一個入門指南,目的在於協助讀者快速建立對 Java RMI 的一個感性認識,以便進行更深層次的學習。事實上,如果你瞭解 RMI
Time of Update: 2018-12-04
不管你是新手還是老鳥,在程式中讀取資源檔總會遇到一些找不到檔案的問題,這與Java底層的實現有關,不能算bug,只要方法得當,問題還是可以解決的。 項目的檔案夾結構:repathtest ├─src │ └─com │ └─lavasoft │ ├─test │ └─res ├─doc 1、在Java開發工具的project中使用相對路徑在project中,相對路徑的根目錄是project
Time of Update: 2018-12-04
如題,直接上代碼:import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class TestFile { public static void main(String[]
Time of Update: 2018-12-04
最近應項目的需求,需要通過java調用dll動態庫,於是找了一些資料,在此記錄一下實現過程,包括出現的錯誤處理。寫一個包含static System.loadLibrary()和native修飾過的方法的類,如下:package com.android.test;public class TestNative {static {System.loadLibrary("TestNative");}private native int add(int x,int y);/** * @param
Time of Update: 2018-12-04
在我們在寫程式的過程中,有些時候需要知道一些電腦的硬體資訊,比如我們寫一些需要註冊的程式的時候,就需要得到某個電腦特定的資訊,一般來說,網卡的物理地址是不會重複的,我們正好可以用它來做為我們識別一台電腦的標誌.那如何得到網卡的物理地址呢?我們可以藉助於ProcessBuilder這個類,這個類是JDK1.5新加的,以前也可以用Runtime.exce這個類.在此我們將示範一下如何在Windows和Linux環境下得到網卡的物理地址.代碼如下:/* * Test.java * * Created
Time of Update: 2018-12-04
在我們寫程式的時候,有時會要求儲存一些資料,比如使用者名稱或者別的,但是這樣資料又不是儲存在程式同一目錄下,這樣做太明顯了,也不太安全,那怎麼辦呢?這個時候,如果能把資料儲存到註冊表裡面去,那該多好,一來隱蔽,二來方便,不至於在程式目錄下產生一大片檔案.在JAVA裡面,可以利用java.util.prefs.Preferences來對註冊表進行操作,我們先看一下例子吧/* * Test3.java * * Created on 2007-9-20, 18:41:41 * * To chang
Time of Update: 2018-12-04
JDK5.0支援的新功能-----Java的泛型 先來個自己寫的例子:--------------------------------------------------------------------------------------------------------------package Test;import java.util.Hashtable;import java.util.Random;public class Test { public Hashtable<
Time of Update: 2018-12-04
public class BinaryTreeTest { private BinaryTree root = null; public BinaryTreeTest() { init(); } private void init() { int data[] = { 12, 11, 34, 45, 67, 38, 56, 43, 22, 8 }; root = new BinaryTree(data[
Time of Update: 2018-12-04
Java中的異常處理異常處理是程式設計中一個非常重要的方面,也是程式設計的一大痛點,從C開始,你也許已經知道如何用if...else...來控制異常了,也許是自發的,然而這種控制異常痛苦,同一個異常或者錯誤如果多個地方出現,那麼你每個地方都要做相同處理,感覺相當的麻煩!
Time of Update: 2018-12-04
問題:keytool 錯誤: java.io.FileNotFoundException: MyAndroidKey.keystore (拒絕訪問).現象:今天在cmd下支座android apk 簽名時,輸入命令:keytool -genkey -alias MyAndroidKey.keystore -keyalg RSA -validity 20000 -keystore MyAndroidKey.keystore然後輸入一系列info,最後input
Time of Update: 2018-12-04
關於volatile 我們知道,在Java中設定變數值的操作,除了long和double類型的變數外都是原子操作,也就是說,對於變數值的簡單讀寫操作沒有必要進行同步。這在JVM
Time of Update: 2018-12-04
InputStreamUtils.java001import java.io.ByteArrayInputStream;002import java.io.ByteArrayOutputStream;003import java.io.IOException;004import java.io.InputStream;005 006/**007 *008 * @author Andy.Chen009 * @mail Chenjunjun.ZJ@gmail.com010 *011
Time of Update: 2018-12-04
主要相同點:Lock能完成Synchronized所實現的所有功能。主要不同點:Lock有比Synchronized更精確的縣城予以和更好的效能。Synchronized會自動釋放鎖,但是Lock一定要求程式員手工釋放,並且必須在finally從句中釋放。synchronized 修飾方法時 表示同一個對象在不同的線程中 表現為同步隊列如果執行個體化不同的對象 那麼synchronized就不會出現同步效果了。 1.對象的鎖 所有對象都自動含有單一的鎖。
Time of Update: 2018-12-04
今天準備試用下公司提供的VPN,走到最後一步卻遇到了讓人糾結的問題在Chrome瀏覽器上,得到了這樣的提示既然裝了Java7會導致Java6不可用,那麼還是用Java6吧可是來到Java6的下載頁面,提示使用Apple自己的Java,已經整合在Mac OS X中了既然系統中有Java6,在終端(Teminal)中執行java -version能看到已經安裝了java 1.6那在瀏覽器中為什麼還提示需要安裝java呢?是不是沒有啟用Java