博客换主题啦!!!

feed订阅 腾讯微博 你好,欢迎光临! 

T-SQL创建数据库用户

2008.02.27 , 未分类 , 无评论 , 598 浏览

正如你进入了小区,但还是不能进入单元门一样。创建了登陆帐户,现在能登录到SQL Server服务,但是还不能访问某个数据。如果希望访问某个数据库,必须有“打开”该数据库的“钥匙”,即需要成为该数据的一个用户。
创建数据库用户需要调用系统存储过程SP_GRANTDBACCESS,其语法为:

T-SQL创建登录帐户

2008.02.27 , 未分类 , 无评论 , 638 浏览

MSSQL的登录验证有两种方式。
1.SQL身份验证:适合于非Windows平台的用户或Internet用户,需要提供帐户和密码。
2.Windows身份验证:适合于Windows平台用户,不需要提供密码和Windows集成验证。

Java Array拷贝学习

2008.02.26 , , 无评论 , 538 浏览

首先来看看如下代码:
class ArrayTest{
    
    
public static void main(String[] args){
        
        
int[] num1 new int[]{1,2,3};
        
int[] num2 new int[3];
        
System.arraycopy(num1,0,num2,0,num1.length);
        
for(int 0;num2.length;i++){
            
            
System.out.println(num2[i]);
        }
    }
}
编译后显示如下:
>javac ArrayTest.java
>Exit code0
>java ArrayTest
1
2
3
>Exit code0
这里我们使用arraycopy函数将num1从下标0开始拷贝到num2,拷贝num1.length个长度。然后使用for循环输出num2中的各个值。我们可以看到成功的输出了num1的内容,说明我们拷贝成功了。那么如果我们这样写:
class ArrayTest{
    
    
public static void main(String[] args){
        
        
int[] num1 new int[]{1,2,3};
        
int[] num2 new int[3];
        
System.arraycopy(num1,1,num2,0,num1.length);
        
for(int 0;num2.length;i++){
            
            
System.out.println(num2[i]);
        }
    }
}
编译提示:
>javac ArrayTest.java
>Exit code0
>java ArrayTest
Exception in thread 
"main" java.lang.ArrayIndexOutOfBoundsException
    at java
.lang.System.arraycopy(Native Method)
    
at ArrayTest.main(ArrayTest.java:7)
>
Exit code1
意思是说数组下标越界了,这次我们是从num1的下标为1开始拷贝,然而我们没有改变要拷贝的长度(依然是num1.length)。
更改代码如下:
class ArrayTest{
    
    
public static void main(String[] args){
        
        
int[] num1 <
font style="font: 10pt Fixedsys; color: #0000FF; ">new int[]{1,2,3};
        
int[] num2 new int[3];
        
System.arraycopy(num1,1,num2,0,num1.length-1);
        
for(int 0;num2.length;i++){
            
            
System.out.println(num2[i]);
        }
    }
}
编译并执行:
>javac ArrayTest.java
>Exit code0
>java ArrayTest
2
3
0
>Exit code0
这里我们只要给num1.length减1就ok了!

妙用CACLS解决NTFS分区权限问题

2008.02.26 , , 1 条评论 , 525 浏览

前几天闲着没事干便把F盘格式化成了NTFS格式,当时还能用,后来因为测试病毒原因又把系统还原了一次,结果发现还原后的系统使用administrator登陆进去,在F盘竟然没有任何权限。

受不了了,记得自己以前就出过这种问题,当时没想到办法,就用魔术分区直接把盘格成FAT32了,结果我所有的资料都没了!哭~~~
这次可不能在这样了,OK,先百度一下。结果没找到任何答案,怎么办,这下连百度也没办法了!自己动手试试吧!
记得在NFTS分区上面点右键会有一个安全选项卡的,里面可以设置权限。

My god!!没有也。。难道只有在WIN 2000和WIN 2003服务器上面的NTFS分区才有?
再想想,WINDOWS的很多可视化操作功能都是可以在DOS下完成的,我们试试。
直接按:WIN+R 输入CMD 回车
输入CACLS f:看看。
C:\>cacls f:
F:\ Everyone:(OI)(IO)R
Everyone:(CI)R
对命令熟悉的人,看完这个应该就知道是什么原因了吧。
OK,在试试执行:
cacls f:\ /t /e /c /g administrators:f
窗口显示:
处理的文件: f:\网站源码\readsoul\Vote\Img\NoPic.jpg
处理的目录: f:\网站源码\readsoul\Vote\Img\skin
处理的目录: f:\网站源码\readsoul\Vote\Img\skin\css_2
处理的文件: f:\网站源码\readsoul\Vote\Img\skin\css_2\2.css
处理的文件: f:\网站源码\readsoul\Vote\Img\skin\css_2\2_bg_01.gif
处理的文件: f:\网站源码\readsoul\Vote\Img\skin\css_2\2_bg_02.gif
处理的文件: f:\网站源码\readsoul\Vote\Img\skin\css_2\2_logo.gif
处理的文件: f:\网站源码\readsoul\Vote\lib\zhupic.asp
OK,这下搞定了,我们再查看一下CACLS F:
C:\>CACLS F:
F:\ Everyone:(OI)(IO)R
Everyone:(CI)R
BUILTIN\Administrators:(OI)(CI)F
接下来试着创建一个文件夹,结果很顺利的就创建好了,o(∩_∩)o...哈哈 因为参数F代表赋予完全控制权限嘛。
当然这东西在黑客入侵提权也是很好用的哈~~~

