RabbitMQ如何测试

结合上一篇的遇到bug如何查日志 我们来学习下,如何使用RabbitMQ管理台来测试MQ; 还是之前的例子,用图片简单介绍下逻辑 01 为什么我们要测MQ?什么时候测? 当认证成功之后,没有更新账号的认证状态,涉及到MQ的地方都有可能产生bug: 认证系统没有发MQ;认证系统发送的MQ数据错误或字段缺失;账号系统没有消费MQ;账号系统消费了MQ,但是更新认证状态失败; 除了查询服务器日志之外,MQ后台也可以帮助我们定位MQ问题; 02 RabbitMQ工作原理 在讲解如何查询之前,得先了解下MQ的工作原理: 其中,中间的Broker表示RabbitMQ服务,每个Broker里面至少有一个Virtual host虚拟主机,每个虚拟主机中有自己的Exchange交换机、Queue队列以及Exchange交换机与Queue队列之间的绑定关系Binding。producer(生产者)和consumer(消费者)通过与Broker建立Connection来保持连接,然后在Connection的基础上建立若干Channel信道,用来发送与接收消息。 上面是官方解释,我用小白语言翻译一遍,就是如下图: 03 RabbitMQ管理后台 讲完原理,再看下后台长什么样子: 交换机列表: 交换机详情: 选择一个交换机,可以查看到有哪些路由,哪些队列绑定了哪些路由; 可以新增队列、手动触发发送mq消息; 队列列表: 可以看到队列的堆积情况,及消息处理速度;(如果有堆积,且一直在新增,说明并没有被消费) 可以新增自己的队列,绑定交换机及路由; 队列详情: 04 分析问题 现在要开始分析了: 1、认证MQ发了没?认证系统发送的MQ数据错误或字段缺失; 由于MQ被消费了之后,队列就清空了,如果发送和消费都没问题的话,那账号队列是空的,无法查询到; 这个时候,我们可以新增一个自己的队列,去绑定认证的交换机路由;由于自己新增的队列没有程序去消费,会一直积压,就可以通过自己新增队列查询消息; 如果能查询到消息,说明认证是发送了的; 通过get message而且还可以看到消息内容是否正确,有无字段缺失等; 如果没有发送,那么在常规的测试场景下,就无法测试账号的消费是否有bug,我们可以在交换机详情页,手动推送MQ,去看账号是否变更认证状态;(但是这个时候不好把握MQ的消息格式,得去问开发) 2、账号消费了MQ吗? 这个时候只需要去看账号的队列是否有积压就可以了; 3、账号系统消费了MQ,但是更新认证状态失败; 到这一步在MQ阶段就收尾了,就去查询其他问题了,有没有报错之类的(上篇已讲过); 好了,到此MQ的介绍就已完结;其实关于RabbitMQ管理后台的讲解只是冰山一角,这里只列出了与本文排查有关的,大家可以再多去了解一下~ 欢迎大家一起探讨~

OpenCV与AI深度学习 | 如何使用YOLOv9检测图片和视频中的目标

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:如何使用YOLOv9检测图片和视频中的目标 1 介绍 在之前的文章中,我们探索了使用 YOLOv8 进行对象检测。现在,我们很高兴能够深入研究最新的迭代——YOLOv9!这个新版本承诺在准确性、效率和适用性方面取得显著进步,使其成为各种计算机视觉任务的强大工具。 2 如何使用 YOLOv9 处理图像和视频 第 1 步:安装必要的库 pip install opencv-python ultralytics 第 2 步:导入库 import cv2 from ultralytics import YOLO 第 3 步:选择模型 model = YOLO("yolov9c.pt") 在下面网址中,您可以比较不同的型号并权衡各自的优缺点。在本例中,我们选择了 yolov9c.pt。 https://docs.ultralytics.com/de/models/yolov9/#impact-on-lightweight-models 第 4 步:编写一个函数来预测和检测图像和视频中的对象 def predict(chosen_model, img, classes=[], conf=0.5): if classes: results = chosen_model.predict(img, classes=classes, conf=conf) else: results = chosen_model.predict(img, conf=conf) return results def predict_and_detect(chosen_model, img, classes=[], conf=0.5, rectangle_thickness=2, text_thickness=1): results = predict(chosen_model, img, classes, conf=conf) for result in results: for box in result.

Windows系统完全卸载删除 Node.js (包含控制面板找不到node.js选项情况)

