字符编码

Visual Studio 默认保存为UTF8编码

时光怂恿深爱的人放手 提交于 2020-01-06 00:42:24
Visual Studio (中文版)默认保存的文本文件是 GB2312 编码(代码页936)的,默认的行尾(End of line)是CRLF的。 如果仅仅是在windows下开发问题也不大,但是涉及到跨平台开发的时候,就不是很满意了。 VS本身的 文件 -> 高级保存选项 中是可以选择保存的编码和行尾的,但是不支持为默认的。 还有一个问题是 cl 编译的时候,对 utf-8 格式支持不好(需要添加 /source-charset:utf-8 选项,默认是当作本地字符集的),对于带 BOM 标记的文件则没有问题。 所以我们在项目中统一规定使用 UTF-8 with BOM 编码,行尾为 LF (\n)。 这里介绍两个插件 ForceUTF8 (with BOM) 这个插件还有两个版本,一个是带 BOM 的,一个是不带的。 插件是开源的,代码很简单。就是在文档保存的时候,判断是否是文本文件。如果是的话,那就先转编码为 UTF-8 with BOM ,再写入文件。 下载地址 https://marketplace.visualstudio.com/items?itemName=jz5.ForceUTF8withBOM 其实可以直接在这个项目上改,在保存文件前把 \r\n 、 \r 、 \n 都替换为 \n 即可(要注意替换次序)。 Line Endings Unifier

三、Mysql 索引、锁

左心房为你撑大大i 提交于 2020-01-04 23:36:45
参考: 数据库两大神器【索引和锁】 InnoDB数据页结构 InnoDB记录存储结构 MySQL的索引 准备工作 到现在为止,MySQL对于我们来说还是一个黑盒,我们只负责使用客户端发送请求并等待服务器返回结果,表中的数据到底存到了哪里?以什么格式存放的?MySQL是以什么方式来访问的这些数据?这些问题我们统统不知道 MySQL服务器上负责对表中数据的读取和写入工作的部分是存储引擎,而服务器又支持不同类型的存储引擎,比如InnoDB、MyISAM、Memory啥的,不同的存储引擎一般是由不同的人为实现不同的特性而开发的,真实数据在不同存储引擎中存放的格式一般是不同的,甚至有的存储引擎比如Memory都不用磁盘来存储数据,也就是说关闭服务器后表中的数据就消失了。由于InnoDB是MySQL默认的存储引擎,也是我们最常用到的存储引擎。 InnoDB页简介 InnoDB是一个 将表中的数据存储到磁盘上的存储引擎 ,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内存中的内容刷新到磁盘上。而我们知道读写磁盘的速度非常慢,和内存读写差了几个数量级,所以当我们想从表中获取某些记录时,InnoDB存储引擎需要一条一条的把记录从磁盘上读出来么?不,那样会慢死,InnoDB采取的方式是:

ASCII码和BASE64

北战南征 提交于 2020-01-04 02:40:43
ASCII码介绍 ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。 到目前为止共定义了128个字符 用于将字符转换未二进制码 ASCII 码使用指定的 7 位或 8 位二进制数组合来表示 128 或 256 种可能的字符。标准 ASCII 码也叫基础ASCII码,使用 7 位二进制数来表示所有的大写和小写字母,数字 0 到 9、标点符号, 以及在美式英语中使用的特殊控制字符 通过一种通用的标准,使信息可以传入,一种二进制序列会被 识别未相同的结果 ASCII码表大致可以分三部分组成: ASCII非打印控制字符 ASCII表上的数字0–31分配给了控制字符,用于控制像打印机等一些外围设备。例如,12代表换页/新页功能。此命令指示打印机跳到下一页的开头。(参详ASCII码表中0-31) ASCII打印字符 数字 32–126 分配给了能在键盘上找到的字符,当您查看或打印文档时就会出现。数字127代表 DELETE 命令。(参详ASCII码表中32-127) 扩展ASCII打印字符 扩展的ASCII字符满足了对更多字符的需求。扩展的ASCII包含ASCII中已有的128个字符(数字0–32显示在下图中),又增加了128个字符

Huffman算法实现文件压缩解压

China☆狼群 提交于 2020-01-04 01:15:42
title: Huffman算法实现文件压缩解压 date: 2020-01-02 20:33:11 description: 基于Huffman编码算法实现文件压缩解压 原文网址 Huffman算法实现文件压缩解压 前言  哈夫曼编码是一种贪心算法和二叉树结合的字符编码方式,具有广泛的应用背景,最直观的是文件压缩。下面讲述如何用哈夫曼编解码实现文件的压缩和解压。 哈夫曼编码的概念  哈夫曼树又称作最优树,是一种带权路径长度最短的树,而通过哈夫曼树构造出的编码方式称作哈夫曼编码。 也就是说哈夫曼编码是一个通过哈夫曼树进行的一种编码,一般情况下,以字符 “0” 与 “1” 表示。编码的实现过程很简单,只要实现哈夫曼树,通过遍历哈夫曼树,这里我们从根节点开始向下遍历,如果下个节点是左孩子,则在字符串后面追加 “0”,如果为其右孩子,则在字符串后追加 “1”。结束条件为当前节点为叶子节点,得到的字符串就是叶子节点对应字符的编码。 哈夫曼编码用于文件压缩的原理  我们都知道根据人类使用文字对应的每个字符都是有特定的频率的。比如说英文,一般来说字母a或者e的使用频率很高。如果我们能给出现频率最高的字符很短的编码,出现最少的字符最长的编码,而且保证每个编码都不是任意一个编码的前缀码。为什么要保证这样呢?如果任意一个编码都不是其他编码的前缀码

字符编码介绍

