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

ComfyUI预处理器ControlNet简单介绍与使用(附件工作流)

简介

ControlNet 是一个很强的插件,提供了很多种图片的控制方式,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高AI绘画的质量特别有用。接下来就演示几种热门常用的控制方式

1.OpenPose(姿态控制预处理器)

姿态控制预处理器可以根据提供的图像将人物的骨骼脸部手部的姿态展示处理,通过这个预处理器可以很好的控制出图人物的姿态

2.Depth(深度预处理器)

深度预处理器可以将图片的空间的远近以黑白的形式展示出来,白近黑远,当我们上传一张图片通过OpenPose识别到手的位置,但骨骼图并不能描述手在身前还是身后的时候,那个深度预处理器就可以提现出作用了,当然还可以运用在一些建筑、室内等情况

3.LineArt(线条预处理器)

线条预处理器可以将图片用线条的形式描绘出来,可以很好的控制图片的细节

4.HED Soft-Edge(模糊线条预处理器)

模糊线条预处理器与线条预处理器类型也是用线条描绘图片,但仅大概描绘轮廓,更利于出图的随机性

接下来演示一下这四个预处理器效果,不同的预处理器之间是可以搭配使用的,根据不同的需求选择不用的预处理器来解决问题

请添加图片描述

附件工作流

复制Json内容到ComfyUI中即可

