(系統版本 Windows 7 旗艦版)Windows 7真是讓人又愛又恨啊!本人電腦之前已安裝 SQL Server 2005,安裝過程都沒什么問題,很快搞定,可是裝一個Oracle 10g卻花了我一個晚上的時間!不過總算安裝成功了!雖然還沒有正式開始使用,但是興奮之余迫不及待要和大家分享一下經驗!
首先要下載支持Vista版本的Oracle 10g(以下鏈接地址在瀏覽器中打開沒用,復制下面地址然后在迅雷中新建下載任務即可下載),下載完成后解壓出來:http://download.oracle.com/otn/nt/oracle10g/10203/10203_vista_w2k8_x86_production_db.zip
網上搜索了一些資料,安裝的第一步就是要修改安裝文件目錄中的兩個refhost.xml文件,分別在目錄db\Disk1\stage \prereq\db和\db\Disk1\stage\prereq\db_prereqs\db下。右鍵記事本打開對其進行編輯,找到如下代碼段:
<!--Microsoft Windows vista-->
<OPERATING_SYSTEM>
<VERSION VALUE="6.0"/>
</OPERATING_SYSTEM>
在其后增加:
<!--Microsoft Windows 7->
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
原理:Oracle 至今沒有推出針對windows7的版本,在安裝的版本檢測時提示目前oracle不支持version為6.1的windows OS系統。從oracle官方下載oracle 10g for vista and windows2K8 x86版for windows是支持vista內核的,windows7的內核與2008以及vista的內核大致上是差不多的,經過以上修改可以繞過Oracle對系 統版本的檢查而正常安裝!
取消Windows 7的UAC權限保護,方法為在開始菜單運行:msconfig,找到“工具”標簽,選中UAC相關條目,點擊“運行”,然后將級別調為最低。(這步來自網上,本人不知道有沒有必要)
設置文件夾db\Disk1\install\oui.exe兼容模式,方法為:選中文件點擊右鍵,點“屬性”,將兼容模式設為Vista SP2。
重新啟動安裝程序,一切按常安裝走就可以了。
前期安裝失敗的一些問題,問題如下:
(1)正在檢查網絡配置需求...
檢查完成。此次檢查的總體結果為: 失敗 <<<<
問題: 安裝檢測到系統的主 IP 地址是 DHCP 分配的地址。
建議案: Oracle 支持在具有 DHCP 分配的 IP 地址的系統上進行安裝。但在安裝之前, 必須將 Microsoft LoopBack Adapter 配置為系統的主網絡適配器。有關在配置有 DHCP 的系統上安裝軟件的詳細信息, 請參閱 Installation Guide。
解決方案:發現在檢查配置環境的時候這項停滯不前,如果你點選“用戶已驗證”繼續安裝的話在安裝后期會出現“無法確定主機的IP地址時產生該異常錯誤”, (本機網絡此時設置自動獲得IP地址)Oracle在用Net Configuraton配置網絡服務名時需要取系統的IP地址,而如果解析IP地址錯誤就會出現上述異常,后期電腦安裝也會停滯在這一步,只有解決才能 繼續安裝。 解決辦法:控制面板->添加硬件->是,我也經連接了此硬件->添加新硬件設備->安裝我手動列表選擇硬件(高 級)->網絡適配器->廠商:Microsoft 網卡:Microsoft Loopback Adapter 。不過不好意思:這個是XP里面的設置方法,Windows 7里面的設置方法稍微復雜一點,方法為:“控制面板\所有控制面板項->設備管理器->網絡適配器”然后選擇菜單欄的“操作->添加過 時硬件”點下一步選擇“安裝我手動從列表選擇的硬件高級(M)”,點下一步滑動滾輪選擇“網絡適配器”下一步,在“廠商”那里選擇 “Microsoft”,“網絡適配器”那里選擇“ Microsoft LoopBack Adapter ”一直下一步直到安裝完成。然后回到桌面,右鍵“網絡”->屬性,你會發現兩個“本地連接”,點擊在你剛剛新建的那個本地連接點“屬性”,雙擊 “Internet 協議版本4(TCP/IPv4)”然后隨便設置一個IP地址就OK了。回到安裝程序點擊重試(電腦反應不過來的話可能要多點擊兩次),就可以繼續安裝了。
(2)正在檢查 Oracle 主目錄路徑中的空格...
檢查完成。此次檢查的總體結果為: 失敗 <<<<
問題: 所指定的 Oracle 主目錄的路徑中包含空格 ( )。
解決方案: 必須選擇不包含任何空格的 Oracle 主目錄路徑。
(我嘗試在Windows 7上安裝Oracle 11g時也會出現上述問題)
如果你之前安裝Oracle 10g失敗,那么再次安裝時一定要將之前的Oracle 10g卸載干凈,具體的卸載方法如下:
1、控制面板\所有控制面板項\管理工具\服務 停滯所有Oracle的服務項
2、開始->所有程序->Oracle - OraDb10g_home1->Oracle Installation Products->Universal Installer 點擊“卸載產品”,讓后將你之前所安裝的組件選擇刪除
3、運行regedit,選擇HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE,按del鍵刪除這個入口。
4、運行regedit,選擇HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services,滾動這個列表,刪除所有Oracle入口
5、從桌面上、STARTUP(啟動)組、程序菜單中,刪除所有有關Oracle的組和圖標
6、刪除與Oracle有關的文件,選擇Oracle所在的缺省目錄C:\Oracle,刪除這個入口目錄及所有子目錄.
7、手動刪除你之前的Oracle安裝主路徑的目錄。在做完這些工作之后電腦最好重啟一下。
近日在配置Oracle 10G的流復制環境時,遇到一個問題,關閉數據庫(shutdown immediate)后,通過SQL Plus連接數據庫:conn sys/his@orc0 as sysdba,出現如下錯誤:
ORA-12514: TNS: 監聽程序當前無法識別連接描述符中請求的服務
通過重啟服務的方式啟動數據庫,再次連接卻能成功登錄,也就是說在關閉數據庫狀態下無法連接服務器。
開始以為是系統環境變量Oracle_SID的配置問題,因為機器有多個實例,一陣折騰后還是不能連接。后來查資料得知:
Oracle9i以后,后臺進程PMON自動在監聽器中注冊在系統參數SERVICE_NAMES中定義的服務名,SERVICE_NAMES默認為DB_NAME+DOMAIN_NAME。監聽配置文件listener.ora中可以不必指定監聽的服務名。但是,當數據庫處于關閉狀態下PMON進程沒有啟動,也就不會自動注冊監聽的實例名,所以使用sqlplus sys/his@orc0 as sysdba 會出現ORA-12514錯誤。
如果在listener.ora文件中指定監聽的實例名,則即使數據庫處于關閉狀態,仍然可以連接。
listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = G:\oracle\product\10.2.0\db_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = zyk)(PORT = 1521))
)
)
以上粗體部件為增加的內容,修改后重啟監聽服務后即可。
附:通過在lsnrctl中輸入set display verbose,然后再通過命令service查看,服務狀態為READY表示PMON自動注冊的服務名,而UNKNOWN則表示該服務是手工在LISTENER.ORA中配置的數據庫服務。
轉載于 http://www.cnblogs.com/zyk/archive/2007/10/31/944667.html
1、局部變量能否和全局變量重名?
答:能,局部會屏蔽全局。要用全局變量,需要使用"::"。
局部變量可以與全局變量同名,在函數內引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數內可以定義多個同名的局部變量,比如在兩個循環體內都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環體內。
2、如何引用一個已經定義過的全局變量?
答:使用extern關鍵字。
可以使用引用頭文件的方式,也可以使用extern關鍵字。如果用引用頭文件方式來引用某個在頭文件中聲明的全局變量,假定你將那個變量寫錯了,那么在編譯期間會報錯。如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。
3、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么?
答:可以,在不同的C文件中以static形式來聲明同名全局變量。
可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連接不會出錯。
4、語句for( ;1 ;)有什么問題?它是什么意思?
答:和while(1)相同。
5、do……while和while……do有什么區別?
答:前一個循環一遍再判斷,后一個判斷以后再循環。
6、請寫出下列代碼的輸出內容
#include<stdio.h>
main()
{
int a,b,c,d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf("b,c,d:%d,%d,%d",b,c,d;
return 0;
}
答:10,12,120
7、static全局變量與普通的全局變量有什么區別?static局部變量和普通局部變量有什么區別?static函數與普通函數有什么區別?
答:static全局變量的作用域局限于一個源文件內,而非static全局變量的作用域是整個源程序。
static全局變量只初始化一次,防止在其他文件單元中被引用;
static局部變量只初始化一次,下一次依據上一次結果值;
static函數在內存中只有一份,普通函數在每個被調用中維持一份拷貝。
8、程序的局部變量存在于(堆棧)中,全局變量存在于(靜態區)中,動態申請數據存在于(堆)中。
9、設有以下說明和定義:
typedef union {long i; int k[5]; char c;} DATE;
struct data { int cat; DATE cow; double dog;} too;
DATE max;
則語句 printf("%d",sizeof(struct date)+sizeof(max)); 的執行結果是:52
答:DATE是一個union,變量公用空間。里面最大的變量類型是int[5],占用20個字節。所以它的大小是20。data是一個struct,每個變量分開占用空間。依次為:int4 + DATE20 + double8 = 32。
所以結果是:20 + 32 = 52。(此處假設為32位編輯器)
10、隊列和棧有什么區別?
答:隊列先進先出,棧后進先出。
11、寫出下列代碼的輸出內容
#include<stdio.h>
int inc(int a)
{
return(++a);
}
int multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef int(FUNC1) (int in);
typedef int(FUNC2) (int*,int*,int*);
void show(FUNC2 fun,int arg1, int*arg2)
{
INCp=&inc;
int temp =p(arg1);
fun(&temp,&arg1, arg2);
printf("%d\n",*arg2);
}
main()
{
int a;
show(multi,10,&a);
return 0;
}
答:110
12、請找出下面代碼中的所以錯誤。
說明:以下代碼是把一個字符串倒序,如"abcd"倒序后變為"dcba"。
1、#include"string.h"
2、main()
3、{
4、 char*src="hello,world";
5、 char* dest=NULL;
6、 int len=strlen(src);
7、 dest=(char*)malloc(len);
8、 char* d=dest;
9、 char* s=src[len];
10、 while(len--!=0)
11、 d++=s--;
12、 printf("%s",dest);
13、 return 0;
14、}
答:
方法1:
int main()
{
char* src = "hello,world";
int len = strlen(src);
char* dest = (char*)malloc(len+1);//要為\0分配一個空間
char* d = dest;
char* s = &src[len-1];//指向最后一個字符
while( len-- != 0 )
*d++=*s--;
*d = 0;//尾部要加\0
printf("%s\n",dest);
free(dest);// 使用完,應當釋放空間,以免造成內存泄露
return 0;
}
方法2:
#i nclude <stdio.h>
#i nclude <string.h>
main()
{
char str[]="hello,world";
int len=strlen(str);
char t;
for(int i=0; i<len/2; i++)
{
t=str[i]; str[i]=str[len-i-1]; str[len-i-1]=t;
}
printf("%s",str);
return 0;
}
1、-1,2,7,28, ,126請問28和126中間那個數是什么?為什么?
第一題的答案應該是4^3-1=63
規律是n^3-1(當n為偶數0,2,4)n^3+1(當n為奇數1,3,5)
答案:63
2、用兩個棧實現一個隊列的功能?要求給出算法和思路!
設2個空棧A和B。
入隊:將新元素push入棧A;
出隊:
(1)判斷棧B是否為空;
(2)如果不為空,則將棧A中所有元素依次pop出并push到棧B;
(3)將棧B的棧頂元素pop出。
3、在c語言庫函數中將一個字符轉換成整型的函數是atool()嗎,這個函數的原型是什么?
函數名: atol
功 能: 把字符串轉換成長整型數
用 法: long atol(const char *nptr);
程序例:
#include <stdlib.h>
#include <stdio.h>
int main(void)
{
long l;
char *str = "98765432";
l = atol(str);
printf("string = %s;integer = %ld\n", str, l);
return(0);
}
13、對于一個頻繁使用的短小函數,在C語言中應用什么實現,在C++中應用什么實現?
答:c用宏定義,c++用inline。
14、直接鏈接兩個信令點的一組鏈路稱作什么?
答:PPP點到點連接。
15、接入網用的是什么接口?
答:V5接口。
16、voip都用了哪些協議?
答:H.323協議簇、SIP協議、Skype協議、H.248和MGCP協議。
17、軟件測試都有哪些種類?
答:黑盒:針對系統功能的測試;白盒:測試函數功能和各函數接口。
18、確定模塊的功能和模塊的接口是在軟件設計的哪個階段完成的?
答:概要設計階段。
19、程序:
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
請問p1+5= ;p2+5= 。
答案:0x801005(相當于加上5位);0x810014(相當于加上20位)。
20、請問下面程序有什么錯誤?
int a[60][250][1000],i,j,k;
for(k=0;k<=1000;k++)
for(j=0;j<250;j++)
for(i=0;i<60;i++)
a[i][j][k]=0;
答:應把循環語句內外換一下。
21、請問下面程序有什么錯誤?
#define Max_CB 500
void LmiQueryCSmd(Struct MSgCB * pmsg)
{
unsigned char ucCmdNum;
......
for(ucCmdNum=0;ucCmdNum<Max_CB;ucCmdNum++)
{
......;
}
答:死循環。
22、IP Phone的原理是什么?
答:IP電話(又稱VoIP)是建立在IP技術上的分組化、數字化的傳輸技術。其基本原理是:通過語音壓縮算法對語音數據進行壓縮編碼處理,然后把這些語音數據按IP等相關協議進行打包,經過IP網絡把數據包傳輸到接收地,再把這些語音數據包串起來,經過解碼解壓處理后,恢復成原來的語音信號,從而達到由IP網絡傳送語音的目的。
23、TCP/IP通信建立的過程怎樣,端口有什么作用?
答:三次握手,確定是哪個應用程序使用該協議。
24、1號信令和7號信令有什么區別,我國某前廣泛使用的是那一種?
答:1號信令速度慢,但是穩定和可靠。而7號信令的特點是:信令速度快,具有提供大量信令的潛力,具有改變和增加信令的靈活性,便于開放新業務,在通話時可以隨意處理信令,成本低。目前得到廣泛應用。
25、列舉5種以上的電話新業務?
答:“熱線服務”、“轉移呼叫”、“遇忙回叫”、“三方通話”、“會議電話”、“呼出限制”、“來電顯示”等。
/*使用一個regexp編寫一個javascript函數isvalid()他接受一個string參數如果該函數與下列電話號碼格式之一匹配就返回ture,否則就返回false。
(123)456-7890
(123) 456-7890
123 / 467-7890
123-456-7890
123 456 7890
1234567890
*/
代碼
function isvalid(str)
{
var regu =/(^\([1-9]{3}\)[1-9]{3}(-\d{4})?$)
|(^\([1-9]{3}\)\s[1-9]{3}(-\d{4})?$)
|(^([1-9]{3}\s\/\s[1-9]{3}(-\d{4}))?$)
|(^([1-9]{3}-[1-9]{3}(-\d{4}))?$)
|(^([1-9]{3}\s[1-9]{3}(\s\d{4}))?$)
|(^\d{10}$)/;
var re = new RegExp(regu);
if (re.test( str )) {
//alert(str+"true");
return true;
}else{
//alert(str+"false");
return false;
}
}
參考資料
用JavaScript判斷日期、數字、整數和特殊字符 http://hi.baidu.com/wmqxyh/blog/item/31f8ab369cc1afbbd1a2d36a.html
JavaScript RegExp 對象參考手冊 http://www.w3school.com.cn/js/jsref_obj_regexp.asp
服務器上出現了一個奇怪的問題,就是用FTP連接以后所有的
中文都顯示為亂碼,根本就看不清楚目錄的名字,下面就把解決方法和大家分享下:
開始我以為是區域和語言選項那里的問題,開始--控制面板---格式,看了當前的格式是中文簡體,又看了下其他的語言設置,都是中文簡體,沒有任何問題,基本可以排除不是區域語言出的問題。
接著開始檢查SERV-U8.0的設置,發現了問題,解決方法如下:打開SERV-U---導航---限制和設置---FTP設置---找到OPTS UTF8 命令----編輯----選擇禁用命令---然后確認---再選擇全局屬性-----高級選項---找到“對所有已收發的路徑和文件名使用UTF-8編碼”,把前面的勾去掉,確認。最后回到導航,用同樣的方法設置“服務器限制和設置”,保存退出,就完成啦。
(1)表方式,將指定表的數據導出/導入。
導出:
導出一張或幾張表:
代碼
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2
如果是分區表
代碼
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1:tablespaces1,table2:tablespaces2
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1:tablespaces1,table2:tablespaces2
導出某張表的部分數據
代碼
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1 query=\”where col1=\’…\’
and col2 \<…\”
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1 query=\”where col1=\’…\’
and col2 \<…\”
導入:
導入一張或幾張表
代碼
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1,table2 fromuser=dbuser touser=dbuser2 commit=y ignore=y
如果是分區表
代碼
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1:tablespaces1,table2:tablespaces2 fromuser=dbuser touser=dbuser2 commit=y ignore=y
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log tables=table1:tablespaces1,table2:tablespaces2 fromuser=dbuser touser=dbuser2 commit=y ignore=y
(2)用戶方式,將指定用戶的所有對象及數據導出/導入。
導出:
代碼
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx, yy)
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=(xx, yy)
只導出數據對象,不導出數據 (rows=n )
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log owner=user rows=n
導入:
代碼
imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
mmit=y ignore=y
imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
commit=y ignore=y
(3)全庫方式,將數據庫中的所有對象導出/導入導出:
代碼
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=ycommit=y ignore=y
$ exp user/pwd file=/dir/xxx.dmp log=xxx.log full=ycommit=y ignore=y
導入:
代碼
$ imp user/pwd file=/dir/xxx.dmp log=xxx.log fromuser=dbuser touser=dbuser2
JSunspot是一個基于Jad的Class文件(Java字節碼)反編譯小軟件.適用于2000/XP/2003操作系統,用于反編譯單個或批量的Class文件.
1,安裝
a,運行環境
1,需要JDK(JRE)1.5以上的版本。
注:如果不想安裝JDK,也可以從其它地方拷貝JDK安裝目錄下的文件到程序目錄下的jre目錄中。
2,運行于2000/XP/2003操作系統
b,如何進行安裝與卸載
運行程序目錄下這個程序Setup.exe進行安裝和卸載。
2,使用
a,反編譯單個的Class文件:雙擊此Class文件即可。
注:默認反編譯完成后,使用記事本打開得到的源文件,可以在配置中修改打開程序。
b,反編譯批量的Class文件:右鍵Class文件所在的文件夾,在彈出的菜單中選擇[JSunspot]即可。
注:默認不處理子目錄,可以在配置中開啟對子目錄的遞歸處理。
3,配置
運行程序目錄下這個程序Configuration.exe進行配置。
如果您在使用中發現任何Bug或有任何的建議,請跟帖留言。
下載地址:http://download.csdn.net/source/2506267
Tomcat(免安裝版)的安裝與配置
一、下載Tomcat
Tomcat可以從http://tomcat.apache.org/網站下載,選擇任意版本,在 Binary Distributions 下的zip包既是。
二、配置Tomcat
1、將下載Tomcat Zip壓縮包解壓。
2、修改\bin\startup.bat文件:
在第一行前面加入如下兩行:
SET JAVA_HOME=JDK目錄
SET CATALINA_HOME=前面解壓后Tomcat的目錄或者%cd%
如果需要使用shutdown.bat關閉服務器的話,也按照上面加入兩行。
3、這樣,運行startup.bat就可以運行服務器,運行shutdown.bat就可以關閉服務器了。
4、修改\conf\tomcat-users.xml文件:
在<tomcat-users>標簽內加入
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>
這樣才可以使用Tomcat的管理界面。
三、將Tomcat加入服務
1、修改bin目錄中的service.bat:
REM 添加下面的一行
set CATALINA_HOME=%cd%
如果從來沒有安裝過Tomcat,或者保證Services.msc啟動服務管理器檢查沒有Apache Tomcat系統服務,到此你就可以轉到第二步了。否則繼續往下走
REM 按照描述修改下面的幾行
set SERVICE_NAME=Tomcat5
REM 上面一行,Tomcat5修改成你需要的服務名,這個將是一后使用net start/stop來操作的服務名稱。
set PR_DISPLAYNAME=Apache Tomcat
REM 上面一行,Apache Tomcat改為你需要的顯示服務名,這個將顯示在服務管理器中。
set PR_DESCRIPTION=Apache Tomcat Server - http://jakarta.apache.org/tomcat
REM 這一行改不改無所謂,是服務的描述,根據自己的喜好決定吧。
2、運行cmd打開控制臺,進入Tomat目錄/bin文件夾,輸入如下命令運行。
service.bat install
程序提示:The service 'Tomcat5(或者你修改一后的SERVICE_NAME)' has been installed
說明服務Tomcat已經被安裝成功。
順便說一下,運行service.bat remove可以移除服務。
3、到這里,服務添加成功,運行services.msc,可以看到添加的服務,默認狀態下該服務是手動運行的,在他的屬性中,將啟動類型更改為“自動”,以后機器啟動以后Tomcat就在后臺啟動了。
四、控制臺控制服務的命令
啟動服務
net Start 服務名
關閉服務
net stop 服務名
注:
1、此服務名可以是SERVICE_NAME,也可以是PR_DISPLAYNAME;
2、如果服務名中包含空格或者中文,請將服務名用半角雙引號包含起來。