当前位置: 首页 > news >正文

Ubuntu 使用dotfiles个性化配置模板

dotfiles

  • 什么是dotfile
  • rcm软件
  • 手动修改/生成dotfile
    • 启动脚本 .bash_profile
    • 按键绑定 .inputrc
    • 别名 .alias
    • 其他dotfiles
  • 从github克隆
    • 从Github库中下载代码
    • 让dotfile文件生效
  • GUN stow管理
    • 初始化目录结构
    • 使用Stow
  • 参考文章

在这里插入图片描述

什么是dotfile

每个人都有自己用电脑的习惯,比如命令的简写、关键字的高亮、函数的缩写等等。这些设置都会被我们一劳永逸的设置在配置文件中。但是如果我们更换了电脑,想要快速恢复这些设置,或者我们在网络上找到了一个心仪的别人的配置,想要复刻,我们应该怎样操作呢?这就关系到dotfile的配置和管理。

在Linux系统中,有一些隐藏的以 . 开头的文件,使用 ls -a 就可以看到。这些文件就是dotfile。
在这里插入图片描述

这些文件大多是各种软件的配置文件

比如使用 sudo apt install git 安装了“版本控制工具”,并且使用 git config --global user.name "你的名字"git config --global user.email "你的邮箱@example.com" 设置了全局用户名和邮箱,则会自动创建 ~/.gitconig。不设置用户名和邮箱,git的配置文件不会在安装了git之后自动生成。

在这里插入图片描述

再比如Vim的配置文件 .vimrc ,如果用户未主动配置,Vim会使用内置的默认设置,因此 ~/ 下没有 .vimrc 。Vim的系统级配置问价通常位于 /etc/vim/vimrc ,但用户个人配置需要单独创建。

如果只是进行简单的设置的情况下,可以简单手动创建 touch ~/.vimrc
并在文件中输入下面内容:

# 显示行号
set number# 启用语法高亮
syntax on# 设置缩进为4空格
set tabstop=4
set shiftwidth=4
set expandtab

编译完成后,按下 esc ,输入 :wq,保存并退出,可以发现在路径 ~/ 下新增了关于Vim的配置文件
在这里插入图片描述
可以输入下面的命令查看Vim的配置路径

vim --version | grep "vimrc"

得到类似下面的结果:
在这里插入图片描述
当再次输入

vim ~/.vimrc

进入Vim编辑界面时,会与之前有所不同,显示了行号、关键字高亮和缩进。(不修改直接退出,按下 esc ,输入 :q即可)
在这里插入图片描述

rcm软件

当我们初次使用一些软件时,会花大量的时间对响应的dotfile文件逐一进行配置。但是当我们更换电脑时,又会花费大量时间重新设置。怎样可以快速方便的统一进行设置呢?可以使用Github上开源的rc file management(rcm)软件。这个软件主要思想就是将所有你希望用rcm管理的dotfile移动并集中存储在一个目录中(默认是在 ~/.dotflies 下),并在你的个人目录下创建所有被rcm管理的dotfile的符号连接(symlink)。

可以直接执行下面三行命令下载rcm:

sudo add-apt-repository ppa:martin-frost/thoughtbot-rcm
sudo apt-get update
sudo apt-get install rcm

如果第一次在本地使用rcm,可以使用 mkrc 命令指定要管理哪些文件
当前文件夹 ~/ 下的文件如下所示:
在这里插入图片描述
我想将 .viminfo.vimrc 文件放到 ~/.dotflies 下,方便后续统一管理,使用命令

mkrc .viminfo .vimrc

将指定的dotfiles移动到 ~/.dotflies 目录下并重命名将文件前的 . 去掉,同时在原目录下创建响应的符号链接:
在这里插入图片描述
注意事项:请勿对已经由rcm管理并创建的符号连接使用mkrc命令,否则会让 ~/.dotfiles 下的文件变成指向自己的符号链接并丢失源文件。

手动修改/生成dotfile

启动脚本 .bash_profile

Bash在登录时会按照一下顺序查找配置文件:

  1. ~/.bash_profile
  2. ~/.bash_login
  3. ~/.profile 如果前两个文件不存在,则会加载 3. ~/.profile

