Time of Update: 2018-07-27
&nbs
Time of Update: 2018-07-27
Animal.java: package com.imooc.animal;public class Animal { private String name; private int month; public Animal(){ } public Animal(String name,int month){ this.setName(name);
Time of Update: 2018-07-27
眾所周知,多線程的弊端是會使代碼受到並發訪問的幹擾,解決的辦法就是同步機制。同步的兩種常見形式分別是同步代碼塊和同步函數,兩種形式的鎖都是隱式鎖,前者持有的鎖可以是任意對象,後者持有的鎖是預設的this。 從JDK1.5開始,根據物件導向的思想,將鎖封裝了起來,對外提供Lock介面,並提供了對鎖的顯式操作。Lock介面的出現比synchronized有更多的操作,是同步的替代。
Time of Update: 2018-07-27
1. HashMap概述 HashMap是基於雜湊表的Map介面的非同步實現(Hashtable跟HashMap很像,唯一的區別是Hashtalbe中的方法是安全執行緒的,也就是同步的)。此實現提供所有可選的映射操作,並允許使用null值和null鍵。此類不保證映射的順序,特別是它不保證該順序恒久不變。 2. 四個關注點在HashMap上的答案 關注點 結論 HashMap是否允許空
Time of Update: 2018-07-27
不要在foreach迴圈裡進行元素的remove/add操作。remove元素請使用Iterator方式,如果並行作業,需要對Iterator對象加鎖。 測試一: List<String> list = new ArrayList<String>(); list.add("AAAAA"); list.add("BBBB"); for(String temp : list) {
Time of Update: 2018-07-27
程式計數器:可以看做當前線程運行所執行的位元組碼的行號指標,在虛擬機器的概念性模型中,位元組碼解譯器工作時就是 通過改變這個計數器的值來選取下一條需要執行的位元組碼指令。由於JVM多線程是通過線程輪流切換並分配處理器執行時間 的方式來實現的,在任何一個確定的時刻,一個處理器只會執行一個線程中的指令。為了使線程切換後能夠恢複到正確的 位置,程式計數器必須是線程私人的,隔離儲存區
Time of Update: 2018-07-27
題目描述: 把一個數組最開始的若干個元素搬到數組的末尾,我們稱之為數組的旋轉。輸入一個遞增排序的數組的一個旋轉,輸出旋轉數組的最小元素。例如數組{3,4,5,1,2}為{1,2,3,4,5}的一個旋轉,該數組的最小值為1。 解題思路: 1.暴力解法,遍曆一遍就能找到最小的值,複雜度為O(n),但是沒有l利用數組的特點 2.二分尋找。這裡的數組算是兩個有序的數組,二分尋找對有序數組非常有效,複雜度為O(lgn)。 分析:
Time of Update: 2018-07-27
1. 並發編程概念 原子性 一個操作不能被再拆分了;即一個操作或者多個操作 要麼全部執行並且執行的過程不會被任何因素打斷,要麼就都不執行。一個很經典的例子就是銀行賬戶轉賬問題。 增量操作符++,不是原子的操作,它是先讀取舊值,然後寫回新值,包含2個操作 可見度 可見度是指當多個線程訪問同一個變數時,一個線程修改了這個變數的值,其他線程能夠立即看得到修改的值。 有序性 即程式執行的順序按照代碼的先後順序執行。但是指令重排序會影響到線程並發執行的正確性 總結
Time of Update: 2018-07-27
一直對這個概念很模糊,無法抓到它的點,不明白它的真正含義。 最近看到了Mybatis裡邊動態SQL標籤,裡面的用法讓我對Java的動態載入機制恍然大悟。 @SelectProvider(type = UserDaoSqlProvider.class,method = "findUserByName") List<User> findUserByName(String username) throws IOException;
Time of Update: 2018-07-27
package cn.howso.deeplan.son.feeder.util; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import
Time of Update: 2018-07-27
list的實作類別是ArrayList;具體代碼: list <泛型> 集合名稱; //建立一個list集合構造方法:public 類名(){類名 a1= 集合名稱.ArrayList<泛型>();} import java.util.ArrayList;import java.util.Arrays;import java.util.Iterator;import java.util.List;/* * 存放備選課程類 */public class
Time of Update: 2018-07-27
在Java多線程應用中,隊列的使用率很高,多數生產消費模型的首選資料結構就是隊列。Java提供的安全執行緒的Queue可以分為阻塞隊列和非阻塞隊列,其中阻塞隊列的典型例子是BlockingQueue,非阻塞隊列的典型例子是ConcurrentLinkedQueue,在實際應用中要根據實際需要選用阻塞隊列或者非阻塞隊列。 註:什麼叫安全執行緒。這個首先要明確。安全執行緒就是說多線程訪問同一代碼,不會產生不確定的結果。 LinkedBlockingQueue
Time of Update: 2018-07-27
1.原子性 java中的原子性,是指:原子操作是不能被線程調度機制中斷的;操作一旦開始,它一定會在可能發生的“環境切換”(即切換到其他線程執行)之前執行完畢。 但是千萬不要認為“原子操作不需要同步控制(這是錯誤的)”。 原子性可以應用於除long和double之外的基本類型的簡單操作(賦值和傳回值)。long和double這種64位的資料類型,在JVM內部是通過兩條32位的操作完成的,因此有可能發生環境切換。如果給long和double變數加上volatile關鍵字也可以獲得原子性。
Time of Update: 2018-07-27
,此次升級為瞭解決查詢時每次都要轉成對象集合,實現方式泛型加反射(那個流行的架構又沒用到反射呢),能反射對象就能反射SQL語句,能反射SQL語句你和hibernate架構就很接近 package com.sun.dao;import java.lang.reflect.Method;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import
Time of Update: 2018-07-27
1.Hibernate基礎 1.1. Hibernate用來做什麼 * Hibernate是開源的、用亍封裝資料訪問層的組件,我們稱乊為資料訪問層架構(戒持久層架構)。 乊前我們通過JDBC/SQL語句從資料庫中訪問/操作資料,而Hibernate就是封裝了這些操作,與 門用亍資料訪問層的組件技術。 出現Hibernate架構乊前在企業專案開發過程中,如下幾點造成了程式員們的痛苦: SQL語句過亍繁雜, 和資料庫的耦合度高
Time of Update: 2018-07-27
1.問題 最近在做郵箱裡面的附件下載,搞得是頭昏腦脹,現在把遇到的困難總結下; 2.原始碼 public EmailDetail selectEmailReceivedDetail(String mid, OtherSystemConfig otherSystemConfig,Integer fid){ EmailLogin emailLogin = new EmailLogin();//①建立登入,登入後擷取連結中參數
Time of Update: 2018-07-27
CAS操作可以分為以下三個步驟: 步驟 1.讀舊值(即從系統記憶體中讀取所要使用的變數的值,例如:讀取變數i的值) 步驟2.求新值(即對從記憶體中讀取的值進行操作,但是操作後不修改記憶體中變數的值,例如:i=i+1,這一步只進行 i+1,沒有賦值,不對記憶體中的i進行修改) 步驟3.
Time of Update: 2018-07-27
枚舉是Java 5開始支援的新特性,其作用是將一組相關的常量定義在一個類型中,這樣在使用時就只能使用這些有限的常量。先定義一個代表一周七天的枚舉類型作為範例: Java代碼 enum Weekday { SUNDAY, MONDAY,&
Time of Update: 2018-07-27
package collection; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ListIterator; public class ListDemo { /** * @Collection * 可變長 *
Time of Update: 2018-07-27
內容:對於任意的一個類,都需要由載入它的類載入器和這個類本身一同確立其在Java虛擬機器中的唯一性,每一個類載入器,都擁有一個獨立的類空間。只要載入類的類載入器不同的話,那麼這個兩個類就必定不相等(包括equals()方法,instanceof()方法)。此時,虛擬機器中存在兩個ClassLoaderTest,一個是由系統應用程式類載入器載入的,另一個是由我們定義的類載入器載入的。一個簡單的例子說明:注意getResourceAsStream的應用:Class.getResourceAsStre