热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[js][内存泄露][内存回收][内存释放]avascript的内存释放实验

问:我以前也看过关于javascript的内存释放的文章,但我从来也没仔细看过。原因:一来我觉得这个东西可有可无,二来,鬼知道这些理论到底有没有科学根据?今天我做了一个小小的实验,

问:

我以前也看过关于Javascript的内存释放的文章,但我从来也没仔细看过。原因:一来我觉得这个东西可有可无,二来,鬼知道这些理论到底有没有科学根据?

今天我做了一个小小的实验,证实内存释放还是有用的。

比如有如下程序:

var a = new Array();

……….

一般a用完了就完了,谁也不会想到去释放a所占用的内存。设想代码:

var a = new Array();

……….

a = null;

有没有用呢?我做了一个实验:

在editplus中编写如下代码:

”,”b”);

//…

c=b.a;

//…

//keep DOM object reference:

window.open(“about:”,”b”);

//…

c=b.document.getElementById(“a”);

//…

______________________________________________________________________________________________

答13:

————————————————————————–

回复:emu(ston)

是呀。我明明一个帖子,发出来以后居然不完全,所以我不得不又发了一个,接上。

真奇怪。。。

————————————————————————–

上回csdn改了xsl我就发现了这个问题了,给他们反映过,他们说测试过没有这个问题。可是我这里还是照旧。其实你帖的内容别人都看得见的,就在我们的浏览器上被截断显示了。害的我上回差点回答错了问题。

我的系统是2000professional英文版。浏览器IE5.00.3103.1100(英文版),你的呢?

这还有谁有相同问题吗?

______________________________________________________________________________________________

答14:

我也有,估计绝大多数人都有!

______________________________________________________________________________________________

答15:

:(….不和你辩了。您的English+Chinese我实在不知所云。什么载树,乘凉的。什么叫“去掉set null 看看,我想一样会下去”的。你自己试试不就完了吗???

我承认你的理论很“牛B”,可谁看得懂呀?

其实我的逻辑很简单呀:做了一个实验,加了=null后,系统的可用内存就多了,我就得出内存被释放了的结论。而我得出“可用内存多了”的结论是我在win2000里的任务管理器里看到的(Ctrl+Alt+del)。

其他的我就不知道了,对于系统机制我不懂。呵呵。

______________________________________________________________________________________________

答16:

:)

也不合你辨了,你的中文和人缘都比我好

何况人家好不容易回来一趟,我又和人家没仇

何苦落一个死缠烂打的美名,呵呵

______________________________________________________________________________________________

答17:

呵呵。也不是什么死缠烂打啦。。。。辩辩对大家都有好处的。我们来这里不就为了学习吗?你说呢?

我说过:

其实我的逻辑很简单呀:做了一个实验,加了=null后,系统的可用内存就多了,我就得出内存被释放了的结论。

我觉得这就像 1+1=2的逻辑一样简单呀?你能就这个实验本身作出说明吗?你也做一下实验看看呀,不要多少时间的。

不要走呀。接着说自己的理由,这是纯技术问题。没什么的。:)

______________________________________________________________________________________________

答18:

我想 这种问题,就我们俩的力量是不会有答案的。

这里有许多非常有经验的人,

大家都说话呀!

______________________________________________________________________________________________

答19:

http://expert.csdn.net/Expert/TopicView1.asp?id=1241212

______________________________________________________________________________________________

答20:

http://expert.csdn.net/Expert/topicview.asp?id=1041463

______________________________________________________________________________________________

答21:

Javascript uses garbage collection, to really recover memory, try the undocumented CollectGarbage() function

______________________________________________________________________________________________

答22:

yes, it’s wonderful.

It’s really i want.

不过有被Javascript愚弄的感觉,我知道他的garbage collection机制,

怎么没有文档提过有这么个function

CollectGarbage!

wow, Let me try it first.

______________________________________________________________________________________________

答23:

CollectGarbage() 在第一个回复的时候就试过了,没什么效果

______________________________________________________________________________________________

答24:

感觉Javascript版是最有活力的一个版

______________________________________________________________________________________________

答25:

to qiushuiwuhen(秋水无恨) :

对, 我做的sample也看不出。 可能还有其他未知因素。

to saucer(思归) : 能给个例子吗?

______________________________________________________________________________________________

答26:

还有,能说说我的这两个经验吗?

1) 如果你在另一个window中keep了该window中的object的reference,即使关闭该window,内存也没有释放

2)更糟糕的是,如果你keep的是一个DOM object的reference, 关闭该object 所在window, IE会crash, 报内存错误(或者要求,重新启动)

