slackware系统详解
Slackware 是最古老的活跃维护的 Linux 发行版之一,由 Patrick Volkerding 于 1993 年创建。它以简洁性、稳定性和遵循 Unix 哲学为核心理念,适合追求高度控制和手动配置的用户。以下是 Slackware 的详细介绍:
1. 核心特点
简洁性 (Simplicity)
-
无自动化依赖管理:Slackware 的包管理工具(如
pkgtools
)不处理依赖关系,用户需手动解决。这避免了复杂的依赖解析逻辑,但也增加了用户的学习成本。 -
无定制化图形界面:系统默认不提供图形化的配置工具,几乎所有配置通过编辑纯文本文件(如
/etc/rc.d/
中的服务脚本)完成。 -
接近上游代码:软件包通常保持上游(原始开发者)的默认配置,极少打补丁,减少第三方修改引入的问题。
稳定性 (Stability)
-
保守的更新策略:软件版本更新缓慢,通常仅修复安全漏洞,不追求最新功能。例如,Slackware 15.0(2022 年发布)默认仍使用 KDE Plasma 5(而非更新的 6.x 系列)。
-
长期支持:每个主版本(如 14.x, 15.x)支持周期长达 5 年以上。
Unix 哲学
-
模块化设计:系统由独立工具组成,用户可通过组合命令完成复杂任务(如
grep
+awk
处理文本)。 -
脚本友好:大量使用 Shell 脚本管理服务(如
/etc/rc.d/rc.httpd
控制 Apache)。
2. 系统组成
包管理系统
-
工具集:
pkgtools
包含installpkg
(安装)、removepkg
(卸载)、upgradepkg
(升级)等命令。 -
包格式:使用
.tgz
或.txz
格式的压缩包,包含预编译二进制文件和安装脚本。 -
依赖管理:依赖关系记录在包的
README
文件中,用户需自行查阅。社区维护的第三方工具(如slapt-get
)尝试提供自动依赖解决,但非官方支持。
默认软件
-
内核:提供多个内核版本(如通用内核、Huge 内核支持老旧硬件)。
-
桌面环境:Xfce 为默认桌面(轻量级),KDE Plasma 和 GNOME 可通过额外安装。
-
工具链:完整 GNU 工具链(GCC、Glibc)、Perl、Python、Vim/Emacs 等。
-
网络服务:Apache、Sendmail、OpenSSH、Samba 等预装但默认未启用。
文件系统布局
-
遵循传统 Unix 结构,如
/usr
存放用户程序,/etc
为配置文件,/var
存储日志和数据。
3. 版本与分支
-
稳定版 (Stable):最新版本为 15.0(2022 年发布),支持 x86_64 和 ARM 架构。
-
当前分支 (-Current):滚动开发版本,包含最新软件包,适合测试者。
-
历史版本:如 14.2(2016 年发布)仍被部分用户用于生产环境。
4. 安装与配置
安装过程
-
启动介质:支持 CD/DVD 或 USB 镜像(需使用
dd
或专用工具写入)。 -
分区工具:使用
fdisk
或cfdisk
手动分区,无图形化向导。 -
软件选择:通过菜单选择软件系列(如 A-基础、X-图形界面),按需安装。
-
LILO/GRUB:默认引导程序为 LILO(轻量级),可选 GRUB。
初始配置
-
网络配置:编辑
/etc/rc.d/rc.inet1.conf
(静态 IP)或使用dhcpcd
。 -
用户管理:通过
useradd
命令或手动编辑/etc/passwd
。 -
服务管理:通过
chmod +x /etc/rc.d/rc.service
启用服务(如rc.sshd
)。
5. 使用场景
-
服务器:稳定性高,适合长期运行的服务(如 Web 服务器、防火墙)。
-
老旧硬件:轻量级设计(Xfce 仅需 512MB 内存)支持旧设备。
-
学习 Linux:强迫用户深入理解系统内部机制。
-
定制化系统:作为构建专用设备(如路由器、NAS)的基础。
6. 优缺点
优点
-
透明可控:所有配置由用户直接管理,无隐藏自动化。
-
轻量高效:无后台服务(如 systemd)占用资源。
-
社区纯粹:用户多为技术资深者,讨论氛围专注技术。
缺点
-
学习曲线陡峭:新手需熟悉命令行和文本编辑。
-
硬件兼容性:对新硬件(如最新显卡)支持可能滞后。
-
软件生态:官方仓库软件数量有限,依赖第三方源(如 SlackBuilds.org)。
7. 社区与资源
-
官方资源:
-
官网:slackware.com
-
文档:Slackware Handbook
-
-
社区支持:
-
论坛:LinuxQuestions.org 的 Slackware 板块
-
IRC 频道:
#slackware
(Freenode 网络)
-
-
衍生项目:
-
Slackware ARM:ARM 架构移植版。
-
Slackware Live:官方制作的 Live 镜像。
-
第三方仓库:如
slackpkg+
扩展软件源。
-
8. 与其他发行版的对比
特性 | Slackware | Arch Linux | Debian |
---|---|---|---|
包管理 | 无依赖解析 | 全自动依赖处理 | 自动依赖 + 稳定 |
配置方式 | 纯手动编辑文件 | 提供部分工具 | 混合(工具+手动) |
更新策略 | 保守 | 滚动更新 | 稳定版冻结 |
目标用户 | 极客/管理员 | 爱好者/开发者 | 广泛用户 |
9. 如何开始?
-
下载镜像:从官方镜像站获取 ISO。
-
安装基础系统:选择最小安装以熟悉核心组件。
-
安装 X 环境:通过
setup
安装 X Window 和 Xfce。 -
探索文档:阅读
/usr/doc/
下的手册和 Linux 文档项目(LDP)指南。
总结
Slackware 是一款为追求控制权和愿意投入时间学习的用户设计的发行版。它不迎合“易用性”潮流,而是坚守 Unix 设计哲学。如果你希望完全理解系统的每一部分,并享受手动配置的乐趣,Slackware 是理想选择。反之,若依赖自动化工具或需要最新软件,可能更适合 Fedora 或 Ubuntu。
1. 系统架构与设计哲学
核心原则
Slackware 遵循 “Keep It Simple, Stupid” (KISS) 原则,强调:
• 最小化干预:几乎不修改上游软件(如内核、GNU 工具链)的默认行为。
• 透明性:所有配置通过文本文件暴露,无隐藏的后台自动化(如 Ubuntu 的 cloud-init)。
• 模块化:系统由松散耦合的独立工具组成,用户按需组合。
系统层级
1. 内核层:
◦ 提供多版本内核(如 generic、huge),用户通过 /boot/vmlinuz 选择。
◦ 内核模块存放在 /lib/modules/$(uname -r)/,手动加载(modprobe)或通过 /etc/rc.d/rc.modules 脚本。
2. 用户空间工具:
◦ 核心工具链:GNU Coreutils(ls, cp)、bash、sysvinit(初始化系统)。
◦ 网络工具:net-tools(ifconfig)、iproute2(ip 命令)、dhcpcd。
3. 服务管理:
◦ 使用 SysV init(而非 systemd 或 Upstart),通过 /etc/rc.d/ 目录下的 Shell 脚本控制服务。
◦ 服务启动顺序由脚本文件名前缀(如 rc.S → rc.M → rc.local)决定。

