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

【AI绘画】Midjourney前置指令/imagine与单图指令详解


在这里插入图片描述

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳]
本文专栏: AI绘画 | Midjourney

文章目录

  • 💯Midjourney前置指令/imagine
    • 什么是前置指令?
    • /imagine+prompt
    • Upscale(图像分离)
    • Variations(变化)
    • 🔄(重新生成一组图片)
  • 💯单张图片指令
    • Upscale (分辨率*2并调整细节)
    • Vary(变体)
    • Zoom out(放大)
    • Custom Zoom(自定义放大)
    • ⬅➡⬆⬇(单向扩张)
    • ❤(喜欢)
    • web分享
  • 💯小结


在这里插入图片描述


💯Midjourney前置指令/imagine

  • 在Midjourney的使用过程中,前置指令/image是非常重要的工具,帮助用户在Discord平台上有效地生成图像。通过/imagine指令,用户可以在聊天界面中输入描述性文本,Midjourney便会根据这些描述生成对应的图像。这种方式让用户无需通过复杂的界面操作,而是通过简单的文本输入,即可调用Midjourney的强大功能,生成高质量的视觉内容。
    Midjourney官方使用手册
    在这里插入图片描述

什么是前置指令?

  • 在使用Midjourney时,有一个重要的概念叫做“前置指令”。用来描述那些用于调用Midjourney不同功能的特殊命令。
    在这里插入图片描述

  • Midjourney与其他图像生成软件不同之处在于,它并不是一个传统意义上的专业功能软件。
    比如,你打开Photoshop,会看到界面上有各种按钮,每个按钮对应一个具体的功能,非常直观。
    Photoshop界面:
    在这里插入图片描述

  • 或者你使用Stable Diffusion,它会有一个专门的页面,我们可以调整各自参数来生成图片。
    Stable Diffusion界面:
    在这里插入图片描述

  • 然而,Midjourney的独特之处在于它嵌入在Discord的聊天界面中,相当于是一个内置于用户创建的服务器中的机器人。为了使用这个机器人的功能,你需要通过输入一些特定的命令或聊天内容来调用,而不是直接通过图形界面的按钮操作。
    Midjourney相当于服务器中的机器人:
    在这里插入图片描述

  • 如果你在聊天界面中直接输入生成图片的指令,它只会被视为普通的聊天内容,并不会触发Midjourney的图像生成功能。
    没有加上前置指令:在这里插入图片描述

  • 为了让Midjourney理解并执行生成图像的命令,必须使用特定的格式,这种格式就是所谓的“前置指令”。
    加上前置指令后:
    在这里插入图片描述在这里插入图片描述


  • 前置指令是什么样的呢?首先我们要在聊天框一开始加上一个斜杠“/”,这一步是为了告诉Midjourney的服务器,你不是在进行普通的聊天,而是希望调用Midjourney机器人的某项功能。当你输入斜杠后,Midjourney Bot会启动并询问你需要它执行什么任务。在这一系列命令中,最常用的就是/imagine,它用于生成图像,这就是本文重点要介绍的内容。
    在这里插入图片描述

/imagine+prompt

  • 当你选择了/imagine命令后,接下来会出现一个提示词输入框,即prompt提示。在这里,你需要用英文输入你希望Midjourney生成图片的画面描述。这个描述越具体、越清晰,Midjourney生成的图像就会越接近你的预期。
    在这里插入图片描述
  • 在创建提示词时,我们可以先用中文整理好我们想要的表达,然后再借助翻译软件将其转换成英文,以确保描述准确并符合我们的预期。
    以下作为本文的Prompt例子:
    在这里插入图片描述
Elegant and luxurious glass perfume bottle with a sleek design, filled with a soft pink liquid. The bottle features a gold-plated cap with intricate engravings, set against a marble surface with subtle reflections. Delicate rose petals and dewdrops are scattered around the bottle, with soft, diffused lighting creating a warm and inviting atmosphere. The background fades into a smooth gradient of pastel tones, emphasizing the premium and sophisticated nature of the perfume. Perfect for a high-end fragrance advertisement.
  • 通过这种方式,我们成功调用了/imagine命令,并以/imagine + prompt的形式向Midjourney传达了我们的需求,最终生成了一张香水静物图。
    在这里插入图片描述
  • 接下来本文将介绍生成图片下的按钮具体有什么功能:
    在这里插入图片描述

