编码转换

Redis源码剖析和注释(十二)--- 集合类型键实现(t_set)

自古美人都是妖i 提交于 2020-01-14 12:16:50
Redis 集合类型键实现(t_set) 集合命令介绍 redis中所有的集合命令如下:Redis集合命令详解 集合类型的实现 之前在redis对象系统源码剖析和注释中提到,一个集合类型的对象的编码有两种,分别是 OBJ_ENCODING_HT和OBJ_ENCODING_INTSET 。 关于集合类型底层的两种数据结构的源码剖析和注释,请看下面的博文。 Redis 字典结构源码剖析和注释 Redis 整数集合源码剖析和注释 从OBJ_ENCODING_INTSET转换到OBJ_ENCODING_HT的条件如下: redis的配置文件中的选项:如果数据编码为整数集合的集合对象的元素数量超过 set-max-intset-entries 阈值,则会转换编码 set - max - intset - entries 512 如果向数据编码为整数集合的集合对象插入字符串类型的对象,则会转换编码 集合对象的数据编码转换的源码如下: // 将集合对象的INTSET编码类型转换为enc类型 void setTypeConvert ( robj * setobj , int enc ) { setTypeIterator * si ; serverAssertWithInfo ( NULL , setobj , setobj -> type == OBJ_SET && setobj ->

WAV格式中常见的压缩编码

僤鯓⒐⒋嵵緔 提交于 2020-01-14 05:52:36
WAV 格式中常见的压缩编码 (compression code) WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,该格式也支持MSADPCM,CCITT A LAW等多种压缩运算法,支持多种音频数字,取样频率和声道。标准格式化的WAV文件采样频率为44100Hz,采样比特为16bit,因此标准的(这里说标准,只是一种广泛采用的波形音频方案)WAV文件和CD音频格式一样,也是44.1KHz的取样频率,16位量化数字,在声音文件质量和CD音频相差无几。  下面由 useiee 详细介绍一下WAV格式文件常见的10种压缩码形式(Compression Code)。[1]  1. PCM/uncompressed   Pulse Code Modulation,脉码调制信号。是模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志。Windows的Convert工具可以把PCM音频格式的文件转换成Microsoft的WAV格式的文件。   PCM脉码调制数字音频格式是70年代末发展起来的,80年代初由飞利浦和索尼公司共同推出。PCM的音频格式也被DVD

【记录】关于特征编码——机器学习学习记录

时光总嘲笑我的痴心妄想 提交于 2020-01-13 18:46:00
特征编码 模型输入的特征通常需要数值型的,所以需要将非数值型特征转换为数值特征。如性别、职业、收入水平、国家、汽车使用品牌等。 特征编码包括数字编码、One-Hot 编码、哑变量编码方法。 数字编码 例如,原始数据特征:收入水平={贫困,低收入,小康,中等收入,富有},编码后:收入水平={0,1,2,3,4}。 缺点:引入了次序关系。 One-Hot 编码 也称为独热编码,将类别变量转换为机器学习算法易于利用的一种形式的过程。直观来说就是有多少个状态就有多少比特,而且只有一个比特为 1,其它全为 0 的一种码制。One-Hot 编码是分类变量作为二进制向量的表示,将包含 n 个取值的离散型特征转换成 n 个二元特征(取值为 0 或 1)。 例如:学历特征={小学,中学,本科,硕士,博士},One-Hot 编码如下: 原始特征取值 f1 f2 f3 f4 f5 小学 1 0 0 0 0 中学 0 1 0 0 0 本科 0 0 1 0 0 硕士 0 0 0 1 0 博士 0 0 0 0 1 对于 One-Hot 来说,如果一个特征有 n 个类别,那么就有 n 个变量,每个变量“管理一个类别取值”,这样就形成了一个长度为 n 的稀疏向量。 如果多个特征需要独热码编码,那么就按照上面的方法依次将每个特征的独热码拼接起来。例如,有三个特征属性:性别={“男”,“女”}、学科={“语文”,

HTTP性能极限优化

百般思念 提交于 2020-01-13 13:33:49
无论你在做前端、后端还是运维,HTTP都是不得不打交道的网络协议。它是最常用的应用层协议,对它的优化,既能通过降低时延带来更好的体验性,也能通过降低资源消耗带来更高的并发性。 可是,学习HTTP不久的同学,很难全面说出HTTP的所有优化点。这既有可能是你没好好准备过大厂的面试:-),也有可能你没有加入一个快速发展的项目,当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议。 这篇文章是根据我在2019年GOPS全球运维大会上海站的演讲PPT,重新提炼文字后的总结。我希望能 从四个全新的维度,带你覆盖绝大部分的HTTP优化技巧 。这样,即使还不需要极致方法去解决当前的性能瓶颈,也会知道优化方向在哪,当需求来临时,能够到Google上定向查阅资料。 第一个维度,是从编码效率上,更快速地把消息转换成更短的字符流。这是最直接的性能优化点。 一、编码效率优化 如果你对HTTP/1.1协议做过抓包分析,就会发现它是用“ whitespace-delimited ”方式编码的。用空格、回车来编码,是因为HTTP在诞生之初 追求可读性 ,这样更有利于它的推广。 然而在当下,这种低效的编码方式已经严重影响性能了,所以2009年Google推出了基于二进制的SPDY协议,大幅提升了编码效率。2015年,稍做改进后它被确定为HTTP/2协议,现在50%以上的站点都在使用它。 这是编码优化的大方向

