二进制编码

汉明编码的校验,个人学习笔记

本小妞迷上赌 提交于 2020-01-06 20:40:06
根据汉明编码的纠正 首先了解汉明码的组成,设欲检测的二进制代码为n位,需要添加k位检测位,组成n+k位的代码 他们的关系是 2^k>=n+k+1 代码长度n与检测位数k的关系 n k 1 2 2~4 3 5~11 4 12~26 5 确定K位后,设n+k位二进制代码从左向右的顺序依次位1,2,3,4,5,……n+k位 (1)将k位的检测位记作Ci(i=1,2,4,8,16……),分别安插在n+k位二进制代码的1,2,4,8位上。 (2)C1即二进制代码中第一位为1的,如1,11,101,111,1001,1011等(1,3,5,7,9,……) C2即二进制代码中第二位为1的,如10,11,110,111,1010,1011等(2,3,6,7,10,11) C4即二进制代码中第三位为1的,如100,101,111,1100,1101等(4,5,6,7,12,……) C8即二进制代码中第四位为1的,如1000,1001,1011,1111等(8,9,10,11,12,……) (3) 实际C1就是安排在n+k位二进制代码的第1位上,C2是第2位,C4是第4位,C8是第8位,以此类推 在配奇/配偶时,C1=第1,3,5,7,9位相加 C2=第2,3,5,7,9位相加以此类推 安插顺序如下,例如欲检测的代码为4位,则需要安插3位检测位,计算方法为2^k>=n+k+1, 即2 ^k>=k+4

三、Mysql 索引、锁

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

ORACLE基本数据类型总结

老子叫甜甜 提交于 2019-12-29 10:23:03
ORACLE基本数据类型(亦叫内置数据类型 built-in datatypes)可以按类型分为:字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。 在讲叙字符串类型前,先要讲一下编码。字符串类型的数据可依编码方式分成数据库字符集(CHAR/VARCHAR2/CLOB/LONG)和国际字符集(NCHAR/NVARCHAR2/NCLOB)两种。数据库中的字符串数据都通过字符集将字符转换为数字后(二进制),才存储到数据块中。通过不同的编码集转换,即便是相同的字符,也可能会转换成不同的二进制编码。这也是产生乱码的原因。数据库的编码格式一般是在创建数据库时指定的。当然也可以修改数据库的编码。 查看数据库视图所包含的数据类型:SELECT * FROM DBA_TYPES WHERE OWNER IS NULL.具体细节情况参见 Oracle® Database SQL Language Quick Reference 10/11 g 或 官方文档 一 字符串类型 字符串数据类型还可以依据存储空间分为固定长度类型(CHAR/NCHAR) 和可变长度类型(VARCHAR2/NVARCHAR2)两种. 所谓固定长度:是指虽然输入的字段值小于该字段的限制长度,但是实际存储数据时,会先自动向右补足空格后,才将字段值的内容存储到数据块中

Python基础13-文件处理

妖精的绣舞 提交于 2019-12-27 01:49:08
目录 用内置函数open打开文件 以文本方式打开文件 只读模式r 只写模式w 追加模式a 覆盖模式+ 以二进制方式打开文件 以二进制方式读 以二进制方式写 open函数的newline参数 file object的方法 tell显示当前光标的位置 seek控制光标的移动 truncate切片文件 用内置函数open打开文件 open打开文件,返回文件句柄。通过句柄关闭文件。Python默认使用utf-8编码,但是open函数不是,open函数会检测当前操作系统的编码。read读取文件的全部内容。 # file1 # 苟利国家生死以 # 岂因祸福避趋之 f = open('file1.txt', encoding='utf-8') data = f.read() print(data) f.close() 以文本方式打开文件 只读模式r 打开文件有不同的模式。用readable和writable方法判断是否可读写。 只读模式r,如果进行写操作会报错。只读是默认模式。用read读取全部内容。用readline读取一行。用readlines读取所有行放在一个列表里。 # file2 # 生不逢时 # 爱不逢人 # 所到之处 # 皆是命数 f = open('file2.txt') print('line1:--->', f.readline(), end='') print('line2