1.打开cmd命令行窗口,输入npm cache clean --force 回车执行 2.打开控制面板,在控制面板中把Node.js卸载 移除之后检查环境变量是否也移除:点击Path,点击编辑。 把环境变量中和node有关的全部移除,然后点击确定。 3.重启电脑,这一步主要目的是清除正在执行的Node进程,如果你能在任务管理器中手动清除Node进程也是可以的,但对于小白来说重启电脑是最好的操作。 4.在cmd命令行中输入 where node 回车执行。如果有显示具体的目录,把这个目录删掉,以图中为例,这里我们就要删掉D盘下的nodejs文件夹,然后再重启。如果没有显示具体目录,说明已经卸载成功了。可以安心安装其他版本node了。 如果遇到控制面板找不到node.js选项,可以尝试以下方达手动删除node.js; 打开命令提示符或PowerShell窗口。 运行以下命令以确定是否已安装Node.js: node -v 如果显示了Node.js的版本号,则表示已安装。 在命令提示符或PowerShell中运行以下命令,找到Node.js的安装路径: where node 该命令将显示Node.js可执行文件(node.exe)的路径。 使用cd命令切换到Node.js的安装路径。 手动删除Node.js的相关文件和文件夹。你可以使用以下命令删除文件: del /f /s /q node_[module](https://geek.csdn.net/educolumn/34e60ffe14901ff5e838415c8746f124?spm=1055.2569.3001.10083)s del /f /s /q node.exe del /f /s /q npm 请谨慎使用以上命令,确保仅删除与Node.js相关的文件和文件夹。 如果你在安装过程中添加了全局模块(global modules),也需要手动删除这些模块。可以通过以下命令找到全局模块的安装路径: npm root -g 然后使用rd命令删除全局模块文件夹。 请记住,在进行任何操作之前,建议备份你的重要文件和数据,以防意外发生。 如果需要在windows系统上重新安装node.js的朋友,可以阅读我的另一篇文章: node.js安装及环境配置超详细教程【Windows系统安装包方式】 希望以上步骤能够帮助你解决问题!觉得有所帮助的朋友点点关注。

Mac 解决外接移动硬盘(NTFS格式)无法写入的问题

文章目录 1. 问题描述2. 解决步骤 1. 问题描述 MacOS 可以识别 NTFS 格式的磁盘,但是默认情况下是只读模式,即无法向 NTFS 格式的磁盘写入数据。这是因为 NTFS 是 Windows 系统默认的文件系统格式,而 MacOS 对 NTFS 的写入支持是有限的。 如果你想要在 MacOS 上写入 NTFS 格式的磁盘,可以通过以下方式: 使用第三方软件:有一些第三方软件可以让 MacOS 具有对 NTFS 写入的支持,比如 Paragon NTFS 或者 Tuxera NTFS。这些软件可以安装在 MacOS 上,使得你可以像对待其他文件系统一样对 NTFS 格式的磁盘进行读写操作。 使用命令行工具:你也可以通过在终端中使用命令行工具来实现对 NTFS 磁盘的写入操作。一个常用的工具是 ntfs-3g-mac,可以让 macOS 具有对 NTFS 的读写支持。 本文介绍命令行工具实现写入 2. 解决步骤 首先保持外接硬盘接入 Mac 状态,不要断开 (1)查看硬盘 diskutil list 如果外接硬盘接入 Mac,这里会有你的外接硬盘的名称! 假设,你的外接硬盘挂载在 /dev/disk4s1 下 (2)移除挂载 sudo umount /dev/disk4s1 (3)下载 ntfs-3g-mac 工具 brew tap gromgit/homebrew-fuse brew install --cask macfuse brew install --force ntfs-3g-mac (4)建立新的挂载点

WebView基础知识以及Androidx-WebKit的使用

文章目录 摘要WebView基础一、启动调整模式二、WebChromeClient三、WebViewClient四、WebSettings五、WebView和Native交互 Androidx-WebKit一、启动安全浏览服务二、设置代理三、安全的 WebView 和 Native 通信支持四、文件传递五、深色主题的支持六、JavaScript and WebAssembly执行引擎支持 摘要 文章主要分2部分: Webview的基础相关知识:如调试、基础API、和原生交互等Androidx-WebKit 的使用: 如和原生的消息交互、文件传递、以及启动安全浏览等 WebView基础 一、启动调整模式 在开发过程中,我们可以启用 WebView 的调试模式,以便在 Chrome DevTools 中查看 WebView 的内容、网络请求等信息。 WebView.setWebContentsDebuggingEnabled(true) 调试界面 chrome://inspect/#devices 二、WebChromeClient WebChromeClient 是一个抽象基类,它的实例可以被传递给 WebView.setWebChromeClient() 方法,以处理与 JavaScript 交互和网页元素相关的事件。 2.1 WebChromeClient一进度相关 onProgressChanged(WebView view, int newProgress): 当页面加载进度改变时调用。newProgress参数表示当前页面加载的百分比。 2.2 WebChromeClient-标题、图标相关 onReceivedTitle(WebView view, String title): 当前页面的标题已经被接收到时调用。title参数是新的标题。onReceivedIcon(WebView view, Bitmap icon): 当前页面的图标已经被接收到时调用。icon参数是新的图标。onReceivedTouchIconUrl(WebView view, String url, boolean precomposed): 当网页的触摸图标URL被接收到时调用。url参数是图标的URL,precomposed参数表示图标是否已经被合成。 2.3 WebChromeClient-权限相关 onPermissionRequest(PermissionRequest request): 当网页请求一个权限时调用,例如摄像头、麦克风等。你可以在这个方法中处理权限请求。onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback): 当网页请求获取地理位置权限时调用。origin参数是请求权限的网页的源,callback参数是用于设置权限的回调。 override fun onPermissionRequest(request: PermissionRequest?

Android Studio Gemini插件使用

就在昨天的五月七号,Android Studio客户端迎来了一波新版本,谷歌大名鼎鼎的Gemini也作为插件加入了新版本的AS中,而且可以免费使用,作为一个合格的开发,必须要来体验一下。 Gemini是谷歌开发的AI软件,据说跟gpt有一战之力。 首先当然是要下载最新版本的AS,考拉的最新版本 接着打开Setting - Gemini , 登录谷歌账号 如果无法登录,需要在AS 的 Setting - Proxy 中设置 一下HTTP的Proxy hostname 和 port 要从PROXY软件中获取 最后就可以在As中使用Gemini了,使用体验还是非常不错的,还有代码补全以及自动生成注释的功能,大家可以去体验体验 完工!

【python】常见的python下载库镜像源

python中的第三方库大多由国外提供,在国内直接进行下载时,可能会因为访问国外网络较慢,而出现下载超时的报错提醒,为了避免出现类似问题,我们可以在下载库时加入国内的镜像源来下载,这样就不会出现网络较慢的情况 前言 以下时国内常见的镜像源 正文 一、下载库的方式 在终端输入:pip install 库名 -i 镜像源 二、国内常见镜像源 清华:https://pypi.tuna.tsinghua.edu.cn/simple/ 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/ 华中科技大学:http://pypi.hustunique.com/simple/ 上海交通大学:https://mirror.sjtu.edu.cn/pypi/web/simple/ 豆瓣:http://pypi.douban.com/simple/ 总结 下载库时使用镜像源避免下载超时

【C语言 | 字符串处理】sscanf 详细介绍、使用说明以及使用例子源码

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 ⏰发布时间⏰:2024-05-08 15:40:38 本文未经允许,不得转发!!! 目录 🎄一、概述🎄二、sscanf 函数介绍🎄三、sscanf 函数使用例子✨3.1 sscanf 函数解析字符串✨3.2 sscanf 函数解析数字 🎄四、总结 🎄一、概述 在Linux的man手册是这样介绍 sscanf 系列函数的: scanf()函数族根据如下所述的格式扫描输入。此格式可能包含转换规范;这种转换的结果(如果有的话)存储在遵循格式的指针参数所指向的位置。每个指针参数的类型必须适合相应转换规范返回的值。 如果格式中转换规范的数量超过指针参数的数量,则结果是未定义的。如果指针参数的数量超过转换规范的数量,则会计算多余的指针参数,但在其他情况下会被忽略。 在C语言日常编程中,常常会使用sscanf来解析字符串,将字符串中特定的数字、字符串解析到指定的内存(变量)中。 🎄二、sscanf 函数介绍 sscanf 函数原型: #include <stdio.h> int scanf(const char *format, ...); int fscanf(FILE *stream, const char *format, ...); int sscanf(const char *str, const char *format, ...); 函数介绍:sscanf 函数定义在 <stdio.h> 头文件中,它的功能是从str参数指定的字符串,按照format参数指定的格式获取数据;与其功能类似的还有scanf、fscanf,scanf是从标准输入按照格式获取数据,fscanf是从指定的文件按照格式获取数据。函数参数: str:指定要获取数据的源字符串,也就是要解析的字符串;format:格式字符串。指定了要匹配的格式规则。格式字符串由一系列指令组成,这些指令描述了如何处理输入字符序列。如果指令处理失败,则不再读取进一步的输入,sscanf()将返回。“失败”可以是以下任意一种:输入失败,意味着输入字符不可用,或者匹配失败,意味着您的输入不合适。...:可变参数列表,用于接收解析后的数据。 返回值:sscanf 函数返回成功解析的数据项的个数。如果解析失败或没有匹配的数据项,则返回0。 format 参数常用的指令是:以“%”(百分比)字符开头。根据此规范转换输入中的字符序列,并将结果放入相应的指针参数中。如果下一个输入项与转换规范不匹配,则转换失败——这是匹配失败。 常用的格式字符串如下: %%:匹配百分号字符“%”。也就是说,格式字符串中的%%与单个输入“%”字符匹配。不会进行任何转换(但会丢弃初始空白字符),也不会进行赋值。%d:匹配一个可选的带符号的十进制整数;下一个指针必须是指向int的指针。%u:匹配一个无符号十进制整数;下一个指针必须是指向无符号int的指针。%f:匹配一个可选的带符号浮点数;下一个指针必须是要浮动的指针。%x:匹配一个无符号的十六进制整数;下一个指针必须是指向无符号int的指针。%c:匹配长度由最大字段宽度(默认值为1)指定的字符序列;下一个指针必须是指向char的指针,并且必须有足够的空间容纳所有字符(不添加终止的空字节)。通常跳过前导空白被抑制。要先跳过空白,请在格式中使用显式空格。%s:匹配非空白字符序列;下一个指针必须是指向字符数组的初始元素的指针,该元素的长度足以容纳输入序列和自动添加的终止空字节(“\0”)。输入字符串停止在空白处或最大字段宽度处,以先出现的为准。 🎄三、sscanf 函数使用例子 使用 sscanf 函数的用法主要有两种:一是从输入字符串中解析出想要的字符串;二是从输入字符串中解析出想要的数字。 ✨3.1 sscanf 函数解析字符串 解析简单字符串:下面例子可以将输入字符串存到str中: char str[64] = {0, }; sscanf("

工具推荐 |Devv.ai -- 最懂程序员的新一代 AI 搜索引擎

介绍 伴随 GPT 的出现,我们可以看到越来越多的 AI 产品,其中也不乏针对程序员做的代码生成工具。 今天介绍的这款产品是一款针对中文开发者的 AI 搜索引擎,Devv.ai 使用 Devv.ai 的使用非常简单,就是传统的搜索场景,有一个输入框然后搜索任意想要查询的编程内容。我们来看下面这个例子: Example: 如何在 nextjs 14 里启用 sass 输入问题后会分几个部分返回: 回答:主要部分,会包含文字解释和对应的代码块,可以一键复制来源:会在右边列举来源,可以看到来源都是英文的,相比于中文搜索的结果确实更加可靠推荐问题:会自动生成几个继续提问的问题让你点击,用来学习新概念的时候非常省事追问输入框:如果当前回答不完全,或者有想深入的地方,可以继续追问。追问的时候回答会记住之前的内容,有时候一个问题比较长的话需要用追问来补全 体验总结 目前 Devv.ai 已经替代了所有我使用 ChatGPT 的场景以及 80% 使用搜索引擎查询的问题,主要是下面几个优点 优点 回答准确性较高,虽然偶尔也会有 “幻觉” 的问题,但是自己使用下来已经非常可靠了。大部分问题都能直接解决,如果需要我深入阅读的还可以点击右边的来源进去看中文支持度高:ChatGPT 或者 Phind 都是针对英文社区的,可以看到 Devv.ai 支持中文 UI 和中文回答,而且中文回答下的准确度跟英文场景基本持平。基本上 devv.ai 在中文问答下的结果是我用过体验最好的页面简洁:看起来非常舒服,同时也支持黑夜模式速度快:相比于 ChatGPT 或其他 AI 产品的联网搜索模式,devv.ai 的返回速度很快,虽然会比搜索引擎慢 1-2s,但是这个速度对我来说是完全能接受的免费:这个也非常重要,目前 devv.ai 的所有功能都是免费的,而且不需要登陆。相比于现在各种需要登陆和付费才能使用的网站,devv.ai 非常良心直接访问:devv.ai 可以直接在国内访问,不需要翻墙访问:devv.ai 目前在国内被 Block 了,需要科学上网访问 进展 Devv.ai 目前刚刚上线三个月,已经在中文开发者社区获得了非常多的好评,每周都有超过 4万名程序员在使用 Devv.ai 进行搜索。 Devv.ai 背后是一线美元基金支持的团队,所以虽然现在免费,但是也不需要担心产品突然消失或者跑路~ 究竟是不是最懂程序员的新一代搜索引擎,可以自己试试给出评判

Stable Diffusion教程|怎么写提示词prompt语法格式详解和实战

怎么画出高质量的AI图像? 不管使用Stable Diffusion的文生图或图生图进行AI绘画,都可以用提示词描述相关图像效果,通过尝试不同提示词组合和参数,从而达成更好的AI绘图效果和创意。与其天天在网上找别人的提示词,不如自己学会写好提示词,读懂本篇攻略让你轻松驾驭SD提示词prompt。 目录 1 SD提示词语法格式 2 提示词技巧 3 SD提示词实战 一、SD提示词语法格式 提示词权重(prompt weight) 你在抄别人prompt作业的时候,里面是不是经常有一堆大小括号、冒号和数字,这其实就是在对某个提示词进行加权和降权的操作,从而改变提示词对图像的影响程度。另外提示词的先后顺序,越靠前的提示词影响程度也越大,通常先描述画风,再描述主题,最后是细节的描述。 加权 1 使用小括号“()”,可以对提示词权重提升1.1倍。 例如:“(1 girl)”代表“1 girl”权重提升1.1倍 2 小括号允许叠加多层。 例如:“((1 girl))”代表“1 girl”权重提升1.1*1.1=1.21倍 3 单层小括号加冒号,可以指定权重值。(推荐这种表达更为准确清晰) 例如:“(1 girl:1.5)”,指定“1 girl”权重提升1.5倍 4 使用大括号“{}”,提示词权重提升1.05倍,同时也允许叠加多层“{{}}”,但只有小括号才能指定权重值。 降权 1 使用中括号“[]”,可以对提示词权重除以1.1,降低0.9权重。 2 支持多层嵌套,但不支持指定权重中。 例如:“[[1 girl]]”,代表“1 girl”权重÷1.1÷1.1 快捷键操作 选中提示词,使用【ctrl】+↑ 或 ↓ ,能够给某个提示词快速加权和降权。 提示词混合语法格式 用“AND”或“|” 可以把两个提示词连接起来使用,表示的逻辑是这两个元素会交替出现,达成融合的效果。 例如:“yellow hair | green hair” 或 “yellow hair AND green hair” 画出黄色和绿色头发渐变效果,SD在处理的时候对黄色和绿色头发循环交替绘画。 渐变语法 1 “[from:to:when]” 例如:“[yellow:green:0.6]hair”,表示60%步骤先画黄色,后40%步骤画的绿色头发,黄渐变绿色。 2 “[to:when]” 例如:“[yellow:0.3]hair”,表示70%步骤不画,后30%步画黄色头发。 3 “[from::when]”

数学遇上人工智能,深度学习架构迎来最强挑战者 KAN,MLP 的时代结束了?

文 | 王启隆 出品|《新程序员》编辑部 多层感知器(MLP, Multilayer Perceptron)作为人工神经网络的一个基本架构,一直在历史上扮演着至关重要的角色。MLP 可以被视为深度学习领域的“基石”或“基础构件”,它的意义在于: 基础模型:MLP 作为最早被广泛研究和应用的神经网络模型之一,是许多复杂深度学习架构的起点和基础。它奠定了神经网络能够解决非线性问题的基础,是理解更高级神经网络结构的入门。 功能强大:虽然结构相对简单,但 MLP 已经能够处理复杂的分类和回归任务,展示了神经网络的强大适应能力和学习能力,为后续深度学习的发展铺平了道路。 理论与实践结合:MLP 不仅在理论上证明了神经网络的普遍近似能力,而且在实践中也取得了显著的性能表现,特别是在早期的手写数字识别等机器学习应用当中。 但 AI 发展到今天,MLP 几乎一点没变,人类的需求却越来越多了。MLP 在庞大的需求压力下暴露出了一个又一个缺点:可解释性和交互性不足、处理大尺寸图像的时候计算复杂且有过拟合问题、缺乏灵活性和适应性、自动特征提取方面的能力较弱…… 4 月 30 日,全新的神经网络架构 KAN 横空出世。它的使命只有一个:取代 MLP。 KAN 全称 Kolmogorov-Arnold Networks,其最大意义就是作为 MLPs 最具潜力的替代品,提出了全新的架构思路。KAN 受到 Kolmogorov-Arnold 表示定理的启发,在以下几个方面展现了显著的优势: 增强的准确性与效率:与传统 MLPs 相比,KANs 能够使用更少的参数达到相同或更好的准确度,尤其是在数据拟合和偏微分方程求解等任务中。这意味着在处理复杂科学和数学问题时,KANs 可能提供更高效的解决方案。 可学习的激活函数:KANs 的一个核心创新点是将可学习的激活函数置于边(权重)上,而非节点(如 MLPs)。这不仅允许模型学习到更复杂的函数关系,还使得每个权重参数由一个参数化的样条函数代替,从而提高了模型的表达能力。 增强的可解释性:KANs 的结构可以直观地被可视化,并且容易与人类用户交互,这有助于科学家们理解模型内部的工作原理,甚至直接参与到模型的优化和“发现”过程中。通过手动调整和简化 KANs,科学家们能够引导模型发现或验证数学与物理定律,促进 AI 与科学家之间的合作。 适应性和灵活性:利用样条基函数的内在局部性,KANs 支持适应性设计和训练,比如引入多级训练策略,提高模型的准确性和训练效率。这种适应性使得 KANs 能更好地匹配不同任务的需求。 自动发现高效结构:实验结果显示,自动发现的 KAN 结构通常比人为构建的更为紧凑,表明 Kolmogorov-Arnold 表示可能在某些情况下能以比预期更高效的方式压缩和表示信息,尽管这也可能给模型的直接可解释性带来挑战。 此前,在 CSDN 新程序员对图灵奖得主 Joseph Sifakis 的采访中,这位老教授曾感叹符号主义的落寞,并对符号主义 AI 的理性特征大表赞赏。如今数学重新遇上了人工智能,脱胎换骨的符号人工智能或将以 KAN 的身份重新归来。 看到这里,你可能已经发现了:KAN 的数学解释能力相当超群,且它最终要解决的,很可能就是曾经被视为“蹭热点”“伪命题”“不可能”的 AI4Science。依靠 KAN 在科学相关任务的能力,让人工智能,助力未来的科研与自然规律发现。

【翻译】Processing系列|(四)用 Android Studio 从 0 到 1 进行 Processing 安卓开发

原文链接:Processing for Android Developing with Android Studio 朋友跟我说官方教程里也写了该怎么用 Android Studio 开发,并且亲测可行。这种方式确实能开发出结构更加清晰、额外组件更加少的程序,比上一篇文章中直接克隆 Processing-Android 仓库要更合适,不过上一篇文章那种方法更加快捷。 导读: 上上上篇:【翻译】Processing系列|(一)简介及使用方法 上上篇:【翻译】Processing系列|(二)安卓模式的安装使用及打包发布 上一篇:【翻译】 Processing系列|(三)安卓项目构建 文章目录 使用 Android Studio 开发一般步骤使用 BintRay 软件包(朋友说这个方式用不了) 使用 Android Studio 开发 使用 Android Studio 和 Processing 的核心库进行高级 Android 开发。 一般步骤 安卓工作室是 Google 推荐用于 Android 开发的工具。如果你已经有了如何使用 Android Studio(独立于 Processing)开发 Android 应用程序的经验,并且希望在 Android Studio 项目中使用 Processing 核心库,那么本教程可能会很有用。 我们所有的核心代码都捆绑在 processing-core.zip 中,它位于 AndroidMode 文件夹中。你只需将此文件复制为 processing-core.jar,并将其作为依赖项添加到项目中。Android Studio 的分步程序如下: 创建一个 Android 项目(如果尚未创建)。从选择空活动开始: 输入项目名称、包名称和 SDK 最低版本。当最新的 Android 处理核心迁移到 AndroidX 时,保持「 Use Legacy Android.

程序媛的mac修炼手册-- 2024如何彻底卸载Python_mac系统如何清除python安装环境

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。 分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习 网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。 需要这份系统化学习资料的朋友,可以戳这里获取 一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长! 啊,前段时间因为想尝试chatgpt的API,需要先创建一个python虚拟环境来安装OpenAI Python library. 结果,不出意外的出意外了,安装好OpenAI Python library后,因为身份认证问题,根本就没有获取API key的权限😂😂得,一顿操作猛如虎,结果全在自找堵。 然而,删了OpenAI Python library后,为其创建的python虚拟环境影响到了Mac的python环境配置。总之,不同的python环境开始打架了,代码是一点跑不了啊。 无奈,卸载重装Python,成为最迅捷的解决路径。可是,OpenAI Python library的python虚拟环境安装位置,和其他Python文件的安装位置不一致,导致我在卸载Python 过程中总是卸不干净,以下是卸载Python的经验历程血泪教训😂 目录 一、常规卸载Python路径 二、补充卸载Python路径 三、使用Homebrew卸载Python 前情提要:这里咱们主要针对的是,Monterey 12.3 及以后版本的macOS,如何彻底卸载自装的Python。Monterey 12.3及更早版本的macOS,系统预装了Python2,那是无法卸载的。 一、常规卸载Python路径 1、首先,在「应用程序」直接找到Python图标,然后「移到废纸篓」; 2、接下来,在「终端(terminal)」使用删除命令来删除Python的环境配置文件,通常在根用户目录下需要三条命令行来删: rm -rf /Applications/Python 3、如果你的Mac上装有多个版本的Python,那么这时候需要打开Python的环境配置文件夹,删除需要卸载的Python版本相关文件。 方法是: 打开“「访达(Finder)」“➡️ 点击Mac左上角的访达导航栏,点击 Go➡️在下拉框中选择Go to Folder ➡️ 然后在弹出的窗口中输入并选择“/Library/Frameworks/Python.framework” 打开Python.framework文件夹后,找到你需要删除的python版本文件夹。这时先打开「终端(terminal)」,敲下删除命令sudo rm -rf,然后把python版本文件夹拖到terminal中,如下图所示:(这一步需要输入验证管理员权限的密码) 如果你的Mac上只装有1个版本的Python,那在「终端(terminal)」使用以下删除命令,也可以得到相同效果。 rm -rf /Library/Frameworks/Python.framework rm -rf /usr/local/bin/python 完成上述操作后,通常Mac上的Python就被卸载干净了。这时,在「终端(terminal)」中输入命令后, python3 --version 会出现下图所示的反馈: 这说明,Mac上的python已经卸载干净了。 二、补充卸载Python路径 当然,也有人和我一样,完成上述常规卸载操作后,Mac上的Python稳如老狗。这时候就需要去犄角旮旯里找到Python的配置文件,进行一一删除。 谁能想到,我最终是执行以下命令,才把Python卸载干净的。😭😭 sudo rm -rf /Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework sudo rm -rf /Library/Developer/CommandLineTools/usr/bin/python3 每个人的情况不一样,咱们接下来讲基本方法。

window.print()前端实现网页打印功能详解

教程下载地址: 网赚博客https://www.piaodoo.com/创业项目排行榜前十名https://www.piaodoo.com/ 目录 前言一、print()方法二、打印样式三、打印指定区域部分内容四、强制插入分页五、设置打印布局(横向、纵向、边距)六、去除浏览器默认页眉页脚七、打印方法封装总结 前言 print作为浏览已经比较成熟的技术可以经常被用来打印页面的部分内容,我们可以在MDN上查看到相关的简单介绍。 一、print()方法 print() 方法用于打印当前窗口的内容。调用 print() 方法会产生一个打印预览弹框,让用户可以设置打印请求。最简单的打印就是直接调用window.print(),当然用 document.execCommand('print') 也可以达到同样的效果。默认打印页面中body里的所有内容。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>printDemo</title> </head> <body> <input type="button" value="打印此页面" οnclick="printpage()" /> <div>内容</div> <script> function printpage() { window.print() } </script> </body> </html> 二、打印样式 直接调用print()方法去打印网页内容,我们会发现,事先调整好的布局和样式都没法实现,那么有哪些方法可以帮助我们改善打印的用户体验呢? 【1】使用打印样式表 配置一份打印样式表print.css,引入到HTML文档,在 <link> 上加上一个 media="print" 来标识这是打印机才会应用的样式表,这样打印的时候,就会默认将该样式表应用到文档中 <link href="/path/print.css" rel="external nofollow" media="print" rel="stylesheet" /> 【2】使用媒介查询 当我们要修改的样式没有很多的时候,其实完全不需要重新写个样式表,只要写上一个媒介查询也可以达到同样的效果,如: @media print { h1 { font-size: 20px; color: red; } } 【3】内联样式使用media属性 <style type="text/css" media="

一键AI换衣:比华为P70一键擦除衣服更神奇!

🎩 一键AI换衣:比华为P70一键擦除衣服更神奇! IDM-VTON 🧵 IDM-VTON是一款具有突破性的虚拟试衣应用程序,它结合了先进的视觉编码器和UNet模型,提供了高质量的虚拟试穿图像。此外,IDM-VTON的定制化功能进一步提升了图像的一致性和真实感。 该技术能够精确捕捉服装的各种细节,包括纹理、图案和缝线等,确保这些细节在虚拟试衣图像中得到真实的展示。这种对细节的精细处理,使得用户在使用时能够获得更加真实和直观的衣物质感体验。 技术亮点: 高度真实感: 通过精细的图像细节处理,IDM-VTON为用户带来几乎如同现实的试衣体验。 复杂背景适应: 即使是在户外或背景复杂的环境中,也能准确展示衣物的试穿效果,确保图像质量。 一致性维持: 在展示同款服装时,无论是在不同的人物模型或不同的姿态,IDM-VTON都能保持服装细节的高度一致。 纹理与图案精准复原: 技术擅长于捕捉服装的纹理和图案,确保即使是最细小的装饰也能在试衣图像中精确反映。 应用场景: IDM-VTON的虚拟试衣技术广泛应用于时尚零售、个性化服装设计、在线试衣间及AR试衣体验等多个领域。它不仅简化了消费者的试衣过程,也为服装设计师和零售商提供了创新的展示和销售方式。 技术优势: 用户可以不用亲自试穿,就能预览服装在不同场景和体型上的效果。 零售商能够节约实体试衣间的成本,同时提供更丰富的试衣体验。 设计师可以利用虚拟试衣快速收集反馈,优化服装设计。 🔗 学术Fun提供了一键启动包,方便用户直接使用,无需配置Python环境,下载地址(电脑浏览器访问): 🎩 一键AI换衣:比华为P70一键擦除衣服更神奇!_学术FUN会员专属,加入会员后,所有内容免费下载,可永久使用!在个人中心每日签到可白嫖会员! 🎩 一键AI换衣:比华为P70一键擦除衣服更神奇! IDM-VTON 🧵 IDM-VTON是一款具有突破性的虚拟试衣应用程序,它结合了先进的视觉编码器和UNhttps://xueshu.fun/4490/,点击页面右侧区域进行下载! 电脑配置要求如下: windows 10/11 64位操作系统 16G显存以上的英伟达显卡 下载及使用教程 下载压缩包 下载地址(电脑浏览器访问): 🎩 一键AI换衣:比华为P70一键擦除衣服更神奇!_学术FUN会员专属,加入会员后,所有内容免费下载,可永久使用!在个人中心每日签到可白嫖会员! 🎩 一键AI换衣:比华为P70一键擦除衣服更神奇! IDM-VTON 🧵 IDM-VTON是一款具有突破性的虚拟试衣应用程序,它结合了先进的视觉编码器和UNhttps://xueshu.fun/4490/,点击页面右侧区域进行下载! 解压文件 解压后,如下图所示,双击启动.exe文件运行。 使用方法 在浏览器中访问http://127.0.0.1:7860/,即可开始在浏览器中使用虚拟试衣功能。

Failed to obtain JDBC Connection; nested exception is java.sql.SQLTransientConnectionException: mas

这个错误表示无法从数据库获取 JDBC 连接,并且在超时之后仍未获得连接。可能有几个原因导致这个错误发生。以下是一些常见的可能原因和解决方法: 数据库连接池超载:如果您的应用程序同时向数据库发起大量的连接请求,可能会导致数据库连接池超载。您可以尝试增加连接池的最大连接数或调整连接池配置来解决此问题。 数据库故障或缓慢:数据库服务器可能发生故障或者出现性能问题。您可以检查数据库服务器的状态,确保它正常运行,并且没有任何网络或性能问题。 防火墙或网络问题:防火墙或网络配置可能导致应用程序无法与数据库建立连接。您可以检查防火墙规则和网络设置,确保应用程序可以访问数据库服务器。 数据库连接配置错误:您可能在应用程序的数据库连接配置中使用了错误的连接信息。请检查您的连接字符串、用户名和密码等连接配置,确保它们是正确的。 数据库没有运行

一个基于ComfuUI Api的 AIGC自动绘画实现方案

工作流程图 基本原理已经弄通,下一步要开始编码搬砖了。整个自动绘画的流程如下,暂就不整高深U什么L了,写个简单明了能容易看懂的流程图。UI借用了下墨刀里的AI绘画公开原型 部署节点 整个系统的后端服务典型部署需要3类节点 Aigc Server:用于提供针对用户的查询、显示、充值、扣点等服务Aigc Agent:与ComfyUI一一对应,用于获取队列、转发websock通知、返还扣点的业务操作ComfyUI Server:提供ComfyUI服务,需要开启API开发模式 流程说明 接下来我对整个流程进行详细描述: 为用户建立rabbitmq队列,用于获得进度推送消息。前端界面使用stompjs订阅用户对应的队列;绘画前,如果是图生图,上传蒙版等操作,需要在提交前先存储到公用或临时存储(为什么不直接提交COMFYUI?因为多绘画节点时,不确定最终会落到哪个节点,但是也不能傻傻的等到选择了空闲绘画节点后再去用公网慢吞吞的传);用户点击“立即创作”按钮,此时发起绘画请求,发送给Aigc Server检查用户账户是否够用;如果账户够用,下一步一次轮询所有的绘画Agent,找到空闲或最小队列的节点(此处可以考虑优化,绘画的推送消息queue_remaining会推送剩余队列长度,可以存储到resis hashmap备查);如果节点队列太长,也可以考虑直接返回一个确认消息,提示用户队列过长,可能会等待较长时间,是否确定提交。如果确定提交则继续走1的流程,覆盖一个无需重复询问的参数;提交后提示信息建议用户先操作其它功能,稍后在用户图片查看如果有空闲的节点,则执行提交。提交时,先执行账户扣点(还是要先检查一下最新的账户 )。然后异步将OSS(或本地存储)的图片使用/upload/image或/upload/mask推送给ComfyUI节点,并根据流API数据及工作流数据替换参数后推送给COMFYUIComfyUI节点此时开始异步的绘图,(Agent节点从启动后需要实现连接COMFYUI的Websocket的保活机制,如果无法连上时要标记Agent不可用)ComfyUI节点绘图过程会不断通过Websocket推送绘画Agent执行Node和状态信息,对于C端客户,我们不需要提供太复杂的信息,只需要将节点别名(记录在数据库)推送给用户,例如“WD姿态分析中”,对于KSampler的节点则推送进度信息前端展示进度条;当出现异常时,系统记录异常,并展示绘画失败的信息通过RabbitMQ推送给用户(这里要推送用户的全局消息),并进行返点(根据任务的点数);当ComfyUI给出完成状态消息时(Node==null),通过MQ推送完成的消息。此时如果界面是等待界面则关闭并弹出完成提示;如果用户已经不在等待界面,则推送一个全局消息; 以上是ComfyUI自动绘画核心实现流程,典型的流程例如文生图、图生图、线稿转实景、AI摄影。也可以实现基于ComfyUI的其它流程,例如文本转视频、AI音乐制作等。 如果开发过程出现变化,会同步更新此文档。有任何疑问请留言

2024 Flutter 一季度热门 issue/roadmap 进展和个人感触闲聊

因为最近的《Flutter:听说你最近到处和人说我解散了?》相关事件之后,不少人对于目前 Flutter 的一些进度情况比较关心,刚好这里做一个简要汇总,报告几个过去一季度相关的热门 issue/roadmap 情况,另外这些天看文章评论和公众号留言「偶有感触」,文末也就闲聊扯几句。 iOS Privacy 关于 iOS 5 月份开始强制要求的隐私清单大家可能都有所了解,如果还没了解的可以看过往的详细解释: 2024 Flutter iOS 隐私清单上线,你收到 「ITMS-91053」 了吗?2024 春季 iOS 的隐私清单究竟是什么? 根据目前最近进展,从 5 月 1 日开始强制执行的一系列内容会仅限于动态框架,不过预计插件的静态构建要求的强制执行会在未来回归,从这个角度而言,对于 Flutter Plugin 的适配要求就降低了不少,前提是不在 third-party SDK requirements 列表: Android 14 TLHC 无法显示 这个 issue 是在 #146499 出现并被修复,它一开始来自 #139039 ,是被当作一个三星特有的问题被提交,PlatformView 相关内容偶尔会无法被正确渲染,而后问题被认为是 Androd 14 系统 bug 而转到 146499 。 这里面有个很有趣的插曲,那就是对方认为这是三星系统的 bug ,开发者只能等待厂商自己修复发布,并且这个问题其实在 Android 15 已经修复,而这样的说法也导致了上述两个 issue 吵到被强制 lock 冷静的情况。 目前官方最终发现,在 Android 14 平台上遇到的确实是一个 Android 本身的 bug, PlatformView 在内存修剪时,因为会停止从 Android 获取绘制信息,从而导致底层视图虽然存在并且可以交互,但是平台视图会出现透明的情况,所以这组触发条件并不是 Flutter 独有的,对应使用的 API 对于 Android 原生 App 也会失败。

Kingbase(人大金仓数据库)使用教程——下载、安装、JDBC连接、MyBatis-Plus应用

Kingbase(人大金仓数据库)使用教程——下载、安装、JDBC连接、MyBatis-Plus应用 下载JDBC的jar包 下载数据库安装文件 点击链接,下载授权文件(开发版365天),如果后续许可过期,只需更换安装目录下的license即可(注意改名为license.dat) 打开iso文件,双击exe进行安装,安装过程可以参考这篇文章:文章链接 在win的所有应用里面找到下面程序并打开 按照mysql的方式新建连接即可,如果遇到这个错误【致命错误: 用户"system" Password 认证失败(kbjdbc: autodetected server-encoding to be GB2312)】 请点此链接 到这里,KingbaseES已经安装成功了,接下来是使用Java的SpringBoot配合KingbaseES搭建项目 使用前提:电脑已经安装了Java和Maven环境 将连接KingbaseES的jar包导入maven本地仓库中 mvn install:install-file -DgroupId=kingbase -DartifactId=kingbase8 -Dversion=8 -Dfile=D:\kingbase8-8.6.0.jar -Dpackaging=jar -DgeneratePom=true 使用maven添加jar包,输入以上命令,-Dfile修改为自己jar包的存放路径 [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- install:2.5.2:install-file (default-cli) @ VerificationTreasure --- [INFO] Installing D:\kingbase8-8.6.0.jar to D:\Maven\maven_file\kingbase\kingbase8\8\kingbase8-8.jar [INFO] Installing C:\Users\23991\AppData\Local\Temp\mvninstall6714326966503022190.pom to D:\Maven\maven_file\kingbase\kingbase8\8\kingbase8-8.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 0.630 s [INFO] Finished at: 2024-04-22T11:26:25+08:00 [INFO] ------------------------------------------------------------------------ 出现以上信息表示添加maven成功

stable diffusion 之云端部署攻略

本文主要介绍stable diffusion云端产品以及使用步骤 ℹ️整合安装包、模型资源见文末~ megaease cloud(强烈推荐) 优点: 集成了常用大模型和插件、VAE3080显卡配置,费用大概0.48元/小时,可随时暂停,暂停后不收费可选webui 1.8.0版本存储独立,可持久化,费用0.01元/10GB/小时, 40GB存储24小时不停歇开着只需要0.98元(存储不可暂停,但是可以解绑删除,删除后不计费,后续可再次创建存储进行绑定)支持直接通过百度网盘/阿里云盘进行模型插件的上传充值后支持退款 点击打开并注册登录 megaease GPU实例 -> 新建资源 选择推荐配置 一般来说选择3080即可,性价比超高,只需要0.48元/小时,可随时暂停,暂停后不计费用 4060配置大概0.9元/小时 4090配置大概2.6元/小时 勾选最新webui版本 值得注意的是:存储是独立的,无法暂停;但是可以删除绑定的存储,删除之后才不计费 费用说明:cloud.megaease.cn/megacloud/a… 第一次点确定后,会跳转充值页面(可以随时退款),一般充5元即可,可以玩好久(因为可以随时暂停) 服务启动后会预扣费一小时,停止后自动按量返回费用(大概等待1分钟左右返还)~~ 确定后等待服务启动 需要等待2-5分钟 启动成功,状态会变成这样 可随时暂停,支持删除服务 注意:删除服务后,可选择删除存储,也可以不删除~(因为可以再次绑定到新的webui服务上,所以说它可以持久化)!!! 新的webui服务可绑定已有存储,一个存储只能绑定一个服务,如下图: 打开webui(自带很多大模型) 内置了很多大模型,基本够用了 3080配置22.8s刷图1024*1200 4张 选择麦橘现实风大模型,进行刷图4张(1024*1200分辨率),只需要22.8s 端脑云 注册登录(可邀请好友赚取脑力值) cephalon.cloud/ 自行登录注册即可 选择wenbui进行一键部署 同样选择3080显卡,选择按分钟计费(可随时暂停,暂停后存储会在3天后自动清除) 折合成小时,每小时费用为0.89元(性价比和megaease比,多了一倍) 开启服务 点击上图中的立即使用按钮即可开启服务,我等了很久才开始启动🐷 人多可能会排队,这个时候需要耐心等待,如下图: 启动中(也很慢) 启动成功,点击按钮打开webui, 输入提供的账号和密码,点确定即可 同样步骤,刷图4张,39.4 s eSheep 好处就是每天登录送100羊毛体力,且直接点击绘图按钮就可以开启服务 注意:每张图消耗1羊毛,每天能画100张图 可查看生成历史,如下图: 揽睿星舟 介绍 新人注册送3090免费2小时时长 www.lanrui-ai.com/ 收费标准 www.lanrui-ai.com/index/compu… 说实话,除了新用户赠送的时长,费用真的很贵,不推荐 使用文档 自己看下吧,不是太想用,🤣🤣😂 doc-rde.lanrui-ai.com/docs/yong-h… 驱动云 网址 virtaicloud.com/resource/ 收费标准 virtaicloud.com/resource/ 部署文档 打开链接:platform.