赶到某浏览器公司第一件事就是做一套笔试题,笔试题有三题,这里说说第一题
第一题是二叉树非递归层次遍历
用队列实现,代码如下:
static void levelorder(Node p) {
if (p == null) return;
Queue queue = new LinkedList();
queue.offer(p);
while (queue.size() > 0) {
Node temp = queue.poll();
visit(temp);
if (temp.getLeft() != null) {
queu
继续阅读 »
一、引言
最早接触爬虫,是发现了一个叫做『豆瓣妹子』的网站,写了一个简单的程序可以批量下载图片。后来陆陆续续抓取过豆瓣电影,Google+,facejoking等网站。毕设的选题也是抓取新浪微博,然后分析博文的传播情况。最近一直对知乎的数据感兴趣,于是开发了Node模块zhihu-api,用于简化数据的抓取。
通常来说,所谓的爬虫,无非是通过程序来发送HTTP请求。因此理论上来说,所有浏览器能访问到的内容,都是可以通过爬虫来进行抓取的。
一般而言,我们所感兴趣的信息,只是页面中的某一部分数据,例如:某个标签的文本、链接地址、图片地址等。有些网站会提供开放的API(往往也会有很多限制),这时只需要直接请求该API,就可以拿到比较
继续阅读 »
浏览器中的javascript引擎是单线程的,如果在setTimeout设定的时间到达时,javascript引擎还在处理另外的代码,那么setTimeout设定的事件就只有排队等待了。所以一般来说setTimeout设定的时间都是不准确的,会比设定的晚。就算setTimeout时间设定为0,也不一定马上执行,这样设定是把想执行的函数放在javascript引擎执行队列的末尾。
继续阅读 »
命令行终端里,使用set -o vi, 用vim来操作终端的输入, 估计比终端要提供的emacs快捷键爽多了;
使用MacBook自不用说, 配合iterm2, jitouch, Alfred等
jitouch配合mac触摸板, 比鼠标好用n倍. 自定义单击,一手固定另一只手指轻拍, 左右拍等操作.我通常是One-Fix Left-Tap是浏览器的previous tab, right tab则是next tab, 还有配置了关标签页, 新开标签页的手势;
用Keyboard Maestro改键, ctrl+command+i是iterm, +c是chrome, +h是左窗口, +r是右窗口;
用paste软件记录所有剪贴板记录,
继续阅读 »
问题
在之前介绍 fiddler 使用技巧的文章中,我提到伪造 json 返回响应时,要设置正确的 Content-Length 。
规范定义了在大多数情况要设置 Content-Length ,只有少数情况例外。在浏览器实现上,如果设置了比正确数量要少的 Content-Length ,那么内容会被截断,若比正确数量要多,那么会一直处在等待加载更多内容的状态。
继续阅读 »
调试 JavaScript 也许是一场噩梦:一些错误非常难理解,并且给出的错误行号并不是总是很有帮助。如果有一个列表,列举这些错误的意思和如何修复它们,将对我们非常有帮助。
本文列举了 JavaScript 中一些奇怪的错误。对于相同的错误不同的浏览器可能给出不同的提示,所以分别给出了不同的例子。
more
如何阅读错误
进入正题之前,我们先快速分析一下错误消息的结构,这对我们理解错误消息非常有用,同时也将有助于你理解那些没有在本文中列举的错误。
Chrome 中一个典型的错误看起来像这样:
Uncaught TypeError: undefined is not a function
该错误的结构如下:
*Uncau
继续阅读 »
兼容性问题一直都是个头疼的问题,以至于很多接触过前端编程大部分人都会说页面太难调了。这篇文章是对常见兼容性问题的记录,有个问题是肯定不全,因为太多了,只是总结常见的兼容性问题
持续更新中。。。
CSS
CSS hack大全&详解(什么是CSS hack)
css
// 区分所有主流浏览器的hack:
.element{
color:#000; /*w3c标准*/
[;color:#f00;]; /*Webkit(chrome和safari)*/
color:#666\9; /*IE8*/
*color:#999;
继续阅读 »
太长不读版
最近自己写了一个Chrome浏览器扩展/插件(github repo),并将其发布到了谷歌官方商店(chrome web store),该插件为github上的仓库提供travis-ci运行状态和运行时间的 图表,你可以直观地了解到哪些仓库(自己或者别人的)开通了travis-ci的build,还可以看到特定repo近十次build的 时间和状态变化,鼠标置于具体build上,还可查看具体build时间和message,点击还可以进入特定的travis-ci build页面。
继续阅读 »
window.history Mozilla MDN这样描述:window.history 是一个只读属性,指向 History对象,对操作浏览器的会话历史提交接口。
在 Chrome控制台中查看History
继续阅读 »
今天系统突然响应慢了很多,所以就考虑对目前的系统进行优化,底层mysql开启慢查询日志的记录,同时使用一些测试的工作对网站的性能进行测试。我们使用chrome浏览器进行分析加载速度的时候发现很多没有注意到的细节,这是我们以后运维需要加强学习的地方。我们发现有很多css和js文件都100多kb,造成资源加载的时候会非常慢,同时使用一些在线工具eg阿里测等进行监测,我们确实有很多工作可以做,例如开启tomcat的gzip压缩。
继续阅读 »