大多数Linux发行版(如Ubuntu)默认不自动创建 ~/.bash_profile,而是通过以下文件管理Bash配置

  • ~/.bashrc:用于非登录 Shell(如终端分页或新窗口)。
  • ~/.profile/etc/profile:用于登录 Shell(如系统登录或 SSH 连接)。

如果想要创建 .bash_profile 文件,可以通过以下方法

touch ~/.bash_profile
nano ~/.bash_profile

之后在文件中编辑文件内容,具体内容我参考的Github中webpro开源的代码,内容如下:

# 仅限交互式Shell执行,如果是非交互式的,则直接退出[ -z "$PS1" ] && return# 定位dotfiles目录,确定dotfiles 的存储路径 DOTFILES_DIR
# (assuming ~/.dotfiles on distros without readlink and/or $BASH_SOURCE/$0)
CURRENT_SCRIPT=$BASH_SOURCEif [[ -n $CURRENT_SCRIPT && -x readlink ]]; thenSCRIPT_PATH=$(readlink -n $CURRENT_SCRIPT)DOTFILES_DIR="${PWD}/$(dirname $(dirname $SCRIPT_PATH))"
elif [ -d "$HOME/.dotfiles" ]; thenDOTFILES_DIR="$HOME/.dotfiles"
elseecho "Unable to find dotfiles, exiting."return
fi# 添加自定义工具到 PATHPATH="$DOTFILES_DIR/bin:$PATH"# 加载系统配置文件,批量加载dotfiles/system/ 目录下的配置文件(如函数、别名、环境变量等)for DOTFILE in "$DOTFILES_DIR"/system/.{function,function_*,n,path,env,exports,alias,fzf,grep,prompt,completion,fix,zoxide}; do. "$DOTFILE"
done# macOS特定配置(略)
if is-macos; thenfor DOTFILE in "$DOTFILES_DIR"/system/.{env,alias,function}.macos; do. "$DOTFILE"done
fi# 设置目录颜色eval "$(dircolors -b "$DOTFILES_DIR"/system/.dir_colors)"# 清理与导出unset CURRENT_SCRIPT SCRIPT_PATH DOTFILE
export DOTFILES_DIR

然后分别按下 Ctrl + O 保存和 Ctrl + X退出

别忘了把文件放到 ~/.dotfiles

mkrc .bash_profile

按键绑定 .inputrc

.inputrc用于配置 GNU Readline 库的文件(影响 Bash、Python REPL、MySQL 客户端等工具的输入行为)

系统不会自动创建此文件,除非你手动配置或某些程序需要它。

Readline 的默认配置通常位于 /etc/inputrc,用户无需手动创建 .inputrc 即可使用默认行为。

如果想要创建 .inputrc 文件,可以通过以下方法

touch ~/.inputrc
nano ~/.inputrc

之后在文件中编辑文件内容,具体内容我参考的Github中webpro开源的代码,内容如下:

# 忽略大小写:补全时不区分文件名的大小写
# (如输入 FILE 可补全 file.txt)
set completion-ignore-case on# 显示所有可能项:当有多个补全选项时,直接列出所有结果,无需按两次 Tab。
set show-all-if-ambiguous on# 目录符号链接补全加斜杠:补全符号链接指向的目录时,自动添加 /
# (如 ln -s dir link,补全 link 会变成 link/)。
set mark-symlinked-directories on# 禁用分页显示:补全结果直接全部显示,而非分页
# (类似 ls 与 ls | less 的区别)。
set page-completions off# 提示确认数量:当补全选项超过 200 个时,询问是否显示全部
# (避免意外刷屏)。
set completion-query-items 200# 显示文件类型标识:补全时像 ls -F 一样标记文件类型
# (如目录加 /,可执行文件加 *)。
set visible-stats on# 智能跳过已输入部分:补全时忽略光标后的内容
# (例如输入 cd ~/src/mozil,光标在 z 处按 Tab,补全为 mozilla 而非 mozillail)。
set skip-completed-text on# 允许输入 UTF-8 元字符:支持输入非 ASCII 字符(如中文、Emoji)。
# 允许输出 UTF-8 元字符:正确显示非 ASCII 字符。
# 禁用字符转义:不将特殊字符转换为转义序列(如避免显示 $'\0123\0456')。
set input-meta on
set output-meta on
set convert-meta off# Shift+Tab 遍历补全选项:按 Shift+Tab 反向循环选择补全结果(默认 Tab 正向循环)。
"\e[Z": menu-complete# ”上“键搜索历史命令:根据已输入的前缀过滤历史命令(如输入 git 后按”上“,只显示以 git 开头的历史命令)。
# ”下“键搜索历史命令:同上,向下搜索。
"\e[A": history-search-backward
"\e[B": history-search-forward

