(系统版本 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、如果服务名中包含空格或者中文,请将服务名用半角双引号包含起来。