Upscale(图像分离)

  • U按钮代表“Upscale”图像分离功能。U1、U2、U3、U4分别对应第一、第二、第三、第四张生成的图像,选择其中一个按钮即可将对应的图像进行将您选择的图像从网格中分离出来放大单独呈现,使其更加细腻和清晰。
    在这里插入图片描述
    在这里插入图片描述

Variations(变化)

  • V (Variations):表示基于生成的图像创建更多的变体。按钮后面的数字(1、2、3、4)对应四张生成的图像。选择某个V按钮(如V1),即要求Midjourney基于第一张图像生成几个不同的变体图像。
    在这里插入图片描述
    在这里插入图片描述
  • 这里的变化程度可通过/setting中进行调整,在之前的【AI绘画】Midjourney前置指令/settings设置详解介绍过了。
    在这里插入图片描述

🔄(重新生成一组图片)

  • 这个按钮用于重新生成一组全新的图像,基于你原先输入的提示词(prompt)。如果对初次生成的图像不满意,点击这个按钮可以让Midjourney根据你在原提示词的基础上提交的新提示词生成一组新的图像。
    这个功能非常有用,尤其是在你想要在一张图上探索更多不同的视觉效果时。
    在这里插入图片描述
    在这里插入图片描述

💯单张图片指令

  • 这里的单图指的是在一组四图情况下由U指令生成的单张图片。

  • 在使用U指令生成单张图片后,我们发现这张图片下方的按钮与原先一组四张图片时的按钮有所不同。单图下的按钮提供了更多针对单一图像的操作选项。接下来我们将介绍这些按钮的具体功能。在这里插入图片描述


Upscale (分辨率*2并调整细节)

  • 在单张图片下的Upscale按钮后面,你会看到有两种选项:Subtle 和 Creative。这与之前在一组四张图像中讨论到的U按钮有所不同。
    之前在四张图片的情境下,U按钮主要用于将选中的图像进行分离放大操作,使其更加清晰。而在单图情况下的Upscale按钮,在分辨率*2的基础上,主要是用来细节优化,还提供了两种不同的优化方式。
    在这里插入图片描述

  • Upscale (Subtle):这个按钮用于对图片进行细微的优化处理。在分辨率*2的基础上,它会保留图片的原始风格和细节,仅仅对图像进行增强清晰度和精致度,而不会对原有的视觉效果做出明显的改变。这个选项适合当你对生成图像的整体满意,但希望它在更高分辨率下依然保持细腻感时使用。
    在这里插入图片描述

  • Upscale (Creative):这个按钮则提供了一种更具创意的细节优化方式。在分辨率*2的基础上,它会对图像进行一些创造性的调整,可能会增强颜色、细节或者添加一些新的元素。这个选项适合想要在现有图像基础上增加一点变化或探索不同风格的用户使用。
    在这里插入图片描述

  • 变化真的有点不太明显,不仔细看好像还真长的一样哈哈哈
    在这里插入图片描述

2024.8.30补充:


之前的例子没有很好的体现图片分辨率放大的效果,以下是验证:

  • 这是原图
    在这里插入图片描述

  • 这是Upscale (Creative)下生成的图片:
    -

  • 虽然这两张图看着是一样大的,但是当我们将这两张图用浏览器打开,保存到本地后我们可以发现:Upscale (Creative)图片28%和原图56%一样大,这就侧面说明了Upscale (Creative)生成的图片分辨率是原图的两倍,所以Upscale (Creative)模式下会使图片分辨率增大为原来的2倍,这直接看很难看出来,要通过下载图片才可以方便看。
    在这里插入图片描述在这里插入图片描述