{"last_node_id": 46,"last_link_id": 65,"nodes": [{"id": 31,"type": "PreviewImage","pos": [1110,-1000],"size": {"0": 210,"1": 310},"flags": {},"order": 15,"mode": 0,"inputs": [{"name": "images","type": "IMAGE","link": 31,"label": "图像"}],"properties": {"Node name for S&R": "PreviewImage"}},{"id": 29,"type": "PreviewImage","pos": [760,-1000],"size": {"0": 210,"1": 310},"flags": {},"order": 14,"mode": 0,"inputs": [{"name": "images","type": "IMAGE","link": 30,"label": "图像","slot_index": 0}],"properties": {"Node name for S&R": "PreviewImage"}},{"id": 34,"type": "HEDPreprocessor","pos": [1050,-500],"size": {"0": 315,"1": 82},"flags": {},"order": 10,"mode": 0,"inputs": [{"name": "image","type": "IMAGE","link": 34,"label": "图像"}],"outputs": [{"name": "IMAGE","type": "IMAGE","links": [31,54],"shape": 3,"label": "图像","slot_index": 0}],"properties": {"Node name for S&R": "HEDPreprocessor"},"widgets_values": ["enable",512]},{"id": 32,"type": "ControlNetLoader","pos": [1060,-640],"size": {"0": 315,"1": 58},"flags": {},"order": 0,"mode": 0,"outputs": [{"name": "CONTROL_NET","type": "CONTROL_NET","links": [53],"shape": 3,"label": "ControlNet","slot_index": 0}],"properties": {"Node name for S&R": "ControlNetLoader"},"widgets_values": ["control_v11p_sd15_softedge.pth"]},{"id": 25,"type": "PreviewImage","pos": [420,-1000],"size": {"0": 210,"1": 310},"flags": {},"order": 13,"mode": 0,"inputs": [{"name": "images","type": "IMAGE","link": 29,"label": "图像"}],"properties": {"Node name for S&R": "PreviewImage"}},{"id": 12,"type": "ControlNetLoader","pos": [30,-640],"size": {"0": 320,"1": 60},"flags": {},"order": 1,"mode": 0,"outputs": [{"name": "CONTROL_NET","type": "CONTROL_NET","links": [47],"slot_index": 0,"label": "ControlNet"}],"properties": {"Node name for S&R": "ControlNetLoader"},"widgets_values": ["control_v11p_sd15_openpose.pth"]},{"id": 16,"type": "OpenposePreprocessor","pos": [30,-540],"size": {"0": 315,"1": 150},"flags": {},"order": 7,"mode": 0,"inputs": [{"name": "image","type": "IMAGE","link": 22,"label": "图像"}],"outputs": [{"name": "IMAGE","type": "IMAGE","links": [24,48],"shape": 3,"label": "图像","slot_index": 0},{"name": "POSE_KEYPOINT","type": "POSE_KEYPOINT","links": null,"shape": 3,"label": "姿态关键点"}],"properties": {"Node name for S&R": "OpenposePreprocessor"},"widgets_values": ["enable","enable","enable",512]},{"id": 23,"type": "ControlNetLoader","pos": [380,-640],"size": {"0": 315,"1": 58},"flags": {},"order": 2,"mode": 0,"outputs": [{"name": "CONTROL_NET","type": "CONTROL_NET","links": [49],"shape": 3,"label": "ControlNet","slot_index": 0}],"properties": {"Node name for S&R": "ControlNetLoader"},"widgets_values": ["control_v11f1p_sd15_depth.pth"]},{"id": 21,"type": "Zoe_DepthAnythingPreprocessor","pos": [370,-500],"size": {"0": 315,"1": 82},"flags": {},"order": 8,"mode": 0,"inputs": [{"name": "image","type": "IMAGE","link": 32,"label": "图像","slot_index": 0}],"outputs": [{"name": "IMAGE","type": "IMAGE","links": [29,50],"shape": 3,"label": "图像","slot_index": 0}],"properties": {"Node name for S&R": "Zoe_DepthAnythingPreprocessor"},"widgets_values": ["indoor",512]},{"id": 30,"type": "ControlNetLoader","pos": [710,-640],"size": {"0": 315,"1": 58},"flags": {},"order": 3,"mode": 0,"outputs": [{"name": "CONTROL_NET","type": "CONTROL_NET","links": [51],"shape": 3,"label": "ControlNet","slot_index": 0}],"properties": {"Node name for S&R": "ControlNetLoader"},"widgets_values": ["control_v11p_sd15_lineart.pth"]},{"id": 33,"type": "LineArtPreprocessor","pos": [710,-500],"size": {"0": 315,"1": 82},"flags": {},"order": 9,"mode": 0,"inputs": [{"name": "image","type": "IMAGE","link": 33,"label": "图像"}],"outputs": [{"name": "IMAGE","type": "IMAGE","links": [30,52],"shape": 3,"label": "图像","slot_index": 0}],"properties": {"Node name for S&R": "LineArtPreprocessor"},"widgets_values": ["disable",512]},{"id": 35,"type": "Efficient Loader","pos": [2130,690],"size": {"0": 400,"1": 462},"flags": {},"order": 6,"mode": 0,"inputs": [{"name": "lora_stack","type": "LORA_STACK","link": null,"label": "LoRA堆"},{"name": "cnet_stack","type": "CONTROL_NET_STACK","link": 55,"label": "ControlNet堆","slot_index": 1}],"outputs": [{"name": "MODEL","type": "MODEL","links": null,"shape": 3,"label": "模型"},{"name": "CONDITIONING+","type": "CONDITIONING","links": null,"shape": 3,"label": "正面条件"},{"name": "CONDITIONING-","type": "CONDITIONING","links": null,"shape": 3,"label": "负面条件"},{"name": "LATENT","type": "LATENT","links": null,"shape": 3,"label": "Latent"},{"name": "VAE","type": "VAE","links": null,"shape": 3,"label": "VAE"},{"name": "CLIP","type": "CLIP","links": null,"shape": 3,"label": "CLIP"},{"name": "DEPENDENCIES","type": "DEPENDENCIES","links": null,"shape": 3,"label": "依赖"}],"properties": {"Node name for S&R": "Efficient Loader"},"widgets_values": ["AWPainting_v1.3.safetensors","Baked VAE",-1,"None",1,1,"CLIP_POSITIVE","CLIP_NEGATIVE","none","comfy",512,512,1],"color": "#2a363b","bgcolor": "#3f5159","shape": 1},{"id": 41,"type": "Control Net Stacker","pos": [1720,650],"size": {"0": 315,"1": 146},"flags": {},"order": 4,"mode": 0,"inputs": [{"name": "control_net","type": "CONTROL_NET","link": null,"label": "ControlNet"},{"name": "image","type": "IMAGE","link": null,"label": "图像"},{"name": "cnet_stack","type": "CONTROL_NET_STACK","link": null,"label": "ControlNet堆"}],"outputs": [{"name": "CNET_STACK","type": "CONTROL_NET_STACK","links": [55],"shape": 3,"label": "ControlNet堆"}],"properties": {"Node name for S&R": "Control Net Stacker"},"widgets_values": [1,0,1],"color": "#223322","bgcolor": "#335533","shape": 1},{"id": 17,"type": "PreviewImage","pos": [70,-1000],"size": {"0": 210,"1": 310},"flags": {},"order": 11,"mode": 0,"inputs": [{"name": "images","type": "IMAGE","link": 24,"label": "图像"}],"properties": {"Node name for S&R": "PreviewImage"}},{"id": 37,"type": "Control Net Stacker","pos": [30,-340],"size": {"0": 315,"1": 146},"flags": {},"order": 12,"mode": 0,"inputs": [{"name": "control_net","type": "CONTROL_NET","link": 47,"label": "ControlNet"},{"name": "image","type": "IMAGE","link": 48,"label": "图像"},{"name": "cnet_stack","type": "CONTROL_NET_STACK","link": null,"label": "ControlNet堆"}],"outputs": [{"name": "CNET_STACK","type": "CONTROL_NET_STACK","links": [62],"shape": 3,"label": "ControlNet堆","slot_index": 0}],"properties": {"Node name for S&R": "Control Net Stacker"},"widgets_values": [1,0,1],"color": "#223322","bgcolor": "#335533","shape": 1},{"id": 38,"type": "Control Net Stacker","pos": [370,-340],"size": {"0": 315,"1": 146},"flags": {},"order": 16,"mode": 0,"inputs": [{"name": "control_net","type": "CONTROL_NET","link": 49,"label": "ControlNet"},{"name": "image","type": "IMAGE","link": 50,"label": "图像"},{"name": "cnet_stack","type": "CONTROL_NET_STACK","link": 62,"label": "ControlNet堆"}],"outputs": [{"name": "CNET_STACK","type": "CONTROL_NET_STACK","links": [63],"shape": 3,"label": "ControlNet堆","slot_index": 0}],"properties": {"Node name for S&R": "Control Net Stacker"},"widgets_values": [0.2,0,1],"color": "#223322","bgcolor": "#335533","shape": 1},{"id": 39,"type": "Control Net Stacker","pos": [710,-340],"size": {"0": 315,"1": 146},"flags": {},"order": 17,"mode": 0,"inputs": [{"name": "control_net","type": "CONTROL_NET","link": 51,"label": "ControlNet"},{"name": "image","type": "IMAGE","link": 52,"label": "图像"},{"name": "cnet_stack","type": "CONTROL_NET_STACK","link": 63,"label": "ControlNet堆"}],"outputs": [{"name": "CNET_STACK","type": "CONTROL_NET_STACK","links": [64],"shape": 3,"label": "ControlNet堆","slot_index": 0}],"properties": {"Node name for S&R": "Control Net Stacker"},"widgets_values": [0.5,0,1],"color": "#223322","bgcolor": "#335533","shape": 1},{"id": 40,"type": "Control Net Stacker","pos": [1050,-340],"size": {"0": 315,"1": 146},"flags": {},"order": 18,"mode": 0,"inputs": [{"name": "control_net","type": "CONTROL_NET","link": 53,"label": "ControlNet","slot_index": 0},{"name": "image","type": "IMAGE","link": 54,"label": "图像","slot_index": 1},{"name": "cnet_stack","type": "CONTROL_NET_STACK","link": 64,"label": "ControlNet堆"}],"outputs": [{"name": "CNET_STACK","type": "CONTROL_NET_STACK","links": [65],"shape": 3,"label": "ControlNet堆","slot_index": 0}],"properties": {"Node name for S&R": "Control Net Stacker"},"widgets_values": [0.5,0,1],"color": "#223322","bgcolor": "#335533","shape": 1},{"id": 44,"type": "SaveImage","pos": [2220,-630],"size": {"0": 320,"1": 270},"flags": {},"order": 21,"mode": 0,"inputs": [{"name": "images","type": "IMAGE","link": 61,"label": "图像"}],"properties": {},"widgets_values": ["ComfyUI"]},{"id": 43,"type": "KSampler (Efficient)","pos": [1860,-750],"size": {"0": 330,"1": 560},"flags": {},"order": 20,"mode": 0,"inputs": [{"name": "model","type": "MODEL","link": 56,"label": "模型"},{"name": "positive","type": "CONDITIONING","link": 57,"label": "正面条件"},{"name": "negative","type": "CONDITIONING","link": 58,"label": "负面条件"},{"name": "latent_image","type": "LATENT","link": 59,"label": "Latent"},{"name": "optional_vae","type": "VAE","link": 60,"label": "VAE(可选)"},{"name": "script","type": "SCRIPT","link": null,"label": "脚本"}],"outputs": [{"name": "MODEL","type": "MODEL","links": null,"shape": 3,"label": "模型"},{"name": "CONDITIONING+","type": "CONDITIONING","links": null,"shape": 3,"label": "正面条件"},{"name": "CONDITIONING-","type": "CONDITIONING","links": null,"shape": 3,"label": "负面条件"},{"name": "LATENT","type": "LATENT","links": null,"shape": 3,"label": "Latent"},{"name": "VAE","type": "VAE","links": null,"shape": 3,"label": "VAE"},{"name": "IMAGE","type": "IMAGE","links": [61],"shape": 3,"label": "图像","slot_index": 5}],"properties": {"Node name for S&R": "KSampler (Efficient)"},"widgets_values": [248390093388796,null,20,10,"dpmpp_2m","karras",1,"auto","true"],"color": "#222233","bgcolor": "#333355","shape": 1},{"id": 42,"type": "Efficient Loader","pos": [1420,-650],"size": {"0": 400,"1": 462.0000305175781},"flags": {},"order": 19,"mode": 0,"inputs": [{"name": "lora_stack","type": "LORA_STACK","link": null,"label": "LoRA堆"},{"name": "cnet_stack","type": "CONTROL_NET_STACK","link": 65,"label": "ControlNet堆"}],"outputs": [{"name": "MODEL","type": "MODEL","links": [56],"shape": 3,"label": "模型","slot_index": 0},{"name": "CONDITIONING+","type": "CONDITIONING","links": [57],"shape": 3,"label": "正面条件","slot_index": 1},{"name": "CONDITIONING-","type": "CONDITIONING","links": [58],"shape": 3,"label": "负面条件","slot_index": 2},{"name": "LATENT","type": "LATENT","links": [59],"shape": 3,"label": "Latent","slot_index": 3},{"name": "VAE","type": "VAE","links": [60],"shape": 3,"label": "VAE","slot_index": 4},{"name": "CLIP","type": "CLIP","links": null,"shape": 3,"label": "CLIP"},{"name": "DEPENDENCIES","type": "DEPENDENCIES","links": null,"shape": 3,"label": "依赖"}],"properties": {"Node name for S&R": "Efficient Loader"},"widgets_values": ["AWPainting_v1.3.safetensors","Baked VAE",-2,"None",1,1,"masterpiece, best quality, highres, 1girl, bare shoulders, brown hair, long hair, (orange dress:1.2), looking at viewer, forest, maple leaves,outdoors, wild, plants, cinematic lights, lightrays,depth of field, blurry_background, blurry_foreground, shiny luminious,","(hands), text, error, cropped, (worst quality:1.2), (low quality:1.2), normal quality, (jpeg artifacts:1.3), signature, watermark, username, blurry, artist name, monochrome, sketch, censorship, censor, (copyright:1.2), extra legs, (forehead mark) (depth of field) (emotionless) (penis), embedding:EasyNegative, embedding:badhandv4, ","none","comfy++",768,1152,1],"color": "#443322","bgcolor": "#665533","shape": 1},{"id": 11,"type": "LoadImage","pos": [-250,-800],"size": [220,314],"flags": {},"order": 5,"mode": 0,"outputs": [{"name": "IMAGE","type": "IMAGE","links": [22,32,33,34],"slot_index": 0,"label": "图像"},{"name": "MASK","type": "MASK","links": null,"label": "遮罩"}],"properties": {"Node name for S&R": "LoadImage"},"widgets_values": ["aimake_Example_1713001562048_49 (1) (3).jpg","image"]}],"links": [[22,11,0,16,0,"IMAGE"],[24,16,0,17,0,"IMAGE"],[29,21,0,25,0,"IMAGE"],[30,33,0,29,0,"IMAGE"],[31,34,0,31,0,"IMAGE"],[32,11,0,21,0,"IMAGE"],[33,11,0,33,0,"IMAGE"],[34,11,0,34,0,"IMAGE"],[47,12,0,37,0,"CONTROL_NET"],[48,16,0,37,1,"IMAGE"],[49,23,0,38,0,"CONTROL_NET"],[50,21,0,38,1,"IMAGE"],[51,30,0,39,0,"CONTROL_NET"],[52,33,0,39,1,"IMAGE"],[53,32,0,40,0,"CONTROL_NET"],[54,34,0,40,1,"IMAGE"],[55,41,0,35,1,"CONTROL_NET_STACK"],[56,42,0,43,0,"MODEL"],[57,42,1,43,1,"CONDITIONING"],[58,42,2,43,2,"CONDITIONING"],[59,42,3,43,3,"LATENT"],[60,42,4,43,4,"VAE"],[61,43,5,44,0,"IMAGE"],[62,37,0,38,2,"CONTROL_NET_STACK"],[63,38,0,39,2,"CONTROL_NET_STACK"],[64,39,0,40,2,"CONTROL_NET_STACK"],[65,40,0,42,1,"CONTROL_NET_STACK"]],"groups": [],"config": {},"extra": {"0246.VERSION": [0,0,4]},"version": 0.4
}

