在面向对象语言中,开发者的大部分时间都用在了增强你的类型系统。这意味着你不仅是类的设计者,更是类型设计者。重载函数和运算符、控制内存分配和释放、定义初始化和销毁操作……良好的类型有着自然的语法、直观的语义,以及高效的实现。你在定义类时需要像一个语言设计者一样地小心才行!
➢ 减少页面重排与重绘(Reflow & Repaint)
如果你的HTML变得很大很复杂,那么影响你JavaScript性能的可能并不是JavaScript代码的复杂度,而是页面的重排和重绘。
重排(Reflow)是指布局引擎为frame计算图形的过程。 frame是一个矩形,拥有宽高和相对父容器的偏移。frame用来显示盒模型(content model), 但一个content model可能会显示为多个frame,比如换行的文本每行都会显示为一个frame。
关于CSS盒模型的介绍请参考:CSS 盒模型及其呈现方式
重绘(Repaint)发生在元素的可见性发生变化时,比如背景色、前景色等。 因此重排必然会引起重绘。
➢ Cookie/Session的机制与安全
Cookie和Session是为了在无状态的HTTP协议之上维护会话状态,使得服务器可以知道当前是和哪个客户在打交道。本文来详细讨论Cookie和Session的实现机制,以及其中涉及的安全问题。
因为HTTP协议是无状态的,即每次用户请求到达服务器时,HTTP服务器并不知道这个用户是谁、是否登录过等。现在的服务器之所以知道我们是否已经登录,是因为服务器在登录时设置了浏览器的Cookie!Session则是借由Cookie而实现的更高层的服务器与浏览器之间的会话。
Cookie是由网景公司的前雇员Lou Montulli在1993年发明的,现今Cookie已经广泛使用了。
➢ Effective C++ 18:让接口容易被正确使用,不易被误用
总之,好的接口容易被正确使用,不易被误用。可以为内置类型提供一致的接口来方便正确的使用。识别误用的手段包括:创建新的类型、限制类型的操作、限制对象的值、移除客户的资源管理责任。
➢ Effective C++ 17:在单独的语句中将 new 的对象放入智能指针
在单独的语句中将new的对象放入智能指针,这是为了由于其他表达式抛出异常而导致的资源泄漏。因为C++不同于其他语言,函数参数的计算顺序很大程度上决定于编译器。
➢ Effective C++ 16:使用同样的形式来new和delete
如果你用`new`申请了动态内存,请用`delete`来销毁;如果你用`new xx[]`申请了动态内存,请用`delete[]`来销毁。
➢ jQuery中$()函数有几种用法
DOM选择,可以指定上下文;DOM创建,可以指定所属的document、属性、事件、甚至所有jQuery方法;DOM加载完成事件监听,是`$(document).ready()`的简化写法。