MySQL(十二)-分库分表
参考文献
MySQL:互联网公司常用分库分表方案汇总!
为什么要分表
不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就可以想象了吧(并发量、吞吐量、崩溃).
IO瓶颈
磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表.
网络IO瓶颈,请求的数据太多,网络带宽不够 -> 分库.
CPU瓶颈
SQL问题,如SQL中包含join,group by,order by,非索引字段条件查询等,增加CPU运算的操作 -> SQL优化,建立合适的索引,在业务Service层进行业务计算.
单表数据量太大,查询时扫描的行太多,SQL效率低,CPU率先出现瓶颈 -> 水平分表.
分库分表
水平分库
概念:
以字段为依据,按照一定策略(hash、range等),将一个库中的数据拆分到多个库中
将单张表的数据切分到多个服务器上去,每个服务器具有相应的库与表 ...
Linux-用户管理
参考文献
用户管理
useradd
新建用户
12345678910111213-c<备注>: 加上备注文字.备注文字会保存在passwd的备注栏位中;-d<登入目录>: 指定用户登入时的启始目录;-D: 变更预设值;-e<有效期限>: 指定帐号的有效期限;-f<缓冲天数>: 指定在密码过期后多少天即关闭该帐号;-g<群组>: 指定用户所属的群组;-G<群组>: 指定用户所属的附加群组;-m: 自动建立用户的登入目录;-M: 不要自动建立用户的登入目录;-n: 取消建立以用户名称为名的群组;-r: 建立系统帐号;-s<shell>: 指定用户登入后所使用的shell;-u<uid>: 指定用户id.
12345678910111213#-g: 加入主要组、-G: 加入次要组useradd –g sales jack –G company,employees # 新建用户并创建同名用户组,创建home目录,使用/bin/bash作为初始bash useradd -U -m -s /bi ...
Linux工具-VIM
参考文献
精通 VIM ,此文就够了
多模式文本编辑器
四种模式
正常模式(Normal-mode) 默认
正常模式一般用于浏览文件,也包括一些复制、粘贴、删除等操作.这时击键时,一些组合键就是 vim 的功能键,而不会在文本中键入对应的字符.
在这个模式下,我们可以通过键盘在文本中快速移动光标,光标范围从小到大是字符、单词、行、句子、段落和屏幕.启动 VIM 后默认位于正常模式.不论是什么模式,按一下 <Esc> 键 ( 有时可能需要按两下,插入模式按一下 Esc ,就会切换到正常模式,命令模式或者可视模式下执行完操作以后,就会自动进入正常模式,如果进入命令模式或者可视模式没有执行任何操作,按两下 Esc 即可 )都会进入正常模式.
插入模式(Insert-mode)
该模式下可以输入内容
按下i,l,o,O,a,A,R等任何一个字母之后才会进入插入模式
命令模式(Command-mode)
在正常模式中,按下:(冒号)键或者/ (斜杠),会进入命令模式.在命令模式中可以执行一些输入并执行一些 VIM 或插件提供的指令,就像在shell里一样.这些指令 ...
网络基础(一)-网络协议概述
参考文献
编程必备基础 大话HTTP协议[慕课]
趣谈网络协议
WireShark数据包分析实战(第三版)
TCP-RFC793
TCP/IP详解 卷1: 协议
图解网络-小林coding
UDP-RFC768
透视HTTP协议[极客时间]
什么是TCP/IP?-四张图解释TCP/IP四层协议模型
协议三要素
语法, 是解释控制信息每个部分的意义.就是这一段内容要符合一定的规则和格式.例如,括号要成对,结束要使用分号等.
语义,是用户数据与控制信息的结构与格式.就是这一段内容要代表某种意义.例如数字减去数字是有意义的,数字减去文本一般来说就没有意义.
顺序(时序),是对事件发生顺序的详细说明,就是先干啥,后干啥.例如,可以先加上某个数值,然后再减去某个数值.
OSI七层模型
OSI: “开放式系统互联通信参考模型”(Open System Interconnection Reference Model)OSI参考模型从下往上依次是:(物联网叔会试用)
物理层(Physical Layer):物理层复制传送比特(Bit),涉及到接口和传输媒体的机械,电气等特性. 比特 ...
Java-编程技巧
参考文献
Java获取资源路径
Java中获取资源时,经常使用class.getResource()和ClassLoader.getResource获取资源时,获取的是编译之后的class文件资源,而不是获取Java源码
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253package com.holelin.sundry.demo;import org.springframework.core.io.ClassPathResource;import java.io.File;import java.io.IOException;import java.nio.file.Files;import java.nio.file.Path;import java.util.stream.Stream;/** * @Description: * @Author: HoleLin * @CreateDate: 2020/7/29 15:24 * @U ...
工具-编程小技巧
参考文献
使用异或运算来进行数值交换操作
异或运算语法: 假设a和b不相等.
a^a=0;
a^b=1;
a^0=0;
异或运算满足交换律;
异或运算满足结合律;
123456// 进行异或运算 a = a ^ ba = a ^ b;// b = a ^ b ^ b = a ^ (b ^ b) = a ^ 0 ==> b = ab = a ^ b;// a = a ^ b ^ a = b ^ (a ^ a) = b ^ 0 ==> a = ba = a ^ b;
取中间值
前置条件: 数组区间[l,r],取该区间的中间值
使用l+((r-l)>>1)不使用(l+r)/2
SpringMVC-遇到的问题
参考文献
SpringMVC配置了编码过滤器中文依旧乱码
前置条件
1234567891011121314<!--配置解决中文乱码过滤器--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <!--初始化参数--> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characte ...
MySQL-遇到的问题
参考文献
8.2.1.19 LIMIT Query Optimization
数据库大小敏感问题
Oracle
默认是大小写不敏感,表名,字段名等不区分大小写,小写字母会自动转换为大写字母;
需要用小写字母时需要使用双引号或借助函数lower();
PostgreSQL
默认是大小写不敏感,表名,字段名等不区分大小写,大写字母会自动转换为小写字母;
需要用大写字母时需要使用双引号或借助函数upper();
SQLServer
默认是大小写不敏感;
MySQL
在Linux环境下数据库名,表名,列名,别名的大小写规则是这样的:
数据库名与表名是严格区分大小写的;
表的别名是严格区分大小的;
列名与列的别名在所有情况下均是忽略大小写的;
变量名也是严格区分大小写的;
在Windows环境下都是不区分大小写的
在不同操作系统中为了能是程序和数据库都能正常运行,最好的办法是在设计的时候都转为小写,但是如果在设计的时候已经规范大小写了,那么可以在MySQL配置文件中my.ini中的[mysqld]中增加一行low_case_table_names=1
0: ...
Linux-备份压缩
参考文献
Compressing and decompressing files under Linux
Linux的备份压缩
最早的Linux备份介质是磁带,使用的命令是tar;
可以打包的磁带文件进行压缩存储,压缩命令是gzip和bzip2;
经常使用的扩展名是:.tar.gz,.tar.bz2,.tgz
常见的压缩后缀
*.Z compress 程序压缩的档案;
*.bz2 bzip2 程序压缩的档案;
*.gz gzip 程序压缩的档案;
*.tar tar 程序打包的数据,并没有压缩过;
*.tar.gz tar 程序打包的档案,其中并且经过 gzip 的压缩
tar格式
注意tar是打包,不是压缩
1Format: tar [primary option + secondary option] file or directory
Primary options(主要选项): they cannot be present at the same time, telling tar what to do is mandatory
...
Linux-文件和目录管理
参考文献
鸟哥的Linux私房菜基础学习篇(第四版)
目录和路径
相对路径和绝对路径
绝对路径: 路径的写法一定由根目录/写起,例如/usr/share/doc这个目录;
相对路径: 路径的写法不是由/写起,例如由cd ../home
目录的相关操作
.: 代表此层目录;
..: 代表上一层目录;
-: 代表前一个工作目录;
~: 代表目前使用者身份所在的家目录;
~holelin: 代表holelin这个使用者的家目录
cd: (change directory)切换目录
pwd: (print working directory)显示当前目录
mkdir: (make directory)建立一个新目录
rmdir: 删除一个空目录
文件与目录管理
ls: 文件与目录的查看
123ls [-aAdfFhilnrRSt] 文件名或目录名称ls [--color={never,auto,always}] 文件名或目录名称ls [--full-time] 文件名或目录名称
-a: 全部的文件,连同隐藏文件一起列出来
-A: 全部的文件,连同隐 ...