日度归档:2019年11月5日

内存泄漏和内存溢出相关说明


摘要:
下文讲述内存泄漏和内存溢出相关说明,如下所示:


内存泄漏和内存溢出概念详解

内存泄漏memory leak :
程序使用内存后,未对其进行释放操作,导致内存使用不断上涨,我们将这种未释放内存的操作称之为“内存泄漏”;
内存溢出 out of memory :
程序所需的内存空间,达到可用上限,出现内存不够用,则会出现“内存溢出”现象。

内存泄漏和内存溢出 之间关系:

内存泄漏可能导致内存溢出,
内存溢出是计算机内存无法满足需求的一种外在表现形式。



内存泄漏的分类

常发性内存泄漏:
每次代码执行到指定位置,都会产生内存泄漏
偶发性内存泄漏:
在特定的情况下,才会发生内存泄漏
一次性内存泄漏:
发生内存泄漏只会出现一次。

内存溢出的原因及解决方法:

内存溢出原因:
1.一次申请内存过大,例:web服务器一次导出一个10G的excel文件,就会导致Out of memoey
2.对应的引用,未释放,导致占用越来越大,最后无内存可用
3.代码中出现无限循环,导致占用大量内存
4.内存过小,不足以运行当前软件
内存溢出解决方法:
1.禁止超大报表导出
2.避免代码中出现死循环
3.引用后,及时释放引用所涉及的对象
4.同数据库交互时,尽量返回少量的数据行
5.list 对象使用完后,及时释放

input上传文件后缀名与MIME名称对比表


摘要:
在我们上传文件时,需要判断文件类型,例:jpg为image/jpg,那么其它类型在IIS中默认的类型映射是何种情况呢?
下文将一一说明:


后缀名 MIME名称
*.3gpp audio/3gpp, video/3gpp
*.ac3 audio/ac3
*.asf allpication/vnd.ms-asf
*.au audio/basic
*.css text/css
*.csv text/csv
*.doc application/msword
*.dot application/msword
*.dtd application/xml-dtd
*.dwg image/vnd.dwg
*.dxf image/vnd.dxf
*.gif image/gif
*.htm text/html
*.html text/html
*.jp2 image/jp2
*.jpe image/jpeg
*.jpeg image/jpeg
*.jpg image/jpeg
*.js text/javascript, application/javascript
*.json application/json
*.mp2 audio/mpeg, video/mpeg
*.mp3 audio/mpeg
*.mp4 audio/mp4, video/mp4
*.mpeg video/mpeg
*.mpg video/mpeg
*.mpp application/vnd.ms-project
*.ogg application/ogg, audio/ogg
*.pdf application/pdf
*.png image/png
*.pot application/vnd.ms-powerpoint
*.pps application/vnd.ms-powerpoint
*.ppt application/vnd.ms-powerpoint
*.rtf application/rtf, text/rtf
*.svf image/vnd.svf
*.tif image/tiff
*.tiff image/tiff
*.txt text/plain
*.wdb application/vnd.ms-works
*.wps application/vnd.ms-works
*.xhtml application/xhtml+xml
*.xlc application/vnd.ms-excel
*.xlm application/vnd.ms-excel
*.xls application/vnd.ms-excel
*.xlt application/vnd.ms-excel
*.xlw application/vnd.ms-excel
*.xml text/xml, application/xml
*.zip aplication/zip
*.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

javascript js 合并数组的四种方法分享


摘要;
下文讲述javascript中js脚本合并数组的四种方法分享,如下所示:

例:
定义三个数组:

     var array1 = [100,201,301];
     var array2 = [7,8,9];
	 var array3 = [11,12,13];
  


concat 合并两个数组

原生态javascript为数组对象提供一个concat方法用于两个数组之间的连接
例:

     var arrayAll1 = array1.concat(array2).concat(array3);
	 ---使用concat连接数组后,原数组的数值不会发生变化,会生成一个新的数组并返回。
   


for 循环向一个数组中加入元素

遍历一个待组合数组中的元素,向另一个数组中依次加入元素,使原数组中的元素变多

     for(var i=0;i<array2.length;i++){
        array1.push(array2[i]);
      }
  


push 合并两个数组

 
   array1.push(array2);


apply 合并两个数组

   array1.push.apply(array1,array2);
   ----等同于-----
   array1.push(array2);


注意事项:
数组合并中,尽量采用大数组去合并小数组
合并数组前,先明确生成新数组,还是原数组上修改

相关阅读:
javascript中 使用js脚本定义数组的三种方法分享