《深入理解计算机系统》

万丈高楼平地起,计算机系统就像程序员金字塔的地基。理解了计算机系统的构造原理,在写程序的道路上才能越走越远

道理很早就懂,一直没下定决心好好钻研,或许觉得日常工作中根本用不到这些,又或许是每次拿起书看到那些复杂的底层架构,看到存储器,寄存器,CPU,总线等等这些概念就头大

db

James Gray或JimGray,Jim是James的昵称

Transaction发明人,图灵奖

Gray进入数据库领域时,关系数据库基本理论已成熟,但各大厂RDBMS遇到一系列技术问题,数据库规模,数据库结构复杂,更多用户共享数据库情况下,如何保障完整性(Integrity)、安全性(Security)、并行性 (Concurrency),及故障后恢复 (Recovery)

扫码登陆

扫码登录通过二维码在设备间传递信息,用可信任设备(如自己手机)控制不可信任设备上的登录行为

省去不便手动输入的设备(如电视)上输入的环节,更方便

避免在安全等级低的设备和环境(公共电脑、Web页面)输入密码,更安全

cap

分布式系统的事务一致性是一个技术难题

OLTP系统领域,很多业务场景都会面临事务一致性方面的需求,最经典转账的案例

传统企业开发,系统往往是以单体应用形式存在,没有横跨多个数据库

通常只需借助开发平台中特有数据访问技术和框架(Spring、JDBC、ADO.NET),结合rdbms自带事务管理机制来实现事务性的需求(ACID)

互联网平台往往由一系列分布式系统构成,开发语言平台和技术栈也相对比较杂,尤其微服务架构盛行,看起来简单的功能,内部可能需要调用多个“服务”并操作多个数据库或分片来实现,情况复杂很多

单一技术手段和解决方案,无法应对和满足这些复杂的场景

java nio

网上资料很多以IO五种模型为基础讲解NIO

  • 五种模型又涉及很多概念:同步/异步/阻塞/非阻塞/多路复用而不同的人又有不同的理解方式

  • select/epoll/poll/pselectfd这些关键字,没有相关基础的人看起来简直是天书

导致初学时认为nio远不可及

java 学习

摘点关于学j2ee一篇文,适当地参考一下

有部分人觉得J2EE体系太大,直接转投其他阵营了。。。

MySQL 8

16年IMG大会就知道了下一版是8.x

新特性值得抄几篇文章记一下

封装

封装原则倡导通过隐藏抽象的实现细节隐藏变化等,实现关注点分离和信息隐藏

container

容器技术和虚拟机一样,也是一种资源隔离的虚拟化技术。技术雏形早已有之

rpc问题

系统搭建初期,需求简单,架构简单,请求量少,快速原型开发,对rpc要求不高

随便找一个顺手的或者熟悉的rpc框架套进系统中即可

随业务复杂度增高,请求量增高,RPC框架一些致命的问题,比如大扇出问题

springboot

Spring Boot做了那些没有它你也会去做的Spring Bean配置

“习惯优于配置”的理念让项目快速运行起来

容易创建一个独立运行(bootable jar,内嵌Servlet容器)、准生产级别的基于Spring框架的项目,使用Spring Boot你可以不用或者只需要很少的Spring配置

clion wsl

clion 开始支持wsl环境了,win 10 可以方便的直接编译linux的pthread,socket等相关内容,可以在直接愉快的浏览相关源码了

持续重构

什么是重构??

不改变软件可观察行为的前提下改善其内部结构 —Martin Fowler

通俗说法:看起来没做啥调整,让系统继续更好的满足客户需求。同时,希望重构完成后,这个系统能够多蹦跶几年

mysql gtid

5.6引入GTID,全局事务标示符

每次事务提交都在binlog生成1个唯一的标示符,由server UUID(第一次启动MySQL自动生成,auto.cnf)和事务ID组成

首次提交的事务ID为1,第二次为2,以此例推

Xtrabackup

小库可每天完整备份,也用不了多少时间

大数据量备份与还原,始终是个难点。MYSQL超10G,mysqldump导出就比较慢了

MySQL自带工具并不支持真正的增量备份,二进制日志恢复是基于时间点的恢复而不是增量备份

xtrabackup,Percona CTO Vadim参与开发基于InnoDB的在线热备工具,开源,免费,备份恢复速度快(mysqldump 为单线程),占用磁盘空间小,不同情况下的多种备份形式

支持 MySQL、MariaDB 和 Percona

可提供的流备份,可以直接保存到远程机器上(本机硬盘空间不足时很有用)

或是搭建主从,用流式备份大大简化备份后的压缩复制的开销

背书,Facebook 早期用它进行增量备份

XtraBackup 是物理备份,速度很快,能自动验证备份是否有效,自带增量和差异备份功能,在上面功能实现的同时还是热备,对很多公司应用场景来说,已经算是强大到无以复加了

xtrabackup包含两个主要的工具,xtrabackup和innobackupex

  1. xtrabackup只能备份innodb和xtradb引擎的表,不能备份myisam引擎的表

  2. innobackupex前身是封装了xtrabackup的Perl脚本,后重写成可执行文件,支持同时备份innodb和myisam,对myisam备份时需要加一个全局的读锁。myisam不支持增量备份

xtrabackup中不备份表结构,innobackupex调用xtrabackup子线程后再备份表结构,故常用innobackupex,xtraback不做日常使用