[算法题] 字节流解析

让人想犯罪 __ 提交于 2019-12-26 16:47:21
版权声明:本文为CSDN博主「北京-大白」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/robothj/article/details/79776407 RTMPdump(libRTMP) 源代码分析 6: 建立一个流媒体连接 (NetStream部分 1) 原创 雷霄骅 字节流解析 题目标题: 根据数值占用BIT数,按顺序从输入字节流中解析出对应数值,解析顺序按输入数组astElement索引升序。 详细描述: 接口说明 原型: voidDecode(unsignedintuiIutputLen,unsignedcharaInputByte[],unsignedintuiElementNum,ELEMENT_STRU astElement[]); 输入参数: unsignedintuiIutputLen:字节数组(流)长度 unsignedcharaInputByte:字节数组(流) unsignedintuiElementNum:解析数值个数 ELEMENT_STRU astElement[]:数值的结构数组指针,含义如下 Struct { unsignedintuiElementLength; //表示uiElementValue占用BIT数,范围1~32

Unicode、UTF8、UTF16

末鹿安然 提交于 2019-12-26 07:05:13
推荐一篇 文章 ,此博客是阅读这篇文章后自己的一些总结与理解 Unicode Unicode是一种标准,他收集了世界上所有的字符,并为每个字符分配了一个唯一的码点 现在来看看Unicode字符集是长什么样子,由于全球所有的字符太多太多,按照字符的类型使用频率把字符分了17个平面,如图,每个平面的码点唯一对应一个字符(当然也有还没用到的,因为实际上字符并没有那么多),像平面0上的码点就放着最常用的字符 拿平面0举例,我们常用的字符 A 就在平面0上,A对应的字符编码是0041,即图中平面0的0000-0FFF中的0041, 这个0041就是码点 这个0000-10FFFF就是码点空间 0000-10FFFF与全球字符的对应关系就是编码字符集 专业术语概念 Coded Character Set(CCS):编码字符集,将全球的字符收集起来每个分配唯一的字符编号,Unicode字符集就是一种编码字符集 Character Encoding Form(CEF):将ccs中的字符编号按照某种规则转化成二进制序列,UTF8、UTF16就是一种字符编码表 Code Point:码点,即ccs中的字符编号 Code Unit:代码单元,已编码的文本中具有最短bit位的单元,UTF8是8bit长,UTF16是16bit长(至于UTF8为什么是8bit,UTF16为什么是16bit,后面还会介绍)

Mysql 字符函数详解

自古美人都是妖i 提交于 2019-12-26 03:09:14
MySql 所有字符串函数函数详解 ASCII(str) 返回str最左边第一位字符的ASCII编码,如果str为空,则返回 0 。如果str为NULL,则返回NULL -- 只返回a的ASCII编码 SELECT ASCII('ab') - 97 SELECT ASCII('a') - 97 -- 如果是数字,带不带引号是一样的效果 SELECT ASCII(23) - 50 SELECT ASCII(2) - 50 SELECT ASCII('2') - 50 BIN(N) 返回N的二进制数,N是数字类型,这个函数其实相当于CONV(N,10,2)。如果N是null则返回null,如果N是非数字的字符串则会返回0 SELECT BIN(2); - 10 SELECT CONV(2,10,2); - 10 SELECT BIN('23'); - 10111 SELECT CONV(23,10,2); - 10111 SELECT BIN('n'); - 0 BIT_LENGTH(str) 返回str的二进制长度 SELECT BIT_LENGTH('test'); - 32 SELECT BIT_LENGTH('测'); - 24 SELECT BIT_LENGTH('你好啊'); - 72 CHAR(N,... [USING charset_name])

用python实现文件加密功能

别等时光非礼了梦想. 提交于 2019-12-25 21:36:33
生活中,有时候我们需要对一些重要的文件进行加密 ,Python 提供了诸如 hashlib,base64 等便于使用的加密库。 但对于日常学习而言,我们可以借助异或操作,实现一个简单的文件加密程序,从而强化自身的编程能力。 基础知识 在 Python 中异或操作符为: ^ ,也可以记作 XOR。按位异或的意思是:相同值异或为 0,不同值异或为 1。具体来讲,有四种可能:0 ^ 0 = 0,0 ^ 1 = 1, 1 ^ 0 = 1, 1 ^ 1 = 0。我们还可总结出规律(A 为 0 或 1):0 和 A 异或为 A本身;1 和 A 异或为 A 反。 让我们想看看一位二进制数满足的性质: 一位二进制数与自身的异或值为 0 b ^ b = 0 异或操作满足交换律 a ^ b ^ c = a ^ (b ^ c) = (a ^ b) ^ c 0 与 a 的异或为 a (a ^ b) ^ b = a ^ (b ^ b) = a ^ 0 = a 易知,对任意长二进制数都满足上述性质。 原理 通过了解异或操作的性质,加密原理就非常清晰了。 加密操作: 首先将文件转换成二进制数,再生成与该二进制数等长的随机密钥,将二进制数与密钥进行异或操作,得到加密后的二进制数。 解密操作: 将加密后的二进制程序与密钥进行异或操作,就得到原二进制数,最后将原二进制数恢复成文本文件。 生成随机密钥: secrets

文件处理

牧云@^-^@ 提交于 2019-12-24 11:23:14
Python-09 @(Python) 文件处理 一、什么是文件 文件是操作系统为用户或应用程序,提供的一个读写硬盘的虚拟单位,文件可以是文本文件、视频、音频、图片等形式 对文件的读写操作,其实就是对操作系统发起请求,然后由操作系统控制硬盘来读写 二、 为什么要有文件 计算机和人,有永久保存和使用数据的需求,文件可以永久保存在磁盘中,并且可被临时存储到内存 三、文件的基本操作 1. 打开文件 打开文件的语法: open(r'文件路径') r(rawstring ) :原生字符串,表示后面出现的都是原生字符,没有其他特殊意义,也可以使用 \ 单个转义 f=open(r'文件路径') ,将 open(r'文件路径') 赋值,此时是占用了应用程序的资源 2. 操作文件(读或写) data=f.read() 表示向操作系统发起打开文件请求,要求打开文件(文件操作会占用操作系统和应用程序的资源) 读写的操作会被操作系统转成具体的硬盘操作,将文件由硬盘读入内存 3. 关闭文件 f.close() 表示关闭文件,回收占用操作系统的资源,关闭的是 f 的值在操作系统的资源,本身的值还在应用程序的内存中 不要使用del删除变量的绑定关系,虽然能删除绑定关系,但是这个打开的文件,还会占用操作系统的资源,需要等待一定时间才能被回收,如果这样的文件过多,就会导致占用大量的资源 4. 总结

用Python开发MySQL增强半同步BinlogServer(T1基础篇)

瘦欲@ 提交于 2019-12-23 11:27:29
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 导读 : 作者:曾永伟,知数堂10期学员,多年JAVA物流行业开发管理经验和PHP/Python跨境电商开发管理经验,对数据库系统情有独钟,善于运用SQL编程简化业务逻辑,去年开始正式从业MySQL DBA, 专注于DB系统自动化运维、MySQL云上实践。 本文为python-mysql-binlogserver系列的第一篇(T1基础篇) 概述 前不久知数堂吴老师在公开课上把MHA拉下神坛,是因为MHA无法从根本上解决丢数据的可能性,只是尝试性的去补偿未同步的数据。使用MySQL的半同步复制可以解决数据丢失的问题,但原生 io_thread 会破坏掉Master上的Binlog File的命名,对后继的运维造成不便,所以使用原生增强半同步+blackhole引擎做binlog备份的方案几乎没有人使用,而更多的公司则使用mysqlbinlog命令来实现轻量的BinlogServer,不足的是官方mysqlbinlog并不支持半同步复制,仍然会丢数据。 据我所知,Facebook,Google和国内的美团公司都有研发自己的BinlogServer,但是目前我没有找到一个开源的支持半同步的BinlogServer项目,于是就诞生了 py-mysql-binlogserver 这个项目。 1、主要特性如下: