一般用法:/宽度/高度
例:https://picsum.photos/400/300
方形图像:/边长
指定图像:/id/{image}
例:https://picsum.photos/id/237/400/300
基于种子获取相同的随机图像:/seed/{seed}
例:https://picsum.photos/seed/xoyozo/400/300
灰度:?grayscale
例:https://picsum.photos/400/300?grayscale
模糊:?blur
例:https://picsum.photos/400/300/?blur
指定模糊级别:?blur=[1,10]
例:https://picsum.photos/400/300/?blur=2
组合
例:https://picsum.photos/id/870/400/300?grayscale&blur=2
防止缓存
例:
<img src="https://picsum.photos/400/300?random=1">
<img src="https://picsum.photos/400/300?random=2">
指定图像格式:

有时候,手机录制的视频在剪映专业版中导入时会提示:
导致画面异常偏红。
解决方法:
选中视频,切换到“调节”,在“HSL”选项卡中,调节红色的色相到合适的位置
虽然不完美,但这样基本能还原到原来的色彩。
目前发现的缺点是人物嘴唇颜色会变得过淡,可以在“画面”-“美颜美体”-“美妆”中使用口红来弥补。

在 Vue 中,当你将一个布尔对象双向绑定到 radio 输入上时,确保 radio 的 value 属性仍然保持布尔类型是很重要的。如果 value 属性是字符串,那么 Vue 会将其解释为字符串而不是布尔值。以下是一个示例,演示如何正确地将布尔对象双向绑定到 radio 按钮,并确保 value 属性保持布尔类型:
<template> <div> <input type="radio" v-model="myBoolean" :value="true" /> True <input type="radio" v-model="myBoolean" :value="false" /> False <p>myBoolean: {{ myBoolean }}</p> </div> </template> <script> export default { data() { return { myBoolean: false, // 布尔对象 }; }, }; </script>
在这个示例中,我们使用了 v-model 指令将 myBoolean 属性与两个 radio 按钮进行了双向绑定。通过将 value 属性设置为 true 和 false,我们确保了 myBoolean 属性保持布尔类型。
这样,当用户选择其中一个 radio 按钮时,myBoolean 属性将保持布尔值而不是字符串。确保 value 属性的类型与要绑定的数据类型匹配,以确保绑定的数据类型保持一致。
同样的问题出现在 select 上也是一样:
<select v-model="cat.colorId" required> <option :value="null">不选择</option> <option v-for="color in colors" :value="color.id">{{color.name}}</option> </select>

因需要将服务商账户改为月结账户,在抖店“电子面单”页面无法修改已申请的服务商,只能取消合作,再重新开通,这会导致易打单无法打印面单,提示“请设置抖音电子面单地址”。
解决方法是进入易打单,在“批量打印”页面点击“设置模板”,抖店电子面单项刷新并重新勾选,保存。

语言集成查询(LINQ)为 C# 和 VB 提供语言级查询功能和高阶函数 API,让你能够编写具有很高表达力度的声明性代码。
LINQ 有两种写法:查询语法和方法语法,查询语法又称查询表达式语法。
查询语法:
from 变量名 in 集合 where 条件 select 结果变量
方法语法:
集合.Where(变量名 => 条件)
LINQ 的标准查询运算符及语法示例
类型 | 操作符 | 功能 | 方法语法 | 查询语法 |
投影操作符 | Select | 用于从集合中选择指定的属性或转换元素 | cats.Select(cat => cat.color) | from cat in cats select cat.color |
SelectMany | 用于在嵌套集合中选择并平铺元素 | families.SelectMany(family => family.members .Select(member => member.name)) | from family in families from member in family.members select member.name | |
限制操作符 | Where | 根据指定的条件筛选集合中的元素 | cats.Where(cat => cat.color == "white") | from cat in cats where cat.color == "white" select cat |
排序操作符 | OrderBy、OrderByDescending、ThenBy、ThenByDescending | 用于对集合中的元素进行排序 | cats.OrderBy(cat => cat.age) | from cat in cats order by cat.age select cat |
Reverse | 将集合中的元素顺序反转 | cats.Reverse() | ||
联接操作符 | Join GroupJoin | 用于在两个集合之间执行内连接(Join)操作,或者对一个集合进行分组连接(GroupJoin)操作 | 内联接families.Join( members, family => family.familyId, member => member.familyId, (family, member) => new { family.familyId, member.name, }) 左连接 families.GroupJoin( members, family => family.familyId, member => member.familyId, (family, familyMembers) => new { family.familyId, name = familyMembers.FirstOrDefault()?.name }) | 内联接from family in families join member in members on family.familyId equals member.familyId select new { family.familyId, member.name, } 左连接 from family in families join member in members on family.familyId equals member.familyId into g from member in g.DefaultIfEmpty() select new { family.familyId, name = member?.name, } |
分组操作符 | GroupBy | 根据指定的键对集合中的元素进行分组 | ||
串联操作符 | Concat | 将两个集合连接成一个新集合 | ||
聚合操作符 | Aggregate、Average、Count、LongCount、Max、Min、Sum | Aggregate 可以用于在集合上执行自定义的累积函数,其他方法用于计算集合中的元素的平均值、总数、最大值、最小值和总和 | ||
集合操作符 | Distinct、Union、Intersect、Except | 用于执行集合间的不同操作,Distinct 移除重复元素,Union 计算两个集合的并集,Intersect 计算两个集合的交集,Except 计算一个集合相对于另一个集合的差集 | ||
生成操作符 | Empty、Range、Repeat | Empty 创建一个空集合,Range 创建一个包含一系列连续数字的集合,Repeat 创建一个重复多次相同元素的集合 | ||
转换操作符 | AsEnumerable、Cast、OfType、ToArray、ToDictionary、ToList、ToLookup | 这些方法用于将集合转换为不同类型的集合或字典 | ||
元素操作符 | DefaultIfEmpty、ElementAt、ElementAtOrDefault、First、Last、FirstOrDefault、LastOrDefault、Single、SingleOrDefault | 这些方法用于获取集合中的元素,处理可能的空集合或超出索引的情况 | ||
相等操作符 | SequenceEqual | 用于比较两个集合是否包含相同的元素,顺序也需要相同 | ||
量词操作符 | All、Any、Contains | 用于检查集合中的元素是否满足特定条件,All 检查是否所有元素都满足条件,Any 检查是否有任何元素满足条件,Contains 检查集合是否包含特定元素 | ||
分割操作符 | Skip、SkipWhile、Take、TakeWhile | 用于从集合中跳过一些元素或只取一部分元素,可以结合特定条件进行操作 |
了解立即执行与延迟执行可以大大改善性能。

判断一下类型:
if (p.PropertyType == typeof(uint)) { p.SetValue(t, Convert.ToUInt32(row[p.Name]), null); } else { p.SetValue(t, row[p.Name], null); }

在使用 VM 的过程中,你可能遇到过虚拟机和宿主机之间需要传输文件的问题。使用共享文件夹的方式比直接复制粘贴更快速、更有效,并且可以共同编辑文件,无需拷贝文件。如果在虚拟中有下载大文件,那么可以直接下载到共享文件夹中,可有效节省虚拟机磁盘文件 .vmdk 的空间占用(虚拟机里彻底删除文件后,.vmdk 并不会变小)。
设置方法很简单:
首先在宿主机磁盘上新建一个文件夹用来共享给虚拟机,例如取名 VM_SharedFolder。若无特殊需求,尽量不要将重要文件夹共享给虚拟机。
在 VM 中选中要共享文件夹的虚拟机,右键,设置。切换到“选项”选项卡,左侧选中“共享文件夹”,右侧选择“总是启用”,勾选“在 Windows 客户机中映射为网络驱动器”。点击“添加”,选择上一步创建的文件夹,完成。
这样,在虚拟机的“此电脑”上就可以看到这个“网络位置”了,默认是 Z 盘。
以上步骤可以在虚拟机开机的时候进行设置。
老版迅雷不能把下载目录指定到这样的盘符下,可以指定到:\\vmware-host\Shared Folders\VM_SharedFolder


方法一:
在 DbContext.cs 文件中找到 OnConfiguring 方法,添加代码:
#if DEBUG optionsBuilder.EnableSensitiveDataLogging(); optionsBuilder.LogTo(Console.WriteLine); // 输出日志到控制台 //optionsBuilder.LogTo(message => Debug.WriteLine(message)); // 输出日志到“输出”窗口 #endif
搞定。
若原来是 => 形式的,改为 { } 形式写法即可。
方法二:使用 Logging
打开 DbContext 文件,添加
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Debug;
将
optionsBuilder.UseMySql
替换为
optionsBuilder.UseLoggerFactory(MyLoggerFactory).UseMySql
添加方法
public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] { new DebugLoggerProvider() });
即可在“输出”窗口看到生成的 SQL 语句了。