______________________________________________________________________________________________

答27:

关注

______________________________________________________________________________________________

答28:

You’d better open the task manager and watch the memory usage.

If you do not see the effect, use a larger n

______________________________________________________________________________________________

答29:

反正是client的事情,你开发网站的管它那么多做什么

______________________________________________________________________________________________

答30:

学习

______________________________________________________________________________________________

答31:

好!!!

______________________________________________________________________________________________

答32:

服!

P4 1.6G/512M/Win2000 server/IE6 测试数据:

n = 200

t1= 276560k

t2= 279768k

t3= 276904k

n = 300

t1= 275048k

t2= 285444k

t3= 276072k

n = 300

t1= 276640k

t2= 284976k

t3= 276816k

n = 500

t1= 276860k

t2= 309900k

t3= 277100k

n = 1000

t1= 277020k

not finished in 20min

还请回答我的另外一个问题

______________________________________________________________________________________________

答33:

有这么多的高手在讨论,学习!!!

______________________________________________________________________________________________

答34:

这只是一个简单的垃圾回收问题,如果做过编译器和bit解释器的人应该很熟悉这个原理,远离比较复杂,不过有一点是一定的Javascript不会主动释放内存!这个主要同性能要求有关,其实Javascript是可以做到自动释放内存的。但是现在的解释核心都没有这样去做,jscript的内存释放机制还是可以的,但是仍然不会主动释放所有内存(可能会释放部分内存)

______________________________________________________________________________________________

答35:

还是没有解决楼主的问题,只是转移了矛盾,将“指针”在数组中丢弃罢了

You’d better open the task manager and watch the memory usage.

If you do not see the effect, use a larger n

______________________________________________________________________________________________

答36:

不用浪费无用功了,GC函数不能随意调用,它是没有选择性的,也是就说它不能有效判定对象是否有用,使用GC函数是极不安全的。原理可以在java的解释器的原理中得到验证,正是因为这个原因,所以没有任何一个Javascript解释核心会在程序运行中主动调用这个函数(如果可以随意调用当然 Javascript解释核心早就实现了),通常这个函数会在核心推出内存,因就是IE或NS程序结束的时候才会调用.这样才是安全的,Javascript通常是座小程序的,因此不必为占用内存而担心。我虽然不是做Javascript程序的,我是做Javascript解释核心的。所以,请大家听我的劝告把。

______________________________________________________________________________________________

答37:

楼上的,我们这里太需要你这样的人来说几句了。

欢迎以后常来,多和大家唠唠:)

不过,MSDN上说:

When the script engine is shut down, garbage is collected.

When 256 variants, or more than 64KB of strings, or more than 4096 array slots have been allocated, the garbage collector sets a flag that says collect soon.

Whenever a new statement is executed or the script debugger starts, that flag is checked, and if it is set, a collection is done.

为什么说他不会主动调用呢?

______________________________________________________________________________________________

答38:

to wsj(骆驼)

你说的这个是jscript的,我说过:

>> redpower(常宁) ( ) 信誉:100 2002-12-12 11:08:00 得分:0

>> 这只是一个简单的垃圾回收问题,如果做过编译器和bit解释器的人

>>应该很熟悉这个原理,远离比较复杂,不过有一点是一定的Javascript不

>>会主动释放内存!这个主要同性能要求有关,其实Javascript是可以做到

>>自动释放内存的。但是现在的解释核心都没有这样去做,jscript的内存

>>释放机制还是可以的,但是仍然不会主动释放所有内存(可能会释放

>>部分内存)

这并不与我的论点相左,而是证明了我的论点

(When 256 variants, or more than 64KB of strings, or more than 4096 array slots have been allocated, the garbage collector sets a flag that says collect soon.)

(When the script engine is shut down, garbage is collected.)这个则是证明了我下面的论述:

>>通常这个函数会在核心推出内存,因就是IE或NS程序结束的时候才会

>>调用.这样才是安全的

你说是不是:)

______________________________________________________________________________________________

答39:

值得说明的是JScript并不是Javascript,他们中间有很多显著的不同点,而且很多是本质上的。

______________________________________________________________________________________________

答40:

如果不释放内存,关闭网页或跳到别的网页上,内存不会自动释放吗?

学习

______________________________________________________________________________________________

答41:

to sunmingdong() ( )

这个同解释器没有关系,是否释放关键是在寄主身上,反正不会影响什么,毕竟Javascript都是些小程序,而且不会也不应该有频繁的内存申请,当然编成风格不好的程序除外。据我所知好像IE合NS都不会在程序退出前释放。

______________________________________________________________________________________________

答42:

to redpower(常宁)

