Stable Diffusion Web UI + Anaconda环境 + 本地Windows系统部署

news2025/1/19 17:20:19

Stable Diffusion Web UI + Anaconda环境 + 本地Windows系统部署

最近的很多AIGC模型层出不穷,Stable Diffusion 模型作为一个开源的热门生成式模型,或许对未来的各行各业都能产生深远的影响,了解这个模型并会使用可能是很多人目前想要学习的,本篇博客还原了本人从0-1的一个安装+部署过程,希望对屏幕前的各位读者有用,谢谢!创作不易,喜欢的可以点赞收藏
为什么要用anaconda? 原因其实很简单,anaconda可以做到环境隔离,即在创建好的环境中进行安装,不会影响其他程序或者模型的使用
Stable Diffusion Web UI 项目来源于github,链接:https://github.com/AUTOMATIC1111/stable-diffusion-webui,截至今日有着64.5k的star数量。
Stable Diffusion Web UI 项目部署在本地,可以正常应用的一个界面:

可以看到,我这prompt 框中加入了一些prompt 信息,A painting of a cute goldendoodle in the sky, wearing a suit, natural light, with bright colors, by Studio Ghibli
(入门)Stable Diffusion怎么写prompt?

其中的关键词意思:

提出问题:您想要一张照片还是一幅画?照片的主题是什么?人物?动物或者风景?您想要添加哪些细节?
1 特殊照明。柔和、环形、霓虹
2 环境。室内、室外、水下、太空
3 颜色方案。鲜艳、暗淡、粉彩
4 视角。正面、俯视、侧面
5 背景。纯色、星云、森林
6 采用特定的艺术风格吗?3D渲染、工作室、电影海报
7 特定的照片类型?微距、长焦
回答问题整理出prompt:
现在我们假设来回答上面的问题,然后尝试整理出我们需要的prompt
你想要一张照片还是一幅画? => 画 (painting)
照片的主题是什么? 人物。动物,风景。=> 一只金毛犬 (a cute goldendoodle)
你希望添加什么细节? => 穿着西装 (wearing a suit)
特殊照明。 柔和的、环境的、环形光、霓虹灯=> (natural light)
环境。 室内、室外、水下、太空中 => 在天空中 (in the sky)
色彩方案。 鲜艳的、深色的、粉色的 => 有明亮的颜色 (bright colors)
在特定的艺术风格? 3D渲染,吉卜力工作室,电影海报 => 工作室出品
我们汇总下我们的prompt如下:
A painting of a cute goldendoodle in the sky, wearing a suit, natural light, with bright colors, by Studio Ghibli

在这里插入图片描述
利用元素法典https://docs.qq.com/doc/DWHl3am5Zb05QbGVs进行绘制,仅供参考
在这里插入图片描述

接下来是我要推荐的博客,我本人也是根据这些博客以及之前的一些模型经验进行的安装:
1、全网最能打的AI部署教程,Anaconda环境完美本地部署Stable-Diffusion-Webui+novelAI
2、【AI作画】使用stable-diffusion-webui搭建AI作画平台

据说还有秋叶整合包,博主并没有特意去找,下一步计划是找一下资源,学习一下

1、创建anaconda环境

1)官方仓库推荐的是python 3.10.6的版本
在这里插入图片描述
创建一个命名为sdaigc的python环境

conda create -n sdaigc python=3.10.6

2)安装 torch、torchvision、torchaudio,,这里博主机器的cuda 是11.1版本,但按照之前的经验,在ananconda中安装cuda11.3是可以向下兼容的,
进入pytorch官网https://pytorch.org/get-started/previous-versions/,,使用pip命令下载

# CUDA 11.3
pip install torch==1.11.0+cu113 torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113

验证创建环境,pytorch是否安装正确,可以使用
annconada command输入
activate sdaigc

python
import torch
print(torch.cuda.is_available())
>>True

在这里插入图片描述

2、克隆stable-diffusion-webui 至本地,并安装依赖项

拉取stable-diffsion-webui项目,克隆至本地:

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

