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

生信软件管家——conda vs pip

pip vs conda:

安装过python包的人自然两种管理软件都用过,

Pip install和Conda install在Python环境中用于安装第三方库和软件包,但它们在多个方面存在显著的区别

总的来说:
pip是包管理软件,conda既是包管理软件,又是环境管理软件

管理环境用conda,安装python相关包用pip,麻烦点再用conda(在装python包上conda比pip少)

参考:
https://mp.weixin.qq.com/s/CsiVdclmAyugNdL9T60UzQ

https://mp.weixin.qq.com/s/SbRV5rRnHbB5aStYb0MZcg

01

写在前面

大家拿到自己的服务器后可能需要安装很多的软件与包(生信分析为什么要使用服务器?),Linux中许多包的安装依赖过多、安装复杂。而conda作为一个能够直接安装超过90%软件的"管家",能够像Windows和手机中的应用商店那样一键为你解决安装软件的烦恼。conda 是一个开源的软件包管理和环境管理系统,用于简化在不同平台上安装、运行和管理软件包。该工具用于支持 Python 语言,但也能够管理非 Python 的软件。

以下是 Conda 的一些主要特点和功能:

  1. 跨平台性: Conda 可以在 Windows、Linux 和 macOS 等多个操作系统上运行,支持跨平台的软件包管理。
  2. 软件包管理: Conda 提供了一个强大的软件包管理系统,可以轻松安装、更新和删除软件包。这些软件包可以包含 Python 库、工具、依赖项等。
  3. 环境管理: Conda 允许用户创建、导出、列出、删除和更新虚拟环境,以便在不同项目中隔离和管理依赖项。
  4. 依赖项解决: Conda 能够自动解决和管理软件包之间的依赖关系,确保安装的软件包能够正确地工作。
  5. 多版本支持: Conda 允许用户同时安装多个版本的软件包,并在不同的环境中使用这些版本。
  6. 快速的安装: Conda 使用二进制包进行安装,因此安装速度较快,无需重新编译源代码。
  7. 大型软件仓库: Anaconda 发布了一个庞大的软件仓库,包含了许多常用的科学计算、数据分析、机器学习等领域的软件包。
  8. 易于使用: Conda 提供了简单的命令行接口,使用户可以轻松地执行软件包和环境的管理操作。

02

安装conda

1.下载 conda 的安装脚本(这里使用清华大学的镜像)

cd ~  # 推荐将 conda 安装在家目录下
wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh

如果链接失效自行去官网下载安装脚本即可

2.执行conda安装脚本

bash Miniconda3-py39_4.10.3-Linux-x86_64.sh

3.阅读并同意conda的相关协议,不停地回车然后输入yes再回车就安装成功了, 执行脚本后输入的文字的顺序可以参考这个

回车
q
yes
回车
yes

4.为了让安装立即生效,需要执行 .bashrc 脚本,这样会立即进入到 conda 的 base 环境下

source ~/.bashrc

5.添加官方源和国内源,这几乎是提速 conda 的唯一方式了

# 添加官方源
conda config --add channels r # R软件包
conda config --add channels conda-forge # Conda社区维护的不在默认通道中的软件
conda config --add channels bioconda # 生物信息学类工具# 添加国内源头 (选其一添加即可)
# 添加中科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes# 添加清华大学源(偶尔抽风,此时需要换其他国内源)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes# 添加阿里云源
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/bioconda
conda config --set show_channel_urls yes

6.查看 conda 源是否配置成功,可以看出各 channel 的优先级(从上到下优先级依次增加)

conda config --get channels

安装完成!


03

使用conda

(1)虚拟环境管理

conda env list (列出虚拟环境信息)

conda create -n (创建虚拟环境)

# 命令示例
conda create -n py38 -y
conda create -n py39 python=3.9 -y  # 官方推荐使用这种方式
conda create -n py39_2 -y && conda install -n py39_2 python=3.9 -y# 比较两种创建方式有何不同,并无任何不同
diff miniconda3/envs/py39 miniconda3/envs/py39_2

可以看到,在创建环境时指定 python 版本,和创建完环境后安装 python 的指定版本两者导致的结果并无不同,那为什么官方推荐在创建环境时使用 python=3.9 的方式指定 python
版本呢?这是因为如果您要在该虚拟环境中使用 python,就应该在创建环境之初下载 python3.9 ,之后在这个虚拟环境中下载的其他包都会匹配 python3.9的依赖与约束。如果安装了很多其他包之后再安装 python3.9,处理环境依赖就会变得较为复杂,甚至导致一些不易察觉的 bug。

