根据 RFC-7159: 8.1 Character Encoding JSON text SHALL be encoded in UTF-8, UTF-16, or UTF-32. The default encoding is UTF-8, and JSON texts that are encoded in UTF-8 are interoperable in the sense that they will be read successfully by the maximum numb…
我曾经在知乎的一个答案里谈及到 V8 引擎里实现了 Grisu 算法,我先引用该文的内容简单介绍 Grisu.然后,再谈及 RapidJSON 对它做了的几个底层优化. (配图中的<Grisù>是一套1970年代的意大利卡通短片,主角 Grisù 是一只想成为消防员的小龙.估计 Grisu 算法以龙命名,是与上一代的 Dragon4 算法相关.) Grisu是什么 Grisu 是把浮点数转换为字符串的算法.在 Chrome 里执行这段 JavaScript 实际上就调用了 Grisu: doc…
现在的 CPU 都提供了单指令流多数据流(single instruction multiple data, SIMD)指令集.最常见的是用于大量的浮点数计算,但其实也可以用在文字处理方面. 其中,SSE4.2 包含了一些专为字符串而设的指令.我们通过使用这些指令,可以大幅提升某些 JSON 解析的性能. (配图为 2008 年发售的 Intel Core i7 芯片,它采用的 Nehalem 是第一个支持 SSE4.2 的微架构.) 跳过空白字符 我们知道,有一些 JSON 含有缩进(inde…
大家好,这个专栏会分析 RapidJSON (中文使用手册)中一些有趣的 C++ 代码,希望对读者有所裨益. C++ 语法解说 我们先来看一行代码(document.h): bool StartArray() { new (stack_.template Push<ValueType>()) ValueType(kArrayType); // <-- return true; } 或许你会问,这是什么C++语法? 这里其实用了两个可能较少接触的C++特性.第一个是 placement n…
原文地址:http://yanbohappy.sinaapp.com/?p=468 Hadoop 2.3.0已经发布了,其中最大的亮点就是集中式的缓存管理(HDFS centralized cache management).这个功能对于提升Hadoop系统和上层应用的执行效率与实时性有很大帮助,本文从原理.架构和代码剖析三个角度来探讨这一功能. 主要解决了哪些问题 1.用户可以根据自己的逻辑指定一些经常被使用的数据或者高优先级任务对应的数据常驻内存而不被淘汰到磁盘.例如在Hive或Impala…
转载自:http://www.infoq.com/cn/articles/hdfs-centralized-cache/ HDFS集中式的缓存管理原理与代码剖析 Hadoop 2.3.0已经发布了,其中最大的亮点就是集中式的缓存管理(HDFS centralized cache management).这个功能对于提升Hadoop系统和上层应用的执行效率与实时性有很大帮助,本文从原理.架构和代码剖析三个角度来探讨这一功能. 主要解决了哪些问题 用户可以根据自己的逻辑指定一些经常被使用的数据或者高…
编码问题,一直是使用python2时的一块心病.几乎所有的控制台输入输出.IO操作和HTTP操作都会涉及如下的编码问题: UnicodeDecodeError:‘ascii’codec can’t decodebyte0xc4inposition10:ordinalnotinrange(128) 这究竟是是个什么东西?!有时稀里糊涂地用一坨encode(),decode()之类的函数让程序能跑对了,可是下次遇到非ASCII编码时又悲剧了. 那么Python 2.x中的字符串究竟是个什么呢? 基本…
x264代码剖析(三):主函数main().解析函数parse()与编码函数encode() x264的入口函数为main().main()函数首先调用parse()解析输入的參数,然后调用encode()编码YUV数据.parse()首先调用x264_param_default()为保存參数的x264_param_t结构体赋默认值:然后在一个大循环中通过getopt_long()解析通过命令行传递来的存储在argv[]中的參数.并作对应的设置工作:最后调用select_input()和sele…
原文:三种字符编码:ASCII.Unicode和UTF-8 什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),如果要表示更大的整数,就必须用更多的字节.比如两个字节可以表示的最大整数是65535,4个字节可以表示的最大整数是4294967295. ASCII编码: 由于计算机是美国人发明的,因此,最早只有12…