10 2020 档案
摘要:Hadoop hadoop1中MapReduce负责计算和任务调度,在hadoop2中将任务调度抽取为Yarn服务 一、Hdfs 1.1 架构 1.1.1 NameNode 存储文件元数据,如:文件名、目录结构、文件属性(生成时间、副本数、权限)以及每个文件的块列表和所在DataNode NameN
阅读全文
摘要:主板上的组件通过 总线 通信,总线分为 地址总线、控制总线、数据总线,因为不同组件速度不一样,所以将连接快组件的总线合并在一起叫做 北桥(离CPU很近),连接慢组件的总线合并在一起叫做 南桥(离开IO设备近) DMA(Direct Memory Access)负责将数据在IO设备和内存之间传输,完成
阅读全文
摘要:常用的Java编译器指令流是 基于栈的指令集 另一种指令集是 基于寄存器指令集 JVM运行时环境包含:线程共享的 方法区、堆区 、元数据空间 以及 线程独享的 虚拟机栈、本地方法栈、程序计数器 基于栈指令集(在操作系统上运行的JVM,如:HotSpot) 设计简单,适用于资源受限系统 避开寄存器
阅读全文
摘要:BIO PushBackInputStream 是一个处理流,它内部维护了一个缓冲数组buf,在读入字节的过程中可以将读取到的字节数据回退给缓冲区中保存,下次可以再次从缓冲区中读出该字节数据。所以 PushBackInputStream 允许多次读取输入流的字节数据,只要将读到的字节放回缓冲区即可。
阅读全文
摘要:并发 并发访问会产生 可见性、有序性、原子性 的问题,Java中的线程和操作系统的线程是一一对应的关系,可以实现Runnnable接口或者继承Thread类来实现多线程编程,不过一般建议实现Runnable接口来将业务和接口调用分离;PC服务器一般采用抢占式线程调度;手机等小型设备可能采用协作式线程
阅读全文
摘要:集合 集合分为两大类:Collection和Map,集合进行增加/删除元素的时候会将内部属性modCount进行记数,作用是在iterator进行遍历的时候判断集合内数据是否发生变化 迭代器 iterator.next()会越过下一个元素,并返回越过元素的引用;iterator.remove()会删
阅读全文
摘要:JAVA基础 java概述 特点: 编译期检查异常 体系中立,生成平台无关字节码。并且及时编译将热点字节序列编译成机器码 可移植性强,字节码面向虚拟机,强类型定义明确,规范中没有“依赖具体实现” 程序=算法+数据结构,面向过程强调如何操作数据,面向对象强点如何组织数据 java基本程序结构 java
阅读全文
摘要:C++面向过程 一、Hello World #include <iostream>#defind day 7 // 宏常量using namespace std;int main(){ // 常量,无法修改 const int a =10; // 标识符区分大小写 int A = 30; cout<
阅读全文
摘要:本文以研究和测试功能为主,部署生产环境要参考软件实际版本以及对应部署方法。本文涉及软件:vmware14、jdk8、hadoop2、centos6.8 1.虚拟机配置初始配置1.1:打开虚拟机安装centos6.8,本人分配2G内存、20G硬盘、创建hadoop01用户(自行百度创建Linux用户相
阅读全文
摘要:Scala中函数是一等公民,可以不依赖对象直接创建函数,Scala将函数式编程和面向对象编程融合在一起。 Scala中将对象属性和对象方法与类属性和类方法进行了分离,Scala中的对象相关属性和方法通过 class 关键字定义在对象域中,而类相关的属性和方法通过 object 关键字定义在 伴生
阅读全文
摘要:一、Hbase架构 强制写一致(不是最终一致),写比读块,自动分片/合片。 一个RegionServer机器上有多个Region但只有一个HLog,所有Region都往这个HLog中写入数据操作,一个表对应一个或者多个Region(表按行切分为不同Region),每个Region根据列族划分为不同的
阅读全文
摘要:17.1 锁介绍以及基本类型 多个未提交事务对数据改动,通过锁排队执行,防止 脏写,在事务中修改记录时,先看内存中是否存在相关联的 锁结构 如果没有则创建一个与修改记录相关联的 锁结构 (InnoDB引擎一切操作都是事务) 解决 脏读、不可重复读、幻读 有两种方案: 读操作利用MVCC+写操作加锁:
阅读全文
摘要:理论上实现事务 隔离性 需要在一个是事务提交后才能执行其他事务,多个事务需要排队执行,但是在MySQL中为了性能考虑,允许事务的并发执行,舍弃了一定的 隔离性 允许事务并行执行后可能会出现以下问题: 脏写:一个事务 修改 了另一个事务未提交的数据并且成功提交(InnoDB通过事务行锁解决) 脏读:一
阅读全文
摘要:事务执行过程中遇到意外或者手动通过rollback语句执行 回滚 操作,需要记录 撤销日志 ,即:undo日志,只有在一个事务第一次执行 增、删、改 操作时才会为该事务分配一个 事务id,在MySQL5.5之前undo日志是记录在系统表空间(MySQL数据目录下的ibdata1就是系统表空间),长事
阅读全文
摘要:14.1 问题的提出 对数据库的操作都是以 页 为单位加载到 buffer pool操作的,防止故障引起数据丢失,保证 持久性 如果每次提交事务都将页面刷到磁盘,会有两个问题。一是事务操作的页面可能并不相邻,随机I/O。二是InnoDB以页为单位进行磁盘I/O,即使只修改一个字段。只需要把修改的数据
阅读全文
摘要:表空间 是文件系统上一个或者几个文件抽象,每个文件划分出多个页,当访问数据时,即使只有一条也会把整个数据加载到内存,访问之后 缓存 一段时间,当再次请求时就可以省去I/O开销 # 在配置文件中配置Buffer Pool大小,单位是字节,不配置默认128M,最小值是5M [server] innodb
阅读全文
摘要:数据库事务是一组完整的行为,如果成功全部成功,失败则全部失败。缺点是在事务中,不能根据前置条件决定是否向下执行(事务可切分)。 12.1 事务特性 在OLTP数据库中强调 强一致性 因此提出了ACID原则 原子性(Atomicity): 事务中的所有操作为一个完整的整体,不可拆分 一致性(Consi
阅读全文
摘要:MySQL经过 基于成本 和 基于规则 的优化后生成 执行计划 ,通过在语句前面加上Explain关键字可以查看执行计划: 列名描述 id 在一个大的查询语句中每个SELECT关键字都对应一个唯一的id select_type SELECT关键字对应的那个查询的类型 table 表名 partiti
阅读全文
摘要:MySQL优化器会依据一些规则在执行前将语句进行优化,这个过程叫 语句重写 移除不必要的括号 某列和能够确定值的变量比较,直接替换为常量 移除永真式和永假式 计算常量表达式,索引列最好单独出现在表达式 如果没有聚集函数以及分组条件,查询优化器会将HAVING和WHERE子句合并 表中只有一条记录or
阅读全文
摘要:在语句执行之前,MySQL查询优化器会找出执行该语句所有可能的方案,对比找到成本最低的方案,该方案叫 执行计划 成本主要分为两种: I/O成本:以 页 为单位将数据和索引从 磁盘 加载到 内存 的成本,默认规定读取一个页面的成本是1.0 CPU成本:从内存读取记录并检测搜索条件、对结果集进行排序等操
阅读全文
摘要:8.1 单表访问 全表扫描 使用索引查询 针对主键或唯一二级索引等值查询 针对普通二级索引等值查询 针对索引列范围查询(in子句 也可以划分为范围查询) 扫描整个索引列 即使访问通过索引列查询数据,也不一定会使用索引,当MySQL优化器判断查询二级索引+回表的代价比全表扫描小的时候才会使用索引,如果
阅读全文
摘要:二级索引 以 B+树 形式保存在表空间(表名.ibd 文件),InnoDB为不同的页面设置的了不同的类型。这些类型记录在每个页面头部的 FIL_PAGE_TYPE位(两字节) 以 页 为单位分配和存储数据,在 B+树 的每一层节点间形成的双向链表间的 物理位置 可能会很远,大量的 随机I/O 会降低
阅读全文
摘要:InnoDB、MyISAM存储引擎最终数据都会存储到文件系统中的某个目录,这个目录就是 数据目录 (和MySQL安装目录不一定在一起)。 # 查找数据目录地址SHOW VARIABLES LIKE 'datadir'; 每次创建数据库都会在 数据目录 创建一个和数据库名相同的子目录(文件夹),Inn
阅读全文
摘要:5.1 关于索引的结论: 每个索引对应一颗 B+树(一种多叉树,一般最大四层,每个内节点的分叉大约1200左右),用户记录存储在 叶子节点 ,目录项记录 (每个用户记录的页的最小项称为目录项)存储在 内节点(非叶子节点) InnoDB引擎 自动将数据以为主键为 聚集索引 建立 B+树 索引结构,也就
阅读全文
摘要:在MySQL中索引的数据结构都采用B+树结构,在InnoDB中则是根据主键作为聚集索引将数据直接存储为B+树结构(索引即数据),MyISAM中则是将数据和索引分开存储。 B+树是一颗多叉树,可将降低访问磁盘的次数,B+树数据存放在叶子节点并且通过双向链表关联,实现了数据库的范围查询 B树是一个多叉树
阅读全文
摘要:InnoDB表存储引擎以16KB(可以重新编译设置默认页大小为2的整数倍)为单位将数据划分为若干页,作为磁盘和内存交换数据的基本单位。 InnoDB引擎设计了4种行格式Compact、Redundant、Dynamic、Compressed;我们可以在创建或者修改表的时候通过 ROW_FORMAT
阅读全文
摘要:启动项是mysql服务启动时传递过去的一些参数(可以通过命令行也可以通过配置文件),系统变量是影响服务器运行行为的变量 1.命令行指定配置项 只在首次启动生效 长参数使用 ”--下划线分割单词“ 的形式 短参数使用“-字母”的形式,且参数区分大小写 2.配置文件指定配置项 Linux环境下,按照下列
阅读全文
摘要:MySQL后台服务器进程默认名称mysqld,客户端名称mysql,mysqld_safe是一个启动脚本,间接调用mysqld还会启用监控进程产出日志。systemctl start mysqld.service 会调用mysqld_safe 连接管理、查询缓存、语法解析、查询优化这些逻辑层面的划分
阅读全文

浙公网安备 33010602011771号