conda activate (进入虚拟环境)

# 命令示例
conda activate py39

conda deactivate (退出虚拟环境)

# 命令示例
conda deactivate

conda remove -n –all 删除虚拟环境

# 命令示例
conda create -n test -y
conda env list# 删除 test 虚拟环境
conda remove -n test --all
conda env list

导出虚拟环境

# 适用于在相同操作系统版本下 clone 虚拟环境
conda list --explicit > spec-list.txt# 适用于所有平台之间 clone 虚拟环境,这里的平台指的是操作系统,如win、centos、ubuntu
conda env export > environment.yml

根据导出的文件创建虚拟环境

# 代码示例
# 根据导出包创建 env_name1 的虚拟环境
conda create -n env_name1 --file spec-list.txt
conda env create --file environment.yml

(2)channels管理

列出 conda 中配置的 channels,根据优先级从低到高的顺序排列

conda config --get channels

添加 channels,添加国内的 channels 也就是我们常说的添加国内源选其一添加即可,添加太多反而会“打架”。

# 添加中科大源
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes# 添加清华大学源(偶尔抽风,此时需要更换为其他国内镜像源,更换国内镜像源的教程可以查看《conda安装教程》)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/
conda-forge/conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --set show_channel_urls yes# 添加阿里云源
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/free
conda config --add channels https://mirrors.aliyun.com/anaconda/pkgs/main
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/conda-forge
conda config --add channels https://mirrors.aliyun.com/anaconda/cloud/bioconda
conda config --set show_channel_urls yes# 添加北京外国语大学源
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/ 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/ 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/# 添加镜像源后清除一下本地软件搜索索引
conda clean -i

删除 channels

方法 1 (通过命令删除):

# 首先查看 channels
conda config --get channels# 删除指定的 channels
conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --remove channels defaults
# 删除配置的所有镜像源conda config --remove-key channels

方法 2 (编辑 .condarc 文件删除想要删除 channels 对应的行)

vi ~/.condarc

安装包时暂时添加 channels

使用 -c 指定的软件源处于最高优先级,这可能导致一个问题,如果你已经配置好国内镜像源,在下载对应源的软件时可以不指定软件源,它会自动从你配置好国内镜像源中下载。

conda install -c bioconda presto
# 如果配置了国内镜像源,就不用指定 channels 了,这样会使用国内镜像源下载,速度更快
conda install presto

换源:

上面几个国内镜像源没有一个是绝对稳定的,都有可能抽风,连接不上,这时可以切换为其他国内镜像源。下图是中科大镜像源不能访问时的报错,而且同一天阿里的镜像源也抽风了……这时可以切换为其他国内镜像源。

# 移除当前配置的所有镜像源
conda config --remove-key channels
# 重新添加镜像源,以北外的镜像源为例
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/free/ 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/pkgs/main/ 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/msys2/
conda config --set show_channel_urls yes 
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/

(3)包管理

使用 conda 安装包之前,需要用search命令搜索 conda 包,找到安装对应包的命令后再进行安装,如果不能在下面的链接中找到安装方法,即表明该包不能通过 conda 安装。例如我们搜一下python试试看,返回的就是python包的名称、对应版本及channel。

此时我们就可以指定channel安装指定版本的python

conda install -c conda-forge python==1.0.1

conda install (安装包)


conda 同样也支持安装R包,例如大名鼎鼎的R包seurat:

conda install r-seurat

04

卸载conda

聚散终有时,如果你因为磁盘容量或者其它原因需要卸载conda,可以尝试以下方式:

conda 的卸载很方便,因为 conda 的安装并不会污染其他系统目录,conda 几乎将所有数据都保存在 miniconda3 目录下

rm -rf .conda
rm -rf .condarc
rm -rf miniconda3

然后再删除 ~/.bashrc 文件中的 conda 初始化添加的语句,也就是删除图示内容:

vim ~/.bashrc

Linux中的文本删改可以参考:Linux| 25. 文件编辑器 vim

删完之后执行一下 .bashrc 文件。

source ~/.bashrc

参考:
https://mp.weixin.qq.com/s?__biz=MzAwMzIzOTk5OQ==&mid=2247506208&idx=1&sn=24d27bc2ff8de340b1f542610b4dc09e&chksm=9b3ca070ac4b29664600d778b077a08bcbd843c29bae65a46261f115a37292aa773fc1513a5a&token=1701013467&lang=zh_CN#rd