Eclipse中文教程

2008.02.25 , , 无评论 , 339 浏览


软件名称 Eclipse中文教程
版 本  
版权所有  佚名
软件平台  Win9x/NT/2000/XP/2003
整理日期  2007-12-20 12:57:25
软件授权  免费版
评 分  ★★★
软件大小  4664 K
下载次数 1570
下载地址: 下载地址1  下载地址2  
 

 软件简介 
Eclipse中文教程
 相关内容                  
 
没有相关软件

C++语言的输入和输出

2008.02.25 , , 无评论 , 618 浏览

C/C++语言本身并不带输入和输出(即I/O)功能,而是提供了输入输出库,也称为I/O库。通过I/O库,我们可以完成输入和输出的操作。大多数C程序使用一种称为stdio(标准I/O)的I/O库,该库也能够在C++中使用。但是,在C++程序中,一种称为iostream(I/O 流库)的I/O库用得更多。

枚举类型

2008.02.25 , , 无评论 , 463 浏览

我们常常需要一些整型常量表示某一个的数据范围。例如,假定需要表示汽车的颜色:
  const int cRED = 0;
  const int cBLUE = 1;
  …
  int auto_colour;
  auto_colour = cBLUE;
  上面的程序语句是用整型变量auto_colour表示颜色,下面的语句也是合法的:
  auto_colour = -1;
  …
  显然,-1并不是所需要的颜色值。如果能够限定auto_colour在限定的整数范围(即规定的几种颜色集合)内取值就比较好,C++中的枚举类型能够让我们做到这一点。枚举类型是一种用户定义的数据类型,其一般定义形式为:
  enum 枚举类型名
  {
   标识符[=整型常数],
   标识符[=整型常数],
   ...
   标识符[=整型常数],
  };
  "枚举类型名"右边花括号中的内容称之为枚举表,枚举表中的每一项称之为枚举成员,枚举成员是常量,也就是说,枚举表是整型常量的集合。枚举成员之间用逗号隔开,方括号中的"整型常数"是枚举成员的初值。
  如果不给枚举成员赋初值,即省掉了标识符后的"=整型常数"时,则编译器为每一个枚举成员给一个不同的整型值,第一个成员为0,第二个为1,等等。当枚举类型中的某个成员赋值后,其后的成员则按依次加1的规则确定其值。下面是一个枚举类型定义实例:
  enum Colour { eRED, eBLUE, eYELLOW, eGREEN,
  eSILVERGREY,eBURGUNDY };
  这样就定义了一个称之为Colour的枚举类型,编译器给枚举成员eRED,…,eBURGUNDY的值分别为0,…,5。 定义了枚举类型,就可以定义枚举类型的变量,其值限定为某一个枚举成员。例如:
  Colour auto_colour;
  …
  auto_colour = eBURGUNDY;
  Colour类型变量auto_colour只能取eRED,…,eBURGUNDY六个值中的一个,下面的语句将会出现编译错误:
  auto_colour = 4;
  我们也可以在定义枚举类型时,为枚举成员指定初值,例如:
  enum Colour { eRED=5, eBLUE, eYELLOW, Egreen=30,
  Esilvergrey=40,eBURGUNDY };
  这时,eBLUE=6、Eyellow=7、Eburgundy=41。
