1:a=10,b=15,在不用第三方變量的前提下,把a,b的值互換
2:已知數組int[] max={6,5,2,9,7,4,0};用快速排序算法按降序對其進行排列,並返回數組
3:請簡述面向對象的多態的特性及意義!
4:session喜歡丟值且佔內存,Cookis不安全,請問用什麼辦法代替這兩種原始的方法
5:對數據的併發採用什麼辦法進行處理較好。
6:已知Oracle數據庫有GD和ZS兩個數據庫,GD數據庫v_s表有數據寫入時,從v_s表中提取最新數據到ZS數據庫的D_E表中。請問用什麼辦法解決這一問題?若是又碰到不能互訪的問題時,又用什麼辦法解決?
7:已知Oracle數據庫a,b
如今在a用戶權限下,訪問b數據庫sql語句爲select a.* From b a,請改正這一句Sql的寫法
8:當對數據庫進行海量級的數據插入時,數據庫出現報錯,錯誤緣由可能有哪些,以你的經驗談談你的解決辦法
9:算法分析
AH 20060625 12 44 01 CAD001
AH 20060625 12 44 01 CAD001
AH 20060625 13 44 02 CAD001
AH 20060625 14 44 03 CAD001
說明:第二列表示日期,第三列表示溫度,第四列表示水位,第五列表示流量,第6列表示水位測站編碼,每一列表示一個字段
很明顯第一條數據和第二條數據重複,然數據表中有主鍵和外鍵的約束,是不容許有重複的數據存在的,請構造算法將重複的數據Del掉
10:javascript算法
已知a,b,如今點鼠標a會向b遊動,鼠標停,a會停下來
請實現"跑步算法"
一、答案
a=a+b;
b=a-b;
a=a-b;
還有變態要求,須要代碼最短呢。有兩個結果:
1) a^=b^(b^=a^b); // 13個字節
2) a=b+(b=a)*0; // 11個字節
二、答案(若是不限定算法,其實能夠直接用Array.Sort()方法的)
public class TestQuickSort {
private int[] array = null;
private void quickSort(int lowest, int highest) {
if (array == null || lowest < 0 || lowest >= highest
|| highest >= array.length) {
return;
}
int low = lowest;
int high = highest;
int key = low++;
for (; low <= high;) {
if (key < high) {
if (array[key] > array[high]) {
array[high] = array[key] + (array[key] = array[high]) * 0;
key = high;
}
high--;
}
if (key > low) {
if (array[key] < array[low]) {
array[low] = array[key] + (array[key] = array[low]) * 0;
key = low;
}
low++;
}
}
quickSort(lowest, key - 1);
quickSort(key + 1, highest);
}
/**
* @param args
*/
public static void main(String[] args) {
TestQuickSort test = new TestQuickSort();
int[] array = {6,5,2,9,7,4,0};
test.array = array;
test.quickSort(0, array.length - 1);
int length = test.array.length;
for (int i = 0; i < length; i++) {
System.out.println(test.array[i]);
}
}
}
不要用冒泡排序法很慢,選擇排序好些,但題意是快速排序算法
快速排序算法的基本思想:
快速排序的基本思想是基於分治策略的。對於輸入的子序列ap..ar,若是規模足夠小則直接進行排序,不然分三步處理:
分解(Divide):將輸入的序列ap..ar劃分紅兩個非空子序列ap..aq和aq+1..ar,使ap..aq中任一元素的值不大於aq+1..ar中任一元素的值。
遞歸求解(Conquer):經過遞歸調用快速排序算法分別對ap..aq和aq+1..ar進行排序。
合併(Merge):因爲對分解出的兩個子序列的排序是就地進行的,因此在ap..aq和aq+1..ar都排好序後不須要執行任何計算ap..ar就已排好序。
這個解決流程是符合分治法的基本步驟的。所以,快速排序法是分治法的經典應用實例之一。
算法Quick_Sort的實現:
Pascal實現:
Procedure Quick_Sort(p,r:TPosition;var L:TList); {快速排序}
var
q:TPosition;
begin
if L[p..r]足夠小 then Sort(p,r,L) {若L[p..r]足夠小則直接對L[p..r]排序}
else
begin
q:=Partition(p,r,L); {將L[p..r]分解爲L[p..q]和L[q+1..r]兩部分}
Quick_Sort(p,q,L); {遞歸排序L[p..q]}
Quick_Sort(q+1,r,L); {遞歸排序L[q+1..r]}
end;
end;
三、答案
面向對象的編程使用了派生繼承 以及虛函數機制.
一個原本指向基類的對象指針能夠指向其派生類的.並訪問從基類繼承而來的成員變量和函數.
而虛函數是專門爲這個特性設計的,這個函數在每一個基類的派生類中都是同一個名字,但函數體卻並不必定相同,派生類每每爲實現本身的功能而修改這個虛函數.這樣用一個指針就可以實現對多種不一樣的派生類的訪問, 並實現其派生類的特定功能(代碼 )....
四、答案
用VIEWSTATE
stateserver
五、答案
能夠控制鏈接池的鏈接數量條件好的話 能夠用負載平衡
六、答案
一箇中型或大型公司每每由地理上分散的部門所組成,這些部門一般須要進行數據共享。針對這些共享數據,能夠將其存儲在某個站點上,須要的用戶都從這個站點上存取。這種方案的優勢是數據的一致性容易保證,但其缺點也是很突出的,那就是該站點的負載大、網絡負載大,遠程用戶的數據響應遲緩。數據複製技術能夠有效地解決這個問題,它經過將這些共享數據複製到位於不一樣地點的多個數據庫中,從而實現數據的本地訪問,減小了網絡負荷,並提升了數據訪問的性能,並且經過對數據庫中的數據按期同步(一般是天天晚上),從而確保了全部的用戶使用一樣的、最新的數據。該技術適用於用戶數量較大、地理分佈較廣、並且須要實時地訪問相同數據的應用模式。
數據複製的概念及特色
一、數據複製的概念及分類
數據複製,就是將數據庫中的數據拷貝到另一個或多個不一樣的物理站點上,從而保持源數據庫與目標數據庫中指定數據的一致性。
按照數據複製的實時性,數據複製可分爲同步數據複製和異步數據複製。同步數據複製是指將本地生產數據以徹底同步的方式複製到異地,每一本地IO交易均需等待遠程複製的完成方予以釋放。異步數據複製則是指將本地生產數據之後臺同步的方式複製到異地,每一本地IO交易均正常釋放,無需等待遠程複製的完成。同步複製實時性強,遠端數據與本地數據徹底同步。但這種方式受帶寬影響較大,數據傳輸距離較短。異步複製不影響本地交易,傳輸距離長,但其數據比本地數據略有延遲。在異步複製環境中,對於全部應用最關鍵的就是要確保數據的一致性。
按照複製站點的類型,數據複製可分爲多主控站點複製、物化視圖複製及混合複製。多主控站點複製也稱爲對等站點複製,其中每一個站點都是主控站點,都須要與其餘站點進行信息交流,各站點之間是平等的。物化視圖複製包含一個主控站點、一個或多個物化視圖站點,
物化視圖中的內容能夠爲目標主對象在某個時間點的所有拷貝或部分拷貝,其中目標主對象既能夠是主控站點上的表也能夠是物化視圖站點上的主物化視圖。混合複製包含多個主控站點和多個物化視圖站點,是主控站點複製和物化視圖複製的結合體,適合於複雜的業務狀況。
二、數據複製的特色
數據複製經過在多個站點上創建備份,可以提升數據的安全性,同時也提升了數據的可用性,這是由於若是一個站點出現了問題,用戶能夠選擇其餘站點繼續進行操做,應用系統還可繼續運行,從而數據複製提供了容錯保護機制。
然而數據複製最基本的功能是提升數據庫的性能。它經過將遠程數據庫中的數據複製到本地,使得應用可以就近訪問數據,從而下降網絡傳輸負載,提升效率。並且在數據複製系統中,能夠提供多個站點之間的負載平衡,讓這幾個用戶使用這個服務器,另外幾個用戶能夠
使用其餘的服務器,以免某些站點負載太重。
物化視圖還提供了按子集進行復制,這樣各站點就可只複製本身須要的數據,也能減輕網絡的傳輸量。
數據複製的實現方法
在具體的實現以前,首先要作好設計與規劃。這就須要細緻分析具體的業務狀況,設計出一套可以知足業務須要的方案。一般在設計過程當中,須要肯定出要創建的數據庫站點,各站點的類型,須要複製的數據對象,以及同步方式、衝突解決方案等內容。
在設計完成以後,就可具體來實現數據複製,實現主要包括如下幾步:
(1)建立複製站點
(2)建立組對象
(3)配置衝突解決方案
下面咱們舉一個例子來講明各步具體須要完成的工做。在這個例子中咱們採用多主控站點複製方式,設有兩個主控站點和兩個共享數據表。兩個主控站點分別爲:處理站點(cl.world)和解釋站點(js.wo rld);兩個數據表爲測區( survey)和測線( line)。
STEP1 建立複製站點
(2)建立用戶—複製管理員,併爲該用戶受權複製管理員負責複製站點的建立和管理,每一個複製站點都必須建立複製管理員:
CREATE USER repadmin IDENTIFIED BY repadmin;
BEGIN
DBMS_REPCAT_ADMIN.GRANT_ADMIN_ANY_SCHEMA (username => ’repadmin’);
END;
(3)爲本站點指定傳播者
傳播者負責將本地最新更新的數據傳播到其餘站點上:
BEGIN
DBMS_DEFER_SYS.REGISTER_PROPAGATOR (username => ’repadmin’);
END;
(4)爲本站點指定接收者
接收者負責接收其餘站點上的傳播者傳送過來的數據:
BEGIN
DBMS_REPCAT_ADMIN.REGISTER_USER_REPGROUP (
username => ’repadmin’,
privilege_type => ’receiver’,
list_of_gnames => NULL);
END;
(5)肯定清除時間
爲了使傳送過來事務隊列不致過大,須要將成功加載的事務從事物隊列裏清除掉,這裏設定每小時清除一次。
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PURGE (
next_date => SYSDATE,
interval => ’SYSDATE + 1/24’,
delay_seconds => 0);
END;
在創建好站點cl.world後,以一樣的方法建立站點js. world。
(6)建立各主控站點之間的調度連接
建立各主控站點之間的調度連接須要先在各主控站點間創建數據庫連接,以後爲每一個數據庫連接定義調度時間。
首先,在處理站點上創建與解釋站點的數據庫連接,這裏須要先創建一個公用數據庫連接,供其餘私有數據庫連接來使用。
CREATE PUBLIC DATABASE LINK js.world USING ’js.world’;
CREATE DATABASE LINK js.world CONNECT TO repadmin
IDENTIFIED BY repadmin;
一樣,在解釋站點上創建與處理站點的數據庫連接
CREATE PUBLIC DATABASE LINK cl.world USING ’cl.world’;
CREATE DATABASE LINK cl.world CONNECT TO repadmin
IDENTIFIED BY repadmin;
調度連接肯定本站點上的事務向其餘站點發送的頻度,下面的代碼爲10分鐘一次:
BEGIN
DBMS_DEFER_SYS.SCHEDULE_PUSH (
destination => ’js.world’,
interval => ’SYSDATE + (1/144)’,
next_date => SYSDATE,
parallelism => 1,
execution_seconds => 1500,
delay_seconds => 1200);
END;
在解釋站點上作相同的工做STEP2 建立主控組在複製環境中,Oracle用組來管理複製對象。經過將相關的複製對象放在一個組裏,從而方便對大量數據對象的管理。
這裏咱們假設用戶模式integr ation 在處理站點和解釋站點都已存在,並且表測區(survey )和測線(line)也已經建立。
(1)建立主控組對象
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPGROUP (
gname => ’inte_repg’);
END;
(2)向主控組中添加數據對象,將測區表survey加入到組inte_repg中
BEGIN
DBMS_REPCAT.CREATE_MASTER_REPOBJECT (
gname => ’inte_repg’,
type => ’TABLE’,
oname => ’survey’,
sname => ’integration’,
use_existing_object => TRUE,
copy_rows => FALSE);
END;
以一樣的方法將測線表line 加入到組inte_repg中
(3)在主控組中添加其餘參與複製的站點,數據庫之間的同步方式在此指定
BEGIN
DBMS_REPCAT.ADD_MASTER_DATABASE (
gname => ’inte_repg’,
master => ’js.world’,
use_existing_objects => TRUE,
copy_rows => FALSE,
propagation_mode => ’ASYNCHRONOUS’);
END;
(4)若是可能出現衝突,則須要配置衝突解決方案。衝突解決方案將在後面介紹。
(5)爲每一個對象生成複製支持
BEGIN
DBMS_REPCAT.GENERATE_REPLICATION_SUPPORT (
sname => ’integration’,
oname => ’survey’,
type => ’TABLE’,
min_communication => TRUE);
END;
測線表line也同樣
(6)從新開始複製
BEGIN
DBMS_REPCAT.RESUME_MASTER_ACTIVITY (
gname => ’inte_repg’);
END;
以一樣的方式設置解釋站點。設置成功後,數據複製過程就宣告完畢,庫中的數據就可進行復制。
數據複製中衝突的解決方案
在複製環境中,儘管在數據庫和應用程序設計過程當中,會盡可能避免各站點間衝突的發生,但徹底避免衝突的可能性仍是比較小的,那麼一旦衝突發生,就須要一個按照具體業務規則的衝突解決機制,來使得各站點的數據保持一致。
首先須要分析哪些對象容易出現衝突。一般來講,靜態的數據變化少,衝突出現的可能性也小;而有些數據變化很是大,衝突出現的可能性也大。肯定了衝突易發的對象後,須要肯定怎樣解決衝突,好比在各站點之間創建優先次序,在數據不一致時,以某個站點上的爲
準;或以某個站點上最新的修改成準。
Oracle提供了多中衝突解決方案,具體包括:針對更新衝突的方案、針對惟一性衝突的方案、針對刪除衝突的方案。除了這些方案之外,用戶還能夠自定義衝突解決方法。每種方案都有本身的適用狀況,那麼咱們須要根據具體的業務來選擇合適的衝突解決方案。
結束語
本文詳細介紹了分佈式系統Oracle中的數據複製技術,在具體應用中,還有許多比較複雜的問題須要解決,好比主控組中若是包含循環依賴的表或自相關的表時如何處理;如何利用模版機制來建立物化視圖站點;如何對數據複製環境進行管理與維護。這些問題須要在實際
應用中逐步探索,深刻研究。
七、答案
select a.* from b.b a
八、答案
對於oracle數據庫來講,可能出現的問題包括:
1. 回滾區間空間不足 --- 解決方法,增長表空間
2. 數據表空間不足 ---- 增長數據表空間
3. 表空間不足 ---- 增長表空間(oracle數據表有空間限制)
4. 臨時表空間不足 --- 由於計算索引使用臨時表空間,增長表空間或者暫時不使用索引,數據導入完畢再從新創建索引
5.另一些緣由,主要是垃圾數據形成的,好比外鍵匹配,主鍵衝突,單一索引衝突等。
九、答案
DELETE FROM TABLE_NAME
WHERE ROWID!=(SELECT MAX(ROWID) FROM TABLE_NAME D
WHERE TABLE_NAME.COL1=D.COL1 AND TABLE_NAME.COL2=D.COL2);
十、答案