Vary(变体)

  • 一个叫做剧烈的变化,一个叫做轻微的变化,还有一个是特定区域进行变化。
    它这个作用就是在这个界面再次的去生成四张图片,又回到了我们上一个一组四图的层级。只不过第一个在强壮的这么一个选项下,我们生成出来的这个图片,它和原来图片变化就是比较大的。虽然保留了原来的色调和构图,但是它已经产生了非常剧烈的形状的变化。但是这个轻微的这个里面它图片的变化要小很多。特定变化是选择图像中的某个部分,然后Midjourney会基于这个区域生成变体,而不改变图像的其他部分。
    在这里插入图片描述

  • Vary (Strong):选择这个选项时,Midjourney会基于你原始图像生成四张新的图片。这些图片虽然保留了原来的色调和构图,但会在形状和其他细节上发生显著变化。这个选项适用于希望在原始图像的基础上探索更大幅度的创意变化时使用。
    在这里插入图片描述

  • Vary (Subtle):与剧烈变化不同,轻微变化选项生成的图像与原始图像的差异较小。虽然会有一些细节上的调整,但整体风格和结构基本保持不变。这适合希望在现有基础上做出微调而不改变整体效果时使用。
    在这里插入图片描述

  • Vary (Region): 允许用户对图像中的特定区域进行变动。例如,如果你对图像中的某个元素或细节不满意,可以使用Vary (Region) 选择该区域,然后Midjourney会生成这个区域的多种变体。这个功能非常适合需要对图像进行局部调整的情况,比如你想改变背景的颜色、调整一个对象的位置或者修改某些细节,而不影响图像的整体构图和风格。
    这里我将三片花瓣作为变化区域,想将花瓣变成蓝色。
    在这里插入图片描述


Zoom out(放大)

  • 这三个按钮的作用都是在原来图片的基础上,在周围进行放大。
    Zoom Out 按钮用于扩大视野范围并显示更多的背景或环境,对图像本体进行缩小处理。这个功能在你希望通过扩大视角来展示更多细节或将图像的焦点从局部扩展到整体时非常有用。
    在这里插入图片描述

  • Zoom Out 2x:将图像的视野扩大为原始大小的两倍。这个选项会显示出更大的背景区域,让图像中的主体显得较小,同时展示出更多的周围环境。
    在这里插入图片描述

  • Zoom Out 1.5x:将图像的视野扩大为原始大小的1.5倍。这个选项与Zoom Out 2x相比,效果较为温和,主体依然相对突出,但同时能够展示更多的背景内容。
    在这里插入图片描述


Custom Zoom(自定义放大)

Costume是自定义的意思,Zoom是放大的意思,组合在一起是自定义放大。同时我们可以自定义放大填充的内容。

  • Custom Zoom:这个选项允许你手动设置缩放比例(1-2之间),从而灵活地调整图像的放大程度。同时,Custom Zoom还提供了一个独特的功能,即你可以自定义填充放大后空白区域的内容。这样,你不仅能够控制图像的视角和焦点,还能决定放大后新增区域的具体内容,从而更精确地实现你的创作意图。
    在这里插入图片描述

  • 为了测试该功能我们换一个人像的提示词

Portrait of a Chinese antique girl,photo,close-up,beautiful,elegant,realistic,8k,extreme details,movie visuals,ambient light
  • Midjourney根据我们的提示词进行绘画在这里插入图片描述
  • 在提示词中输入填充部分的内容,zoom后面加放大的倍数(1-2之间)
    在这里插入图片描述
  • 实现了相框包裹效果
    在这里插入图片描述

⬅➡⬆⬇(单向扩张)

  • 这四个按钮就是zoom out的微缩版,只能一个方向进行扩张。
    单方向扩张功能按钮,是对图像进行方向性的扩展。这些按钮分别对应向左、向右、向上或向下扩展图像的视野范围。
    在这里插入图片描述

  • 向上扩展
    在这里插入图片描述

  • 向下扩展
    在这里插入图片描述

  • 向左扩展
    在这里插入图片描述

  • 向右扩展
    在这里插入图片描述