然后分别按下 Ctrl + O 保存和 Ctrl + X退出

别忘了把文件放到 ~/.dotfiles

mkrc .inputrc

效果:文件起作用,需要重启虚拟机/电脑,重启之后,可以尝试代码中进行的第一项设置:Tab补齐不需要区分大小写
请添加图片描述

别名 .alias

.alias 文件并非系统默认生成,而是用户手动创建的配置文件,通常用于集中管理命令行别名(alias)

如果想要创建 .bash_profile 文件,可以通过以下方法

touch ~/.alias
nano ~/.alias

之后在文件中编辑文件内容,具体内容我参考的Github中webpro开源的代码,内容如下:

# Shortcutsalias reload="source ~/.bash_profile"
alias _="sudo"
alias g="git"
alias rr="rm -rf"
alias mux="tmuxinator"# Default optionsalias rsync="rsync -vh"
alias json="json -c"
alias psgrep="psgrep -i"# Global aliasesif $(is-supported "alias -g"); thenalias -g G="| grep -i"alias -g H="| head"alias -g T="| tail"alias -g L="| less"
fi# List declared aliases, functions, pathsalias aliases="alias | sed 's/=.*//'"
alias functions="declare -f | grep '^[a-z].* ()' | sed 's/{$//'"
alias paths='echo -e ${PATH//:/\\n}'# Directory listing/traversalLS_COLORIZED=$(is-supported "ls --color" --color -G)
LS_TIMESTYLEISO=$(is-supported "ls --time-style=long-iso" --time-style=long-iso)
LS_GROUPDIRSFIRST=$(is-supported "ls --group-directories-first" --group-directories-first)alias l="ls -lahA $LS_COLORIZED $LS_TIMESTYLEISO $LS_GROUPDIRSFIRST"
alias ll="ls -lA $LS_COLORIZED"
alias lt="ls -lhAtr $LS_COLORIZED $LS_TIMESTYLEISO $LS_GROUPDIRSFIRST"
alias ld="ls -ld $LS_COLORIZED */"
alias lp="stat -c '%a %n' *"unset LS_COLORIZED LS_TIMESTYLEISO LS_GROUPDIRSFIRSTalias ..="cd .."
alias ...="cd ../.."
alias ....="cd ../../.."
alias .....="cd ../../../.."
alias -- -="cd -"                  # Go to previous dir with -
alias cd.='cd $(readlink -f .)'    # Go to real dir (i.e. if current dir is linked)# p/npmalias b="bun"
alias p="pnpm"
alias ncu="npm-check-updates --interactive"
alias ncuw="npm-check-updates --interactive --root --workspaces"# Networkalias ip="curl -s ipinfo.io | jq -r '.ip'"
alias ipl="ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'"# Miscellaneousalias hosts="sudo $EDITOR /etc/hosts"
alias quit="exit"
alias week="date +%V"
alias speedtest="wget -O /dev/null http://speed.transip.nl/100mb.bin"
alias grip="grip --browser --pass=$GITHUB_TOKEN"
alias fkill="ps -e | fzf | awk '{print $1}' | xargs kill"
alias formatmd="remark --use remark-preset-webpro"

基本语法:alias 别名="原名"

然后分别按下 Ctrl + O 保存和 Ctrl + X退出

别忘了把文件放到 ~/.dotfiles

mkrc .inputrc

其他dotfiles

还有 .functions .prompt 等等配置文件。更多请参考Github-webpor的开源

从github克隆

从Github库中下载代码

在home(~)目录下输入git命令即可

git clone https://github.com/webpro/dotfiles.git

让dotfile文件生效

~/.doffiles 目录下的配置文件通过复制或创建符号链接(symlink)的方式,放置到用户的 home (即~) 目录下。否则这些文件不会生效。

注意事项:用户原有的 .bash_profile、.gitconfig 等文件可能已存在,操作前需备份重要文件,避免覆盖或丢失配置。

cp ~/.bash_profile ~/.bash_profile.bak

建议使用符号链接而非直接复制,便于后续同步更新。