测试图片
请添加图片描述

相关文章:

ComfyUI预处理器ControlNet简单介绍与使用(附件工作流)

简介 ControlNet 是一个很强的插件,提供了很多种图片的控制方式,有的可以控制画面的结构,有的可以控制人物的姿势,还有的可以控制图片的画风,这对于提高AI绘画的质量特别有用。接下来就演示几种热门常用的控制方式 1…...

【篇三】在vue3上实现阿里云oss文件直传

之前写了两篇关于文件上传的文章 【篇一】使用springbootvue实现阿里云oss上传 【篇二】使用springbootvue实现阿里云oss文件直传,解决大文件分片上传问题 今天介绍一下在vue3中实现阿里云oss文件直传,主要是基于篇二中的源码进行修改,看具体…...

OceanBase v4.2 特性解析:对Json与Xml的扩展支持

1. 背景 OceanBase的Oracle模式当前已实现对XMLType类型的支持,不仅包含了基本的构造、查询、更新以及格式转换功能,还支持使用Xpath查询从XML数据中提取特定值。在V 4.2.2 版本中,我们进一步扩展了Oracle模式下对XMLType的支持,…...

《框架封装 · 统一异常处理和返回值包装》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...

深入WebKit:揭秘复杂文档的高效渲染之道

深入WebKit:揭秘复杂文档的高效渲染之道 在当今信息爆炸的时代,网页不再仅仅是简单的文本和图片的集合,而是充满了复杂布局和丰富媒体内容的交互式平台。WebKit 作为众多流行浏览器的心脏,其布局引擎承担着将 HTML、CSS 代码转换…...