❤(喜欢)

  • 这个按钮让你标记你特别喜欢的图像。当你点击这个按钮后,Midjourney会记录你对这张图像的偏好,可能会用来影响日后生成的图像风格。标记为“喜欢”的图像还可以帮助你快速找到你最满意的作品。
    在这里插入图片描述
    在这里插入图片描述

web分享

  • 点击这个按钮会生成一个链接,允许你在网络上分享这张图像。链接会指向一个网页,其他人可以通过这个链接查看你生成的图像。这个功能非常方便你与他人分享你的创作成果,或将图像展示在社交媒体上。
    在这里插入图片描述
    在这里插入图片描述

💯小结

  • 在这里插入图片描述AI绘画的发展,不仅使艺术创作变得更加大众化,让更多的人能够接触并使用这些前沿的技术进行创作;更重要的是,它激发了人们对创意表达的无限可能性。Midjourney的各种功能,例如Upscale、Variations、Custom Zoom等,不仅体现了AI技术的进步,也展现了技术与艺术融合所带来的无限可能。这些工具不仅仅是为了提升图像的质量,更是在探索艺术表达的新方式,使得创作者可以更自由、更大胆地尝试不同的创作风格和形式。

  • 随着AI绘画技术的不断发展,未来我们将看到更多类似Midjourney这样的工具,它们将继续推动艺术创作的发展,让艺术家和普通用户都能在数字化创作的世界中找到属于自己的表达方式。


