當前位置:才華齋>IT認證>JAVA認證>

Java核心技術介紹

JAVA認證 閱讀(9.33K)

Java建立在擴充套件TCP/IP網路平臺上。庫函式提供了用HTTP和FTP協議傳送和接受資訊的方法。下面yjbys小編為大家分享一篇Java核心技術,希望大家喜歡!

Java核心技術介紹

  java中的執行緒有jvm執行緒排程器負責排程2

主要相同點:Lock能完成synchronized所實現的所有功能

主要不同點:Lock有比synchronized更精確的執行緒語義和更好的效能。synchronized會自動釋放鎖,而Lock一定要求程式設計師手工釋放,並且必須在finally從句中釋放。

  Java中的23種設計模式:

Factory(工廠模式), Builder(建造模式), Factory Method(工廠方法模式),

Prototype(原始模型模式),Singleton(單例模式), Facade(門面模式),

Adapter(介面卡模式), Bridge(橋樑模式), Composite(合成模式),

Decorator(裝飾模式), Flyweight(享元模式), Proxy(代理模式),

Command(命令模式), Interpreter(直譯器模式), Visitor(訪問者模式),

Iterator(迭代子模式), Mediator(調停者模式), Memento(備忘錄模式),

Observer(觀察者模式), State(狀態模式), Strategy(策略模式),

Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式)

IO流

?

流的概念來自Unix的管道,在Unix中,管道是一條不間斷的位元組流,

用來實現程序間通訊,或者讀寫外圍裝置,檔案等.

2.一個流,一定會有一個源端和目標端,它們分別可以是計算機記憶體的某個區域,

java中的執行緒有jvm執行緒排程器負責排程1

多執行緒

多程序

每個程序間擁有獨立的記憶體空間

0~4G

單核

系統將cpu所有時間分割為相同的時間片

有核心負責排程

  執行緒屬於程序內部

程序內部的所有執行緒共享程序的記憶體

讓一個程序擁有同時執行多段程式碼的能力

java中的執行緒有jvm執行緒排程器負責排程

  執行緒控制

start() 啟動執行緒

interrupt() 中斷執行緒,喚醒正在休眠執行緒

檢測當前執行緒是否被中斷

isInterrupted() 只檢查中斷標誌

interrupted() 檢查並清除中斷標誌

Java保留兩位小數

採用四捨五入的方式 :

import ecimal;

import malFormat;

import erFormat;

public class format {

double f = 111231.5585;

public void m1() {

BigDecimal bg = new BigDecimal(f);

double f1 = cale(2, D_HALF_UP)leValue();

tln(f1);

}

/**

* DecimalFormat轉換最簡便

*/

public void m2() {

DecimalFormat df = new DecimalFormat("#.00");

tln(at(f));

}

一個java的DES加解密類轉換成C#

一個java的des加密解密程式碼如下:

//package ;

import rity.*;

//import ern;

//import table;

import to.*;

import .*;

import .*;

/**

* des加密解密

*/

public class DESPlus {

private static String strDefaultKey = "PLFP"; //預設金鑰

private static final byte[] iv = {0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef};//des 向量

private static BASE64Encoder enc = new BASE64Encoder();//將byte[]轉換成String

private static BASE64Decoder dec = new BASE64Decoder(); //將String轉換成byte[]

Java正則表示式中的Possessive數量修飾詞的理解

正則表示式對於數量限定符如 ?, + , *, {n, m} 的匹配預設是貪婪模式,比如:

a.*b 匹配 acbab 的結果是 acbab 而不是acb

正則表示式支援懶惰模式,也就是在數量限定符後加一個數量修飾詞(quantifier),用問號表示, 比如:

a.*?b 匹配 acbab 的結果是 acb 而不是acbab

而Java語言在正則表示式中支援一種Possessive 數量修飾詞 ,用加號表示。其字面意思是像貪婪模式一樣匹配,但不回溯。這到底是什麼意思呢?其實這和匹配演算法相關,比如:

在貪婪模式下,正則表示式 a.*b 在匹配 acbac時,在匹配成功第一個字元a後,匹配演算法會繼續往後讀取字元a之後的字元來匹配.* , 這時貪婪模式就起作用了,a後面的cbac都能匹配.*,但當匹配演算法繼續往後讀取字元時,發現已經沒有字元可讀了,無法匹配正則表示式中的b了,於是就回溯一個字元,看c是否能匹配b,不能,繼續回溯,直到回溯到b時,才匹配到了acb。 而a.*+b在匹配時是不會回溯的,也就是說當貪婪地讀到最後一個字元時發現無有字元與b匹配了,就認為匹配失敗了。

再舉幾個例子

(ab)*+a 匹配 ababacd 時 可以匹配到 ababa , 因為兩個ab之後沒有ab了,無法貪婪

a?+a 匹配aaaaa 時會匹配到 aa ,但 a++a和a{0, 10}+a卻會匹配失敗

struts2標籤中字串及字元替換

1.替換內容為單個字元:

2.替換內容為多個字元:

  Java虛擬機器的垃圾收集演算法

一 標記-清除演算法(Mark-Sweep)

首先標記出所有需要回收的物件,標記完成後統一回收。

主要缺點: 1. 標記和清除效率都很低 2. 產生大量不連續的'記憶體碎片,導致後面分配大記憶體空間失敗

二 複製演算法

將可用記憶體劃分為大小相等的兩塊, 每次只使用其中一塊。 當這塊用完後,就將還存活物件複製到另外一塊上面,再把已經使用的記憶體空間一次清理掉。

主要缺點: 代價太高,至少一半的記憶體不能使用。

三 標記-整理演算法

標記過程和標記-清除演算法一致,但是後續步驟是讓所有存活的物件都向一端移動,然後清理掉邊界以外的記憶體。

四 分代收集演算法

當前商業虛擬機器都採用此演算法,分為不同物件代,去進行不同管理。

vector和ArrayList和linklist的內部資料結構

Java面試中關於容器類List,Set是必問題目。但在我的面試經歷中很難遇到滿意的答覆。大部分只能瞭解其大概使用方法,對其內部結構缺乏瞭解,錯誤的使用方式會導致效能大幅下降。

首先介紹ArrayList,顧名思義內部資料結構是陣列

Java程式碼

private transient Object[] elementData;

private int size;

public ArrayList(int initialCapacity){

}

在增加元素時,若容量不足進行擴充

Java程式碼

public void ensureCapacity(int minCapacity) {

modCount++;

int oldCapacity = th;

if (minCapacity > oldCapacity) {

Object oldData[] = elementData;

int newCapacity = (oldCapacity * 3)/2 + 1;

if (newCapacity < minCapacity)

  JAVA打蜜蜂小遊戲原始碼2

for (var upperspc = 0; upperspc < downno; upperspc++) {

if (missiley == upperspc) {

downlf = downlf + blankx[missilex]+"|"+cr;

} else { downlf = downlf+cr; }

}

if (inplay == 1) {

patno = patno + 1;

if (patno >= 3) { patno = 1; }

for (var addline = 1; addline < 5; addline++){

mestotal[addline] = totalblank;

rsmiss = "";

if (missiley == (downno+addline*2-2)) {

if (blankno <= missilex) {

hitflag = parseInt((missilex-blankno)/7, 10);

if (hitflag < 6) {

if ((missilex - blankno - (hitflag * 7)) >= 1) {

if ((missilex - blankno - (hitflag * 7)) <= 5) {