编码转换

Qt高级编码约定

谁说胖子不能爱 提交于 2020-02-18 22:21:05
Qt高级编码约定 参考 https://wiki.qt.io/Coding_Conventions 来源 https://zhuanlan.zhihu.com/p/97723847 发布于 2019-12-16 这是我们在编写Qt代码时使用的高级编码约定的概述。有关Qt代码规范,请参见 Qt代码风格 一文。对于QML,请参阅 QML代码规范 一文。 C++特性 不要使用异常。 不要使用rtti(运行时类型信息:即typeinfo结构,dynamic_cast或typeid运算符,包括引发异常)。 谨慎明智地使用模板,不仅仅是因为可以使用。 提示:使用编译自动测试可以查看测试中的所有编译器是否支持C++功能。 Qt源代码中的约定 所有代码仅是ascii(仅7位字符,如果不确定,请运行 man ascii ). 因为我们内部的语言环境太多,而且UTF-8和latin1系统的组合不健康。通常,您甚至不知道通过单击您喜欢的编辑器中的"保存"就可以破坏字符超过127个字符的范围。 对于字符串:使用 \nnn (其中nnn是要在其中输入字符串的任何字符编码的八进制表示形式)或 \xnn (其中nn是十六进制)。示例: QString s = QString::fromUtf8("13\005"); 对于文档中的变音符号或其他非ASCII字符,请使用qdoc的命令或使用相关的宏。例如 \uuml

0432-什么是HDFS的纠删码

风流意气都作罢 提交于 2020-02-18 21:46:36
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。 Fayson的github: https://github.com/fayson/cdhproject 提示:代码块部分可以左右滑动查看噢 Fayson在前面的文章中介绍过CDH6,参考《Cloudera Enterprise 6正式发布》和《如何在Redhat7.4安装CDH6.0》。CDH6主要集成打包了Hadoop3,包括Hadoop3的一些新特性的官方支持,比如NameNode联邦,纠删码等。纠删码可以将HDFS的存储开销降低约50%,同时与三分本策略一样,还可以保证数据的可用性。本文Fayson主要介绍纠删码的工作原理。 默认情况下,HDFS的数据块都会保存三个副本。副本提供了一种简单而健壮的冗余方式来最大化保证数据的可用性。数据的多副本同时可以尽量保证计算任务的本地化。 但副本方式成本是较高的:默认情况下三副本方式会在存储空间或其他资源(比如写入数据时的网络带宽)中产生200%的开销。对于较少访问的数据集(对集群的I/O影响相对不大),它们的第二个或者第三个副本会比较少访问,但是仍会消耗相同的存储空间。 因此可以使用纠删码(ErasureCoding)来代替多副本的方式,它使用更少的存储却可以保证相同级别的容错。在典型配置下,与三副本方式相比,EC可以将存储成本降低约50%

python字符串编码

浪尽此生 提交于 2020-02-18 07:03:15
python 默认编码   python 2.x 默认的字符编码是 ASCII ,默认的文件编码也是 ASCII 。   python 3.x 默认的字符编码是 unicode ,默认的文件编码是 utf-8 。 中文乱码 问题   无论以什么编码在内存里显示字符,存到硬盘上都是 二 进制,所以编码不对,程序就会出错。   常见编码有 ascii 编码(美国), GBK 编码(中国), shift_JIS 编码(日本 ), unicode (统一编码)等。   需 要注意的是,存到硬盘上时是以何种编码存的,再从硬盘上读出来时,就必须以何种编码读,要不然就 会出现乱码问题 。   常见的编码错误的原因有 如下,出现乱码时,按照编码之前的关系,挨个排错就能解决问题。      python 解释器的默认编码 ;      Terminal 使用的编码 ;      python 源文件文件编码 ;     操作系统的语言设置 。   Python 支持中文的编码: utf-8 、 gbk 和 gb2312 。 uft-8 为 国际通用 , 常用有数据库、编写代码 。 gbk 如 windows 的 cmd 使用 。 编码转换   如果想要中国的软件可以正常的在美国人的电脑上实现,有下面两种方法:    让美国人的电脑都装上 gbk 编码    让你的软件编码以 utf-8 编码   

sqli-宽字节注入