import torch, torch.nn as nn, torch.optim as optim; from torch.utils.data import Dataset, DataLoader; from torchvision import transforms, utils; from PIL import Image; import numpy as np, cv2, os, random; class PaintingDataset(Dataset): def __init__(self, root_dir, transform=None): self.root_dir = root_dir; self.transform = transform; self.image_files = os.listdir(root_dir); def __len__(self): return len(self.image_files); def __getitem__(self, idx): img_name = os.path.join(self.root_dir, self.image_files[idx]); image = Image.open(img_name).convert('RGB'); if self.transform: image = self.transform(image); return image; class ResidualBlock(nn.Module): def __init__(self, in_channels): super(ResidualBlock, self).__init__(); self.conv_block = nn.Sequential(nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=1, padding=1), nn.InstanceNorm2d(in_channels), nn.ReLU(inplace=True), nn.Conv2d(in_channels, in_channels, kernel_size=3, stride=1, padding=1), nn.InstanceNorm2d(in_channels)); def forward(self, x): return x + self.conv_block(x); class Generator(nn.Module): def __init__(self): super(Generator, self).__init__(); self.downsampling = nn.Sequential(nn.Conv2d(3, 64, kernel_size=7, stride=1, padding=3), nn.InstanceNorm2d(64), nn.ReLU(inplace=True), nn.Conv2d(64, 128, kernel_size=3, stride=2, padding=1), nn.InstanceNorm2d(128), nn.ReLU(inplace=True), nn.Conv2d(128, 256, kernel_size=3, stride=2, padding=1), nn.InstanceNorm2d(256), nn.ReLU(inplace=True)); self.residuals = nn.Sequential(*[ResidualBlock(256) for _ in range(9)]); self.upsampling = nn.Sequential(nn.ConvTranspose2d(256, 128, kernel_size=3, stride=2, padding=1, output_padding=1), nn.InstanceNorm2d(128), nn.ReLU(inplace=True), nn.ConvTranspose2d(128, 64, kernel_size=3, stride=2, padding=1, output_padding=1), nn.InstanceNorm2d(64), nn.ReLU(inplace=True), nn.Conv2d(64, 3, kernel_size=7, stride=1, padding=3), nn.Tanh()); def forward(self, x): x = self.downsampling(x); x = self.residuals(x); x = self.upsampling(x); return x; class Discriminator(nn.Module): def __init__(self): super(Discriminator, self).__init__(); self.model = nn.Sequential(nn.Conv2d(3, 64, kernel_size=4, stride=2, padding=1), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(64, 128, kernel_size=4, stride=2, padding=1), nn.InstanceNorm2d(128), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(128, 256, kernel_size=4, stride=2, padding=1), nn.InstanceNorm2d(256), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(256, 512, kernel_size=4, stride=2, padding=1), nn.InstanceNorm2d(512), nn.LeakyReLU(0.2, inplace=True), nn.Conv2d(512, 1, kernel_size=4, stride=1, padding=1)); def forward(self, x): return self.model(x); def initialize_weights(model): for m in model.modules(): if isinstance(m, (nn.Conv2d, nn.ConvTranspose2d)): nn.init.normal_(m.weight.data, 0.0, 0.02); elif isinstance(m, nn.InstanceNorm2d): nn.init.normal_(m.weight.data, 1.0, 0.02); nn.init.constant_(m.bias.data, 0); device = torch.device("cuda" if torch.cuda.is_available() else "cpu"); generator = Generator().to(device); discriminator = Discriminator().to(device); initialize_weights(generator); initialize_weights(discriminator); transform = transforms.Compose([transforms.Resize(256), transforms.ToTensor(), transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5])]); dataset = PaintingDataset(root_dir='path_to_paintings', transform=transform); dataloader = DataLoader(dataset, batch_size=16, shuffle=True); criterion = nn.MSELoss(); optimizerG = optim.Adam(generator.parameters(), lr=0.0002, betas=(0.5, 0.999)); optimizerD = optim.Adam(discriminator.parameters(), lr=0.0002, betas=(0.5, 0.999)); def generate_noise_image(height, width): return torch.randn(1, 3, height, width, device=device); for epoch in range(100): for i, data in enumerate(dataloader): real_images = data.to(device); batch_size = real_images.size(0); optimizerD.zero_grad(); noise_image = generate_noise_image(256, 256); fake_images = generator(noise_image); real_labels = torch.ones(batch_size, 1, 16, 16, device=device); fake_labels = torch.zeros(batch_size, 1, 16, 16, device=device); output_real = discriminator(real_images); output_fake = discriminator(fake_images.detach()); loss_real = criterion(output_real, real_labels); loss_fake = criterion(output_fake, fake_labels); lossD = (loss_real + loss_fake) / 2; lossD.backward(); optimizerD.step(); optimizerG.zero_grad(); output_fake = discriminator(fake_images); lossG = criterion(output_fake, real_labels); lossG.backward(); optimizerG.step(); with torch.no_grad(): fake_image = generator(generate_noise_image(256, 256)).detach().cpu(); grid = utils.make_grid(fake_image, normalize=True); utils.save_image(grid, f'output/fake_painting_epoch_{epoch}.png'); def apply_style_transfer(content_img, style_img, output_img, num_steps=500, style_weight=1000000, content_weight=1): vgg = models.vgg19(pretrained=True).features.to(device).eval(); for param in vgg.parameters(): param.requires_grad = False; content_img = Image.open(content_img).convert('RGB'); style_img = Image.open(style_img).convert('RGB'); content_img = transform(content_img).unsqueeze(0).to(device); style_img = transform(style_img).unsqueeze(0).to(device); target = content_img.clone().requires_grad_(True).to(device); optimizer = optim.LBFGS([target]); content_layers = ['conv_4']; style_layers = ['conv_1', 'conv_2', 'conv_3', 'conv_4', 'conv_5']; def get_features(image, model): layers = {'0': 'conv_1', '5': 'conv_2', '10': 'conv_3', '19': 'conv_4', '28': 'conv_5'}; features = {}; x = image; for name, layer in model._modules.items(): x = layer(x); if name in layers: features[layers[name]] = x; return features; def gram_matrix(tensor): _, d, h, w = tensor.size(); tensor = tensor.view(d, h * w); gram = torch.mm(tensor, tensor.t()); return gram; content_features = get_features(content_img, vgg); style_features = get_features(style_img, vgg); style_grams = {layer: gram_matrix(style_features[layer]) for layer in style_features}; for step in range(num_steps): def closure(): target_features = get_features(target, vgg); content_loss = torch.mean((target_features[content_layers[0]] - content_features[content_layers[0]])**2); style_loss = 0; for layer in style_layers: target_gram = gram_matrix(target_features[layer]); style_gram = style_grams[layer]; layer_style_loss = torch.mean((target_gram - style_gram)**2); style_loss += layer_style_loss / (target_gram.shape[1] ** 2); total_loss = content_weight * content_loss + style_weight * style_loss; optimizer.zero_grad(); total_loss.backward(); return total_loss; optimizer.step(closure); target = target.squeeze().cpu().clamp_(0, 1); utils.save_image(target, output_img);

