- 相關推薦
Java核心技術介紹
Java建立在擴展TCP/IP網絡平臺上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。下面yjbys小編為大家分享一篇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流
1.what?
流的概念來自Unix的管道,在Unix中,管道是一條不間斷的字節流,
用來實現進程間通訊,或者讀寫外圍設備,文件等.
2.一個流,一定會有一個源端和目標端,它們分別可以是計算機內存的某個區域,
java中的線程有jvm線程調度器負責調度1
多線程
多進程
每個進程間擁有獨立的內存空間
0~4G
單核
系統將cpu所有時間分割為相同的時間片
有內核負責調度
線程屬于進程內部
進程內部的所有線程共享進程的內存
讓一個進程擁有同時執行多段代碼的能力
java中的線程有jvm線程調度器負責調度
線程控制
start() 啟動線程
interrupt() 中斷線程,喚醒正在休眠線程
檢測當前線程是否被中斷
isInterrupted() 只檢查中斷標志
interrupted() 檢查并清除中斷標志
Java保留兩位小數
采用四舍五入的方式 :
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class format {
double f = 111231.5585;
public void m1() {
BigDecimal bg = new BigDecimal(f);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(f1);
}
/**
* DecimalFormat轉換最簡便
*/
public void m2() {
DecimalFormat df = new DecimalFormat("#.00");
System.out.println(df.format(f));
}
一個java的DES加解密類轉換成C#
一個java的des加密解密代碼如下:
//package com.visionsky.util;
import java.security.*;
//import java.util.regex.Pattern;
//import java.util.Hashtable;
import javax.crypto.*;
import javax.crypto.spec.*;
import sun.misc.*;
/**
* 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 = elementData.length;
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) {
【Java核心技術介紹】相關文章:
SUN JAVA認證介紹08-09
java認證考試介紹07-31
sun java認證考試介紹10-23
java認證考試細則介紹08-19
J2EE核心技術08-05
電腦速記的核心技術是什么06-16
Sun認證Java開發員考試介紹10-09
Java與Java web的區別08-10
嵌入式系統開發核心技術06-25
J2EE的13種核心技術09-01