折月煮酒 提交于 2020-01-03 08:30:03
字符编码 1 什么是字符编码? 人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等毫无疑问,由人类的字符到计算机中的数字,必须经历一个过程,如下 翻译的过程必须参照一个特定的标准,该标准称之为字符编码表,该表上存放的就是字符与数字一一对应的关系。 字符编码中的编码指的是翻译或者转换的意思,即将人能理解的字符翻译成计算机能识别的二进制数字 ASCII表(美国) 1、只有英文字符、数字与表的一一对应关系 2、一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符 0000 0000 1111 1111 GBK表(中国) GBK表的特点: 1、只有中文字符、英文字符、数字与表的 一一对应关系 2、一个英文字符对应1Bytes 一个中文字符对应2Bytes 补充说明: 1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符 2Bytes=16bit,16bit最多包含65536个数字,可以对应65536个字符,足够表示所有中文字符 unicode (万国码) 1、所有的字符都用2bytes 2、占用存储空间 3、IO次数增加,程序运行速度缓慢 很多地方或老的系统、应用软件仍会采用各种各样传统的编码,这是历史遗留问题。此处需要强调:软件是存放于硬盘的

C# 编码规范

╄→гoц情女王★ 提交于 2020-01-03 01:50:01
本文是参考阿里的Java编码规范修改的C#版本,自整理并编写,欢迎指正! 编程规约 (一)命名规约 1.【强制】代码中当且仅当私有成员可以使用下划线开始 反例:public string _name 2.【强制】代码中的命名严禁使用拼音与英文混合的方式,更不能允许直接使用中文的方式。 说明:正确的英文拼写和语法,可以让读者易于理解,避免歧义。注意,即使纯拼音命名方式也要避免采用。 反例:IsPiLiang [是否批量操作] / Kase [卡色] / numLing [领用数量] 3.【强制】类名、类的属性、方法名、命名空间使用UpperCamelCase大写驼峰 风格,英文单词首字母大写,必须遵从驼峰形式,但以下情形例外(领域模型的相关明明)CEO / DBO 等。 正例:SysuserController / ItemInfo / TcpHelper / GetInfo() 反例:sysuserController / Iteminfo / TCPHelper / getInfo() 4.【强制】参数名、成员变量、局部变量都统一使用lowerCamelCase 小驼峰风格,除首单词外其他单词首字母大写,必须遵从驼峰形式。 正例:localCache / userList 5.【强制】常量命名全部大写,单词间用下划线隔开,力求语意表达完整清楚,不要嫌名字长。 正例:MAX

Python 编码转换与中文处理

做~自己de王妃 提交于 2020-01-01 08:42:47
python 中的 unicode是让人很困惑、比较难以理解的问题. 这篇文章 写的比较好,utf-8是 unicode的一种实现方式,unicode、gbk、gb2312是编码字符集. py文件中的编码 Python 默认脚本文件都是 ANSCII 编码的,当文件 中有非 ANSCII 编码范围内的字符的时候就要使用" 编码指示 "来修正一个 module 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明: # -*- coding=utf-8 -*- 或者 #coding=utf-8 其他的编码如:gbk、gb2312也可以;否则会出现: SyntaxError: Non-ASCII character '\xe4' in file test.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details python中的编码与解码 先说一下python中的字符串类型,在python中有两种字符串类型,分别是 str 和 unicode ,他们都是basestring的派生类; str类型是一个包含Characters represent (at least) 8-bit bytes的序列

原来编码就是这么简单

不问归期 提交于 2019-12-30 14:04:41
日期:2019年12月29日 作者:Commas 注释:编码这件小事,其实就是这么回事…… 文章目录 一、什么是编码? 二、计算机编码原来如此 三、字符编码和字符集不过如此 四、字符编码大爆炸 四、字符编码大一统 一、什么是编码? 编码 在我们生活中无处不在,暂且我们先不讨论 计算机编码 ,举几个生活中的例子: 身份证号码 :前两位代表省、自治区、直辖市,比如说“44…”,代表广东省,而“43…”,代表湖南省; 车牌号 :第一个汉字代表车户口所在省的简称,比如“粤…”,代表广东省; 电话区号 :前三位是电话区号,比如说“020-…”,代表广州,而“0760-…”,代表中山; 学号 :前四位代表学生的届数,比如说“2019…”,代表2019届学生; 摩斯密码 :用特殊符号代表想要表达的含义,比如说用“… — …”来代表“SOS”,向他人发送求救信号; 从以上的例子当中,我们不难发现, 编码的本质 就是,出于某种原因,用一种东西去表达另外一种东西,且这种表达的关系都是一一对应的,有点类似于字典,我们只需要对应着规则去找就可以得到我们想要的答案。同时也正是因为一一对应的关系是确定的,所以才不会说身份证号码前两位44即代表广东省,又代表湖南省,身份证44开头的人即是广东人,又是湖南人这样的乌龙,从而出现了所谓的 “乱码” 。 那么问题来了, 计算机编码 是怎么回事呢?其实也就那么回事

小知识

不羁的心 提交于 2019-12-30 00:12:29
记载平时碰倒的小知识,不定时更新。 ASCII编码中,大写+32=小写,按%d输出就可以知道ASCII数值。 printf输出是,/n是转行,/t是相当于你在编程的时候按一下“Table”键,使光标以8个字符为基准进行跳跃,跳到下一个TAB位置。(/加某些ASCII字符用来表示ASCII不能表示的字符,即转义字符。) printf输出%7.2f,表示输出的域宽是7,小数保留2位。 float型数据只能保证6~7位有效数字,如果有效数字超过7位,那么从第7位数字以后的数字并不保证是绝对正确的。 注:有问题,欢迎指正。 来源: https://www.cnblogs.com/banxia20191109/p/12117219.html