知识总结
SQL
1. where和having
WHERE 在分组前过滤行,而 HAVING 在分组后过滤组
having一般和聚合函数一起使用,聚合结果(如总和、平均值、计数等)来筛选最终结果

sql
select
actor_id
,director_id
from ActorDirector
group by actor_id,director_id
having count(*)>=3;
此处having是在筛选分组的条件,count(*)不是计算总条数而是该分组的条数
2. 多表连接 & 逆向not in 筛选

找出没有任何与名为 "RED" 的公司相关的订单的所有销售人员的姓名。

方法一
sql
SELECT
s.name AS name
FROM SalesPerson s
LEFT JOIN Orders o ON s.sales_id = o.sales_id
LEFT JOIN Company c ON o.com_id = c.com_id
GROUP BY s.name
HAVING SUM(IF(c.name = "RED",1,0)) = 0
ORDER BY s.sales_id;
方法二:
sql
select
name
from SalesPerson
where sales_id not in
(select
a.sales_id as sales_id
from Orders a
left join Company b on a.com_id = b.com_id
where b.name = "RED");
case when
- 用于简单判断

- 判断条件
如判断三角形:
sql
select
x
,y
,z
,case when x+y>z and x+z>y and y+z>x then "Yes"
else "No"
end as triangle
from Triangle
- 结合聚合函数
sql
SELECT
department,
COUNT(*) AS total_employees,
COUNT(CASE WHEN salary > 8000 THEN 1 END) AS high_salary_count,
COUNT(CASE WHEN salary <= 3000 THEN 1 END) AS low_salary_count
FROM employees
GROUP BY department;
第一个count(*) 计算表中数据
第二个判断salary > 8000 然后case返回1,count计数;不符合条件case返回null,count不计数
第三个同理
- 结合update
例如:变更性别
sql
update Salary
set sex =
case when sex="m" then "f"
else "m"
end;
-- update Salary
-- set sex =
-- case when sex="m" then "f"
-- when sex="f" then "m"
-- end;
Shell
cd 的用法
到当前目录下的某个文件
cd logs/ (加不加/都可以)
cd pwd (查看所在的绝对路径)

~ - 表示当前在家目录(这里是 /home/deploy 的简写)
$ - 普通用户权限(如果是 # 表示root用户)

可以使用cd 直接到达某个绝对路径下

scp和cp
cp是在本地一台机器操作,不需要网络连接和认证
scp是安全传输,跨机器,需要网络连接、加密和认证的
cp简单的进行本地文件拷贝,而一般一个平台有多个服务器,开发和测试等,需要跨服务器进行拷贝,就要用到scp
- cp:
shell
# 基本语法
cp [选项] 源文件 目标文件
cp [选项] 源文件... 目标目录
# 示例
cp file1.txt file2.txt # 复制文件
cp file1.txt /home/user/ # 复制到目录
cp -r dir1/ dir2/ # 递归复制目录
cp *.txt ~/documents/ # 复制多个文件
- scp:
在更新脚本前需要将新的脚本复制一遍
shell
# 基本语法
scp [选项] [用户@]主机:源文件 [用户@]主机:目标文件
# 当前所在172.16.18.34环境上,复制文件到172.16.18.35
# 从本地到远程。目标文件地址
scp xxx.sql deploy@172.16.18.35:/data/update/1110
# 当前所在172.16.18.35环境上,从172.16.18.34复制
# 从远程到本地。源文件地址
scp deploy@172.16.18.34:/opt/workspace/batch-server/data/
vi :创建/进入文件
shell
vi application.properties
1⃣️然后i进行编辑模式
2⃣️需要查看某个配置是否存在
shell
/要查找的字段 # 按 / 然后输入内容,按 Enter 搜索
n # 查找下一个匹配项
N # 查找上一个匹配项
3⃣️点击esc然后输入 :wq保存并退出
source 运行脚本
在数据库中使用,会读取sql里的内容并按顺序执行脚本中sql语句
bash
source XXX.sql
查看日志
在执行代理服务器上, tail -f 日志的地址
查看磁盘
当部署环境报错:no space
查看系统磁盘
bash
df - h
webSocket
WebSocket 是一种全双工通信协议,允许客户端和服务器之间建立持久连接,实现双向实时通信
- 需要用websocket测试工具
- 下载地址:
bash
sudo curl -SL \
http://172.16.18.23:9003/files/tool/ws-tool-mac-universal \
-o /usr/local/bin/ws-tool
- 添加权限
bash
sudo chmod +x /usr/local/bin/ws-tool
- 使用
bash
Usage:
ws-tool server --port 8881 --path /ws
ws-tool client --url ws://localhost:8080/ws --local-port 30001
- websocket server端 数据传输
本地起一个client端:
bash
ws-tool client --url ws://localhost:8080/ws --local-port 30001
然后 Client 可以:
- 从本地程序接收数据
- 转发给 Server
- Server 再广播给其他客户端
- websocket client端 数据传输
本地起一个server端:
bash
ws-tool server --port 8881 --path /ws
然后 Server 可以:
-
接收其他程序的数据
-
主动生成数据
-
转发给所有连接的客户端
2025年最后一个月了,这是近期的小小总结,前面几天很闲就在刷sql,后面一下子就忙起来了,2025年有很多新的体验,也很幸运吧,希望2026年stella继续勇敢向前走,
做对自己来说最正确却比较难走的路,一起顺顺利利!