*爱你&永不变心* 提交于 2020-02-18 00:03:15
0x0 背景 当某字符的大小为一个字节时,称其字符为窄字节. 当某字符的大小为两个字节时,称其字符为宽字节. 所有英文默认占一个字节,汉字占两个字节 常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等等 0x1 宽字节注入原理 程序员为了防止sql注入,对用户输入中的单引号(’)进行处理,在单引号前加上斜杠(\)进行转义,这样被处理后的sql语句中,单引号不再具有‘作用’,仅仅是‘内容’而已,换句话说,这个单引号无法发挥和前后单引号闭合的作用,仅仅成为‘内容‘ 【再举个例子,要找某位名字里带单引号的用户,搜索的时候,就要让单引号成为内容去搜索,而不能起到其他作用】 而安全测试人员要绕过这个转义处理,使单引号发挥作用,有两个思路: 让斜杠(\)失去作用 让斜杠(\)消失 第一个思路就是借鉴程序员的防范思路,对斜杠(\)转义,使其失去转义单引号的作用,成为‘内容’ 第二个思路就是宽字节注入 当使用宽字节编码,如:GBK时,两个连在一起的字符会被认为是汉字,我们可以在单引号前加一个字符,使其和斜杠(\)组合被认为成汉字,从未达到让斜杠消失的目的,进而使单引号发挥作用 注意:前一个字符的Ascii要大于128,两个字符才能组合成汉字 0x2 注入方法 0x21 黑盒 可以看到,在发现单引号被转义后,当我们加了%df后,sql语句报错,说明单引号发挥了作用

python字符编码-文件操作