上一章手动创建dotfile时,是在home目录下创建的文件,之后用 mkrc 命令将文件移动到 ~/.dotfile 文件夹中,并在原地留下了一个链接

这一章因为我们可以直接在Github库中下载 .dotfile 文件夹,所以在home文件夹下没有链接。因此需要通过 ln 命令创建符号链接

ln -sv ~/.doffiles/.test ~

会有下面的结果
在这里插入图片描述

GUN stow管理

如果我们从Github中下载了一个完整的模板,里面会有很多已经设置好的配置文件,如果我们一条一条使用 ln 命令创建链接,非常麻烦。这时我们可以使用Stow按照软件(即分类的文件夹),统一对文件夹中的配置文件创建链接。

安装Stow

sudo apt install stow

不知道有没有安装,可以使用下面的命令查看

stow --version

如果安装了,就会显示版本号,没安装则会显示找不到命令
在这里插入图片描述
在这里插入图片描述

初始化目录结构

如果是自己手动创建的dotfile,那么可以按照软件分类存储文件,在dotfiles文件夹下创建几个文件夹

mkdir -p ~/.dotfiles/{bash,git,vim,tmux,input,ali}

然后按照分类将对应配置文件放到相应的目录中

mv ~/.bashrc ~/.dotfiles/bash/

假设目录结构如下:

~/.dotfiles/
├── bash/
│   ├── .bashrc
│   └── .bash_profile
├── git/
│   └── .gitconfig
└── vim/└── .vimrc

使用Stow

  • 使用Stow创建符号链接
    ~/.dotfiles 目录下运行

    stow -v -t ~ bash  # 为 bash 配置创建链接到 HOME
    

    -v:显示详细输出。
    -t ~:指定目标目录为 $HOME(默认是上级目录)。
    bash:要链接的模块名(对应 ~/.dotfiles/bash/)。

    效果:
    ~/.dotfiles/bash/.bashrc 会符号链接到 ~/.bashrc。

  • 也可以一次性配置多个模块

    stow -v -t ~ bash git vim
    
  • 删除符号链接(卸载配置)

    stow -D -v -t ~ bash  # 删除 bash 模块的链接
    

    -D:删除(卸载)符号链接,不会删除源文件。

在这里插入图片描述

参考文章

代码主要来源:

  • Github-webpor开源

内容参考:

  • Lars Kappert的博客
  • 简书-wty21cn
  • DeepSeek
  • Stow管理符号链接

相关文章:

Ubuntu 使用dotfiles个性化配置模板

dotfiles 什么是dotfilercm软件手动修改/生成dotfile启动脚本 .bash_profile按键绑定 .inputrc别名 .alias其他dotfiles 从github克隆从Github库中下载代码让dotfile文件生效 GUN stow管理初始化目录结构使用Stow 参考文章 什么是dotfile 每个人都有自己用电脑的习惯&#xff…...

VIVADO IP核整理(二)——FFT

目录 IP 核配置IP 核接口s_axis_config_tdata 配置输入输出端口描述 仿真 参考:FFT IP核 详细介绍 参考:官方文档介绍 IP 核配置 在 IP Catalog 中搜索:Fast Fourier Transform 按照上图所示进行配置,下文对配置内容进行详述。 …...

Excel处理控件Aspose.Cells教程:压缩Excel文件完整指南

Excel 电子表格是管理、分析和可视化数据的有效工具,但随着文件复杂度的增加,它们很快就会变得臃肿。无论是由于数据集庞大、嵌入图片、格式过多还是隐藏工作表,Excel 文件的大小都可能迅速膨胀,导致打开速度变慢、难以通过电子邮…...

AKS 网络深入探究:Kubenet、Azure-CNI 和 Azure-CNI(overlay)