2. 初始化系统 (SysV init)
Slackware 使用传统的 SysV init 作为初始化系统,流程如下:
1. 内核启动:
◦ 加载 initramfs(如果需要),挂载根文件系统。
◦ 启动第一个进程 /sbin/init。
2. 运行级别 (Runlevel):
◦ 0:关机
◦ 1:单用户模式(无网络,仅 root)
◦ 3:多用户模式(命令行)
◦ 4:自定义(通常未使用)
◦ 5:图形界面(需手动启动 X Window)
◦ 6:重启
◦ 默认运行级别由 /etc/inittab 中的 id:3:initdefault: 设定。
3. 启动脚本:
◦ /etc/rc.d/rc.S:系统初始化(挂载文件系统、加载模块等)。
◦ /etc/rc.d/rc.M:多用户模式服务启动(网络、守护进程)。
◦ /etc/rc.d/rc.local:用户自定义启动命令。
服务管理示例
• 启动 SSH 服务:
bash

复制

下载
chmod +x /etc/rc.d/rc.sshd # 赋予执行权限(启用服务)
/etc/rc.d/rc.sshd start
# 手动启动
• 禁用 Apache:
bash

复制

下载
chmod -x /etc/rc.d/rc.httpd # 移除执行权限

3. 文件系统布局
Slackware 遵循 Filesystem Hierarchy Standard (FHS),但部分路径有其特色:
• 关键目录:
◦ /etc/rc.d/:所有 SysV init 服务脚本。
◦ /var/log/packages/:记录已安装软件包的详细信息。
◦ /usr/src/linux/:内核源码(需手动安装)。
◦ /mnt/:默认挂载点(无自动挂载工具如 udisks2)。
• 配置文件:
◦ 网络配置:/etc/rc.d/rc.inet1.conf(静态 IP)、/etc/resolv.conf(DNS)。
◦ 用户与权限:/etc/passwd、/etc/group、/etc/shadow(直接编辑,无 useradd 封装)。
◦ 软件包管理:/var/log/packages/ 和 /var/log/removed_packages/ 记录安装/卸载历史。