浪尽此生 提交于 2020-02-17 23:25:49
字符编码 字符编码历史及发展 为什么有字符编码 ''' 原因:人们想要将数据存入计算机 计算机的能存储的信息都是二进制的数据 内存是基于电工作的,而电信号只有高低频两种,就用01来表示高低电频,所以计算机里存储的数据都是0101这样的二进制数据 ''' 各种编码表/标准 的由来 """ 基于上述原因与情况 人们输入的都是我们自己能看懂的语言、字符, 而计算机里存储的却是二进制数据,这样计算机不能读懂了 所以在保存数据的时候有一个转换过程,要有一个对应关系将我们输入的字符转换成计算机能够存储的二进制数据 人输入的字符 >> 对应关系转换(字符编码表)>> 二进制数据 A 0100 0001 B 0100 0010 后来美国发明了ASCII码表,用八位二进制来表示一个英文字符 其实所有的英文字符 + 符合,最多也就在125位左右,用七位二进制就够了,采用八进制是给其他语言做了预留 """  补充: ''' 八位二进制也叫 8bit ---> 0000 0000 常见单位与转换: 8bit = 1Bytes 1024Bytes = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 1024TB = 1PB ''' 各国各类编码的出现 """ 看到美国人有字符编码了,我们中国人也要用计算机,但ASCII码又没有中文的对应关系,于是乎就有国人发明了国标码

浅谈网络语音技术

↘锁芯ラ 提交于 2020-02-17 18:27:58
浅谈网络语音技术 当我们使用像Skype、QQ这样的工具和朋友流畅地进行语音视频聊天时,我们可曾想过其背后有哪些强大的技术在支撑?本文将对网络语音通话所使用到的技术做一些简单的介绍,算是管中窥豹吧。 一.概念模型 网络语音通话通常是双向的,就模型层面来说,这个双向是对称的。为了简单起见,我们讨论一个方向的通道就可以了。一方说话,另一方则听到声音。看似简单而迅捷,但是其背后的流程却是相当复杂的。我们将其经过的各个主要环节简化成下图所示的概念模型: 这是一个最基础的模型,由五个重要的环节构成:采集、编码、传送、解码、播放。 1.语音采集 语音采集指的是从麦克风采集音频数据,即声音样本转换成数字信号。其涉及到几个重要的参数:采样频率、采样位数、声道数。 简单的来说:采样频率,就是在1秒内进行采集动作的次数;采样位数,就是每次采集动作得到的数据长度。 而一个音频帧的大小就等于:(采样频率×采样位数×声道数×时间)/8。 通常一个采样帧的时长为10ms,即每10ms的数据构成一个音频帧。假设:采样率16k、采样位数16bit、声道数1,那么一个10ms的音频帧的大小为:(16000*16*1*0.01)/8 = 320 字节。计算式中的0.01为秒,即10ms。 2.编码 假设我们将采集到的音频帧不经过编码,而直接发送,那么我们可以计算其所需要的带宽要求,仍以上例:320*100

Python开发基础-Day5-字符编码、文件处理和函数基础(草稿)

Deadly 提交于 2020-02-17 18:23:15
字符编码 为什么要有字符编码? 字符编码是为了让计算机能识别我们人写的字符,因为计算机只认识高低电平,也就是二进制数"0","1". 一个文件 用什么编码方式存储,就用什么编码打开   计算机在存取数据的时候,以什么格式存的就需要以什么格式来解码.例如:数据在内存中使用unicode编码来保存,当数据要刷入硬盘时,就需要把数据用utf-8的标准转换成Bytes(二进制),保存在硬盘上,读取的时候就需要用utf-8的标准转换成unicode,如果保存和读取使用的编码不同会导致乱码. python3默认以utf-8的方式存:   内存中的编码,在未执行行前所有的都是unicode类型,但是在执行时候,会根据python设置的编码类型进行编码,默认utf-8,编码会另外开辟内存空间 python2:默认以ASCII编码读取,一般读取时候需要手动指定,否则代码无法正常运行。Python2中的 str默认存的是Bytes。而不是像Python3一样默认存的是unicode. Python使用 encode和decode 两个参数命令来编码和解码. encode是unicode编码的过程,可以转成任何编码,如utf-8,gbk等 decode是解码的过程,用什么方式编码就用什么方式解码 python文件执行的时候在哪个终端执行就用哪个终端的字符编码进行输出打印 乱码:存的时候乱码,无解 读乱码

10个Python 初学者必知编码小技巧

被刻印的时光 ゝ 提交于 2020-02-17 17:42:15
技巧 #1 字符串翻转 >>> a = "codementor" >>> print "Reverse is",a[::-1] 翻转后的结果为 rotnemedoc PS:很多人在学习Python的过程中,往往因为遇问题解决不了或者没好的教程从而导致自己放弃,为此我整理啦从基础的python脚本到web开发、爬虫、django、数据挖掘等【PDF等】需要的可以进Python全栈开发交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题有老司机解决哦,一起相互监督共同进步 技巧 #2 矩阵转置 >>> mat = [[1, 2, 3], [4, 5, 6]] >>> zip(*mat) [(1, 4), (2, 5), (3, 6)] 技巧 #3 a = [1,2,3] 将列表中的三个元素分拆成三个变量 >>> a = [1, 2, 3] >>> x, y, z = a >>> x 1 >>> y 2 >>> z 3 技巧 #4 a = ["Code", "mentor", "Python", "Developer"] 将字符串列表拼接成一个字符串 >>> print " ".join(a) Code mentor Python Developer 技巧 #5 List 1 = ['a', 'b', 'c', 'd'] List

sklearn数据预处理

拟墨画扇 提交于 2020-02-17 15:24:14
/*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ 1、数据预处理概述 ¶ 数据预处理是构建特征工程的基本环境,并且是提高算法精确度的有效手段。数据预处理需要根据数据本身的特性进行,不同的格式有不同的处理要求,比如无效的要剔除,缺失值要回填和冗余维度的选择等。大致主要分为三个步骤:数据的准备、转换和输出。本文主要利用sklearn讲解转换数据的常用方法。 2、无量纲化 ¶ 在机器学习算法实践中,我们往往有着将不同规格的数据转换到同一规格,或不同分布的数据转换到某个特定分布的需求,这种需求统称为将数据无量纲化。数据的无量纲化可以是线性的,也可以是非线性的。线性的无量纲化包括中心化(Zero-centered或者Mean-subtraction)处理和缩放处理(Scale)。中心化的本质是让所有记录减去一个固定值,即让数据样本数据平移到某个位置。缩放的本质是通过除以一个固定值,将数据固定在某个范围之中,取对数也算是一种缩放处理。 (1)preprocessing.MinMaxScaler类 在scikit-learn中,可以通过数据MinMaxScaler来调整数据尺度,将属性缩放到一个指定的范围,或者将数据标准化并将数据都聚集到0附近,方差为1。即先将数据移动了$min(x)$个单位,按极差

jsp中文乱码

一曲冷凌霜 提交于 2020-02-17 13:20:15
1,最基本的乱码问题。 这个乱码问题是最简单的乱码问题。一般新会出现。就是页面编码不一致导致的乱码。 <%@ page language="java" pageEncoding="UTF-8"%> <%@ page contentType="text/html;charset=iso8859-1"%> <html> <head> <title>中文问题</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> </head> <body> 我是个好人 </body> </html> 三个地方的编码。 第一个地方的编码格式为jsp文件的存储格式。Ecljpse会根据这个编码格式保存文件。并编译jsp文件,包括里面的汉字。 第 二处编码为解码格式。因为存为UTF-8的文件被解码为iso8859-1,这样如有中文肯定出乱码。也就是必须一致。而第二处所在的这一行,可以没有。缺省也是使用iso8859-1的编码格式。所以如果没有这一行的话,“我是个好人”也会出现乱码。必须一致才可以。 第三处编码为控制浏览器的解码方式。如果前面的解码都一致并且无误的话,这个编码格式没有关系。有的网页出现乱码,就是因为浏览器不能确定使用哪种编码格式。因为页面有时候会嵌入页面,导致浏览器混淆了编码格式