大家好,本文将围绕用python画一个心形怎么编程展开说明,python简单的画图代码爱心是一个很多人都想弄明白的事情,想搞清楚python画爱心代码大全需要先了解以下几个事情。
python爱心源代码集锦(18款) 本文目录:
一、代码效果预览索引图
二、爱心源代码集锦
(1)、爱心图形1(弧线型)(显示的文字写在代码里)
(2)、爱心图形2(直线型)(显示的文字写在代码里)
(3)、爱心图形3(弧线型)(通过输入方式显示文字)
(4)、用python绘制爱心树
(5)、粒子系统组成爱心,中间加字
(6)、粒子系统组成爱心
(7)、粒子系统组成爱心
(8)、最先复现“李峋爱心”代码的作者
(9)、跳动爱心
(10)、空心爱心
(11)、空心立体爱心
(12)、李峋同款爱心代码【有声版】
三、python字符画爱心 (1)、一行代码画爱心
(2)、用字符输出 I 爱 U (2种形式)
(3)、输出五个爱心,由Dear I love you forever! 五个单词填充而成
(4)、字符输出爱心曲线公式爱心1
(5)、字符输出爱心曲线公式爱心2
这篇文章是python 绘制爱心动画的源码集锦合集,每篇都附有原作者的名字博客链接。使用时将代码复制后在相关的编程语言环境下运行python简单代码案例。
代码仅供学习参考,请尊重原作者的创作和版权!
如果代码作者转载地址有错,请原作者留言,我会更正相应的代码原作者博客链接。
一、代码效果预览索引图 本文收集的python绘制的爱心动画源代码,主要涉及的模块有turtle、tkinter、math等。代码涉及的库,学习研究运行前需确保代码需要的库函数有安装。
11、空心立体爱心12、李峋同款爱心代码【有声版】
8、最先复现李峋爱心代码的作者9、跳动爱心10、爱心
5、粒子组成爱心,中间加字
6、粒子组成爱心
7、粒子组成爱心
1、(弧线型)(显示文字)
2、(直线型)(显示文字)
3、(弧线型)(输入显示文字)
4、爱心树
python字符画爱心
此部分的代码会显示在终端,如果你没有打开终端会看不到效果。如果你没有专业的代码编辑器,只想试试效果,运行方式:
1、安装python配置好环境
2、将代码完整复制,保存成:你的文件名.py
3、同时按window+R键,输入cmd,打开命令提示符窗口
输入:python 你的文件名.py
(1)一行代码画爱心(2)用字符输出 I 爱 U (2种形式)(2)用字符输出 I 爱 U (2种形式)
最近在进行WordPress迁移至新服务器的过程中,遭遇到一个棘手的问题,即在编辑文章并上传图片时,不断遭遇“此响应不是合法的JSON响应”的错误。经过多次验证和搜索,最终确定问题的根本原因并不在于禁用 Gutenberg 编辑器或安装经典编辑器插件,而是由于一些 PHP 模块未被正确开启。本文将详细介绍在 PHP 安装后应该开启哪些模块以及相应的开启方法。
一、错误审视 错误如下:
在使用 Gutenberg 编辑器进行复制粘贴或上传图片时,出现了上述错误。值得注意的是,若首先将图片上传至媒体库,再从媒体库添加图片,则不会遇到此问题。因此,很多攻略建议禁用 Gutenberg 编辑器或安装经典编辑器插件,但这些方法只是治标不治本,未能找到问题的真正根源。
正确的解决方法是开启php必要的模块设置:
二、PHP模块开启和参数设置 编辑 php.ini,里面有很多配置要修改
1. 修改扩展文件的路径 打开 php.ini 文件,寻找以下配置:
;extension_dir = "ext" 把 ;extension_dir = “C:\php\ext” 前面的分号去掉,然后引号里改成ext文件夹的绝对路径。
extension_dir = "“C:\php\ext" 2. 修改扩展文件 修改需要加载的扩展文件,取消部分扩展程序的注释(注释就是分号)
找到扩展程序的部分
;extension=php_exif.dll ;extension=php_gd2.dll ;extension=php_gettext.dll 修改后如下:
extension=php_exif.dll extension=php_gd2.dll extension=php_gettext.dll 3. 设置默认的时区 找到这个部分:
;date.timezone = 修改问Asia/Shanghai,如图
date.timezone = Asia/Shanghai 4. 设置 ssl 找到这个部分(我的是在文件末尾)
;openssl.cafile= 修改为cacert.pem,如图:
openssl.cafile=cacert.pem 5. 开启php短标签 找到如下部分:
; short_open_tag 去掉注释,改为:
short_open_tag = on 6.
两天时间!我搞定了Intel显卡(核显)+Windows安装stable-diffusion-AI画画软件 文章目录 两天时间!我搞定了Intel显卡(核显)+Windows安装stable-diffusion-AI画画软件前言一、工具的选择二、工具的熟悉三、硬件的短板四、学习题外话耐力值变通性 五、工具的部署部署环境安装步骤第一步、安装Python第二步、安装git第三步、下载Stable Diffusion绘画软件第四步、安装绘画软件 六、工具的使用第一个问题:缺少模型第二个问题:缺少openai依赖第三个问题:电脑数据精度第四个问题:硬件保护 总结一、开源精神二、感谢小伙伴的帮助三、我的希望 这篇博客是我对stable-diffusion的学习笔记
前言 在AI之潮铺天盖地而来的时候,我也对AI有了好奇之心,加上自身也喜欢动漫绘画,所以我选择从AI绘画这块进入AI领域,当然此时sora已经应运而生了。我应该去研究sora才对呀,毕竟当前是视频为王的时代。我主要基于两点来考虑:第一,我的设备硬件不允许,先来看看我的硬件设备。我的电脑硬件确实不太支持去跑比较依赖显卡的AI软件
第二点,我们公司是电商服务的公司,公司有很多设计师,我希望自己的这次探索能为他们的设计工作提供一些帮助,能让开源的AI工具成为他们工作中的“银弹”。我隐约感觉这次的AI风暴对设计、媒体工作者的效能会有极大的提升。这点也是我这次学习探索的最重要的原因。
本身我进行web应用开发的时候也需要去网上搜索一些免费的图标等素材,看着各类素材网站的收费和限制下载量,这让我困扰不已。而这时我看到了这个
这真是天无绝人之路,以后我这不会设计的开发也能获取自己想要的图标素材了!那么话不多说立即开始探索AI!
当然,我的技术能力和编辑能力有限,再加上时间有效性、工具版本和软硬件环境的区别,如果这篇博客不能解决您的问题,请见谅!
一、工具的选择 近来,AI绘画软件市场上涌现出两款备受瞩目的产品:Midjourney(简称MJ)和Stable-Diffusion(简称SD)。MJ需要付费使用,而SD则以开源免费的姿态呈现。那么SD则是我不二的选择!
与Midjourney相比,Stable Diffusion最大的优势在于其开源特性。这意味着SD拥有巨大的潜能,并且其发展速度迅猛。SD已经吸引了大量活跃用户,开发者社群积极贡献了大量免费高质量外接预训练模型(fine-tune)和插件,并持续进行维护更新。所以相比MJ,SD拥有更为丰富的个性化功能。
table Diffusion是一种潜在扩散模型(Latent Diffusion Model),能够根据文本描述生成详细的图像。其应用领域涵盖图像修复、图像绘制、文本到图像以及图像到图像等多个任务。简而言之,只需提供所需图片的文字描述,Stable Diffusion即可生成符合要求的逼真图像!
这样的开源免费工具为艺术创作者和技术爱好者带来了全新的选择,为其提供了更多自由度和创作空间。它的快速发展和社群支持也为用户提供了更多可能性,激发了创造力,进一步推动了AI技术在艺术创作领域的发展。
二、工具的熟悉 那么既然选择好了工具,首先需要做的事就是先了解这个工具,知自知彼百战不殆!我先后在知乎、B站、github进行Stable Diffusion学习,下面附上我的学习地址
知乎: 从零开始!(万字教程)Stable Diffusion超详细入门手册(我看完了)
B站: B站第一套Stable Diffusion系统课程,来了!(我学了两课)
Github: AUTOMATIC1111/stable-diffusion-webui(我看我需要的)
因为我自身有编程的知识,所以我花了一天的时间就完成了这个工具的简单入门学习,简单的基础知识有了,那么最好的学习方式当然是边学习边实践,那么我就需要搭建 Stable Diffusion软件,前面我说了我的电脑硬件配置是非常低的,所以硬件的短板将是我这次探索AI之旅的第一座大山。
三、硬件的短板 Stable-Diffusion对电脑的配置(显卡、内存)要求比较高,是核心的要点,其中显卡、内存、硬盘和cpu是至关重要的元素。在这些要素中,显卡的选择尤为关键。首选N卡(英伟达Nvida独立显卡),其效率远超集显、AMD或Intel显卡,推荐起步使用至少10系列,而40系列则提供更佳的体验感。显存方面,4G是最低要求,6G是合格标准,当然,显存越大越好,没有上限;至于内存,最低8G,16G更为理想,也没有上限;硬盘方面,500G以上的可用空间最佳,固态硬盘则是最优选择。其实就算不是SD,软件绘画、平面设计和媒体内容编辑等行业对电脑的硬件要求都是比较高的。因为他们需要对图片、图像进行渲染,如果设备硬件配置比较低,那么渲染的时间则会巨长。而且还会发生渲染失败的可能。那么对于一些业余爱好者(存在硬件短板的人)就不能学习和探索Stable-Diffusion了吗?非也!不然也不会存在我这个分享博客了!以前我也说过了我的电脑硬件设备是比较低的。可以说是乞丐版也不夸张,是2014年的电脑,已经使用十年了啊。
显卡只有电脑自带的核显,我相信目前很多人的超薄笔记本大概率也是核显。那么我们怎么解决硬件的短板呢?接着往下看
四、学习题外话 我在这里说下题外话,同时也是我身边经常遇到过的例子,就是有些人的学习耐力值和变通性都不强
耐力值 例如我的博客题目叫做《两天时间!我搞定了Intel显卡(核显)+Windows安装stable-diffusion-AI画画软件》,但是看到上面内容有些人就已经在脑海里面吐槽“我去!这个人说了那么多废话在干嘛!浪费我宝贵的时间!”甚至有的人还会给我个“差评”!
其实讲道理上面的内容真的是废话吗?我觉得使用一个东西之前,应该先简单了解下这个东西吗。直接告诉使用方法,并不能让我们更好的使用这个工具。我们需要带着思考性的学习心态来学习这个工具。直接告诉使用方法的后果无非就是遇到问题找百度,百度不到就说这个软件有问题它不是我的菜!我换个工具就好了,不会自己总结出问题的解决方法!
我理解面对出现问题时当事人紧张慌乱的心情和时间的紧迫感。有人可能觉得那“我换个工具”不是证明我有变通性吗?其实这是下下策不是我等下要说的变通性!我想学习另外一个工具的时间成本也不会少。试着想一想哪个工具不会出问题,而且作为一个流行工具,自己遇到的问题大概率别人也会遇到,自己没那么幸运就是出现这个问题的第一人,就算是真的这么幸运!那么恭喜!自己为何不能做第一个吃螃蟹的人,将这个问题啃掉呢?所以在这里我希望有些观众姥爷您需要点耐力值,耐心发现这篇博客对您有用的地方。
变通性 而我要说的变通性则是----这一通篇的博客就不会选择性的观看吗?非得从上往下从左往右的惯性式的观看吗?难道不会一点变通一下吗?选择自己需要的内容去观看,取其精华去其糟粕!如果时间紧迫您还是通篇读完,那么恭喜,您是那种越是紧张越是临危不乱的人,您这样的人是我所向往羡慕的人,同时可能也说明您对这篇博客的发布平台不了解,不知道根据目录选择性观看。这就是我所要说的变通性!也就是需要带着思考性去解决问题。
希望我的这个题外话对看到这里的观众有一点的用处,当然我相信您能看到这里也说明您的耐心不错~ 接下来才是这篇博客的核心内容
五、工具的部署 部署环境 为了能更好的解决问题和学习,我尽可能详细的列出的硬件和软件环境。有些硬件的有无是无关紧要的。例如固态硬盘,当然有软件会运行得更好。我这边是没有将Stable Diffusion安装到固态硬盘上的,毕竟我是开发,固态硬盘是用来运行我工作内容的,可不能拿来学习AI!我将Stable Diffusion部署在普通硬盘上。没有GPU只有CPU的话,我们也能使用Stable Diffusion,只不过渲染的时间会久一点,作为学习已经够用了。
我的部署环境如下
如果您的硬件环境非常好,那您可以直接使用大神的整合包即可,网上搜索下大神的Stable Diffusion整合包即可。您就可以不用再看这个博客了
安装步骤 第一步、安装Python 去Python官网下载安装软件,建议安装3.10.9或3.10.6版本。将安装文件下载到电脑,双击打开
之后点击Install Now按钮进行安装,安装过程如果出现要选择什么,按默认来选择即可,直到Python安装成功。在命令行终端执行命令“Python -V”,出现如下图则说明Python安装成功
第二步、安装git 下载git安装文件到电脑,双击进行安装,会出现下图的界面,安装过程中,一律按照默认,点next或者下一步就行了。由于我是开发所以git这个工具我老早之前就安装好了,所以请原谅我无法提供截图
第三步、下载Stable Diffusion绘画软件 我安装学习教程的建议使用的是AUTOMATIC1111/stable-diffusion-webui,它的地址是:https://github.
前言
作者:小蜗牛向前冲
名言:我可以接受失败,但我不能接受放弃
如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录
一、数据库的基础知识
1、什么是数据库
2、数据库基本常识
3、简单的见一见MYSQL 二、MYSQL中的库的操作(增删查改)
1、库的创建
2、库的删除 3、库的修改
4、库的备份和恢复
本期学习:理解什么是数据库,数据库的基本操作增删查改。
一、数据库的基础知识 1、什么是数据库 大家在日常生活中,用电脑记录数据通常是保证在文件中的,比如写论文,写计划书等。
那我在企业中存放用户数据也用文件不就可以了。
为什么要弄出一个数据库这要的东西呢?
文件保存数据有以下几个缺点:
文件的安全性问题文件不利于数据查询和管理文件不利于存储海量数据 文件在程序中控制不方便 为了解决上述问题,专家们设计出更加利于管理数据的东西——数据库,它能更有效的管理数据。数据 库的水平是衡量一个程序员水平的重要指标。 数据库存储介质:
磁盘内存 数据库是有客户端(mysql)和服务端(mysqld) ,所以数据库的本质也就是基于C(mysql)S(mysqld)模式的一种网络服务。
当我们程序员在客户端(mysql)对服务端(mysqld)进行字段或者要求时,服务端(mysqld)在他存放数据的地方查找,然后给客户端(mysql)返回结果。
2、数据库基本常识 主流数据库
SQL Sever: 微软的产品,.Net程序员的最爱,中大型项目。Oracle: 甲骨文产品,适合大型项目,复杂的业务逻辑,并发一般来说不如MySQL。 MySQL:世界上最受欢迎的数据库,属于甲骨文,并发性好,不适合做复杂的业务。主要用在电 商,SNS,论坛。对简单的SQL处理效果好。PostgreSQL :加州大学伯克利分校计算机系开发的关系型数据库,不管是私用,商用,还是学术研 究使用,可以免费使用,修改和分发。SQLite: 是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库 中。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 低,在嵌入式设备中,可能只需要几百K的内存就够了。H2: 是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。 服务器,数据库,表关系 所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。数据库服务器、数据库和表的关系如下: MySQL架构 MySQL 是一个可移植的数据库,几乎能在当前所有的操作系统上运行,如 Unix/Linux、Windows、 Mac 和 Solaris。各种系统在底层实现方面各有不同,但是 MySQL 基本上能保证在各个平台上的物理体 系结构的一致性。 MySQL 的架构可以分为两个主要层次:服务层和存储引擎层。以下是 MySQL 架构的主要组成部分: 服务层(Server Layer):
连接管理器(Connection Manager): 处理客户端连接的建立和断开。查询解析器(Query Parser): 解析客户端发送的 SQL 查询语句。查询缓存(Query Cache): 缓存查询语句及其结果,以提高相同查询的响应速度。在 MySQL 8.
1.官网下载 在添加链接描述下载rabbitmq_delayed_message_exchange 插件,本文以v3.10.0为例
1.1.上传安装包 scp /Users/hong/资料/rabbitmq_delayed_message_exchange-3.10.0.ez root@10.211.55.4:/usr/local/software 1.2.将文件移入RabbitMQ的安装目录下的plugins目录 mv rabbitmq_delayed_message_exchange-3.10.0.ez /usr/local/software/rabbitmq_server-3.10.0/plugins 1.3.安装插件 rabbitmq-plugins enable rabbitmq_delayed_message_exchange 1.4 重启后验证 rabbitmq-server start 2.两种实现方式图解 3.基于插件的延迟队列配置类 package com.hong.springboot.rabbitmq.config; import org.springframework.amqp.core.*; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.annotation.Bean; import java.util.HashMap; import java.util.Map; /** * @Description: 延迟队列配置类 * @Author: hong * @Date: 2024-02-25 20:19 * @Version: 1.0 **/ @Configuration public class DelayedQueueConfig { public static final String DELAYED_QUEUE_NAME = "delayed.queue"; public static final String DELAYED_EXCHANGE_NAME = "delayed.exchange"; public static final String DELAYED_ROUTING_KEY = "
基础介绍 Stable Diffusion 是一个文本到图像的生成模型,它能够根据用户输入的文本提示(prompt)生成相应的图像。在这个模型中,CLIP(Contrastive Language-Image Pre-training)模型扮演了一个关键的角色,尤其是在将文本输入转换为机器可以理解的形式方面。
CLIP 模型最初由 OpenAI 开发,它是一个多模态预训练模型,能够理解图像和文本之间的关系。CLIP 通过在大量的图像和文本对上进行训练,学习到了一种能够将文本描述和图像内容对齐的表示方法。这种表示方法使得 CLIP 能够理解文本描述的内容,并将其与图像内容进行匹配。
在 Stable Diffusion 中,CLIP 的文本编码器(Text Encoder)部分被用来将用户的文本输入转换为一系列的特征向量。这些特征向量捕捉了文本的语义信息,并且可以与图像信息相结合,以指导图像的生成过程。
贴一下模型结构:
具体来说,当用户输入一个文本提示时,CLIP 的文本编码器会将这个文本转换成一个固定长度的向量序列。这个向量序列包含了文本的语义信息,并且与现实世界中的图像有相关性。在 Stable Diffusion 的图像生成过程中,这些文本特征向量与随机噪声图像一起被送入模型的后续部分,如图像信息创建器(Image Information Creator)和图像解码器(Image Decoder),以生成与文本描述相匹配的图像。
总结来说,CLIP 模型在 Stable Diffusion 中的作用是将文本输入转换为机器可以理解的数值特征,这些特征随后被用来指导图像的生成,确保生成的图像与文本描述相符合。这种结合了文本和图像理解能力的多模态方法,使得 Stable Diffusion 能够创造出丰富多样且与文本描述高度相关的图像。
关于特征向量的长度 在CLIP模型中,文本编码器输出的特征向量的长度是一致的。
CLIP模型的文本编码器通常是一个基于Transformer架构的神经网络,它将输入的文本(例如单词、短语或句子)转换成一系列固定长度的向量。这些向量被称为嵌入(embeddings),它们代表了文本在模型的内部表示空间中的位置。
在CLIP模型的训练过程中,这些嵌入向量的长度是预先设定的,并且在模型的所有训练和推理过程中保持不变。例如,如果CLIP模型被训练为输出768维的文本嵌入,那么无论输入的文本长度如何,每个文本输入都会被转换成一个长度为768的向量。
这种固定长度的向量表示允许模型处理不同长度的文本输入,同时保持模型的一致性和可扩展性。对于较长的文本,CLIP模型可能会采用截断或填充(padding)的方法来确保所有输入的长度一致。这样,无论文本的实际长度如何,模型都能够以统一的方式处理它们。
提示词长度是不是越长越好 在CLIP模型中,如果输入的文本提示(prompt)超过了模型处理的最大长度,可能会出现后半部分的文本不被编码或者不被充分考虑的情况。
CLIP模型在处理文本时,通常会有一个最大长度限制,这意味着它只能有效地处理一定长度内的文本。如果输入的文本超过了这个长度,模型可能会采取以下几种策略之一来处理:
截断(Truncation):模型会只考虑文本的前N个标记(tokens),忽略超出部分。这意味着超出长度限制的文本部分不会对最终的特征向量产生影响。
摘要(Summarization):模型可能会尝试生成一个文本的摘要,只保留关键信息,但这通常不是CLIP模型的直接功能。
滑动窗口(Sliding Window):模型可以采用滑动窗口的方法,对文本的不同部分分别编码,然后将这些局部编码组合起来。这种方法可以保留更多文本信息,但可能会丢失一些上下文信息。
在实际应用中,为了确保文本提示能够有效地影响图像生成的结果,通常会对输入的文本进行适当的编辑,使其长度适应模型的处理能力。
Clip模型是如何与unet模型结合使用的呢 CLIP(Contrastive Language-Image Pre-training)模型与UNet模型结合使用通常是为了在图像生成或图像处理任务中利用CLIP的文本理解能力和UNet的图像处理能力。这种结合可以在多种应用中实现,例如在Stable Diffusion等文本到图像的生成模型中。以下是CLIP与UNet结合使用的一种可能方式:
文本编码:首先,CLIP的文本编码器(Text Encoder)部分用于处理用户提供的文本提示(prompt)。它将文本转换为一系列的特征向量(text embeddings),这些向量捕捉了文本的语义信息。
图像编码:UNet结构通常用于图像的编码和解码。在图像生成任务中,UNet的编码器(Encoder)部分可以将输入的图像或噪声数据编码为一个隐含向量(latent vector),而解码器(Decoder)部分则可以从这个隐含向量重建图像。
结合文本和图像特征:在结合CLIP和UNet时,CLIP提取的文本特征可以与UNet处理的图像特征进行交互。例如,文本特征可以作为注意力机制的一部分,引导UNet在图像生成过程中关注与文本描述相关的图像区域。
迭代优化:在生成过程中,UNet可能会进行多次迭代,每次迭代都会根据CLIP提供的文本特征来优化图像。这可以通过交叉注意力(cross-attention)机制实现,其中文本特征作为注意力的键(key)和值(value),而UNet的特征作为查询(query)。
生成图像:通过这种结合,模型能够生成与文本提示语义上一致的图像。在迭代过程中,模型不断调整图像,直到生成的图像与文本描述相匹配。
clip skip是什么意思 Stable Diffusion的应用中,Clip Skip是一个参数,它用于控制图像生成过程中的细分程度。这个参数允许用户在生成图像时跳过CLIP模型中的一些层,从而影响生成图像的细节和风格。
具体来说,Clip Skip的作用包括:
过去的2023年被称作AI元年,随之而来的2024,被业内人士称之为AI应用元年,即随着大模型和各类AI应用的涌现速度放缓,人们关注的焦点也从产品层面(有哪些好用的AI应用),转移到AI如何更好地赋能实际业务的应用场景。
就大多数人的日常工作而言,最常见的业务场景为:文档撰写/编辑(包含PPT制作)、绘图、图像编辑、文档转换、协作对接等,这些场景下可用的AI工具非常多,包括但不限于——
AI写作工具AI生成PPT工具AI作画工具AI生成思维导图工具AI生成流程图工具AI翻译工具AI内容要点提炼工具…… 其中的AI作画工具,由于其可视化的特点,相比文本信息更容易被人理解和接受,因此也成了许多人最先使用的AI应用。
如果你也有使用AI作画工具的需求,但又不知道选哪款软件好,那这篇文章就是为你准备的!我们从上百款AI作画应用中,精心挑选出8个好用、且值得推荐的AI作画工具,在此与各位分享,希望能帮你选到契合办公需求和业务场景的AI作画应用。
AI作画是什么? AI作画,也叫AI绘画或AI生成图片,是指利用AI人工智能技术自动生成或辅助创作视觉艺术作品的过程。这个过程通常涉及到机器学习和深度学习算法,尤其是生成对抗网络(GANs)和变分自编码器(VAEs)等模型。
随着AI作画变得流行,它的应用场景也在逐渐拓宽,可以应用于各种艺术形式,包括绘画、插图、动画、设计和影视等。
AI作画的应用场景多种多样,自然也涵盖了职场办公,用户可借助它来生成产品草图、设计素材、视频分镜、电脑壁纸、手机壁纸、社媒配图等,可以说AI作画工具的出现,不仅提供了一种新的内容生产方式,也在一定程度上重塑了我们的工作流,给我们达成既定的目标提供了更多路径。
话不多说,下面逐一介绍这8个好用的AI作图工具:
8个好用的AI生成图片工具 ① boardmix AI boardmix AI,是集成在一站式办公软件boardmix中的AI功能,用户可基于内嵌的AI快速生成图片。boardmix AI提供了照片写实、人物拟真、二次元、2.5D、产品设计等多个AI模型,每个基础模型下又能添加不同的风格模型,极大地丰富了AI生成的图片风格和样式。
*AI绘画工具boardmix AI
AI绘画工具boardmix AI的功能和特色
两种AI绘图模式:boardmix AI具备两种绘图模式——文本生成图片(AI文生图)和图片生成图片(AI图生图),兼容多种绘图场景。AI抠图功能:boardmix AI提供智能抠图工具,用户可以一键自动完成在线抠图,节省设计资源,提高工作效率。一键生成高清图片:用户可以通过输入提示词,AI绘画软件会自动绘制并生成高分辨率的图片,提供照片真实感的视觉效果。多种风格支持:boardmix AI支持多种风格,包括照片写实、人物拟真、二次元、2.5D渲染和产品设计等,满足不同用户的AI绘画需求。灵活的尺寸选择:软件提供多种常用图片尺寸和分辨率选项,以适应不同的设计和展示需求。丰富的AI绘画提示词库:软件内置了丰富的提示词库,涵盖人物、产品、风景、画面效果及构图描述,帮助用户智能创作。AI生成同款创意:用户可以选择丰富的模板库,生成与模板相似的创意作品,无需设计背景也能轻松上手。Lora模型加持:集成了Lora模型,用户可以选择数十种风格,更精准地生成理想的图片效果。精准定制:用户可以灵活设置人物身份、五官、表情、服装以及产品类型、颜色、材质等,实现高精度、大尺寸的画图效果。图片画册:支持图片保存、筛选、全览、下载、复制和删除操作,帮助用户高效管理图片资源。 AI生成图片工具boardmix AI的详细使用教程
浏览器访问AI绘画工具boardmix AI,点击【免费使用】,进入boardmix AI工作台。
*AI绘画工具boardmix AI首页
来到boardmix AI绘画的工作台,这里有两个模块——
快速开始:AI绘画/设计(AI文生图)、AI图生图、AI抠图AI画廊:这里收录了使用boardmix AI绘画生成的各类图片,包括2.5D渲染、二次元、人物拟真、照片写实 譬如我们想生成一张二次元风格的动漫人物图片,可以切换到「二次元」类别,查看boardmix AI生成的案例图,如果有看到喜欢的图片,可以点击案例图右上角的「创作同款」,可复用生成这张图片所使用的AI绘画提示词(prompts)、AI绘画模型等参数。
点击创作同款,会进入到下图所示的boardmix AI绘画模式,右侧面板展示了生成前述二次元风格图片所用到的所有参数,包括——
创意描述(即AI绘画提示词):gongbihua,huge filesize,wallpaper,game cg,artbook,1girl,bird,Waves, the sea,(Portrait:1.4),close-up,hime_cut,reaching_out,Reach down with your hands,looking_down,solo,hair ornament,wings,black hair,makeup,upper body,feathers,fingernails,sitting,jewelry,hand up,feathered wings,eyeshadow,talons,smoke,lipstick,long fingernails,sharp fingernails,headdress,from side,holding,red lips,tassel,banhua, doodle,模型:二次元风格模型:无参考图:未使用参考图图片尺寸:3:4图片数量:1 这里用到的AI绘画提示词为英文,我们也可以将其删除,更换为中文,如果你觉得撰写提示词比较困难,没有很好的思路,可以点击「创意描述」底部的「提示词库」,查看boardmix提供的辅助我们撰写提示词的词库。
boardmix提示词库细分为通用、人物、五官、表情、头发、装饰、服装、环境、建筑共9个类别,每个类别下面列出了对应的关键词,单击即可快速添加到创意描述输入框中。
至于AI绘画模型方面,boardmix AI内置了5种基础模型,包括照片写实、人物拟真、二次元、2.5D渲染、产品设计,选用不同模型,可生成风格各异的图片,这里我们想生成二次元风格动漫人物,因此保持默认的「二次元」模型即可。
想对基础模型进行微调,还可以点击下方的「添加风格模型」,加入风格化的效果,让最终生成的图片风格更为多样。
在二次元基础模型下,可使用的风格模型有:治愈系插画、逆光、璀璨星空、剪纸背景、光与影、御水、糖水风格、光线艺术、厚涂、华丽裙饰、机甲、油画、多视图、新中式裙饰、黑白漫画线条、80年代、极简,每个风格模型提供了相应的预览图,点击即可添加,支持同时添加多个风格模型,拖动右侧的滑动控钮,可调整风格模型的强度。
在完成前面的配置后,点击右侧面板底部的【立即生成】,boardmix AI就会基于我们输入的AI绘画提示词、所选择的基础模型和风格模型,自动生成一张二次元风格的动漫人物,如下图所示。
看到这里,如果你也有绘图的需求,千万别再使用传统的手绘,或是交由画师来完成,眼下你已经有了更先进、更低门槛的AI生成图片工具,只要动动鼠标、键入匹配的AI绘画提示词,你就能轻松得到多幅制作精良、各富特色的AI绘画作品!
② Jasper Art Jasper Art是一款AI生成图片工具,由AI写作工具Jasper背后的团队开发。该工具允许你使用AI艺术生成提示来创建具有不同艺术风格和情绪的图像,以便与你的营销内容一起使用。
更多资料获取 📚 个人网站:ipengtao.com
大家好,今天为大家分享一个超强的 Python 库 - omegaconf。
Github地址:https://github.com/omry/omegaconf
在软件开发中,管理配置文件和参数是一个常见但关键的任务。Python 中有许多库可以用于处理配置,但其中一个备受欢迎的选择是 OmegaConf。OmegaConf 提供了强大的配置管理工具,能够轻松地组织和访问配置信息,同时支持多种格式的配置文件。本文将深入探讨 OmegaConf 的各种功能,以及如何在 Python 项目中使用它。
什么是 OmegaConf? OmegaConf 是一个用于配置管理的 Python 库,它的目标是使配置文件的创建、解析和使用变得简单而强大。
OmegaConf 的特点:
支持 YAML、JSON、INI 等多种配置文件格式。支持配置文件的嵌套和继承,使配置更具结构和可维护性。提供了强大的命令行参数解析功能,使应用程序可以轻松接受和处理命令行参数。具有友好的 API,可以方便地访问和修改配置信息。 安装 OmegaConf 要开始使用 OmegaConf,首先需要安装它。
可以使用 pip 安装 OmegaConf:
pip install omegaconf 一旦安装完成,就可以在项目中引入 OmegaConf 并开始使用它了。
创建和加载配置文件 OmegaConf 支持多种配置文件格式,包括 YAML、JSON、INI 等。可以根据需求选择适合的配置文件格式。
创建配置文件 首先创建一个简单的 YAML 配置文件,例如 config.yaml:
model: name: resnet num_layers: 18 training: batch_size: 64 learning_rate: 0.001 这个配置文件包含了一个模型配置和一个训练配置。
加载配置文件 使用 OmegaConf,可以轻松加载配置文件并将其转换为 Python 字典或对象。
五种查看Spring容器中bean的方法 在Spring应用程序中,了解和查看容器中的Bean是进行调试和问题排查的关键。Spring提供了多种方法来查看容器中注册的Bean,以便我们深入了解应用程序的内部结构和调试潜在问题。本文将介绍五种常用的查看Spring容器中Bean的方法,帮助开发人员更好地理解和利用Spring容器。
使用ApplicationContext#getBeanDefinitionNames() ApplicationContext接口提供了getBeanDefinitionNames()方法,返回一个String数组,包含容器中所有注册的Bean的名称。通过遍历该数组,我们可以获取所有的Bean名称,并进一步进行分析和调试。
@Autowired private ApplicationContext applicationContext; public void printAllBeanNames() { String[] beanNames = applicationContext.getBeanDefinitionNames(); for (String beanName : beanNames) { System.out.println(beanName); } } 使用ApplicationContext#getBean() getBean()方法允许我们根据Bean的名称或类型获取实际的Bean对象。通过这种方式,我们可以直接检索特定的Bean,并进一步查看其属性和状态。
@Autowired private ApplicationContext applicationContext; public void printBeanDetails(String beanName) { Object bean = applicationContext.getBean(beanName); System.out.println(bean); // 进一步查看Bean的属性和方法 } 使用BeanFactoryUtils#beansOfTypeIncludingAncestors() BeanFactoryUtils类提供了一个便捷的方法beansOfTypeIncludingAncestors(),用于获取指定类型的所有Bean实例,包括其子类和实现类。
@Autowired private ApplicationContext applicationContext; public void printBeansOfType(Class<?> type) { Map<String, ?> beans = BeanFactoryUtils.beansOfTypeIncludingAncestors(applicationContext, type); for (String beanName : beans.keySet()) { Object bean = beans.
在使用Stable Diffusion ControlNet 插件时,进行预处理时报错,网络上暂无详细的解决方案,故写此文。
本人软件版本:
秋叶大佬整合包v4.6.1ControlNet v1.1Wei UI v1.6 如图所示,在放入强尼银手(bushi)的图片后,使用ControlNet进行预处理时报错,猜测是由于没有安装预处理器导致,在此提供三种解决方案。 【方法一】
下载B站UP主Nenly同学,30分钟零基础掌握ControlNet!绝对是你看过最好懂的控制网原理分析 | 基本操作、插件安装与5大模型应用 · Stable Diffusion教程_哔哩哔哩_bilibili这一期教程中的附件:
🔗夸克:https://pan.quark.cn/s/98b88f75cc5f
🔗度盘:https://pan.baidu.com/s/10rzgzIjzad7AKmj-w8zO_w?pwd=nely 直接替换extensions中的sd-webui-controlnet文件夹即可,里面已经包含所需预处理器,安装相应ControlNet模型后即可运行。
【方法二】
下载B站UP主金自省AI,ControlNet预处理模型整合包!全部预处理器一键使用!stable diffusion教程,无惧报错!_哔哩哔哩_bilibili这一期教程中的附件:
链接:https://pan.baidu.com/s/1kSbNrffHHnadEY-2VjHXEQ?pwd=bp1y
提取码:bp1y
可选择性下载其中的download文件夹,放在...\sd-webui-aki-v4.6.1\extensions\sd-webui-controlnet\annotator\处,该文件包含了所需的预处理器,安装相应ControlNet模型后即可运行。 【方法三】
上述两种办法都需要使用到下载速度极慢的网盘,当然我们也可以直接下载所需的预处理器,在方法二中,可以获取到需要在\sd-webui-aki-v4.6.1\extensions\sd-webui-controlnet\annotator\download目录下添加的文件夹名及其中的预处理器名称,如下图所示:
我们可以到ControlNet作者的Hugging face主页下载到所需的预处理器,网址如下:
https://huggingface.co/lllyasviel/Annotators/tree/main
将下载的文件放入创建的download的文件夹中的子目录中(如.../download/oponpose),重新启动运行WeiUI,即可正常使用ControlNet的预处理功能,如下图所示:
至此,已经可以解决大部分由于缺失预处理器导致的问题,欢迎评论区交流!
文章目录 大数据知识图谱之深度学习——基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统一、项目概述二、系统实现基本流程三、项目工具所用的版本号四、所需要软件的安装和使用五、开发技术简介Django技术介绍Neo4j数据库Bootstrap4框架Echarts简介Navicat Premium 15简介Layui简介Python语言介绍MySQL数据库深度学习 六、核心理论贪心算法Aho-Corasick算法BERT(Bidirectional Encoder Representations from Transformers)长短时记忆网络(Long Short-Term Memory,LSTM)条件随机场(Conditional Random Field,CRF)命名实体识别实体对齐语义知识库问答 七、系统实现八、结语 大数据知识图谱之深度学习——基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统 一、项目概述 知识图谱是将知识连接起来形成的一个网络。由节点和边组成,节点是实体,边是两个实体的关系,节点和边都可以有属性。知识图谱除了可以查询实体的属性外,还可以很方便的从一个实体通过遍历关系的方式找到相关的实体及属性信息。
BERT是一种基于Transformer 架构的预训练语言模型,能够捕捉双向上下文信息。BERT 模型在大规模语料上进行预训练,然后可以通过微调来适应特定任务,BERT 可用于处理输入文本,提取丰富的语义信息。它可以用于文本的编码和表征学习,以便更好地理解医学问答中的问题和回答。LSTM 是一种递归神经网络(RNN)的变体,专门设计用于处理序列数据。它通过使用门控机制来捕捉长期依赖关系,适用于处理时间序列和自然语言等序列数据。 LSTM 可以用于处理医学文本中的序列信息,例如病历、症状描述等。它有助于保留文本中的上下文信息,提高模型对长文本的理解能力。CRF 是一种用于标注序列数据的统计建模方法。在序列标注任务中,CRF 能够考虑标签之间的依赖关系,从而更好地捕捉序列结构。 在医学文本中,CRF 可以用于命名实体识别(NER)任务,例如识别疾病、药物、实验室结果等实体。通过引入CRF层,可以提高标签之间的一致性和整体序列标注的准确性。
基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统通过构建医疗领域的知识图谱来实现计算机的深度学习,并且能够实现自动问答的功能。本次的内容研究主要是通过以Python技术来对医疗相关内容进行数据的爬取,通过爬取足量的数据来进行知识图谱的的搭建,基于Python语言通过echarts、Neo4j来实现知识图谱的可视化。通过智慧问答的方式构建出以BERT+LSTM+CRF的深度学习识别模型,从而完成对医疗问句主体的识别,构建出数据集以及实现文本的训练。通过Django来进行web网页的开发,通过面向用户的网页端开发使用来满足用户医疗问答的需要。
二、系统实现基本流程 配置好所需要的环境(jdk1.8,neo4j,pycharm,python等)爬取所需要的医学数据,获取所需基本的医疗数据。对医疗数据进行数据清洗处理。关系抽取定义与实体识别等。基于BERT+LSTM+CRF深度学习知识图谱建模。数据可视化、深度学习问答、问句分析可视化、知识图谱可视化等。知识问句分析管理、系统用户管理等功能完善做出一个完整的基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统。 三、项目工具所用的版本号 Neo4j版本:Neo4j Desktop1.5.6或者neo4j-community-3.1.0都可以;
neo4j里面医疗系统数据库版本:3.1.0;
Pycharm版本:2021.2.1;
JDK版本:jdk1.8.0_211;
MongoDB版本:MongoDB-windows-x86_64-5.0.14;
Django版本:3.2.8
四、所需要软件的安装和使用 (一)安装JAVA
1.下载java安装包:
官网下载链接:https://www.oracle.com/java/technologies/javase-downloads.html
配置的话这里不再过多描述,之前写过详细的JDK配置,可以看一下
附链接:
JDK的环境配置(超级详细教程)
neo4j数据库所用的是neo4j-community-3.1.0版本,目录参数信息如下:
五、开发技术简介 Django技术介绍 Django是一个开放源代码的Web应用框架,由Python写成。采用了MVC的软件设计模式,即模型M,视图V和控制器C。Django 框架的核心组件有:
用于创建模型的对象关系映射
为最终用户设计的完美管理界面
一流的 URL 设计
设计者友好的模板语言
缓存系统。
在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下:
层次模型(Model),即数据存取层模板(Template),即表现层视图(View),即业务逻辑层 模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。
模板(Template),即表现层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。
目录
1. whisper 安装
openai-whisper
参考视频链接与安装过程
安装homebrew
安装Python (不要超过3.10)
安装Pytorch
安装ffmpeg
安装rust
安装whisper
注意事项
可能报错问题
2. 无法使用mac gpu 👉 使用whisper.cpp
操作步骤
可能报错问题
3. 生成翻译字幕
系统环境:M1pro macOS 13.6
1. whisper 安装 openai-whisper 以下的语言全部支持识别,数字越小的识别越准确
GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak SupervisionRobust Speech Recognition via Large-Scale Weak Supervision - openai/whisperhttps://github.com/openai/whisper 参考视频链接与安装过程 MACOS本地部署whisper ai, 一键生成中英文视频字幕_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1GL411m7mv/?vd_source=c73b771a66067f7c5859120eb61e27aa
安装homebrew Homebrewhttps://brew.sh/
安装Python (不要超过3.10) 安装Pytorch 在官网按照以下方式选择以后,在终端输入下面的命令 安装pytorchvvhttps://pytorch.org/get-started/locally/https://pytorch.org/get-started/locally/https://pytorch.org/get-started/locally/
安装ffmpeg brew install ffmpeg 安装rust pip install rust 安装whisper pip install -U openai-whisper 注意事项 python版本不要超过3.
ProcessPoolExecutor是python中的作用:用来创建和管理进程池。
本文将详细介绍python中的ProcessPoolExecutor,包括它的工作原理、如何使用它、常见问题和最佳实践。
Python进程简单介绍 python中,通常我们创建一个用进程,可以使用类Process,如图1,一个简单的例子,创建进程实例p1、p2的时候通过target和 args传递函数名(func1)和func1的实参。进程p1、p2调用start方法开启进程。
from multiprocessing import Process import os from time import sleep def func1(name): print("当前进程ID:",os.getpid()) print("父进程ID:",os.getppid()) print(f"Process:{name} start") sleep(3) print(f"Process:{name} end") if __name__ =="__main__": print("当前进程ID:",os.getpid()) # 创建进程 p1 = Process(target=func1, args=('p1',)) p2 = Process(target=func1, args=('p2',)) p1.start() p2.start() 图1
Process实例方法还有join、kill、is_alive等方法,这些在这里不在赘述,大家自行翻阅资料查看。
什么是进程池? 进程池是用于自动管理工作进程池的编程模式,负责固定数量的进程,控制何时创建它们,例如何时需要它们,控制它们不被使用时应该做什么,比如让它们在不消耗计算资源的情况下等待。
进程池提供了一个通用接口,用于执行具有可变参数数量的临时任务,与Process对象上的属性非常相似,但不需要我们选择一个进程来运行任务、启动进程或等待任务完成。
Python可以通过ProcessPoolExecutor类实现进程池。
ProcessPoolExecutor简介 ProcessPoolExecutor继承Executor 类,并在调用时返回Future对象。
Executor:ProcessPoolExecutor的父类,用于定义进程池的基本生命周期操作。 Future:将任务提交到进程池时返回的对象。 类Executor Executor类定义了三种用于控制进程池的方法:submit()、map()和shutdown()。
submit():分派一个要执行的函数并返回一个Future对象。map():将函数应用于可迭代的元素。shutdown():关闭执行器。 Executor在创建类时启动,并且必须通过调用shutdown()显式关闭,这将释放Executtor持有的所有资源,当然也可以自动关闭。
submit()和map()函数用于将任务提交给Executor进行异步执行。
map()函数用于将函数应用于可迭代对象(如列表)中的每个元素,该函数对应于元素的每个进程都将异步运行。
submit()函数接受一个函数以及对应的参数,并将异步执行,调用会立即返回Future对象。
对象Futures 我们只用知道他是Executor和ProcessPoolExecutor返回的对象就行了,对象Futures的方法:
cancelled(): Returns True if the task was cancelled before being executed.
1.axios全局设置网络超时 axios.defaults.timeout = 30 * 1000; // 30s 2. 单独对某个请求设置网络超时 axios.post(url, params, {timeout: 1000}) .then(res => { console.log(res); }) .catch(err=> { console.log(err); }) }) 3.webpack的dev的proxyTable的超时时间设置 dev: { // Paths assetsSubDirectory: 'static', // 静态资源文件夹 assetsPublicPath: '/', // 发布路径 // 代理配置表,在这里可以配置特定的请求代理到对应的API接口 // 使用方法:https://vuejs-templates.github.io/webpack/proxy.html proxyTable: { '/api': { timeout: 20000, // 请求超时时间 target: 'http://localhost:8080', // 目标接口域名 changeOrigin: true, // 是否跨域 pathRewrite: { '^/api': '' // 重写接口 } }, // Various Dev Server settings host: 'localhost', // can be overwritten by process.
前言✨✨ 💥个人主页:大耳朵土土垚-CSDN博客
💥 所属专栏:数据结构学习笔记
💥双链表与单链表的区分:单链表介绍与实现
💥对于malloc函数有疑问的:动态内存函数介绍
感谢大家的观看与支持🌹🌹🌹 有问题可以写在评论区或者私信我哦~
目录
前言✨✨
一、💥💥什么是带头双向循环链表?
二、🥳🥳带头双向循环链表的实现 1 .搭建链表基础
2.从内存中开辟一个节点
3. 创建返回链表的头结点
4.双向链表销毁
5.双向链表打印 6.双向链表尾插 7.双向链表尾删
8.双向链表头插 9.双向链表头删 10.双向链表查找
11.双向链表在pos的前面进行插入 12.双向链表删除pos位置的节点 三、💫💫拓展
四、🎉🎉结言 一、💥💥什么是带头双向循环链表? 带头双向循环链表(Doubly Circular Linked List with a Head)是一种链表数据结构,它具有以下特点:
1.头节点:带头双向循环链表包含一个头节点,它位于链表的起始位置,并且不存储实际数据。头节点的前驱指针指向尾节点,头节点的后继指针指向第一个实际数据节点。
2.循环连接:尾节点的后继指针指向头节点,而头节点的前驱指针指向尾节点,将链表形成一个循环连接的闭环。这样可以使链表在遍历时可以无限循环,方便实现循环操作。
3.双向连接:每个节点都有一个前驱指针和一个后继指针,使得节点可以向前和向后遍历。前驱指针指向前一个节点,后继指针指向后一个节点。
总结:带头双向循环链表可以支持在链表的任意位置进行插入和删除操作,并且可以实现正向和反向的循环遍历。通过循环连接的特性,链表可以在连续的循环中遍历所有节点,使得链表的操作更加灵活和高效。
如下图所示:
结构最复杂,一般用在单独存储数据。实际中使用的链表数据结构,都是带头双向循环链表。另外这个结构虽然结构复杂,但是使用代码实现以后会发现结构会带来很多优势,实现反而简单了。 二、🥳🥳带头双向循环链表的实现 1 .搭建链表基础 带头双向循环链表需要三个变量,两个存放指向前后节点的指针,另一个存放数据
// 带头+双向+循环链表增删查改实现 typedef int LTDataType; typedef struct ListNode { LTDataType data;//存放数据 struct ListNode* next;//指向下一个节点 struct ListNode* prev;//指向上一个节点 }ListNode; 2.从内存中开辟一个节点 使用malloc函数开辟节点
//从内存中开辟一个节点 ListNode* BuyNode(LTDataType x) { ListNode* buynode = (ListNode*)malloc(sizeof(struct ListNode)); if (buynode == NULL)//开辟失败 { perror("
文章目录 mysql启动时报错情况0.Ubuntu下的mysql相关文件介绍1.修改文件权限2.测试(可选)3.重启mysql 运行环境:ubuntu20.04,mysql 8.0
mysql Ver 8.0.29-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
授人以鱼不如授人以渔:具体错误原因请到日志文件/var/log/mysql/error.log中排查(注意要放开日志文件的写入权限)
mysql启动时报错情况 sudo service mysql start # 启动 Job for mysql.service failed because the control process exited with error code.
See “systemctl status mysql.service” and “journalctl -xe” for details.
sudo service mysql status # 查看状态;建议加上sudo,会有更详细的信息 ● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2024-02-28 10:10:31 CST; 10min ago
🏝 背景 Mac Pro 在擦键盘时,屏幕一直亮起,导致密码一致输入错误,想来没有什么问题便没有处理。但是!!!在擦完键盘后输入正确的密码依旧提示密码错误😱
接下来就是不断的重启、关机、开机,尝试开机密码、icloud密码,依旧提示密码错误,只能打客服求救🆘
🚀 操作 客服反馈可能是由于密码错误次数较多,锁硬盘了,或者触发了键盘的隐藏功能导致输入的内容变了。总之就是看上去我们输入的是正确的密码, 但是其实电脑并没有接收到正确的密码!
关机后,长按开机键,直到出现【正在载入启动项···】
出现启动项后,选择【选项】按钮,点击【继续】,就会出现一个恢复备份的一个界面
在左上角的【实用工具】中,选择【终端】,打开终端控制台窗口
出现【控制台】后,输入 resetpassword 后回车进行密码重置
在出现重置密码弹窗后,点击【取消激活】按钮,之后会出现登录账户及新密码界面
修改成功后,关机使用新密码登录
🎉 结果 在设置完后使用新密码,成功登录。
很多时候我们需要使用不少if、else等等逻辑判断及验证,这样在进行一些重复的参数校验会很麻烦,且以后要维护也会吃力。
而这样就可以使用javax.validation。验证(Validation)常见的验证操作包括验证数据的类型、格式、长度、范围、唯一性等
javax.validation 包:Java SE 6+ 中引入了 javax.validation 包,作为 Bean Validation 规范的一部分。这个包提供了一组注解和接口,可以方便地进行数据验证。
<!-- validation组件依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency> 而对于一般写在业务逻辑类中的参数校验语句,可以省略。如将@Valid注解填写在登录接口的方法参数中:
@PostMapping("/login") public RespBean login(@Valid @RequestBody User user) { log.info("{}", user); return userService.login(user); } @Valid 注解对入参进行相应的校验: 注解使用在方法参数上,然后对于参数的校验要求可去参数的实体类进行校验条件的填写。
/** * @author Z * @date 2023/9/27 21:25 */ @Data public class User { @NotNull //账号非空 //这个@Mobile是自定义判断注解,下面有对其的创建进行详细的讲解 @Mobile(required = true) private String mobile; @NotNull //密码非空 @Length(min = 32) //长度的限制 private String password; } 以及如: @Size(min=1, max=12) 代表:长度在 1 ~ 12 字符之间。其他一些判断的注解可以去该导入的外部库查看。
一、 用户和角色权限介绍 默认情况下,MongoDB实例启动运行时是没有启用用户访问权限控制的,在实例本机服务器上都可以随意连接到实例进行各种操作,MongoDB不会对连接客户端的请求进行用户验证,这是非常危险的。
MongoDB官网上说,为了能保障MongoDB的安全可以做以下几个步骤:
(1)使用新的端口,默认的27017端口如果一旦知道了ip就能连接上,不太安全。
(2)设置MongoDB的网络环境,最好将MongoDB部署到公司服务器内网,这样外网是访问不到的。公司内部访问使用vpn等。
(3)开启安全认证。认证要同时设置服务器之间的内部认证方式,同时要设置客户端连接到集群的账号密码认证方式。
为了强制开启用户访问控制(用户验证),则需要在MongoDB实例启动时使用选项 --auth 或在指定启动
配置文件中添加选项 --auth=true 。
相关概念:
启用访问控制:
MongoDB使用的是基于角色的访问控制(Role-Based Access
Control,RBAC)来管理用户对实例的访问。通过对用户授予一个或多个角色来控制用户访问数据库资源的权限和数据库操作的权限,在对用户分配角色之前,用户无法访问实例。在实例启动时添加选项
–auth 或指定启动配置文件中添加选项–auth=true
角色:
在MongoDB中通过角色对用户授予相应数据库资源的操作权限,每个角色当中的权限可以显式指定,也可以通过继承其他角色的权限,或者两都都存在的权限。
权限:
权限由指定的数据库资源(resource)以及允许在指定资源上进行的操作(action)组成。
资源(resource)包括:数据库、集合、部分集合和集群。操作(action)包括:对资源进行的增、删、改、查(CRUD)操作。
在角色定义时可以包含一个或多个已存在的角色,新创建的角色会继承包含的角色所有的权限。在同一个数据库中,新创建的角色可以继承其他角色的权限,在 admin
数据库中创建的角色可以继承在其它任意数据库中角色的权限。
关于角色权限的查看,可以通过如下命令查询(了解):
db.runCommand({ rolesInfo: 1 }) #查询所有角色权限(仅用户自定义角色 db.runCommand({ rolesInfo: "<rolename>" }) #查询当前数据库中的某角色的权限 db.runCommand({ rolesInfo: { role: "<rolename>", db: "<database>" } } #查询其它数据库中指定的角色权限 #查询多个角色权限: db.runCommand( { rolesInfo: [ "<rolename>", { role: "<rolename>", db: "<database>" }, ... ] } ) 查询所有角色权限(包含内置角色)
db.runCommand({ rolesInfo: 1, showBuiltinRoles: true } 1.
今天咱们聊点热门话题,来点科普时间——AI、AIGC、AGI和ChatGPT到底是啥?这几个词听起来好像挺神秘的,但其实它们就在我们生活中。让我们一起探索这些术语的奥秘!
AI(人工智能):先说说AI,这个大家可能都不陌生。AI,就是人工智能,它涵盖了各种技术和领域,目的是让计算机模仿、延伸甚至超越人类智能。想象一下,你的智能手机、智能家居设备,这些都是AI技术的应用。
AIGC(AI生成内容):接下来是AIGC,即AI Generated Content。这就是利用AI技术生成的内容,比如AI写的文章、AI画的画,甚至AI主持的节目!是不是听起来很科幻?但这已经在我们周围发生了。这方面的应用很多,以后有机会再分享给大家。
AGI(通用人工智能):然后我们来看AGI,即Artificial General Intelligence,中文叫通用人工智能。这可比一般的AI高级多了。AGI的目标是创造一个能像人类一样思考、学习、执行多种任务的系统。想象一下,如果有了AGI,它可能会成为全能的“超级大脑”,能在任何领域都超越人类。听起来是不是有点像科幻电影里的情节?
ChatGPT(聊天生成预训练转换器):最后,我们来聊聊ChatGPT。这货是基于自然语言处理的AI技术,能和人类聊天,还能理解上下文,真的很像真人!它能做的事情不止聊天那么简单,比如回答问题、生成文本。你可能已经在很多应用中见过它的身影。
那么,这些AI术语有什么区别呢?其实,AI是一个大概念,涵盖了很多技术和领域。AIGC则更侧重于内容的生成,比如AI写作、AI绘画。AGI则是AI中的高级形式,目标是创造一个全能的智能系统。而ChatGPT,它更像是AIGC的一个具体应用实例,专注于语言处理和对话生成。
简单来说,AI是大家庭,AIGC是里面擅长内容创作的成员,AGI是那个全能的超级大脑,而ChatGPT就是家里的语言天才。