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

VS Code 远程连接服务器:Anaconda 环境与 Python/Jupyter 运行全指南。研0大模型学习(第六、第七天)

VS Code 远程连接服务器:Anaconda 环境与 Python/Jupyter 运行全指南

在使用 VS Code 通过 SSH 远程连接到服务器进行开发时,尤其是在进行深度学习等需要特定环境的工作时,正确配置和使用 Anaconda 环境以及理解不同的代码运行方式非常关键。本文将梳理在 VS Code 远程连接环境下,如何管理 Anaconda 环境并运行 Python 代码(包括 .py 文件和 .ipynb 文件)。

我的环境 setup

  • 本地: Visual Studio Code
  • 远程服务器: 通过 VS Code Remote-SSH 连接
  • 服务器软件: 安装了 Anaconda
  • Anaconda 环境: 创建了名为 pytorch_env 的虚拟环境,用于深度学习。
  • VS Code 插件:远程服务器上安装了 VS Code 的 Python 插件和 Jupyter 相关插件。

Anaconda 环境与 Jupyter

远程服务器上安装 Anaconda 后,默认的 base 环境通常会直接包含 Jupyter Notebook 和 JupyterLab。但是,我们自己创建的虚拟环境(例如 pytorch_env)默认是“干净”的,不包含 Jupyter 相关组件。

为了在特定的虚拟环境(如 pytorch_env)中使用 Jupyter 的功能(包括在 VS Code 中运行 .ipynb 文件或使用交互式窗口),我们需要在这个环境中安装必要的库。

核心需求:在 pytorch_env 环境下使用 Jupyter 内核

步骤如下:

  1. 激活 pytorch_env 环境:
    打开 VS Code 的集成终端(确保它连接的是你的远程服务器),然后执行:

    conda activate pytorch_env
    
  2. 在该环境下安装 ipykernel
    ipykernel 是连接 Jupyter 和 Python 环境的关键库。在已经激活 pytorch_env 的终端中执行:

    pip install ipykernel
    
  3. 设置该环境为 Jupyter 内核(可选但推荐):
    安装 ipykernel 通常会自动注册内核,但手动执行可以确保 VS Code 和 Jupyter 能够识别这个环境。在激活 pytorch_env 的终端中执行:

    python -m ipykernel install --user --name=pytorch_env --display-name="PyTorch Env (pytorch_env)"
    

    这里的 --display-name 是你在 VS Code 的内核列表中看到的环境名称,可以根据喜好设置。

完成以上步骤后,你的 pytorch_env 环境就已经具备了作为 Jupyter 内核的能力。

在 VS Code 中选择 Jupyter 内核

现在,当你新建或打开一个 .ipynb 文件时,VS Code 会提示你选择一个内核。

选择内核时,你会看到类似这样的选项:

正确的选择是点击 “Python 环境…”

点击后,VS Code 会列出它在远程服务器上检测到的所有 Python 环境(包括 base 和你创建的 pytorch_env)。你应该在列表中找到并选择你的 pytorch_env

这样做的好处是,你不需要手动在服务器上运行 jupyter notebookjupyter lab 命令来启动一个完整的 Jupyter Server。VS Code 会利用你选择的具备 ipykernel 的 Python 环境,在后台为你处理启动和管理 Jupyter 内核的底层细节。

不要选择“现有 Jupyter 服务器…”,那个选项用于连接一个已经在服务器上独立运行起来的 Jupyter Server 实例,通常需要你手动启动该服务器并提供 URL 和 Token。

选择好 pytorch_env 内核后,你就可以在 .ipynb 文件中编写和运行代码了。

理解不同的 Python 代码运行方式

除了在 .ipynb 文件中运行,VS Code 还提供了其他运行 Python 代码的方式。理解它们的区别,特别是它们与 Jupyter 的关系,有助于选择最适合当前任务的方式。

首先明确一点:无论采用哪种方式,你的代码最终都是由服务器上的 Python 解释器(特别是来自你指定的 Conda 环境,如 pytorch_env)来执行的。区别在于运行时的界面执行模式工作目录