能解释一下:

1) 如果你在另一个window中keep了该window中的object的reference,即使关闭该window,内存也没有释放

2)更糟糕的是,如果你keep的是一个DOM object的reference, 关闭该object 所在window, IE会crash, 报内存错误(或者要求,重新启动)

吗?

______________________________________________________________________________________________

答43:

to wsj(骆驼) ( ) 信誉:100 2002-12-12 13:05:00 得分:0

1) 如果你在另一个window中keep了该window中的object的reference,即使关闭该window,内存也没有释放

2)更糟糕的是,如果你keep的是一个DOM object的reference, 关闭该object 所在window, IE会crash, 报内存错误(或者要求,重新启动)

这两个问题同解释核心的原理应该没有什么关系,这基本上只有在JScript上才会出现(我不能肯定是否是bug).

垃圾回收机制的垃圾判断算法比较复杂,而且十分矛盾,因此会有一些取舍。换句话说就是很难判断一个对象是否还有存在的价值。abc=NULL这种方式并不是java或Javascript必需的,是否加上这个要看个人习惯,而且还要看使用的解释核心是否会认为这表示一个对象生命的终结,如果这个方式可靠,也就不会在 java或Javascript中取消delete.

______________________________________________________________________________________________

答44:

我对这个问题专门研究了很长时间,是在IE5以上的浏览器做的。不关闭浏览器也不跳转到新网页时,浏览器不会主动释放脚本语言程序中的申请的内存,但跳转到新网页会,但这个释放有些特别(我记不清楚了,好象不是一下就全部释放)

______________________________________________________________________________________________

答45:

to wsj(骆驼) ( ) 信誉:100 2002-12-12 13:05:00 得分:0

比较奇怪的是你如何知道(如果你在另一个window中keep了该window中的object的reference,即使关闭该window,内存也没有释放)因为如果IE没有退出去前,你不知道是否释放了(应该是没有释放,从理论上也应该是这样),而退出去后,如果没有释放,则就是内存泄漏,应该是一个关键的BUG,所以我认为你的判断可能有错误。

第二个你是如何关闭Object所在的window的?在Javascript中你不可能用delete删除实例,关闭windows不会导致 windows对象的消失。这个对象什么时候从内存中消失,我认为在Javascript中,基本上不会消失,在jscript中,这个就不好断定。

______________________________________________________________________________________________

答46:

to wanderinrain(迷失在雨中)

我认为是没有释放,不可能通过监视内存的变化来判断内存是否被释放了,因为这里还有很多的com对象需要释放和创建。比如dom之类的。这些内存的变动直接导致了判断的失误。实际上真正的Javascript内存的完全释放是要发生在解释核心的重新加载或delete的时候,其他的时候的释放都是危险的和不被推荐的.

______________________________________________________________________________________________

答47:

我猜啊^_^,一点道理都没有。

是不是IE分配的时候Array分配的大一点,而null也分配,但是分配的要小一点,或者几乎不占内存(因为我觉得a{i}),这样就会出现楼主的现象,原因是IE重新给它分配了小的内存,所以内存会降下来,而当CG的时候,会将所有为null的变量都销毁。这个样子?

纯属胡猜啊:)

______________________________________________________________________________________________

答48:

上次我去问JScript的开发小组,他们说如果Nested Function没有被释放,

那么所有上级函数的参数即使设为null,即使使用CollectGarbage都不会释放内存。

看来是误导我。(或是版本问题?)

———-

这是我做的例子

http://www.lostinet.com/public/VariablesScopeRecursion.html

里面对于内存释放的规则(脚本层)已经理解得很透了。

(每一层菜单分配?M的内存.对着任务管理器才看到情况)

______________________________________________________________________________________________

答49:

我想,我们的语言交流出现了问题:

我再描述一遍:

1) 假设user open了一个IE window, input your page one url: page1.htm,然后你在page1中创建了a=new Array(…);并且在客户的内存上涨了10M, 然后page1.htm中的脚本用window.open(“page2.htm”)打开了page2.htm,然后你的page2.htm中的脚本说 b=widnow.opener.a;接着user关闭了你的page1 IE窗口.

问:上涨的哪10M内存会否释放?

答:不会,但如果没有打开page2.htm,会释放

2)同上,但b=window.opener.document.body, 关闭page1,

问:又会怎样?

答:往往IE会crash, 报内存错误(或者要求,重新启动)

______________________________________________________________________________________________

答50:

猜的就是不准,看来我又错了。

______________________________________________________________________________________________

答51:

to Lostinet(迷失网络)

your code:

——————–

//明显,已经释放了。

r=null;

