Time of Update: 2018-07-26
Java語言中為對象的引用分為了四個層級,分別為 強引用 、軟引用、弱引用、虛引用。 本文只針對java中的弱引用進行一些分析,如有出入還請多指正。 在分析弱引用之前,先闡述一個概念:什麼是對象可到達和對象不可到達狀態。 其實很簡單,我舉個例子: 現在有如下兩個類class A class B,在JVM上產生他們兩個類的執行個體分別為 instance a instance b 有如下運算式: A a = new A(); B b = new B();
Time of Update: 2018-07-26
什麼是靜態代理。 周所周知,常用的23種設計模式中,有一個代理模式(Proxy Pattern)。它的定義如下:
Time of Update: 2018-07-26
Server端: import java.net.*;import java.sql.SQLException;import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.*;public class ServerTest extends Thread{ private ServerSocket serverSocket; Socket server;
Time of Update: 2018-07-26
Java多線程完整版基礎知識 (翟開順由厚到薄系列) 1.前言 線程是現代作業系統中一個很重要的概念,多線程功能很強大,java語言對線程提供了很好的支援,我們可以使用java提供的thread類很容易的建立多個線程。線程很不難,我對之前學習過的基礎,在這做了一個整理,本文主要參考的是Java研究組織出版的j2se進階和張孝祥-java就業培訓教材這兩本書 2.概述 2.1線程是什麼 主要是線程與進程的區別,這裡不再闡述,自行網上搜尋
Time of Update: 2018-07-26
public class timeHandle {public static void main(String[] args) {dateAdd(new Date("2018/3/5 09:08:30"),3);}public static void dateAdd(Date d,int num){SimpleDateFormat s=new SimpleDateFormat("yyyy-MM-dd
Time of Update: 2018-07-26
1、Semaphore:線程協同類,用來控制線程並發數量,並且可以更加細粒度的進行控制,因為真正被控制最大並發的代碼放到了acquire和release之間。 2、主要方法: Semaphore semaphore = new Semaphore(int count); 訊號量Semaphore的初始化方法,初始值 count 表示當前的訊號量,即當前所允許並發訪問的線程數。 semaphore.acquire();
Time of Update: 2018-07-26
寫在前面 對於初入Docker的童鞋來說,構建基礎鏡像可能無從下手。此文以java例,對構架Docker基礎鏡像的過程做簡要的記錄。 建立鏡像也可以使用Dockerfile。本文主要介紹使用最基礎的自訂方式建立鏡像。 環境要求: Centos7 安裝Docker CE版。參見這裡 如果Docker鏡像下載慢,可參考Docker 中國官方鏡像加速 構建JAVA鏡像環境
Time of Update: 2018-07-26
最近複習Hadoop 發現之前很多筆記,貼出來很大家共用下。 Google 矩陣和Page Rank的簡單介紹
Time of Update: 2018-07-26
通過繼承Thread類建立線程類 實現Runnable介面建立線程類 使用Callable和Future建立線程 三種建立方式的對比 採用實現RunnableCallable介面的方式建立多線程優缺點 採用繼承Thread類的方式建立多線程優缺點
Time of Update: 2018-07-26
在網上找到的proxool 入門執行個體 都是在web項目中使用的 下面這個例子是單純的java項目中運用proxool。 總結一下,其實也很簡單就是將 proxool.xml 載入進來 的方法的不一樣 需要的jar檔案有: classes12-10.0.2.jar commons-logging-1.0.4.jar proxool-0.9.1.jar proxool-cglib-0.9.1.jar
Time of Update: 2018-07-26
首先看下面這個java程式的運算結果: 這個運算結果有沒有出乎你的意料。如果有就說明你對java運算優先順序的理解不過關。java中的運算優先順序簡單的說一下,有括弧先算括弧裡的,沒有括弧從左往右依次運算。當然,這個算式裡面沒有括弧,從左往右依次運算。首先最左邊的“5+5=”和5做運算,運算結果為“5+5=5”,然後這個結果再和第二個5做運算,結果為“5+5=55”,這也就是我們看到的這個結果。 再看這個 也許這個才是我們的本意,想要顯示5+5的結果。
Time of Update: 2018-07-26
總體思想: 1.前台網頁用js得到裁剪圖片的id及x,y,寬度和高度。 2.服務端根據id取出要裁剪的圖片 。 3.根據這些參數來產生裁剪的映像。 [代碼] java圖片裁剪 view sourceprint? 001
Time of Update: 2018-07-26
線程的生命週期,把圖轉化為文字就是: 線程通過new方法建立,調用start()方法,線程進入就緒狀態,等待系統的調度(時間片輪轉調度)。當系統調度,進入運行狀態。正常結束或者異常退出,進程進入死亡狀態。 處於運行狀態的線程若遇到sleep()方法,則線程進入睡眠狀態,不會讓出資源鎖,sleep()方法結束,線程轉為就緒狀態,等待系統重新調度。 處於運行狀態的線程可能在等待io,也可能進入掛起狀態。io完成,轉為就緒狀態。 處於運行狀態的線程yield()方法,線程轉為就緒狀態。(
Time of Update: 2018-07-26
有一隻兔子,從出生後第3個月起每個月都生一隻兔子,小兔子長到第三個月後每個月又生一隻兔子,假如兔子都不死,問每個月的兔子總數為多少。 /** * 統計出兔子總數。 *
Time of Update: 2018-07-26
《其實。就是在dao層調用函數的時候弄錯,自己調用自己了》 最近做項目出現一個java.lang.StackOverflowError異常。弄了半天,又是問高手,又是查資料的。最後發現,解決問題啦。特記錄下來。 StackOverflowError是由於當前線程的棧滿了 ,也就是函數調用層級過多導致。 比如死遞迴。 如: public String
Time of Update: 2018-07-26
什麼是Cookie。 Cookie是當你瀏覽某網站時,網站儲存在你機器上的一個小文字檔,它記錄了你的使用者ID,密碼、瀏覽過的網頁、停留的時間等資訊,當你再次來到該網站時,網站通過讀取Cookie,得知你的相關資訊,就可以做出相應的動作,如在頁面顯示歡迎你的標語,或者讓你不用輸入ID、密碼就直接登入等。
Time of Update: 2018-07-26
/** * 遞迴演算法 * @author timmy1 * */ public class Recursion { /** * 求n的階乘 * @param n */ public int factorial(int n){ if(n == 1){ return 1; }else{ return n*factorial(n-1); }
Time of Update: 2018-07-26
小弟不才,今天第一次寫部落格,還是寫這種技術分享類的部落格。我寫部落格的目的是我太無聊啦。不廢話啦,講講我學習java的經曆吧。 我在大學裡學習的是軟體編程,當時第一門語言是C,可是C語言編程的工具太難看了,我對這門語言一下子沒什麼興趣了。 後來接觸到java是突然覺得這好像才是我當時理解的編程,當時運行之後就能看到結果在控制台上,不想C需要什麼先行編譯,編譯運行這麼繁瑣。
Time of Update: 2018-07-26
區別一: sleep是Thread類的方法,是線程用來 控制自身流程的,比如有一個要報時的線程,每一秒中列印出一個時間,那麼我就需要在print方法前面加上一個sleep讓自己每隔一秒執行一次。就像個鬧鐘一樣。 wait是Object類的方法,用來線程間的通訊,這個方法會使當前擁有該對象鎖的進程等待知道其他線程調用notify方法時再醒來,不過你也可以給他指定一個時間,自動醒來。這個方法主要是用走不同線程之間的調度的。
Time of Update: 2018-07-26
在Java多線程中,可以使用關鍵字Synchronized實現線程之間互斥。在JDK1.5之後,提供了線程並發庫java.util.concurrent用於操作多線程,其中包含了java.util.concurrent.atomic和java.util.concurrent.lock。atomic可以實現資料或變數的原子性操作,而lock可以實現線程互斥,可以實現讀寫鎖,跟Synchronized一樣同屬於可重新進入鎖,但在使用上比Synchronized更加靈活。