MySQL(一)-基础操作
[TOC]
参考文献
不藏了,我的一千行 MySQL 学习笔记(2万字长文)
Difference between Delete and Truncate Command
操作MySQL客户端
MySQL登录:mysql 参数
参数
描述
-D,--database = name
打开指定的数据库
--delimiter = name
指定分割符
-h,--host = name
服务器名称
-p,--port = #
端口号
--prompt = name
设置提示符,[\D:完整的日期;\d: 当前数据库;\h:服务器名称;\u: 当前用户]
-u,--user = name
用户名
-V,--version
输出版本信息并且推出
-S, --socket=name
指定socket文件
1mysql -u root -S /tmp/mysql.sock
MySQL退出: exit/quit/\q
显示数据库信息:\s
1234567891011121314151617181920212223242526Sun Jun 13 16 ...
Redis-事务
Redis事务机制
Redis事务生命周期
开启事务:使用MULTI开启一个事务
命令入队列:每次操作的命令都会加入到一个队列中,但命令此时不会真正被执行
提交事务:使用EXEC命令提交事务,开始顺序执行队列中的命令
Redis事务的原子性
**原子性:**一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
官方文档对事务的定义:
事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。
事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。EXEC 命令负责触发并执行事务中的所有命令:如果客户端在使用 MULTI 开启了一个事务之后,却因为断线而没有成功执行 EXEC ,那么事务中的所有命令都不会被执行。另一方面,如果客户端成功在开启事务之后执行 EXEC ,那么事务中的所有命令都会被执行。
官方认为Redis事务是一个原子 ...
Redis-哨兵模式(Sentinel)
参考文献
《Redis开发与运维》
极客时间专栏: Redis核心技术与实战
为什么要引入哨兵模式?
Redis 的主从复制模式下,一旦主节点由于故障不能提供服务,需要手动将从节点晋升为主节点,同时还要通知客户端更新主节点地址,这种故障处理方式从一定程度上是无法接受的.
Redis 2.8 以后提供了 Redis Sentinel 哨兵机制来解决这个问题.
Redis Sentinel 是 Redis 高可用的实现方案.Sentinel 是一个管理多个 Redis 实例的工具,它可以实现对 Redis 的监控、通知、自动故障转移.
基本概念
名词
逻辑结构
物理结构
主节点(master)
Redis主服务/数据库
一个独立的Redis进程
从节点(slave)
Redis从服务/数据库
一个独立的Redis进程
Redis数据节点
主节点和从节点
主节点和从节点的进程
Sentinel节点
监控Redis数据节点
一个独立的Sentinel进程
Sentinel节点集合
若干Sentinel节点的抽象组合
若干Sentinel节点进程 ...
Excel处理遇到的问题
Excel导出设置标题格填充颜色setFillForegroundColor无效问题
123cellStyle.setFillForegroundColor(IndexedColors.YELLOW.getIndex());加上下面的属性就可以了cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
Excel设置全局文本类型
12345//创建默认的单元格默认文本样式CellStyle textCellStyle = book.createCellStyle();DataFormat dataFormat = book.createDataFormat();textCellStyle.setDataFormat(dataFormat.getFormat("@"));cellStyleMap.put("textCommon", textCellStyle);
Zookeeper面试题-Kafka相关(待重新整理)
参考文献
Kafka 常见面试题整理
Zookeeper简介
ZooKeeper 的数据是保存在节点上的,每个节点也被称为znode,znode 节点是一种树形的文件结构,它很像 Linux 操作系统的文件路径,ZooKeeper 的根节点是 /。
znode 根据数据的持久化方式可分为临时节点和持久性节点。持久性节点不会因为 ZooKeeper 状态的变化而消失,但是临时节点会随着 ZooKeeper 的重启而自动消失。
znode 节点有一个 Watcher 机制:当数据发生变化的时候, ZooKeeper 会产生一个 Watcher 事件,并且会发送到客户端。Watcher 监听机制是 Zookeeper 中非常重要的特性,我们基于 Zookeeper 上创建的节点,可以对这些节点绑定监听事件,比如可以监听节点数据变更、节点删除、子节点状态变更等事件,通过这个事件机制,可以基于 ZooKeeper 实现分布式锁、集群管理等功能。
Controller的选举
Kafka 当前选举控制器的规则是:Kafka 集群中第一个启动的 broker 通过在 ZooKeeper 里创 ...
Git学习笔记
Git
参考文献
Git Book
如何用git命令生成Patch和打Patch
哈希
哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:
①不管输入数据的数据量有多大,使用同一个哈希算法,得到的加密结果长度固定
②哈希算法确定,输入数据确定,输出结果保证不变
③哈希算法确定,输入数据有变化,输出结果一定有变化,而且通常变化很大
④哈希算法不可逆
⑤哈希算法中不区分英文大小写
哈希算法有很多种,如:MD5、SHA-1等.Git 底层采用的是 SHA-1 ,因为哈希算法可以被用来验证文件,Git 就是靠这种机制来从根本上保证数据完整性的
Git特点
直接记录快照,而并非差异比较
Git把数据看作是对小型文件系统的一组快照,每次提交更新或Git中保存项目状态时,Git主要对当时的全部文件制作一个快照并保存这个快照的索引.为了高效,如果文件没有修改,Git不再重新存储改文件,而是只保留一个链接指向之前存储的文件,Git对待数据更像一个快照流.
Git中文件的三种状态
已暂存(staged): 表示对一个已修改的文件的当前版本做了标记,使之 ...
JVM(一)-内存结构
参考文献
黑马程序员JVM完整教程,全网超高评价,全程干货不拖沓
深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)
轻松看懂Java字节码
JVM Internals
sizeof
高端面试必备:一个Java对象占用多大内存
JEP 0: JEP Index
JVM简述
Java Virtual Machine,Java程序的运行环境(Java二进制字节码的运行环境);
好处:
一次编写,到处运行
自动内存管理,垃圾回收机制
数组下标越界检查
Java 内存模型规定了 JVM 应该如何使用计算机内存(RAM).广义来讲, Java 内存模型分为两个部分:
JVM 内存结构
JMM 与线程规范
JVM内存结构
JVM 内部使用的Java内存模型, 在逻辑上将内存划分为线程栈(thread stacks)和堆内存 (heap)两个部分.
JVM 中,每个正在运行的线程,都有自己的线程栈. 线程栈包含了当前正在执行的方法链/调用链上的所有方法的状态信息.
线程栈上的和堆内存中的对象的存储情况:
如果是原生数据类型的局部变量,那么它 ...
设计模式-设计原则以及大纲
参考文献
Java设计模式精讲 Debug方式+内存分析
https://java-design-patterns.com/
https://geek-docs.com/design-pattern/design-principle/design-principle-index.html
前置知识
UML
UML (Unified Modeling Language) 统一建模语言
特点
UML是一种开放的方法;
用于说明,可视化,构建和编写一个正在开发的面向对象的软件密级系统的制品的开放方法;
UML2.2分类: 一共14中图示
结构式图形: 强调的是系统式的建模;
静态图
类图
对象图
包图
实现图
组件图
部署图
剖面图
复合结构图
行为式图形: 强调系统模型中触发的事件;
活动图
状态图
用例图
交互式图形: 属于行为式图形子集合,强调系统模型中资料流程.
通信图
时序图
交互概述图
时间图
类图
Class Diagram: 用于表示类,接口,实例等之间相互间的静态关系
UML箭头方向: 从子类指向父类
定义子类是需 ...
inside-the-linux-kernel
参考文献
inside the linux kernel
https://www.baeldung.com/linux/boot-process
https://www.freecodecamp.org/news/the-linux-booting-process-6-steps-described-in-detail/
The Linux Booting Process
BIOS and UEFI
首先,系统启动后,BIOS(基本输入/输出系统)或 UEFI(统一可扩展固件接口)程序就会启动.通常,BIOS 包含获得对主机设备的初始访问的所有代码:
keyboard 键盘
display screen 显示屏
disk drives 磁盘驱动器
serial communications 串行通讯
然而,一旦系统完全启动,大多数这些设备都会有专用的设备驱动程序接管.
BIOS 和 UEFI 是计算机用来启动操作系统 (OS) 的固件接口.然而,这两个程序在如何存储驱动器上和有关驱动器的元数据方面有所不同:
BIOS 使用主引导记录 (MBR)
MBR 代表主引导记 ...
Redis-面试题
Redis 面试题
参考文献
分布式系统架构面试题汇总(万字总结)
一张图搞懂Redis缓存雪崩、缓存穿透、缓存击穿
精选 21道 Redis 最常问面试题!收藏一波 !
Redis雪崩(大量失效)问题
描述
现象:大量key同一时间点失效,同时又有大量请求打进来,导致流量直接打在DB上,造成DB不可用.
缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,请求直接落到数据库上,引起数据库压力过大甚至宕机.和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库.
简单的雪崩过程
Redis集群产生了大面积故障;
缓存失败,此时仍有大量请求去访问Redis缓存服务器;
在大量Redis请求失败后,这些请求将会去访问数据库;
由于应用程序的设计依赖于数据库和Redis服务,很快就会造成服务器集群的雪崩,最终导致整个系统的瘫痪;
解决方案:
加互斥锁 :跟缓存击穿解决思路一致,同一时间只让一个线程构建缓存,其他线程阻塞排队.
缓存永不过期:设置key永不失效(热点数据);
均匀过期:设置key缓 ...