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

思考:(linux) tmux 超级终端快速入门的宏观思维

tmux 工具集合 
GitHub - rothgar/awesome-tmux: A list of awesome resources for tmux  

要点:

  • 习惯性思维的变换
  • 与宿主机之间的双向复制、粘贴
  • 手动备份全部窗口,以及还原
  • 自定义窗格提示信息
  • TPM 插件的安装思想
  • 别名

   

  • 在有些场景里,可能无法取代通用终端?为止?

tmux 目前在各大 linux 发行版中,都默认安装了。这也许是目前最好用的终端了?

但是,由于它默认是为键盘用户设计的;因此,如果要使用鼠标,还需要做进一步的配置。

  • 官方提供了鼠标的基本配置命令,但是,需要用户自己在 .tmux.conf 配置文件中开启。
  • 使用第三方插件,需要安装插件官方的说明来安装和配置。
  • tmux 官方提供了许多的用于功能扩展的基础配置接口语句,类似于 API 接口函数,比如鼠标开启设置,默认没有开启鼠标。这些可以由用户自己,或者第三方插件开发者进行功能扩展的主要参考依据。

思维变换:

  • prefix 前缀(默认 Ctrl+b,也可自定义):相当于 Shift,Ctrl,Alt 之类的功能键。使用命令前缀来取代通常的功能按键的好处:避免与系统、或其他 app 发生快捷键冲突。
  • 还原窗口的操作:
    原生方法:
    ## tmux attach(或简写为 tmux a)用于重新连接到通过关闭终端、
    # 或者,之前通过 tmux detach(快捷键 Ctrl+b d)分离的会话,恢复其运行状态。
    tmux a 	# SSH 断连后恢复工作环境7 恢复断开会话‌ 	
    tmux a -t session_name 	# 同时处理多个任务8 ‌多会话管理‌ 	
    第三方方法:
    tmux-plugins / tmux-resurrect ,可以将当前 tmux 的所有场景进行备份和还原。prefix +Ctrl+s / prefix +Ctrl+r 备份/还原。这个插件可以持久化直到窗格所使用的历史命令,虽然 tmux 官方也有相关的命令,只不过有些简陋而已。
    注意区别:
    1. tmux a :直接进入上一次 tmux退出时自动默认保存的场景。
    2. tmux a -t session_name :指定进入的 sesssion。
    3. tmux-resurrect :Ctrl+r 恢复上一次用户手动保存时的场景。
    4. tmux :创建新会话 session,并进入该session默认的 0号窗口。
  • tmux-plugins 有许多的插件,使用 TPM 的好处是不需要一个一个地下载和配置。只要在 ~/.tmux.conf 中设置好了;然后,在 tmux 终端里操作prefix --> Shift+i(大写 I),下载和安装就可以自动完成了(安装过程需要连接到 github)。

  • 复制与粘贴的思维:tmux 自有剪切板,只能在 tmux 的各个会话,窗口,窗格之间进行使用。如果 tmux 要与宿主机之间进行双向的复制与粘贴,还需要自行解决。
    在 tmux 终端里,prefix+Ctrl+c 指将 tmux 剪切板的内容拷贝到系统剪切板。在宿主机里,还需要 Ctrl+v才能完成粘贴的操作。
    prefix +Ctrl+v 指将系统剪切板的内容,拷贝到 tmux 当前有效的光标处(如果当前在 tmux 中的光标不在有效位置,在粘贴不成功)。

  • 鼠标复制操作:鼠标选择文本,放开左键后,直接就已经完成的文本的复制了。点击滚轮键,即粘贴。

    ## 鼠标操作。tmux 官方本身就具有的功能,但是,需要用户自己开启了,才能使用。
    # 启用鼠标和 vi 键位(可选)
    set -g mouse on
    set-window-option -g mode-keys vi
  • 手动复制粘贴操作:Tmux 的两种键位操作模式为 ‌vi 模式‌ 和 ‌emacs 模式‌,用于控制文本编辑、复制粘贴等操作。
    复制文本 Ctrl+b ---松开,再按---> [(开口向右)--- vi 模式下按空格 ---> 然后,开始用方向键选择需要复制的文本 ---> 敲 enter 结束复制。
    粘贴:在有效光标处按 Ctrl+b ---松开,再按---> ](开口向左)。
     vi 模式需要用户自己在 .tmux.conf 里开启。默认是  ‌emacs 模式。

    ##  ~/.tmux.conf 中设置默认模式。全部注释掉,就是默认的 emasc 模式。
    # 设为 vi 模式
    set-window-option -g mode-keys vi
    # 设为 emacs 模式
    set-window-option -g mode-keys emacs
    


     

