二进制

mysql实现高可用架构之MHA

柔情痞子 提交于 2020-02-26 00:00:25
mysql实现高可用架构之MHA 一、简介 MHA(Master HA)是一款开源的 MySQL 的高可用程序,它为 MySQL 主从复制架构提供了 automating master failover (自动化主故障转移)功能。MHA 在监控到 master 节点故障时,会提升其中拥有最新数据的 slave 节点成为新的master 节点,在此期间,MHA 会通过于其它从节点获取额外信息来避免一致性方面的问题。 MHA 还提供了 master 节点的在线切换功能,即按需切换 master/slave 节点。 MHA 是由日本人 yoshinorim(原就职于DeNA现就职于FaceBook)开发的比较成熟的 MySQL 高可用方案。MHA 能够在30秒内实现 故障切换,并能在故障切换中,最大可能的保证数据一致性。目前淘宝也正在开发相似产品 TMHA, 目前已支持一 主一从。 二、MHA 服务 2.1 服务角色 MHA 服务有两种角色, MHA Manager(管理节点)和 MHA Node(数据节点): MHA Manager: 通常单独部署在一台独立机器上管理多个 master/slave 集群(组),每个 master/slave 集群称作一个 application,用来管理统筹整个集群。 MHA node: 运行在每台 MySQL 服务器上(master/slave

二进制中1的个数

血红的双手。 提交于 2020-02-25 22:46:58
输入一个整数,输出该数二进制表示中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,就可以进行多少次这样的操作。 public class Solution { public int NumberOf1(int n) { int count = 0; while(n!= 0){ count++; n = n & (n - 1); } return count; } } 来源: oschina 链接: https://my.oschina.net/u/4167465/blog/3164328

Java千问:Java位运算经典应用(一)

天大地大妈咪最大 提交于 2020-02-25 22:45:56
很多人认为位运算在实际开发过程中并没什么用,学习位运算也只是为了应付面试。这种想法是错误的,接下来我们就通过几篇连载文章介绍一下位运算在实际开发过程中的几个经典应用实例。如果对位运算规则掌握还不是很熟练,可以先阅读《 Java千问:Java语言位运算符详解 》。这篇文章不仅详细讲解了Java位运算的基本规则和一些常用的运算定律,同时还在文中提到了一些常用的位运算实际应用,比如可以用位运算操作的方式快速把某个变量所在的内存单元清零,或者位运算的方式实现某个变量快速倍增等等。但文中所这提到的这几个实际应用比较简单,本次连载文章将为大家讲述的是更加复杂和实际的应用经典案例。此外,为获得更好的阅读效果,请各位读者在读本文之前先熟练掌握”补码”的计算规则。 一、判断整数的奇偶性 按照传统的思路,判断一个整数的奇偶性是通过用这个数与2求模,看运算结果是否为0。学了位运算符以后,我们可以换一种思路来考虑问题。我们知道:Java语言中,所有数字存储在内存中,都要先转换成补码的形式。任何一个偶数用补码表示出来后,它的最后一个二进制位都是0,而奇数补码的最后一个二进制位都是1。所以,我们可以通过判断这个整数的补码的最后一位二进制数是0还是1,来判断这个数是偶数还是奇数。判断的方法就是用这个数与1进行按位与的操作,如果结果为0,那么这个数就是偶数,否则就是奇数。如果大家不理解这个算法的原理,请看下图:

asp无惧上传类2.2上传文件的同时,通过 Request.QueryString将参数传递到保存页面中

允我心安 提交于 2020-02-25 12:24:24
先转一段 文字 ,对不对再评论 在后台asp程序中,以前获取表单提交的ASCII 数据,非常的容易。但是如果 需要获取上传的文件,就必须使用Request对象的BinaryRead方法来读取。BinaryRead方法是对当前输入流进行指定字节数的二进制读取,有点需要注意的 是,一旦使用BinaryRead 方法后,再也不能使用Request.Form 或 Request.QueryString 集合了。结合Request对象的TotalBytes属性,可以将 所有表单提交的数据全部变成二进制,不过这些数据都是经过编码的。 好像不全对 ,蓝色字体这里好像有 问题,用 淘宝开店 无惧上传类2.2(作者好像说是2.0,也许有人改动过)上传文件时,Request.Form就是不能用,和该类冲突。这个也许就是以为蓝色字体提到的原因,可是Request.QueryString可以用。为了解决传文件的同时,要传递变量值,我使用的方法是: 如果设置批量上传,则通过文件上传xml到服务器然后写入mdb,如果不是批量上除,单个例如则用form提取变量值。 批量是时候,将tea_savework.asp递交地址改写成?piliang=true&。。。。。其他变量值,就是下面的代码: if piliang="" then %> <form name="form1" method="post" action

数据库连接字符编码问题

送分小仙女□ 提交于 2020-02-25 10:46:18
查看数据表字符编码命令 show create table table_name; show create table student; +---------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | Table | Create Table | +---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Python字符编码

人盡茶涼 提交于 2020-02-25 04:32:45
在用python编程中,字符串有两种表示方法"string"和 u"string"。 为什么字符串要是用这两种表达方式。不是仅仅用前一种呢? 使用type()函数查看,它们各自是str对象和unicode对象。这两个对象有什么差别吗?还有经经常使用到的encode()和decode()又是干什么的呢?都说python脚本使用的是两字节编码,这又是指什么呢? 要回答上面几个问题,首先得弄清楚关于编码的几个概念: Character Set :字符集,是我们人能够识别的字符。 如ASCII规定了127个用一个字节能够表示的字符集。包含英文字母、数字、符号和一些控制字符。当然ASCII定义的字符集比較小。 python中的Character Set基本包含眼下世界上全部是用的字符。如中文、英文、日文字符等等。所以基本上全部的字符都可在Python 中进行处理。 Code Point :计算机是不能直接识别字符的(由于它仅仅能直接识别二进制码),所以为了能让计算机处理和存储字符,须要将字符映射成一个数值(由于数值能够用二进制表达,计算机从而就能够识别了),这个数值叫作字符的code point。字符与其code point是一对一映射,Unicode非常好的规定了这样的映射关系。 Encode :unicode尽管规定了每一个字符的Code Point

15.python文件(file)方法详解

夙愿已清 提交于 2020-02-24 23:20:11
文件的基本操作 文件读写: 文件的读写满足以下3个步骤: 1).打开文件 2).操作数据(读、写) 3).关闭文件 --> 不要忘记 1).打开文件: python的open() 方法用于 打开一个文件,并返回文件对象 ,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。 【注意】: 使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。 1 # open() 函数常用形式是接收两个参数:文件名(file)和模式(mode) 2 open(file, mode='r') 3 4 # 完整的语法格式为: 5 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 参数说明: file: 必需,文件路径(相对或者绝对路径) mode: 可选,文件打开模式 buffering: 设置缓冲 encoding: 一般使用utf-8,确定字符集( 编码、解码 ) ;如果不定义,默认使用 gbk 进行编码和解码使用 errors: 编码解码不一致 报错时会报错,如果 定义 errors = 'ignore', 不会报错但是会乱码, (相对友好) newline: 区分换行符

