--啟用Ad Hoc Distributed Queries
--(使用以下兩句代碼的原因:下面的sql中,其中有幾個(gè)從其他數(shù)據(jù)庫(kù)導(dǎo)入數(shù)據(jù)的語(yǔ)句,所以必須得先啟用Ad Hoc Distributed Queries,使用結(jié)束后,最好關(guān)閉它 )
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
GO
delete from syscode
insert into syscode
select type,code,name,note,value1,value2 FROM opendatasource('SQLOLEDB','Data Source=192.168.1.101;User ID=sa; Password=***').[DATABASE_NAME].dbo.syscode
--使用完成后,關(guān)閉Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure
import java.util.ArrayList;
import java.util.Calendar;
public class CAL {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar start = Calendar.getInstance();
System.out.println(start.getTimeInMillis());
ArrayList<Integer> number = new ArrayList<Integer>();
number.add(1);number.add(1);
for (int i = 2; i <= 100000; i++) {
number.add(number.get(i - 1) + number.get(i - 2));
}
Calendar end = Calendar.getInstance();
System.out.println(end.getTimeInMillis());
System.out.println("時(shí)間:" + (end.getTimeInMillis()-start.getTimeInMillis() ));
System.out.println("last:"+number.get(100000));
}
}
項(xiàng)目上有一個(gè)這樣的需求:登錄的時(shí)候選擇一個(gè)單位名稱,然后輸入賬號(hào)完成登錄,下次登錄的時(shí)候,“單位選擇”框里自動(dòng)顯示為上次登錄的頁(yè)面。
具體實(shí)現(xiàn)如下:
{
xtype : 'combo', //這里是選擇單位的Combo
id:'orgname',
store : orgStore,
name:'orgname',
emptyText : '請(qǐng)選擇單位',
displayField : 'orgname',
valueField : 'dbname',
editable : false,
forceSelection : true,
triggerAction : 'all',
shadow : 'frame',
hiddenName : 'dbname',
listeners:{
select:function(){ //增加1個(gè)select函數(shù),當(dāng)選擇的時(shí)候,將選擇結(jié)果保存入cookie
savedbname= Ext.getCmp('orgname').getValue();
Ext.util.Cookies.set('savedbname',savedbname);
}
}
}
var orgStore = new Ext.data.JsonStore( { //這是單位選擇Combo的數(shù)據(jù)源
url : 'test/LoginOrgSelectServlet',
root : 'orgselect',
fields : [ 'orgname', 'dbname' ],
autoLoad : true,
listeners:{load:function(){ //給store添加一個(gè)load監(jiān)聽(tīng)器
var cookiedata = Ext.util.Cookies.get("savedbname");
if (cookiedata!=null){Ext.getCmp('orgname').setValue(cookiedata);} //當(dāng)cookie中的數(shù)據(jù)不為空的時(shí)候,設(shè)置combo的值
}}
});
public List queryDeviceName(String where) {
Session session = this.getSession();
List list = session.createSQLQuery("select number, name from devrepair " + where).list();
return list;
}
List deviceList = this.getDevrepairService().queryDeviceName(where);
StringBuilder sb = new StringBuilder();
sb.append("{devices:[");
for(Object nameinfo:deviceList){ //查詢的結(jié)果為Object
sb.append("{number:'").append(((Object[])nameinfo)[0]).append("',"); //將查詢結(jié)果轉(zhuǎn)化為Object的集合,取值
sb.append("name:'").append(((Object[])nameinfo)[1]).append("'}");
sb.append(",");
}


總體方案:從sql server 中導(dǎo)出建立數(shù)據(jù)庫(kù)的sql文件,在powerdesigner中生成PDM,再將PDM轉(zhuǎn)化為MySql的版本,然后生成數(shù)據(jù)庫(kù)的sql,在MySql中導(dǎo)入sql文件生成數(shù)據(jù)庫(kù)。將sql server 表中已存在的數(shù)據(jù)導(dǎo)出為CSV文件,將CSV文件導(dǎo)入MySql中實(shí)現(xiàn)數(shù)據(jù)遷移。
用到的工具:Excel,PowerDesigner,SQLyog,記事本
1.在sql server 2005中,右鍵點(diǎn)擊數(shù)據(jù)庫(kù)→任務(wù)→生成腳本 按提示點(diǎn)擊下一步,最后將腳本保存到文件xxx.sql

2.打開(kāi)powerdesigner,點(diǎn)擊文件→reverse engineer→database

選擇數(shù)據(jù)庫(kù)類型為sql server 2005

選擇第一步中生成的sql文件
點(diǎn)擊確定,生成sql server 2005版本的PDM文件
3.powerdesigner中,點(diǎn)擊工具→generate physical data model

選擇類型為mysql 5.0,點(diǎn)擊確定生成mysql 5.0版本的pdm,如果出現(xiàn)如下錯(cuò)誤

將detail選項(xiàng)卡中的check model的打鉤去掉
4.powerdesigner中選擇 數(shù)據(jù)庫(kù)→generate database

