2019 年 09 月 15 日

字体文件信息读取

如何从一个字体文件中读取出需要的信息呢?比如字体名称(非文件名)、字体版权方等等,刚好最学习了浏览器里面的二进制,就尝试了用浏览器来解析字体文件信息。 首先介绍两种常见的字体文件,ttf(TrueTy...

进一步了解
2019 年 08 月 21 日

浏览器里的二进制

以下是几个主角的简介: ArrayBuffer 对象用来表示通用的、固定长度的原始二进制数据缓冲区。大白话其实就是代表一块固定的连续内存数据,虽然名字中带有Array,其实和我们认知的数组没半毛钱关系...

进一步了解
2019 年 08 月 13 日

字节序理解示例

字节序的介绍文章网上非常多,这里不再赘述,可以参考MDN上的介绍。 在做底层网络编程的时候会遇到字节序转换的情况,因为我们现在接触的机器一般都是little-endian(小端序)而网络传输一般使用b...

进一步了解
2019 年 07 月 25 日

浏览器FPS计算

FPS的概念随手一搜有很多,简单来讲,就是一秒钟内渲染了多少次画面。 在浏览器里面,浏览器渲染一次页面是有回调的requestAnimationFrame, 那么计算FPS就是计算: 1÷两次渲染的时...

进一步了解
2019 年 03 月 04 日

一次性搞清字符编码

正文开始前的絮叨 不看并不影响后面的理解 弄清各种编码的念头在我脑海里面已经浮现过 N 回了,我相信很多人也一样,特别是接触过后端语言的人,会时不时碰到乱码,需要按正确的编码类型解码才能得到正常的文字...

进一步了解
2019 年 02 月 19 日

结构化复制

我一直以为的深度复制就是这样: * for…in循环 * 判断属性是否是自己的 * typeof结果为object还要额外区分具体是普通对象、还是array、还是map… * ...

进一步了解
2019 年 02 月 19 日

绿灯思维

周末看书的时候,书的作者举了个例子,说春节在家的时候与一个亲戚哥哥聊到读书的问题,那个哥哥开门见山提到自己的观点:读书与基因有关。而作者表达的观点是读书这事儿其实与基因没什么太大关系时,引起了那个哥哥...

进一步了解
2019 年 02 月 11 日

JavaScript的数据类型

变量名与变量值 var age = 15; 变量名只是标识符,可以理解为内部指针,指向变量值所在的内存地址。变量名没有类型一说。 在一个姓名唯一的星球上,张三用于指代某个人,张三就是变量名,那个人就是...

进一步了解
2019 年 01 月 31 日

细数JavaScript中一些不能被new的函数

最近发现组内的很多人基础太不牢固,打算整一个关于JavaScript的思维导图,搞一次技术分享。结果发现原来自己也遗漏了相当多得细节。接下来,我就来细数下那些不能被new的函数,这些函数被new的时候...

进一步了解
2019 年 01 月 29 日

Dart学习笔记:Iterable与Stream

避免烂尾,先开坑。 初略看了下Stream API,应该是一个很深的坑。Stream实现了类似于Rx的许多API,估计过年在家要好好读读文档了。 本打算只写关于Stream的东西,后面翻了一下文档,发...

进一步了解
2019 年 01 月 28 日

Dart学习笔记:异常

Dart 和 Java 不同的是,所有的 Dart 异常是非检查异常。 方法不声明他们可能抛出的异常, 并且你不被要求捕获任何异常。 Dart 提供了 Exception 和 Error 类型, 以及...

进一步了解
2019 年 01 月 26 日

Dart学习笔记:类

本想按《Dart学习笔记 1: xxx》格式的,但这样就相当于立了flag,后面还需要有2、3、4…还是算了吧,指不定就烂尾了。 今天刚好又回过头来瞄了下官方文档,顺便记下笔记。 声明 c...

进一步了解