CIDR相关概念

断了今生、忘了曾经 提交于 2020-02-24 13:34:38
无类别域间路由(Classless Inter-Domain Routing、CIDR) 是一个用于给用户分配IP地址以及在互联网上有效地路由IP数据包的对IP地址进行归类的方法 网段的理解 最小网段值,最大网段值,这之间的区间范围 二进制表示 1000 = 2的3次方 = 8 << 有符号左移位 将运算数的二进制整体左移指定位数,低位用0补齐 1<<4 = 10000(二进制) = 2的4次方 = 14 cidr范围 10.0.0.0/28 的范围数是(10.0.0.0 ~ 10.0.0.15) 个数 = 2的(32-28)次方 = 16 可用地址:14 掩码:255.255.255.240 网络:10.0.0.0 第一个可用:10.0.0.1 最后一个可用:10.0.0.14 广播:10.0.0.15 来源: CSDN 作者: iveskim 链接: https://blog.csdn.net/zhaoxilengfeng/article/details/104447797

mysql

余生长醉 提交于 2020-02-24 08:49:53
概念     MySQL之间数据复制的基础是二进制日志文件(binary log file)。一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以“事件”的方式记录在二进制日志中,其他数据库作为slave通过一个I/O线程与主服务器保持通信,并监控master的二进制日志文件的变化,如果发现master二进制日志文件发生变化,则会把变化复制到自己的中继日志中,然后slave的一个SQL线程会把相关的“事件”执行到自己的数据库中,以此实现从数据库和主数据库的一致性,也就实现了主从复制。 安装mysql(一主一从)   192.168.138.187  主机 192.168.138.188  丛机 步骤一:检查虚拟机中是否有mysql环境,并将其卸载,命令如下 rpm -qa | grep -i mysql   如果有使用【rpm -e --nodeps MySQL-client-5.5.44-1.linux2.6.x86_64】命令将其删除; 使用【find / -name mysql】命令查看是否有相关的mysql文件夹 有的话,使用【rm -rf 文件名】删除相关文件或文件夹 步骤二:在【/usr/local】目录下使用命令【mkdir mysql】新建一个文件夹名为mysql,将tar文件放在该mysql文件夹下        步骤三:使用

浮点数的表示方法(转,修改)

浪子不回头ぞ 提交于 2020-02-23 10:14:02
C语言和C#语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储,float数据占用32bit,double数据占用64bit,我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double 遵从的是R64.53。 无论是单精度还是双精度在存储中都分为三个部分: 符号位(Sign) : 0代表正,1代表为负 指数位(Exponent):用于存储科学计数法中的指数数据,并且采用移位存储 尾数部分(Mantissa):尾数部分 其中float的存储方式如下图所示: 而双精度的存储方式为: 以下120的二进制表示错误了应该是111 1000 R32.24和R64.53的存储方式都是用科学计数法来存储数据的,比如8.25用十进制的科学计数法表示就为:8.25* ,而120.5可以表示为:1.205* ,这些小学的知识就不用多说了吧。而我们傻蛋计算机根本不认识十进制的数据,他只认识0,1,所以在计算机存储中,首先要将上面的数更改为二进制的科学计数法表示,8.25用二进制表示可表示为1000.01,我靠,不会连这都不会转换吧?那我估计要没辙了。120.5用二进制表示为