1.什么是类变量,什么是成员变量,什么是实例变量,什么是局部变量,四者各有什么区别
局部、实例、成员变量的作用域和生存周期同局部变量一样,而类变量如果用public声明则作用域同全局变量,如果是private则作用域只在类的内部,
生存周期同全局变量.
实例化:Servlet容器创建Servlet类的实例。
初始化:该容器调用init()方法,通常会申请资源。
服务:由容器调用service()方法,(也就是doGet()和doPost())。
破坏:在释放Servlet实例之前调用destroy()方法,通常会释放资源。
不可用:释放内存的实例。
CGI(Common Gateway Interface通用网关接口)程序来实现数据在Web上的传输,使用的是如Perl这样的语言编写的,它对于客户端作出的每个请求,必须创建CGI程序的一个新实例,这样占用大量的内存资源。由此才引入了Servlet技术。
Servlet是一个用java编写的应用程序,在服务器上运行,处理请求信息并将其发送到客户端。对于客户端的请求,只需要创建Servlet的实例一次,因此节省了大量的内存资源。Servlet在初始化后就保留在内存中,因此每次作出请求时无需加载。
1.只提供一些方法规约,不提供方法主体. 如:
public interface IPerson
{
void getName();//不包含方法主体
}
2.方法不能用public abstract等修饰,无字段变量,无构造函数。
3.方法可包含参数。 如
public interface IPerson
{
void getAge(string s);
}
一个例子(例1):
public interface IPerson
{
IPerson(); //错误
string name; //错误
public void getIDcard();//错误
void getName(); //right
void getAge(string s); //right
}
实现interface的类
1.与继承类的格式一致,如 public class Chinese:IPerson{}
2.必须实现 interface 中的各个方法
例2,继承例1
public class Chinese:IPerson
{
public Chinese(){} //添加构造
public void getName(){} //实现getName()
public void getAge(string s){} //实现getAge()
}
abstract声明抽象类、抽象方法
1.抽象方法所在类必须为抽象类
2.抽象类不能直接实例化,必须由其派生类实现。
3.抽象方法不包含方法主体,必须由派生类以override方式实现此方法,这点跟interface中的方法类似
如
public abstract class Book
{
public Book()
{
}
public abstract void getPrice(); //抽象方法,不含主体
public virtual void getName() //虚方法,可覆盖
{
Console.WriteLine("this is a test:virtual getName()");
}
public virtual void getContent() //虚方法,可覆盖
{
Console.WriteLine("this is a test:virtual getContent()");
}
public void getDate() //一般方法,若在派生类中重写,须使用new关键字
{
Console.WriteLine("this is a test: void getDate()");
}
}
public class JavaBook:Book
{
public override void getPrice() //实现抽象方法,必须实现
{
Console.WriteLine("this is a test:JavaBook override abstract getPrice()");
}
public override void getName() //覆盖原方法,不是必须的
{
Console.WriteLine("this is a test:JavaBook override virtual getName()");
}
}
测试如下:
public class test
{
public test()
{
JavaBook jbook=new JavaBook();
jbook.getPrice(); //将调用JavaBook中getPrice()
jbook.getName(); //将调用JavaBook中getName()
jbook.getContent(); //将调用Book中getContent()
jbook.getDate(); //将调用Book中getDate()
}
public static void Main()
{
test t=new test();
}
}
virtual标记方法为虚方法
1.可在派生类中以override覆盖此方法
2.不覆盖也可由对象调用
3.无此标记的方法(也无其他标记),重写时需用new隐藏原方法
abstract 与virtual : 方法重写时都使用 override 关键字
5.Singleton 生活中的例子
美国总统的职位是Singleton,美国宪法规定了总统的选举,任期以及继任的顺序。这样,在任何时刻只能由一个现任的总统。无论现任总统的身份为何,其头衔"美利坚合众国总统"是访问这个职位的人的一个全局的访问点。
public sealed class Singleton
{
static Singleton instance=null;
static readonly object padlock = new object();
Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance==null)
{
lock (padlock)
{
if (instance==null)
{
instance = new Singleton();
}
}
}
return instance;
}
}
}
6、js应该怎么使用,应该放在哪儿。
1、放在底部,虽然放在底部照样会阻塞所有呈现,但不会阻塞资源下载。
2、如果嵌入JS放在head中,请把嵌入JS放在CSS头部。
3、使用defer 相当于 window.onload ,但应用上比 window.onload 更灵活!
4、不要在嵌入的JS中调用运行时间较长的函数,如果一定要用,可以用setTimeout来调用
7.FireFox窗体frameset,iframe间的js调用方法与IE中的调用方法比较
//(1) 在其中一个frame里操作主窗口
var ff=window.parent.window.document.getElementsByTagName("frameset");
var colsValue=ff['menuframe'].getAttribute('cols');
//(2)获得iframe上的document对象
var XX=document.getElementById('myframeID');
XX.contentWindow.document.getElementById('oneElement');
//(3)火狐下动态修改textarea内容:document.getElementById("id").innerHTML="我是动态修改的内容"
IE窗体
//(4)在IE当中获得iframe上的document对象
var xx=window.frames("myframe").document.getElementById("bd").innerHTML;
8.JS动态给HTML赋值,事件,样式等属性
label.setAttribute('value',"");
label.setAttribute('class',"handcss"); //cursor:hand
label.setAttribute('onclick',"SetFormual(this.id);");
label.className = "handcss" ;
label.onclick = function(){SetFormual(this.id);
9.在线生成“QQ在线状态”网址
10.SQL语句当中自动生成编号 :
INSERT sys_Roles(R_ID,GroupID,treeID) SELECT ROW_NUMBER() OVER(ORDER BY CAST(OrderBy AS NVARCHAR(20))) AS R_ID," + GroupID + " AS GroupID,treeID FROM sys_MenuInfo ORDER BY CAST( OrderBy AS NVARCHAR(20))
11.只有下划线的文本框:
border-top-style: none;
border-right-style: none;
border-left-style: none;
background-color: transparent;
" />
12.图片跟随滚动条的滚动效果:
13.Gridview中RadioButtonList客户端单击事件:
(1)第一步:
for (int i = 0; i < this.GridView1.Rows.Count; i++)
{
RadioButtonList MyRb = (RadioButtonList)GridView1.Rows[i].FindControl("rb_JY");
MyRb.Attributes.Add("onclick", "javascript:onStockSelected('" + i + "')");
}
(2)第二步
function onStockSelected(Id)
{
if( document.getElementById("GridView1")!=null && document.getElementById("GridView1")!= undefined)
{
var rd = document.getElementById("GridView1").getElementsByTagName("input");
for (var i = 0; i < rd.length; i++)
{
var b = false;
if (rd[i].type == "radio" )
{
if(rd[i].checked && rd[i].value=='0')
{
var GDV = document.getElementById("<%=GridView1.ClientID %>");
var txt = GDV.rows[parseInt(Id)+1].getElementsByTagName("input") ;
for (var j = 0; j < txt.length; j++)
{
if (txt[j].type == "text" && txt[j].name.search("txt_remark") >-1)
{
if(txt[j].value=="")
{
txt[j].value = "同意";
}
}
}
}
}
}
}
}
function Txt_Receiver_onclick()
{
str = window.showModalDialog("GetReceiver.aspx","","dialogWidth:800px;dialogHeight:400px;status:no") ;
if(str != undefined )
{
document.getElementById("Txt_Receiver").value=str;
document.getElementById("Txt_Receiver").setAttribute('value',str);
}
}
{
var checkvalue="";
var chkObject = document.getElementById('<%=Ddl_Receiver.ClientID%>');
var chkInput =chkObject.getElementsByTagName("INPUT");
var chkLable = chkObject.getElementsByTagName("Label");
for(var i=0;i<chkInput.length;i++)
{
if(chkInput[i].checked)
{
checkvalue = checkvalue + chkLable[i].innerHTML + ";";
}
}
window.opener.document.getElementById("Txt_Receiver").value = checkvalue;//注意这句
window.parent.returnValue = checkvalue;
window.close();
}
17. 大文件下载
System.IO.Stream iStream = null;
// Buffer to read 10K bytes in chunk:
byte[] buffer = new Byte[10000];
// Length of the file:
int length;
// Total bytes to read:
long dataToRead;
// Identify the file to download including its path.
string filepath = "DownloadFileName";
// Identify the file name.
string filename = System.IO.Path.GetFileName(filepath);
try {
// Open the file.
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open,
System.IO.FileAccess.Read, System.IO.FileShare.Read);
// Total bytes to read:
dataToRead = iStream.Length;
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + filename);
// Read the bytes.
while (dataToRead > 0) {
// Verify that the client is connected.
if (Response.IsClientConnected) {
// Read the data in buffer.
length = iStream.Read(buffer, 0, 10000);
// Write the data to the current output stream.
Response.OutputStream.Write(buffer, 0, length);
// Flush the data to the HTML output.
Response.Flush();
buffer = new Byte[10000];
dataToRead = dataToRead - length;
} else {
//prevent infinite loop if user disconnects
dataToRead = -1;
}
}
} catch (Exception ex) {
// Trap the error, if any.
Response.Write("Error : " + ex.Message);
} finally {
if (iStream != null) {
//Close the file.
iStream.Close();
}
}
UPDATE kssb.dbo.Admin SET kssb.dbo.Admin.UserName=kssbwww0424.dbo.Admin.UserName FROM kssbwww0424.dbo.Admin
WHERE kssb.dbo.Admin.ID=kssbwww0424.dbo.Admin.ID
INSERT INTO kssb.dbo.Admin -- 假设字段ID为主键
SELECT UserName,PWD FROM kssbwww0424.dbo.Admin WHERE
NOT EXISTS(SELECT kssb.dbo.Admin.ID FROM kssb.dbo.Admin WHERE kssb.dbo.Admin.ID=kssbwww0424.dbo.Admin.ID )
delete from ChangeKSSBData.dbo.Admin WHERE ChangeKSSBData.dbo.Admin.ID=(select ID from deleted) --删除对应ID
19.SQL2005数据库备份如何还原到SQL2000数据库中
引用:http://blog.csdn.net/leamonjxl/article/details/6439114
SQL2005转SQL2000的问题脚本:数据库进行降级处理。
在生成脚本之前,我们需要将数据库的兼容级别设置成"SQL Server 2000 (80)"。该设置可以在数据库属性->Option->Compatibility level中设置
错误二:'sys.objects'
错误三:列名 'object_id' 无效
错误四:sys.views
比如:[nvarchar](max) ,sql2000貌似不支持max参数的
2. 将所有的 “sys.objects”改为“sysobjects”
3. 将所有的 “object_id” 改为 “id”
4. (需要时)将所有的 “SCHAMA” 改为 “user”
5. 如果有的系统函数名或系统存储过程名称前有“sys.”不能被SQL2000识别,就把它去掉。如添加注释“sys.sp_addextendedproperty”。
警告: 已创建表 'xxxx',但其最大行大小(10438)超过了每行的最大字节数(8060)。如果结果行长度超过 8060 字节,则此表中行的 INSERT 或 UPDATE 将失败。----其中xxxx是你的建的表名,10438是你建表语句中可变长度列(如 nvarchar 或 varbinary)的总长度,8060是SQL Server对行长度的最大限制。
、解决
知道问题的原因了,解决办法相对就简单了!
1、修改你建表语句中相应的列的数据类型或长度(如将nvarchar格式改成text),让可变长度列的加和小于8060。这样可以彻底避免出现上述错误发生,当然上述的错误并不是必然出现。
20.清除SQLServer数据库日志(SqlServer2005)
执行如下:
1.清空日志
2.截断事务日志:
3.收缩数据库文件(如果不压缩,数据库的文件不会减小)
4.将数据库设为自动收缩
21.javascript中字符串替换函数replace()方法
replace()最简单的算是能力就是简单的字符替换。示例代码如下:
var strM = "javascript is a good script language";
//在此我想将字母a替换成字母A
alert(strM.replace("a","A"));
</script>
我想大家运行后可以看到结果,它只替换了首字母。但如果加上正则表达式结果就不一样了!呵呵,没错。replace()支持正则表达式,它可以按照正则表达式的规则匹配字符或字符串,然后给予替换!
<script language="javascript">
var strM = "javascript is a good script language";
//在此我想将字母a替换成字母A
alert(strM.replace(/a/,"A"));
</script>
呵呵,您一定发现了。这样还是只替换了第一个字母a。如果您熟悉正则,那这就难不住您。稍加修改就OK了。
<script language="javascript">
var strM = "javascript is a good script language";
//在此将字母a全部替换成字母A
alert(strM.replace(/a/g,"A"));
</script>
还可以这样,看看效果!
由上可知,当正则表达式有"g"标志时,代表将处理整个字符串,即函数change的变换将应用于所有匹配的对象。而该函数有三个或更多参数,具体个数视正则表达式而定。
