实习日志|知识总结

知识总结

    • SQL
        • [1. where和having](#1. where和having)
        • [2. 多表连接 & 逆向not in 筛选](#2. 多表连接 & 逆向not in 筛选)
        • [case when](#case when)
    • Shell
        • [cd 的用法](#cd 的用法)
        • scp和cp
        • [vi :创建/进入文件](#vi :创建/进入文件)
        • [source 运行脚本](#source 运行脚本)
        • 查看日志
        • 查看磁盘
    • webSocket

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
  1. 用于简单判断
  2. 判断条件
    如判断三角形:
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
  1. 结合聚合函数
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不计数

第三个同理

  1. 结合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测试工具
  1. 下载地址:
bash 复制代码
sudo curl -SL \
http://172.16.18.23:9003/files/tool/ws-tool-mac-universal \
-o /usr/local/bin/ws-tool
  1. 添加权限
bash 复制代码
sudo chmod +x /usr/local/bin/ws-tool
  1. 使用
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 可以:

  1. 从本地程序接收数据
  2. 转发给 Server
  3. Server 再广播给其他客户端
  • websocket client端 数据传输
    本地起一个server端:
bash 复制代码
ws-tool server --port 8881 --path /ws

然后 Server 可以:

  1. 接收其他程序的数据

  2. 主动生成数据

  3. 转发给所有连接的客户端

2025年最后一个月了,这是近期的小小总结,前面几天很闲就在刷sql,后面一下子就忙起来了,2025年有很多新的体验,也很幸运吧,希望2026年stella继续勇敢向前走,做对自己来说最正确却比较难走的路 ,一起顺顺利利!

相关推荐
weixin_462446232 小时前
【原创实践】使用 shell 脚本批量创建 Linux 用户并生成随机密码
linux·服务器·前端
可爱又迷人的反派角色“yang”2 小时前
redis知识点总集
linux·运维·数据库·redis·缓存
BullSmall2 小时前
Redis 性能调优(二)
数据库·redis·缓存
海奥华22 小时前
进程调度算法 笔记总结
linux·运维·服务器·笔记·学习
一顿操作猛如虎,啥也不是!2 小时前
SQL JOIN 类型对比:LEFT JOIN 与 INNER JOIN
数据库
梦幻精灵_cq2 小时前
Linux.date格式化标识“制作”极简台历 vs Python.datetime.strftime格式化“精美”日历牌(时间工具依情境选择也是一种“智慧)
linux·python
学习编程的Kitty2 小时前
Redis(1)——持久化
数据库·redis·mybatis
君子剑mango2 小时前
MySQL8.0 窗口函数
数据库·mysql