人工智能:遗传算法

我的未来我决定 提交于 2020-01-13 05:19:33
1.基本遗传算法 1.1遗传算法的基本思想 在求解问题时从多个解开始,然后通过一定的法则进行逐步迭代以产生新的解。 1.2遗传算法设计的基本内容 1.编码方案:怎样把优化问题的解进行编码。 2.适应度函数:怎样根据目标函数构建适应度函数。 3.选择策略:优胜劣汰。 4.控制参数:种群的规模、算法执行的最大代数、 执行不同遗传操作的概率等。 5.遗传算子:选择、交叉、变异。 6.算法终止准则:规定一个最大的演化代数,或算 法在连续多少代以后解的适应值没有改进。 1.3遗传算法的五个基本要素  参数编码  初始群体的设定  适应度函数的设计  遗传操作设计  控制参数设定 2.遗传算法的基本算法 2.1 编码 2.1.1 位串编码 一维染色体编码方法:将问题空间的参数编码为一维排列的染色体的方法。 (1)二进制编码 用若干二进制数表示一个个体,将原问题的解空间映射到位串空间 B={0,1}上,然后在位串空间上进行遗传操作。 (2)Gray编码 将二进制编码通过一个变换进行转换得到的编码。 2.1.2 实数编码 用若干实数表示一个个体,然后在实数空间上进行遗传操作。采用实数表达法不必进行数制转换,可直接在解的表现型上进行遗传操作。 2.1.3 多参数级联编码 把每个参数先进行二进 制编码得到子串,再把这些子串连成一个完整的染色体。多参数映射编码中的每个子串对应各自的编码参数,

ASCII,Unicode,UTF-8 和 GBK

烂漫一生 提交于 2020-01-13 05:00:12
转自 http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 。 如果我也有想阮一峰一样的探究总结能力,一定会变得越来越好。 简单来说, Unicode 是最全的编码方式,囊括世界上所有的符号。 UTF-8 是 Unicode 的实现方式之一,它主要采用了变长存储的方式解决了Unicode 存储空间过大问题。 ASCII 码一共规定了128个字符,对于英文表示是完全足够了。UTF-8表示单字符时和ASCII码是一致的,也就是说,对于128个ASCII码对应的字符,其使用UTF-8编码方式和ASCII码完全一致。 GBK 是汉字编码的一种方式,与Unicode 和 UTF-8 是毫无关系的,但都是一种对字符的编码方式。 正文: 一、 ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有 0 和 1 两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从 00000000 到 11111111 。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为 ASCII 码,一直沿用至今。 ASCII

码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别

