!!!!!!!1怎样在最短的时间内掌握asp?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了!!!!!!!1怎样在最短的时间内掌握asp?相关的知识,希望对你有一定的参考价值。

1.获得系统时间:
<%=now()%>
2.取得来访用的IP:
<%=request.serverVariables("remote_host")%>
3.获得系统,浏览器版本:
<script>
window.document.write("版本:"+navigator.appName+navigator.appVersion+" browser.")
</script>
4.去除IE混动条:
<body scroll="no">
<body style="overflow-y:hidden">
5.进入网站,跳出广告:
<script language="javascript">
<!--
<!-- 注意更改文件所在路径-->
window.open('http://www.XXXXXX.com','','height=200,width=300,top=0,left=30');
// -->
</script>
6.随机数:
<%randomize%>
<%=(int(rnd()*n)+1)%>
N为可改变数
7.向上混动代码:
<marquee direction="up" scrolldelay="200" style="font-size: 9pt; color: #FF0000; line-height: 150%; font-style:italic; font-weight:bold" scrollamount="2" width="206" height="207" bgcolor="#FFFF00">hhhhhhhhhhhhhhhhhhh</marquee>
8.自动关闭网页:
<script LANGUAGE="javascript">
<!--
setTimeout('window.close();', 10000); //60秒后关闭
// -->
</script>
<p align="center">本页10秒后自动关闭,请注意刷新页面</p>
9.随机背景音乐:
<%randomize%>
<bgsound src="mids/<%=(int(rnd()*60)+1)%>.mid" loop="-1">
可以修改数字,限制调用个数,我这里是60个.
10.自动刷新本页面:
<script>
<!--

var limit="0:10"

if (document.images)
var parselimit=limit.split(":")
parselimit=parselimit[0]*60+parselimit[1]*1

function beginrefresh()
if (!document.images)
return
if (parselimit==1)
window.location.reload()
else
parselimit-=1
curmin=Math.floor(parselimit/60)
cursec=parselimit%60
if (curmin!=0)
curtime=curmin+"分"+cursec+"秒后重刷本页!"
else
curtime=cursec+"秒后重刷本页!"
window.status=curtime
setTimeout("beginrefresh()",1000)



window.onload=beginrefresh
file://-->
</script>

11.ACCESS数据库连接:
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
'更改数据库名字
db="data/dvBBS5.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db)
'如果你的服务器采用较老版本Access驱动,请用下面连接方法
'connstr="driver=Microsoft Access Driver (*.mdb);dbq=" & Server.MapPath(db)
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>
12.SQL数据库连接:
<%
option explicit
dim startime,endtime,conn,connstr,db
startime=timer()
connstr="driver=SQL Server;server=HUDENQ-N11T33NB;uid=sa;pwd=xsfeihu;database=dvbbs"
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connstr
function CloseDatabase
Conn.close
Set conn = Nothing
End Function
%>
13.用键盘打开网页代码:
<script language="javascript">
function ctlent(eventobject)

if((event.ctrlKey && window.event.keyCode==13)||(event.altKey && window.event.keyCode==83))

window.open('网址','','')


</script>

这里是Ctrl+Enter和Alt+S的代码 自己查下键盘的ASCII码再换就行

14.让层不被控件复盖代码:
<div z-Index:2><object xxx></object></div> # 前面
<div z-Index:1><object xxx></object></div> # 后面
<div id="Layer2" style="position:absolute; top:40;width:400px; height:95px;z-index:2"><table height=100% width=100% bgcolor="#ff0000"><tr><td height=100% width=100%></td></tr></table><iframe width=0 height=0></iframe></div>
<div id="Layer1" style="position:absolute; top:50;width:200px; height:115px;z-index:1"><iframe height=100% width=100%></iframe></div>
15.动网FLASH广告代码:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=5,0,0,0" width="468" height="60"><param name=movie value="images/yj16d.swf"><param name=quality value=high><embed src="images/dvbanner.swf" quality=high pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash";;;;;;;;;;;; type="application/x-shockwave-flash" width="468" height="60"></embed></object>
16.VBS弹出窗口小代码:
<script language=vbscript>
msgbox"你还没有注册或登陆论坛","0","精品论坛"
location.href = "login.asp"
</script>
16.使用FSO修改文件特定内容的函数
function FSOchange(filename,Target,String)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FiletempData = objCountFile.ReadAll
objCountFile.Close
FiletempData=Replace(FiletempData,Target,String)
Set objCountFile=objFSO.CreateTextFile(Server.MapPath(filename),True)
objCountFile.Write FiletempData
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
17.使用FSO读取文件内容的函数
function FSOFileRead(filename)
Dim objFSO,objCountFile,FiletempData
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objCountFile = objFSO.OpenTextFile(Server.MapPath(filename),1,True)
FSOFileRead = objCountFile.ReadAll
objCountFile.Close
Set objCountFile=Nothing
Set objFSO = Nothing
End Function
18.使用FSO读取文件某一行的函数
function FSOlinedit(filename,lineNum)
if linenum < 1 then exit function
dim fso,f,temparray,tempcnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
set f = nothing
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
FSOlinedit = temparray(lineNum-1)
end if
end if
end function
19.使用FSO写文件某一行的函数
function FSOlinewrite(filename,lineNum,Linecontent)
if linenum < 1 then exit function
dim fso,f,temparray,tempCnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
temparray = split(tempcnt,chr(13)&chr(10))
if lineNum>ubound(temparray)+1 then
exit function
else
temparray(lineNum-1) = lineContent
end if
tempcnt = join(temparray,chr(13)&chr(10))
set f = fso.createtextfile(server.mappath(filename),true)
f.write tempcnt
end if
f.close
set f = nothing
end function
20.使用FSO添加文件新行的函数
function FSOappline(filename,Linecontent)
dim fso,f
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),8,1)
f.write chr(13)&chr(10)&Linecontent
f.close
set f = nothing
end function
21.读文件最后一行的函数
function FSOlastline(filename)
dim fso,f,temparray,tempcnt
set fso = server.CreateObject("scripting.filesystemobject")
if not fso.fileExists(server.mappath(filename)) then exit function
set f = fso.opentextfile(server.mappath(filename),1)
if not f.AtEndofStream then
tempcnt = f.readall
f.close
set f = nothing
temparray = split(tempcnt,chr(13)&chr(10))
FSOlastline = temparray(ubound(temparray))
end if
end function
参考技术A 很容易,去源码之家下载自己需要或赶兴趣的源码,然后把它不尽人意的地方改进。一边改,一边细心的学习就可以了,不明白就来问。我是这样上手的。

如何在最短的时间内克隆 java 中的输入流

【中文标题】如何在最短的时间内克隆 java 中的输入流【英文标题】:How to clone an inputstream in java in minimal time 【发布时间】:2012-10-29 08:38:15 【问题描述】:

谁能告诉我如何克隆一个输入流,尽可能减少创建时间?我需要多次克隆输入流以使用多种方法来处理 IS。我尝试了三种方法,但由于某种原因,一切都不起作用。

方法#1: 感谢 *** 社区,我发现以下链接很有帮助,并将代码 sn-p 合并到我的程序中。

How to clone an InputStream?

但是,使用此代码可能需要一分钟(对于 10MB 文件)来创建克隆的输入流,并且我的程序需要尽可能快。

    int read = 0;
    byte[] bytes = new byte[1024*1024*2];

    ByteArrayOutputStream bos = new ByteArrayOutputStream();
    while ((read = is.read(bytes)) != -1)
        bos.write(bytes,0,read);
    byte[] ba = bos.toByteArray();

    InputStream is1 = new ByteArrayInputStream(ba);
    InputStream is2 = new ByteArrayInputStream(ba);
    InputStream is3 = new ByteArrayInputStream(ba);

方法#2: 我还尝试使用 BufferedInputStream 克隆 IS。这很快(最慢的创建时间 == 1 毫秒。最快的 == 0 毫秒)。但是,在我发送 is1 进行处理后,处理 is2 和 is3 的方法抛出了一个错误,说没有要处理的内容,几乎就像下面所有 3 个变量都引用了同一个 IS。

    is = getFileFromBucket(path,filename);
    ...
    ...
    InputStream is1 = new BufferedInputStream(is);
    InputStream is2 = new BufferedInputStream(is);
    InputStream is3 = new BufferedInputStream(is);

方法#3: 我认为编译器在骗我。对于上面的两个示例,我检查了 is1 的 markSupported()。它返回 true,所以我认为我可以运行

    is1.mark() 
    is1.reset()

或者只是

    is1.reset();

在将 IS 传递给我各自的方法之前。在上述两个示例中,我都收到一条错误消息,指出它是无效标记。

我现在没有想法,所以提前感谢您能给我的任何帮助。

附:从我从人们那里收到的 cmets 中,我需要澄清一些关于我的情况的事情: 1)这个程序在虚拟机上运行 2)输入流是从另一种方法传递给我的。我没有从本地文件中读取 3) 输入流的大小未知

【问题讨论】:

在我的计算机上运行方法 #1 的代码需要 18 毫秒(对于 10 MB 文件)。你的硬件有问题吗? 感谢您的回复。我不认为我的硬件有什么问题。我突然想到我忘了提到两件事:a)这是在 VM 上,b)输入流是 jpg 文件。最快的是 11 秒,但目测我的测试,平均大约 30 秒,最慢的是 1 分钟(准确地说是 53 秒)。 如果你这样做,你可能会得到轻微的提升: byte[] ba = new byte[is.available()]; // 如果是 FileInputStream 则有效 new DataInputStream(is).readFully(ba); @FJ - 10Mb 文件的 18ms 告诉我整个文件必须已经在操作系统的内存缓冲区缓存中。 @StephenC - 好点,容易忘记。 【参考方案1】:

如何克隆输入流,尽可能减少创建时间?我需要多次克隆输入流以使用多种方法来处理 IS

您可以创建某种自定义 ReusableInputStream 类,其中您立即在第一次完整读取时也写入内部 ByteArrayOutputStream,然后将其包装在 ByteBuffer 中最后一个字节被读取并最终在随后的完整读取中重用相同的ByteBuffer,当达到限制时会自动翻转。这样可以避免像第一次尝试那样完整阅读。

这是一个基本的启动示例:

public class ReusableInputStream extends InputStream 

    private InputStream input;
    private ByteArrayOutputStream output;
    private ByteBuffer buffer;

    public ReusableInputStream(InputStream input) throws IOException 
        this.input = input;
        this.output = new ByteArrayOutputStream(input.available()); // Note: it's resizable anyway.
    

    @Override
    public int read() throws IOException 
        byte[] b = new byte[1];
        read(b, 0, 1);
        return b[0];
    

    @Override
    public int read(byte[] bytes) throws IOException 
        return read(bytes, 0, bytes.length);
    

    @Override
    public int read(byte[] bytes, int offset, int length) throws IOException 
        if (buffer == null) 
            int read = input.read(bytes, offset, length);

            if (read <= 0) 
                input.close();
                input = null;
                buffer = ByteBuffer.wrap(output.toByteArray());
                output = null;
                return -1;
             else 
                output.write(bytes, offset, read);
                return read;
            
         else 
            int read = Math.min(length, buffer.remaining());

            if (read <= 0) 
                buffer.flip();
                return -1;
             else 
                buffer.get(bytes, offset, read);
                return read;
            
        

    

    // You might want to @Override flush(), close(), etc to delegate to input.

(请注意,实际作业是在 int read(byte[], int, int) 而不是 int read() 中执行的,因此当调用者本身也使用 byte[] 缓冲区进行流式传输时,预计会更快)

你可以这样使用它:

InputStream input = new ReusableInputStream(getFileFromBucket(path,filename));
IOUtils.copy(input, new FileOutputStream("/copy1.ext"));
IOUtils.copy(input, new FileOutputStream("/copy2.ext"));
IOUtils.copy(input, new FileOutputStream("/copy3.ext"));