进程的控制-孤儿进程和僵尸进程

孤儿进程 : 一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被 init 进程( 进程号为 1) 所收养,并由 init 进程对它们完成状态收集工作 为了释放子进程的占用的系统资源: …...

【Unity navigation面板】

【Unity navigation面板】 Unity的Navigation面板是一个集成在Unity编辑器中的界面,它允许开发者对导航网格(NavMesh)进行配置和管理。 Unity Navigation面板的一些关键特性和功能: 导航网格代理(NavMesh Agent&…...

二刷算法训练营Day53 | 动态规划(14/17)

目录 详细布置: 1. 392. 判断子序列 2. 115. 不同的子序列 详细布置: 1. 392. 判断子序列 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余…...

将缓冲文件写到磁盘中的命令sync

将缓冲文件写到磁盘中的命令sync There is no nutrition in the blog content. After reading it, you will not only suffer from malnutrition, but also impotence. The blog content is all parallel goods. Those who are worried about being cheated should leave quick…...

灵活视图变换器:为扩散模型设计的革新图像生成架构

在自然界中,图像的分辨率是无限的,而现有的图像生成模型在跨任意分辨率泛化方面存在困难。虽然扩散变换器(DiT)在特定分辨率范围内表现出色,但在处理不同分辨率的图像时却力不从心。为了克服这一限制,来自上…...

[终端安全]-1 总体介绍

有朋友一直在和笔者研讨智驾安全这个热门话题,笔者十多年工作从不离终端安全这个核心话题(芯片安全、操作系统安全、应用安全),近来也一直在梳理终端安全体系;手机、汽车皆是我们生活中应用最普遍的智能终端&#xff0…...

Mysql5.7并发插入死锁问题

死锁的产生条件 互斥、请求和保持、不可剥夺、循环等待 MySQL锁类型 死锁复现 环境:Mysql 5.7版本,Innodb引擎,可重复度隔离级别 并发场景下使用duplicate key update插入或更新数据可能会造成死锁,下面就产生死锁的条件进行模…...

网络“ping不通”,如何排查和解决呢?

网络问题往往复杂且难以预测,其中“ping不通”是常见的网络故障之一。 1. 确认问题现象 首先,明确问题是完全无法ping通(无响应)还是ping通但有高延迟或丢包。这有助于缩小问题范围。 2. 本地检查 网络接口状态:使用ifconfig(Linux)或ipc…...

日常学习--20240706

1、udp协议的特点有哪些? a、无连接,发送和接收数据不需要建立连接,开销小,实时性好 b、不可靠传输,不保证数据包能够到达目的地,也不保证数据包的顺序 c、面向数据报的,以数据报形式发送数据…...

入门PHP就来我这(高级)12 ~ 获取数据

有胆量你就来跟着路老师卷起来! -- 纯干货,技术知识分享 路老师给大家分享PHP语言的知识了,旨在想让大家入门PHP,并深入了解PHP语言。 1 从结果集中获取一行作为对象 表中数据行如下: 利用mysqli_fetch_array()函数获…...

AIGC专栏12——EasyAnimateV3发布详解 支持图文生视频 最大支持960x960x144帧视频生成

AIGC专栏12——EasyAnimateV3发布详解 支持图&文生视频 最大支持960x960x144帧视频生成 学习前言项目特点生成效果相关地址汇总项目主页Huggingface体验地址Modelscope体验地址源码下载地址 EasyAnimate V3详解技术储备Diffusion Transformer (DiT)Hybrid Motion ModuleU-V…...

【python】python猫眼电影数据抓取分析可视化(源码+数据集+论文)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...

Android 四大组件

1. Activity 应用程序中,一个Activity通常是一个单独的屏幕,它上面可以显示一些控件,也可以监听并对用户的事件做出响应。 Activity之间通过Intent进行通信,在Intent 的描述结构中,有两个最重要的部分:动…...

【Python】已解决:ModuleNotFoundError: No module named ‘nltk’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:ModuleNotFoundError: No module named ‘nltk’ 一、分析问题背景 在使用Python进行自然语言处理或文本分析时,我们经常会用到各种库来辅助我们的工…...

【Docker系列】Docker 命令行输出格式化指南

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...

简易版抽奖活动的设计技术方案

1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...

JVM垃圾回收机制全解析

Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...