需要关注:

  • 可选:tmux-continuum 自动备份、恢复插件,可能是版本不兼容,OS 定时服务,或是其他问题,没有安装成功。无关紧要的,因为可以使用手动的方式进行动备份、恢复。
  •  tmux-yank 插件:Tmux plugin for copying to system clipboard. Works on OSX, Linux and Cygwin. 好像只是单向的。最后是直接采用 sh 脚本来实现。

  • 虽然可以自定义 prefix,将 Ctrl+b 改为其他的。但是,好像没有必要吧?
    如果想追求快捷,就使用别名好了。只需要创建几个别名就可以了,其他的都可以使用鼠标来操作。

  • tmux 这个工具火,所以有许多人为它提供了第三方插件扩展。但未必就是自己所需要的。工具而已,在漂亮它还是工具。

理解 Session、Window、Pane 关键区别

概念作用类比
会话(Session)管理多个窗口的集合浏览器“用户配置文件”
窗口(Window)同一会话中的不同任务标签页浏览器“标签页”
窗格(Pane)同一窗口中的分屏终端终端“分屏”

掌握这三者的关系,可以高效利用 Tmux 管理复杂的终端工作流!

备注:

说实话,英文有几十万、上百万的词汇,中文字少,翻译过来的概念就变成了4不象,难以理解。“会话”这个概念就是一个怪胎,不容易理解。

说白了,Session、Window、Pane 的本质,就是一种窗口的管理模式、或方式而已。

  • 为什么需要会话?本质上,相当于软件开发工具 IDE 中的项目管理,暂且叫会话项目吧?它的好处就是在管理多个项目时,可以让其中一个项目处在激活状态,其他项目处在非激活状态。在同一个会话中的各个窗口都是有一定关系的,或者人为地认为它们有关系。
    特点:每一个会话项目都是独立的,关闭或打开不会影响其他的会话项目,就像在 IDE 中的项目管理那样。每个项目,每个会话,都是一个独立的被管理对象。
  • 为什么需要窗口?就像在同一个项目中,可以有多个源文件,每打开一个源文件,这个源文件就独占了当前的窗口。也可以通过标签图标来切换不同的源文件显示到当前的窗口。
  • 为什么需要窗格?在打开一个源文件之后,可能还需要打开其他的子窗口,如变量显示窗口,信息输出端口等等。窗格的效果也是如此。

与 IDE 不同,Session、Window、Pane 的具体用途,完全是由用户自己来定义。

从窗口管理的角度来说,Session、Window、Pane 就是一种窗口的组织和管理方式而已。从使用的角度来说,任何一个窗口或窗格的用途,可以是一样的。只不过将窗格定义为完全一样的用途,有时是没有什么意义的?

tmux 有一种模式,可以让 N个窗口实现完全一样的操作(需要开启),好处是所有的终端端口,分别连接到不同的服务器,在一个窗格里执行 apt update,那么,所有窗格都在执行相同的命令。

  • 会话?相同与 VSCode 中的不同文件夹,每个文件夹最好就是被解释、被作为是一个独立的项目。
  • 窗口?同栏浏览。在同一个标签菜单栏中进行浏览。通过在 tmux 的底部标签菜单,可以同时浏览到不同的窗口名称标签。每个窗口,相当于在 IDE 中的不同源文件标签菜单。
    类似于 firefox 浏览器中的网页标签,每一个标签对应于一个完整的网页,只不过 firefox网页标签默认在顶部,而 tmux 窗口标签默认在底部。
  • 窗格?同窗浏览。一个窗口被分割成几个子窗口。比如:docker build ,docker run ,docker log 等等,分别单独占用一个窗口;这样做的好处:与通常用途的终端窗口来比较吧,普通终端运行完了docker build ,docker run ,docker log之后,要想再次进行 docker build ,那么,就要按3次?向上箭头,或者需要输入命令,太麻烦了;打开多个终端,或多个标签,相比之下也麻烦。如果在输入了一堆命令之后,再想回到之前输入过的某个命令,就更麻烦了。多窗口终端解决了这个痛点。

