go,chromedp手动计算页面高度全屏截图的实现
AI利器:免费领AI搜索鼻祖perplexity的年卡会员
本文字数: 249 阅读时长 ≈ 1 分钟
手慢无,免费领Perplexity年卡会员 网址:https://www.perplexity.ai/join/p/redeem
验证码:PPLXLIUMBLHOTVAJ2QI
记得用美国的节点。
免费领AI搜索鼻祖perplexity的年卡会员,价值200美刀。
推荐订阅
推荐并获得专业版$10的折扣,推荐给一个朋友,你们俩都可以获得折扣。赠送$10,得到$10。
每推荐一位订阅者,你的下一个计费周期可以减免$10,他们也可以减免$10。你可以推荐尽可能多的人,折扣会在每个计费周期内自动获取一次。
译|Go 不再修改错误处理的语法
This Go blog post discusses the history and reasons behind the Go team's decision to stop pursuing syntactic language changes for error handling.Go 语言的错误处理,与众不同,报错会单独返回一个值,这导致代码冗余。多年来,使用者一直要求有更好的写法,Go 团队想了很多办法,效果都不好。现在,官方终于宣布,不再寻求更好的写法,保持现状。
The last six months in LLMs, illustrated by pelicans on bicycles
The last six months in LLMs, illustrated by pelicans on bicycles.
译|NLWeb 协议简介
NLWeb creates a standard protocol that turns any website into a conversational interface that both humans and AI agents can query naturally. It leverages Schema.org structured data and includes built-in support for MCP.NLWeb 是微软新提出的一个接口协议,类似于 MCP 协议,是网站跟 AI 大模型的对话协议,方便大模型从网站获取数据。本文是这个协议的简介。
译|Cline Rules
了解如何使用 Cline 规则为 Cline 提供系统级指导,确保一致的行为、项目特定标准,并在您的项目中维护机构知识。
译|Cline Workflows
Learn how to create and use workflows in Cline to automate repetitive tasks
Go|如何在gorm中使用Distinct
用一个简单的例子讲解如何在gorm中使用Distinct
linux | 使用 journalctl 查询 systemd 日志
本文字数: 1.9k 阅读时长 ≈ 2 分钟
journalctl 是 Linux 系统上用于查询和管理 systemd 日志的命令行工具。 它提供了一种强大的方式来访问、过滤和分析系统日志,这对于诊断问题、监控系统性能以及审计安全事件至关重要。
以下是 journalctl 的一些主要作用和用法:
1. 查看系统日志:
查看所有日志:
1
journalctl
这将显示自系统启动以来的所有日志消息。
查看最近的日志:
1
journalctl -n <数量>
例如,
journalctl -n 10显示最近的 10 条日志消息。实时查看日志 (类似于
tail -f):1
journalctl -f
实时显示新的日志消息,直到按下 Ctrl+C。
2. 基于时间过滤日志:
查看特定时间后的日志:
1
2
3
4journalctl --since "<日期时间>"
journalctl --since "today"
journalctl --since "yesterday"
journalctl --since "2023-10-27 10:00:00"查看特定时间之前的日志:
1
2
3journalctl --until "<日期时间>"
journalctl --until "tomorrow"
journalctl --until "2023-10-27 12:00:00"查看特定时间范围内的日志:
1
journalctl --since "2023-10-27 08:00:00" --until "2023-10-27 18:00:00"
3. 基于单元 (Unit) 过滤日志:
查看特定服务的日志:
1
2journalctl -u <单元名称>
journalctl -u nginx.service查看特定进程的日志 (通过 PID):
1
2journalctl _PID=<进程ID>
journalctl _PID=1234查看特定用户启动的单元的日志:
1
2journalctl --user-unit <单元名称>
journalctl --user-unit myapp.service
4. 基于优先级 (Priority) 过滤日志:
查看特定优先级的日志:
1
journalctl -p <优先级>
优先级包括:
emerg(紧急)alert(警报)crit(严重)err(错误)warning(警告)notice(注意)info(信息)debug(调试)
例如,查看所有错误和更严重级别的日志:
1
journalctl -p err
查看特定优先级及以上级别的日志:
1
2journalctl -p err..crit # 错误级别到严重级别
journalctl -p err+ # 错误级别及以上级别 (包括严重,警报,紧急)
5. 基于内核日志:
查看内核日志:
1
journalctl -k
查看特定时间的内核日志:
1
journalctl -k --since "yesterday"
6. 输出格式化:
以短格式输出 (默认):
1
journalctl
以详细格式输出:
1
journalctl -o verbose
以 JSON 格式输出:
1
journalctl -o json
以 JSON-pretty 格式输出:
1
journalctl -o json-pretty
以导出格式输出 (二进制,可用于传输):
1
journalctl -o export
以猫格式输出 (最小化信息,适合管道传输):
1
journalctl -o cat
7. 其他功能:
显示磁盘空间使用情况:
1
journalctl --disk-usage
清理旧日志 (归档):
1
2journalctl --vacuum-time=2weeks # 删除两周前的日志
journalctl --vacuum-size=1G # 保留 1GB 的日志设置日志持久化 (如果
/var/log/journal目录不存在,则创建):1
2sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald重启服务后,systemd-journald 将持久化日志到磁盘。
总结:
journalctl 是一款非常强大的工具,它可以帮助你:
- 诊断系统问题和应用程序错误。
- 监控系统性能和资源使用情况。
- 审计安全事件。
- 跟踪系统启动和关闭过程。
- 了解系统的行为和状态。
熟练使用 journalctl 是 Linux 系统管理员和开发人员的一项重要技能。 通过各种选项,你可以精确地筛选和分析系统日志,从而快速定位和解决问题。 使用 man journalctl 命令查看完整的文档和选项列表。
rank是mysql关键字吗,怎么用
RANK 在 MySQL 8.0 及更高版本中是关键字,它是一个窗口函数,用于计算行在一组结果集中的排名。
RANK() 函数的语法:
1 | RANK() OVER ( |
解释:
RANK(): 这是窗口函数本身。OVER(): 指定窗口函数的操作方式。PARTITION BY column1, column2, ...: (可选) 将结果集分成多个分区。RANK()函数将在每个分区内独立计算排名。 如果没有指定PARTITION BY子句,则整个结果集被视为一个分区。ORDER BY column3 [ASC | DESC], column4 [ASC | DESC], ...: 指定每个分区内数据的排序方式。RANK()函数基于此排序来计算排名。ASC表示升序(默认),DESC表示降序。
RANK() 函数的工作原理:
RANK() 函数会为每个分区(或整个结果集,如果没有 PARTITION BY 子句)中的每一行分配一个排名。 排名是基于 ORDER BY 子句指定的排序顺序计算的。 如果有多行具有相同的排序值,它们将获得相同的排名,并且下一个排名将会跳过相同的数量。
示例:
假设我们有一个名为 employees 的表,包含以下数据:
| employee_id | employee_name | department | salary |
|---|---|---|---|
| 1 | Alice | Sales | 60000 |
| 2 | Bob | Sales | 70000 |
| 3 | Charlie | Marketing | 55000 |
| 4 | David | Marketing | 55000 |
| 5 | Eve | Sales | 70000 |
| 6 | Frank | Marketing | 80000 |
1. 计算所有员工的薪水排名:
1 | SELECT |
结果:
| employee_id | employee_name | salary | salary_rank |
|---|---|---|---|
| 6 | Frank | 80000 | 1 |
| 2 | Bob | 70000 | 2 |
| 5 | Eve | 70000 | 2 |
| 1 | Alice | 60000 | 4 |
| 3 | Charlie | 55000 | 5 |
| 4 | David | 55000 | 5 |
注意:Bob 和 Eve 具有相同的薪水,因此它们都获得了排名 2。下一个排名是 4,跳过了 3。 Charlie和David工资相同,排名也相同,下一个排名是6.
2. 计算每个部门内员工的薪水排名:
1 | SELECT |
结果:
| employee_id | employee_name | department | salary | department_salary_rank |
|---|---|---|---|---|
| 6 | Frank | Marketing | 80000 | 1 |
| 3 | Charlie | Marketing | 55000 | 2 |
| 4 | David | Marketing | 55000 | 2 |
| 2 | Bob | Sales | 70000 | 1 |
| 5 | Eve | Sales | 70000 | 1 |
| 1 | Alice | Sales | 60000 | 3 |
注意: PARTITION BY department 子句将员工分成 Sales 和 Marketing 两个分区。 RANK() 函数分别在每个分区内计算薪水排名。 Bob 和 Eve 在 Sales 部门内具有相同的薪水,因此都获得了排名 1。 Charlie和David在Marketing部门内工资相同,因此都获得排名2.
RANK(), DENSE_RANK(), ROW_NUMBER() 的区别:
RANK(): 如果有多行具有相同的排序值,它们将获得相同的排名,并且下一个排名将会跳过相同的数量。 例如:1, 2, 2, 4, 5, 5, 5, 8…DENSE_RANK(): 如果有多行具有相同的排序值,它们将获得相同的排名,但下一个排名不会跳过。 例如:1, 2, 2, 3, 4, 4, 4, 5…ROW_NUMBER(): 为结果集中的每一行分配一个唯一的序列号,从 1 开始。 即使多行具有相同的排序值,它们也会获得不同的排名。 例如: 1, 2, 3, 4, 5, 6, 7, 8…
何时使用 RANK():
当你想知道某个值在一组值中的相对位置,并且需要处理具有相同值的行时,可以使用 RANK()。 常见用例包括:
- 确定前 N 名学生、产品或员工。
- 比较不同类别中的值。
- 创建排行榜。
总结:
RANK() 是一个强大的窗口函数,可用于计算 MySQL 结果集中行的排名。 通过 PARTITION BY 和 ORDER BY 子句,你可以灵活地定义如何计算排名。 了解 RANK(), DENSE_RANK() 和 ROW_NUMBER() 之间的区别,可以帮助你选择最适合特定需求的函数。