1java如何避免內存溢出
及時釋放資源
"上面的代碼中,循環申請了Object對象,並添加到Vector中,然後將對象設置爲null,可是這些對象因爲被Vector引用着,因此並不能被GC回收,因此造成了內存泄漏。因此,要釋放這些對象,還需要被它們從Vector刪除,最簡單的方法就是將Vector設置爲null"
2 事務是什麼?單表的增刪改會產生事務嗎
對數據庫進行crud操作時所執行的一系列操作都要保證正確的執行 保證事物的完整性
3 java反射是什麼
通過自己發現自己的屬性和方法來構造對象
和new的區別
4 gc是什麼
當對象失去引用時 對對象進行回收
5 ajax get與post請求區別?
function btn_get_click() {
var xmlHttp = window.XMLHttpRequest ?
new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
var username = document.getElementById("txt_username").value;
var age = document.getElementById("txt_age").value;
//添加參數,以求每次訪問不同的url,以避免緩存問題
xmlHttp.open("get", "Server.aspx?username=" + encodeURIComponent(username)
+ "&age=" + encodeURIComponent(age) + "&random=" + Math.random());
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
document.getElementById("result").innerHTML = xmlHttp.responseText;
}
}
//發送請求,參數爲null
xmlHttp.send(null);
}
function btn_post_click() { var xmlHttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"); var username = document.getElementById("txt_username").value; var age = document.getElementById("txt_age").value; var data = "username=" + encodeURIComponent(username) + "&age=" + encodeURIComponent(age); //不用擔心緩存問題 xmlHttp.open("post", "Server.aspx", true); //必須設置,否則服務器端收不到參數 xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xmlHttp.onreadystatechange = function () { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { document.getElementById("result").innerHTML = xmlHttp.responseText; } } //發送請求,要data數據 xmlHttp.send(data); }get請求時,需要加上隨機數,避免緩存問題
post需要設置請求消息頭
6 閉包作用
Js代碼
function f1(){
n=999;
function f2(){
alert(n); // 999
}
}
在上面的代碼中,函數f2就被包括在函數f1內部,這時f1內部的所有局部變量,對f2都是可見的。但是反過來就不行,f2內部的局部變量,對f1 就是不可見的。這就是Javascript語言特有的“鏈式作用域”結構(chain scope),
各種專業文獻上的“閉包”(closure)定義非常抽象,很難看懂。我的理解是,閉包就是能夠讀取其他函數內部變量的函數。
由於在Javascript語言中,只有函數內部的子函數才能讀取局部變量,因此可以把閉包簡單理解成“定義在一個函數內部的函數”。
所以,在本質上,閉包就是將函數內部和函數外部連接起來的一座橋樑。
一個是前面提到的可以讀取函數內部的變量,另一個就是讓這些變量的值始終保持在內存中。7 hibernate load與get區別
在hibernate中我們知道如果要從數據庫中得到一個對象,通常有兩種方式,一種是通過session.get()方法,另一種就是通過session.load()方法,然後其實這兩種方法在獲得一個實體對象時是有區別的,在查詢性能上兩者是不同的。
session = HibernateUtil.openSession(); User user = (User)session.load(User.class, 2); System.out.println(user);使用load時會發生延遲加載
這個user對象僅僅是一個保存了id的代理對象,但如果我需要打印出user對象的其他屬性值時,這個時候會不會發出sql語句呢?答案是肯定的
②如果使用load方式來加載對象,當我們試圖得到一個id不存在的對象時,此時會報ObjectNotFoundException異常:
session = HibernateUtil.openSession(); /* * 當通過get方式試圖得到一個id不存在的user對象時,此時會報ObjectNotFoundException異常 */ User user = (User)session.load(User.class, 20); System.out.println(user.getId()); System.out.println(user.getUsername());
我們看看控制檯的輸出:
20 Hibernate: select user0_.id as id0_0_, user0_.username as username0_0_, user0_.password as password0_0_, user0_.born as born0_0_ from user user0_ where user0_.id=? org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.xiaoluo.bean.User#20]......
爲什麼使用load的方式和get的方式來得到一個不存在的對象報的異常不同呢??其原因還是因爲load的延遲加載機制,使用load時,此時的user對象是一個代理對象,僅僅保存了當前的這個id值,當我們試圖得到該對象的username屬性時,這個屬性其實是不存在的,所以就會報出ObjectNotFoundException這個異常了。
8 hibernate 查詢的方式 除hql 還有哪些的?
http://blog.sina.com.cn/s/blog_7ffb8dd501014a6o.html
從點到面,講講hibernate查詢的6種方法。分別是HQL查詢 ,對象化查詢Criteria方法,動態查詢DetachedCriteria,例子查詢,sql查詢,命名查詢。 如果單純的使用hibernate查詢數據庫只需要懂其中的一項就可以完成想要實現的一般功能,但是 從一個點,讓我們掌握6中方法,則提供了更多選擇。每一種方法都有其適用的情況與前提。 HQL查詢 HQL是hibernate自己的一套查詢語言,於SQL語法不同,具有跨數據庫的優點。示例代碼: static void query(String name){ Session s=null; try{ s=HibernateUtil.getSession(); //from後面是對象,不是表名 String hql="from Admin as admin where admin.aname=:name";//使用命名參數,推薦使用,易讀。 Query query=s.createQuery(hql); query.setString("name", name); List<Admin> list=query.list(); for(Admin admin:list){ System.out.println(admin.getAname()); } }finally{ if(s!=null) s.close(); } } 適用情況:常用方法,比較傳統,類似jdbc。缺點:新的查詢語言,適用面有限,僅適用於Hibernate框架。 對象化查詢Criteria方法:條件查詢 static void cri(String name,String password){ Session s=null; try{ s=HibernateUtil.getSession(); Criteria c=s.createCriteria(Admin.class); c.add(Restrictions.eq("aname",name));//eq是等於,gt是大於,lt是小於,or是或 c.add(Restrictions.eq("apassword", password)); List<Admin> list=c.list(); for(Admin admin:list){ System.out.println(admin.getAname()); } }finally{ if(s!=null) s.close(); } } 適用情況:面向對象操作,革新了以前的數據庫操作方式,易讀。缺點:適用面較HQL有限。 sql查詢 static List sql() { Session s = HibernateUtil.getSession(); Query q = s.createSQLQuery("select * from user").addEntity(User.class); List<User> rs = q.list(); s.close(); return rs; } 適用情況:不熟悉HQL的朋友,又不打算轉數據庫平臺的朋友,萬能方法 缺點:破壞跨平臺,不易維護,不面向對象。
9 oracle的優化
爲經常出現在where ,order by,distinct後面的字段創建索引
減少表之間關聯
10 jquery與dom相互轉換
var obj = document.getElementById("d1")
$o = $(obj); //dom-->jquery
$o = $("#d1");//jquery-->dom
var obj = $o.get(0);
11 js addclass 與css作用
<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("button").click(function(){
$("p:first").addClass("intro");
});
});
</script>
<style type="text/css">
.intro
{
font-size:120%;
color:red;
}
</style>
</head>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
<p>This is another paragraph.</p>
<button>向第一個 p 元素添加一個類</button>
</body>
</html>
12 title 與 alt 區別
alt 用來給圖片來提示的。Title用來給鏈接文字或普通文字提示的。
用法如下:
<p Title="給鏈接文字提示">文字</p>
<a href="#" Title="給鏈接文字提示">文字</a>
<img src="圖片.gif" alt="給圖片提示">
13 string stringbuffer區別
14 分頁查詢 聚合函數的使用
SELECT*
FROM(SELECTROWNUMASrowno,t.*
FROMempt
WHEREhire_dateBETWEENTO_DATE('20060501','yyyymmdd')
ANDTO_DATE('20060731','yyyymmdd')
ANDROWNUM<=20)table_alias
WHEREtable_alias.rowno>=10;
常用的count()求個數 sum() 求和 avg()求平均數 min()最小值 max()最大值 一般與group by 語句使用
15 存儲過程與函數區別
函數必須要有返回值
16 tcp 和 udp區別
1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接
2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重複,且按序到達;UDP盡最大努力交付,即不保證可靠交付3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的
UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節
6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道
17 hashmap結構
底層採用數據加鏈表的方式實現
18 表空間 臨時表空間 遊標
臨時表空間 在事物提交前存儲數據的地方
一個表空間是由具體的一個或多個用戶模式下的表,索引等等裏面的數據所構成的.臨時表空間
遊標是指針
19 數值賦值和引用賦值區別
數值賦值大多數是在棧區分配內存,引用賦值是在方法區開闢內存
20 list
public class listTest {
public static void main(String[] args) {
List list = new ArrayList();
Person p1 = new Person("kk", 34);
Person p2 = new Person("jj", 66);
list.add(p1);
list.add(p2);
for (Object obj : list) {
if (obj instanceof Person) {
Person p = (Person) obj;
p.name = "kevin";
p.age = 11;
}
}
System.out.println(p1.name);
System.out.println(p1.age);
System.out.println(p2.name);
System.out.println(p2.age);
}
}
<pre name="code" class="java">kevin
11
kevin
11
21 io 採用什麼模式
裝飾模式
22 spring如何處理異常的
攔截器
23 數據源如何加載的
24 二級緩存 如何實現 緩存在哪裏
25java singleton 與 spring singleton 區別
26 hibernate 模版的使用
25 http 1 2 3 4 5 含義
readyState
存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。
|
|
status |
200: "OK" 404: 未找到頁面 |
26 視圖解析器 多個展現頁面
27 事務 隔離 傳播
對數據庫進行crud操作時執行的一系列動作,都要保證能夠正確的執行
一個事務對數據庫的修改與並行的另一個事務的隔離程度 committed 一個事物不會讀取並行的另一個事物已修改但未提交的數據
事物傳播 required 支持當前事物,如果當前沒有事物就創建一個新事物
28 java 序列化是爲了解決什麼問題,爲什麼要序列化呢
29. 多線程訪問一個變量,會出現什麼問題。
30. 異常類有哪幾種類型。
http://blog.csdn.net/woshixuye/article/details/8230407
31. 講一講你接觸的框架的區別。
32.棧裏放的是什麼,堆裏放的是什麼