Python脚本直接执行报错Command not found
参考:DeepSeek - 探索未至之境
前言:Linux 系统下,在 Python 脚本第一行添加类似于#!/bin/python 的 shebang 行,然后给该 Python 脚本添加可执行权限后使用./xx.py 的方式执行该脚本却报错 Command not found,但是 shebang 行路径和执行权限都没有问题且命令行直接使用python xx.py可以正常运行
原因这里报错内容是 Command not found,因此是对应的 shebang 行命令无法找到,而 shebang 行路径没有问题的话,那么大概率是在结尾处存在看不见的字符。使用cat -A xx.py打印具有控制功能的字符,如换行符等,发现行尾字符出现^M 即\r,导致 shebang 行路径变为#!/bin/python\r,因此无法找到该命令导致的报错
对于 Windows 系统来说,每行通过 CRLF(\r\n) 标识符换行;而对于 Unix 系统来说,每行通过 LF(\n) 标识符换行,因此上述问题大概率是因为直接将 Windows 系统上的 Python 脚本文件直接 ...
计算机系统常见启动方式
参考:Flash 启动、RAM 启动、OTP 启动的本质差异——别再只说”存储介质不同”了,这才是它们真正的核心区别
CPU 工作原理计算机本质架构:冯·诺依曼架构
冯·诺依曼结构是计算机的“逻辑模型”和软件基础,而哈佛结构是用于提升性能的关键“硬件实现思想”。现代计算机本质上是“在冯·诺依曼的框架下,大量采用哈佛结构的思想来突破瓶颈”的混合体
CPU 的工作原理可以简化为无限循环:
step1:从程序计数器(PC)指向的地址中读取一条指令
step2:对指令进行解码
step3:执行解码后的执行
step4:PC 自增,指向下一条命令
回到 step1 继续循环
对于 step1,PC 指向的地址可以是任何存储介质,例如 Flash、RAM 或 OPT 等;因此所有启动方式差异本质上不是”从哪里启动”的差异,而是”PC 指针最初指向哪里”以及”这个地址背后的存储器有什么特性”的差异
Flash 启动(最常见的启动方式)Flash 启动的本质是:系统复位后,PC 指针直接指向 Flash 存储器的地址空间,CPU 从 Flash 中取指执行代码
Flash 启动的核心特性
非易失 ...
VCS编译与仿真
前言:最近读到一篇关于芯片验证工具VCS编译与仿真的文章,感觉写得特别好遂整理成本篇文章,文章出处如下:参考:VCS 编译与仿真参数、流程与文件结构解析
VCS 编译仿真流程VCS 核心工作模式是”两阶段流程”,核心理念是编译与仿真两阶段分离
优势:
效率:设计代码只需编译一次,就可以通过不同的运行时参数进行多次不同的仿真(例如,运行不同的测试用例、使用不同的随机种子)。这避免了每次运行都重新解析和翻译整个设计的开销
灵活性:编译时关注的是如何“构建”仿真器,例如需要包含哪些调试信息、启用何种语言特性。而运行时则关注如何“使用”这个仿真器,例如具体跑哪个测试、日志详细程度如何
可移植性:生成的 simv 文件理论上可以在相同架构和操作系统的其他机器上运行,无需设计源代码
编译阶段
输入:设计代码(.v, .sv 等)、测试平台代码、库文件、以及一系列“编译时参数”
过程:VCS 首先会对输入的 HDL 代码进行语法分析和解析。然后,它会将这些高级的硬件描述语言代码翻译成中间的 C/C++代码。最后,VCS 会调用系统自带的 C/C++编译器(如 GCC ...
1080P、2K等分辨率简介
分辨率是指视频画面在一定区域内包含的像素点的数量。像素是构成图像的最小单位,每个像素都有特定的颜色和亮度。分辨率通常以“宽 × 高”的形式表示,如 1920×1080,这代表视频的水平方向有 1920 个像素,垂直方向有 1080 个像素
美国电影电视工程师协会(SMPTE) 制定了一系列的高清数字电视格式标准,其中包含了常用的分辨率标准:
720P: 其有效显示格式为 1280×720, P 表示逐行扫描(Progressive scanning) 方式
1080P:其有效显示格式为 1920×1080, 也是采用逐行扫描方式
1080i: 与 1080p 相对,i 表示隔行扫描(Interlace scanning)。 这种格式在传输过程中可能提供更高的帧率, 但图像质量相对于 1080p 可能会有所降低
2K:最标准的 2K 分辨率为 2048×1024,常见的 2K 分辨率为 2560×1440(16:9)
4K:由 SMPTE ST 2036-1 标准定义的 VHD 超高清系统,其分辨率为 3840×2160(16:9)
8K:由 SMPTE ST ...
SSH 隧道配置指南:通过云服务器访问家庭内网
前言:本篇文章目的是为了临时访问家庭的树莓派,然后通过 WOL 唤醒家庭里的电脑实现远程访问家里电脑的目的。
注:本文由 AI 生成并手动修改完善
一、需求场景
云服务器(公网) + 24 小时在线设备(如树莓派)(家庭内网)
偶尔需要访问树莓派
要求简单、安全的解决方案
二、SSH 隧道安全优势
端到端加密
所有数据都经过 AES-256 等强加密
密钥交换使用 Diffie-Hellman,防中间人攻击
完整性校验防止数据篡改
认证机制
推荐使用 SSH 密钥认证(比密码更安全)
可以禁用密码登录,只允许密钥
支持多因素认证
网络安全性
无需开放额外端口
只需要树莓派的 SSH 端口(默认 22)
不需要在路由器上做端口映射
云服务器作为中转,不暴露家庭网络
连接特性
连接是按需建立的,用完即断
没有持久的后门或服务运行
三、推荐方案:反向 SSH 隧道3.1 工作原理1用户 → 云服务器(公网) ←[反向隧道]← 树莓派(内网)
3.2 配置步骤云服务器准备1234567891011# 创建专用用户(可选但推荐)sudo adduser pi-t ...
我的世界Java版服务端搭建
java
下载从Java Downloads | Oracle 中国下载对应 CPU 架构的.tar.gz 文件(一般是 x64 架构)
1$ wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz
安装然后使用tar -xvzf xxx.tar.gz /usr/local/xxx解压缩到特定目录如/usr/local,配置环境变量:在.bashrc文件最末尾添加以下两行(其中 xxx 为你解压缩后的目录名):
12export JAVA_HOME=/usr/local/xxxexport PATH=$JAVA_HOME/bin:$PATH
验证使用source ~/.bashrc使修改生效,使用java --version验证Java是否安装成功
我的世界服务端
下载从Minecraft 服务器下载 | Minecraft下载我的世界 Java 版服务器(或直接在 Linux 命令行执行下面命令,链接可能失效,需要使用最新链接)
1$ wget https://piston ...
WSL2备份与还原
备份
确定版本,在 cmd 中,输入 wsl -l -v 来确定自己的 wsl 版本。因为有些人下载的是”Ubuntu-22.04”发行版,或者像我一样仅仅是”Ubuntu”发行版,在这里确认一下 name 以便正确导出备份文件。
1234$ wsl -l -v# 输出 NAME STATE VERSION* Ubuntu Stopped 2
若输出 STATE 显示为 Running,则需执行命令wsl --shutdown关闭 wsl 子系统
导出备份
123$ wsl --export 发行版本名 备份文件路径# 示例:$ wsl --export Ubuntu D:\backup.tar
还原备份12345678$ wsl --import (发行版本名称) (安装位置) (文件路径以及文件名称)# 示例:$ wsl --import Ubuntu C:\wsl\ D:\backup.tar# 假如是在原系统上迁移到其他磁盘,还需要删除原来的 wsl 子系统,删除后原路径下的vhdx文件会被移除$ wsl ...
linux系统手动添加swap分区
swap 分区介绍swap 分区中文名是交换分区,类似于 Windows 中的虚拟内存,就是当内存不足的时候,把一部分硬盘空间虚拟成内存使用,从而解决内存容量不足的情况
添加 swap 分区假设物理内存及 swap 分区空间不够或者没有 swap 分区,那么可以手动添加一个 swap 文件当做 swap 分区,也可以划分一个独立的磁盘分区当做 swap 分区,这里采用创建 swap 文件的方式添加 swap 分区
123456789101112# 使用 fallocate 命令添加一个 10G 的 swap 文件(fallocate 命令并不会直接使用 10G 空间,只是预设,需要用的时候才增加)# swap 文件及路径可以自定义,这里在根目录下创建swapfile文件$ sudo fallocate -l 10G /swapfile# 修改文件权限$ sudo chmod 600 /swapfile# 格式化为 swap 分区$ sudo mkswap /swapfile# 启用新添加的swapfile$ sudo swapon /swapfile
如果需要每次开机自动挂载 sw ...
个人博客搭建:添加RSS功能
本篇文章主要介绍如何在 hexo+butterfly 框架主题下添加 RSS 功能,其中相关配置详细参数见 Github 开源项目GitHub - hexojs/hexo-generator-feed: Feed generator for Hexo.,由于笔者时间精力有限,如有疏忽错漏还请指正,谢谢~
框架版本:hexo 7.1.1主题版本:butterfly 4.13.0
RSS 简介RSS 的全称有三种说法:
RDF Site Summary(资源描述框架站点摘要)
Rich Site Summary(网站内容摘要)
Really Simple Syndication(简易资讯聚合)
RSS 就像一个网站的海报,里面包括这个网站的最新内容,会自动更新。从技术方面来说,就是各个平台会提供一个 XML 格式的纯文本文件,该文件里包含了该网站的内容。如果该平台有更新,也会同步更新这个 XML 文件
RSS 插件 hexo-generator-feed 安装配置
hexo 根目录下安装插件
1$ npm install hexo-generator-feed --sa ...
conda创建环境时env路径默认为C盘而非anaconda安装路径的问题解决
查看 conda env 配置路径1234# 命令1$ conda info# 或命令2$ conda config --show
上述命令 2 执行结果如下:
1234envs_dirs: - C:\Users\Administrator\.conda\envs - D:\anaconda3\envs - C:\Users\Administrator\AppData\Local\conda\conda\envs
修改 envs_dirs 默认 env 路径修改~/.condarc(若为 Windows 系统则在C:\Users\{用户名}\.condarc)中 envs_dirs 的顺序,若没有则添加如下内容:
12envs_dirs: - D:\anaconda3\envs
再次执行conda config --show,显示结果如下:
1234envs_dirs: - D:\anaconda3\envs - C:\Users\Administrator\.conda\envs - C:\Users\Administrator\AppData ...









