二进制代码

MySQL二进制日志分析-概述篇

六眼飞鱼酱① 提交于 2019-11-29 18:27:46
MySQL从3.23版本开始引入了二进制日志,用于的数据复制, 二进制日志根据MySQL的版本不同,目前有4个版本: https://dev.mysql.com/doc/internals/en/binlog-version.html Version 1: supported statement based replication events. Version 2: can be ignored as it was only used in early alpha versions of MySQL 4.1.x and won't be documented here. Version 3: added the relay logs and changed the meaning of the log position. Version 4: added the FORMAT_DESCRIPTION_EVENT and made the protocol extensible. 二进制日志版本是向后兼容的, 后一个版本可以看成是对前一个版本的继承和扩展,需要注意的是,version 2是一个临时版本, 可以忽略。事实上可以只关心v4版本,因为现在跑的MySQL都应该是MySQL 5+了,就如现再讨论Oracle 8i, 9i没什么实际意义。截至当前最新的MySQL 8版本

基础项目(4)二级制转换BCD

我只是一个虾纸丫 提交于 2019-11-29 13:17:48
写在 前面的 话 我们的数据在运算或者存储的时候,一般都是以二进制的格式存在的。但是在很多情况下,我们需要将运算结果显示到某种显示设备上,如果直接以二进制的形式来显示的话,会非常不便于我们查看。因此,我们需要首先将二进制数转换为十进制数再进行显示。二进制到十进制的转换有很多种方法。本节,梦翼师兄和大家一起学习一种国外目前最为流行的转换方法 -逐步移位法。通过这种方式,我们不但可以在没有周期差的情况下实现数据格式的转换,同时我们的资源占用量也是相当小的。 基本 概念 BCD码(Binary-Coded Decimal‎)也 称二进码十进数或二 - 十进制 代码。用 4位二进制数来表示1位 十进制数 中的 0~9这10个数码。BCD码这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧 在 FPGA中经常用到,如矩阵键盘输入的数据需要在数码管上显示的时候,矩阵键盘输入的数字是二进制数,而数码管上需要显示的是十进制数,所以需要将二进制数转换成BCD码,这在我们以后的设计中会经常遇到。 7.3 .3逐步移位法原理 在本设计中,我们使用逐步移位法来实现二进制数向BCD码的转换,在设计之前,我们先来了解一下二进制数向BCD码转换的原理-逐步移位法: 变量定义: B:需要转换的二进制数位宽 D:转换后的BCD码位宽 (其中

十六章、国际化

穿精又带淫゛_ 提交于 2019-11-29 12:33:01
HTTP报文可以承载任何语言表示的内容的。因为对HTTP来说, 实体主体只是二进制信息的容器而已 。 在HTTP中为了支持国际性,服务器返回内容的同时需要告知客户端文档是用的什么字母表和语言等信息,这样客户端才能正确的解析出信息并显示字符。服务器可以通过 Content-Type 中的 charset参数 和 Content-Language 首部告知客户端字母表和语言信息。 同时,客户端并不是所有的字母表和语言都能进行处理,所以客户端在发起请求的时候,也可以通过发送 Accept-Charset 和 Accept-Languag e 首部, 告知服务端自己所能处理的编码类型和语言 。这两个首部也支持优先级,可以通过 q参数 设置优先级。 所以,HTTP中的国际化,也就是本篇要介绍的内容主要涉及到字符集编码(character set encoding)和语言标记(language tag) 1 字符集和HTTP 1.1 字符集的概念 所谓字符集起始就是把字符转为二进制码的编码。 HTTP 字符集的值说明如何把实体内容的二进制码转换为特定字母表中的字符 。每个字符集标记都命名了一种把二进制码转换为字符的算法(反之亦然)。字符集标记在由 IANA 维护MIME字符集注册机构进行了标准化。一般通过Content-Type中的charset参数进行指定。如下: Content-Type:

二进制表示中1的个数

别来无恙 提交于 2019-11-29 12:22:52
输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 1 int cnt=0; 2 int cnt=0; 3 while(a){ 4 a=a&(a-1); 5 cnt++; 6 } 分析一下代码: 这段小小的代码,很是巧妙。 如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。 举个例子:一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一个1开始的所有位都取反了。这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.也就是说,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。 来源: https://www.cnblogs.com/z-bear/p/11517570.html

写一个函数返回参数二进制中 1 的个数。Java实现

自作多情 提交于 2019-11-29 11:59:38
这道题题如果会移位操作符,那我们就有三种方法做了。 首先第一种方法: 将这个数字先模上2,如果是1,那么计数器加1,然后这个数字在除2.模上二在除以二看是否是1,相当于我们把这这个数字以二进制方式写了出来,因为模2的结果就是1和0。但是不好的一点是我们不能用这个方法求负数二进制位有多少个1. 方法二(位操作): 例如:23的二进制序列是: 0000 0000 0000 0000 0000 0000 0001 0111 我们将23右移32次并且与(&)上1,对比23的二进制序列的每一位,看是否为1,因为1的二进制序列只有第一位是1,其他位都是0,这两个数字一与,相当于只看最后一位是不是1,这样也解决了这道题。但是不好的是这种方法每次都要循环32次。 方法三: 我们先判断这个数是不是不等于0,如果不等于0,说明至少有一个1,所以我们计数器先加1,之后在让这个数与上本身减1,这样每一次这个操作就减少一个1,并且不需要循环32次。 具体代码实现如下: public class Count1 { public static void main ( String [ ] args ) { int num = 23 ; int check = 0 ; int count = 0 ; //方法一: while ( num > 0 ) { if ( num % 2 == 1 ) { count ++

获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列。Java实现

♀尐吖头ヾ 提交于 2019-11-29 11:59:37
如果我们会判断一个数的二进制位有多少个1,那么这道题就很简单,只需要判断完后,把结果按照题目要求打印出来就行了。 具体代码实现如下: public class BinaryNumber { public static void main ( String [ ] args ) { //首位为奇数位 int num = 14 ; int check = 0 ; odd ( num ) ; System . out . println ( ) ; even ( num ) ; } public static void odd ( int num ) { for ( int i = 30 ; i >= 0 ; i = i - 2 ) { if ( ( num & ( 1 << i ) ) != 0 ) { System . out . print ( "1 " ) ; } else { System . out . print ( "0 " ) ; } } } public static void even ( int num ) { for ( int i = 31 ; i >= 0 ; i = i - 2 ) { if ( ( num & ( 1 << i ) ) != 0 ) { System . out . print ( "1 " ) ; } else { System .

数组:二进制中1的个数

给你一囗甜甜゛ 提交于 2019-11-29 11:59:17
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 思路分析 如果一个整数不为0,那么这个整数至少有一位是1。如果我们把这个整数减1,那么原来处在整数最右边的1就会变为0,原来在1后面的所有的0都会变成1(如果最右边的1后面还有0的话)。其余所有位将不会受到影响。 举个例子: 一个二进制数1100,从右边数起第三位是处于最右边的一个1。减去1后,第三位变成0,它后面的两位0变成了1,而前面的1保持不变,因此得到的结果是1011.我们发现减1的结果是把最右边的一个1开始的所有位都取反了。   这个时候如果我们再把原来的整数和减去1之后的结果做与运算,从原来整数最右边一个1那一位开始所有位都会变成0。如1100&1011=1000.也就是说,把一个整数减去1,再和原整数做与运算,会把该整数最右边一个1变成0.那么一个整数的二进制有多少个1,就可以进行多少次这样的操作。 参考代码 1 public class Solution { 2 public int NumberOf1(int n) { 3 int count = 0; 4 while(n != 0) { 5 count++; 6 n = n & (n - 1); 7 } 8 return count; 9 } 10 } 来源: https://www.cnblogs.com/carry6/p

文本文件和二进制文件

那年仲夏 提交于 2019-11-29 09:51:10
文本文件是指完全由可见字符组成的文件。所谓可见字符是指ASCII码为32到126的字符、回车符(ASCII码13)、换行符(ASCII码10)、制表符(ASCII码9)、以及所有汉字字符(当然也包括其他字符集如韩文、日文、 阿拉伯文 等等)。如果是Unicode文本,则还包括ASCII码0。 而二进制文件则有多种定义方式,广义的二进制文件是指电脑中的所有文件(包括文本文件),因为电脑中的所有文件其实都是以二进制方式存储的,也就是说每个字符(包括可见字符、 控制字符 )最终都是以0和1的形式存储在硬盘等介质中的(这也就是为什么说电脑只认识0和1这两个数字的原因); 而狭义的二进制文件则是相对于文本文件而言的,即只要文件中含有除可见字符之外的其他字符(主要是 控制字符 ),就是二进制文件; 而比狭义的二进制文件更有特指性的定义方式则是指可执行文件(EXE)、库函数文件(DLL)、图片视频、 数据库文件 等等一切由程序代码、机器码、特定的二进制代码和数据等组成的有实际意义的文件。 来源: https://blog.csdn.net/DDD318/article/details/100770709

unsigned int 和 int

最后都变了- 提交于 2019-11-29 09:22:02
就如同int a;一样,int 也能被其它的修饰符修饰。除void类型外,基本数据类型之前都可以加各种类型修饰符,类型修饰符有如下四种: 1.signed----有符号,可修饰char、int。Int是默认有符号的。 2.unsigned-----无符号,修饰int 、char 3.long------长型,修饰int 、double 4.short------短型,修饰int 我们主要来看一下signed和unsigned与int之间的联系与区别。 什么叫做有符号,什么叫做无符号 这个问题其实很简单,比如:5和-5,5没有符号,-5有符号。简单吧。但是在计算机中的这种符号可不简单。我们分别来看一下: 在说明有符号和无符号的区别之前,我们必须先知道溢出是怎么回事,因为有无符号的根本原因可以说就是因为数据出现了溢出现象导致的。 溢出: 我们知道数据在计算机中以二进制存储,并且占据一定的空间,而这个空间属于计算机分配的空间。 计算机给int分配32位或者16位(不同电脑可能不同)的空间,既然空间有限,那么数值就会有限制,就会存在最大值与最小值这一说,比如:假设int类型的分配16位,无符号类型的最大值为1111 1111 1111 1111(16个1),也就是65535,如果超过了65535,这就叫做溢出,那该怎么办? 如果要输出65536,那将会输出个什么东西呢?

MySQL 主从复制 (CentOS 7)

偶尔善良 提交于 2019-11-29 07:25:28
1、主从复制原理 (1) 当master 服务器上的数据发生改变时,则将其改变写入二进制日志文件中; (2) slave服务器会在一定时间间隔内对 master 服务器上的二进制日志进行探测,探测其是否发生过改变; (3) 如果探测到 master 服务器的二进制日志发生了改变,则开始一个I/O Thread请求master二进制事件; (4) 同时master 服务器为每个slave的 I/O Thread 启动dump Thread,用于向其发送二进制事件; (5) slave 服务器将接收到的二进制事件保存至自己本地的中继日志文件中; (6) slave 服务器 启动SQL Thread 从中继日志中读取二进制日志,在本地重放,使得其数据与master 服务器保持一致; (7) 最后I/O Thread 与 SQL Thread 将进入睡眠状态,等待下一次被唤醒; 2、操作步骤 (1) 修改master 服务器上mysql的配置文件,使其支持二进制日志功能。 打开编辑: vim /etc/my.cnf 添加如下三行代码: log-bin=mysql-bin binlog_format=mixed server-id=128 参数解释: //将mysql二进制日志取名为mysql-bin log-bin=mysql-bin //二进制日志的格式,有三种:statement