就性能而言,每 10MB 1 分钟更可能是硬件问题,而不是软件问题。我的 7200rpm 笔记本电脑硬盘不到 1 秒就完成了。

【讨论】:

感谢代码 sn-p。我将与其他建议一起尝试!【参考方案2】:

关于您的第一种方法,将所有字节放入 ByteArrayOutputStream 中:

首先,这种方法会消耗大量内存。如果您不能确保您的 JVM 启动时分配了足够的内存,则它需要在处理流期间动态请求内存,这很耗时。 您的 ByteArrayOutputStream 最初是使用 32 字节的缓冲区创建的。每次您尝试将某些内容放入其中时,如果它不适合现有的字节数组,则会创建一个新的更大的数组并将旧字节复制到新的字节中。由于您每次都使用 2MB 的输入,因此您会强制 ByteArrayOutputStream 一遍又一遍地将其数据复制到更大的数组中,每次都会以 2MB 为单位增加其数组的大小。 由于旧数组是垃圾,很可能它们的内存正在被垃圾收集器回收,这会使您的复制过程变得更慢。 也许您应该使用指定初始缓冲区大小的构造函数来定义 ByArrayOutputStream。您设置的尺寸越准确,该过程应该越快,因为需要的中间副本越少。

您的第二种方法是虚假的,您不能在不同的其他流中装饰相同的输入流并期望这些东西能够正常工作。由于字节被一个流消耗,内部流也被耗尽,无法为其他流提供准确的数据。

在我扩展答案之前,让我问一下,您的其他方法是否期望接收在单独线程上运行的输入流的副本?因为如果是这样,这听起来像是 PipedOutputStream 和 PipedInputStream 的工作?

【讨论】:

感谢您的回复。由于另一种方法是将输入流传递给我,我不知道传入的 IS 的大小。我尝试将字节数组设置为 8MB,但仍然需要很长时间。有人建议我使用 BufferedInputStream ,我想我没有正确使用它,所以我对虚假使用不好=)我确实计划将线程用于我的其他方法,所以我会研究你对 PipedIS 和 PipedOS 的建议,看看它是否有帮助。现在,我只是想在开始使用线程之前让所有东西都按顺序工作。【参考方案3】:

您希望单独的方法并行运行还是顺序运行?如果按顺序排列,我认为没有理由克隆输入流,所以我不得不假设您计划分拆线程来管理每个流。

我现在不在计算机附近进行测试,但我认为您最好以块的形式读取输入,例如 1024 字节,然后推送这些块(或块的数组副本) ) 到您的输出流上,输入流附加到它们的线程端。如果没有可用数据等,请让您的读者屏蔽。

【讨论】:

感谢您的回复和建议。是的,我打算使用线程......一旦我弄清楚如何修复这个瓶颈。我会尝试这样做,分块读取,但我正在从另一种方法传入输入流,所以我需要看看它在我的情况下是否可行。【参考方案4】:

但是,使用此代码可能需要一分钟(对于 10MB 文件)来创建克隆的输入流,并且我的程序需要尽可能快。

复制流需要时间,而且(通常)这是克隆流的唯一方法。除非您缩小问题的范围,否则性能得到显着改善的可能性很小。

以下是可以改进的几种情况:

如果您事先知道流中的字节数,那么您可以直接读入最终的字节数组。

如果您知道数据来自文件,则可以为该文件创建一个内存映射缓冲区。

但根本问题是移动大量字节需要时间。事实上,一个 10Mb 的文件需要 1 分钟(使用您问题中的代码)表明真正的瓶颈根本不在 Java 中。

【讨论】:

以上是关于!!!!!!!1怎样在最短的时间内掌握asp?的主要内容,如果未能解决你的问题,请参考以下文章

如何在最短的时间内搞定数据结构和算法,应付大厂面试?

作为UX设计师,你需要牢记这5大目标

经验分享丨如何用最短的时间学会C语言,并掌握C语言的精髓所在?

RegExp - 我怎样才能匹配最短的金额? [复制]

2016.6.13 考试总结

怎样用最短的时间学习一种语言--Go语言北京站 | 北京活动