这里我克隆的位置在E:\stable diffusion\stable-diffusion-webui并提前下好模型权重,放置在E:\stable diffusion\stable-diffusion-webui\models\Stable-diffusion中,在这里插入图片描述
模型权重可以从https://huggingface.co/CompVis/stable-diffusion-v-1-4-original中下载,3.97g
也可以在https://rentry.org/sdmodels中查找所需

或可以通过博主的百度云链接进行下载:链接:https://pan.baidu.com/s/1hFOBkPYSb4-D7Bv9D9GxdQ 提取码:39c6

激活创建好的conda环境后,进入stable-diffusion-webui文件主目录,使用以下指令安装依赖

pip install -r requirements.txt

没有报错后,在stable-diffusion-webui文件主目录使用以下指令,运行stable-diffusion-webui

python lauch.py

然而会出现以下的N多问题
!!!由于我解决这些问题时,并未对报错的提示进行截图整理或者复制,这里主要借用了【AI作画】使用stable-diffusion-webui搭建AI作画平台整理的内容,以下的截图均使用这篇博客的!!!

我遇到的问题一:

安装CLIP时提示Connection was aborted, errno 10053
出错时的错误打印如下:

(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Installing clip
Traceback (most recent call last):
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 251, in <module>
    prepare_enviroment()
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 178, in prepare_enviroment
    run_pip(f"install {clip_package}", "clip")
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 63, in run_pip
    return run(f'"{python}" -m pip {args} --prefer-binary{index_url_line}', desc=f"Installing {desc}", errdesc=f"Couldn't install {desc}")
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 34, in run
    raise RuntimeError(message)
RuntimeError: Couldn't install clip.
Command: "D:\anaconda3\envs\novelai\python.exe" -m pip install git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1 --prefer-binary
Error code: 1
stdout: Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1
  Cloning https://github.com/openai/CLIP.git (to revision d50d76daa670286dd6cacf3bcd80b5e4823fc8e1) to c:\users\yefuf\appdata\local\temp\pip-req-build-f8w7kbzg

stderr:   Running command git clone --filter=blob:none --quiet https://github.com/openai/CLIP.git 'C:\Users\yefuf\AppData\Local\Temp\pip-req-build-f8w7kbzg'
  fatal: unable to access 'https://github.com/openai/CLIP.git/': OpenSSL SSL_read: Connection was aborted, errno 10053
  error: subprocess-exited-with-error

  git clone --filter=blob:none --quiet https://github.com/openai/CLIP.git 'C:\Users\yefuf\AppData\Local\Temp\pip-req-build-f8w7kbzg' did not run successfully.
  exit code: 128

  See above for output.

  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

git clone --filter=blob:none --quiet https://github.com/openai/CLIP.git 'C:\Users\yefuf\AppData\Local\Temp\pip-req-build-f8w7kbzg' did not run successfully.
exit code: 128

See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.

通过访CLIP项目GitHub主页,发现该项目可以通过如下命令进行安装解决。

pip install ftfy regex tqdm
pip install git+https://github.com/openai/CLIP.git

我遇到的问题二:项目启动中提示Connection was reset in connection to github.com
出错时的错误打印如下:

(novelai) E:\workspace\02_Python\novalai\stable-diffusion-webui>python launch.py
Python 3.10.6 | packaged by conda-forge | (main, Oct 24 2022, 16:02:16) [MSC v.1916 64 bit (AMD64)]
Commit hash: b8f2dfed3c0085f1df359b9dc5b3841ddc2196f0
Cloning Stable Diffusion into repositories\stable-diffusion...
Cloning Taming Transformers into repositories\taming-transformers...
Traceback (most recent call last):
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 251, in <module>
    prepare_enviroment()
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 201, in prepare_enviroment
    git_clone(taming_transformers_repo, repo_dir('taming-transformers'), "Taming Transformers", taming_transformers_commit_hash)
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 85, in git_clone
    run(f'"{git}" clone "{url}" "{dir}"', f"Cloning {name} into {dir}...", f"Couldn't clone {name}")
  File "E:\workspace\02_Python\novalai\stable-diffusion-webui\launch.py", line 34, in run
    raise RuntimeError(message)
RuntimeError: Couldn't clone Taming Transformers.
Command: "git" clone "https://github.com/CompVis/taming-transformers.git" "repositories\taming-transformers"
Error code: 128
stdout: <empty>
stderr: Cloning into 'repositories\taming-transformers'...
fatal: unable to access 'https://github.com/CompVis/taming-transformers.git/': OpenSSL SSL_connect: Connection was reset in connection to github.com:443

查看lauch.py中的代码可以发现,程序在启动时有对依赖项目进行检查,如项目不存在,则克隆下来。

def prepare_enviroment():
    torch_command = os.environ.get('TORCH_COMMAND', "pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 --extra-index-url https://download.pytorch.org/whl/cu113")
    requirements_file = os.environ.get('REQS_FILE', "requirements_versions.txt")
    commandline_args = os.environ.get('COMMANDLINE_ARGS', "")

    gfpgan_package = os.environ.get('GFPGAN_PACKAGE', "git+https://github.com/TencentARC/GFPGAN.git@8d2447a2d918f8eba5a4a01463fd48e45126a379")
    clip_package = os.environ.get('CLIP_PACKAGE', "git+https://github.com/openai/CLIP.git@d50d76daa670286dd6cacf3bcd80b5e4823fc8e1")
    deepdanbooru_package = os.environ.get('DEEPDANBOORU_PACKAGE', "git+https://github.com/KichangKim/DeepDanbooru.git@d91a2963bf87c6a770d74894667e9ffa9f6de7ff")

    xformers_windows_package = os.environ.get('XFORMERS_WINDOWS_PACKAGE', 'https://github.com/C43H66N12O12S2/stable-diffusion-webui/releases/download/f/xformers-0.0.14.dev0-cp310-cp310-win_amd64.whl')

    stable_diffusion_repo = os.environ.get('STABLE_DIFFUSION_REPO', "https://github.com/CompVis/stable-diffusion.git")
    taming_transformers_repo = os.environ.get('TAMING_REANSFORMERS_REPO', "https://github.com/CompVis/taming-transformers.git")
    k_diffusion_repo = os.environ.get('K_DIFFUSION_REPO', 'https://github.com/crowsonkb/k-diffusion.git')
    codeformer_repo = os.environ.get('CODEFORMET_REPO', 'https://github.com/sczhou/CodeFormer.git')
    blip_repo = os.environ.get('BLIP_REPO', 'https://github.com/salesforce/BLIP.git')

    stable_diffusion_commit_hash = os.environ.get('STABLE_DIFFUSION_COMMIT_HASH', "69ae4b35e0a0f6ee1af8bb9a5d0016ccb27e36dc")
    taming_transformers_commit_hash = os.environ.get('TAMING_TRANSFORMERS_COMMIT_HASH', "24268930bf1dce879235a7fddd0b2355b84d7ea6")
    k_diffusion_commit_hash = os.environ.get('K_DIFFUSION_COMMIT_HASH', "f4e99857772fc3a126ba886aadf795a332774878")
    codeformer_commit_hash = os.environ.get('CODEFORMER_COMMIT_HASH', "c5b4593074ba6214284d6acd5f1719b6c5d739af")
    blip_commit_hash = os.environ.get('BLIP_COMMIT_HASH', "48211a1594f1321b00f14c9f7a5b4813144b2fb9")

因此,还是利用git bash重新执行下述git命令,预先将项目克隆下来。

git clone https://github.com/Stability-AI/stablediffusion.git "E:\stable diffusion\stable-diffusion-webui\repositories\stable-diffusion-stability-ai"

git clone https://github.com/CompVis/taming-transformers.git "repositories\taming-transformers"

git clone https://github.com/crowsonkb/k-diffusion.git "repositories\k-diffusion"

git clone https://github.com/sczhou/CodeFormer.git "repositories\CodeFormer"

git clone https://github.com/salesforce/BLIP.git  "repositories\BLIP"

文件夹如下所示:
在这里插入图片描述

3、再次运行

python lauch.py

会发现,有以下报错:

(sdaigc) E:\stable diffusion\stable-diffusion-webui>python launch.py
Python 3.10.6 | packaged by conda-forge | (main, Aug 22 2022, 20:29:51) [MSC v.1929 64 bit (AMD64)]
Commit hash: 22bcc7be428c94e9408f589966c2040187245d81
Installing requirements for Web UI
Launching Web UI with arguments:
No module 'xformers'. Proceeding without it.
==============================================================================
You are running torch 1.11.0+cu113.
The program is tested to work with torch 1.13.1.
To reinstall the desired version, run with commandline flag --reinstall-torch.
Beware that this will cause a lot of large files to be downloaded, as well as
there are reports of issues with training tab on the latest version.

Use --skip-version-check commandline argument to disable this check.
==============================================================================
Calculating sha256 for E:\stable diffusion\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt: fe4efff1e174c627256e44ec2991ba279b3816e364b49f9be2abc0b3ff3f8556
Loading weights [fe4efff1e1] from E:\stable diffusion\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt
Error verifying pickled file from E:\stable diffusion\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt:
Traceback (most recent call last):
  File "E:\stable diffusion\stable-diffusion-webui\modules\safe.py", line 135, in load_with_extra
    check_pt(filename, extra_handler)
  File "E:\stable diffusion\stable-diffusion-webui\modules\safe.py", line 93, in check_pt
    unpickler.load()
  File "E:\stable diffusion\stable-diffusion-webui\modules\safe.py", line 30, in persistent_load
    return TypedStorage()
  File "E:\Anaconda\envs\sdaigc\lib\site-packages\torch\storage.py", line 270, in __init__
    assert type(self) != _TypedStorage, (
AssertionError: Calling __init__ this way is only supported in _TypedStorage's child classes. _TypedStorage can only be directly instantiated when kwargs 'wrap_storage' and 'dtype' are given.


The file may be malicious, so the program is not going to read it.
You can skip this check with --disable-safe-unpickle commandline argument.


loading stable diffusion model: AttributeError
Traceback (most recent call last):
  File "E:\stable diffusion\stable-diffusion-webui\webui.py", line 139, in initialize
    modules.sd_models.load_model()
  File "E:\stable diffusion\stable-diffusion-webui\modules\sd_models.py", line 415, in load_model
    state_dict = get_checkpoint_state_dict(checkpoint_info, timer)
  File "E:\stable diffusion\stable-diffusion-webui\modules\sd_models.py", line 262, in get_checkpoint_state_dict
    res = read_state_dict(checkpoint_info.filename)
  File "E:\stable diffusion\stable-diffusion-webui\modules\sd_models.py", line 248, in read_state_dict
    sd = get_state_dict_from_checkpoint(pl_sd)
  File "E:\stable diffusion\stable-diffusion-webui\modules\sd_models.py", line 197, in get_state_dict_from_checkpoint
    pl_sd = pl_sd.pop("state_dict", pl_sd)
AttributeError: 'NoneType' object has no attribute 'pop'

主要是这句话:

The file may be malicious, so the program is not going to read it.
You can skip this check with --disable-safe-unpickle commandline argument.

所以再次运行如下指令:

python launch.py --disable-safe-unpickle

运行成功

(sdaigc) E:\stable diffusion\stable-diffusion-webui>python launch.py --disable-safe-unpickle
Python 3.10.6 | packaged by conda-forge | (main, Aug 22 2022, 20:29:51) [MSC v.1929 64 bit (AMD64)]
Commit hash: 22bcc7be428c94e9408f589966c2040187245d81
Installing requirements for Web UI
Launching Web UI with arguments: --disable-safe-unpickle
No module 'xformers'. Proceeding without it.
==============================================================================
You are running torch 1.11.0+cu113.
The program is tested to work with torch 1.13.1.
To reinstall the desired version, run with commandline flag --reinstall-torch.
Beware that this will cause a lot of large files to be downloaded, as well as
there are reports of issues with training tab on the latest version.

Use --skip-version-check commandline argument to disable this check.
==============================================================================
Loading weights [fe4efff1e1] from E:\stable diffusion\stable-diffusion-webui\models\Stable-diffusion\sd-v1-4.ckpt
Creating model from config: E:\stable diffusion\stable-diffusion-webui\configs\v1-inference.yaml
LatentDiffusion: Running in eps-prediction mode
DiffusionWrapper has 859.52 M params.
Downloading ()olve/main/vocab.json: 100%|███████████████████████████████████████████| 961k/961k [00:02<00:00, 386kB/s]
Downloading ()olve/main/merges.txt: 100%|███████████████████████████████████████████| 525k/525k [00:01<00:00, 517kB/s]
Downloading ()cial_tokens_map.json: 100%|█████████████████████████████████████████████| 389/389 [00:00<00:00, 390kB/s]
Downloading ()okenizer_config.json: 100%|█████████████████████████████████████████████| 905/905 [00:00<00:00, 890kB/s]
Downloading ()lve/main/config.json: 100%|████████████████████████████████████████| 4.52k/4.52k [00:00<00:00, 4.59MB/s]
Applying cross attention optimization (Doggettx).
Textual inversion embeddings loaded(0):
Model loaded in 50.5s (load weights from disk: 2.9s, create model: 15.2s, apply weights to model: 25.7s, apply half(): 1.9s, move model to device: 2.5s, load textual inversion embeddings: 2.3s).
Running on local URL:  http://127.0.0.1:7860

To create a public link, set `share=True` in `launch()`.
Startup time: 60.4s (import torch: 2.5s, import gradio: 2.6s, import ldm: 1.0s, other imports: 1.5s, load scripts: 0.9s, load SD checkpoint: 51.0s, create ui: 0.4s, gradio launch: 0.4s).
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:29<00:00,  1.49s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [00:24<00:00,  1.24s/it]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:27<00:00,  1.38s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [00:26<00:00,  1.35s/it]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:22<00:00,  1.14s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [00:22<00:00,  1.13s/it]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:23<00:00,  1.20s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [00:23<00:00,  1.18s/it]
 15%|████████████▍                                                                      | 3/20 [00:04<00:27,  1.59s/it]
Total progress:  15%|██████████                                                         | 3/20 [00:04<00:24,  1.45s/it]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:22<00:00,  1.13s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [00:22<00:00,  1.12s/it]
100%|██████████████████████████████████████████████████████████████████████████████████| 20/20 [00:45<00:00,  2.28s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 20/20 [00:45<00:00,  2.28s/it]
Data shape for DDIM sampling is (2, 4, 64, 64), eta 0.0████████████████████████████████| 20/20 [00:45<00:00,  2.20s/it]
Running DDIM Sampling with 50 timesteps
DDIM Sampler:   8%|█████▌                                                               | 4/50 [00:13<02:39,  3.46s/it]
Total progress:   8%|█████▎                                                             | 4/50 [00:12<02:29,  3.24s/it]
Data shape for DDIM sampling is (1, 4, 64, 64), eta 0.0                                 | 4/50 [00:12<02:05,  2.72s/it]
Running DDIM Sampling with 50 timesteps
DDIM Sampler: 100%|████████████████████████████████████████████████████████████████████| 50/50 [01:08<00:00,  1.36s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 50/50 [01:07<00:00,  1.35s/it]
Total progress: 100%|██████████████████████████████████████████████████████████████████| 50/50 [01:07<00:00,  1.35s/it]

除此之外还有一个**No module ‘xformers’. Proceeding without it.**的提示,这里可以无视它,我也找了以下两篇博客用以解决该问题,仅供参考
No module ‘xformers‘. Proceeding without it.
安装Stable Diffusion WebUI 几种报错的解决方法

4、关于Stable Diffusion WebUI汉化

1)安装sd-webui-bilingual-localization插件,在扩展选项卡的“install from”输入URL:https://github.com/journey-ad/sd-webui-bilingual-localization,点击完成安装。
在这里插入图片描述
在“installed”看到已经完成安装的sd-webui-bilingual-localization插件,重启UI。
在这里插入图片描述
2)下载汉化包

stable-diffusion-webui-localization-zh_CN汉化包

将压缩包解压,找到localizations目录下的zh_CN.json文件,把它放到<stable diffusion根目录>/localizations下。

再次运行如下指令:

python launch.py --disable-safe-unpickle --autolaunch

选中zh_CN
在这里插入图片描述
汉化版UI界面
在这里插入图片描述
参考博客:
stable diffusion汉化教程
Stable Diffusion AI 绘画工具汉化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/414777.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

车载Mini LED持续升温,各家厂商进展如何?

去年&#xff0c;Mini LED背光技术在车载显示赛道上初露头角&#xff0c;多款搭载 Mini LED 屏幕的汽车陆续发布。随着新能源车渗透率的提高&#xff0c;车载显示成为明确增长的赛道&#xff0c;为Mini LED背光进入车载带来利好。 结合今年各家厂商披露的信息来看&#xff0c…

浮点型数据在内存的存储方式

目录 大体规则 特殊规定 由于浮点型在内存中的存储方式相较于整型的要复杂一些&#xff0c;而且很容易忘掉&#xff0c;所以就将部分知识点整理了一下&#xff0c;写成一篇博客。 大体规则 根据国际标准&#xff08;电气和电子工程协会&#xff09;IEEE 754&#xff0c;任意…

【数据结构】- 初识数据结构之空间复杂度(下)

文章目录前言一、空间复杂度1.1空间复杂度简解1.2常见空间复杂度的计算举例二、常见复杂度的对比总结前言 将喜欢的一切留在身边 这便是努力的意义. 本章是关于初识数据结构之空间复杂度(下) 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、空间复…

真的干不过,00后整顿职场已经给我卷麻了,想离职了...

在程序员职场上&#xff0c;什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事&#xff0c;我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事&#xff0c;可遇不可求&#xff0c;向他学习还来不及呢。 真正让人反感的&#xff0c;是技术平平&#x…

D. Li Hua and Tree(set操作)

Problem - D - Codeforces 李华有一个有n个顶点和n -1条边的树。树的根是顶点1。每个顶点i的重要性为a。将子树的大小表示为该子树中顶点的数量&#xff0c;将重要性表示为该子树中顶点的重要性之和。将非叶顶点的重子结点表示为具有最大子树大小的子结点。如果存在多个重子&am…

安全防御 --- 入侵检测 --- IDS、IPS

入侵检测 1、入侵检测经典理论 系统访问控制要针对三类用户 &#xff08;1&#xff09;合法用户 &#xff08;2&#xff09;伪装 --- 攻破[流程控制]&#xff08;超出了合法用户的行为范围&#xff09; 身份仿冒&#xff08;可能是最早提出不能仅依赖于身份认证&#xff0c;还…

STM32F4+FreeRTOS+LVGL实现嵌入式快速开发(缝合怪)

极速进行项目开发&#xff0c;只需要懂一款芯片架构一个操作系统一个GUI。各种部件程序全靠抄 &#xff0c;成为究极缝合怪。本文用stm32f407FreeRTOSlvgl演示一些demo。 原文链接&#xff1a;STM32F4FreeRTOSLVGL实现快速开发(缝合怪) lvgl官方的音乐播放器demo&#xff1a;…

微信小程序学习笔记

一、Node.js主题 1、npm&#xff1a;node.js包管理工具&#xff0c;有超过60万个JavaScript代码包可供下载 2、Node.js&#xff1a;运行在服务端的JavaScript&#xff0c;基于Chrome JavaScript建立的一个平台&#xff0c;基于Google V8引擎。 3、Nodejs安装教程&#xff1a…

Redis篇之主从复制及哨兵模式

主从复制及哨兵模式 1、概念 主从复制&#xff1a; 是指将一台 Redis 服务器的数据&#xff0c;复制到其他的 Redis 服务器。前者称为主节点&#xff08;Master/Leader&#xff09;,后者称为从节点&#xff08;Slave/Follower&#xff09;&#xff0c; 数据的复制是单向的&a…

毕业设计 基于51单片机的智能水表水流量计流量报警器温度设计

基于STM32的语音IC卡停车管理系统1、快速完成毕设的方法2、项目资料2.1 系统框架2.2 系统功能3、部分电路设计3.1 STC89C52单片机最小系统电路设计3.2 继电器控制电路设计3.3 DS18B20温度检测电路设计3.4 LCD1602液晶显示电路设计4、部分代码展示4.1 LCD1602液晶显示屏引脚初始…

2023年第十四届蓝桥杯 C++ B组参赛经验总结

没错&#xff0c;今年本菜狗又来啦~~ hhh &#xff0c; 文章当时比赛完就写完了&#xff0c; 发的有点晚 比赛成绩 &#xff08;等出来我就写这里&#xff09; 感觉最多省二 估计没省一了555 赛前准备 赛前把蓝桥杯课基本都刷了 &#xff0c; 但是还是感觉有点慌 刷题经验 …

【mysql是怎样运行的】-B+树索引深入理解

文章目录1. 无索引查找方式1.1 在一个页中查找1.2 在多个页中查找2. 索引3. 简易索引方案4. InnoDB 中的索引方案5. **常见索引概念**数据页与记录关系&#xff1a;各个数据页可以组成一个 双向链表&#xff0c;而每个数据页中的记录会按照主键值从小到大的顺序组成一个 单向链…

Linux主机上的用户信息传递(查询用户(w,who,last,lastlog),用户对谈(write,mesg,wall),用户邮箱mail)

文章目录Linux主机上的用户信息传递查询用户&#xff1a;w、who、last、lastlog用户对谈&#xff1a;write、mesg、wall用户邮箱&#xff1a;mail使用案例给自己的QQ邮箱发送一封邮件①获取授权码②使用mailx发送邮件③测试是否可以发送邮件Linux主机上的用户信息传递 想过吗如…

阿里版 ChatGPT 突然上线!

转自:纯洁的微笑 其实早本月初&#xff0c;就传出过不少阿里要推出类ChatGPT的消息。 前几天率先流出的天猫精灵“鸟鸟分鸟”脱口秀版GPT&#xff0c;就是基于大模型的“压缩版”&#xff0c;已经以其惊艳表现吸引了众目光。 如今“原版大菜”上桌&#xff0c;自然一点即着&a…

PHP反序列化魔术方法详细解析及实例公私有属性对比

目录 一、魔术方法利用点分析 <__construct&__destruct> <__toString> <__call> <__get> <__set> <__sleep> <__wakeup> <__isset> <__unset> <__invoke> <总结> 二、对象变量属性及序列化…

Pandas 常用按照查询条件筛选数据

文章目录1. 筛选指定的列2. 按照条件筛选3.1 单条件筛选3.2 多条件组合筛选创建一个DataFrame import pandas as pd data {name:[张三, 李四, 王五, 赵六],age:[20, 21, 22, 23], gender: [0, 1, 1, 1], stature: [165, 189, 178, 160], year: [2000, 2002, 2003, 1993]} df …

Servlet教程

在JavaEE平台上&#xff0c;处理TCP连接&#xff0c;解析HTTP协议这些底层工作统统扔给现成的Web服务器去做&#xff0c;我们只需要把自己的应用程序跑在Web服务器上。为了实现这一目的&#xff0c;JavaEE提供了Servlet API&#xff0c;我们使用Servlet API编写自己的Servlet来…

JavaWeb开发 —— 前端工程化

目录 一、前后端分离开发 二、YApi 三、前端工程化 1. 环境准备&#xff1a;vue-cli 2. Vue项目创建 四、Vue项目开发流程 一、前后端分离开发 ① 最早的前端开发就是实现页面&#xff0c;顶多再写写JS让页面可以有交互的特效。属于前后端未分离的时代。 早期前后端混合开…

Amazon 中国区配置 PingIdentity 身份集成实现 Redshift 数据库群集单点登录

无疑使用单点登录 (SSO)访问组织中的多种应用程序能够提升用户体验 。 如果您负责为 Amazon Redshift 启用 SSO&#xff0c;则可以使用 ADFS、PingIdentity、Okta、Azure AD 或其他基于 SAML 浏览器的身份提供程序设置 SSO 身份验证。 这篇文章向您展示了如何将 PingOne 设置为…

js中 = 等号赋值的问题,Js中对象的引用问题,深浅拷贝

js "" 赋值符号 在js中 “”对于基本数据类型是赋值符号&#xff0c;比较&#xff08; 或 &#xff09;的时候是值&#xff1b;对于引用数据类型-对象来说 是地址引用&#xff0c;比较的时候是比较的地址。 基本数据类型和引用数据类型的比较 let a 3; let b a;c…