———————

这个r不是你的Nested Function r

function A(a)

{

    a=null;

    return r;

    function r()

    {

    }   

}

这个r只在A中可见(private)

______________________________________________________________________________________________

答52:

to wsj(骆驼) ( ) 信誉:100

你的描述,我彻底糊涂了,不过有一点可以肯定r=null这种用法,在标准的Javascript中应该不会导致内存被释放,当然我也会客观地说在 jscript中,内存确实会可能释放,但是也是相当不确定。另外上面的一位兄弟说的数组问题显然不是这个问题的答案,在解释核心中都是动态申请这些东西的,通常用malloc(特别注意不是new)因此也就不存在数组问题了。

______________________________________________________________________________________________

答53:

to Lostinet(迷失网络)

嵌套函数如果不掉用内存回收函数就不会释放内存,其实我可以肯定地告诉正常情况下,Javascript不会回收任何正在运行脚本申请的内存,释放只是在推出或者重新初始化的时候,还有就是调用垃圾回收函数(千万别用)。jscript有另外的策略,但是你必须要知道jscript不遵循任何 Javascript的标准,它是独立的一种标准。

其实从Javascript角度说,如果你真的联系了jscript开发组,那么他们的回答同我的回答都一样,就是递归调用不会释放任何空间。

______________________________________________________________________________________________

答54:

up

______________________________________________________________________________________________

答55:

我写了一个parseColor(color)函数,利用的是IE中的td对象的bgColor属性的解释颜色代码的功能。如果IE中JScript中有释放内存的功能的话。那么下面这种写法应该比较好:

可是如果不能释放内存的话,是不是这样写更好一些:

我也不知道这两种写法那种更好。redpower能不能解释一下哪种更好呢?

______________________________________________________________________________________________

答56:

to andot

这个同IE的jscript是否释放内存关系不大,而且我要纠正的是JScript肯定有GC功能,而不是你的意思,就你的代码来看,我看如何用没有什么区别,因为你没有频繁创建对象

______________________________________________________________________________________________

答57:

如果用第一种写法的话,每调用一次这个函数,对象就会被创建一次(当然之后被remove了,可是谁知道这个removeNode有没有起作用释放内存的作用),如果removeNode没有释放内存的话,那么如果程序中频繁调用parseColor这个函数的话,岂不是内存就越来越少了?

______________________________________________________________________________________________

答58:

>>>>1) 如果你在另一个window中keep了该window中的object的reference,即使关闭该window,内存也没有释放

As you might know, windows opened with window.open() may share a process with its opener (_blank or _new window may not). That is, even if you see those two windows on the desktop, if you look at the process table in the Task Manager, you may only see one IEXPLORE.EXE running. Memory may only be released when the process is terminated

>>>>2)更糟糕的是,如果你keep的是一个DOM object的reference, 关闭该object 所在window, IE会crash, 报内存错误(或者要求,重新启动)

I would say this looks like a bug, you might want to report to Microsoft

______________________________________________________________________________________________

答59:

学习!

______________________________________________________________________________________________

答60:

to andot(雨飞)

我前面说过了,Javascript是不会主动在程序没有结束前去执行GC功能的(我不是说其他Javascript实现肯定会遵循这个,比如 JScript就是一个例外,主要原因是这个东西根本就不遵循Javascript规范)因此,这个地方你无论如何写,如果他真的为这个对象分配内存了,那么就不会释放掉。其实远不止建立对象会这样,比如执行一个字符串转换为整数的函数,他就会建立一个“可变类型对象“而这个对象是不会再函数执行完毕后释放(因为是传值的而不是传址的)所以如下代码如果Javascript支持,则会占用大量内存:

var a=1234;

for(var i=0;i<10000000;i++)

{

    println(a);

}

至少现在大多数的Javascript实现都会有这个问题,当然JScript不会存在这个问题,因为它不执行Javascript规范的要求。

下面的就不会有问题

var a=1234;

var b=&#8221;1234&#8243;;

for(var i=0;i<10000000;i++)

{

    println(b);

}

这个无论什么实现,基本都不会有内存增加的问题

我这样说你应该明白了吧

______________________________________________________________________________________________

答61:

to redpower(常宁)

你的意思是不是说,JScript的垃圾收集机制与Javascript不一样,比如我的那个函数:

function parseColor(color) {

    var ColorParser = document.createElement(&#8220;td&#8221;);

    ColorParser.bgColor = color;

    return ColorParser.removeNode().bgColor;

}

在执行完成以后,不会增加文档中的对象数目,是不是啊?(我的意思是,removeNode是否真的把createElement的td给移除了,哪怕是做了标记,下次再调用时createElement时,会利用以标记的这个对象的空间也可以啊。)

哦,对了,我可以做个实验看看。

______________________________________________________________________________________________

答62:

to andot(雨飞)

由于我仅仅对Javascript核心进行开发,而JScript不是一个开放的标准因此,我无法说明JScript的GC的内部实现原理,至于是否真的会增加数量需要微软的解释,不过M$似乎会控制对象的数量,它一般会将这个创建对象达到一定程度后,进行强制性的内存回收,因此如果打算循环 10000000次来看内存是否有很大增长似乎并不现实,当然我指的是JScript,而对于Javascript这个方法通常应该是有效的

______________________________________________________________________________________________

答63:

测试结果虽然没有发现removeNode是否起了作用(因为不论是否加上removeNode,内存的使用都没有增加,看来JScript的垃圾回收机制确实很好!)但是测试结果表明第一种写法要比第二种写法慢好多(看来createElement确实花费很多的时间)。所以我觉得还是改成第二种写法好。

______________________________________________________________________________________________

答64:

to andot(雨飞)

其实JScript的内存回收机制是在牺牲性能的情况下换取的,他的性能要比其他的实现慢进一个数量级,其他的解释核心的实现是编译+bit虚拟机,就类似java一样,他的就不是那么简单,他也要编译,但是运行就不同了。因此不能说他的回收机制很好,只不过大家的取舍不一样而已,我更喜欢 Javascript的方式,而不是jscript的方式。你的实验我没做过,不过我看好像在Javascript也不会因为createElement 而占用大量内存

______________________________________________________________________________________________

答65:

这么多高手,学习。

______________________________________________________________________________________________

答66:

角角多,星星多多!

______________________________________________________________________________________________

答67:

高手就是高手

______________________________________________________________________________________________

答68:

FAINT

楼主梭说的释放是什么意思?

=========================

产生那么多实例,是要花些时间,占些内存是应该的。

你用EditPlus运行后,不关掉那页,内存怎么释放,如果IE都关掉了,内存还是居高不下,那时释放的问题,好好升级的得IE。如果你的系统还是慢得象蜗牛,你盖重新启动机器了,多半是出现了内存碎片,在堆里创建那么多小东西,再删除,够乱的.

=========================

我现在还是没明白楼主说什么呢?

______________________________________________________________________________________________

答69:

楼主说的大概是在js运行过程中动态的强行释放不再引用的对象占用的内存吧,关掉了IE后的内存问题咱们Javascript版又能有什么办法?

______________________________________________________________________________________________

答70:

哈哈.没想到我的一个小帖子招来这么多高手讨论.:)

其实我的帖子可以简化的得出下面的结论:(数据是虚拟和简化了的,旨在说明问题)

1) 假如你的系统开始有100K的可用内存.

2) 用户用IE打开你的页面,执行一段JS脚本.

3) 当执行到 a = new Array();

4) 这时用户的系统只有90K的可用内存了.

5) 当执行到 a = null 后

6) 这时用户的系统有95K的可用内存了.

就是说,假如一个用户打开了你的网页,运行了你的脚本.(正在浏览,没关闭!!)..如果你的脚本没有加a =null; 那么他就只有90K的内存可以做别的事情,比如又打开Photoshop软件绘图.如果你的脚本加了a=null;他就可能就有95K的内存可以用 Photoshop了.

我说的都是IE没有关闭的情况.(设想,他可能正照着这个网页在photoshop里绘图).至于关了IE是什么情况,我没做实验.

所以,不管你知不知道原理,如果你的脚本里有大量的Array.不妨用完以后加上=null.这样会给你的用户带来一点点好处.:)&#8230;.

______________________________________________________________________________________________

答71:

搂主打算什么时候结帖呀?

______________________________________________________________________________________________

答72:

题外话,楼主的心工作怎么样,呵呵,QQ见不到你了。

希望js工作组在下一代的js中支持某种意义上的重载,这样很多不完善的地方就可以有csdn的朋友们来完善了。:)


推荐阅读
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • Android工程师面试准备及设计模式使用场景
    本文介绍了Android工程师面试准备的经验,包括面试流程和重点准备内容。同时,还介绍了建造者模式的使用场景,以及在Android开发中的具体应用。 ... [详细]
  • 嵌入式处理器的架构与内核发展历程
    本文主要介绍了嵌入式处理器的架构与内核发展历程,包括不同架构的指令集的变化,以及内核的流水线和结构。通过对ARM架构的分析,可以更好地理解嵌入式处理器的架构与内核的关系。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
author-avatar
vghoon
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有