Time of Update: 2017-01-19
概述對於多線程程式來說,生產者和消費者模型是非常經典的模型。更加準確的說,應該叫“生產者-消費者-倉庫模型”。離開了倉庫,生產者、消費者就缺少了共用的儲存空間,也就不存在並非協作的問題了。樣本定義一個情境。一個倉庫只允許存放10件商品,生產者每次可以向其中放入一個商品,消費者可以每次從其中取出一個商品。同時,需要注意以下4點:1. 同一時間內只能有一個生產者生產,生產方法需要加鎖synchronized。2.
Time of Update: 2017-01-19
引言垃圾收集技術並不是Java語言首創的,1960年誕生於MIT的Lisp是第一門真正使用記憶體動態分配和垃圾收集技術的語言。垃圾收集技術需要考慮的三個問題是:1、哪些記憶體需要回收2、什麼時候回收3、如何回收java記憶體運行時地區的分布,其中程式計數器,虛擬機器棧,本地方法區都是隨著線程而生,隨線程而滅,所以這幾個地區就不需要過多考慮回收問題。但是堆和方法區就不一樣了,只有在程式運行期間我們才知道會建立哪些對象,這部分記憶體的分配和回收都是動態。垃圾收集器所關注的就是這部分記憶體。一
Time of Update: 2017-01-19
&&(短路與)、&、||(短路或)、|,這幾種運算子在Java程式開發中經常用到,下面小編主要給大家介紹下&和&&的區別。其中&&與&都表示邏輯與,當運算子兩邊的運算式的結果都為true時,其運算結構才是true。但是&&有短路的作用,如果第一個運算式為false,則不用判斷第二個運算式。複製代碼
Time of Update: 2017-01-19
策略模式屬於對象的行為模式。其用意是針對一組演算法,將每一個演算法封裝到具有共同介面的獨立的類中,從而使得它們可以相互替換。策略模式使得演算法可以在不影響到用戶端的情況下發生變化。策略模式的結構 策略模式是對演算法的封裝,是把使用演算法的責任和演算法本身分割開來,委派給不同的對象管理。策略模式通常把一個系列的演算法封裝到一系列的策略類裡面,作為一個抽象策略類的子類。用一句話來說,就是:“準備一組演算法,並將每一個演算法封裝起來,使得它們可以互換”。下面就以一個示意性的實現講解策略模式執行個體的
Time of Update: 2017-01-19
在Java軟體的使用過程中,有時會莫名的出現奇怪的問題。而這些問題常常無法使用日誌資訊定位,這時我們就需要通過查看進程內部線程的堆棧調用關係來分析問題出在哪裡。 舉個例子,當我們在做某個操作時,莫名的會彈出多個警告框,其中有些資訊是正常的,有些則不是。對於這些錯誤的警告資訊,我們該如何定位是哪個位置的代碼出現了錯誤彈出的框呢? 我們就需要在彈框以後,去查看軟體的各個線程,去尋找究竟是哪個線程導致了該問題。可是有時因為環境、時間等問題,我們根本不能拿著IDE去調試,
Time of Update: 2017-01-19
本文為大家分享兩個執行個體,相信大家一定會喜歡。執行個體1:隨機產生驗證碼圖片並將之輸出為一個png檔案效果圖:import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.util.Random; import
Time of Update: 2017-01-19
前言寫背景程式的時候,經常需要儲存當前伺服器的時間戳記,使用時間戳也很方便,用戶端和伺服器端都可以根據自己的需求做各自的轉換在php裡,擷取目前時間戳使用time()函數,格式化輸出通過Date()函數即可,Java裡相對複雜一些,這裡簡單介紹一下Java語言中的Calendar,Date,DateFormat組成了Java標準的一個基本但是非常重要的部分。日期是商業邏輯計算一個關鍵的部分,所有的開發人員都應該能計算未來的日期,定製日期的顯示格式,並將文本資料解析成日期對象擷取UNIX時間戳記在
Time of Update: 2017-01-19
java解析XML幾種方式小結第一種:DOM。DOM的全稱是Document Object
Time of Update: 2017-01-19
用線程Thread執行一些方法後,需要判斷執行是否成功。public void run() {}run( ) 方法傳回值是空, 怎麼辦?解決方案: Note 使用 call() 方法 Callable介面是 jdk 5 後新增的介面 代碼:package com.example.thread;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import
Time of Update: 2017-01-19
java語言裡包含了許多對設計模式的直接支援,如command模式,agent模式,observer模式等。雖然java提供的對這些模式的支援很簡單,不能滿足比較複雜的應用。但在簡單的情境下,使用這些類往往能夠得到立杆見影的效果。所以,如果沒有什麼特殊需求,還是最好利用java的這些類。 Observer模式,又稱監聽模式,觀察者模式,是經典設計模式之一(one of
Time of Update: 2017-01-19
本文執行個體講述了java之swing表格實現方法。分享給大家供大家參考。具體如下:import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.tree.*;public class test extends JApplet{ public void init(){ Container contentPane = getContentPane();
Time of Update: 2017-01-19
本文執行個體講述了java之swing下拉式功能表實現方法。分享給大家供大家參考。具體如下:import java.awt.*;import javax.swing.*;import java.awt.event.*;public class test extends JAppletimplements ItemListener{ JLabel jtf; ImageIcon a1, a2, a3; public void init(){ Container contentPane =
Time of Update: 2017-01-19
本篇使用java內建的MessageDigest實現對文本的md5密碼編譯演算法,具體代碼如下: /** *@Description: 將字串轉化為MD5 */ package cn.yicha.novel.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class ParseMD5 { /** * @param str
Time of Update: 2017-01-19
經常會看到貼吧裡面屏蔽各種使用者的發帖內容,當時就想這個該如何去實現。自己當時想過用字串去替代的方式(replaceAll)去實現,但是這種效率又非常低,也不能保證最長相符,這就是自己當時最初的想法。最近自己做的一個項目中,需要對一些內容做屏蔽,自己又對這個問題做了一次分析,最終形成下面的代碼。 /** *@Description: 屏蔽詞功能實現 */ package cn.yicha.novel.search.util; import java.io.BufferedReader;
Time of Update: 2017-01-19
JDBC Statement對象執行個體以下是利用以下三種查詢以及開啟和關閉說明的例子:boolean execute(String SQL) : 返回一個布爾值true,如果ResultSet對象可以被檢索,否則返回false。使用這個方法來執行SQL DDL語句,或當需要使用真正的動態SQL。int executeUpdate(String SQL) : 返回受影響的SQL語句執行的行數。使用此方法來執行,而希望得到一些受影響的行的SQL語句 -
Time of Update: 2017-01-19
當對象改變其可達性狀態時,對該對象的引用就可能會被置於引用隊列(reference queue)中。這些隊列被記憶體回收行程用來與我們的代碼溝通有關對象可達性變化的情況。這些隊列是探測可達性變化的最佳方式,儘管我們也可以通過檢查get方法的傳回值是不是null來探測對象的可達性變化。 引用對象在構造時可以與特定隊列建立關聯。Reference的每一個子類都提供了如下形式的構造器: .public Strength Reference (T referent, ReferenceQueueq)
Time of Update: 2017-01-19
JSON概述JSON即javascript object notation,是javascript對象標記法的子集。具有以下特點:資料放在索引值對中;資料由逗號分隔;花括弧表示對象;方括弧表示數組。JSON的值可以是:數字(整數或浮點數)字串(在雙引號中)邏輯值(true或false)數組(方括弧內)對象(花括弧內)nullJSON的基本文法JSON對象JSON對象在花括弧中書寫,對象可以包含多個索引值對,例如:{ "firstName":"John",
Time of Update: 2017-01-19
本文執行個體講述了JAVA實現監測tomcat是否宕機及控制重啟的方法。分享給大家供大家參考。具體如下:Detector.java:import java.net.URL;import java.net.URLConnection;import java.util.Date;/*** * @author james**/public class Detector {private static void keepTomcatAlive() throws NullPointerException
Time of Update: 2017-01-19
在實際的項目開發中會有很多的對象,如何高效、方便地管理對象,成為影響程式效能與可維護性的重要環節。Java 提供了集合架構來解決此類問題,線性表、鏈表、雜湊表等是常用的資料結構,在進行 Java 開發時,JDK 已經為我們提供了一系列相應的類來實現基本的資料結構,所有類都在 java.util 這個包裡,清單1 描述了集合類的關係。清單
Time of Update: 2017-01-19
基本知識點 IP ——> 整數:把IP地址轉化為位元組數組通過左移位(<<)、與(&)、或(|)這些操作轉為int整數 ——> IP:將整數值進行右移位操作(>>>),右移24位,再進行與操作符(&)0xFF,得到的數字即為第一段IP。將整數值進行右移位操作(>>>),右移16位,再進行與操作符(&)0xFF,得到的數字即為第二段IP。將整數值進行右移位操作(>>>),右移8位,再進行與操作符(&