Linux-文本查看命令
参考文献
cat
文本内容显示到终端
1cat demo.yml
tac
文本反向显示到终端
head
查看文件开头
12head demo.ymlhead -5 demo.yml
tail
查看文件结尾
常用参数-f文件内容更新后,显示信息同步更新
wc
统计文件内容信息
1wc -l demo.yml
grep
检索文本内容
1grep -i "待查询的字符串信息" filename
说明:grep能在文件中检索特定内容
-i:大小写敏感
-A/-B/-C <N>:顺带显示前后文,-A表示后面 N 行,-B表示前面 N 行,-C表示前后各 N 行
-E:使用正则表达式来匹配
-v:反选(输出不匹配的行)
-l:只输出能匹配到内容的文件名
-F:不要将检索内容视为正则表达式
-r:递归匹配目录下所有文件的内容
-o:只输出匹配上了的部分(而不是整行)
-a:也对二进制文件进行检索,而不是忽略它们!
nl
添加打印行号
12345678910# nl [-bnw] 档案 参数:-b :指定行号指定的方式,主要有两 ...
Linux(二)-文件/目录权限管理
参考文献
鸟哥的Linux私房菜基础学习篇(第四版)
权限的概念
文件拥有者
用户组
每个账号都可以有多个用户组的支持
其他人
在Linux中,任何一个文件都具有用户(User),所属群组(Group)以及其他人(Others);
Linux用户身份与用户组记录
默认情况下,所有的系统上的账号与一般身份用户的相关信息都记录在/etc/passwd这个文件内,个人密码则是记录在/etc/shadow这个文件中,Linux所有的组名都记录在/etc/group中
Linux文件属性
使用ls -al显示的文件列表信息
123456789101112[root@holelin holelin]# ls -altotal 32drwx------ 3 holelin holelin 4096 May 25 23:34 .drwxr-xr-x. 5 root root 4096 Mar 4 11:09 ..-rw------- 1 holelin holelin 783 May 24 23:33 .bash_history-rw-r--r-- 1 h ...
Linux-基础
参考文献
鸟哥的Linux私房菜基础学习篇(第四版)
基础命令
显示日志与时间: date
显示日历: cal
计算器: bc
注销: logout
帮助命令:
man <command> : DATE(1)
代号
说明
1
用户在Shell环境中可以操作的命令或者可执行文件
2
系统内核可调用的函数与工具等
3
一些常用的函数(function)与函数库(library),大部分为C的函数库(libc)
4
设备文件的说明,通常在/dev下的文件
5
配置文件或是某些文件的格式
6
游戏(games)
7
惯例与协议等.例如Linux文件系统,网络协议,ASCII代码等的说明
8
系统管理员可使用的管理命令
9
跟内核有关的文件
<command> --help
info <command>
说明文档路径: /usr/share/doc/
获取终端支持的语系数据库:
echo $LANG
locale
1234567891011121314L ...
MySQL(十)-事务
参考文献
极客时间–MySQL实战45讲(林晓斌)
极客时间–SQL必知必会(陈旸)
解决死锁之路 - 学习事务与隔离级别
MySQL日志15连问,redo log与biglog
数据库事务隔离发展历史
MVCC 原理
图文解读MySQL InnoDB Undo log
The basics of the InnoDB undo logging and history system
ACID
Atomicity原子性
事务是最小的执行单位,不允许分割.事务的原子性确保动作要么全部完成,要么完全不起作用;
Consistency 一致性
一致性指事务将数据库从一种状态变为下一种一致的状态.在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏.
例如数据库表中有个字段有唯一性约束,事务中对该字段进行了修改,但在事务提交或事务操作发生回滚后,该字段的值变得不唯一了,这就破坏了事务的一致性要求,即事务将数据库从一种状态变为了一种不一致的状态.
事务的一致性的单位,如果事务中某个动作失败了,系统可以自动撤销事务–返回初始化的状态.
Isolation 隔离性
...
数据结构-延迟队列
参考文献
一口气说出 6种 延时队列的实现方法,面试官也得服
延迟队列浅析
延迟队列概念
顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费
使用场景
有效期:限时活动、拼团等
超时处理:取消超时未支付订单、超时自动确认收货等
延迟处理:机器人点赞/观看数/评论/关注、等待依赖条件等
重试:网络异常重试、打车派单、依赖条件未满足重试等
定时任务:智能设备定时启动等
具体实现
DelayQueue延迟队列
JDK 中提供了一组实现延迟队列的API,位于Java.util.concurrent包下DelayQueue。
DelayQueue是一个BlockingQueue(无界阻塞)队列,它本质就是封装了一个PriorityQueue(优先队列)。
PriorityQueue内部使用完全二叉堆来实现队列元素排序,我们在向DelayQueue队列中添加元素时,会给元素一个Delay(延迟时间)作为排序条件,队列中最小的元素会优先放在队首。队列中的元素只有到了Delay时间才允许从队列中取出。队列中可以 ...
Nginx-使用场景
参考文献
全面了解 Nginx 主要应用场景
彻底搞懂 Nginx 的五大应用场景
Nginx主要使用场景
反向代理
负载均衡
HTTP服务器(包含动静分离)
正向代理
反向代理
反向代理应该是Nginx使用最多的功能了,**反向代理(Reverse Proxy)**方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器.
简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟真实服务器在同一个网络环境,当然也可能是同一台服务器,端口不同而已;
反向代理通过proxy_pass指令来实现.
1234567891011121314server { listen 80; server_name localhost; client_max_body_size 1024M; location / { p ...
工具-正则表达式
参考文献
精通正则表达式第三版 Jeffrey E.F Friedl著
学习正则表达式 [美]Micbael Fitzgerald
校验网址
https://regex101.com/
https://www.regexlib.com/
元字符
元字符
特殊含义
.
匹配除换行符以外的任意字符
^
匹配字符串的开始位置
$
匹配字符串的结束位置
*
匹配前面的元素零次或多次
+
匹配前面的元素一次或多次
?
匹配前面的元素零次或一次
\
转义字符,用于转义特殊字符
[]
字符类,匹配方括号内的任意字符
()
分组,用于捕获或分组匹配
{}
限定符,指定匹配的次数
`
`
\d
数字字符,等同于[0-9]
\w
单词字符,等同于[a-zA-Z0-9_]
\s
空白字符,包括空格、制表符、换行符等
\b
单词边界,匹配单词的开始或结束位置
量词
量词
说明
{n}
在它之前的元素必须出现n次
{m,n}
在它之前的元素最少出现m次 ...
数据结构-阻塞队列
参考文献
什么是队列
队列是一种特殊的线性表;
特殊之处在于,它只允许在表的前端(Front)进行删除操作,在表的后端(Rear)进行插入操作;
和栈一样是一种操作受限的线性表;
是一种先进先出(FIFO的数据结构;
什么是阻塞队列
当队列为空时,消费者挂起,队列已满是,生产者挂起,这就是生产者-消费者模型,阻塞就是将线程挂起.若生产者的生产速度和消费者速度之间不匹配,就可以通过阻塞队列让速度快的暂时阻塞.
阻塞队列会通过挂起的方式来实现生产者和消费者之间的平衡,这是和普通队列最大的区别;
Java中的阻塞队列java.util.concurrent.BlockingQueue
Throws Exception
Special Value
Blocks
Times Out
Insert
add(e)
offer(e)
put(e)
offer(e,time,unit)
Remove
remove(e)
poll()
take()
poll(time,unit)
Examine
element()
peek()
offer(E e): 若队列没 ...
Java基础-BigDecimal使用
参考文献
BigDecimal概述
BigDecimal是Java在java.match包中提供的API类,主要用来对超过16位有效位的数进行精确的运算.
双精度浮点型变量double可以处理16位有效数,但在实际引用中,可能需要对更大或者更小的数进行运算和处理;
一般情况对于那些不需要精确计算精度的数字,可以直接使用Float和Double来处理,但是使用Float.valueOf(String)和Float.valueOf(String)会丢失经,所以面对需要精确计算的结果,则必须使用BigDecimal类来操作;
BigDecimal所创建的是对象,所以不能使用传统的+,-,*,/等运算符直接对对象进行数学运算,而必须调用其对应的方法,方法的参数也必须是BigDecimal的对象.
BigDecimal常用的构造函数
BigDecimal(int): 创建一个具有参数所指定整数值的对象
BigDecimal(double): 创建一个具有参数所指定双精度值的对象
BigDecimal(long): 创建一个具有参数所指定长整型数值的对象
BigDecimal( ...
缓存设计
参考文献
300分钟吃透分布式缓存
七大缓存经典问题
缓存和数据库一致性问题,看这篇就够了
七大缓存经典问题
缓存穿透(一穿到底)
原因分析
缓存穿透存在的原因:用户请求的数据在缓存中和数据库中都不存在,不断发起这样的请求,给数据库带来巨大压力
如用户访问的是一个不存在的 key,查 DB 返回空(即一个 NULL),那就不会把这个空写回 cache.那以后不管查询多少次这个不存在的 key,都会Cache Miss,都会查询 DB.整个系统就会退化成一个 “前端 + DB“的系统,由于 DB 的吞吐只在Cache 的 1%~2% 以下,如果有特殊访客,大量访问这些不存在的 key,就会导致系统的性能严重退化,影响正常用户的访问.
缓存穿透会发⽣在什么时候呢?⼀般来说,有两种情况
业务层误操作:缓存中的数据和数据库中的数据被误删除了,所以缓存和数据库中都没有数据;
恶意攻击:专⻔访问数据库中没有的数据。
处理办法
验证拦截
接口层进行校验拦截,对于一些可预知的非法参数进行拦截,如查询ID字段,传入的值为负值的情况;
回种空值
查询这些不存在的数据时 ...