其他说明

  • 使用设置到 ~/.bashrc 中的自定义别名,高效输入命令。当然,最好采用专门的别名文件。
    ## ~/.bashrc
    ## 加载目录下所有别名文件
    for file in ~/aaa-my-all/my-alias/*; doif [ -f "$file" ]; then. "$file"fi
    done
    
  • 其他更多的功能,在一般使用场景里,应该不需要吧?
  • 其他命令格式,以后再补充。反正网络上很容易就找到;

在不同窗格中的标识问题

  Easy Bash Prompt Generator  

用途:手动自定义 tmux 各个窗格的不同提示符

简单用途没有必要使用 如 Starship 工具吧?

## ~/.bashrc## 手动设置。其他工具设置,由于版本等问题,安装配置,麻烦? 
custom_terminal‌_prompt() {# "$1" 这里使用自定义内容local container_name="$1"# echo "custom_shell_prompt"export PS1="\[\e[33m\]"$1"\[\e[m\]:\[\e[32m\]\w\[\e[m\] \n \$ "  # 可替换为下面“可选设置”中的某条语句
}
alias ctp='custom_terminal‌_prompt'## 注意,上面的函数,到此结束。不要复制下面的代码。
##===========================
## 可选设置
# 色号178(比172稍亮)
export PS1="\[\e[38;5;178;1m\]$1\[\e[m\]:\[\e[32m\]\w\[\e[m\] \n \$ "
# 色号172
export PS1="\[\e[38;5;172;1m\]$1\[\e[m\]:\[\e[32m\]\w\[\e[m\] \n>\$ "
# 色号166(更饱和的橙)
export PS1="\[\e[38;5;166;1m\]$1\[\e[m\]:\[\e[32m\]\w\[\e[m\] \n \$ "

用法:

# 在终端里输入
ctp 这里使用自定义内容 ctp dev
ctp log

  

将当前 tmux 所有的会话、窗口、窗格等等进行备份和恢复:还是使用插件方便

安装插件 tmux-plugins /tpm :Tmux Plugin Manager

 
GitHub - tmux-plugins/tmux-resurrect: Persists tmux environment across system restarts.   

1. 下载到指定的目录下

git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

2. Reload TMUX environment so TPM is sourced: 刷新环境变量,类似于 source ~/.bashrc

# type this in terminal if tmux is already running
tmux source ~/.tmux.conf

3. Installing plugins  安装插件

上面提到的下载插件,只是下载了相当于是绿色软件而已。

  • 已经相当于是绿色软件了,为什么还需要安装:因为该 app 的成功运行,还需要创建有关的文件夹、文件,以及环境变量设置等等,
  1. Add new plugin to ~/.tmux.conf with set -g @plugin '...'
  2. Press prefix + I (capital i, as in Install) to fetch the plugin. (此步骤,需要在 tmux 终端里运行)

You're good to go! The plugin was cloned to ~/.tmux/plugins/ dir and sourced.

4. 在 .tmux.conf 的末尾,需要加入

# 官方:Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)

run '~/.tmux/plugins/tpm/tpm'

与宿主机之间的 复制、粘贴 功能:自己搞一个更方便。

## 例子## ~/.tmux.conf
# V0.21
## # type this in terminal if tmux is already running
# tmux source ~/.tmux.conf# 启用鼠标和 vi 键位(可选)
set -g mouse on
set-window-option -g mode-keys vi## ubuntu 只需要安装 sudo apt install xsel
## 虽然也可以使用 wl-copy ,但需要安装,没有必要安装那么多不同的剪切板。除非 xsel 不能用了?
# 绑定 Ctrl+B Ctrl+c 复制到系统剪贴板
bind C-c run-shell "\if tmux show-buffer > /dev/null 2>&1; then \if [ \"$XDG_SESSION_TYPE\" = wayland ] && command -v wl-copy >/dev/null; then \tmux save-buffer - | wl-copy; \else \tmux save-buffer - | xsel -i -b; \fi; \else \tmux display-message 'No content in tmux buffer!'; \fi"# 可选:绑定 Ctrl+B Ctrl+v 从剪贴板粘贴(反向操作)
bind C-v run-shell "\tmux set-buffer \"$(if [ \"$XDG_SESSION_TYPE\" = wayland ] && command -v wl-paste >/dev/null; then \wl-paste; \else \xsel -o -b; \fi)\"; \tmux paste-buffer"#### 启用插件 TPM 
# ------------------------
## 启用插件管理器
set -g @plugin 'tmux-plugins/tpm'
# 添加自动备份插件:确保 tmux-resurrect 在 tmux-continuum 之前加载:
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'
## 启用自动恢复
## set -g @continuum-boot 'on' # 设置了,不成功 https://github.com/tmux-plugins/tmux-continuum/blob/master/docs/automatic_start.md
set -g @continuum-restore 'on'## 修改备份路径‌
# set -g @resurrect-dir '~/.tmux_backups'#### 最后:运行 TPM
run '~/.tmux/plugins/tpm/tpm'

resurrect 插件备份与恢复

路径搜索优先顺序:

这个目录需要用户自己创建,优先级高。当这个目录存在时,就不会再使用 ~/.local/share/tmux/resurrect/ ,这个 linux app 的惯用伎俩。

~/.tmux/resurrect/

默认安装时,使用这个目录,优先级低。

~/.local/share/tmux/resurrect/

如果需要备份,就打包 resurrect 这个目录好了。

last 这个链接文件,总是指向最新生成的 .txt 文件。修改这个链接文件的指向,可以恢复到指定的备份文件。一般没有必要吧?

一般 linux 发行版默认已经安装了 tmux。

可以

sudo apt install tmux

 如果必须的功能没有的话,也可以编译安装最新版的。

$ sudo make uninstall
[sudo] password for test: ( cd '/usr/local/bin' && rm -f tmux )  # 手动删除
## 安装 失败git clone https://github.com/tmux/tmux.git
cd tmux
sh autogen.sh
./configure && make
# ---------------sudo make install
make[1]: Entering directory '/home/test/aa/aa/tmux'/usr/bin/mkdir -p '/usr/local/bin'/usr/bin/install -c tmux '/usr/local/bin'
make  install-exec-hook
make[2]: Entering directory '/home/test/aa/aa/tmux'
if test xmdoc = xmdoc; then \sed -e "s|@SYSCONFDIR@|/etc|g" ./tmux.1 \>./tmux.1.mdoc; \
else \sed -e "s|@SYSCONFDIR@|/etc|g" ./tmux.1| \gawk -f ./mdoc2man.awk >./tmux.1.man; \
fi
/usr/bin/mkdir -p /usr/local/share/man/man1
/usr/bin/install -c -m 644 ./tmux.1.mdoc \/usr/local/share/man/man1/tmux.1
make[2]: Leaving directory '/home/test/aa/aa/tmux'
make[1]: Nothing to be done for 'install-data-am'.
make[1]: Leaving directory '/home/test/aa/aa/tmux'

tmux-3.5a

## 安装 ok# tmux-3.5a
#-----------------------sudo make install
[sudo] password for test: 
make[1]: Entering directory '/home/test/Downloads/aazzz/tmux-3.5a'/usr/bin/mkdir -p '/usr/local/bin'/usr/bin/install -c tmux '/usr/local/bin'
make  install-exec-hook
make[2]: Entering directory '/home/test/Downloads/aazzz/tmux-3.5a'
if test xmdoc = xmdoc; then \sed -e "s|@SYSCONFDIR@|/etc|g" ./tmux.1 \>./tmux.1.mdoc; \
else \sed -e "s|@SYSCONFDIR@|/etc|g" ./tmux.1| \gawk -f ./mdoc2man.awk >./tmux.1.man; \
fi
/usr/bin/mkdir -p /usr/local/share/man/man1
/usr/bin/install -c -m 644 ./tmux.1.mdoc \/usr/local/share/man/man1/tmux.1
make[2]: Leaving directory '/home/test/Downloads/aazzz/tmux-3.5a'
make[1]: Nothing to be done for 'install-data-am'.
make[1]: Leaving directory '/home/test/Downloads/aazzz/tmux-3.5a'

相关文章:

思考:(linux) tmux 超级终端快速入门的宏观思维

tmux 工具集合 GitHub - rothgar/awesome-tmux: A list of awesome resources for tmux 要点: 习惯性思维的变换与宿主机之间的双向复制、粘贴手动备份全部窗口,以及还原自定义窗格提示信息TPM 插件的安装思想别名 在有些场景里,可能无法…...

JavaScript基础-全局作用域

在JavaScript中,理解不同种类的作用域是掌握这门语言的关键之一。作用域决定了变量和函数的可访问性(即可见性和生命周期)。其中,全局作用域是最基本也是最宽泛的作用域类型。本文将深入探讨全局作用域的概念、特点及其使用时需要…...

【MCAL】TC397+EB-tresos之I2c配置实战(同步、异步)

I2C总线是Philips公司在八十年代初推出的一种串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。本篇文章首先从理论讲起,介绍了英飞凌TC3x系列芯片对应MCAL中对I2C驱动的定义与介绍,建议读者在阅读本篇文章之前对I2C有个简单的认识…...

电网拓扑分析:原理与应用

在现代电力系统中,电网拓扑分析是一项至关重要的技术,它为电力系统的安全、稳定和高效运行提供了坚实的基础。电网拓扑描述了电力系统中各元件(如发电机、变压器、输电线路、负荷等)之间的连接关系,通过拓扑分析&#…...

leetcode-hot-100(哈希)

写在前面 这部分官方标记为哈希,下面的代码使用的都是 C 进行实现,说到 C 中的哈希,需要了解一下 C 中的 hashtable(std::unordered_map或std::unordered_set)。 std::unordered_map std::unordered_map 是一个存储…...

音频类网站或者资讯总结

我爱音频网: 我爱音频网 - 我们只谈音频,丰富的TWS真无线蓝牙耳机拆解报告 (52audio.com) 其他更多资讯 音频行业全品类深度剖析,2024市场趋势解读汇总-EDN 电子技术设计 (ednchina.com)...

优选算法——前缀和

目录 1. 数组的中心下标 2. 除自身以外数组的乘积 3. 和为k的子数组 4. 和可被K整除的子数组 5. 连续数组 6. 矩阵区域和 1. 数组的中心下标 题目链接:724. 寻找数组的中心下标 - 力扣(LeetCode) 题目展示: 题目分析&am…...

VScode密钥(公钥,私钥)实现免密登录【很细,很全,附带一些没免密登录成功的一些解决方法】

一、 生成SSH密钥对 ssh-keygen 或者 ssh-keygen -t rsa -b 4096区别:-t rsa可以明确表示生成的是 RSA 类型的密钥-b参数将密钥长度设置为 4096 位默认:2048 位密钥不指定-t参数,ssh -keygen默认也可能生成 RSA 密钥【确保本机安装ssh&#…...

MySQL进阶篇2_SQL优化、锁

文章目录 1 SQL优化1.1插入数据优化1.2主键优化页分裂页合并主键设计原则 1.3order by设计优化1.4group by设计优化小理解 1.5limit设计优化顺序IO和随机IO小疑惑 1.6count设计优化1.7update优化关于隐式事务事务的DML操作 锁全局锁表级锁表锁元数据锁意向锁 行级锁锁的释放条件…...

Yocto项目实战经验总结:从入门到高级的全面概览

本文面向开发者和实际项目经验者,分享经过大量实战积累的 Yocto 项目工程经验和基础技巧。本文简明但精彩,应用和观察相结合,充分适合做为全面进阶 Yocto 项目开发的实用指南。 一、入门理解:Yocto 是什么?规划如何开始…...

关于web3

主流看法,集合当前网络上的大部分资料的看法? 基于区块链运行的交易系统?面向的交易市场是基于世界的,由于将整个世界的交易联系起来,所以底层区块链就类似于一个非常大的分布式系统,由于需要在各个地区都…...

以影像为笔,劳润智在世界舞台上书写艺术之路

在光影交织中,摄影师劳润智的镜头仿佛能穿透喧嚣,捕捉人类情感最细腻的脉动。从疫情下洛杉矶裁缝日常的温馨瞬间,到象征自由与解脱的飞鸟影像,再到探索时间与空间交错的抽象作品,每一幅作品都展现了他对艺术的深度追求与对生活的温柔洞察。 劳润智的作品为他赢得了多个国际奖项…...

2025python学习笔记

一.Python语言基础入门 第一章 01.初识Python Python的起源: 1989年,为了打发圣诞节假期,Gudio van Rossum吉多范罗苏姆(龟叔)决心开发一个新的解释程序(Python维形)1991年,第一个…...

数学相关使用笔记

1、样本标准差计算步骤整理 1. 基础数据 数据样本:[44.530, 44.023, 43.837, 44.213, 44.498] 样本量:n5 2. 计算步骤 (1) 求均值 总和 44.53044.02343.83744.21344.498 221.101 均值 221.101/5 44.2202 (2) 求平方差 ① (44.530-44.2202) 0.3…...

0.环境初始化

容器化部署 Nginx 前端文件在 html\hmdp 下,挂载到 /usr/share/nginx/html 下 所以要求 nginx.conf : root /usr/share/nginx/html; index index.html; 反向代理:proxy_pass http://host.docker.internal:8081; listen 80; 因为容器内端…...

数仓-范式建模、维度建模、雪花模型、星型模型对比及其适用范围

1. 范式建模 定义 范式建模是一种基于关系型数据库设计的建模方法,遵循数据库的范式规则(如第一范式、第二范式、第三范式等),通过消除数据冗余、规范化字段和表结构来优化存储。数据被分解为多个表,通过外键关系进行…...

批量导出docker镜像

#!/bin/bash # 创建备份目录 BACKUP_DIR"docker_images_single_backup" mkdir -p "$BACKUP_DIR" # 遍历所有镜像 docker images --format "{{.Repository}}:{{.Tag}} {{.ID}}" | while read -r line; do # 提取镜像名称和ID REPO_TAG$(echo …...

棒球裁判员学习指南·棒球1号位

针对棒球裁判员的规则学习与能力提升指南,包含系统性学习路径和实践建议,帮助裁判员高效掌握规则并提升执法水平: 一、基础规则体系构建 1. 官方规则精读 核心文件:完整研读《世界棒垒球联盟(WBSC)官方规…...

vue注册用户使用v-model实现数据双向绑定

定义数据模型 Login.vue //定义数据模型 const registerData ref({username: ,password: ,confirmPassword: })使用 v-model 实现数据模型的key与注册表单中的元素之间的双向绑定 <!-- 注册表单 --><el-form ref"form" size"large" autocompl…...

BM14 链表的奇偶重排

20250510 题目我的解法❗️问题描述&#xff1a;为什么会报 OutOfMemoryError&#xff1f;&#x1f50d;详细分析✅如何修复&#xff1f;✅推荐修改方案&#xff08;正确版本&#xff09;✅为什么这样改有效&#xff1f;&#x1f9ea;测试示例✅总结 修改 题目 我的解法 impor…...

Client 和 Server 的关系理解

client.py 和 server.py 是基于 MCP&#xff08;Multi-Component Protocol&#xff09;协议的客户端-服务端架构&#xff0c;二者的关系如下&#xff1a; 1. 角色分工 server.py&#xff1a;服务端&#xff0c;负责注册和实现各种“工具函数”&#xff08;如新闻检索、情感分…...

Checkmk实战指南:从零构建企业级监控系统

在当今复杂的IT环境中,监控系统如同运维团队的"眼睛"和"耳朵",而Checkmk正是一款能够帮助企业实现全方位监控的开源利器。本文将带您从零开始,通过8个关键步骤构建一个功能完备的监控系统,涵盖从安装部署到高级优化的完整流程。 一、为什么选择Checkm…...

多模态大模型中的视觉分词器(Tokenizer)前沿研究介绍

文章目录 引言MAETok背景方法介绍高斯混合模型&#xff08;GMM&#xff09;分析模型架构 实验分析总结 FlexTok背景方法介绍模型架构 实验分析总结 Emu3背景方法介绍模型架构训练细节 实验分析总结 InternVL2.5背景方法介绍模型架构 实验分析总结 LLAVA-MINI背景方法介绍出发点…...

车载电子电器架构 --- 汽车网关概述

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...

JVM对象创建内存分配

对象创建的主要流程&#xff1a; 检查加载类–》分配内存–》初始化–》设置对象头–》实例化&#xff0c;执行init方法。 在内存分配中&#xff0c;虚拟机将为新生对象内存分配 Minor GC : 新生代垃圾收集&#xff0c;特点是频繁&#xff0c;回收速度快&#xff1b; Full GC …...

project从入门到精通(五)

目录 创建资源的基本信息 在project中创建资源工作表 ​编辑信息详解 最大单位 标准费率与加班费率 每次使用成本 成本累算 基准日历 三类资源工作表的总结——不同的资源必须要设置的属性 除了资源名称是必须设置的之外&#xff0c;剩余的资源的可设置选项如下图所…...

研发效率破局之道阅读总结(5)管理文化

研发效率破局之道阅读总结(5)管理文化 Author: Once Day Date: 2025年5月10日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可参考专栏: 程序的艺术_Once-Day…...

Java常用类概述

Java常用类概述 一、字符串三剑客1. String&#xff08;不可变字符串&#xff09;2. StringBuilder&#xff08;可变&#xff0c;线程不安全&#xff09;3. StringBuffer&#xff08;可变&#xff0c;线程安全&#xff09; 二、日期时间类&#xff08;重点掌握新版API&#xff…...

202535| Kafka架构与重要概念+幂等性+事务

好的&#xff01;以下是关于 Kafka 架构 以及其 重要概念 的详细介绍&#xff0c;结合 Mermaid 图形 和 表格&#xff0c;帮助你更好地理解各个概念的关系和作用。 Kafka 架构与重要概念 Kafka 是一个分布式消息系统&#xff0c;广泛应用于日志收集、流处理、事件驱动架构等场…...

MySQL 索引和事务

目录 一、MySQL 索引介绍 1、索引概述 2、索引作用 3、索引的分类 &#xff08;1&#xff09;普通索引 &#xff08;2&#xff09;唯一索引 &#xff08;3&#xff09;主键索引 &#xff08;4&#xff09;组合索引&#xff08;最左前缀&#xff09; &#xff08;5&…...

IPFS与去中心化存储:重塑数字世界的基石

引言 在数据爆炸式增长的数字时代&#xff0c;中心化存储的弊端日益凸显——数据垄断、隐私泄露、单点故障等问题频发。IPFS&#xff08;InterPlanetary File System&#xff09; 作为一种去中心化存储协议&#xff0c;正与区块链技术共同推动一场存储革命。本文将深入解析IPF…...

Web3 学习全流程攻略

目录 🧭 Web3 学习全流程攻略 🌱 第一阶段:打好基础(Web3 入门) 🧠 目标: 📚 学习内容: ✅ 推荐资源: 🧑‍💻 第二阶段:技术栈搭建(成为 Web3 开发者) 🧠 目标: 📚 学习内容: ✅ 推荐资源: 🌐 第三阶段:构建完整 DApp(去中心化应用)…...

AUTODL Chatglm2 langchain 部署大模型聊天助手

资源申请 注册登录 进入下面的链接 AutoDL算力云 | 弹性、好用、省钱。租GPU就上AutoDLAutoDL为您提供专业的GPU租用服务&#xff0c;秒级计费、稳定好用&#xff0c;高规格机房&#xff0c;7x24小时服务。更有算法复现社区&#xff0c;一键复现算法。https://autodl.com/ho…...

牛客练习赛138

牛客练习赛138 A.小s的签到题 思路&#xff1a;过题人数最多的就是签到题 #include <bits/stdc.h> using namespace std; typedef long long ll; typedef pair<int, char> PII;bool cmp(PII a, PII b) {return a.first > b.first; }void solve() {int n;cin …...

【脑机接口临床】脑机接口手术的风险?脑机接口手术的应用场景?脑机接口手术如何实现偏瘫康复?

脑机接口的应用 通常对脑机接口感兴趣的两类人群&#xff0c;一类是适应症患者 &#xff0c;另一类是科技爱好者。 1 意念控制外部设备 常见的外部设备有&#xff1a;外骨骼、机械手、辅助康复设备、电刺激设备、电脑光标、轮椅。 2 辅助偏瘫康复或辅助脊髓损伤患者意念控制…...

普通IT的股票交易成长史--股价起伏的真相-缺口(2)

声明&#xff1a;本文章的内容只是自己学习的总结&#xff0c;不构成投资建议。价格行为理论学习可参考简介中的几位&#xff0c;感谢他们的无私奉献。 送给自己的话&#xff1a; 仓位就是生命&#xff0c;绝对不能满仓&#xff01;&#xff01;&#xff01;&#xff01;&…...

基于NI-PXI的HIL系统开发

基于NI-PXI平台的汽车电控单元HIL系统开发全解析 引言&#xff1a;HIL系统如何成为汽车电控开发的“效率倍增器”&#xff1f; 某车企通过基于NI-PXI的HIL系统&#xff0c;将悬架控制器的测试周期从3个月压缩至2周&#xff0c;故障检出率提升65%。这背后是硬件在环技术对汽车电…...

IOC和Bean

IOC IOC将对象的创建&#xff0c;依赖关系的管理和生命周期的控制从应用程序代码中解耦出来了 IOC容器的依赖注入(DI) 在程序运行过程中动态的向某个对象中注入他所需要的其他对象 依赖注入是基于反射实现的 Spring IOC 容器使用的是Map&#xff08;concorrentMap&#xff…...

助力你的Neovim!轻松管理开发工具的魔法包管理器来了!

在现代编程环境中&#xff0c;Neovim 已经成为许多开发者的编辑器选择。而针对 Neovim 的各种插件与功能扩展&#xff0c;则是提升开发体验的重要手段。今天我们要介绍的就是一个强大而便捷的开源项目——mason.nvim&#xff0c;一个旨在简化和优化 Neovim 使用体验的便携式包管…...

AI与机器人学:从SLAM到导航的未来

AI与机器人学&#xff1a;从SLAM到导航的未来 系统化学习人工智能网站&#xff08;收藏&#xff09;&#xff1a;https://www.captainbed.cn/flu 文章目录 AI与机器人学&#xff1a;从SLAM到导航的未来摘要引言技术路线对比1. 传感器融合架构&#xff1a;纯激光 vs 多模态2. …...

C++学习之模板初阶学习

今天我们来学习C中模板的学习。但是模板是C中比较难的部分&#xff0c;因此本节我们直接出相对比较初阶的部分。 目录 泛型编程 函数模板 函数模板格式 函数模板的原理 函数模板的特性 函数模板的实例化 模板参数的匹配原则 类模板 类模板定义格式 类模板实例化 泛型…...

专业级软件卸载工具:免费使用,彻底卸载无残留!

在数字生活节奏日益加快的今天&#xff0c;我们的电脑就像每天都在"吃进"各种软件。但您是否注意到&#xff0c;那些看似消失的程序其实悄悄留下了大量冗余文件&#xff1f;就像厨房角落里积攒的调味瓶空罐&#xff0c;日积月累就会让系统变得"消化不良"。…...

JSON|cJSON 介绍以及具体项目编写

一、JSON介绍 JSON&#xff08;JavaScript Object Notation 即JavaScript对象表示法&#xff09;是一种轻量级的数据交换格式。采用完全独立于编程语言的文本格式来存储和表示数据。 JSON是一种数据交换格式.JSON独立于编程语言(你不必学习JavaScript).JSON表达数据的方式对通…...

Cell | 大规模 单细胞图谱 揭示非小细胞肺癌抗PD-1治疗后的免疫微环境异质性

–https://doi.org/10.1016/j.cell.2025.03.018 A single-cell atlas reveals immune heterogeneity in anti-PD-1-treated non-small cell lung cancer 留意更多内容&#xff1a;组学之心 研究简介 背景与问题 非小细胞肺癌&#xff08;NSCLC&#xff09;术后复发率高。新…...

光流 | 基于深度学习的光流估计算法汇总,原理,公式,流程图,代码

基于深度学习的光流算法 一、光流估计的基本原理二、基于深度学习的光流估计算法1. **FlowNet系列**2. **FlowNet 2.0**3. **PWC-Net**4. **RAFT(Recurrent All-Pairs Field Transformers)**5. **LiteFlowNet系列**三、算法流程图示例FlowNet2.0架构PWC-Net金字塔处理流程四、…...

常见的算法介绍

算法概述线性回归(Linear Regression)线性回归是一种通过属性的线性结合来进行预测的线性模型, 其目的是找到一条直线, 一个平面或者更高维的超平面, 使预测值和真实值之间的误差最小化逻辑回归(Logistic Regression)逻辑回归是一种分类模型, 入二分类公式 P ( Y 1 ∣ X ) e …...

【基于 LangChain 的异步天气查询1】异步调用 Open-Meteo API 查询该城市当前气温

目录 一、功能概述 二、文件结构 三、城市天气实时查询&#xff08;运行代码&#xff09; weather_runnable.py main.py 运行结果 四、技术亮点 五、使用场景 一、功能概述 它实现了以下主要功能&#xff1a; 用户输入地点&#xff08;城市名&#xff09; 构造提示词…...

深入解析JavaScript变量作用域:var、let、const全攻略

在JavaScript中&#xff0c;变量作用域是一个核心概念&#xff0c;它决定了变量的可访问性和生命周期。理解变量作用域对于编写清晰、高效且无错误的代码至关重要。本文将深入探讨JavaScript中不同类型的变量声明方式&#xff08;var、let、const等&#xff09;&#xff0c;分析…...

C33-函数嵌套及编码实战

我们以一个编程题目的实践来学习此部分内容 题目:输入四个数,以函数的方式找出最大值 思维:使用两个数找出较大值→较大值与第三个数比较得出新的较大值→新的较大值与第四个数比较得出最大值 代码 #include <stdio.h>//内层函数的封装int GetMaxFromTwoNums(int a,int…...

clangd与clang-tidy

Clangd是基于Clang的Language Server&#xff0c;主要用于提供代码补全、跳转定义、错误提示等IDE功能。而Clang-Tidy则是静态代码分析工具&#xff0c;用于检查代码中的潜在问题&#xff0c;比如风格违规、潜在bug等。 clangd 核心工作原理 1. 基于编译器的精准解析 底层引擎…...