4. 网络配置
Slackware 的网络配置高度手动化,无 NetworkManager:
1. 静态 IP:
◦ 编辑 /etc/rc.d/rc.inet1.conf:
bash

复制

下载
IPADDR[0]="192.168.1.100"
NETMASK
[0]="255.255.255.0"
GATEWAY="192.168.1.1"
USE_DHCP
[0]="" # 留空表示禁用 DHCP
◦ 重启网络:/etc/rc.d/rc.inet1 restart
2. 动态 IP (DHCP):
◦ 安装 dhcpcd 并运行:dhcpcd eth0
3. 无线网络:
◦ 使用 wpa_supplicant 手动配置:编辑 /etc/wpa_supplicant.conf,然后启动服务。

5. 用户与权限管理
• 用户创建:
bash

复制

下载
useradd -m -g users -s /bin/bash username # 创建用户并生成家目录
passwd username # 设置密码
• 权限控制:
◦ 直接编辑 /etc/sudoers(使用 visudo 命令防止语法错误)。
◦ 无默认的 sudo 权限,需手动配置。

6. 内核与硬件管理
1. 内核升级:
◦ 手动编译或安装预编译内核包(如 kernel-generic-6.1.10-x86_64.txz)。
◦ 更新引导配置(/etc/lilo.conf 或 /boot/grub/grub.cfg)。
2. 硬件驱动:
◦ 内核模块:存放在 /lib/modules/$(uname -r)/kernel/drivers/。
◦ 手动加载驱动:modprobe drivername,或添加到 /etc/rc.d/rc.modules。

7. 日志与监控
• 系统日志:由 syslogd 和 klogd 管理,日志文件位于 /var/log/(如 messages、secure)。
• 进程监控:使用 top、ps、htop(需手动安装)。
• 服务状态检查:直接查看服务脚本的 PID 文件(如 /var/run/httpd.pid)。

8. 安全机制
• 防火墙:默认无预装,需手动配置 iptables 或安装第三方工具(如 ufw)。
• SELinux/AppArmor:默认不启用,依赖用户自行配置。
• 安全更新:通过 slackpkg 手动检查并安装安全补丁:
bash

复制

下载
slackpkg update
slackpkg install-new
slackpkg upgrade-all

9. 系统维护
1. 软件包管理:
◦ 安装本地包:installpkg package.txz
◦ 升级包:upgradepkg old-package.txz --> new-package.txz
◦ 删除包:removepkg package
2. 依赖处理:
◦ 手动查找依赖:通过 SlackBuilds.org 或 ldd 检查二进制文件。
◦ 示例:安装 vlc 需先安装 ffmpeg、qt5 等。
3. 清理系统:
◦ 删除旧内核:手动清理 /boot/ 和 /lib/modules/。
◦ 日志轮转:配置 /etc/logrotate.conf。

10. 高级自定义
构建定制 Live 系统
使用 Slackware Live Edition 工具链:
1. 克隆官方脚本:git clone git://slackware.nl/slackware-live.git
2. 修改配置:编辑 Makefile 和 config/ 文件。
3. 构建 ISO:make iso
移植到 ARM 设备
• 使用 Slackware ARM 项目提供的交叉编译工具链。
• 示例:为 Raspberry Pi 编译内核和驱动。

