自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 分布式算法学习笔记---ACID

单机上实现ACID可以通过锁,时间序列等机制实现。分布式系统由于需要协调多个节点,单机的实现方案就不能保证多个节点之间的ACID特性。此时就需要分布式事务协议。比如二阶段提交,TCC。二阶段提交协议1 选举协调者2 客户端发消息给协调者3 协调者发消息给其他事务的参与者,进入提交请求阶段(投票阶段)4...

2020-08-12 23:48:00 260

原创 Mysql学习笔记--删除数据

首先 innodb_file_per_table 要设置为ONinnodb_file_per_table:1 这个参数设置为 OFF 表示的是,表的数据放在系统共享表空间,也就是跟数据字典放在一起;2 这个参数设置为 ON 表示的是,每个 InnoDB 表数据存储在一个以 .ibd 为后缀的文件中。如果设置为OFF,则drop table也是不会回收空间的。删除流程MYSQL的删除并不是真正的把数据删除,只是标志为删除。比如删除ID为300的行,则是把这个记录标记为删除。后续插入的时候是会复用

2020-08-12 13:55:38 254

原创 分布式算法学习---CAP理论

CAP理论也叫做CAP不可能三角,就是三种特性不可能同时满足。CAP分别指的是:C:一致性。就是当有客户端修改了数据以后,要同步到集群所有的机器,才会返回成功,这时,无论客户端往哪台机器去读取数据都是最新的数据。如果发生了网络问题,A:可用性。当客户端修改了数据,只要在一台机器修改成功了,就立即返回了,不保证其他机器上的数据都是最新的。当集群间的机器发生网络问题的时候,客户端去读取数据就会发生读取到的数据不是最新的,但...

2020-08-10 23:27:48 2026

原创 MYSQL学习笔记---抖动一下

有时在正常情况下,工作的很好的SQL语句,突然就变慢了一下。MYSQL发生了抖动,这是什么原因?首先从MYSQL的wal机制说起。INNODB在处理更新语句的时候,只是写了一次redo log就返回了。那么就会产生“胀页”。当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为“干净页”。产生了胀页,就要找时间进行flush,把内存的数据刷入到磁盘里面,保持数据的一致。以赊账的例子来看:那么发生MYSQL抖动一下的情

2020-08-10 19:42:40 122

原创 MYSQL学习笔记---字符窜加索引

比如邮箱登陆的系统,有一张表:mysql> create table SUser(ID bigint unsigned primary key,email varchar(64), ... )engine=innodb; 有一条SQL语句:mysql> select f1, f2 from SUser where email='xxx';不在email加索引的话,就会进行全盘扫描,效率比较低。MySQL 是支持前缀索引的,有两种加索引的方式:mysql> alter

2020-08-06 13:52:25 162

原创 分布式算法学习---拜占庭将军问题

拜占庭将军问题很好的抽象了分布式系统面临的共识问题。以六国与秦国作战作为类比,先做以下的假设:忠诚的将军,你可以理解为正常运行的计算机节点;叛变的将军,你可以理解为出现故障并会发送误导信息的计算机节点;信使被杀,可以理解为通讯故障、信息丢失;信使被间谍替换,可以理解为通讯被中间人攻击,攻击者在恶意伪造信息和劫持通讯。以三个国家攻打秦国为例,假设秦国很强大,需要半数以上的国家同时进攻才能打败秦国。统帅为苏秦。那么苏秦面临着怎么统一作战的问题。二忠一叛的难题按照少数服从多数的原则,只要大多数的

2020-08-06 00:02:23 723

原创 MYSQL学习笔记---选择索引

在不同的场景下,是选择普通索引还是唯一索引呢?假设有一个市民系统,业务层面已经保证了身份证号是唯一的,有下面的查询:select name from CUser where id_card = 'xxxxxxxyyyyyyzzzzz';这个SQL语句肯定要考虑建索引。由于身份证号字段比较大,所以考虑是普通索引或者唯一索引。从业务上已经保证身份证不会重复,所以从业务上来说都是正确的。从查询和更新的性能来说呢?查询过程比如有下面的语句:select id from T where k=5这

2020-08-05 00:37:00 157

原创 MYSQL学习笔记---值到底是多少

建表和插入语句如下:mysql> CREATE TABLE `t` ( `id` int(11) NOT NULL, `k` int(11) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB;insert into t(id, k) values(1,1),(2,2);启动的事务:A,B,C查到的值是?首先,两种启动事务的方式:1 begin/start transaction,没有直接启动事务,而是要到执行第一条快照读语句的

2020-08-04 20:18:37 144

原创 MYSQL学习笔记--行锁

MYISAM不支持行锁,INNODB支持行锁。从并法度来说INNODB要比MYISAM要大。这也是INNODB替代MYISAM的重要原因之一。从两阶段锁说起下面的情况会发生什么?事务 B 的 update 语句会被阻塞,直到事务 A 执行 commit 之后,事务 B 才能继续执行。那么就有一个结论:在 InnoDB 事务中,行锁是在需要的时候才加上的,但并不是不需要了就立刻释放,而是要等到事务结束时才释放。这个就是两阶段锁协议。从这个可以得出:如果你的事务中需要锁多个行,要把最可能造成锁冲突、

2020-08-03 20:12:48 199

原创 MSQL学习笔记--锁

根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。全局锁全局锁就是把整个数据库的实例加锁。命令是 Flush tables with read lock (FTWRL)。数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句都会被阻塞。主要的作用就是做全库逻辑备份,也就是把整库每个表都 select 出来存成文本。会出现很危险的问题:1 如果你在主库上备份,那么在备份期间都不能执行更新,业务基本上就得停摆;2 如果你在从库上备份,那么

2020-08-03 19:43:08 179

测试用的代码

测试代码

2016-09-06

QT编程经典资料

QT编程的金典之作,供大家学习之用!!!

2013-08-07

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除