高性能JavaScript读书笔记
前言
本书发行较早,研究讨论的范畴也停留在html4时代,不排除当中有些规则现如今已经不适用,但是依然有参考意义。故而看一遍,记录一下。
争对原生的老的JavaScript语法,平时较少使用的,本篇不作记录。具体可参考本书中的相关章节作参考。
读书笔记
第一章 加载和执行
脚本位置
推荐将所有的script标签尽可能放到body标签的底部,以尽可能减少对整个页面下载的影响
1 | <!DOCTYPE html> |
组织脚本
可以把多个文件合并成一个,只需要引用一个script标签,就可以减少性能消耗
JavaScript系列
JavaScript系列目录
- 读书笔记
- 《高性能JavaScript》
- 《Effective JavaScript》
- 问题剖析
工具Tips
Java集合框架
前言
本系列主要写关于Java集合框架的一些细节:包括部分类的内部实现、算法探讨、性能分析、相关设计模式等等。Java8集合类中的部分类(比如常用的HashMap)内部实现机制已不同于以往,本系列之余也尽可能会纵向比较Java7版本与Java8框架之间的差异所在。
系列文章在追求尽可能的详而细致的描述,难免会有错误不当之处~
集合框架介绍
在Java8 Api文档中是这么描述集合框架的:
A collection is an object that represents a group of objects (such as the classic Vector class). A collections framework is a unified architecture for representing and manipulating collections, enabling collections to be manipulated independently of implementation details.
意在指明Java集合框架总体所需要做的事情:代表并操作各种集合类型。
集合框架有如下几点主要优点[^1]:
- 减少编程工作量[Reduces programming effort]:集合类中提供了大量的数据结构和算法的实现,你无需亲自去编写。
- 提高性能[Increases performance]:提供很多高性能的数据结构以及算法的实现。因许多接口的实现均是通用的[interchangeable],因而可以根据需要实现相应的接口。
- 提供在无关API之间的互通[Provides interoperability between unrelated APIs]:建立一个通用语言来回传递集合类
- 降低学习API的工作量[Reduces the effort required to learn APIs]API:需要学习众多特定[adhoc]集合的API
- 加速软件重用[Fosters software reuse]:为操作它们提供了许多标准化的集合和算法
Java系列
数组
基本操作
参照《数据结构》一书中关于线性表的抽象数据类型的基本操作介绍,简化罗列出相关操作定义。
- InitList()
- 操作结果:构造一个空的线性表L。
- DestroyList()
- 初始条件:线性表L已存在
- 操作结果:销毁线性表L。
- ClearList()
- 初始条件:线性表L已存在
- 操作结果:将L重置为空表
- ListEmpty()
- 初始条件:线性表L已经存在
- 操作结果:若L为空表,则返回
TRUE,否则返回FALSE
- ListLength()
- 初始条件:线性表L已经存在
- 操作结果:返回L中数据元素个数
- GetElem(i, e)
- 初始条件:线性表L已存在,$1 \leq i \leq ListLength()$
- 操作结果:用e返回L中第i个数据元素的值
