SQS消息队列优先级问题
后端组织SQS消息队列流程 队列组织方式: 12345678910// 从代码可以看到,所有服务都使用同一个队列public class AWSConfig { public static final String COMFYUI_TASK_HOLDING_QUEUE_URL = "..."; // 所有任务共用一个队列}// 在发送消息时contentGenerationManager.sendLatentsyncAudio2VideoMessage(...);contentGenerationManager.sendMemoAudio2VideoMessage(...);// 这些不同的服务消息最终都会调用相同的 doSendMessage 方法// 都发送到同一个 COMFYUI_TASK_HOLDING_QUEUE_URL 任务类型区分: 123456789101112131415public void sendLatentsyncAudio2VideoMessage(...) { ...
生成式服务端和后端的回调机制详解
整个回调流程是这样的: 服务端完成任务后发送状态到 SQS:123456789def send_callback(task_id, status): callback_message = { "taskId": task_id, "status": status, # success/failed/running "outputDir": output_location, # 其他状态信息 } # 发送到状态回调队列 send_sqs_message(status_callback_queue_url, callback_message) AWS Lambda 函数监听回调队列:123456789101112def lambda_handler(event, context): # 获取 SQS 消息 for record in event['Records']: ...
生成式后端详解
Java 后端在生成式服务中的主要工作可以分为以下几个部分: GraphQL 接口层:1234567891011121314151617// 1. 在 schema.graphqls 中定义接口servicenameSimplify( privateUserId: ID!, metadata: SimpleXXXContentMetadata!): Content!// 2. 实现对应的 Resolverpublic class ContentMutationResolver { public Content videoLipSyncSimplify( String privateUserId, SimpleAudio2VideoContentMetadata metadata ) { // 验证用户和权限 // 创建任务上下文 // 创建内容记录 }} 内容元数据管理:123456789101112//...
博客部署拉取机制解析
先来说明为什么你在那些目录下看不到普通的git仓库状态。这是因为我们使用了一个特殊的git部署方式: /home/git/blog.git 是一个”裸仓库”(bare repository): 裸仓库只包含 git 的版本控制数据 不包含实际的工作文件 所以你在这里运行 git status 会报错是正常的 整个部署流程是这样的:当在本地运行 hexo g -d 时: 首先,Hexo 在你的本地生成静态文件(在 public 目录) 然后,将这些文件推送到服务器的裸仓库 /home/git/blog.git 最后,触发你之前配置的 post-receive 钩子 关键在于你配置的这个 post-receive 钩子: 1git --work-tree=/home/www/website --git-dir=/home/git/blog.git checkout -f 这个钩子的作用是: 把 /home/www/website 作为工作目录 使用 /home/git/blog.git 中的 git...
LatentSync问题解析
face not detected stable-paw-comfyui增加error_code字段,当服务端出现face not detected时可以给后端发送回调信息,后端也同步增加,这样前端也能catch到就可以让用户传递更优质的video进来。但是这个方法只能治标,用户体验还不够好 只能从源码出发,修改源码,当检测到没有人脸的帧逻辑是跳过该帧而不是直接抛出异常,这一块技术栈涉及到pytorch。修改了ComfyUI-LatentSyncWrapper/latentsync/utils/image_processor.py的源码1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495def detect_facial_landmarks(self, image:...
Java String类详解
String类的声明123public final class String implements java.io.Serializable, Comparable<String>, CharSequence, Constable, ConstantDesc{} 有final关键字修饰该类,因此不会再被子类继承。 实现了字符串常量池 保证线程安全 保证hashcode的不可变性 实现了Serializable接口,保证String类可以进行序列化 实现了Comparable接口,可以不再使用==进行两个字符串是否相等,而是使用compareTo()方法进行比较 String,StirngBuffer,StringBuilder都实现了CharSequence接口,由于String类不可变,所以如果遇到字符串拼接就可以使用StringBuffer或StringBuilder String底层为什么要用byte数组而不是char数组String从使用char数组改成byte数组是在Java...
IO多路复用 select,poll,epoll详解
1. 前置知识1.1 进程阻塞进程的阻塞是指一个进程等待某个条件满足或某个事件发生,这个进程的执行被暂停进入一种不可执行的状态,直到满足该条件重新获得运行的机会 进程的生命周期: 就绪:进程具备执行条件,等待CPU调度 运行:进程正在被CPU执行 阻塞:进程因为某种原因无法继续执行,只能等待某个事件或资源 当一个进程进入阻塞状态时,操作系统会将其从就绪队列中移除,并加入到等待队列中,直到被某个事件(如I/O操作完成、信号到达)唤醒后,重新进入就绪状态等待调度。 导致进程阻塞的原因 IO操作 进程在执行文件读写操作时,需要等待硬盘或网络数据,这些操作速度通常比CPU速度慢很多,因此进程等待IO操作完成会被阻塞 请求资源 进程再运行过程中请求的资源被别的进程占用时会进入阻塞状态:锁,内存页,共享变量 进程之间的同步:在多进程环境中,进程之间可能需要同步操作,比如通过信号量或条件变量进行同步。如果一个进程等待另一个进程的通知(如信号),它会进入阻塞状态。 等待子进程完成:一个父进程可能需要等待其子进程完成后再继续执行,比如调用 wait()...
Docker常用命令
Docker 常用命令镜像相关命令 docker pull <image>拉取指定镜像到本地。示例:docker pull ubuntu # 拉取 Ubuntu 镜像 docker images列出本地所有镜像。示例:docker images # 查看已下载的镜像列表 docker rmi <image>删除指定镜像。示例:docker rmi ubuntu:latest # 删除本地的 Ubuntu 镜像 容器管理命令 docker run --name <name> -p 80:8080 -d <image>发布指定镜像为容器,并运行它。示例:docker run --name myapp -p 80:8080 -d nginx # 启动 Nginx 容器,将其端口映射到本机 docker ps列出正在运行的容器。示例:docker ps # 查看当前运行中的容器 docker ps -a列出所有容器(包括停止的容器)。示例:docker ps -a # 查看所有容器状态 docker stop...
本地营销服务部署到服务器
部署流程主要是先在服务器上构建基础环境:Docker, Docker-Compose, Portainer用于后续拉取镜像等。然后还需要在服务器构建应用环境,包括数据库MySQL, 缓存Redis。接下来是在本地把前后端分别打包镜像文件并推送到Docker Hub中由服务器拉取两个镜像完成部署。 1. 服务器环境配置1.1 Docker安装更新yum包,安装Doker依赖包 123sudo yum updatesudo yum install -y yum-utils device-mapper-persistent-data lvm2 更新doker yum源到阿里云 12sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 查看可以安装的Doker版本并安装指定版本 12yum list docker-ce --showduplicates | sort -ryum install -y docker-ce-25.0.5...
Hexo博客部署到远程服务器
Hexo博客部署到远程服务器部署博客到服务器昨天把基于go的hugo框架的博客部署在github page上了,但是发现github page服务器在美国,国内访问很不流畅。所以现在想把博客部署在国内的服务器上。 远程服务器买了个京东云2c4g的服务器,部署博客肯定不需要这么大的。不过后面还有其他用使用XShell ssh连接到服务器,之前在实习的时候经常用的是MobaXterm。大同小异。服务器要开启HTTP80端口用于web访问,还有22端口用于git连接。 1. 服务器环境配置1.1 安装NginxNginx 作为反向代理服务器,负责在用户访问域名时,将请求转发到存放博客文件的路径,以实现快速、高效的静态内容分发 123yum install nginxsystemctl start nginxsystemctl enable nginx 1.2 创建博客目录将以后的博客文件都放在这个目录下面,nginx路由配置也需要指向这个目录 1mkdir /home/www/website 1.3 配置nginx路由1rpm -ql ngnix...
营销项目--11. 抽奖API接口实现
新增big-market-api模块,实现对外的接口,3个抽奖服务。调整抽奖策略领域实现方式,满足接口单一职责 Trigger模块:专门用于提供触发操作,包括:HTTP调用,RPC(Dubbo)调用,定时任务,MQ监听等动作。api模块定义出接口信息和出入参对象 trigger实现3个接口: 装配策略接口:初始化抽奖信息到Redis缓存中 查询奖品列表: 查询抽奖奖品列表信息给前端 随机抽奖接口:随机抽奖{奖品id,奖品编号} 开发流程增加api Module![[Pasted image 20241106095018.png]]1. 修改pom2. 定义抽奖服务接口 IRaffleService: strategyArmory, queryRaffleAwardList,randomRaffle3. 新增types-model-response对象 专门用于返回对象的4. 新增api-dto-RaffleAwardListRequestDTO 抽奖奖品列表的请求对象。 RaffleAwardListResponseDTO抽奖奖品列表的返回对象 ...