浅谈字符编码与字符集
概述
我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。
上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的对应关系,做了统一规定。这被称为 ASCII 码。ASCII 码一共规定了128个字符的编码,这对英文来说是够用的,但是对于中文来说就远远不够了。每个国家就各自来对 ASCII 字符集做了拓展,最具代表性的就是国内的 GB 类的汉字编码模式,如GB2312字符集。
但当各国互相接轨时就出现了问题:世界上各国都有不同的编码方式(虽然都兼容了ASCII码),同一个二进制数字可以被解码成不同的符号。因此,要想打开一个文本文件,就必须知道它的编码方式,否则用错误的编码方式解读,就会出现乱码。这时候为了解决这个问题,最终的集大成者 Unicode 字符集出现了,它将世界上所有的符号都纳入其中,成功实现了每个数字代表唯一的至少在某种语言中使用的符号。
是时候了解下APNG,WEBP了
react系列-1-hooks
数据库系列-2-MongoDB
概述
NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
随着前端技术的不断迭代,代表MongoDB(文档数据库),Express(Web服务器),AngularJS(前端框架)和Node.js(后端JavaScript运行时)的MEAN堆栈开始流行。除其他原因外,MEAN堆栈很有吸引力,因为您需要了解的唯一语言是JavaScript。与等效的LAMP/LNMP堆栈相比,它还需要更少的RAM。
MongoDB无疑是NoSQL数据库中最受欢迎的数据库。它的文档数据模型为开发人员提供了极大的灵活性,而其分布式体系结构则提供了很好的可伸缩性。因此,通常选择MongoDB用于必须管理大量数据,得益于水平可伸缩性并处理不适合关系模型的数据结构的应用程序。
MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案。在其之上还具有一个基于图形的存储。MongoDB实际上并不存储JSON:它存储BSON(BSON 是一种类似 JSON 的二进制形式的存储格式,是 Binary JSON 的简称),该扩展了JSON表示(字符串)以包括其他类型,例如int,long,date,浮点,decimal128和地理空间坐标等。
数据库系列-1-MySql
数据库概述
我们先看一组数据:
2019 年最受欢迎的数据库分为开源数据库和商业数据库(原文地址):
在开源数据库方面,MySQL排名第一,占开源数据库使用量的 30% 以上。PostgreSQL以 13.4% 的开源数据库用户比例位居第二,紧随其后的是MongoDB,占 12.2%,位列第三。
在商业数据库方面,Oracle是世界上排名第一的数据库,它代表了超过 2/3 的商业和开源数据库组合。它与第二名的Microsoft SQL Server差距巨大,IBM DB2名列第三,占商业数据库与开源数据库组合的 11.1%。
对于数据库方向,重点就是两种数据库,一种是以 SQL 为代表的关系型数据库,另一种是以非 SQL 为代表的 NoSQL 数据库。关系型数据库主要有三个:Oracle、MySQL 和 Postgres。
对于web服务来说:Linux+Apache+Mysql+PHP(LAMP)与Linux+Nginx+Mysql+PHP(LNMP)的组合方式对于企业来说更是首选,一来开源免费,二来非常成熟,相关技术人员也很好招聘。从这些可以看出,学习数据库,Mysql是一个绕不过去的点。
MySql在2010年被Oracle收购后,依旧是开源的,但是开源不代表是完全免费的,目前只有MySQL Community Server(社区版) 版本是免费的,也是我们通常使用的版本。
私有npm仓库搭建
浅谈WebAssembly
概述
WebAssembly(缩写为Wasm)是一种新的编码方式,编码标准。它并不是一门编程语言,而是一份字节码标准,需要用高级编程语言编译出字节码放到 WebAssembly 虚拟机中才能运行, 浏览器厂商需要做的就是根据 WebAssembly 规范实现虚拟机。
wasm格式的文件,接近java的字节码,它是通过编译工具(如Emscripten)从高级语言(如C / C ++ / Rust)等编译而来,他可以同js文件一样运行在客户端与服务端。2019年12月5日,W3C WebAssembly 工作组发布 WebAssembly 正式推荐标准(W3C Recommendation)。
WebAssembly具有巨大的意义——它提供了一条途径,以使得以各种语言编写的代码都可以以接近原生的速度在Web中运行。
vue系列-1-数据绑定原理
vue 的数据绑定内部是如何实现的,本文一探究竟。