跳转至

问题记录


编程相关

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, 注册表 场景:软件安装与卸载 类型:故障排查

方法一:使用管理员权限删除文件

  1. 右击要删除的文件,选择"属性"选项
  2. 在属性窗口中,点击"安全"选项卡
  3. 点击"编辑"按钮,然后点击"添加"按钮
  4. 在输入框中输入"管理员"(不包括引号),然后点击"检索名称"按钮
  5. 在搜索结果中选择"管理员"帐户,然后点击"确定"按钮
  6. 在权限设置中,选中"完全控制"复选框,然后点击"确定"按钮
  7. 关闭属性窗口,然后尝试删除文件

方法二:清理注册表

  1. 打开注册表:Windows 键 + R → 输入 regedit → 确定
  2. 找到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Google\Update
  3. 右键删除 Client 开头的项
  4. 重启电脑,重新安装即可

注意:安装不上通常原因都是之前安装过 Chrome 浏览器,但是卸载的时候有残余,此方法是为了清理残余的注册表信息。

方法三:删除 Google 文件夹

删除 C:\Program Files 下的 Google 文件夹

如果 Google 文件夹拒绝访问,解决方法:Google 文件夹右键 → "安全" → 设置你的权限

方法四:全面清理注册表

  1. 在"开始"运行中输入"regedit"
  2. 进入注册表窗口,在菜单编辑中选择查找功能
  3. 在查找目标中输入"google"查找
  4. 查找到相关内容后直接删除
  5. 删除完成后再进行查找下一个,可以通过编辑中的查找下一个,也可以直接按 F3 进行查找
  6. 全部删除后,重启计算机就可以安装新版本的谷歌浏览器了

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 场景:系统服务管理 类型:故障排查

  1. 查询服务是否存在:

    systemctl list-unit-files --type=service
    

  2. 有则执行:

    systemctl daemon-reload
    

  3. 无则安装:

    yum install -y ntp  # 安装时间同步程序
    

  4. 重启服务:

    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 用户登录策略。

解决方法

  1. sshd_config 文件配置

查找关键词 PermitRootLogin

vim /etc/ssh/sshd_config  # 打开配置文件

在阅读模式(按下 Esc)下,输入指令查找关键词 PermitRootLogin:

/PermitRootLogin

该文档可能出现多次该关键词,请多查找几次。查找结果一般在单独一行会出现:

PermitRootLogin prohibie-password
PermitRootLogin no

这些语句在文件可能会加注释。

  1. 修改指令

去掉注释,将这一行修改为:

PermitRootLogin yes

:wq 保存退出。

  1. 重启 SSH 服务

执行 service sshd restart 命令,即可以 root 账户远程连接。

  1. 还是不行则可以更新升级 openssh 包

保存退出后仍不能解决问题查看 ssh 安装:

rpm -qa | grep openssh


Linux 如何重置 root 密码

技术栈:Linux 场景:系统账户管理 类型:操作指南

在 Linux 中,可以通过以下步骤来重置 root 用户的密码:

  1. 首先,登录到系统上作为已有管理员账号(比如使用 sudo)
  2. 打开终端或命令行界面
  3. 输入以下命令并按 Enter 键运行:sudo passwd root
  4. 然后会提示输入当前管理员账号的密码
  5. 接下来,输入新的 root 密码两次进行确认。注意要设定一个安全且容易记住的密码
  6. 完成后,将显示 "passwd: password updated successfully" 表明密码更改成功
  7. 现在,你可以使用新的 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 版本。


附录

链接参考

评论