All posts by 龙生
导致2012世界末日的九种可能
前五种毁灭世界的灾难基本上都与太阳活动有关,除了外星智慧生物的入侵和小行星撞击地球以及核战争的爆发之外,世界末日的灾难主要是由于一系列原因所引发的地震和海啸。 2012年太阳活动频繁 第一种可能,太阳耀斑 每隔11年太阳运动都会达到一个最高峰,届时每天都会发生两到三次日冕物质抛射,到2012年底,太阳活动正好即将进入它的下一个最高峰。十亿吨的蒸气和磁场会从太阳内部喷射出来,并且速度高达每小时好几百万公里,就算你穿的是昂贵的航天服,这股极速的热流也很可能将你融化成液体蒸发掉。 有理论称磁极可能颠覆 第二种可能,磁极颠覆 日冕物质抛射出来的带电粒子猛烈冲击地球保护性磁场,导致地球磁场减弱甚至磁力为零。在磁层力恢复其力量时,南极和北极可能出现在任何位置,指南针有可能胡乱指示,其结果不仅仅导致人们在旅行时迷失方向,迁徙性动物经常会利用它们自己对地球磁场线的解读来进行导航,如果脱离了地球磁场的牵引,很多动物会一时间不知道自己身处何地,不知道自己应该在冬天来临时迁徙,最终走向灭亡。那些准备降落的飞机会突然发现自己的GPS失灵了,在紧要关头,GPS失灵可能会让人们付出生命的代价。 电影《2012世界末日》里的海啸 第三种可能,地震与海啸 太阳发射出的巨大电磁辐射很可能会引发强烈的地震。地壳中的金属会传导电磁,吸收当中的能量,使地壳变得不稳定。如果真是这样,2012年的太阳攻击将会在全世界陆陆续续引发地震,只要是断层里有大量金属的地方都难幸免。 这股全新的磁辐射很可能将打破原有的力量平衡,使板块发生错位,所以很可能会出现一场由磁场引发的强烈地震。只要不是发生在你脚底下,地震还算不得什么危险,可怕的是那些发生在深海之中地震所引起的海啸。海啸是人类所知的最具破坏力的力量之一,大洋海底会突然发生移动,例如海底的提升,可能只是一点点,可能只是3,4厘米,但这个过程会排开大量的海水,但别急着退订你的游轮旅行,事实上海啸发生时待在海上反而更安全,在巨大的海浪冲向海岸之前,海平面会变得很低,然后巨浪会突然升起。它会从海岸线吸走海水,形成一个遮天蔽日威力惊人的大海浪,想象一下,一天,你坐在海滩上享受着碧海蓝天,心情舒畅,然后你朝海岸望去突然发现大海正在迅速地后退,甚至比你奔跑的速度更快,它向后退了好几公里,又退了好几公里,如果看到这样的景象,这很可能将成为你这辈子见到的最后一幕,因为那就意味着海啸要来了。 黄石火山爆发 第四种可能,火山爆发 有理论称,在2012年时,可能会有一股非常强烈的太阳能量注入地球,它成为促使蓄势待发的黄石国家公园火山或是其它进入红色警戒状态的超级火山爆发的最后一击。如果黄石火山爆发其威力将立即毁灭周围一切,喷出的熔岩朝着各个方向流去,蔓延数十公里,并摧毁沿路的一切。最可怕的是风会把这些火山灰和毒气云吹到世界各地,届时窜大气将充满大量火山灰,中午时分太阳也会被遮蔽,这就是我们称为核冬天的现象,寒冷和饥饿将杀死一切生命。 板块断裂 第五种可能,板块断裂 如果地球大陆的平衡受到巨大冲击,地球上的所有地面可能会突然绕着地球的核心旋转,这个说法来自一个名叫查尔斯哈普古的人,他认为地球将会而且已经出现过好几次这样的重组。地壳底下有一层厚厚的地幔叫做软流层,那里的岩石柔软可塑,通常,当地壳的两个部分之间发生相互摩擦时就会产生地震。但是根据哈普古的理论,地表的极度不平衡可能会导致整块地壳立刻滑入软流层中,哈普古认为地壳完全脱离地幔,进行独立旋转是有可能的。地球并非完美的圆形,而是赤道部分略鼓,想象一下,有一个点在北极,还有一点在赤道,在赤道的那个点的旋转速度更快,所以它的角动量会更高,曾经坐过旋转木马的人都知道,你会紧紧抓住它以免被甩出去,事实上所有的旋转物体,包括地球磁场受到的都是同样的力量,那股力量会将物质拉向赤道,所以地球的中间会略略鼓起。地球并不是一个完美的圆形,而且包裹它的地壳相当坚固,那片穿过赤道的区域现在突然需要被延伸,很可能大地会开始开裂,当越陷越深被强力拉伸时,强烈的地震和巨大的地裂会周期性出现。 2012年12月21日,太阳、地球以及银河系的中心排成一线 第六种可能,天体一线切断宇宙能量来源 有人说,2012年冬至日,太阳正巧遮蔽银河系的中央,那一刻起,地球的宇宙能量来源将被切断。那是从被称为“银河系的心脏”的黑洞所释放出的赐予生命的能量,如果失去了这种能量,地球上的重力将会消失,人类将会被月球的引力加速吸入太空,体内的大气压会直接把人体胀破。 外星人的科学技术水平非人类能想象 第七种可能,外星智慧生物入侵 很多人认为这个挺荒谬的,其实事实并非如此,科学家已经证明了银河系中存在其它生命的可能性,也就是说银河系中的其它智慧生物可能不止一种,其中或许有一些智慧生物智商比人类高出好几百倍,它们的科学技术人类简直无法想象。如果2012的灾难不仅仅只是发生在太阳系,银河系内其它智慧生物在失去自己星球的同时必然会去寻找一个适合它们居住的新天体,如果不幸看上了地球,一场星球争夺大战即将爆发! 核武器爆炸时高耸入云的“蘑菇云” 第八种可能,核战争爆发 大家或许已经意识到目前国际关系随时都可能紧张,就连“Google退出中国市场”事件都牵扯到了政治关系。现代核武器的威力到底有多大?据专家介绍,核武器爆炸时,几公里内的建筑都会变成一片火海,在没有很好的躲避设施环境下强烈的核辐射会给十几公里内的人造成可怕的创伤甚至死亡。爆炸后大火会燃烧大量的物体产生一层厚厚的烟云,浓浓的黑烟会吸收阳光让空气温度上升到50至100摄氏度,很多生命都会被活活烤死。核武器爆炸产生的化学物质会进一步破坏臭氧层,如果没有了臭氧层,人体将暴露在强烈的太阳紫外线辐射下,皮肤会溃烂出血。如果2012年核战争真的爆发,那将是多么的可怕。 小行星把地球撞出运行轨道 第九种可能,X行星撞击地球 地球周围时刻充满着各种巨型漂浮物在游荡着寻找东西撞,不幸的地球很可能死于2012年一场可怕的宇宙交通事故,它将与银河系中的另一颗急速飞行的行星发生灾难性的撞击——一颗被称为X行星的神秘末日导弹。X行星是一颗穿行于太阳系外部区域的假象行星,这套理论基本上就是说,当这颗X行星穿过内太阳系时。它的引力不仅对地球还将对太阳造成一定的影响,它可能导致太阳发射出某些足以毁灭星球的太阳耀斑。
View Details常用的匹配正则表达式和实例
匹配中文字符的正则表达式: [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内):[^\x00-\xff] 应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1) String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;} 匹配空行的正则表达式:\n[\s| ]*\r 匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/ 匹配首尾空格的正则表达式:(^\s*)|(\s*$) 应用:javascript中没有像vbscript那样的trim函数,我们就可以利用这个表达式来实现,如下: String.prototype.trim = function(){return this.replace(/(^\s*)|(\s*$)/g, "");} 利用正则表达式分解和转换IP地址: 下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序: function IP2V(ip){re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式if(re.test(ip)){return RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1}else{throw new Error("Not a valid IP address!")}} 不过上面的程序如果不用正则表达式,而直接用split函数来分解可能更简单,程序如下: var ip="10.100.20.168"ip=ip.split(".")alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1)) 匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w– ./?%&=]*)? 利用正则表达式去除字串中重复的字符的算法程序:[注:此程序不正确,原因见本贴回复] var s="abacabefgeeii"var s1=s.replace(/(.).*\1/g,"$1")var re=new RegExp("["+s1+"]","g")var s2=s.replace(re,"") alert(s1+s2) //结果为:abcefgi 我原来在CSDN上发贴寻求一个表达式来实现去除重复字符的方法,最终没有找到,这是我能想到的最简单的实现方法。思路是使用后向引用取出包括重复的字符,再以重复的字符建立第二个表达式,取到不重复的字符,两者串连。这个方法对于字符顺序有要求的字符串可能不适用。 得用正则表达式从URL地址中提取文件名的javascript程序,如下结果为page1 s="http://www.9499.net/page1.htm"s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")alert(s) 利用正则表达式限制网页表单里的文本框输入内容: 用正则表达式限制只能输入中文:onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,")" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,"))" 用正则表达式限制只能输入全角字符: onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,")" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,"))" 用正则表达式限制只能输入数字:onkeyup="value=value.replace(/[^\d]/g,") "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,"))" 用正则表达式限制只能输入数字和英文:onkeyup="value=value.replace(/[\W]/g,") "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,"))"
View Detailsasp数组使用
在ASP编程中使用数组 数组的定义Dim MyArrayMyArray = Array(1,5,123,12,98) 可扩展数组Dim MyArray()for i = 0 to 10ReDim Preserve MyArray(i)MyArray(i)=inext 将一个字符串分割并返回分割结果的数组Dim MyArrayMyArray = Split(tempcnt,chr(13)&chr(10))For I = Lbound(MyArray) to Ubound(MyArray) Response.Write MyArray(I) & "<br>"Next 数组排序函数function..Sort(ary) KeepChecking = TRUE Do Until KeepChecking = FALSE KeepChecking = FALSE For I = 0 to UBound(ary) If I = UBound(ary) Then Exit For If ary(I) > ary(I+1) Then FirstValue = ary(I) SecondValue = ary(I+1) ary(I) = SecondValue ary(I+1) = FirstValue KeepChecking = TRUE End If Next Loop Sort = ary End function.. 数组排序函数应用例子Dim MyArray MyArray = Array(1,5,123,12,98)MyArray = Sort(MyArray) […]
View Details挣脱浏览器的束缚 – Ajax权限问题
标题有些唬人的成分,因为这里跨的只是子域名。 事情的经过是这样的,还是那个个人门户网站。其中有个功能就是RSS订阅,每个订阅作为一个模块出现在页面上。如果一个用户订阅了比较多的RSS,则在打开页面时所有的RSS模块就会开始加载,这时候可能就会需要十几秒甚至更长的时间才能加载完毕。这时,如果用户需要作别的AJAX操作——比如保存页面设置——那么长时间的等待就不可避免了,谁让浏览器对于相同域名只能同时存在两个连接呢?不过这可不是一个好的用户体验,那么我们需要怎么做呢? 第一种做法可能比较容易想到,我们可以自己编写代码维护一个Priority Queue,为每个请求附加一个“优先级”信息,这样我们就可以把重要的请求率先发出。这样就可以在一定程度上解决用户的等待问题。可惜这个方法还是无法突破两个连接的限制。于是第二种做法,我们就要设法突破两个连接的限制了。如果能够向别的域名发出AJAX请求,不也就能避免重要的请求被大量的请求所阻塞了吗? 我们还是从头看起,一点一点地来解决这个问题。 传统的跨域名异步请求解决方案 AJAX安全性的唯一保证,似乎就是对于跨域名(Cross-Domain)AJAX请求的限制。除非打开本地硬盘的网页,或者在IE中将跨域名传输数据的限制打开,否则向其他域名发出AJAX请求都会被禁止。而且对于跨域名的判断非常严格,不同的子域名,或者相同域名的不同端口,都会被认作是不同的域名,我们不能向它们的资源发出AJAX请求。 从表面上看起来似乎没有办法打破这个限制,还好我们有个救星,那就是iframe! iframe虽然不在标准中出现,但是由于它实在有用,FireFox也“不得不”对它进行了支持(类似的还有innerHTML)。网上已经有一些跨域名发出异步请求的做法,但是它们实在做的不好。它们的简单工作原理如下:在另一个域名下放置一个特定的页面文件作为Proxy,主页面将异步请求的信息通过Query String传递入iframe里的Proxy页面,Proxy页面在AJAX请求执行完毕后将结果放在自己location的hash中,而主页面会对iframe的src的hash值进行轮询,一旦发现它出现了改变,则通过hash值得到需要的信息。 这个方法的实现比较复杂,而且功能有限。在IE和FireFox中,对于URL的长度大约可以支持2000个左右的字符。对于普通的需求它可能已经足够了,可惜如果真要传递大量的数据,这就远远不够了。与我们一会儿要提出的解决方案相比,可能它唯一的优势就是能够跨任意域名进行异步请求,而我们的解决方案只能突破子域名的限制。 那么现在来看看我们的做法! 优雅地突破子域名的限制 我们突破子域名限制的关键还是在于iframe。 iframe是的好东西,我们能够跨过子域名来访问iframe里的页面对象,例如window和DOM结构,包括调用JavaScript(通过window对象)——我们将内外页面的document.domain设为相同就可以了。然后在不同子域名的页面发起不同的请求,把结果通过JavaScript进行传递即可。唯一需要的也仅仅是一个简单的静态页面作为Proxy而已。 我们现在就来开始编写一个原形,虽然简单,但是可以说明问题。 首先,我们先来编写一个静态页面,作为放在iframe里的Proxy,如下: Copy code<html xmlns="http://www.w3.org/1999/xhtml" ><head> <title>Untitled Page</title> <script type="text/javascript" language="javascript"> document.domain = "test.com"; function sendRequest(method, url) { var request = new XMLHttpRequest(); request.open(method, url); request.send(null); } </script></head><body> </body></html> 然后我们再编写我们的主页面: Copy code <html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"> <title>Untitled Page</title> <script type="text/javascript" language="javascript"> document.domain = "test.com"; function simpleRequest() { var request = new XMLHttpRequest(); request.open("POST", "Script.ashx"); request.send(null); } function crossSubDomainRequest() { var proxy = document.getElementById("iframeProxy").contentWindow; proxy.sendRequest('POST', 'http://sub0.test.com/Script.ashx'); } […]
View Detailsasp函数详解
Array() FUNCTION: 返回一个数组 SYNTAX: Array(list) ARGUMENTS: 字符,数字均可 EXAMPLE: <% Dim myArray() For i = 1 to 7 Redim Preserve myArray(i) myArray(i) = WeekdayName(i) Next %> RESULT: 建立了一个包含7个元素的数组myArray myArray("Sunday","Monday", … … "Saturday") CInt() FUNCTION: 将一个表达式转化为数字类型 SYNTAX: CInt(expression) ARGUMENTS: 任何有效的字符均可 EXAMPLE: <% f = "234" response.write cINT(f) + 2 %> RESULT: 236 转化字符"234"为数字"234",如果字符串为空,则返回0值 CreateObject() FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。 SYNTAX: CreateObject(objName) ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字. EXAMPLE: <% Set con = Server.CreateObject("ADODB.Connection") %> RESULT: CStr() FUNCTION: 转化一个表达式为字符串. SYNTAX: CStr(expression) ARGUMENTS: expression 是任何有效的表达式。 EXAMPLE: <% s = 3 + 2 response.write "The result is: " & cStr(s) %> RESULT: 转化数字“5”为字符“5”。 Date() FUNCTION: 返回当前系统日期. SYNTAX: Date() ARGUMENTS: None. EXAMPLE: <%=Date%> RESULT: 8/4/99 DateAdd() FUNCTION: 返回一个被改变了的日期。 SYNTAX: DateAdd(timeinterval,number,date) ARGUMENTS: timeinterval is the time interval to add; number is amount of time intervals to add; and date is the starting date. EXAMPLE: <% currentDate = […]
View Detailsasp汉字转化为拼音
很多问题都是因为中文问题造成的 如文件名最好别用中文 现在的解决方法一般是产生一个ID,将这个ID做文件名 网页上如果url带汉字也经常出错 现在的解决方法一般用urlencode编码 现在用了这个转化,就好多了 原理,使用Dictionary技术1.添加索引2.遍历词典 <%Set d = CreateObject("Scripting.Dictionary")d.add "a",-20319d.add "ai",-20317d.add "an",-20304d.add "ang",-20295d.add "ao",-20292d.add "ba",-20283d.add "bai",-20265d.add "ban",-20257d.add "bang",-20242d.add "bao",-20230d.add "bei",-20051d.add "ben",-20036d.add "beng",-20032d.add "bi",-20026d.add "bian",-20002d.add "biao",-19990d.add "bie",-19986d.add "bin",-19982d.add "bing",-19976d.add "bo",-19805d.add "bu",-19784d.add "ca",-19775d.add "cai",-19774d.add "can",-19763d.add "cang",-19756d.add "cao",-19751d.add "ce",-19746d.add "ceng",-19741d.add "cha",-19739d.add "chai",-19728d.add "chan",-19725d.add "chang",-19715d.add "chao",-19540d.add "che",-19531d.add "chen",-19525d.add "cheng",-19515d.add "chi",-19500d.add "chong",-19484d.add "chou",-19479d.add "chu",-19467d.add "chuai",-19289d.add "chuan",-19288d.add "chuang",-19281d.add "chui",-19275d.add "chun",-19270d.add "chuo",-19263d.add "ci",-19261d.add "cong",-19249d.add "cou",-19243d.add "cu",-19242d.add "cuan",-19238d.add "cui",-19235d.add "cun",-19227d.add "cuo",-19224d.add "da",-19218d.add "dai",-19212d.add "dan",-19038d.add "dang",-19023d.add "dao",-19018d.add "de",-19006d.add "deng",-19003d.add "di",-18996d.add "dian",-18977d.add "diao",-18961d.add "die",-18952d.add "ding",-18783d.add "diu",-18774d.add "dong",-18773d.add "dou",-18763d.add "du",-18756d.add "duan",-18741d.add "dui",-18735d.add "dun",-18731d.add "duo",-18722d.add "e",-18710d.add "en",-18697d.add "er",-18696d.add […]
View Detailsasp中数组用法
A 定义数组 有两种方式:DIM和REDIM。 DIM定义的是固定个数、数据类型的数组;而REDIM则不同,它可以定义不同类型的数据,也可以定义个数并非固定的数据。比较下面几个例子。 都合法的例子: 程序代码 Dim myarray(5,2) Redim myarray(5,2) 前者错误而后者合法的例子: n=10 n=10 Dim myarray(n) Redim myarray(n,2)另外REDIM还可以定义未定类型的数组,如:Redim myarray(10) B 数组个数 在以DIM或REDIM定义数组时指定的下标,表示的是访问该数组时所容许的最大下标,却不是该数组的个数。实际上,一维数组个数总是等于(最大下标+1),访问时是通过下标从0开始逐个访问的。 比如:Dim myarray(5) 定义的数组元素有6个,分别是:myarray(0)、myarray(1)、myarray(2)、myarray(3)、myarray(4)、myarray(5)。 再如:Redim thisarray(2,5)实际上定义了一个(2+1)*(5+1)=1 8的二维数组。 既然如此,那么,可不可义定义一个只有一个元素的数组呢?答案是:不可以。 如前所说,Redim thisarray(1)定义的数组实际上有(1+1)个数组元素,但类似于: Redim thisarray(0)的语法,错误的。所以,不能定义一个只有一个数组元素的数组。 其实,以上说的只是其默认状况。其实,定义数组可以通过定义下标的起止从而达到定义数组的个数甚至下标的起止编号的。比如:Redim thisarray(1980 to1990)就 定义了一个含有11个元素的数组,下标从1980到1990。 C 关于UBOUND函数 UBOUND返回的是一维数组的最大下标,而不是元素个数。 比如:Dim Myarray(5),那么UBOUND(Myarray)返回的值是5,而不是6。 UBOUND也可以应用于二维数组。应用于二维数组时,它返回的是第一个下标的最大值。 比如:Dim Myarray(6,3), 那么UBOUND(Myarray)返回的值是6,而不是7,更不是18(6*3=18)。 若要返回第二个下标的最大值,则使用:UBOUND(Myarray,2)。 与UBOUND相对应的是另外一个函数:LBOUND,它返回数组的最小下标。与UBOUND类似,LBOUND(Myarray,2)则返回数组MYARRAY的第二个下标的最小值。所以,准确地说,一维数组Myarray的元素个数为:UBOUND(Myarray)-LBOUND(Myarray)+1,而二维数组的元素个数则为: (UBOUND(Myarray)-LBOUND(Myarray)+1)*(UBOUND(Myarray,2)-LBOUND(Myarray,2)+1) 多维数组依此类推。 数组的定义 程序代码 Dim MyArrayMyArray = Array(1,5,123,12,98) 可扩展数组 程序代码 Dim MyArray()for i = 0 to 10ReDim Preserve MyArray(i)MyArray(i)=inext 将一个字符串分割并返回分割结果的数组 程序代码 Dim MyArrayMyArray = Split(tempcnt,chr(13)&chr(10))For I = Lbound(MyArray) to Ubound(MyArray)Response.Write MyArray(I) & "<br>"Next 数组排序函数 程序代码 Function […]
View Details