解决内存泄漏
之前做了一个谷歌浏览器的插件开发,它会打开一个链接,然后收集数据并上传。依次循环,但是跑的时间久了,内存就变得很高,然后浏览器就会变卡,慢慢的影响这个插件的运行,最后浏览器也会崩溃。 什么是内存泄漏内存泄露是指一块被分配的内存既不能使用,又不能回收,直到浏览器进程结束。在 C++ 中,因为是手动管理内存,内存泄露是经常出现的事情。而现在流行的 C# 和 Java 等语言采用了自动垃圾回收方法管理内存,正常使用的情况下几乎不会发生内存泄露。浏览器中也是采用自动垃圾回收方法管理内存,但由于浏览器垃圾回收方法有 bug,会产生内存泄露。 自动垃圾收集是不能代替有效的内存管理的,特别是在大型,长时间运行的Web应用程序中。 内存泄漏的几种情况1、Delete 一个 Object 的属性会让此对象变慢 123456var obj = {x: 'y'};delete obj; // 此时 obj 会成一个慢对象obj.x;var obj = {x: 'y'};obj = null; // 应该这样 2、闭包1 ...
Markdown Style test
This post is originated from here and is used for testing markdown style. This post contains nearly every markdown usage. Make sure all the markdown elements below show up correctly. Headers1234567891011121314 # H1## H2### H3#### H4##### H5###### H6 Alternatively, for H1 and H2, an underline-ish style: Alt-H1====== Alt-H2-—– H1H2H3H4H5H6Alternatively, for H1 and H2, an underline-ish style: Alt-H1Alt-H2Emphasis1234567 Emphasis, aka italics, with *asterisks* or _underscores_. Strong emphasis, a ...
AMD,CMD 规范详解
当我们了解了 CommonJS 以后,CommonJS 规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。由于 Node.js 主要用于服务器编程,模块文件一般都已经存在于本地硬盘,所以加载起来比较快,不用考虑非同步加载的方式,所以 CommonJS 规范比较适用。但是,如果是浏览器环境,要从服务器端加载模块,这时就必须采用非同步模式。为什么呢? 12var math = require('math');math.add(2, 3); 第二行 math.add(2, 3),在第一行 require('math') 之后运行,因此必须等 math.js 加载完成。也就是说,如果加载时间很长,整个应用就会停在那里等。对于浏览器,这是一个大问题,因为模块都放在服务器端。等待时间取决于网速的快慢,可能要等很长时间,浏览器处理“假死”状态。 因此,浏览器端的模块,不能采用“同步加载”,只能采用“异步加载”。 AMDAMD 规范 则是异步加载模块,允许指定回调函数。因此浏览器端一般采用 AMD 规范。AMD(Asynchronous modu ...
CommonJS 详细介绍
CommonJS 规范与实现正如当年为了统一 JavaScript 语言标准,人们制定了 ECMAScript 规范一样,如今为了统一 JavaScript 在浏览器之外的实现,CommonJS 诞生了。CommonJS 试图定义一套普通应用程序使用的 API,从而填补 JavaScript 标准库过于简单的不足。CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样。为了保持中立,CommonJS 不参与标准库实现,其实现交给像 Node.js 之类的项目来完成。下图是 CommonJS 的各种实现。 ConmonJS 的实现 CommonJS 规范包括了模块(modules)、包(packages)、系统(system)、二进制(binary)、控制台(console)、编码(encodings)、文件系统(filesystems)、套接字(sockets)、单元测试(unit testing)等部分。 Node.js 是目前 ...
Git学习总结
git 简介git 是分布式的,所以其核心就是分支,分支的意义在于,可以将项目代码按照功能、模块拆分成不同的分支。比如这个产品要加一个支付功能和一个登陆功能,可以创建两个分支,交给不同的开发人员并行开发。登陆功能先开发完,测试无误后合并改分支到 master 分支,master 分支部署上线。支付功能虽然没有开发完成,但是在另一条分支上,所以产品上线和功能开发完全不受影响。这才是分布式开发的高效模式。在 git 中,工作目录下面的所有文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区域。初次克隆某个仓库时,工作目录中的所有文件都属于已跟踪文件,且状态为未修改。 实用指令详解merge通常,合并分支时,如果可能,Git 会用 Fast froward 模式,但这种模式下,删除分支后,会丢掉分支信息。如果要强制禁用 Fast forward 模式,Git 就会在 merge 时生成一 ...
Hexo-NexT搭建个人博客(二)
本篇文章将介绍基于NexT主题下的一些扩展功能的实现。首先,我们需要明白: 设置侧栏的位置修改 主题配置文件 中 sidebar.position 的值,支持的选项有:left right目前仅 Pisces Scheme 支持 position 配置,也就是说NexT主题的侧栏位置是不能设置的,设置了也没用,反正都在右边。 关于添加居中模块优秀的人,不是不合群,而是他们合群的人里面没有你 代码如下: 1<blockquote class="blockquote-center">优秀的人,不是不合群,而是他们合群的人里面没有你</blockquote> 添加High一下打开博客根目录 \themes\next\layout\_partials\header.swig ,在<ul> ... /ul> 标签之间加入以下代码: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535 ...
Hexo-NexT搭建个人博客(一)
简介Hexo 是一个快速、简洁且高效的静态站点生成框架,它基于 Node.js 。 它有以下特点: 超快速度 Node.js 所带来的超快生成速度,让上百个页面在几秒内瞬间完成渲染。 支持Markdown Hexo 支持 GitHub Flavored Markdown 的所有功能,甚至可以整合 Octopress 的大多数插件。 一键部署 只需一条指令即可部署到Github Pages,或其他网站 丰富的插件 Hexo 拥有强大的插件系统,安装插件可以让 Hexo 支持 Jade, CoffeeScript。 通过 Hexo 你可以轻松地使用 Markdown 编写文章,除了 Markdown 本身的语法之外,还可以使用 Hexo 提供的 标签插件 来快速的插入特定形式的内容。 基于 Hexo 这个优秀的博客框架,很多优秀的开发者奉献出了它们基于 Hexo 开发的主题。NexT 因其 精于心,简于形 的风格,一直被广大用户所喜爱。 安装安装 Hexo 只需几分钟时间,若你在安装过程中遇到问题或无法找到解决方式,请提交问题,我会尽力解决你的 ...