在这里插入图片描述


相关文章:

【AI绘画】Midjourney前置指令/imagine与单图指令详解

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI绘画 | Midjourney 文章目录 💯Midjourney前置指令/imagine什么是前置指令?/imaginepromptUpscale(图像分离)Variations(变化)🔄&a…...

【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识

前言 在iOS开发中Keychain 是一个非常安全的存储系统,用于保存敏感信息,如密码、证书、密钥等。与 NSUserDefaults 或文件系统不同,Keychain 提供了更高的安全性,因为它对数据进行了加密,并且只有经过授权的应用程序才…...

学习笔记 --C#基础其他知识点(数据结构)

C#中的数据结构《二》–视频学习笔记 在数据结构的分类: 1.集合 2.线性 3.树形 4.图状结构 数据结构是数据在程序中的存储结构,和基本的数据操作 算法:解决问题的解决思路,基于数据结构 本课程包括:线性表&#xff…...

AI与药学 | ChatGPT 在临床药学中的有效性以及人工智能在药物治疗管理中的作用

《Effectiveness of ChatGPT in clinical pharmacy and the role of artificial intelligence in medication therapy management》这篇文献研究了ChatGPT在临床药学,特别是在药物治疗管理(MTM)中的有效性。 一、研究背景 (Background) MTM …...

Streamlining QA with Automated Testing for 3D Models

Quality assurance testing in 3D modeling is like walking a tightrope. Balancing the need for detailed accuracy and the time it takes to achieve it is no small feat. But what if we could make the tightrope wider, the task less daunting? And it’s where aut…...

产品原型设计

🤣🤣目录🤣🤣 一、Axure原型设计(Axure RP 9 )1.1 软件下载安装1.2 产品原型展示1.3 产品原型下载1.4 视频课程推荐 二、磨刀原型设计2.1 软件下载安装2.2 产品原型展示2.3 产品原型下载2.4 视频课程推荐 什…...

【Linux命令】su、sudo、sudo su、sudo -i、sudo -l的用法和区别

su 命令 su (Switch User 切换用户),允许用户切换到另一个用户的身份,默认情况下是切换到 root 用户。 默认行为:如果只运行 su,则系统会要求输入 root 用户的密码来切换到 root 用户,获取管理员权限。 切换到其他用…...

【广州计算机学会、广州互联网协会联合主办 | ACM独立出版 | 高录用】第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)

第四届大数据、信息与计算机网络国际学术会议(BDICN 2025)定于2025年01月10-12日在中国广州举行。会议旨在为从事“大数据”、“计算机网络”与“信息”研究的专家学者、工程技术人员、技术研发人员提供一个共享科研成果和前沿技术,了解学术发…...

HTML5 开关(Toggle Switch)详细讲解

HTML5 开关(Toggle Switch)详细讲解 1. 任务概述 开关(Toggle Switch)是一种用于表示二元状态(如开/关)的用户界面控件。用户可以通过点击开关来切换状态,常见于设置选项、开关功能等场景。 2…...

win32汇编环境下,双击窗口程序内生成的listview列表控件的某行,并提取其内容的示例程序

;运行效果 ;双击后 ;上源码,仔细研究里面的几条备注就理解原理了 ;提取窗口程序内生成的listview列表控件的内容示例程序 ;抄下面源码,可以在radasm里面直接编译运行。主要的部分加了备注。 ;>>>>>>>>>>>>>>…...

