找到
7
篇与
闲谈茶寮
相关的结果
-
Ubuntu 开机黑屏仅显示鼠标指针?教你修复 Ubuntu 开机后黑屏,只有一个可以移动的鼠标指针,这是桌面环境加载失败的典型表现。问题常出现在显卡驱动、GNOME Shell 扩展、Xorg 配置或显示管理器上。下面提供几种有效的修复步骤。 一、进入 TTY 命令行模式 在黑屏界面按 Ctrl + Alt + F2(或 F3-F6),会切换到纯文本 TTY 终端。输入用户名和密码登录,后续操作均在此完成。 二、检查并重装显卡驱动 显卡驱动不匹配是最大元凶。 查看显卡型号:lspci -k | grep -A 2 -i "VGA" 若使用 NVIDIA 闭源驱动,可尝试清除后重装: sudo apt purge *nvidia* sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update sudo apt install nvidia-driver-535 # 版本号按实际推荐 sudo reboot 如果是 AMD 或 Intel 集显,可重装开源驱动:sudo apt install --reinstall xserver-xorg-video-intel(或 amdgpu)。 三、重置 GNOME 配置 若 GNOME Shell 配置损坏,可重置为默认: mv ~/.config/dconf/user ~/.config/dconf/user.bak # 备份旧配置 dconf reset -f / rm -rf ~/.gnome ~/.gnome2 ~/.local/share/gnome-shell sudo reboot四、检查显示管理器 Ubuntu 默认使用 GDM3,有时它会崩溃。可以尝试重启或重装: sudo systemctl restart gdm3若仍无效,可临时切换到 LightDM: sudo apt install lightdm sudo dpkg-reconfigure lightdm选择 lightdm 后重启测试。 五、排查 Xorg 配置 用户自定义的 Xorg 配置可能导致冲突,将其临时移除: sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.bak sudo reboot六、检查磁盘空间 主目录或根分区已满也会造成桌面无法启动。用 df -h 检查,若空间不足,清理无用文件(如缓存、旧内核),然后重启。 七、从恢复模式修复 若无法进入 TTY,开机时按住 Shift 进入 GRUB 菜单,选择“Advanced options for Ubuntu”中的 recovery mode。进入 root shell 后执行上述修复命令,并选“resume”正常启动。 通过以上方法,绝大多数黑屏只有鼠标的问题都能解决。若仍然无效,建议重新安装 Ubuntu 桌面:sudo apt install --reinstall ubuntu-desktop。定期更新系统和驱动也能预防此类故障。 发布地址:https://6v6.ren/ -
SquareLine Studio 中复制文件的方法 SquareLine Studio 是 LVGL 官方推荐的嵌入式 GUI 设计工具。用户常提到的“复制文件”通常涉及三类操作:复制整个项目、在工具内复制 UI 元素、以及为项目导入外部资源。下面分别说明。 一、复制整个项目文件 如果需要备份项目或在另一台电脑上继续设计,直接在操作系统的文件管理器中操作即可。 关闭 SquareLine Studio。 找到项目根文件夹(通常包含 .sll 工程文件、ui 子文件夹及资源)。 整个文件夹复制到目标位置。 重新打开 Studio,点击 Open Project 选择新位置的 .sll 文件即可。 这是最安全的方式,能保留所有设置和资源引用。 二、在 Studio 内部复制 UI 元素 在设计界面时,常需复用屏幕或组件。Studio 提供了快捷的克隆功能。 在左侧的 组件层次结构面板(树形列表)中,右键点击目标屏幕或控件。 选择 Duplicate(复制)或 Copy(拷贝)后,右键另一个容器选择 Paste(粘贴)。 复制后的元素会自动获得新名称,并保留原有布局和样式。 此方法只复制界面元素,对应的图片、字体资源并不会重复拷贝,仍共用同一资源引用。 三、为项目添加图片、字体等资源文件 GUI 所需的图片、字体文件必须放在项目可以识别的资源目录下。 将 .png、.ttf 等文件直接复制到项目目录下的 assets 或 images 文件夹(具体名称视项目初始设置而定)。 返回 SquareLine Studio,若资源管理器中未显示,可点击 Refresh Assets(刷新资源)按钮,或右键资源面板选择刷新。 新资源即可拖入画布使用。 注意:直接复制进去的文件需要符合 LVGL 支持的格式,图片文件通常由工具自动转换,也可外部用 lv_img_conv 工具转换后复制到资源目录。 总结:项目级别的复制靠操作系统;UI 元素的复用靠右键菜单;外置资源复制到 assets 并刷新即可。掌握这三种操作,就能在 SquareLine Studio 中灵活管理文件与界面。 发布地址:https://6v6.ren/ -
C语言字符串中空格的表示方法 在C语言中,空格是最常见的空白字符,其在ASCII码表中对应十进制值32,十六进制0x20。在字符串或字符常量中,空格可以通过以下三种方式表示: 1. 直接键入空格 这是最直观的方法,在双引号括起的字符串字面量中直接按空格键即可: char str[] = "Hello World";上述代码中 Hello 和 World 之间就是一个空格字符。同样,字符常量也可直接写: char space = ' ';2. 使用十六进制转义序列 \x20 C语言允许用 \x 后跟两位十六进制数来表示任意字符,空格的十六进制ASCII码为20: char str[] = "Hello\x20World"; char space = '\x20';转义序列必须以 \x 开头,数字部分区分大小写,\x20 和 \X20 均可。 3. 使用八进制转义序列 \040 空格也可以用八进制ASCII码表示,其值为40(八进制),转义序列为 \040: char str[] = "Hello\040World"; char space = '\040';注意八进制转义序列最多包含三位数字,且必须以反斜线 \ 开头,数字不能超过377(八进制)。 注意事项 转义序列虽然可行,但直接键入空格最易读,除非特殊场景(如混淆或避免某些编译警告)才用转义序列。 在宏定义或预处理指令中,如需嵌入空格,也可使用转义方式避免歧义。 字符串中的连续多个空格与单个空格效果不同,空格也是一个字符,影响字符串长度与比较结果。 掌握这三种方法,即可在C语言中灵活表示字符串中的空格。 发布地址:https://6v6.ren/ -
PyCharm 中调用项目内文件夹的 Python 文件方法 在 PyCharm 中调用另一个文件夹中的 .py 文件,本质上是解决 Python 的模块导入路径问题。默认情况下,Python 只会搜索当前目录和系统库,直接导入子文件夹里的模块会报 ModuleNotFoundError。以下提供三种最有效的解决方案。 方法一:将文件夹标记为「源根」(最推荐) 这是 PyCharm 独有的便捷功能,无需修改代码即可让 IDE 识别路径。 在项目侧边栏中,右键点击目标文件夹(比如 utils)。 选择 Mark Directory as → Sources Root。 文件夹图标变为蓝色后,就能像导入系统模块一样直接导入其中的文件。 例如,项目结构为: MyProject/ ├── utils/ │ └── helper.py └── main.py在 main.py 中只需写 import helper 即可。运行时 PyCharm 会自动将该目录加入 PYTHONPATH,告别路径错误。该方法完全不影响代码在其它环境下的可移植性。 方法二:使用 Python 包和绝对导入 如果想脱离 PyCharm 也能正常运行,建议将文件夹做成标准的 Python 包。 在目标文件夹内新建一个 __init__.py 文件(内容可为空),使其成为包。 从任意脚本中使用包名导入,如 from utils.helper import 函数名。 当运行入口脚本(例如项目根目录下的 main.py)时,项目根目录会自动进入搜索路径,从而找到所有子包。此方法代码清晰,最为通用。 方法三:临时动态添加路径 对于临时测试,可以直接在脚本里添加路径: import sys import os sys.path.append(os.path.abspath("utils")) import helper这种方法会污染全局路径且不美观,仅推荐在一次性脚本或调试时使用。 常见排查要点 确认源根:检查文件夹是否已标为蓝色,且运行配置中的“Add source roots to PYTHONPATH”已勾选。 确认工作目录:在 Run → Edit Configurations 中确保工作目录为项目根目录。 包结构:若使用 __init__.py,务必检查文件名及层级正确。 采用方法一或方法二,即可在 PyCharm 中自由调用项目内任意文件夹的 Python 文件,让模块组织更灵活、代码复用更高效。 发布地址:https://6v6.ren/ -
多级时钟门控究竟能降低多少功耗? 时钟网络消耗的动态功率往往占芯片总功耗的30%~40%,时钟门控是最有效的动态功耗削减手段。多级时钟门控在时钟树的模块、功能块、寄存器组等层级插入门控单元,实现粗粒度关断与细粒度控制结合,最大限度压缩无效翻转。 单级门控的局限:叶级门控只能关断寄存器局部时钟,门控单元上游的整条时钟树依然全速翻转,时钟树功耗节省十分有限。多级门控在模块休眠时直接关断整棵时钟子树,下游所有缓冲器、门控单元和寄存器时钟端全部静止,从而同时削减时钟树功耗和寄存器内部功耗。 量化收益:假设某处理器动态功耗100mW,其中时钟树30mW。仅使用叶级门控时总功耗降至73mW(降27%);采用多级门控后,时钟树功耗从30mW降至10mW,总功耗降至50mW,降幅达到50%,比单级门控额外节省31%。行业数据佐证:ARM Cortex-A系列待机模式下核心功耗降低超40%;某28nm网络SoC实施多级门控后总功耗从12W降至6.9W,降幅42%。综合来看,多级门控可降低总动态功耗30%~60%,相较单级门控再获10~20个百分点的整芯片收益。 影响因素:收益取决于时钟树占比(高于35%时尤为显著)、工作负载的空闲率、门控层级数量(2~4级最佳)以及EDA工具自动门控覆盖率。多级门控仅削减动态功耗,还需结合电源门控、DVFS等技术应对漏电。 多级时钟门控已成为数字前端设计的标配。在微架构阶段即规划门控层级,编写带明确使能的RTL,配合功耗分析迭代优化,才能让每一毫瓦都“门”清得当。 发布地址:https://6v6.ren/