點(diǎn)擊確定生成Mysql 5.0版本的數(shù)據(jù)庫(kù)腳本文件
5.mysql 中,用source命令從sql文件創(chuàng)建相關(guān)的表 “source d:/xxx.sql”檢查上一步驟中生成的腳本文件,由于是從sql server中生成,數(shù)據(jù)庫(kù)名稱可能是dbo,將dbo改為你打算創(chuàng)建的數(shù)據(jù)庫(kù)名稱
6.sql server中,,右鍵點(diǎn)擊數(shù)據(jù)庫(kù)→任務(wù)→導(dǎo)出數(shù)據(jù) 按提示導(dǎo)出為excel文件,如:xx.xls
7.excel中打開(kāi),選擇文件→另存為csv文件 毋須保留列名,方式選擇utf-8,否則可能出現(xiàn)亂碼的問(wèn)題
8.再將csv文件導(dǎo)入mysql,有多種方式,圖形化界面SQLyog中,直接右鍵表→從CSV中導(dǎo)入數(shù)據(jù) 即可
刪除了A項(xiàng)目,運(yùn)行B項(xiàng)目的時(shí)候總是有A項(xiàng)目的啟動(dòng)信息,甚至物理刪除A項(xiàng)目后都無(wú)法解決,猜測(cè)是A項(xiàng)目的項(xiàng)目文件被保存在myeclipse自帶的tomcat中,網(wǎng)上查了查,沒(méi)有找到相關(guān)的解決辦法,憑感覺(jué)找到以下目錄:
\Workspaces\MyEclipse 8.5\.metadata\.me_tcat\webapps
發(fā)現(xiàn)原來(lái)刪除的A項(xiàng)目的文件都保存在該目錄下,此外該目錄還包括當(dāng)前運(yùn)行的項(xiàng)目,刪除相關(guān)A項(xiàng)目的文件即可解決。
看來(lái) \Workspaces\MyEclipse 8.5\.metadata\.me_tcat\webapps 就是Myeclipse的發(fā)布目錄
你必須學(xué)會(huì)翻##墻,感謝領(lǐng)導(dǎo)!
小明和小強(qiáng)都是王老師的學(xué)生,老師的生日是M月N日,他們都知道老師的生日是以下十組中的一個(gè),老師把M告訴了小明,把N告訴了小強(qiáng),然后問(wèn)他們是否知道自己的生日,小明說(shuō)“如果我不知道小強(qiáng)也不知道”,小強(qiáng)說(shuō)“本來(lái)我不知道,你說(shuō)了這話我就知道了”,小明說(shuō)“那我也知道了 ”。問(wèn)老師的生日是以下的哪個(gè)。
3,4
3,5
3,8
6,4
6,7
9,1
9,5
12,1
12,2
12,8
正在上班 orz..,偶然看到一個(gè)題目,就動(dòng)動(dòng)腦子吧。
按月份排:
3,4 3,5 3,8
6,4 6,7
9,1 9,5
12,1 12,2 12,8
按日期排:
9,1 12,1
12,2
3,4 6,4
3,5 9,5
6,7
3,8 12,8
小明說(shuō)“如果我不知道小強(qiáng)也不知道” 按月份排,小明一定不知道,小明知道月份以后肯定小強(qiáng)不知道,由于12,2 6,7的日期是唯一的,可見(jiàn)月份不是6月或12月,生日可能是以下5個(gè):
按月份排:
3,4 3,5 3,8
9,1 9,5
小強(qiáng)說(shuō)“本來(lái)我不知道,你說(shuō)了這話我就知道了”,除去6,7 12,2,小強(qiáng)原本的選擇如下,
按日期排:
9,1 12,1
3,4 6,4
3,5 9,5
3,8 12,8
現(xiàn)在聽(tīng)完小明說(shuō)的話,剔除6月和12月的數(shù)據(jù),老師的生日可能的日期如下:
按日期排:
9,1
3,4
3,5 9,5
3,8
現(xiàn)在小強(qiáng)知道了,由于3,5 9,5日期重復(fù),所以日期一定不是5,生日的可能的集合為:3,4 3,8 9,1
小明說(shuō)“那我也知道了 ” 小明原本可能的選擇如下,
現(xiàn)在小明以小強(qiáng)的邏輯推斷,也可推知日期一定不是5,而小明自己知道月份,如果為3月,那么小明自己也無(wú)法知道老師的生日,所以只能是9月,
老師的生日為9,1。
JSP頁(yè)面定義了如下幾個(gè)作用域:
頁(yè)面作用域(page scope)、請(qǐng)求作用域(request scope)、會(huì)話作用域(session scope)、應(yīng)用程序作用域(application scope)
頁(yè)面作用域中的對(duì)象僅在當(dāng)前頁(yè)面可用;請(qǐng)求作用域中的對(duì)象在所有處理同一請(qǐng)求的頁(yè)面中都可用;會(huì)話作用域中的對(duì)象用于同一瀏覽器發(fā)出的所有請(qǐng)求;應(yīng)用程序作用域中的對(duì)象被應(yīng)用程序的所有用戶共享。
通過(guò)設(shè)置<jsp:useBean>行為的scope屬性,制定bean應(yīng)該放在哪個(gè)作用域中,例如:
<jsp:useBean id="test" scope="request" class="com.testBean" />
會(huì)話跟蹤過(guò)程解釋:由于HTTP是一種無(wú)狀態(tài)協(xié)議,即服務(wù)器處理完瀏覽器的請(qǐng)求后將忘掉所發(fā)生的事務(wù),當(dāng)瀏覽器再次發(fā)出請(qǐng)求時(shí),Web服務(wù)器并不知道新的請(qǐng)求與之前的請(qǐng)求有何關(guān)系。解決這個(gè)問(wèn)題主要有兩種方法:
1、服務(wù)器在應(yīng)答中返回與該用戶有關(guān)的所有信息,并讓瀏覽器將其作為下一個(gè)請(qǐng)求的一部分發(fā)回去
2、在服務(wù)器的任何位置保存狀態(tài)信息,并且發(fā)回一個(gè)標(biāo)識(shí)符,瀏覽器在下一請(qǐng)求中返回該標(biāo)識(shí)符,然后借由該標(biāo)識(shí)符定位服務(wù)器上的狀態(tài)信息
在這兩種情況下,可以用以下三種方式將狀態(tài)信息發(fā)送給瀏覽器:
1、作為cookie
2、嵌入HTML表單作為隱藏字段
3、進(jìn)行編碼,編入應(yīng)答主體的URL中,一般作為連接到其它應(yīng)用程序的鏈接(也稱作URL復(fù)寫,URL rewriting)
在瀏覽器和服務(wù)器間來(lái)回發(fā)送所有狀態(tài)信息的效率是極低的,所以大多數(shù)現(xiàn)代服務(wù)器都將信息保留在服務(wù)器上,只在瀏覽器和服務(wù)器間傳遞標(biāo)識(shí)符,這就是會(huì)話跟蹤(session tracking),JSP隱藏了cookie會(huì)話跟蹤的所以細(xì)節(jié),并實(shí)現(xiàn)了對(duì)URL復(fù)寫的支持,此外,JSP規(guī)范允許使用安全套接字協(xié)議層(Secure Socket Layer,SSL)內(nèi)置的會(huì)話機(jī)制。在會(huì)話的生命周期中,保存在會(huì)話作用域中的信息可被同一瀏覽器的所有頁(yè)面所用。
在線購(gòu)物(P179):
內(nèi)存使用策略:
1、只把那些真正需要被每個(gè)會(huì)話單獨(dú)擁有的對(duì)象放在會(huì)話作用域中
2、將會(huì)話的有效期設(shè)成比默認(rèn)值更短
3、提供一種顯示的結(jié)束會(huì)話的方法。一個(gè)好的示例就是注銷功能,或者是當(dāng)某件事務(wù)完成時(shí),使會(huì)話失效。在servlet和其他自定義代碼中,可以使用HttpSession invalidate()方法。
JSP有三種類型的元素:指令元素(directive element)、行為元素(action element)、和腳本元素(script element)。
指令元素:
<%@ page...%> 定義了獨(dú)立于頁(yè)面的屬性,例如會(huì)話跟蹤、錯(cuò)誤處理頁(yè)面、對(duì)緩存的要求等
<%@ include...> 在翻譯階段引入文件
<%@ taglib...> 聲明一個(gè)在頁(yè)面中使用的包含自定義行為的標(biāo)記庫(kù)
標(biāo)準(zhǔn)行為元素:
<jsp:usebean> 使一個(gè)JavaBeans在當(dāng)前頁(yè)面可用
<jsp:getProperty> 從JavaBeans中獲得某個(gè)屬性值,并將其添加到應(yīng)答中
<jsp:setProperty> 設(shè)置JavaBeans的屬性值
<jsp:include> 在請(qǐng)求處理階段引入來(lái)自一個(gè)servlet或頁(yè)面的應(yīng)答結(jié)果
<jsp:forward> 將對(duì)請(qǐng)求的處理轉(zhuǎn)交給一個(gè)servlet或JSP頁(yè)面
<jsp:param> 使用<jsp:forward> 或<jsp:include> 時(shí),向這個(gè)請(qǐng)求添加參數(shù)
<jsp:plugin>
自定義行為元素和標(biāo)準(zhǔn)標(biāo)記庫(kù):JSTL,JSP標(biāo)準(zhǔn)標(biāo)記庫(kù)(JSP Standard Tag Library),可以用擴(kuò)展API開(kāi)發(fā)自定義行為
腳本元素:
<%...%> 小腳本,用于嵌入腳本代碼
<%=...%> 用于嵌入JAVA表達(dá)式
<%!...%> 聲明變量和方法