mysql主从断开后问题排查及修复

服务器mysql主从同步断开后,进行主从恢复 问题:mysql的主从断开了,在从服务器上通过以下命令查看状态,发现Slave_SQL_Running为No SHOW SLAVE STATUS\G;Slave_IO_Running:表示从服务器读取主服务器日志的线程 Slave_…...

[2025] 如何在 Windows 计算机上轻松越狱 IOS 设备

笔记 1. 首次启动越狱工具时,会提示您安装驱动程序。单击“是”确认安装,然后再次运行越狱工具。 2. 对于Apple 6s-7P和iPad系列(iOS14.4及以上),您应该点击“Optinos”并勾选“允许未经测试的iOS/iPadOS/tvOS版本”&…...

计算机网络—————考研复试

第一章、计算机网络体系结构 1. OSI参考模型和TCP/IP模型: OSI与TCP/IP的记忆方法:只需把OSI的七层记住,将应用层、表示层、会话层一起记,到TCP/IP变成应用层。物理层和数据链路层换成网络接口层。把网络层换个字变成网际层。 而…...

[pdf、epub]260道《软件方法》强化自测题业务建模需求分析共216页(202412更新)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 260道《软件方法》强化自测题业务建模需求分析共216页(202412更新) 已上传到本CSDN账号的资源 如果下载不到,也可以访问以下链接: ht…...

LeetCode - 初级算法 数组(只出现一次的数字)

只出现一次的数字 这篇文章讨论如何找到一个数组中只出现一次的数字,确保算法的时间复杂度为线性,且只使用常量额外空间。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个非空整数数组 nums,除了某个元素只出现一次以外,其余每个元素均出现两…...

Android性能优化概述

应用启动速度慢页面加载慢交互卡顿CrashANR 针对这些问题,可以逐一进行优化 1.启动优化 Android应用启动分为冷启动和热启动以及初次安装启动,此处只分析冷启动及热启动 冷启动:当设备无该应用进程时,用户操作拉起应用&#xff…...

C++ 实现map容器从大到小排序

map容器默认从小到大排序 利用仿函数可以修改map容器的排序规则为从大到小 示例&#xff1a; #include<iostream> #include<string> #include<map> using namespace std; class MyCompare { public: bool operator()(const int v1, const int v2) co…...

java中的文件操作

基础知识 1.File类对象的常用方法 一、 创建文件和目录 1.createNewFile() 用于创建一个新的文件&#xff0c;如果文件已经存在&#xff0c;则返回 false File file new File("C:\\Users\\P51\\Desktop\\file.txt"); file.createNewFile(); 2.mkdir() 用于创建一个…...

修复OpenHarmony系统相机应用横屏拍照按钮点不到的问题

适配OpenHarmony系统相机应用横屏UI&#xff0c; 相关pr: https://gitee.com/openharmony/applications_camera/pulls/233/files 适配效果 如何安装 编译好的hap提供在附件中 1.预置在源码&#xff0c;随固件安装 2.安装hap hdc shell "mount -o remount,rw /"…...

2024165读书笔记|《飞花令·合》——人生飘忽百年内,且须酣畅万古情

2024165读书笔记|《飞花令合》—— 人生飘忽百年内&#xff0c;且须酣畅万古情 屈原班婕妤曹植刘绘卢思道卢照邻苏味道刘希夷李白高适杜甫司空曙白居易温庭筠韦庄窦叔向张泌林逋柳永晏殊欧阳修李觏舒亶秦观陈瓘李清照陆游辛弃疾姜夔蒋捷吴伟业纳兰性德张惠言邓廷桢 《飞花令合》…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

&#x1f9e0; 智能合约中的数据是如何在区块链中保持一致的&#xff1f; 为什么所有区块链节点都能得出相同结果&#xff1f;合约调用这么复杂&#xff0c;状态真能保持一致吗&#xff1f;本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...