相关文章:

生信软件管家——conda vs pip

pip vs conda: 安装过python包的人自然两种管理软件都用过, Pip install和Conda install在Python环境中用于安装第三方库和软件包,但它们在多个方面存在显著的区别 总的来说: pip是包管理软件,conda既是包管理软件&…...

从替代到覆盖:暴雨信创服务器打开市场新局面

进入2025年,全球局势更加变幻莫测,高科技领域越来越受到全球局势影响。美国前任总统拜登在卸任前,特别颁布限制GPU产品出口法案。新任总统特朗普上任第一天,废除了多项之前法案,但显示技术交流的内容一条没变。 在如此艰难的局面下,我国信创市场的发展显得尤为重要,国家也从政策…...

HTML5 常用事件详解

在现代 Web 开发中,用户交互是提升用户体验的关键。HTML5 提供了丰富的事件机制,允许开发者监听用户的操作(如点击、拖动、键盘输入等),并触发相应的逻辑处理。本文将详细介绍 HTML5 中的常用事件,包括鼠标…...

使用 Pipeline 提高 Redis 批量操作性能

使用 Pipeline 提高 Redis 批量操作性能 在 Redis 中,Pipeline(管道) 是一种用于提高批量操作性能的技术。它允许客户端一次性发送多个命令到 Redis 服务器,而不需要等待每个命令的单独响应,从而减少了**网络往返&…...

ElasticSearch-文档元数据乐观并发控制

文章目录 什么是文档?文档元数据文档的部分更新Update 乐观并发控制 最近日常工作开发过程中使用到了 ES,最近在检索资料的时候翻阅到了 ES 的官方文档,里面对 ES 的基础与案例进行了通俗易懂的解释,读下来也有不少收获&#xff0…...

每日一题--合并二叉树

合并二叉树 问题描述 已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:如果节点存在于两棵树中,则将节点值相加;如果某个节点在一棵树中不存在,则直接使用另一棵树的节点值。例如: 两颗二叉树如下&a…...

【喜讯】海云安荣获“数字安全产业贡献奖”

近日,国内领先的数字化领域独立第三方调研咨询机构数世咨询主办的“2025数字安全市场年度大会”在北京成功举办。在此次大会上,海云安的高敏捷信创白盒产品凭借其在AI大模型技术方面的卓越贡献和突出的技术创新能力,荣获了“数字安全产业贡献…...

数字转中文大写JAVA