Kubernetes 网络使您能够配置 Kubernetes 网络内的通信。部署 AKS 集群时,有三种网络模型需要考虑: Kubenet 网络 KubeNet 是 AKS 中的基础网络插件。它可以被形象地比喻成大城市的地铁系统。地铁可能无法直接连接所有可能的地点(例如您的服…...

angular的cdk组件库

目录 一、虚拟滚动 一、虚拟滚动 <!-- itemSize相当于每个项目的高度为30px --><!-- 需要给虚拟滚动设置宽高&#xff0c;否则无法正常显示 --> <cdk-virtual-scroll-viewport [itemSize]"40" class"view_scroll"><div class"m…...

unity 使用蓝牙通讯(PC版,非安卓)

BlueTooth in pc with unity 最近接到的需求是在unity里面开发蓝牙功能,其实一开始我并不慌,因为据我所知,unity有丰富的插件可以使用,但是问题随之而来 1.unity里面无法直接与蓝牙通讯(后来找到了开启runtime一类的东西,但是我找了半天也没找到在哪里可以打开) 2.引入dll通过d…...

Feign 重试策略调整:优化微服务通信的稳定性

在微服务架构中&#xff0c;服务之间的通信是常见的场景。然而&#xff0c;网络问题、服务不稳定或临时故障都可能导致通信失败。Feign 是一个流行的声明式 REST 客户端&#xff0c;广泛用于微服务间的通信。通过合理调整 Feign 的重试策略&#xff0c;可以显著提高系统的稳定性…...

Nacos源码—5.Nacos配置中心实现分析一

大纲 1.关于Nacos配置中心的几个问题 2.Nacos如何整合SpringBoot读取远程配置 3.Nacos加载读取远程配置数据的源码分析 4.客户端如何感知远程配置数据的变更 5.集群架构下节点间如何同步配置数据 1.关于Nacos配置中心的几个问题 问题一&#xff1a;SpringBoot项目启动时如…...

【spring】Spring、Spring MVC、Spring Boot、Spring Cloud?

这些都是 Spring 家族的重要组成部分&#xff0c;但它们各自定位不同、功能层级不同&#xff0c;可以用一张表格和简要说明来帮你快速理解&#xff1a; 一、四者概念和区别表格 名称功能定位主要用途/核心功能是否依赖其他部分Spring基础框架&#xff08;核心&#xff09;IOC、…...

RDD的处理过程

1. 创建RDD 通过SparkContext的parallelize方法从本地集合创建RDD。 从外部存储&#xff08;如HDFS、本地文件系统&#xff09;加载数据创建RDD。 通过对已有RDD进行转换操作生成新的RDD。 2. 转换操作&#xff08;Transformation&#xff09; 对RDD进行操作&#xff08;如…...

Vue3 中当组件嵌套层级较深导致 ref 无法直接获取子组件实例时,可以通过 provide/inject + 回调函数的方式实现子组件方法传递到父组件

需求&#xff1a;vue3中使用defineExposeref调用子组件方法报错不是一个function 思路&#xff1a;由于组件嵌套层级太深导致ref失效&#xff0c;通过provide/inject 回调函数来实现多层穿透 1. 父组件提供「方法注册函数」 父组件通过 provide 提供一个用于接收子组件方法…...

如何在Ubuntu上安装NVIDIA显卡驱动?

作者&#xff1a;算力魔方创始人/英特尔创新大使刘力 一&#xff0c;前言 对于使用NVIDIA显卡的Ubuntu用户来说&#xff0c;正确安装显卡驱动是获得最佳图形性能的关键。与Windows系统不同&#xff0c;Linux系统通常不会自动安装专有显卡驱动。本文将详细介绍在Ubuntu系统上安…...

Linux 修改bond后网关不生效的问题

1.前言 bond原本是OK的&#xff0c;但是某个同事变更后&#xff0c;发现网关路由存在问题 #查看路由&#xff0c;默认网关信息&#xff0c;发现没有配置的网关信息 ip route show #排查/etc/sysconfig/network-script/下面的ifcfg-* 文件没有问题 1.重启network 服务 systemct…...

chili调试笔记13 工程图模块 mesh渲染 mesh共享边显示实现

把模型投影到工程图要用什么模块当工程图的画板&#xff0c;最后要导出dxf的 three是怎么读取他的3d数据的 mesh不是三角形吗怎么渲染出四边形面的 我想看到三角形的边怎么设置 ai让我干嘛我就干嘛 static getAllEdges(face: { positions: Float32Array; indices: Uint16Array …...

Eclipse 插件开发 5 编辑器

Eclipse 插件开发 5 编辑器 1 编辑器描述2 自定义编辑器2.1 注册插件(plugin.xml)2.2 继承 EditorPart2.3 实现 IEditorInput2.4 打开编辑器 1 编辑器描述 Eclipse 的 UI 基于 Workbench&#xff08;工作台&#xff09;模型&#xff0c;Editor Area 是 Workbench 的核心区域之…...

Java消息队列性能优化实践:从理论到实战

Java消息队列性能优化实践&#xff1a;从理论到实战 1. 引言 在现代分布式系统架构中&#xff0c;消息队列&#xff08;Message Queue&#xff0c;MQ&#xff09;已经成为不可或缺的中间件组件。它不仅能够实现系统间的解耦&#xff0c;还能提供异步通信、流量削峰等重要功能…...

Android学习总结之Binder篇

一、Binder 跨进程通信底层实现 Q1&#xff1a;Binder 如何实现一次完整的跨进程方法调用&#xff1f;请描述内核态与用户态交互流程 高频错误&#xff1a;仅回答 “通过 AIDL 生成代码”&#xff0c;未涉及 Binder 驱动三层协作模型 满分答案&#xff08;附内核交互流程图&a…...

very_easy_sql(SSRF+SQL注入)

题目有一行提示&#xff1a; you are not an inner user, so we can not let you have identify~&#xff08;你不是内部用户&#xff0c;所以我们不能让你进行身份验证&#xff09;联想到可能存在SSRF漏洞&#xff0c;一般情况下&#xff0c;SSRF攻击的目标是外网无法访问的内…...

MCP认证全解析:从零到微软认证专家

MCP认证全解析&#xff1a;从零到微软认证专家 什么是MCP认证&#xff1f; Microsoft Certified Professional&#xff08;MCP&#xff09;是由微软官方颁发的技术认证&#xff0c;旨在验证IT从业者在微软技术栈&#xff08;如Azure、Windows Server、SQL Server等&#xff0…...

leetcode刷题日记——反转链表

[ 题目描述 ]&#xff1a; [ 思路 ]&#xff1a; 题目要求将链表中指定位置的部分进行翻转反转的部分&#xff0c;其实可以看做使用头插法插入链表运行如下&#xff1a; struct ListNode* reverseBetween(struct ListNode* head, int left, int right) {struct ListNode te…...

【day04】Fibonacci数列 | 单词搜索 | 杨辉三角

1.Fibonacci数列 题目链接&#xff1a; Fibonacci数列_牛客题霸_牛客网 解题思路&#xff1a; 求斐波那契数列的过程中&#xff0c;判断⼀下&#xff1a;何时n会在两个fib数之间。 #include <bits/stdc.h>using namespace std;#define int long longsigned main() {i…...

win11指定Microsoft Print To PDF的输出路径(电子书djvu转pdf输出路径)

首先&#xff0c;看一张效果图 前面都是废话&#xff0c;解决方法看最后&#xff0c;看最后 Microsoft Print To PDF功能作为Windows操作系统内置的一项便捷工具&#xff0c;为用户提供了将任何可打印内容高效转换为PDF格式的能力。本文深入探讨了Microsoft Print To PDF的工作…...

第3章 数据和C

目录 3.1 示例程序3.2 变量与常量数据3.3 数据&#xff1a;数据类型关键字3.4 C数据类型3.4.1 int类型3.4.2 其它整数类型3.4.3 使用字符&#xff1a;char类型3.4.4 _Bool类型3.4.5 可移植的类型&#xff1a;inttypes.h3.4.6 float、double和long double类型3.4.7 复数和虚数类…...

迁移学习:如何加速模型训练和提高性能

&#x1f4cc; 友情提示&#xff1a; 本文内容由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;创作平台的gpt-4-turbo模型生成&#xff0c;旨在提供技术参考与灵感启发。文中观点或代码示例需结合实际情况验证&#xff0c;建议读者通过官方文档或实践进一步确认其准…...

Kotlin zip 函数的作用和使用场景

1. zip 函数的作用 zip 是 Kotlin 集合操作中的一个函数&#xff0c;用于将两个集合按照索引一一配对&#xff0c;生成一个新的 List<Pair<T, R>> 集合。 作用&#xff1a;将两个集合的元素按位置组合成键值对&#xff08;Pair&#xff09;。返回值&#xff1a;一…...

通用分布式锁组件

Redisson的分布式锁使用并不复杂&#xff0c;基本步骤包括&#xff1a; 1&#xff09;创建锁对象 2&#xff09;尝试获取锁 3&#xff09;处理业务 4&#xff09;释放锁 但是&#xff0c;除了第3步以外&#xff0c;其它都是非业务代码&#xff0c;对业务的侵入较多&#x…...

FastDFS,分布式文件存储系统,介绍+配置+工具类

FastDFS 什么是分布式文件存储系统 随着文件逐渐增多&#xff0c;单台计算机已经存储不下这么多数据&#xff0c;需要用多台计算机存储不同的数据或进行备份&#xff0c;这样就需要有一个管理系统管理不同的计算机节点&#xff0c;这就是分布式管理系统。 使用分布式管理系统的…...

查询nvidia边缘设备的软硬件版本jetson_release

通过jetson_release命令可查询nvidia边缘设备的软硬件版本 nvidianvidia-desktop:~/leo/test_onnx$ jetson_release Software part of jetson-stats 4.2.12 - (c) 2024, Raffaello Bonghi Model: NVIDIA Orin Nano Developer Kit - Jetpack 5.1.1 [L4T 35.3.1] NV Power Mode[…...

[学习]RTKLib详解:ppp.c与ppp_ar.c

文章目录 RTKLib详解&#xff1a;ppp.c与ppp_ar.cPart A&#xff1a; ppp.c一、整体作用与工作流程二、核心函数说明1. pppos2. res_ppp3. tide_solid4. prectrop5. corrmeas6. udbias_ppp 三、数学原理补充四、代码特点 Part B: ppp_ar.c一、整体作用与工作流程分析二、函数功…...

ntdll!LdrpSnapThunk函数分析之LdrpNameToOrdinal函数返回之后得到函数地址

第一部分&#xff1a; OrdinalNumber LdrpNameToOrdinal( ImportString, ExportDirectory->NumberOfNames, DllBase, NameTableBase, …...

LeetCode 267:回文排列 II —— Swift 解法全解析

文章目录 摘要描述题解答案题解代码分析统计字符频率判断是否可能构成回文构建半边字符数组回溯生成半边排列 示例测试及结果时间复杂度空间复杂度实际使用场景&#xff1a;回文排列在真实项目里能干啥&#xff1f;文本处理、数据清洗类系统游戏开发&#xff1a;名字合法性验证…...

【渗透测试】命令执行漏洞的原理、利用方式、防范措施

文章目录 命令执行漏洞的原理、利用方式、防范措施一、原理**1. 定义与触发条件****2. 攻击链流程图** 二、利用方式**1. 利用手法与分类**(1) 系统命令注入(2) 代码执行漏洞(3) 框架漏洞利用 **2. 案例** 三、防范措施**1. 输入过滤与验证****2. 禁用危险函数****3. 安全开发*…...

旧版谷歌浏览器Chrome v116.0.5845.141下载

63位和32位均有&#xff1a; https://bbs.pcbeta.com/forum.php?modviewthread&tid1978299 https://www.31du.cn/open/google-chrome-v116-0-5845-141.html v116.0.5845.141的win32位版本&#xff1a; https://www.cr173.com/soft/435106.html v116.0.5845.97版本&…...

行业洞察| 当大模型开始协同工作:多智能体系统的崛起与挑战

你有没有想过&#xff0c;如果一群AI智能体拉了个工作群&#xff0c;它们会聊些什么&#xff1f; 程序员AI&#xff1a;“这段代码我来写&#xff01;” 产品经理AI&#xff1a;“需求还没说完呢&#xff01;” 辩论家AI&#xff1a;“我觉得这个方案不行&#xff01;” 吃瓜…...

The Action Replay Process

Preface A commonly used inequality − x > ln ⁡ ( 1 − x ) , 0 < x < 1 -x > \ln(1 - x), \quad 0 < x < 1 −x>ln(1−x),0<x<1 Proof: Let f ( x ) ln ⁡ ( 1 − x ) x f(x) \ln(1 - x) x f(x)ln(1−x)x, for 0 < x < 1 0 < …...

Python基于Django的病人信息管理系统及安全策略分析(附源码,文档说明)

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…...

YOLOv1:开创实时目标检测新纪元

一、引言 在计算机视觉领域&#xff0c;目标检测一直是重要的研究方向&#xff0c;广泛应用于自动驾驶、安防监控、智能机器人等场景。2016年&#xff0c;Joseph Redmon等人提出的YOLO&#xff08;You Only Look Once&#xff09;v1模型&#xff0c;以其端到端、单阶段、实时性…...

【今日三题】跳台阶扩展问题(找规律) / 包含不超过两种字符的最长子串 / 字符串的排列(回溯—全排列)

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 跳台阶扩展问题(找规律)包含不超过两种字符的最长子串(字符串哈希)字符串的排列(回溯—全排列) 跳台阶扩展问题(找规律) 跳台阶扩…...

MySQL 中常见的日志

1. MySQL 中常见的日志有哪些&#xff1f; MySQL 主要包含以下几种日志&#xff1a; 错误日志&#xff08;Error Log&#xff09;&#xff1a;记录 MySQL 服务器的启动和停止过程中的信息&#xff0c;以及运行过程中出现的错误或警告信息。默认情况下&#xff0c;错误日志文件…...

ubuntu nobel + qt5.15.2 设置qss语法识别正确

问题展示 解决步骤 首选项里面的高亮怎么编辑选择都没用。如果已经有generic-highlighter和css.xml&#xff0c;直接修改css.xml文件最直接&#xff01; 在generic-highlighter目录下找到css.xml文件&#xff0c;位置是&#xff1a;/opt/Qt/Tools/QtCreator/share/qtcreator/…...

线程池技术

线程池基本概念 线程池就是在任务还没有到来前&#xff0c;预先创建一定数量的线程放入空闲列表。这些线程都是处于阻塞状态&#xff0c;不消耗CPU&#xff0c;但占用较小的内存空间。 当新任务到来时&#xff0c;缓冲池选择一个空线程&#xff0c;把任务传入此线程中运行&…...

matlab App自动化安装和卸载

这个是文件mlappinstall安装和卸载的使用函数&#xff0c;并且包括运行函数。File must be a toolbox file (*.mlappinstall) Package and Share Apps — Functions matlab.apputil.createCreate or modify app project file interactively using the Package App dialog box…...

MATLAB技巧——命令行输入的绘图,中文是正常的,到了脚本(m文件)里面就变成乱码的解决方法

文章目录 文件编码&#xff08;根本性措施&#xff09;字体设置使用 sprintf 或 text 函数系统语言设置示例代码 使用mlx方法 总结 在 M A T L A B MATLAB MATLAB中&#xff0c;中文字符在命令行和脚本中的显示问题通常与字符编码设置有关。以下是一些可能导致中文乱码的原因及…...

使用OpenCV 和 Dlib 实现人脸融合技术

文章目录 引言一、技术概述二、环境准备三、关键代码解析1. 人脸关键点定义2. 获取人脸掩模3. 计算仿射变换矩阵4. 检测并提取人脸关键点5. 颜色校正 四、完整流程五、效果展示六、总结 引言 本文将介绍如何使用Python、OpenCV和dlib库实现人脸融合技术&#xff0c;将一张人脸…...

Codeforces Round 1022 (Div. 2)

Problem - A - Codeforces 看这数据量&#xff0c;算出每个排列来&#xff0c;是不现实的&#xff0c;需要找找规律 来看找规律代码 #include <bits/stdc.h> using namespace std;int main() {int t;cin >> t;while (t--){int n;cin >> n;vector<int&g…...

uniapp 震动功能实现

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 在项目中有时候需要一些功能&#xff0c;比如震动 描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 在移动应用中&#xff0c;震动反馈是提升用户体验的重要方式。uniapp 提供了两种震…...

uniapp 搭配 uCharts

在插件市场导入插件到项目中 <view class"charts-box-main"> <qiun-data-charts type"area" :opts"opts" :chartData"chartData" /> </view> data&#xff08;&#…...

Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装

1执行下面的命令修改上一篇中yaml文件来实现定制化安装devops kubectl edit cm -n kubesphere-system ks-installer 主要是将devops几个配置由False改为True 然后使用下面的命令查看安装日志 kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l …...

阿里云codeup以及本地gitclone+http

cmd命令行乱码问题、解决 chcp 65001 git代码提交 git add . git commit -m init git push origin master...

Spring Boot 多数据源事务管理

在 Spring Boot 中&#xff0c;当需要操作多个数据源时&#xff0c;事务管理会变得更加复杂。因为默认的 DataSourceTransactionManager 只支持单数据源事务&#xff0c;跨数据源的事务需要使用 分布式事务&#xff08;Distributed Transaction&#xff09; 或 柔性事务&#x…...