- 博客(24)
- 收藏
- 关注
Javascript变量名混淆细节
前言UglifyJS会对JS文件的变量名进行混淆处理,要理解Javascript变量混淆的细节,我们需要回答以下几个问题:1.遇到一个变量myName,我们怎么知道这个myName变量要不要混淆2.混淆名字怎么生成才合适,新的名字替换旧的名字时有什么要注意的地方?3.哪些关键字会产生一个作用域?4.作用域链跟符号表在UglifyJS里边是怎么体现?5.UglifyJS混淆的过程是什么样?...
2014-05-17 15:53:04
421
PHP-Zend引擎剖析之Hello World(二)
前言这一次,我围绕Hello World来展开Zend虚拟机的执行过程。Hello World的PHP版本:<?php echo 'Hello World';?>前一篇文章聊到的词法分析阶段就会把上边的脚本分析出一个Token序列:我们得到一个Token序列:T_OPEN_TAG, T_ECHO, T_CONSTANT_ENCAPS...
2013-11-30 22:24:53
140
PHP-Zend引擎剖析之词法分析(一)
前言闲来研究一下PHP底层的Zend引擎源码,Zend引擎是PHP脚本的虚拟机。在PHP上层有SAPI接口,负责对各个接入层的抽象,例如PHP在Apache模块里边的实现,Fast-CGI的实现,命令行的实现。在PHP底层便是Zend虚拟机,Zend虚拟机负责解析PHP语法的文件,上层可以在虚拟机中注册函数/变量提供给虚拟机调用,例如从Apache分发过来的HTTP请求经过P...
2013-11-25 11:38:28
194
jQuery源码剖析
博客移到SAE上,域名暂时没买。最近写了一系列jQuery1.9.0源码分析http://rapheal.sinaapp.com/category/js/jquery/,欢迎交流。
2013-02-08 19:21:27
89
【算法入门】深度优先搜索(DFS)
深度优先搜索(DFS)【算法入门】郭志伟@SYSU:raphealguo(at)qq.com2012/05/121.前言深度优先搜索(缩写DFS)有点类似广度优先搜索,也是对一个连通图进行遍历的算法。它的思想是从一个顶点V0开始,沿着一条路一直走到底,如果发现不能到达目标解,那就返回到上一个节点,然后从另一条路开始走到底,这种尽量往深处走的概念即是深度优先的概念。...
2012-05-13 21:01:18
282
【算法入门】广度/宽度优先搜索(BFS)
广度/宽度优先搜索(BFS)【算法入门】郭志伟@SYSU:raphealguo(at)qq.com2012/04/271.前言广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略。因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较广的区域,故得名。 一般可以用它做什么呢?一个最直观经典的例子就是走迷宫,我们从起点开始,找出...
2012-05-13 20:59:42
123
原创 【转】C++ 虚函数表解析
这篇文章写得太好了,瞬间把虚表的一些细节弄懂了。有必要转一下,以后可以翻看。转自陈皓老师的《C++ 虚函数表解析》 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实...
2012-04-26 22:08:28
107
原创 【动态规划】sicily1163
1163. Tour题目大意:就是一个双调旅程问题,从最左边的点走到最右边的点,然后从最右边走回最左边,问这段旅程的最短距离。 解题思路:题目已经告诉我们,所有的点已经按照左到右的顺序输入了。题目可以转换成,从第一个点出发,分两路A,B走,最后汇集到第n个点。用动态规划:dp[i][j]表示A到达i点,B到达j点时的最短路径。我们始终考虑i&g...
2011-09-24 13:58:27
264
原创 【动态规划】sicily1221
1221. 数字游戏解题思路:题目有个地方,我理解错了,导致WA很多次,问题是当你擦除a[i]时,你要将它对应的b[i]去减剩余的序列,之前一直以为第i轮就减去b[i],ORZ。简单的动态,dp[i]表示去到第i轮时的最大擦出和。按照我们直观的思路,肯定是最大消费的(也就是b[i]比较大的)应该先拿掉,因此我们先按照cost排序。dp[j] = min{dp[j-...
2011-09-23 16:13:00
103
原创 【动态规划】sicily1001
1001. Alphacode 题目大意:将一串字符串(只有A-Z)转化成数字0-9,转换的规则:A->1,B->2 ......Z->26。那么从这段数字再转换回去字符串就会发生一些歧义,题目要求求出一段数字转换成字符串的最多数量。 解题思路:如果说用dp[i]表示当前的前i个数字能够转化的字符串数量,当str[i+1]加...
2011-09-23 15:36:18
136
原创 【动态规划】sicily1011
1011. Lenny's Lucky Lotto题目大意:给定正整数n, m,构建的列表满足下列条件:列表长度为n列表的第i个数不能超过2的i次方列表的最后一个数不能超过m求出这样的列表的最大数目。 解题思路:一般遇到需要求最优解的,应该立马想到动态规划;影响列表的数目的应该是有两个状态,一个是列表的长度,一个是列表的...
2011-09-23 01:58:44
204
原创 Linux安装H3C iNode
刚刚装了Linux系统,要连上校内网,得用到华为的H3C iNode。 刚刚开始使用Linux,很多不熟悉的地方。不过这两天在搞Linux,有种很兴奋的感觉,对它突然很感兴趣。 记录一下在我的Fedora下安装iNode的过程,纯粹是无技术性的文章。 1.解压tar -zxvf iNode.tar.gz 2.进目录iNodeClientcd iNodeC...
2011-09-16 20:43:35
724
Javascript使用Ajax时如何跟踪历史进行后退前进
前言Web2.0发展的迅猛,个人觉得很大程度依托于Ajax的出现。然而,我们分享一个网页给好友一般都是直接把URL复制给他,但是Ajax的特点导致了同样一个URL,有可能你跟你的好友看到的内容是完全不一样的,这个真的很头疼。于是我发现了如果从URL的HASH入手(也就是URL后边#的部分)可以跟踪这个浏览记录的历史,在此记录一下。 Ajax既然出现了Ajax这个词,我想就稍微解...
2011-08-09 09:56:37
205
Javascript解决过多冲突—避免污染全局
前言记得long long ago,刚刚开始写JS的时候,我喜欢写一些函数在JS文件里边,然后通过script标签引进来,在DOM节点上绑定onclick等事件,看了很多人写的代码,也大多是这样。后来会发现,当项目小的时候这么做为了快速开发是可以接受的,然而当很多人一起开发一个Javascript大应用的时候,你会发现不同的代码风格跟全局变量会导致很多冲突,这是一个很痛苦的事情。 ...
2011-08-08 13:32:11
641
浅谈Javascript的压缩优化
前言我们都知道Javascript是脚本语言,用于浏览器端编程,也就是说当我们访问一个Web网站或者应用时,需要从服务器去取相应的JS文件,然后在浏览器端解释运行。由于Web应用的丰富性,Javascript自然而然也会增多,所带来的影响就是我们需要花更多的时间去服务器取这些JS文件,因此压缩JS是一个很重要的步骤,当然既然是下载到客户机器上,JS的代码对用户也是可见的,压缩JS也可以有效的保...
2011-08-08 00:33:55
136
我对Javascript闭包的一点点理解
前言如果前端人员不懂Javascript闭包,那只能说他压根就没懂Javascript,只能算入门级。本篇主要是写本人对闭包的一些理解,欢迎拍板。 闭包概念先引用一下官方解释: A "closure" is an expression (typically a function) that can have free varuables together with an...
2011-08-07 17:12:23
104
写不同浏览器兼容的CSS
前言往往我们强调不同浏览器对于解析同一个样式的效果是不一致的,但是新手们可能很容易就掉入一个以为很高深很麻烦的深渊而不知所措,其实很多东西是需要实践经验才能慢慢记得的。本篇想大致列举一些个人遇到的常见的兼容性以及布局混乱问题。 CSS Reset什么是CSS Reset?你可能遇到过明明写着body底下的第一个块没有设置任何边距,而偏偏就是有一块空白在上边,其实这个就是浏览器默认的...
2011-08-05 01:39:50
84
浏览器处理“盒子”
前言这应该是我写关于Web前端一些概念性的东西的最后一篇,为了分享一些自己的想法跟理解,一起交流心得,并且希望能帮助到一些人进入Web前端。为了避免盒子的概念太奇怪,在这声明一下:盒子就是页面切分成一小块一小块的元素。 让盒子动起来前面几篇文章已经介绍了,我们可以通过为页面量身定制一套装饰,使得页面的摆放跟设计图一摸一样,高保真地还原设计图。不满足现状的人们要继续朝更高难度的发...
2011-07-28 20:14:12
152
盒子的标志与装扮
前言通过前面几篇博文的介绍,我们应该大概搞懂了浏览器上页面的元素都是盒子并且盒子摆放在浏览器上的方法了。于是我们开始要打扮了,女卫悦己者容,美观交互性强的网站将会为你带来更多的访客。 装扮的前提盒子摆好了,你可能要让我告诉你怎么装扮了!那你就把第一个盒子的边框涂成蓝色吧。于是,这个时候你傻眼了,地板上这么多盒子,哪个才是第一个盒子啊!?然后你只能干巴巴的什么事情都做不了。...
2011-07-28 08:52:58
123
浏览器上的“盒子”摆放
前言依旧延续几篇博文的风格,旨在引出一些概念的东西,至于技术贴,以后再慢慢贴一些细节的东西。上篇博文写了一点点自己关于“盒模型”的一些想法跟阐述,那既然盒子制造出来了,紧接着就是把它摆放到浏览器上了。 摆放盒子的启示如果给我们一张设计图,图上标志着盒子摆放的位置方式等等,然后叫我们按着设计图拿一堆盒子去把它们摆放在地板上。要是是我,我拿到设计图,我就开始按照第一个盒子摆放的...
2011-07-27 17:01:45
379
盒子的世界
前言之前说过了,浏览器拿到了HTML,CSS等资源文件之后就要展示给电脑前的用户看,关于展示的细节,我暂时讲不了也不想讲,本篇想提到一个很重要很重要很重要的概念!就是盒模型,不用蒙了,其实也就那么一回事。 盒子是啥相信是个人都知道盒子长什么样子:四四方方,有个外壳,里边可以装物品,大盒子还可以放小盒子。这个是俗到不能再俗的解释了。目前我们假设活在一个2D的世界,有一堆打开盖...
2011-07-27 11:37:21
137
百“浏览器”争鸣的时代
前言上一篇博客HTML|CSS|JS初探提到了一些基本的概念,貌似有人踩,好吧,不应该影响我现在这种非常渴望分享交流的状态吧。很多程序语言会从Hello World教起,貌似成了一种学习程序语言的潜规则了。但是我不大想写这样的东西,还是想按自己理解先解释一些概念吧。WEB应用离不开浏览器,于是,我打算从这里开始写点自己的想法。 浏览器各种小白用户都知道怎么浏览网页:双击打开...
2011-07-26 22:32:54
107
HTML|CSS|JS初探
前言应该说具体接触前端(HTML + CSS + JS)有一年,到现在没总结过,几个原因是:1.自己太懒,水平有限;2.怕解释错或者说错什么被人鄙视。这些天渴望分享的心情很强烈,想让自己的一些想法更加丰富,也可能向来总是喜欢跟别人讲点东西。之前在新浪上有写过一些,发现那边不适合写技术相关的东西,自己又总是懒得去租个服务器做个人博客,于是就跑到这边来了。这就是开这个博客的原因了。鄙人水平有限...
2011-07-26 12:49:48
77
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人