一般在收据打印过程中,可能会要求展示中文大写金额,以下提供两种实现。 1正常代码逻辑处理 优点:易理解,好维护 缺点:代码较长 package com.test;import java.math.BigDecimal;public class NumberToChinese {priv…...

如何使用 pytest-html 创建自定义 HTML 测试报告

关注开源优测不迷路 大数据测试过程、策略及挑战 测试框架原理,构建成功的基石 在自动化测试工作之前,你应该知道的10条建议 在自动化测试中,重要的不是工具 测试 Python 代码对于提高代码质量、检测漏洞或意外行为至关重要。 但测试结果又该…...

思科交换机telnet配置案例

目录 1.telnet简述2.网络拓扑3.设备说明4.网络配置4.1 电脑PC ip设置4.2 网络交换机telnet配置 5.小结 1.telnet简述 Telnet是远程登录服务的一个协议,该协议定义了远程登录用户与服务器交互的方式。它允许用户在一台联网的计算机上登录到一个远程分时系统中&#…...

LabVIEW进行可靠性测试时有哪些常见的问题

在进行LabVIEW开发和测试时,尤其是用于可靠性测试,可能会遇到一些常见的问题。以下是一些常见问题及其解决方法: 1. 数据采集卡与硬件兼容性问题 问题描述:某些数据采集卡(DAQ)与硬件设备的兼容性问题可能…...

三年级数学知识边界总结思考-下册

目录 一、背景二、过程1.位置与方向小学三年级课本上位置与方向的知识点、由来、作用和意义一、位置与方向的知识点二、位置与方向的由来三、位置与方向的作用和意义 2.复试统计表小学三年级课本上复式统计表的知识点、由来、作用和意义一、复式统计表的知识点二、复式统计表的…...

假期学习【Java程序】的实施方案

一、前期准备 1.1 设定明确的学习目标 在假期开始之前,明确学习Java的具体目标至关重要。这些目标应该具体、可衡量且符合实际。例如,如果你是初学者,可以设定目标为掌握Java的基础语法、理解面向对象编程的核心概念,并能够编写…...

Java 大视界 -- Java 大数据中的知识图谱构建与应用(62)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...

Macos下交叉编译安卓的paq8px压缩算法

官方没有android的编译方法,自己编写脚本在macos下交叉编译. 下载源码: git clone https://github.com/hxim/paq8px.git 稍旧的ndk并不能编译成功,需要下载最新的ndkr27c, 最后是使用clang来编译。 编译build.sh export ANDROID_NDK/Vol…...

npm启动前端项目时报错(vue) error:0308010C:digital envelope routines::unsupported

vue 启动项目时,npm run serve 报下面的错: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:67:19) at Object.createHash (node:crypto:133:10) at FSReqCallback.readFileAfterClose [as on…...

设计模式-建造者模式、原型模式

目录 建造者模式 定义 类图 优缺点 角色 建造者模式和工厂模式比较 使用案例 原型模式 定义 类图 优缺点 应用场景 应用类型 浅克隆 深克隆 建造者模式 定义 将一个复杂的对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,…...

Android vendor.img中文件执行权问题

问题 Android 9、11往vendor.img增加文件,烧写到设备后发现增加的可执行文件没有执行权限。经过漫长查找,终于找到了问题的根源,谨以此篇献给哪些脚踏实地的人们。 根本原因 system/core/libcutils/fs_config.cpp文件,fs_confi…...

MATLAB 如何避免复杂shp文件对inpolygon的影响

**任务描述:**当我想用inpolygon函数将属于非洲的pixel选出来时,发现因为周边小岛的影响,pixel选取有问题,如下图。 第一种解决办法: 首先将复杂shp文件查分成简单的shp文件,即将不相交的元素分离开 [QGIS…...

Golang Gin系列-8:单元测试与调试技术

在本章中,我们将探讨如何为Gin应用程序编写单元测试,使用有效的调试技术,以及优化性能。这包括设置测试环境、为处理程序和中间件编写测试、使用日志记录、使用调试工具以及分析应用程序以提高性能。 为Gin应用程序编写单元测试 设置测试环境…...

【论文阅读】Equivariant Diffusion Policy

Northeastern University 2Boston Dynamics AI Institute 摘要 近期研究表明,扩散模型是一种有效的方法,可用于在行为克隆中学习由演示数据产生的多模态分布。然而,这种方法的一个缺点是需要学习去噪函数,这比学习显式策略要复杂…...

[ACTF2020 新生赛]BackupFile1

题目 翻译&#xff0c;尝试找出源文件&#xff01; 扫目录使用参数-e * python dirsearch.py -u http://0c3b21c0-d360-4baa-8b97-aa244f4c4825.node5.buuoj.cn:81/ -e * 最终扫描到一个文件名为&#xff1a;/index.php.bak的文件&#xff0c;把备份文件下载下来 源码 <?…...

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion(原理介绍)

手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09; 目录 手撕Diffusion系列 - 第九期 - 改进为Stable Diffusion&#xff08;原理介绍&#xff09;DDPM 原理图Stable Diffusion 原理Stable Diffusion的原理解释Stable Diffusion 和 Diffus…...

ASP.NET Core WebAPI的异步及返回值

目录 Action方法的异步 Action方法参数 捕捉URL占位符 捕捉QueryString的值 JSON报文体 其他方式 Action方法的异步 Action方法既可以同步也可以异步。异步Action方法的名字一般不需要以Async结尾。Web API中Action方法的返回值如果是普通数据类型&#xff0c;那么返回值…...

doris: CSV导入数据

本文介绍如何在 Doris 中导入 CSV 格式的数据文件。Doris 支持灵活的 CSV 格式配置&#xff0c;包括自定义分隔符、字段包围符等&#xff0c;并提供多种导入方式以满足不同场景的数据导入需求。 导入方式​ Doris 支持以下方式导入 CSV 格式数据&#xff1a; Stream LoadBro…...

数据标注开源框架 Label Studio

数据标注开源框架 Label Studio Label Studio 是一个开源的、灵活的数据标注平台&#xff0c;旨在帮助开发者和数据科学家轻松创建高质量的训练数据集。它支持多种类型的数据&#xff08;如文本、图像、音频、视频等&#xff09;以及复杂的标注任务&#xff08;如分类、命名实体…...

Next.js 实战 (十):中间件的魅力,打造更快更安全的应用

什么是中间件&#xff1f; 在 Next.js 中&#xff0c;中间件&#xff08;Middleware&#xff09;是一种用于处理每个传入请求的功能。它允许你在请求到达页面之前对其进行修改或响应。 通过中间件&#xff0c;你可以实现诸如日志记录、身份验证、重定向、CORS配置、压缩等任务…...

js/ts数值计算精度丢失问题及解决方案

文章目录 概念及问题问题分析解决方案方案一方案二方案其它——用成熟的库 概念及问题 js中处理浮点数运算时会出现精度丢失。js中整数和浮点数都属于Number数据类型&#xff0c;所有的数字都是以64位浮点数形式存储&#xff0c;整数也是如此。所以打印x.00这样的浮点数的结果…...

Linux之Tcp粘包笔记

目录 一.网络传输四层模型 二.数据传输中数据包传输的两个限制概念 三.数据传输的中粘包问题 四.数据组装的原因 Nagle算法原理: 五.关闭Nagle优化处理粘包问题吗&#xff1f; 六.粘包处理方法 a.设置消息边界&#xff1a; b.定义消息长度&#xff1a; 七.UDP是否会出…...

StarRocks 安装部署

StarRocks 安装部署 StarRocks端口&#xff1a; 官方《配置检查》有服务端口详细描述&#xff1a; https://docs.starrocks.io/zh/docs/deployment/environment_configurations/ StarRocks架构&#xff1a;https://docs.starrocks.io/zh/docs/introduction/Architecture/ Sta…...

【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述(一)

【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述&#xff08;一&#xff09; 【深度学习|迁移学习】渐进式学习策略 (Progressive Learning Strategy)详述&#xff08;一&#xff09; 文章目录 【深度学习|迁移学习】渐进式学习策略 (Progressive L…...

关注搜索引擎蜘蛛压力

以前在建站的时候&#xff0c;他们说蜘蛛来抓取的频率越多越好&#xff0c;因为蜘蛛来抓取说明了网站更新速度快&#xff0c;受搜索引擎的欢迎&#xff0c;但是在最近的网站统计中&#xff0c;发现很多蜘蛛爬取的频次非常的高&#xff0c;比如有的蜘蛛一天能来网站几万次&#…...

Windows上通过Git Bash激活Anaconda

在Windows上配置完Anaconda后&#xff0c;普遍通过Anaconda Prompt激活虚拟环境并执行Python&#xff0c;如下图所示&#xff1a; 有时需要连续执行多个python脚本时&#xff0c;直接在Anaconda Prompt下可以通过在以下方式&#xff0c;即命令间通过&&连接&#xff0c;…...

【架构面试】一、架构设计认知

涉及分布式锁、中间件、数据库、分布式缓存、系统高可用等多个技术领域&#xff0c;旨在考查候选人的技术深度、架构设计能力与解决实际问题的能力。 1. 以 Redis 是否可以作为分布式锁为例&#xff1a; 用 Redis 实现分布式锁会存在哪些问题&#xff1f; 死锁&#xff1a;如果…...

【Redis】常见面试题

什么是Redis&#xff1f; Redis 和 Memcached 有什么区别&#xff1f; 为什么用 Redis 作为 MySQL 的缓存&#xff1f; 主要是因为Redis具备高性能和高并发两种特性。 高性能&#xff1a;MySQL中数据是从磁盘读取的&#xff0c;而Redis是直接操作内存&#xff0c;速度相当快…...

解决vsocde ssh远程连接同一ip,不同端口情况下,无法区分的问题

一般服务器会通过镜像分身或者容器的方式&#xff0c;一个ip分出多个端口给多人使用&#xff0c;但如果碰到需要连接同一user&#xff0c;同一个ip,不同端口的情况&#xff0c;vscode就无法识别&#xff0c;如下图所示&#xff0c;vscode无法区分该ip下不同端口的连接&#xff…...

Java设计模式—观察者模式

观察者模式 目录 观察者模式1、什么是观察者模式&#xff1f;2、观察者模式优缺点及注意事项&#xff1f;3、观察者模式实现&#xff1f;4、手写线程安全的观察者模式&#xff1f; 1、什么是观察者模式&#xff1f; - 实例&#xff1a;现实生活中很多事物都是依赖存在的&#x…...

Lua 环境的安装

1.安装Lua运行环境 本人采用的是在windows系统中使用cmd指令方式进行安装&#xff0c;安装指令如下&#xff1a; winget install "lua for windows" 也曾使用可执行程序安装过&#xff0c;但由于电脑是加密电脑&#xff0c;最后都已失败告终。使用此方式安装可以安…...

MySQL回表详解:原理、优化与实践

1. 简介 在MySQL的查询过程中&#xff0c;“回表”&#xff08;又叫“二次查询”&#xff09;是一个常见的概念&#xff0c;尤其在使用覆盖索引&#xff08;covering index&#xff09;或联合索引&#xff08;composite index&#xff09;时&#xff0c;回表操作常常会对查询性…...

算法——位运算

位运算知识点 01.01. 判定字符是否唯一 面试题 01.01. 判定字符是否唯一 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:bool isUnique(string astr) {//鸽巢原理if(astr.size()>26) return false;int bitmap 0;for(auto ch:astr){char i ch-a;//判断…...

CVE-2025-0411 7-zip 漏洞复现

文章目录 免责申明漏洞描述影响版本漏洞poc漏洞复现修复建议 免责申明 本文章仅供学习与交流&#xff0c;请勿用于非法用途&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任 漏洞描述 此漏洞 &#xff08;CVSS SCORE 7.0&#xff09; 允许远程攻击者绕…...

深度学习笔记——循环神经网络之LSTM

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍面试过程中可能遇到的循环神经网络LSTM知识点。 文章目录 文本特征提取的方法1. 基础方法1.1 词袋模型&#xff08;Bag of Words, BOW&#xff09;工作…...

超分辨率体积重建实现术前前列腺MRI和大病理切片组织病理学图像的3D配准

摘要: 磁共振成像(MRI)在前列腺癌诊断和治疗中的应用正在迅速增加。然而,在MRI上识别癌症的存在和范围仍然具有挑战性,导致即使是专家放射科医生在检测结果上也存在高度变异性。提高MRI上的癌症检测能力对于减少这种变异性并最大化MRI的临床效用至关重要。迄今为止,这种改…...

React第二十五章(受控组件/非受控组件)

React 受控组件理解和应用 React 受控组件 受控组件一般是指表单元素&#xff0c;表单的数据由React的 State 管理&#xff0c;更新数据时&#xff0c;需要手动调用setState()方法&#xff0c;更新数据。因为React没有类似于Vue的v-model&#xff0c;所以需要自己实现绑定事件…...

Vue演练场基础知识(七)插槽

为学习Vue基础知识&#xff0c;我动手操作通关了Vue演练场&#xff0c;该演练场教程的目标是快速体验使用 Vue 是什么感受&#xff0c;设置偏好时我选的是选项式 单文件组件。以下是我结合深入指南写的总结笔记&#xff0c;希望对Vue初学者有所帮助。 文章目录 十五. 插槽插槽…...

16 分布式session和无状态的会话

在我们传统的应用中session存储在服务端&#xff0c;减少服务端的查询压力。如果以集群的方式部署&#xff0c;用户登录的session存储在该次登录的服务器节点上&#xff0c;如果下次访问服务端的请求落到其他节点上就需要重新生成session&#xff0c;这样用户需要频繁的登录。 …...

docker 部署 java 项目详解

在平常的开发工作中&#xff0c;我们经常需要部署项目&#xff0c;开发测试完成后&#xff0c;最关键的一步就是部署。今天我们以若依项目为例&#xff0c;总结下部署项目的整体流程。简单来说&#xff0c;第一步&#xff1a;安装项目所需的中间件&#xff1b;第二步&#xff1…...

csapp笔记——2.3节整数运算

目录 无符号加法 补码加法 补码的非 无符号乘法 补码乘法 乘以常数 除以2的幂 无符号加法 对于的整数x,y&#xff0c;定义表示将x与y的和截为w位 由此推得检测无符号加法是否溢出得方法是判断结果是否比x&#xff0c;y中的任何一个小。 无符号数的逆元定义为使得的y&am…...

【阅读笔记】基于图像灰度梯度最大值累加的清晰度评价算子

本文介绍的是一种新的清晰度评价算子&#xff0c;基于图像灰度梯度最大值累加 一、概述 目前在数字图像清晰度评价函数中常用的评价函数包括三类&#xff1a;灰度梯度评价函数、频域函数和统计学函数&#xff0c;其中灰度梯度评价函数具有计算简单&#xff0c;评价效果好等优…...

Docker 系列之 docker-compose 容器编排详解

文章目录 前言一、Docker-compose简介二、Docker-compose 的安装三、Docker-compose卸载四、Docker-compose常用命令4.1 Docker-compose命令格式4.2 docker-compose up4.3 docker-compose ps4.4 docker-compose stop4.5 docker-compose -h4.6 docker-compose down4.7 docker-co…...