Linux工具-lsof
参考文献
https://wangchujiang.com/linux-command/c/lsof.html
lsof
lsof命令 用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP).找回/恢复删除的文件.是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行.
在Linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口.因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过sof工具能够查看这个列表对系统监测以及排错将是很有帮助的.
基础用法
12345678910111213141516171819202122232425262728293031323334353637lsof [选项]lsof 4.89 latest revision: ...
Linux工具-netstat
参考文献
netstat
12345678910111213[root@linux ~]# netstat -[rn] <==与路由有关的参数 [root@linux ~]# netstat -[antulpc] <==与网络接口有关的参数 参数: 与路由(route) 有关的参数说明: -r : 列出路由表(route table),功能如同 route 这个指令;-n : 不使用主机名称与服务名称,使用 IP 与 port number ,如同 route -n 与网络接口有关的参数: -a : 列出所有的联机状态,包括 tcp/udp/unix socket 等; -t : 仅列出 TCP 封包的联机;-u : 仅列出 UDP 封包的联机;-l : 仅列出有在 Listen(监听) 的服务之网络状态; -p : 列出 PID 与 Program 的檔名;-c : 可以设定几秒钟后自动更新一次,例如 -c 5 每五秒更新一次网络状态的显示;
-i展示网络接口信息
1234567891011121314151617181920212223 ...
知识点-ZIP格式
参考文献
ZIP文件结构解析
Java-Cron表达式
参考文献
Spring cron
123456789101112131415161718192021例子: # 每月的最后1天 @Scheduled(cron = "0 0 18 28-31 * ?") public void doAtLastDayOfMonth() { final Calendar calendar = Calendar.getInstance(); if (c.get(Calendar.DATE) == c.getActualMaximum(Calendar.DATE)) { // do something here... } } 说明: Java(Spring) * * * * * * - - - - - - | | | | | | | | | | | +-- ...
MyBatis-遇到的问题
参考文献
多表关联+多表多条件查询+分页的问题
表结构
123456789101112131415161718192021222324252627282930313233343536373839404142mysql> desc sys_user;+--------------------+--------------+------+-----+-------------------+-------------------+| Field | Type | Null | Key | Default | Extra |+--------------------+--------------+------+-----+-------------------+-------------------+| id | bigint | NO | PRI | NULL | auto_increment || user_id ...
MySQL-Window Functions
参考文献
14.20 Window Functions
Window Functions
语法
123456789101112131415161718192021222324252627282930313233over_clause: {OVER (window_spec) | OVER window_name} window_spec: [window_name] [partition_clause] [order_clause] [frame_clause] partition_clause: PARTITION BY expr [, expr] ... order_clause: ORDER BY expr [ASC|DESC] [, expr [ASC|DESC]] ...frame_clause: frame_units frame_extentframe_units: {ROWS | RANGE} frame_extent: {frame_start | ...
MySQL Tools-Percona Toolkit
参考文献
千金良方: MySQL性能优化金字塔法则
https://docs.percona.com/percona-toolkit/installation.html
Percona Toolkit
pt-query-digest
使用pt-query-digest工具可以通过慢查询日志、普通查询日志、binlog对MySQL中的查询语句进行分析,也可以通过SHOW PROCESSLIST语句输出信息,以及tcpdump 抓取的MySQL协议数据对MySQL中的查询语句进行分析.
解析慢查询日志
1# pt-query-digest 54be3b45aab9-slow.log > slow-report.log
MySQL-JOIN优化
参考文献
MySQL技术内幕 SQL编程 姜承尧
JOIN算法
当联接的表上有索引,Nestd-Loops Join是非常高效的算法.根据B+树的特性,其联接的时间复杂度为O(N)O(N)O(N),若没有索引,则可视为最坏的情况,时间复杂度为O(N2)O(N^2)O(N2)
在选择JOIN算法时,会有优先级,理论上会优先判断能否使用INLJ、BNLJ(MySQL内部优化后,基本上不会出现Simple Nested-Loop Join):
Index Nested-LoopJoin > Block Nested-Loop Join > Simple Nested-Loop Join
Simple Nested-Loop Join(笛卡尔积)
最简单的JOIN算法及外循环读取一行数据,根据关联条件列到内循环中匹配关联,在这种算法中,我们通常称外循环表为驱动表,称内循环表为被驱动表
简单嵌套循环连接实际上就是简单粗暴的嵌套循环,如果table1有NNN万条数据,table2有MMM万条数据,那么数据比较的次数=N∗MN*MN∗M,这种查询效率会非常慢 ...
MySQL-排序优化
参考文献
Order By实现原理
利用有序索引获取有序数据
在使用explain分析查询的时候,利用有序索引获取有序数据显示Using index
文件排序
在使用explain分析查询的时候,利用有序索引获取有序数据显示Using filesort
文件排序算法
回表排序模式:是首先根据相应的条件取出相应的排序字段和可以直接定位行数据的行指针信息,然后在sort buffer中进行排序.
不回表排序模式:是一次性取出满足条件行的所有字段,然后在sort buffer中进行排序.
MySQL主要通过比较我们所设定的系统参数max_length_for_sort_data的大小和Query语句所取出的字段类型大小总和来判定需要使用哪一种排序算法.
如果max_length_for_sort_data更大,则使用第二种优化后的算法,反之使用第一种算法.
所以如果希望ORDER BY操作的效率尽可能的高,一定要注意max_length_for_sort_data 数的设置
12345678mysql> show variables like ...
Linux工具-watch
参考文献
Linux watch命令教程:如何实时监控命令输出(附实例详解和注意事项)
watch
watch 是一个非常实用的命令,它可以帮助用户定时执行一个程序或命令,并将结果输出到终端。这个命令通常用于周期性地监视某个命令的输出结果,例如监控系统资源的使用情况、查看目录内容的变化等。通过使用 watch,你可以实时地了解到命令输出的动态变化
基本语法
1watch [option] 命令
常用选项或参数说明
选项
描述
-d
高亮显示变化的部分
-n
设置刷新间隔,以秒为单位
-t
不显示标题栏,包含时间和刷新间隔
--help
显式帮助信息
-v
显示版本信息
示例
基础使用
12# 每隔2秒刷新一次datewatch -n 2 date
监控某个服务的状态
1watch -n 5 systemctl status nginx