Time of Update: 2017-01-19
本章涉及到的內容包括:1. sleep()介紹2. sleep()樣本3. sleep() 與 wait()的比較1. sleep()介紹sleep() 定義在Thread.java中。sleep() 的作用是讓當前線程休眠,即當前線程會從“運行狀態”進入到“休眠(阻塞)狀態”。sleep()會指定休眠時間,線程休眠的時間會大於/等於該休眠時間;線上程重新被喚醒時,它會由“阻塞狀態”變成“就緒狀態”,從而等待cpu的調度執行。2. sleep()樣本下面通過一個簡單樣本示範sleep()的用法。
Time of Update: 2017-01-19
本章涉及到的內容包括:1. yield()介紹2. yield()樣本3. yield() 與 wait()的比較1. yield()介紹yield()的作用是讓步。它能讓當前線程由“運行狀態”進入到“就緒狀態”,從而讓其它具有相同優先順序的等待線程擷取執行權;但是,並不能保證在當前線程調用yield()之後,其它具有相同優先順序的線程就一定能獲得執行權;也有可能是當前線程又進入到“運行狀態”繼續運行!2. yield()樣本下面,通過樣本查看它的用法。複製代碼 代碼如下://
Time of Update: 2017-01-19
本章,會對線程等待/喚醒方法進行介紹。涉及到的內容包括:1. wait(), notify(), notifyAll()等方法介紹2. wait()和notify()3. wait(long timeout)和notify()4. wait() 和 notifyAll()5. 為什麼notify(), wait()等函數定義在Object中,而不是Thread中wait(), notify(), notifyAll()等方法介紹在Object.java中,定義了wait(),
Time of Update: 2017-01-19
Thread類包含start()和run()方法,它們的區別是什嗎?本章將對此作出解答。本章內容包括:start() 和 run()的區別說明start() 和 run()的區別樣本start() 和 run()相關源碼(基於JDK1.7.0_40)start() 和 run()的區別說明start() : 它的作用是啟動一個新線程,新線程會執行相應的run()方法。start()不能被重複調用。run() :
Time of Update: 2017-01-19
關於線程池的內容,我們以後會詳細介紹;現在,先對的Thread和Runnable進行瞭解。本章內容包括:Thread和Runnable的簡介Thread和Runnable的異同點Thread和Runnable的多線程的樣本Thread和Runnable簡介Runnable 是一個介面,該介面中只包含了一個run()方法。它的定義如下:複製代碼 代碼如下:public interface Runnable { public abstract void run()
Time of Update: 2017-01-19
多線程是Java中不可避免的一個重要主體。下面我們將展開對多線程的學習。接下來的內容,是對“JDK中新增JUC包”之前的Java多線程內容的講解,涉及到的內容包括,Object類中的wait(), notify()等介面;Thread類中的介面;synchronized關鍵字。註:JUC包是指,Java.util.concurrent包,它是由Java大師Doug
Time of Update: 2017-01-19
複製代碼 代碼如下:import java.util.Calendar;import java.util.Date;public class Matrix { private int matrix[][]; private long timeAfter=0; private long timeBefore =0; public Matrix(int m[][]) { matrix = new
Time of Update: 2017-01-19
final經常和static一起使用來聲明常量,你也會看到final是如何改善應用效能的。final關鍵字的含義?final在Java中是一個保留的關鍵字,可以聲明成員變數、方法、類以及本地變數。一旦你將引用聲明作final,你將不能改變這個引用了,編譯器會檢查代碼,如果你試圖將變數再次初始化的話,編譯器會報編譯錯誤。什麼是final變數?凡是對成員變數或者本地變數(在方法中的或者代碼塊中的變數稱為本地變數)聲明為final的都叫作final變數。final變數經常和static關鍵字一起使用,
Time of Update: 2017-01-19
先說說為什麼寫這個吧,這個完全是由去阿里巴巴面試引起的一次慘目忍睹的血案。去面試的時候,由於面試前天晚上11點鐘才到阿里巴巴指定面試城市,找到旅館住下基本都1點多,加上晚上完全沒有睡好,直接導致第二天面試效果很不好(對於那些正在找工作的大蝦們不要向小蝦一下悲劇,提前做好準備還是很重要滴),面試大概進行了一個多小時(面試結束回去的時候基本走路都快睡著了,悲催!!),面試快結束的時候面試官問的我問題就是關於費波那西數列,當時頭腦完全漿糊,只知道要設定三個變數或者用List先初始化,當寫到for迴圈的
Time of Update: 2017-01-19
思路:將字串變成數組,對數組反轉將反轉後的數組變成字串只要將反轉的部分的開始和結束的位置作為參數傳遞即可複製代碼 代碼如下:class reverse_String{ public static void main (String[] args){ String s1 = " java php
Time of Update: 2017-01-19
比如:javascriptjavasejavaeejavame思路:定義一個計數器擷取java第一次出現的位置從第一次出現位置後剩餘的字串中繼續擷取java出現的位置每擷取一次就計數一次當擷取不到時,計數完成複製代碼 代碼如下:class StringCount{ public static void main(String[] args){ String s =
Time of Update: 2017-01-19
序列化一般應用與以下情境之中:1.永久性儲存對象,把對象通過序列化位元組流儲存到本地檔案中;2.通過序列化在網路中傳輸對象3.通過序列化在進程間傳遞對象複製代碼 代碼如下:import java.io.Serializable;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectOutputStream;public class javaSerializable_fun
Time of Update: 2017-01-19
下面給個小例子,來驗證一下error的捕獲。複製代碼 代碼如下:public class TestCatchError extends Error{ private static final long serialVersionUID = -351488225420878020L; public TestCatchError(){
Time of Update: 2017-01-19
1 概述建造者模式(Builder Pattern)主要用於“分步驟構建一個複雜的對象”,在這其中“分步驟”是一個穩定的演算法,而複雜物件的各個部分則經常變化。因此, 建造者模式主要用來解決“對象部分”的需求變化。 這樣可以對物件建構的過程進行更加精細的控制。2 樣本以生產手機為例,每個手機分為螢幕Screen、CPU、Battery。現在要生產兩種手機,蘋果機和三星。 蘋果: 複製代碼 代碼如下: package org.scott.builder.before.
Time of Update: 2017-01-19
1 概述單例模式有幾個好處:(1)某些類建立比較頻繁,對於一些大型的對象,這是一筆很大的系統開銷。(2)省去了new操作符,降低了系統記憶體的使用頻率,減輕GC壓力。(3)有些類如證券交易所的核心交易引擎,控制著交易流程,如果該類可以建立多個的話,系統完全亂了。2 詳解單例模式常用的寫法有如下這麼兩種。2.1 餓漢式如果應用程式總是建立並使用單例模式,或者在建立和運行時壓力不是很大的情況下,可以使用一個私人靜態變數,提前把對象建立好。 複製代碼 代碼如下:package
Time of Update: 2017-01-19
字串匹配尋找演算法中,最著名的兩個是KMP演算法(Knuth-Morris-Pratt)和BM演算法(Boyer-Moore)。兩個演算法在最壞情況下均具有線性尋找時間。但是在實用上,KMP演算法並不比最簡單的C庫函數strstr()快多少,而BM演算法則往往比KMP演算法快上3-5倍(未親身實踐)。但是BM演算法還不是最快的演算法,這裡介紹一種比BM演算法更快一些的尋找演算法Sunday演算法。Sunday演算法的思想和BM演算法中的壞字元思想非常類似。差別只是在於Sunday演算法在匹配失敗
Time of Update: 2017-01-19
複製代碼 代碼如下:import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;public class InsertContent { public static void insert(String fileName, long
Time of Update: 2017-01-19
複製代碼 代碼如下:public class Caesar { public static final String SOURCE = "abcdefghijklmnopqrstuvwxyz"; public static final int LEN = SOURCE.length(); /** * @param args */ public static void main(String[] args) {
Time of Update: 2017-01-19
單例模式有一下特點:1、單例類只能有一個執行個體。2、單例類必須自己自己建立自己的唯一執行個體。3、單例類必須給所有其他對象提供這一執行個體。單例模式確保某個類只有一個執行個體,而且自行執行個體化並向整個系統提供這個執行個體。在電腦系統中,線程池、緩衝、日誌對象、對話方塊、印表機、顯卡的驅動程式對象常被設計成單例。這些應用都或多或少具有資源管理員的功能。每台電腦可以有若干個印表機,但只能有一個Printer
Time of Update: 2017-01-19
1.概述排序和尋找是程式設計裡的兩類非常基本的問題,而現在也存在很多經典的演算法用於解決這兩類問題,本文主要對java中排序演算法實現進行一個基本的探討,希望能夠起到拋磚引玉的作用。在此之前,首先問各位幾個問題:你能寫出一個正確的快排嗎?快排在什麼情況下真正的快?你的快排足夠快嗎?還可以進一步最佳化嗎?帶著這些問題,我們來看看jre7中快排是如何?的吧。Jre7中排序的實作類別是DualPivotQuickSort.java,相比jre6有一些改變,主要發生在兩個地方,一個是insertion