总结:Slackware 的系统逻辑
Slackware 的每一层设计都在强调 用户主权:
• 无抽象层:直接操作文件、脚本和命令,而非通过封装工具。
• 显式配置:所有行为由用户手动触发,无后台自动化干扰。
• 长期稳定性:保守的更新策略确保系统行为可预测。
适用场景
• 服务器:依赖手动配置的精细控制。
• 嵌入式设备:轻量级且无冗余服务。
• 教育/研究:学习 Linux 内部机制的“实验室”。
不适用场景
• 需要快速部署的云环境(依赖自动化工具如 Ansible)。
• 追求最新桌面应用的用户(如游戏、图形设计)。
若你追求 完全掌控系统,并愿意投入时间学习底层细节,Slackware 将是最纯粹的 Linux 体验。反之,若偏好自动化,建议选择 Debian 或 Fedora。

开启新对话
相关文章:
slackware系统详解
Slackware 是最古老的活跃维护的 Linux 发行版之一,由 Patrick Volkerding 于 1993 年创建。它以简洁性、稳定性和遵循 Unix 哲学为核心理念,适合追求高度控制和手动配置的用户。以下是 Slackware 的详细介绍: 1. 核心特点 简洁性 (Simplici…...
力扣210(拓扑排序)
210. 课程表 II - 力扣(LeetCode) 这是一道拓扑排序的模板题。简单来说,给出一个有向图,把这个有向图转成线性的排序就叫拓扑排序。如果有向图中有环就没有办法进行拓扑排序了。因此,拓扑排序也是图论中判断有向无环图…...
Promise/A+ 规范中文解读
一、简介 Promise/A 是一个开放、健全且通用的JavaScript Promise标准,由开发者制定并供开发者参考。其核心目标是定义then方法的行为,确保不同Promise实现的互操作性。规范聚焦于异步操作的最终结果交互机制,而非Promise的创建、解决或拒绝…...
多媒体预研
主要包含h265 av1 等各种 多媒体的具体应用 svac_plugin ZLMediaKit/ext-codec at master cyf88/ZLMediaKit D:\java\xiachu\otherzlm\ZLMediaKit> sip-client GB28181-Service/SipClient at master Washington-DC/GB28181-Service yolo Jackson-Tan/wvp_pro_yolo: 小…...
动态网站 LNMP
一、名词解释: LNMP: L : 代表 Linux 操作系统,为网站提供了可靠的运行环境N : 代表 Nginx,它是一款轻量级的高性能 Web 服务器,能够快速处理大量并 发连接,有效提升网站的访问速度和性能 M : 代表…...
【Leetcode刷题随笔】349. 两个数组的交集
1. 题目描述 给定两个数组nums1和nums2,返回它们的交集。输出结果中的每个元素一定是唯一的。我们可以不考虑输出结果的顺序。 示例1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 题目条件: 1 < nums1.length, nums2.length < 10…...
如何优雅的使用CMake中的FindPkgConfig模块
背景 如果你遇到下面的场景,那么FindPkgConfig模块可以用来解决我们引用上游库的问题。 上游库没有提供CMake的配置文件。CMake没有提供相应的查找模块,即Find<PackageName>.cmake的文件。上游库提供了pkg-config使用的.pc文件。 如果上面三个条…...
Docker Volumes
Docker Volumes 是 Docker 提供的一种机制,用于持久化存储容器数据。与容器的生命周期不同,Volumes 可以独立存在,即使容器被删除,数据仍然保留。以下是关于 Docker Volumes 的详细说明: 1. 为什么需要 Volumes&#…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取当前用户主目录(即:~波浪符号目录)?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
day23 机器学习管道 Pipeline
在机器学习中,数据预处理、特征提取、模型训练和评估等步骤通常是按顺序执行的。为了更高效地管理和复用这些步骤,我们可以使用 Pipeline(管道)来构建一个完整的机器学习流水线。本文将详细介绍 Pipeline 的基础概念,并…...
The Graph:区块链数据索引的技术架构与创新实践
作为Web3生态的核心基础设施,The Graph通过去中心化索引协议重塑了链上数据访问的范式。其技术设计不仅解决了传统区块链数据查询的效率瓶颈,还通过经济模型与多链兼容性构建了一个开放的开发者生态。本文从技术角度解析其架构、机制及创新实践。 一、技…...
nginx配置sse流传输问题:直到所有内容返回后才往下传输
一、禁用缓冲(如实时流传输): location /stream {proxy_buffering off; } 二、开启分块传输 location /your-path {proxy_chunked_transfer_encoding on; # 显式启用分块传输(默认已启用) }...
使用Daemonset部署日志收集守护进程
1.DaemonSet简介: 在Kubernetes(简称k8s)中,DaemonSet是一种控制器,用于确保集群中的每个(或部分)节点运行一个指定的Pod副本。DaemonSet非常适合需要全局部署、节点级运行的服务,如…...
在Mac环境下搭建Docker环境的全攻略
在Mac环境下搭建Docker环境的全攻略 在现代软件开发中,Docker已经成为不可或缺的工具之一。它不仅简化了应用的部署和管理,还极大地提升了开发效率。然而,在某些公司环境中,桌面版的Docker可能会被禁用,这给开发工作带…...
Go 语言 slice(切片) 的使用
序言 在许多开发语言中,动态数组是必不可少的一个组成部分。在实际的开发中很少会使用到数组,因为对于数组的大小大多数情况下我们是不能事先就确定好的,所以他不够灵活。动态数组通过提供自动扩容的机制,极大地提升了开发效率。这…...
C++ string比较、string随机访问、string字符插入、string数据删除
string的字符串进行比较,代码见下。 #include<iostream>using namespace std;int main() {// 1 comparestring s1 "aab";string t11 "aab";int r11 s1.compare(t11);cout << "1: " << r11 << endl;strin…...
web 自动化之 Unittest 应用:测试报告装饰器断言
文章目录 一、常见的第三方库结合 unittest 生产 html 格式测试报告1、HtmlTestRunner2、BeatifulReport 二、装饰器 unittest.skip 强制跳过&条件跳过三、unittest的常用断言方法 一、常见的第三方库结合 unittest 生产 html 格式测试报告 1、HtmlTestRunner 官网下载 …...
前端基础之《Vue(16)—Vue脚手架介绍》
一、脚手架环境 1、推荐windows10 Node vue/cli(webpack) 2、测试node安装成功 node -v npm -v 3、什么是脚手架 Vue CLI:CLI就是脚手架的意思 脚手架生成一套模板(入口文件、配置文件、目录结构) 4、常用的包管理器 npm:no…...
MySQL 事务(一)
文章目录 CURD不加控制,会有什么问题CURD满足什么属性,能解决上述问题?什么是事务为什么要有事务事务的版本支持了解事务的提交方式 事务常见操作方式研究并发场景事务的正常操作事务的非正常情况的案例结论事务操作的注意事项 CURD不加控制&…...
Dsp38335利用Bootloader实现在线升级的技术原理
1. Bootloader概述 Bootloader(引导加载程序)是嵌入式系统中负责在设备启动时加载和启动主程序的代码。它通常在系统的闪存或其他非易失性存储器中,并在系统上电时首先执行。Bootloader不仅完成启动操作,还能够提供后续的程序升级…...
【TVM 教程】microTVM PyTorch 教程
Apache TVM 是一个深度的深度学习编译框架,适用于 CPU、GPU 和各种机器学习加速芯片。更多 TVM 中文文档可访问 →https://tvm.hyper.ai/ 作者:Mehrdad Hessar 该教程展示了如何使用 PyTorch 模型进行 microTVM 主机驱动的 AOT 编译。此教程可以在使用…...
利用D435i相机进行SLAM实现建图的关键环节-----Kalibr标定工具以及常见的问题调试
在SLAM系统中,相机标定是获取准确的空间信息和三维重建的关键步骤。对于Intel RealSense D435i这类双目相机,正确的内参和外参不仅能提高位姿估计精度,还能显著改善重建效果。本文将详细介绍如何使用Kalibr对D435i进行双目标定,并…...
old kali网站下载链接爬取-Kali linux 全部版本镜像下载--Index of /kali-images
Kali linux 全部版本镜像下载 目的 出于该网站不稳定原因,故爬取下载链接,以便网友下载老版本kali from bs4 import BeautifulSoup import requests from urllib.parse import urljoinbase_url "http://old.kali.org/kali-images/" visite…...
基于千眼狼高速摄像机与三色掩模的体三维粒子图像测速PIV技术
研究背景 航空航天、能源动力领域,测量三维瞬态流场的速度场信息对于理解流体力学行为、优化系统设计非常关键。 传统三维粒子图像测速技术如Tomo层析PIV,因依赖多相机阵列,存在系统体积、操作复杂,在封闭空间测量存在困难&#…...
Tauri(2.5.1)+Leptos(0.7.8)开发桌面应用--程序启动界面
前期使用Tauri(2.5.1)Leptos(0.7.8)写了一个自用桌面小程序,详见:使用Tauri 2.3.1Leptos 0.7.8开发桌面小程序汇总_tauri 小程序-CSDN博客。 在此基础上,尝试给程序添加启动界面,效果如下图所示。 1. 添加启动画面设置 在src-ta…...
Gmsh划分网格|四点矩形
先看下面这段官方自带脚本 /*********************************************************************** Gmsh tutorial 1** Variables, elementary entities (points, curves, surfaces), physical* entities (points, curves, surfaces)********************************…...
I/O多路复用(select/poll/epoll)
通过一个进程来维护多个Socket,也就是I/O多路复用,是一种常见的并发编程技术,它允许单个线程或进程同时监视多个输入/输出(I/O)流(例如网络连接、文件描述符)。当任何一个I/O流准备好进行读写操…...
一键生成达梦、Oracle、MySQL 数据库 ER 图!解锁高效数据库设计!
从事企业软件项目开发的同学们一定对 ER 图很熟悉,可以帮助用户快速厘清数据库结构,方便后续维护和优化。但是在日常工作中,面对复杂的数据结构,整理表设计文档对于每一位DBA来说都很头大,需要将设计细节转化为条理清晰…...
学习黑客 windows 设置与控制面板详解
Windows 设置与控制面板详解:双剑合璧的系统配置工具 ⚙️🔧 学习目标:理解Windows设置和控制面板的异同、掌握系统配置的安全最佳实践 1. 引言:双界面的系统配置世界 🌐 在Windows操作系统中,有两个强大的…...
pytorch模型画质增强简单实现
使用数据增强技术可以增加数据集中图像的多样性,从而提高模型的性能和泛化能力,主要的图像增强技术包括。 亮度,对比度调节 在开始图像大小的调整之前我们需要导入数据(图像以眼底图像为例)。 from PIL import Image f…...
C++中的std::allocator
C中的std::allocator 文章目录 C中的std::allocator1.std::allocator1.1C中的placement new 和operator new1.2一个custom allocator的实现1.3使用std::allocator_traits实现allocator 1.std::allocator C中的std::allocator默默工作在CSTL中的所有容器的内存分配上࿰…...
Linux文件编程——read函数与lseek函数
一、read函数 在 Linux 文件编程中,read 函数是一个系统调用,用于从文件描述符(File Descriptor)指向的文件或设备中读取数据到缓冲区。它是 Unix/Linux 系统编程中实现底层 I/O 操作的核心函数之一。以下是 read 函数的详细使用…...
STM32 变量存储
一、存储区划分与变量分类 STM32的存储空间分为Flash(非易失性)和RAM(易失性)两大区域: Flash存储器 代码段(Code):存储程序指令和常量(如字符串、const变量&…...
解锁性能密码:Linux 环境下 Oracle 大页配置全攻略
在 Oracle 数据库运行过程中,内存管理是影响其性能的关键因素之一。大页内存(Large Pages)作为一种优化内存使用的技术,能够显著提升 Oracle 数据库的运行效率。本文将深入介绍大页内存的相关概念,并详细阐述 Oracle 在…...
HashMap中哈希值与数组坐标的关联
目录 1、哈希值的生成与处理 2、计算桶的索引 3、哈希值总结 4、哈希冲突解决方案 4.1. 拉链法(Separate Chaining) 4.2. 开放寻址法(Open Addressing) 1、线性探测(Linear Probing) 2、二次探测&a…...
GBK与UTF-8编码问题(1)
1. 问题现象 我们在编译.py的python代码时,有时会遇到如下图这种问题。提示说“SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0: invalid continuation byte”,代码中有中文字符,这似乎和文件的编码方…...
大模型的实践应用41-天气预测与分析决策系统:Qwen3(32B)+langchain框架+MCP(大模型上下文协议)+RAG+传统算法
大家好,我是微学AI,今天给大家介绍一下大模型的实践应用41-Qwen3(32B)+langchain框架+MCP(大模型上下文协议)+RAG+传统算法研发天气预测与分析决策系统。本项目构建一个基于大模型Qwen3(32B)、LangChain框架、MCP协议、RAG技术以及传统算法的天气预测与分析决策系统。该系统通…...
单片机学习Day08--相邻流水灯
一,题目:同时点亮相邻的两个灯,并实现流水设计。 亮的是0; 最前面是LED8. #include <REGX51.H> typedef unsigned int u16; typedef unsigned char u8; #define led P2 void delay_10us(u16 t) { while(t--); } void mai…...
邮件营销应对高退信率的策略
一、邮件列表管理 1. 使用专业工具验证 借助如 Geeksend 邮箱验证等专业工具,全面清洗邮件列表,剔除无效、过期或格式错误的邮箱地址,确保邮件精准送达有效收件人,从而降低退信率。 2. 定期清理无效地址 将定期清理邮件列表纳入…...
无线定位之 三 SX1302 网关源码 thread_gps 线程详解
前言 笔者计划通过无线定位系列文章、系统的描述 TDOA 无线定位和混合定位相关技术知识点, 并以实践来验证此定位系统精度。 笔者从实践出发、本篇直接走读无线定位系统关键节点、网关 SX1302 源码框架,并在源码走读过程 中、着重分析与无线定位相关的PPS时间的来龙去脉、并在…...
Kubernetes控制平面组件:Kubelet详解(一):API接口层介绍
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
Java项目层级介绍 java 层级 层次
java 层级 层次 实体层 控制器层 数据连接层 Service : 业务处理类 Repository :数据库访问类 Java项目层级介绍 https://blog.csdn.net/m0_67574906/article/details/145811846 在Java项目中,层级结构(Layered Architecture…...
【操作系统】零拷贝技术
1. DMA技术 DMA技术也就是直接内存访问技术。在进行I/O设备和内存的数据传输的时候,数据传输的工作全部交给DMA控制器,而不是CPU负责。 2. 传统的文件传输 传统的文件传输的代码如下: read(file, tmp_buf, len); write(socket, tmp_buf,…...
从零构建高性能桌面应用:GPUI Component全解析与实战指南
简介 高性能UI组件库正在重塑桌面应用开发的格局,而GPUI Component作为新兴的Rust桌面UI组件库,凭借其卓越的跨平台支持能力、GPU加速渲染和企业级功能特性,正成为构建现代化高性能桌面应用的首选。本文将从零开始,全面解析GPUI Component的核心特性、安装配置流程,并通过…...
java 中 DTO 和 VO 的核心区别
DTO 和 VO 的核心区别 特性DTO(数据传输对象)VO(视图对象)设计目的服务层与外部系统(如前端、其他服务)之间的数据传输为前端展示层定制数据,通常与 UI 强绑定数据内容可能包含业务逻辑需要的字…...
bazel迁移cmake要点及具体迁移工程示例(apollo radar)
文章目录 bazel迁移cmake要点及具体迁移工程示例迁移要点指南依赖库管理proto编译目标库及二进制文件生成项目导出runtime_data软件打包 conti_rardar完整迁移过程common_msgcommoncanbusconti_radar编译 bazel迁移cmake要点及具体迁移工程示例 迁移要点指南 迁移主要的内容包…...
跨时钟域(CDC,clock domain crossing)信号处理
参考视频: 数字IC,FPGA秋招【单bit信号的CDC跨时钟域处理手撕代码合集】_哔哩哔哩_bilibili 一、亚稳态 原因是:建立时间和保持时间没有保持住。然后在下图的红框里面,产生亚稳态。因为电路反馈机制,最后大概率会恢复…...
Java高频面试之并发编程-16
hello啊,各位观众姥爷们!!!本baby今天又来报道了!哈哈哈哈哈嗝🐶 面试官:volatile 实现原理是什么? volatile 关键字的实现原理 volatile 是 Java 中用于解决多线程环境下变量可见性…...
MyBatis 一对多关联映射在Spring Boot中的XML配置
在Spring Boot中使用MyBatis实现一对多关系时,可以通过XML映射文件来配置。下面我将详细介绍几种实现方式。 基本概念 一对多关系指的是一个实体对象包含多个子对象集合的情况,例如: 一个部门有多个员工一个订单有多个订单项一个博客有多个…...
Spring Boot异步任务失效的8大原因及解决方案
Spring Boot异步任务失效的8大原因及解决方案 摘要:在使用Spring Boot的@Async实现异步任务时,你是否遇到过异步不生效的问题?本文总结了8种常见的异步失效场景,并提供对应的解决方案,帮助你彻底解决异步任务失效的难题。 一、异步失效的常见场景 1. 未启用异步支持 ❌ …...