问题记录¶
编程相关¶
heartbeat 设置为 10 的作用¶
技术栈:RabbitMQ, AMQP 场景:消息队列连接管理 类型:配置说明
如果将 heartbeat 设置为10,那么客户端会每10秒向服务器发送一次心跳消息。心跳消息用于检测连接是否仍然有效。
在 AMQP 协议中,心跳是一种机制,用于检测和保持连接的活跃性。如果服务器在一定时间内没有收到心跳消息,它会认为连接已经断开,然后关闭连接。通过设置心跳时间,客户端可以告诉服务器每隔多长时间发送一次心跳消息,从而保持连接的活跃状态。
在 RabbitMQ 中,heartbeat 选项用于设置心跳间隔。如果 heartbeat 设置为 10,那么客户端会每 10 秒向服务器发送一次心跳消息。这样可以确保连接保持活跃,并避免由于网络延迟或其他原因导致的连接中断。
需要注意的是,heartbeat 的设置取决于你的具体需求和网络环境。如果网络环境不稳定,或者服务器的处理能力有限,那么过高的 heartbeat 值可能会导致不必要的网络流量和服务器负载。因此,在设置 heartbeat 时,需要根据实际情况进行权衡和调整。
文件变化自动重新加载¶
技术栈:开发工具, IDE 场景:开发环境代码热更新 类型:功能说明
"Detected change in 'D:\DeskTop\TopProfile\douyinspider_tv22\weibo_utils\weibo.py', reloading"
意思是,程序或系统检测到了该文件发生了变化(可能是被修改或更新),因此它正在重新加载或重新运行这个文件。
这种情况通常出现在开发环境中,当开发者修改了代码文件后,IDE(集成开发环境)或相关工具会检测到文件的变化,并自动重新加载代码以反映这些变化。这使得开发者能够立即看到他们所做的更改是如何影响程序的,而不需要手动重新启动程序。
os.path.basename(file) 的作用¶
技术栈:Python 场景:文件路径操作 类型:API 说明
os.path.basename(file) 在 Python 中是一个常见的表达式,它的作用是获取当前正在执行的 Python 文件的名称。
具体来说: - os.path 是 Python 的 os 模块中的一个子模块,它提供了与操作系统交互的方法 - os.path.basename 是 os.path 子模块中的一个函数,它接受一个路径作为参数,并返回该路径的最后一部分,也就是文件或目录的名称 - file 是一个内置的 Python 变量,它表示当前 Python 脚本的路径
例如,如果你的脚本路径是 /home/user/scripts/myscript.py,那么 os.path.basename(file) 的值将是 'myscript.py'。
QoS(Quality of Service)¶
技术栈:RabbitMQ, MQTT, pika 场景:消息队列服务质量控制 类型:原理说明
pika 是一个用于 RabbitMQ 的 Python 客户端库。在 AMQP(高级消息队列协议)中,channel.basic_qos 方法用于设置消息的 QoS(Quality of Service,服务质量)级别。
参数 prefetchcount 在 channel.basicqos 中表示消费者可以预先获取并处理的消息数量。具体来说,当 prefetch_count 被设置为 1 时,消费者会预先获取并处理队列中的下一个消息。
QoS 级别说明¶
QoS 0(默认): - 消息被发送后,可以被任何数量的消费者接收 - 消息即发即弃,不需要等待确认,也不需要存储和重传 - 消息可能会有丢失或传输失败的风险 - 可靠性完全依赖于底层的 TCP 协议
QoS 1: - 消息被发送后,可以被一个消费者接收 - 发送者会发送一条消息,并等待接收者确认 - 如果接收者在规定的时间内没有确认收到消息,发送者会重新发送消息 - 支持消息的持久化存储 - 提供了比 QoS 0 更高的消息可靠性,但可能会增加一些额外的网络开销和延迟
QoS 2: - 消息被发送后,只能被一个消费者接收 - 每条消息仅由预期的收件人接收一次 - 最安全和最慢的服务质量级别 - 通过发送方和接收方之间的至少两个请求/响应流(四次握手)来保证消息的传递 - 可以确保消息在一次传输中不被重复传输,并且仅由预期的收件人接收一次
当 prefetch_count 被设置为 1 时,意味着消费者会预先获取并处理队列中的下一个消息。这意味着,当消费者从队列中获取消息时,它会立即处理该消息,而不是等待其他消息可用。这可以提高处理速度,但也可能增加处理失败的风险。
current_scroll 获取滚动条位置¶
技术栈:JavaScript, 浏览器 场景:前端页面滚动控制 类型:API 说明
currentscroll 获取的是当前浏览器窗口的垂直滚动条位置。这个值表示浏览器窗口已经滚动的距离,以像素为单位。如果滚动条在顶部,currentscroll 的值为 0;如果滚动条在底部,current_scroll 的值等于页面的总高度。
Windows 系统问题¶
Google 浏览器安装问题¶
技术栈:Windows, 注册表 场景:软件安装与卸载 类型:故障排查
方法一:使用管理员权限删除文件¶
- 右击要删除的文件,选择"属性"选项
- 在属性窗口中,点击"安全"选项卡
- 点击"编辑"按钮,然后点击"添加"按钮
- 在输入框中输入"管理员"(不包括引号),然后点击"检索名称"按钮
- 在搜索结果中选择"管理员"帐户,然后点击"确定"按钮
- 在权限设置中,选中"完全控制"复选框,然后点击"确定"按钮
- 关闭属性窗口,然后尝试删除文件
方法二:清理注册表¶
- 打开注册表:Windows 键 + R → 输入 regedit → 确定
- 找到
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Google\Update - 右键删除 Client 开头的项
- 重启电脑,重新安装即可
注意:安装不上通常原因都是之前安装过 Chrome 浏览器,但是卸载的时候有残余,此方法是为了清理残余的注册表信息。
方法三:删除 Google 文件夹¶
删除 C:\Program Files 下的 Google 文件夹
如果 Google 文件夹拒绝访问,解决方法:Google 文件夹右键 → "安全" → 设置你的权限
方法四:全面清理注册表¶
- 在"开始"运行中输入"regedit"
- 进入注册表窗口,在菜单编辑中选择查找功能
- 在查找目标中输入"google"查找
- 查找到相关内容后直接删除
- 删除完成后再进行查找下一个,可以通过编辑中的查找下一个,也可以直接按 F3 进行查找
- 全部删除后,重启计算机就可以安装新版本的谷歌浏览器了
Linux 系统问题¶
CentOS 7 执行 yum 命令报错:未知的错误,正在尝试其它镜像¶
技术栈:CentOS 7, yum, DNS 场景:Linux 包管理 类型:故障排查
http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; 。未知的错误" 正在尝试其它镜像
One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail.
解决办法:
找到并打开目录下文件 /etc/resolv.conf,添加下面一行:
nameserver 114.114.114.114
(这是国内的 DNS 服务器系统,谷歌的可以使用 8.8.8.8)
保存后重启系统或者重启网卡:
reboot # 重启系统
service network restart # 重启网卡
最后更新 yum 即可:
yum update
NTP 时间同步报错"the NTP socket is in use, exiting"¶
技术栈:Linux, NTP 场景:系统时间同步 类型:故障排查
方法一:
service ntpd stop
ntpdate ntp.aliyun.com
方法二:
ps -ef|grep ntpd
kill -9 ntpd # 杀掉进程
ntpdate ntp.api.bz # 重新执行
Failed to restart ntpd.service: Unit not found 时钟同步失败¶
技术栈:Linux, NTP, systemctl 场景:系统服务管理 类型:故障排查
-
查询服务是否存在:
systemctl list-unit-files --type=service -
有则执行:
systemctl daemon-reload -
无则安装:
yum install -y ntp # 安装时间同步程序 -
重启服务:
systemctl restart ntpd systemctl enable ntpd service ntpd start ntpdate -u cn.pool.ntp.org # 同步网络时间 vi /etc/ntp.conf # 配置时间同步(可选)
远程 SSH 连接时出现:Permission denied, please try again¶
技术栈:Linux, SSH 场景:远程登录管理 类型:故障排查
SSH 以普通权限用户远程连接时无问题,但以 root 账户进行远程连接时显示:
C:\Users\yogile> ssh root@192.168.0.129
root@192.168.0.129's password:
Permission denied, please try again.
出现如上问题的原因是:服务端 SSH 服务配置了禁止 root 用户登录策略。
解决方法:
- sshd_config 文件配置
查找关键词 PermitRootLogin
vim /etc/ssh/sshd_config # 打开配置文件
在阅读模式(按下 Esc)下,输入指令查找关键词 PermitRootLogin:
/PermitRootLogin
该文档可能出现多次该关键词,请多查找几次。查找结果一般在单独一行会出现:
PermitRootLogin prohibie-password
PermitRootLogin no
这些语句在文件可能会加注释。
- 修改指令
去掉注释,将这一行修改为:
PermitRootLogin yes
:wq 保存退出。
- 重启 SSH 服务
执行 service sshd restart 命令,即可以 root 账户远程连接。
- 还是不行则可以更新升级 openssh 包
保存退出后仍不能解决问题查看 ssh 安装:
rpm -qa | grep openssh
Linux 如何重置 root 密码¶
技术栈:Linux 场景:系统账户管理 类型:操作指南
在 Linux 中,可以通过以下步骤来重置 root 用户的密码:
- 首先,登录到系统上作为已有管理员账号(比如使用 sudo)
- 打开终端或命令行界面
- 输入以下命令并按 Enter 键运行:
sudo passwd root - 然后会提示输入当前管理员账号的密码
- 接下来,输入新的 root 密码两次进行确认。注意要设定一个安全且容易记住的密码
- 完成后,将显示 "passwd: password updated successfully" 表明密码更改成功
- 现在,你可以使用新的 root 密码来登录了
需要注意的是,修改 root 密码时应该小心操作,确保只有经过授权的人才能获得对系统的完全控制权限。
SSH 密钥添加后仍需要密码验证登录问题¶
技术栈:Linux, SSH 场景:SSH 密钥认证 类型:故障排查
问题:dont have server accepts key
用户问题,网上给出教程全部都是 root 用户下的教程,也就是说你只有用 root 用户登陆时,服务器才会搜索 /root/.ssh 下的文件。当你用其他用户登录时,就需要在 /home/username/.ssh 下添加你的公钥,并且对其设置正确的权限。否则连接的时候会出现诸如 Permission denied (publickey) 之类的错误。
Linux 对不同的用户有不同的权限设置,而且不同用户的密码数据也不同。那肯定不能想着通过在 root 用户下添加一个公钥文件就能够访问到所有的用户,还是需要在你要访问的用户目录下添加自己数据。
原文链接:https://blog.csdn.net/qq_44695454/article/details/127056751
Linux wget 403 forbidden 错误¶
技术栈:Linux, wget 场景:网络资源下载 类型:故障排查
在 wget 时使用 -U 参数就正常了,原因是资源服务器限制了访问代理,这里加上 -U 参数设定了代理名称,就可以正常下载了。
# 问题一: wget HTTP request sent, awaiting response... 403 Forbidden
wget -U NoSuchBrowser/1.0 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.03-Linux-x86_64.sh
出现这个错误是因为在使用 wget 或 curl 请求资源时被服务器拒绝了,为了防止爬虫等消耗服务器资源,服务器根据你的请求头进行了选择性屏蔽,因此需要修改 wget 和 curl 的代理 User-Agent 来进行伪装。
另外还有一种情况是资源所在目录没有权限,也会返回 403 错误,这种情况使用浏览器下载也会报错。
Linux 服务器无 PIP 解决¶
技术栈:Linux, Python, pip 场景:Python 环境配置 类型:操作指南
# 查看 python 版本
python --version
# 输出: Python 2.7.5
# 根据版本下载 get-pip.py 文件
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
# 安装 pip
python get-pip.py
大数据技术问题¶
DolphinScheduler 登录页持续加载¶
技术栈:DolphinScheduler, MySQL 场景:大数据调度平台 类型:故障排查
在自己电脑上安装 DolphinScheduler 集群后,登录一直 loading 或登录后一直转小齿轮。查看日志发现一直报 MySQL 连接失败,一般是连接超时导致。
解决方法:修改 my.cnf,在最后添加两行:
wait_timeout=31536000
interactive_timeout=31536000
延长超时时间,重启 MySQL 生效。若仍未解决,建议将 mysql-connector jar 包换到 8.0 版本。