一个例子理解Unicode字符集采用UTF-8编码

  • Unicode 是「字符集」
  • UTF-8 是「编码规则」
  • 字符集:为每一个「字符」分配一个唯一的 ID(学名为码位 / 码点 / Code Point)
  • 编码规则:将「码位」转换为字节序列的规则(编码/解码 可以理解为 加密/解密 的过程)

广义的 Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,即 Unicode 字符集和 UTF-8、UTF-16、UTF-32 等等编码……

Unicode 字符集为每一个字符分配一个码位,例如「知」的码位是 30693,记作 U+77E5(30693 的十六进制为 0x77E5)。

U+ 0000 ~ U+ 007F: 0XXXXXXX
U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX

根据上表中的编码规则,之前的「知」字的码位 U+77E5 属于第三行的范围:

       7    7    E    5    
    0111 0111 1110 0101    二进制的 77E5
--------------------------
    0111   011111   100101 二进制的 77E5
1110XXXX 10XXXXXX 10XXXXXX 模版(上表第三行)
11100111 10011111 10100101 代入模版
   E   7    9   F    A   5

这就是将 U+77E5 按照 UTF-8 编码为字节序列 E79FA5 的过程。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014591781/article/details/78415044

重要图-记忆梳理

图包含的信息,是有次序,结构化的。心中有图,亦有全局,在表达、思考上也会从容很多。关键是熟记这些图。
各种基础排序算法的复杂度和稳定性
TCP“三次握手”建立连接
TCP“四次挥手”释放连接
磁盘扇区、文件系统、InnoDB存储引擎各自的最小存储单元
编译的各个阶段
JVM区域划分
五种基本的关系代数运算符

“标准”杂谈

标准是个可怕的东西。

在一项新技术普及前,有个标准化的过程。昨天看了华为云开发者大会,边缘计算赛道总决赛的一小段直播,之后又看到华为Cloud&AI(Cloud BU)对云计算开发工程师的边缘计算方向的一小段JD:“如果你热衷边缘计算,在这里,你将有机会引领世界边缘计算产业联盟,并通过推动标准化来带动产业发展”。有感而发。边缘计算是未来一两年内就会到来的趋势之一,标准化是个残酷的过程。

怎么表达对标准化的感受呢,就像是人类从刀耕火种茹毛饮血的石器时代,在丛林杂生的乱象中一步步逐步建立文明,到达陶器时代、青铜器时代…… 的过程,虽然都还是史前时代。

标准化拉来了从不同视角切入工业实践的一群人的部分,聚集了具有一定复杂度的熵系统,从不同的技术方案中甄选,确定标准。那那些不符合标准的呢?残酷地被淘汰。那那些未参与标准化进程的人或组织呢?面临被淘汰的风险。

无论标准化,还是社会学上有意识/群体无意识地聚类,都对该特定行业产生深远的影响,优胜劣汰。社会学聚类过程中可能形成寡头,形成标准。我略微地去考量这个过程,有时感觉自己是市场中渺小的一份子。

这种“ 聚类 ”过程,潜移默化中在形成潜在的范围和规则。比如说笔试编程,LeetCode就成为选题的题库,没刷LeetCode,那就要吃大亏了。比如王道系列,计算机考研复习的标配,开学考试从中也有大量相近的题目。

技术是要节制的

技术是要节制的,这是我近来深刻的体会。

我觉得做技术的人都会有这样的体会,会把对纷繁复杂的技术世界的探求,映射到对光怪陆离的世界的探求中。

人生,作为普通人的人生,也总会追求活着的体验丰富性,会不经被文化氛围相近的东西感染。我身边偏外向的同学,喜欢劲歌热舞,追求舞台感染的魅力;偏内向的同学,喜欢二次元的脑洞,洛丽塔小裙子,追求精致,有内涵地吐槽。

技术人对技术的探求,是份稳重求进、韬光养晦的喜悦。

技术纷繁、迭代变迁,掌握跨各领域的技术,是份诱人的挑战。

有人说:“未来社会,90%的人,由于过度放纵欲望,可能像蛆一样地活着。他们没有能力改变自己,约束自己,而是沉醉在短暂的快感中,直至丧失自己。”很夸张,夸张到失真,失真到让人印象深刻。但人性中确实有份追求短暂快感的弊病,无可否认。

技术是要节制的,不能想着用它换取金钱、声誉,而糟蹋健康。追求技术,并不能代替对真实世界丰富体验性的追求。 它更应该像爱好,而不是嗜好。懂节制,更是为了生活。

Exception和Error 超形象!

假如你开车上山,车坏了,你拿出工具箱修一修,修好继续上路(Exception被捕获,从异常中恢复,继续程序的运行),车坏了,你不知道怎么修,打电话告诉修车行,告诉你是什么问题,要车行过来修。(在当前的逻辑背景下,你不知道是怎么样的处理逻辑,把异常抛出去到更高的业务层来处理)。
你打电话的时候,要尽量具体,不能只说我车动不了了。那修车行很难定位你的问题。(要捕获特定的异常,不能捕获类似Exception的通用异常)。
还有一种情况是,你开车上山,山塌了,这你还能修吗?(Error:导致你的运行环境进入不正常的状态,很难恢复)

摘自极客时间评论

编译器->框架->架构关系的一点思考

  • 机器码为了运行,编译器提供语法,语法是表达语意的元素。语言的表达变化,一本工具书一本字典可以穷尽吧。
  • 框架是在编译器层面上的又一层封装,虽然它提供的不是语法,但它提供的是比语法高一层的组织,框架组织的目的是为了简化开发、封装变化,顺带解决某点或几点非功能性需求。如果你被框架吸引,那你也应该去编译器看看。 框架就像小说故事的套路,自古深情留不住,总是套路得人心。
  • 在框架之上的高一层的组织是架构,架构的层面是业务,也是团队协作。业务虽变化多端,但也自成规律。
  • 架构之上,为智能。知识表达穷极变化。一些知识形式也许只能被计算机所理解。
  • 智能之上,为芸芸众生。

移动平台为什么不支持Flash?

  1. 内置Flash支持意味着有可能引入相关的安全漏洞,而Flash实现由Adobe掌控,一旦出现问题,难以直接把握。
  2. 基于Flash平台的应用非常丰富,很有可能分流移动平台的应用商店。
  3. Flash播放器过于耗电,缩短电池寿命。移动时代需要低功耗的设备,触摸界面和开放网络标准,而这些方面都是Flash的短板。
  4. 曾经的矢量模式使得文件体积极小,在网络带宽稀缺的时代,才成就了Flash的霸主地位。由于HTML5发展迅速,得到了各大浏览器厂商的支持,Adobe后来也放弃Flash了。