大城市里の小女人 提交于 2020-01-13 04:00:53
码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清 GOP/ 码流 /码率 / 比特率 / 帧速率 / 分辨率 GOP(Group of picture) 关键帧的周期,也就是两个IDR帧之间的距离,一个帧组的最大帧数,一般而言,每一秒视频至少需要使用 1 个关键帧。增加关键帧个数可改善质量,但是同时增加带宽和网络负载。 需要说明的是,通过提高GOP值来提高图像质量是有限度的,在遇到场景切换的情况时,H.264编码器会自动强制插入一个I帧,此时实际的GOP值被缩短了。另一方面,在一个GOP中,P、B帧是由I帧预测得到的,当I帧的图像质量比较差时,会影响到一个GOP中后续P、B帧的图像质量,直到下一个GOP开始才有可能得以恢复,所以GOP值也不宜设置过大。 同时,由于P、B帧的复杂度大于I帧,所以过多的P、B帧会影响编码效率,使编码效率降低。另外,过长的GOP还会影响Seek操作的响应速度,由于P、B帧是由前面的I或P帧预测得到的,所以Seek操作需要直接定位,解码某一个P或B帧时,需要先解码得到本GOP内的I帧及之前的N个预测帧才可以,GOP值越长,需要解码的预测帧就越多,seek响应的时间也越长。 CABAC/CAVLC H.264/AVC标准中两种熵编码方法,CABAC叫自适应二进制算数编码,CAVLC叫前后自适应可变长度编码, CABAC:是一种无损编码方式,画质好

GeoHash算法附近寻址

老子叫甜甜 提交于 2020-01-13 03:28:31
原文出处: zhanlijun 引子 机机是个好动又好学的孩子,平日里就喜欢拿着手机地图点点按按来查询一些好玩的东西。某一天机机到北海公园游玩,肚肚饿了,于是乎打开手机地图,搜索北海公园附近的餐馆,并选了其中一家用餐。 饭饱之后机机开始反思了,地图后台如何根据自己所在位置查询来查询附近餐馆的呢?苦思冥想了半天,机机想出了个方法:计算所在位置P与北京所有餐馆的距离,然后返回距离<=1000米的餐馆。小得意了一会儿,机机发现北京的餐馆何其多啊,这样计算不得了,于是想了,既然知道经纬度了,那它应该知道自己在西城区,那应该计算所在位置P与西城区所有餐馆的距离啊,机机运用了递归的思想,想到了西城区也很多餐馆啊,应该计算所在位置P与所在街道所有餐馆的距离,这样计算量又小了,效率也提升了。 机机的计算思想很朴素,就是通过过滤的方法来减小参与计算的餐馆数目,从某种角度上讲,机机在使用索引技术。 一提到索引,大家脑子里马上浮现出B树索引,因为大量的数据库(如MySQL、oracle、PostgreSQL等)都在使用B树。B树索引本质上是对索引字段进行排序,然后通过类似二分查找的方法进行快速查找,即它要求索引的字段是可排序的,一般而言,可排序的是一维字段,比如时间、年龄、薪水等等。但是对于空间上的一个点(二维,包括经度和纬度),如何排序呢?又如何索引呢?解决的方法很多,下文介绍一种方法来解决这一问题。

linux下编码转换

做~自己de王妃 提交于 2020-01-12 16:44:17
1.什么是编码? 关于编码的定义,我们可以查看百度全科 http://baike.baidu.com/view/237708.htm 还可以参考:http://www.cnblogs.com/cocowool/archive/2009/04/25/1443529.html 2.linux下经常遇到的编码问题 如果你需要在Linux中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题。Windows中默认的文 件格式是 GBK(gb2312) ,而Linux一般都是 UTF-8 。 3.查看编码的方法 方法一:file filename 方法二:在Vim中可以直接查看文件编码    :set fileencoding 即可显示文件编码格式。 如果你只是想查看其它编码格式的文件或者想解决用Vim查看文件乱码的问题,那么你可以在   ~/.vimrc 文件中添加以下内容:   set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936   这样,就可以让vim 自动识别文件编码 (可以自动识别UTF-8或者GBK编码的文件),其实就是依照 fileencodings提供的编码列表尝试,如果没有找到合适的编码,就用 latin-1 ( ASCII )编码打开。 4.文件编码转换 多平台方法: iconv

c#字符串编码问题

折月煮酒 提交于 2020-01-12 10:24:34
来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=272 GPS平台、网站建设、软件开发、系统运维,找森大网络科技! http://cnsendnet.taobao.com c#字符串编码问题 一、 ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。 上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。ASCII码一共规定了128个字符的编码,比如空格“SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。 在C#中如果你想看看某个字母的ASCII码是多少,可以使用表示字符编码的类Encoding ,代码如下: string s = "a"; byte[] ascii = Encoding.ASCII.GetBytes(s);