1. 在终端上运行 Python 文件(.py
  • 模式: 这是最传统、标准的 Python 脚本执行模式。
  • 过程:
    1. 你打开一个终端(可以是 VS Code 的集成终端,也可以是直接通过 SSH 连接的终端)。
    2. 激活你的目标环境(例如:conda activate pytorch_env)。
    3. 输入命令 python your_script_name.py 来运行整个 .py 文件。
  • 执行: 代码会从 .py 文件的第一行开始,一直执行到最后,是一次性的、线性的过程。
  • 输出: 所有通过 print() 打印的内容会显示在终端窗口中。
  • 交互性: 非常低。代码执行过程中你通常无法方便地暂停、查看中间变量的值或分步执行。
  • 工作目录: 通常是你执行 python 命令时,终端所在的那个目录。这是导致相对文件路径问题的一个常见原因。
  • 与 Jupyter 的关系: 这不是在 Jupyter 上运行。 这仅仅是使用指定的 Python 解释器来执行一个普通的 Python 脚本。
2. 在交互式窗口中运行(配合 .py 文件使用)
  • 模式: 这是 VS Code 提供的一种类似 Jupyter Notebook 的交互式代码执行模式,但你的代码仍然保存在标准的 .py 文件中。
  • 过程:
    1. 你打开一个 .py 文件。
    2. 可以在文件中使用 # %% 等标记将代码划分为不同的块(被称为“代码 cell”)。
    3. 点击代码块旁边的“运行 cell”按钮。
    4. VS Code 会自动启动或连接到一个独立的“Python 交互式”窗口。
  • 执行: 你可以灵活地选择文件中的某一个或某几个代码块进行执行。代码的执行状态(如定义的变量、函数定义等)会在整个交互式窗口的会话期间保持。
  • 输出: print 的内容、代码的返回值、甚至 Matplotlib 绘制的图表会直接显示在交互式窗口中,通常是代码块的下方,而不是在终端。
  • 交互性: 很高。非常适合在开发过程中进行探索、测试、调试和查看中间结果。
  • 工作目录: 通常默认为 .py 文件所在的目录(但这有时可以在 VS Code 设置中进行配置)。这是导致相对路径问题在终端和交互式窗口表现不同的原因之一。
  • 与 Jupyter 的关系: 底层使用了 Jupyter 的技术,特别是 Jupyter 内核。 VS Code 在后台启动一个 Jupyter 内核(基于你选择的 Python 环境)来管理和执行交互式窗口中的代码。你可以认为它是在 VS Code 这个界面下,由 .py 文件内容驱动的一种“Jupyter 体验”。
3. 在 Jupyter Notebook(.ipynb)中运行
  • 模式: 这是 Jupyter 平台最经典的原生交互式文档模式。文件本身(.ipynb)就包含了代码、代码输出、以及使用 Markdown 编写的文本和说明。
  • 过程:
    1. 你打开一个 .ipynb 文件。
    2. VS Code 会以 Notebook 界面打开它。
    3. 你需要选择一个 Jupyter 内核(也就是一个安装了 ipykernel 的 Python 环境)来运行这个 Notebook。
  • 执行: 代码被组织在不同的 cell 中,你可以逐个运行 cell。代码的执行状态在整个 Notebook 会话期间保持。
  • 输出: 代码输出、图表、甚至 HTML 等富文本内容会直接显示在对应的代码 cell 下方,并会与 Notebook 文件内容一起保存。
  • 交互性: 非常高。是专为交互式探索、数据分析和结合代码与文档进行演示而设计的。
  • 工作目录: 通常是 .ipynb 文件所在的目录。
  • 与 Jupyter 的关系: 这就是在 Jupyter 上运行。 VS Code 在这里充当了 Jupyter 的一个功能强大的客户端界面。

因此在终端上运行Python文件和在交互式窗口运行Python文件时他们的工作目录不同,因此使用相对路径无法同时在这两个模式下运行。要运行的话得改成绝对路径

解决终端环境显示异常 (pytorch_env) (base)

你提到在终端中看到了类似 (pytorch_env) (base) 这样的提示,这表明可能出现了环境嵌套或环境变量混淆的情况。这不是正常现象,通常终端提示符应该只显示一个当前激活的环境名称(例如 (pytorch_env)(base))。

让我们来修复这个问题:

  1. 退出所有 Conda 环境:
    连续执行 conda deactivate 命令,直到终端提示符不再显示任何环境名称为止。通常执行两次 conda deactivate 就够了,因为 conda deactivate 只退出最内层的环境。

    conda deactivate
    conda deactivate
    

    (根据实际情况可能需要执行更多次)

  2. 重新激活你想要使用的环境:
    例如,重新激活 pytorch_env

    conda activate pytorch_env
    

    此时,终端提示符应该只显示 (pytorch_env)

如果这个问题经常发生,可能是你的 shell 配置文件(如 ~/.bashrc, ~/.zshrc 等)中有重复的环境激活或 Conda 初始化设置。可以检查这些文件,确保 conda init 只被执行一次,并且没有其他代码会导致环境意外激活。

知识点总结

  • 远程服务器中安装 Anaconda 后,默认的 base 环境通常会直接包含了 jupyter notebookjupyter labipykernel 等库。
  • 你自己使用 conda create 创建的新环境默认是最小化的,不自动包含 Jupyter 相关库(特别是 ipykernel)。
  • 要在自定义环境中利用 Jupyter 功能(Notebook 或交互式窗口),核心是确保该环境中安装了 ipykernel
  • VS Code 远程连接时,通过选择正确的 Python 环境(安装了 ipykernel 的环境),可以直接利用该环境作为 Jupyter 内核,无需手动启动完整的 Jupyter Server。

总结与选择

  • 在终端运行 .py 标准 Python 脚本执行 (不是 Jupyter)。适用于最终运行、自动化。
  • 在交互式窗口运行 .py 利用了 Jupyter 内核的能力,在 VS Code 中提供类似 Notebook 的交互体验,代码仍在 .py 文件中。适用于开发、调试。
  • 在 VS Code 中运行 .ipynb VS Code 提供了原生的 Jupyter Notebook 功能和界面,这就是在 Jupyter 上进行操作。适用于探索、文档、结合代码与输出。

你可以根据当前所处的开发阶段和需求,选择最适合的运行方式。在 VS Code 中进行深度学习开发,通常建议优先使用 .ipynb 文件或 .py 文件配合交互式窗口,以利用其强大的交互和可视化能力。


相关文章:

VS Code 远程连接服务器:Anaconda 环境与 Python/Jupyter 运行全指南。研0大模型学习(第六、第七天)

VS Code 远程连接服务器:Anaconda 环境与 Python/Jupyter 运行全指南 在使用 VS Code 通过 SSH 远程连接到服务器进行开发时,尤其是在进行深度学习等需要特定环境的工作时,正确配置和使用 Anaconda 环境以及理解不同的代码运行方式非常关键。…...

chili3d调试6 添加左侧面板

注释前 一个一个注释看对应哪个窗口 无事发生 子方法不是显示的窗口 注释掉看看 没了 注释这个看看 零件页面没了 这个浏览器居然完全不用关的,刷新就重载了 注释看看 无工具栏版本 sidebar: 往框框里面加入 div({ className: style.input }, user_…...

Python变量全解析:从基础到高级的命名规则与数据类型指南

一、变量基础与内存机制 1.1 变量的三元构成 每个Python变量由三个核心要素构成: ​标识(Identity)​:对象的内存地址,通过id(obj)获取(如id(name)输出0x5a1b2c3d)​类型(Type&am…...

组装一台intel n95纯Linux Server服务器

前言 笔者自己的电脑是macmini m4,平时都是使用虚拟机来充当Linux服务器(系统Ubuntu Server),但是毕竟是ARM CPU,而且黄金内存,开不了几个虚拟机(加内存不划算),所以组装…...

计算机网络中的网络层:架构、功能与重要性

一、网络层概述 在计算机网络的分层模型中,网络层(Network Layer)位于 数据链路层 之上,传输层 之下。网络层的主要任务是处理数据包的路由选择、转发以及分段,使得信息能够从源设备传送到目标设备。它还通过 IP协议&…...

Transformer系列(一):NLP中放弃使用循环神经网络架构

NLP中放弃使用循环神经网络架构 一、符号表示与概念基础二、循环神经网络1. 依赖序列索引存在的并行计算问题2. 线性交互距离 三、总结 该系列笔记阐述了自然语言处理(NLP)中不再采用循环架构(recurrent architectures)的原因&…...

(学习总结34)Linux 库制作与原理

Linux 库制作与原理 库的概念静态库操作归档文件命令 ar静态库制作静态库使用 动态库动态库制作动态库使用与运行搜索路径问题解决方案方案2:建立同名软链接方案3:使用环境变量 LD_LIBRARY_PATH方案4:ldconfig 方案 使用外部库目标文件ELF 文…...

【QT】 QT中的列表框-横向列表框-树状列表框-表格列表框

QT中的列表框-横向列表框-树状列表框-表格列表框 1.横向列表框(1)主要方法(2)信号(3) 示例代码1:(4) 现象:(5) 示例代码2:加载目录项在横向列表框显示(6) 现象: 2.树状列表框 QTreeWidget(1)使用思路(2)信号(3)常用的接口函数(4) 示例代码&am…...

使用DeepSeek的AIGC的内容创作者,如何看待陈望道先生所著的《修辞学发凡》?

目录 1.从修辞手法的运用角度 2.从语言风格的塑造角度 3.从提高创作效率角度 4.从文化传承与创新角度 大家好这里是AIWritePaper官方账号,官网👉AIWritePaper~ 《修辞学发凡》是陈望道 1932 年出版的中国第一部系统的修辞学著作,科学地总…...

使用 GitHub Actions 和 Nuitka 实现 Python 应用(customtkinter ui库)的自动化跨平台打包

目录 引言前置准备配置文件详解实现细节CustomTkinter 打包注意事项完整配置示例常见问题 引言 在 Python 应用开发中,将源代码打包成可执行文件是一个常见需求。本文将详细介绍如何使用 GitHub Actions 和 Nuitka 实现自动化的跨平台打包流程,支持 W…...

【Part 2安卓原生360°VR播放器开发实战】第一节|通过传感器实现VR的3DOF效果

《VR 360全景视频开发》专栏 将带你深入探索从全景视频制作到Unity眼镜端应用开发的全流程技术。专栏内容涵盖安卓原生VR播放器开发、Unity VR视频渲染与手势交互、360全景视频制作与优化,以及高分辨率视频性能优化等实战技巧。 📝 希望通过这个专栏&am…...

【1】云原生,kubernetes 与 Docker 的关系

Kubernetes?K8s? Kubernetes经常被写作K8s。其中的数字8替代了K和s中的8个字母——这一点倒是方便了发推,也方便了像我这样懒惰的人。 什么是云原生? 云原生: 它是一种构建和运行应用程序的方法,它包含&am…...

基于Redis实现RAG架构的技术解析与实践指南

一、Redis在RAG架构中的核心作用 1.1 Redis作为向量数据库的独特优势 Redis在RAG架构中扮演着向量数据库的核心角色,其技术特性完美契合RAG需求: 特性技术实现RAG应用价值高性能内存存储基于内存的键值存储架构支持每秒百万级的向量检索请求分布式架构…...

trivy开源安全漏洞扫描器——筑梦之路

开源地址:https://github.com/aquasecurity/trivy.git 可扫描的对象 容器镜像文件系统Git存储库(远程)虚拟机镜像Kubernetes 在容器镜像安全方面使用广泛,其他使用相对较少。 能够发现的问题 正在使用的操作系统包和软件依赖项…...

pnpm确认全局下载安装了还是显示cnpm不是内部或外部命令,也不是可运行的程序

刚开始是正常使用的。突然开始用不了了一直报错 1.在确保自己node和npm都一直正常使用并且全局安装pnpm的情况下 打开cmd查看npm的环境所在位置 npm config get prefix 2.接着打开高级系统设置 查看自己的path配置有没有问题 确认下载了之后pnpm -v还报错说明没有查询到位置 …...

基于 pnpm + Monorepo + Turbo + 无界微前端 + Vite 的企业级前端工程实践

基于 pnpm Monorepo Turbo 无界微前端 Vite 的企业级前端工程实践 一、技术演进:为什么引入 Vite? 在微前端与 Monorepo 架构落地后,构建性能成为新的优化重点: Webpack 构建瓶颈:复杂配置导致开发启动慢&#…...

软考高级系统架构设计师-第15章 知识产权与标准化

【本章学习建议】 根据考试大纲,本章主要考查系统架构设计师单选题,预计考3分左右,较为简单。 15.1 标准化基础知识 1. 标准的分类 分类 内容 国际标准(IS) 国际标准化组织(ISO)、国际电工…...

MySQL 视图

核心目标: 学习如何创建和使用视图,以简化复杂的查询、提供数据访问控制、实现逻辑数据独立性,并通过 WITH CHECK OPTION 保证数据一致性。 什么是视图? 视图(View)是一种虚拟表,其内容由一个 …...

[操作系统] 信号

信号 vs IPC 板书最后提到了 “信号 vs IPC”,暗示了信号也是一种进程间通信 (Inter-Process Communication, IPC) 的机制。虽然信号的主要目的是事件通知,但它也可以携带少量的信息(即信号的类型)。 初探“信号”——操作系统的“…...

网络基础(协议,地址,OSI模型、Socket编程......)

目录 一、计算机网络发展 二、协议 1.认识协议 2.OSI七层模型 3.TCP/IP 五层(或四层)模型 4.协议本质 三、网络传输流程 1.MAC地址 2.协议栈 3.IP地址 IP地址 vs MAC地址 1. 核心区别 2. 具体通信过程类比 3. 关键总结 为什么需要两者? 4.协议栈图解…...

产品经理学习过程

一:扫盲篇(初始产品经理) 阶段1:了解产品经理 了解产品经理是做什么的、产品经理的分类、产品经理在实际工作中都会接触什么样的岗位、以及产品经理在实际工作中具体要做什么事情。 二:准备篇 阶段2:工…...

深入理解Java包装类:自动装箱拆箱与缓存池机制

深入理解Java包装类:自动装箱拆箱与缓存池机制 对象包装器 Java中的数据类型可以分为两类:基本类型和引用类型。作为一门面向对象编程语言, 一切皆对象是Java语言的设计理念之一。但基本类型不是对象,无法直接参与面向对象操作&…...

Linux中的信号量

目录 信号量概念 定义 操作 类型 应用 信号量封装 一、创建信号量 头文件 函数原型 参数说明 返回值 示例 二、设置信号量初始值 头文件 函数原型 参数解释 返回值 示例 三、信号量的P操作 头文件 函数原型 参数解释 返回值 示例 四、信号量的V操作 示…...

深入理解linux操作系统---第15讲 Web 服务器 Nginx

15.1 Nginx 概述 核心特性与历史背景 Nginx由俄罗斯工程师Igor Sysoev于2002年开发,2004年正式发布,旨在解决传统服务器(如Apache)的C10K问题(即单机万级并发连接处理)。其采用事件驱动(Event…...

深度解析算法之前缀和

25.【模版】一维前缀和 题目链接 描述 输入描述 输出描述 输出q行,每行代表一次查询的结果. 示例 输入: 3 2 1 2 4 1 2 2 3 复制 输出: 3 6 这个题的话就是下面的样子,我们第一行输入 3 2的意思即是这个数组是3个元素大小的数组&…...

混合精度训练中的算力浪费分析:FP16/FP8/BF16的隐藏成本

在大模型训练场景中,混合精度训练已成为降低显存占用的标准方案。然而,通过NVIDIA Nsight Compute深度剖析发现,‌精度转换的隐藏成本可能使理论算力利用率下降40%以上‌。本文基于真实硬件测试数据,揭示不同精度格式的计算陷阱。…...

6.8 Python定时任务实战:APScheduler+Cron实现每日/每周自动化调度

Python定时任务实战:APScheduler+Cron实现每日/每周自动化调度 实现每日和每周定时任务 关键词:定时任务调度、Python 原生调度器、Cron 脚本、异常重试机制、任务队列管理 1. 定时任务架构设计 采用 分层调度架构 实现灵活的任务管理: #mermaid-svg-PnZcDOgOklVieQ8X {f…...

[Android] 豆包爱学v4.5.0小学到研究生 题目Ai解析

[Android] 豆包爱学 链接:https://pan.xunlei.com/s/VOODT6IclGPsC7leCzDFz521A1?pwdjxd8# 拍照解析答案 【应用名称】豆包爱学 【应用版本】4.5.0 【软件大小】95mb 【适用平台】安卓 【应用简介】豆包爱学,一般又称河马爱学教育平台app,河马爱学。 关…...

swift-12-Error处理、关联类型、assert、泛型_

一、错误类型 开发过程常见的错误 语法错误(编译报错) 逻辑错误 运行时错误(可能会导致闪退,一般也叫做异常) 2.1 通过结构体 第一步 struct MyError : Errort { var msg: String } 第二步 func divide(_ …...

每日定投40刀BTC(14)20250409 - 20250419

定投 坚持 《磨剑篇》浮生多坎壈,志业久盘桓。松柏凌霜易,骅骝涉险难。砺锋临刃缺,淬火取金残。但使精魂在,重开万象端。...

【刷题Day20】TCP和UDP(浅)

TCP 和 UDP 有什么区别? TCP提供了可靠、面向连接的传输,适用于需要数据完整性和顺序的场景。 UDP提供了更轻量、面向报文的传输,适用于实时性要求高的场景。 特性TCPUDP连接方式面向连接无连接可靠性提供可靠性,保证数据按顺序…...

大数据建模与评估

文章目录 实战案例:电商用户分群与价值预测核心工具与库总结一、常见数据挖掘模型原理及应用(一)决策树模型(二)随机森林模型(三)支持向量机(SVM)模型(四)K - Means聚类模型(五)K - Nearest Neighbors(KNN)模型二、运用Python机器学习知识实现数据建模与评估(一…...

Python语法系列博客 · 第6期[特殊字符] 文件读写与文本处理基础

上一期小练习解答(第5期回顾) ✅ 练习1:字符串反转模块 string_tools.py # string_tools.py def reverse_string(s):return s[::-1]调用: import string_tools print(string_tools.reverse_string("Hello")) # 输出…...

Pandas取代Excel?

有人在知乎上提问:为什么大公司不用pandas取代excel? 而且列出了几个理由:Pandas功能比Excel强大,运行速度更快,Excel除了简单和可视化界面外,没有其他更多的优势。 有个可怕的现实是,对比Exce…...

《解锁图像“高清密码”:超分辨率重建之路》

在图像的世界里,高分辨率意味着更多细节、更清晰的画面,就像用高清望远镜眺望远方,一切都纤毫毕现。可现实中,我们常被低分辨率图像困扰,模糊的监控画面、老旧照片里难以辨认的面容……不过别担心,图像超分…...

杨校老师课堂之C++入门练习题梳理

采用C完成下列题目,要求每题目的时间限制:1秒 内存限制:128M 1. 交换个位与十位的数字 时间限制:1秒 内存限制:128M 题目描述 试编写一个程序,输入一个两位数,交换十位与个位上的数字并输出。 …...

基于springboot的老年医疗保健系统

博主介绍:java高级开发,从事互联网行业六年,熟悉各种主流语言,精通java、python、php、爬虫、web开发,已经做了六年的毕业设计程序开发,开发过上千套毕业设计程序,没有什么华丽的语言&#xff0…...

数据分析与挖掘

一 Python 基本语法 变量与数据类型 : Python 中变量无需声明,直接赋值即可。 常见的数据类型有数值型(整型 int、浮点型 float、复数型 complex)、字符串型(str,用单引号、双引号或三引号括起来&#xff…...

RoBoflow数据集的介绍

https://public.roboflow.com/object-detection(该数据集的网址) 可以看到一些基本情况 如果我们想要下载,直接点击 点击图像可以看到一些基本情况 可以点击红色箭头所指,右边是可供选择的一些yolo模型的格式 如果你想下载…...

大模型Rag - 两大检索技术

一、稀疏检索:关键词匹配的经典代表 稀疏检索是一种基于关键词统计的传统检索方法。其基本思想是:通过词频和文档频率来衡量一个文档与查询的相关性。 核心原理 文档和查询都被表示为稀疏向量(如词袋模型),只有在词…...

【T型三电平仿真】SVPWM调制

目录 仿真模型分析 克拉克变换 大扇区判断​编辑 小区域判断 计算基本电压矢量作用时间 确定基本电压矢量的作用顺序 作用时间和矢量作用顺序对应 七段式化生成阶梯图 矢量状态分布 本人学习过程中提出的问题和解释 SVPWM调制实现了什么功能 SVPWM的算法步骤是什么…...

树莓派5-开发应用笔记

0.树莓派系统目录 /home:用户目录。 除了root用户外,其他所有的使用者的数据都存放在这个目录下,在树莓派的系统中,/home目录中有一个pi的子目录,这个就是pi用户的默认目录。 /bin: 主要放置系统的必备执行文件目录。 …...

[Java实战经验]异常处理最佳实践

一些好的异常处理实践。 目录 异常设计自定义异常为异常设计错误代码(状态码)设计粒度全局异常处理异常日志信息保留 异常处理时机资源管理try-with-resources异常中的事务 异常设计 自定义异常 自定义异常设计,如业务异常定义BusinessExce…...

AOSP的Doze模式-LightIdle初识

前言 从Android 6.0开始,谷歌引入了Doze模式(打盹模式)的省电技术延长电池使用时间。根据第三方测试显示,两台同样的Nexus 5,开启的Doze的一台待机能达到533小时,而未开启Doze的一台待机只能达到200小时。Doze省电效果十分明显。…...

QML动画--ParticleSystem

ParticleSystem 是 QML 中用于创建和管理粒子系统的组件,可以制作各种粒子效果如火焰、烟雾、爆炸等。 基本用法 qml import QtQuick.Particles 2.15ParticleSystem {id: particleSystemImageParticle {source: "particle.png"color: "red"a…...

Win 11 重装 Ubuntu 双系统方法

有时候 Ubuntu 环境崩溃了,或者版本过低,需要卸载重装。本文介绍重装的方法,默认已经有一个双系统。 1. 删除原先 Ubuntu 分区 首先打开 Win 的磁盘管理,找到 Ubuntu 的分区,右键删除分区(注意不要错删 wi…...

单例模式:懒汉式的两种优化写法

单例模式:全局唯一实例 懒汉式:获取时才初始化 ①静态局部变量实现(Meyer’s Singleton)【推荐】 /* 类内创建自身实例的可行性分析:在C中,类可以通过静态成员函数创建自身实例。这种机制的核心在于&…...

详细解释浏览器是如何渲染页面的?

渲染流程概述 渲染的目标:将HTML文本转化为可以看到的像素点 当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务&#xff0…...

高速系统设计简介

1.1 PCB 设计技术回顾 1981 年 8 月 12 日,IBM 正式发布了历史上第一台个人电脑,自此之后,个人电脑融入了人们生活和工作的各个角落,人类从此进入了个人电脑时代。个人电脑的出现,不仅促进了电子产品在消费领域的发展…...

不规则曲面上两点距离求取

背景 在CT中求皮肤上两点间的弧长。由于人体表面并不是规则的曲面,不可能用圆的弧长求取方法来计算出两点间的弧长。 而在不规则的曲面上求两点的距离,都可以用类似测地线距离求取的方式来求取(积分),而转化为搜索路…...