如果一个变量只有几种可能的值,就可以把它定义为枚举类型。"枚举",顾名思义,就是把这种类型数据可取的值一一列举出来。
  例如,可以定义一个表示日期的枚举类型weekday:
  enum weekday{sun,mon,tru,wed,thu,fri,sat};
  这里enum是关键字,用于定义枚举数据类型,weekday是枚举类型的名字,枚举元素用标识符表示。
  接下来我们可以用weekday来定义变量,例如:
  weekday today,nextday;
  C++语言也允许在定义枚举类型的同时定义枚举变量,例如:
  enum weekday{sun,mon,tru,wed,thu,fri,sat}today,nextday;
  这样,变量today和nextday就具有weekday类型,它们的取值只能是sun,mon,…,sta,例如可有:
  today = sun;
  nextday = mon;
  if(today == sat)
  nextday = sun //如果today是sat的话,那么nextday赋值为sun
  C++编译器对枚举元素实际上是按整型常数处理。所以,就象前面所说的那样,当遇到枚举元素列表时,编译程序就把其中第一个标识符赋0值,第二、三、…个标识符依次赋1、2、…。因此,当枚举元素赋给枚举变量时,该变量实际得到一个整数值。例如:
  today = sun;
  是将0赋给today,而不是将字符串"sun"赋给today。赋值后:
  cout<   语句的输出结果是0。
  我们也可以在枚举类型定义时指定枚举元素的值,例如:
  enum weekday{sun = 7,mon = 1,tue,wed,thu,fri,sat};
  这时sun的值是7,mon的值是1,而tue以后各元素的值,从mon的值开始,每次递增1,即tue的值为2,wed的值为3,…。如果不写mon = 1,则mon的值为8,tue的值为9,依此类推。
  由于枚举元素是常量,所以我们在程序中不能对它们进行赋值,如"sun = 0;mon = 1;"将产生错误。
  既然枚举元素就是整型值,那么它有什么存在的必要呢?至少有两个原因:一个是用标识符表示数值增加了程序的可读性,例如:
  if(today == sat)
  next = sun
  就比
  if(today == 6)
  nextday = 0;
  清楚多了;另一个重要的原因是:它限制了变量取值的范围,如现在today只能取sun~sat中的值。
  注意:enum在 C++和C中使用的不同。下面的C语言语句定义了名为day的变量:
  enum Days { Monday, Tuesday, Wednesday, Thursday, Friday };
  enum Days day;
  在C++中,定义为:
  enum Days { Monday, Tuesday, Wednesday, Thursday, Friday };
  Days day;
  C++中定义了枚举类型数据后,程序可以把它当作一种类型使用,不需在类型名Days前加enum关键字。

标识符和关键字

2008.02.25 , , 无评论 , 476 浏览

标识符是一个字符序列,用来标识变量、函数、数据类型等。任何程序都离不开标识符,也就是说,不可能有没有标识符的C++程序。在程序2-1中,include、void、main、int、i、cin、cout等都是标识符。标识符可以由大写字母、小写字母、下划线(_)和数字0~9组成,但必须是以大写字母、小写字母或下划线(_)开头。在C++语言程序中,大写字母和小写字母不能混用,比如Name和name就代表两个不同的标识符。在表2-1中,我们给出了几个正确和不正确的标识符实例。

表格 表2-1:正确和不正确的标识符实例
 
正确 不正确
smart 5smart(不能数字开头)
_decision bomb?(有非法字符?)
key_board key.board(有非法字符.)

标识符的命名规则:
  1. 所有标识符必须由一个字母(a~z或A~Z)或下划线(_)开头;
  2. 标识符的其它部分可以用字母、下划线或数字(0~9)组成;
  3. 大小写字母表示不同意义, 即代表不同的标识符,如前面的cout和Cout;
  在定义标识符时,虽然语法上允许用下划线开头,但是,我们最好避免定义用下划线开头的标识符,因为编译器常常定义一些下划线开头的标识符。
  C++没有限制一个标识符中字符的个数,但是,大多数的编译器都会有限制。不过,我们在定义标识符时,通常并不用担心标识符中字符数会不会超过编译器的限制,因为编译器限制的数字很大(例如255)。
  一个写得好的程序,标识符应该尽量有意义。 比如表示年可以用year,表示长度可以用length,表示累加和可以用sum等,这样的标识符本身就增加了程序的可读性,使程序更加清晰易懂。
C++语言的标识符经常用在以下情况中:
  1. 标识对象或变量的名字
  2. 类、结构和联合的成员
  3. 函数或类的成员函数
  4. 自定义类型名
  5. 标识宏的名字
  6. 宏的参数
 

 

简单的C++程序

2008.02.25 , , 无评论 , 422 浏览

1.//simple.cpp是一个简单的C++程序
2.#include
3.void main(void)
4.{
5. int i;
6. cout< <"Hello C++!";
7. cout<<"请输入一个整数:\n";
8. cin>>i;
9. cout<<"您输入的整数是:";
10. cout < 11. cout <<'\n';
12.}
  请学习者自己键入这段程序,并自己编译、连接、运行该程序,输入不同的整数,看能否得到预期的结果。注意,程序中左边的数字是为了讲解的方便添加的,将该程序键入到开发环境的编辑窗口时,一定要略去这些数字。

数据类型,运算符与表达式

2008.02.24 , , 无评论 , 408 浏览

一.C语言的基本元素
1.符号集,C语言使用的基本符号有如下五种:
(1)大写字母:A-Z (2)小写字母:a-z (3)阿拉伯数字:0~9 (4)下划线:_ (5)标点符号和运算符
2.标识符
用来标记常量、变量、函数以及文件名的字符序列。