【CSS in Depth 2 精译_070】11.3 利用 OKLCH 颜色值来处理 CSS 中的颜色问题(下):从页面其他颜色衍生出新颜色

当前内容所在位置(可进入专栏查看其他译好的章节内容)

  • 第四部分 视觉增强技术 ✔️
  • 【第 11 章 颜色与对比】 ✔️
    • 11.1 通过对比进行交流
      • 11.1.1 模式的建立
      • 11.1.2 还原设计稿
    • 11.2 颜色的定义
      • 11.2.1 色域与色彩空间
      • 11.2.2 CSS 颜色表示法
        • 11.2.2.1 RGB 与 十六进制颜色
        • 11.2.2.2 HSL 颜色表示法
        • 11.2.2.3 HWB 颜色表示法
        • 11.2.2.4 新一代色彩空间
        • 11.2.2.5 LAB 和 OKLAB 颜色表示法
        • 11.2.2.6 LCH 和 OKLCH 颜色表示法
      • 11.3 利用 OKLCH 处理颜色(上篇)
        • 11.3.1 把样式表切换到 OKLCH 色彩空间(上篇)
        • 11.3.2 颜色变量的命名(上篇)
        • 11.3.3 为调色板选取新的颜色(上篇)
        • 11.3.4 从页面其他颜色衍生出新颜色(下篇) ✔️
          • 11.3.4.1 使用拾色器(下篇) ✔️
          • 11.3.4.2 使用 color-mix() 进行颜色混合(下篇) ✔️
          • 13.3.4.3 定义相对颜色(下篇) ✔️

文章目录

    • 11.3.4 从页面其他颜色衍生出新颜色 Deriving colors from others on the page
      • 11.3.4.1 使用拾色器 Using a color picker
      • 13.3.4.2 使用 color-mix() 进行颜色混合 Mixing with color-mix()
      • 13.3.4.3 定义相对颜色 Defining relative colors

《CSS in Depth》新版封面

《CSS in Depth》新版封面

译者按
这又是一篇在 CSS 颜色配置领域有望助您与时俱进、登峰造极的硬核文章。全新改版的内容既有当前最新的 color-mix 等特性,又有精美实用的在线增强工具,经验证,还能将这款开源工具部署到本地使用。也就短短半年时间,书中提到的新特性业已得到主流浏览器的全面支持,颇有点押题命中的感觉!一起来先睹为快吧。

11.3.4 从页面其他颜色衍生出新颜色 Deriving colors from others on the page

为某种颜色寻找一个与之相配的颜色,最简单的方法是找到它的 互补色(complement。某颜色的互补色位于色相环的对侧位置,例如蓝色对黄色、绿色对洋红(magenta,或者紫色 purple)、红色对青色(cyan)等等。

使用 OKLCHHSL 颜色值时,互补色的计算非常简单,令色调值增加或减少 180 即可,但也要做好微调的准备。这两套颜色表示法中的色调在色相环 360 度的分布略有不同,而其他调色工具(如 Adobe 的在线调色板生成工具,详见 https://color.adobe.com/create/color-wheel)往往还会提供另外版本的互补色方案。

再以本章示例中作品牌主色的绿色值为例,按照 OKLCH 的写法,其色调值原本为 165。加上 180,色调值变为 345,将得到一个颜色接近洋红(magenta)的红色;若想通过减去 180 来获取互补色,色调值则为 -15,也就相当于 345。故而 oklch(45% 0.09 -15deg)oklch(45% 0.09 345deg) 会渲染成同一种颜色。不过建议把色调值调整到 0 ~ 360 度范围内,因为人们更熟悉这个范围内的颜色与色调的对应关系。

确定了色调,再来看看互补色的色度和亮度。页面上的通用链接颜色为中绿色(即 oklch(74% 0.15 166.4deg)),我们就从这里入手微调互补色。在我看来,色调值取 345 过于接近洋红色,而我并不希望互补色过于抢眼,因此将其改为 10deg。经测试,感觉又有点浅了,于是亮度又下调了 10%,最终得到互补色 oklch(64% 0.15 10deg)

以上结果完全是利用浏览器的开发者工具 DevTools、并结合代码清单 11.8 中的代码经过反复调试验证得出的。当然,倘若在颜色选取上能和设计师商量着来,就再好不过了。

将该颜色添加到本地样式表中,并按照代码清单 11.18 中给出的示例,同步修改本地样式表。代码将新的互补色赋给了自定义属性 --red,这便是前面预留的、处于激活状态下的链接色。

代码清单 11.8 添加新的红色到调色板中

@layer theme {:root {--brand-green: oklch(45% 0.09 165.4deg);--dark-green: oklch(59% 0.12 164.1deg);--medium-green: oklch(74% 0.15 166.4deg);--text-color: oklch(26% 0.01 0deg);--gray: oklch(64% 0.02 248deg);--light-gray: oklch(96% 0.003 248deg);--extra-light-gray: oklch(98% 0 0deg);--white: oklch(100% 0 0deg);--red: oklch(64% 0.15 10deg); /* 自定义一个代表红色的变量*/}
}

完成以上设置后,重新加载页面查看最终效果。遗憾的是,链接的激活状态默认情况下是不显示的,要看到实际效果还得费些功夫,需要单击并按住链接才能生效,一旦松开就又变回了绿色;为此,可以通过开发者工具强制激活该链接元素。

鼠标右键单击该链接,在弹出菜单中选择 检查(Inspect)检查元素(Inspect Element) 打开开发者工具 DevTools。在 Element 元素面板中右键单击 <a> 标签,并从弹出菜单中选择 Force State 下的 :active 选项(若为 Firefox 浏览器,则选中 Change Pseudo-class 下的 active 选项),如图 11.15 所示。这样就可以强制浏览器显示该元素在激活状态下的样式。

图 11.15 DevTools 工具可以强制设置元素激活、悬停、聚焦及其他伪类状态,以方便开发者预览其渲染效果

【图 11.15 DevTools 工具可以强制设置元素激活、悬停、聚焦及其他伪类状态,以方便开发者预览其渲染效果】

元素处于激活状态时,就能查看新定义的红色是什么效果了。必要时甚至可以在开发者工具中实时修改样式,并查看其对目标元素的实际影响。

选择什么样的颜色好看并没有什么标准方案,但利用极坐标系统下的色彩空间可以让这个过程简单很多。不妨尝试从页面已有颜色的互补色入手,然后在开发者工具中不断调整亮度(lightness)与色度(chroma),往往就能找到心仪的渲染效果。如果想要更深入地研究颜色的选取,也可以上网浏览颜色理论相关的文章,例如 Natalya Shelburne 撰写的这篇著名文章《Practical Color Theory for People Who Code》,详见:http://tallys.github.io/color-theory/。

11.3.4.1 使用拾色器 Using a color picker

在某些场合下,例如没有设计师参与、需要完全自主设计页面的情况,您可能需要一个比 DevTools 的内置版本功能更加强大的拾色器(color picker)。网上像这样的第三方工具还不少。如果您用的也是 OKLCH 写法,强烈推荐 OKLCH Color Picker & Converter 这款线上工具(详见:https://oklch.com)。它不仅可以提取颜色,还能生动形象地帮助您进一步熟悉 OKLCH 色彩空间的相关操作。

该拾色器工具的页面截图如图 11.16 所示。左上方为选定的色块,右边则对应亮度、色度、色调以及 Alpha 通道值的滑块设置。每个维度梯度都显示了三维色彩空间的某个二维切面,以便从三个主视角进行查看。您也可以单击这些区域或者移动滑块来调整当前颜色。此外还能几乎任何颜色值写法粘贴到左边的文本框中,然后转为对应的 OKLCH 颜色值。

该拾色器工具尤其适用于检验当前颜色是否符合 sRGB 或者 Display p3 色域标准。如果此前用过颜色提取工具,您可能会看到一个熟悉的矩形颜色梯度界面;而 OKLCH 拥有更宽广的色彩空间,其对应的色彩展示能力远非目前已知的任何硬件可以企及。因此,如果使用矩形梯度界面来描述这些可用色彩,矩形中将包含大量无法正常渲染的色彩区域。这些区域会在拾色器中留白,最终形成不规则的颜色渐变图案。如果您使用的是支持 Display p3Rec2020 色域的显示器,则会在范围偏小的色域边界处出现一条白色的分界线,如图 11.17 所示。

图 11.16 由 oklch.com 网站提供的线上拾色器工具截图

【图 11.16 由 oklch.com 网站提供的线上拾色器工具截图】

如果选取的目标颜色刚好位于色域范围之外,页面左上方的色块则会提示像 “P3 is unavailable on this monitor” 字样的信息(“P3 色域在该显示器上不可用”),而在它右侧则会显示一个最接近的备选色,也就是浏览器在渲染色域以外的颜色时会实际显示的颜色。

译注

感觉这里有必要补一张截图,展示颜色不在色域内的工具提示情况:

补图1:目标颜色 oklch(72.65% 0.1974 38) 不在色域范围内时的页面提示情况截图

【补图1:目标颜色 oklch(72.65% 0.1974 38) 不在色域范围内时的页面提示情况截图】


此外,开启左下角的 3D 模型展示,还可以直观感受当前色彩空间的 3D 模型构造,同时支持鼠标拖拽操作,效果可谓相当炸裂:

补图 1-2:启用 3D 色彩空间建模视图后的工具页截图(支持鼠标拖拽操作)

【补图 1-2:启用 3D 色彩空间建模视图后的工具页截图(支持鼠标拖拽操作)】

注意

当定义的色域颜色超出色域很远时,例如色度值为 5 的某个颜色,浏览器可能会将其近似处理成色调或者亮度发生某种偏移(shifted)的颜色。W3C 协会已经定义了一种设计精妙的算法来规避这一情况,但该算法目前尚未在任何浏览器中实现。因此请务必将 OKLCH 的色度值尽量控制下 0.5 以下,以避免出现这种情况。

这款工具对于了解显示器的色域限制以及将其他颜色写法转为 OKLCH 写法非常有用。您可以复制左边生成的 oklch() 函数,并将其粘贴到您的样式表中。

图 11.17 拾色器工具可以帮助人们在所需色域内选取颜色

【图 11.17 拾色器工具可以帮助人们在所需色域内选取颜色】

13.3.4.2 使用 color-mix() 进行颜色混合 Mixing with color-mix()

CSS 提供了两个全新的功能来增强与颜色相关的操作。截至 2024 年年中,这两个特性功能尚未得到足够的浏览器支持,因此只能在配合备选样式的情况下使用; 但它们今后很可能成为必不可少的辅助工具、。

第一个新特性为 color-mix() 函数。利用该函数,两种颜色可以有效地混合在一起,生成第三种中间色。该函数需要三个参数:插值方法(interpolation method 和两种待混合的颜色。例如,color-mix(in oklch, blue, red) 将混合蓝色与红色,最终生成一个紫色。

第一个参数 插值方法 决定了混合颜色是使用的色彩空间,可能会对生成的颜色产生重大影响;这个 “介于” 给定两个颜色之间的颜色效果,很大程度上取决于所有颜色在空间上的排列方式。

当前可用的插值方法有:srgbsrgb-linearlaboklabxyzhwbhsllch 以及 oklch。在处理颜色渐变效果时,颜色插值也是个重要议题,相关内容将在第 13 章进行更为深入的探讨。

简单来讲,我发现当需要火鹤两种不同的色调来找到某个中间色调时,使用 hsl 或者 oklch 等极坐标下的色彩空间是最佳选择;而 srgb 似乎更适合与白色或者黑色进行混合,从而产生同种颜色下的浅色或深色色调。

您也可以在一种或者两种颜色中加入一个百分数,从而调整参与混合的颜色权重。例如 color-mix(in srgb, blue 75%, white) 将混合 75% 的蓝色与 25% 的白色,最终生成相较于白色更接近蓝色的某个色调。如若两种颜色都指定了某个百分数,且二者之和小于 100%,则混合结果将呈部分透明效果。

提示

在混合颜色时,还可以使用关键字 currentColorcurrentColor 是个特殊的关键字,它始终代表当前元素的文字颜色。将其与 color-mix() 一起使用,则能够基于文字颜色生成类似或透明的颜色。例如,border-color: color-mix(in srgb, currentColor, white 20%) 会让边框的颜色变为当前文字颜色的浅色版本。

使用 color-mix() 函数是生成同一色系、不同色调的绝佳方案。例如,以下代码片段通过混合不同比例的白色与黑色,分别定义了由深入浅的九种绿色效果:

:root {--middle-green: oklch(65% 0.15 166.4deg);--green-10: color-mix(in srgb, var(--middle-green), black 80%);--green-20: color-mix(in srgb, var(--middle-green), black 60%);--green-30: color-mix(in srgb, var(--middle-green), black 40%);--green-40: color-mix(in srgb, var(--middle-green), black 20%);--green-50: var(--middle-green);--green-60: color-mix(in srgb, var(--middle-green), white 20%);--green-70: color-mix(in srgb, var(--middle-green), white 40%);--green-80: color-mix(in srgb, var(--middle-green), white 60%);--green-90: color-mix(in srgb, var(--middle-green), white 80%);
}

所有主流浏览器的最新版本均支持上述写法,因此您现在就可以小试牛刀。不过截至 2024 年年中(mid-2024),仍有不少用户用的是旧版 Chrome 和 Safari 浏览器,因此建议您不要在没有备选方案的情况下冒然引入该特性。查看浏览器最新的兼容情况,详见:https://caniuse.com/mdn-css_types_color_color-mix。

译注

这是截止到 2024 年 12 月 8 日本文发稿时 Can I Use 网站收集的关于 color-mix() 函数的浏览器最新兼容情况(当前整体覆盖率已达 91.9%):

补图2:color-mix 颜色混合函数在各大浏览器中的支持情况(截至 2024 年 12 月 8 日)

【补图2:color-mix 颜色混合函数在各大浏览器中的支持情况(截至 2024 年 12 月 8 日)】

13.3.4.3 定义相对颜色 Defining relative colors

另一个新增的与颜色操作相关的特性功能为 相对颜色(relative color。相对颜色是对现有颜色表示法的有力扩展,可以基于给定的颜色对各个参数进行调整。下面通过一个具体的案例来演示其用法。利用函数 oklch(from green calc(l / 2) c h) 将得到一个绿色的深色版本。该函数先将给定的绿色分解为 lch 三个值;然后通过引用变量 lch,并结合 CSS 内置的 calc() 函数实现相应的数学运算。在本例中,L 分量减半,使得最终颜色变暗。

同理,也可以在 hsl() 函数中分别操作 hsl 分量的值;或者 rgb() 函数中的 rgb 分量值,不一而足。此外,给定的基准色也无需在对应的色彩空间中定义,例如对于某个十六进制颜色值,可以直接在另一个色彩空间中(如 OKLCH)进行相关操作,使用起来相当方便。以下代码演示了重点色(accent color)为某个浅绿色的相对颜色操作,通过调整其色调值(hue)生成了某个同样鲜艳的蓝色:

--accent-green: #22cf58;
--accent-blue: oklch(from var(--accent-green) l c calc(h + 100deg));

我还常常遇到这样的情况:需要在页面上使用某种颜色,并同时拥有该颜色的半透明版本。有了相对颜色这一全新特性,实现起来就轻松多了。下面给出的相对颜色设置在保留颜色变量 --brand-greenlch 分量值的基础上,添加了一个表示不透明度的 alpha 通道值:

--transparent-green: oklch(from var(--brand-green) l c h / 0.6);

截至 2024 年年中,Firefox 尚未提供相对颜色的语法支持。该特性的浏览器最新兼容情况,详见:https://caniuse.com/css-relative-colors。

译注

截至 2024 年 12 月 8 日本文发稿时,Firefox 浏览器已经在新版本中支持了相对颜色语法。最新兼容情况如下所示:

补图3:相对颜色功能在当前各大浏览器中的兼容情况,目前已获得主流浏览器支持(截至 2024 年 12 月 8 日)

【补图3:相对颜色功能在当前各大浏览器中的兼容情况,目前已获得主流浏览器支持(截至 2024 年 12 月 8 日)】



关于《CSS in Depth》(中译本书名《深入解析 CSS》)

第 1 版第 2 版
读者评分原版:4.7(亚马逊);中文版:9.3(豆瓣)原版:5.0(亚马逊);中文版:暂无,待出版
出版时间原版:2018 年 3 月;中文版:2020 年 4 月原版:2024 年 7 月;中文版:暂无,待出版
原价原版:$44.99;中文版:¥139.00原版:$59.99;中文版:暂无,待出版
现价原版:$36.49;中文版:¥52.54 起步原版:$52.09;中文版:暂无,待出版
原版国内预订起步价 ¥461.00起步价 ¥750.00

本专栏为该书第 2 版高分译文专栏,全网首发,精译精校,持续更新,计划今年内完成全书翻译,敬请期待!!!

目前已完结的章节(可进入本专栏查看详情,连载期间完全免费):

  • 第一章 层叠、优先级与继承(已完结)
    • 1.1 层叠
    • 1.2 继承
    • 1.3 特殊值
    • 1.4 简写属性
    • 1.5 CSS 渐进式增强技术
    • 1.6 本章小结
  • 第二章 相对单位(已完结)
    • 2.1 相对单位的威力
    • 2.2 em 与 rem
    • 2.3 告别像素思维
    • 2.4 视口的相对单位
    • 2.5 无单位的数值与行高
    • 2.6 自定义属性
    • 2.7 本章小结
  • 第三章 文档流与盒模型(已完结)
    • 3.1 常规文档流
    • 3.2 盒模型
    • 3.3 元素的高度
    • 3.4 负的外边距
    • 3.5 外边距折叠
    • 3.6 容器内的元素间距问题
    • 3.7 本章小结
  • 第四章 Flexbox 布局(已完结)
    • 4.1 Flexbox 布局原理
    • 4.2 弹性子元素的大小
    • 4.3 弹性布局的方向
    • 4.4 对齐、间距等细节处
    • 4.5 本章小结
  • 第五章 网格布局(已完结)
    • 5.1 构建基础网格
    • 5.2 网格结构剖析 (上)
      • 5.2.1 网格线的编号(下)
      • 5.2.2 网格与 Flexbox 配合(下)
    • 5.3 两种替代语法
      • 5.3.1 命名网格线
      • 5.3.2 命名网格区域
    • 5.4 显式网格与隐式网格(上)
      • 5.4.1 添加变化 (中)
      • 5.4.2 让网格元素填满网格轨道(下)
    • 5.5 子网格(全新增补内容)
    • 5.6 对齐相关的属性
    • 5.7 本章小结
  • 第六章 定位与堆叠上下文(已完结)
    • 6.1 固定定位
      • 6.1.1 创建一个固定定位的模态对话框
      • 6.1.2 在模态对话框打开时防止屏幕滚动
      • 6.1.3 控制定位元素的大小
    • 6.2 绝对定位
      • 6.2.1 关闭按钮的绝对定位
      • 6.2.2 伪元素的定位问题
    • 6.3 相对定位
      • 6.3.1 创建下拉菜单(上)
      • 6.3.2 创建 CSS 三角形(下)
    • 6.4 堆叠上下文与 z-index
      • 6.4.1 理解渲染过程与堆叠顺序(上)
      • 6.4.2 用 z-index 控制堆叠顺序(上)
      • 6.4.3 深入理解堆叠上下文(下)
    • 6.5 粘性定位
    • 6.6 本章小结
  • 第七章 响应式设计(已完结)
    • 7.1 移动端优先设计原则(上篇)
      • 7.1.1 创建移动端菜单(下篇)
      • 7.1.2 给视口添加 meta 标签(下篇)
    • 7.2 媒体查询(上篇)
      • 7.2.1 深入理解媒体查询的类型(上篇)
      • 7.2.2 页面断点的添加(中篇)
      • 7.2.3 响应式列的添加(下篇)
    • 7.3 流式布局
    • 7.4 响应式图片
    • 7.5 本章小结
  • 第八章 层叠图层及其嵌套
    • 8.1 用 layer 图层来操控层叠规则(上篇)
      • 8.1.1 图层的定义(上篇)
      • 8.1.2 图层的顺序与优先级(下篇)
      • 8.1.3 revert-layer 关键字(下篇)
    • 8.2 层叠图层的推荐组织方案
    • 8.3 伪类 :is() 和 :where() 的用法
    • 8.4 CSS 嵌套的使用
      • 8.4.1 嵌套选择器的使用
      • 8.4.2 深入理解嵌套选择器
      • 8.4.3 媒体查询及其他 @规则 的嵌套
    • 8.5 本章小结
  • 第九章 CSS 的模块化与作用域
    • 9.1 模块的定义
      • 9.1.1 模块和全局样式
      • 9.1.2 一个简单的 CSS 模块
      • 9.1.3 模块的变体
      • 9.1.4 多元素模块
    • 9.2 将模块组合为更大的结构
      • 9.2.1 模块中多个职责的拆分
      • 9.2.2 模块的命名
    • 9.3 CSS 的作用域
      • 9.3.1 CSS 作用域的就近原则
      • 9.3.2 划定作用域的边界
      • 9.3.3 CSS 中的隐式作用域
      • 9.3.4 关于 CSS 作用域与层叠图层
    • 9.4 CSS 模式库
    • 9.5 本章小结
  • 第十章 CSS 容器查询
    • 10.1 容器查询的一个简单示例
      • 10.1.1 容器尺寸查询的用法
    • 10.2 深入理解容器
      • 10.2.1 容器的类型
      • 10.2.2 容器的名称
      • 10.2.3 容器与模块化 CSS
    • 10.3 与容器相关的单位
    • 10.4 容器样式查询的用法
      • 10.4.1 将模块与所在容器解耦
      • 10.4.2 减少重复代码
    • 10.5 本章小结
  • 附录
    • 附录A:CSS 选择器参考
    • 附录B:CSS 预处理器简介

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/488305.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML:表格重点

用表格就用table caption为该表上部信息&#xff0c;用来说明表的作用 thead为表头主要信息&#xff0c;效果加粗 tbody为表格中的主体内容 tr是 table row 表格的行 td是table data th是table heading表格标题 &#xff0c;一般表格第一行的数据都是table heading

15.Java 网络编程(网络相关概念、InetAddress、NetworkInterface、TCP 网络通信、UDP 网络通信、超时中断)

一、网络相关概念 1、网络通信 网络通信指两台设备之间通过网络实现数据传输&#xff0c;将数据通过网络从一台设备传输到另一台设备 java.net 包下提供了一系列的类和接口用于完成网络通信 2、网络 两台以上设备通过一定物理设备连接构成网络&#xff0c;根据网络的覆盖范…

项目中使用AntV L7地图(五)添加飞线

项目中使用AntV L7地图&#xff0c;添加 飞线 文档地址&#xff1a;https://l7.antv.antgroup.com/zh/examples/line/animate/#trip_animate 一、初始化地图 使用的地图文件为四川地图JSON&#xff0c;下载地址:https://datav.aliyun.com/portal/school/atlas/area_selector#&…

MySQL-DQL之数据表操作

文章目录 零. 准备工作一. 简单查询1.查询所有的商品.2.查询商品名和商品价格.3.查询结果是表达式&#xff08;运算查询&#xff09;&#xff1a;将所有商品的价格10元进行显示. 二. 条件查询1. 比较查询2. 范围查询3. 逻辑查询4. 模糊查询5. 非空查询 三. 排序查询四. 聚合查询…

nacos bootstrap.yml 和 spring.config.import 加载配置的流程区别

相关依赖 springboot:2.7.15 nacos:2.2.3 bootstrap.yml加载方式 加载流程如下图所示 从图中可以看出,&#xff1a; 1.bootstrap.yml 的加载是在 BootstrapApplicationListener.onApplicationEvent 接收到 ApplicationEnvironmentPreparedEventEvent 事件后另起一个 Sprin…

Kubernetes Nginx-Ingress | 禁用HSTS/禁止重定向到https

目录 前言禁用HSTS禁止重定向到https关闭 HSTS 和设置 ssl-redirect 为 false 的区别 前言 客户请求经过ingress到服务后&#xff0c;默认加上了strict-transport-security&#xff0c;导致客户服务跨域请求失败&#xff0c;具体Response Headers信息如下&#xff1b; 分析 n…

关于idea-Java-servlet-Tomcat-Web开发中出现404NOT FOUND问题的解决

在做web项目时&#xff0c;第一次使用servlet开发链接前端和后端的操作&#xff0c;果不其然&#xff0c;遇到了诸多问题&#xff0c;而遇到最多的就是运行项目打开页面时出现404NOT FOUND的情况。因为这个问题我也是鼓捣了好久&#xff0c;上网查了许多资料才最终解决&#xf…

开发一套SDK 第一弹

自动安装依赖包 添加条件使能 #ex: filetypesh bash_ls 识别 达到预期,多个硬件环境 等待文件文件系统挂在完成 或者创建 /sys/class/ 属性文件灌入配置操作 AI 提供的 netlink 调试方法,也是目前主流调用方法,socket yyds #include <linux/module.h> #include <linux…

深入理解 Apache Shiro:安全框架全解析

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、JAVA 、PYTHON与SAP 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在…

【PlantUML系列】流程图(四)

目录 目录 一、基础用法 1.1 开始和结束 1.2 操作步骤 1.3 条件判断 1.4 并行处理 1.5 循环 1.6 分区 1.7 泳道 一、基础用法 1.1 开始和结束 开始一般使用start关键字&#xff1b;结束一般使用stop/end关键字。基础用法包括&#xff1a; start ... stopstart ...…

Mac 录制电脑系统内的声音的具体方法?

1.第一步&#xff1a;下载BlackHole 软件 方式1&#xff1a;BlackHole官方下载地址 方式2&#xff1a; 百度云下载 提取码: n5dp 2.第二步&#xff1a;安装BlackHole 双击下载好的BlackHole安装包&#xff0c;安装默认提示安装。 3.第三步&#xff1a;在应用程序中找到音频…

Unity简单操作及使用教程

Unity 是一款强大的跨平台游戏引擎&#xff0c;它不仅支持 2D 和 3D 游戏的开发&#xff0c;还可以用于虚拟现实 (VR)、增强现实 (AR)、动画、建筑可视化等多个领域。Unity 提供了完整的开发环境&#xff0c;具有丰富的功能、工具和资源&#xff0c;可以帮助开发者快速实现创意…

一个简单带颜色的Map

越简单 越实用。越少设计&#xff0c;越易懂。 需求背景&#xff1a; 创建方法&#xff0c;声明一个hashset&#xff0c; 元素为 {“#DE3200”, “#FA8C00”, “#027B00”, “#27B600”, “#5EB600”} 。 对应的key为 key1 、key2、key3、key4、key5。 封装该方法&#xff0c…

Go快速开发框架集成Vue3漂亮的动态流程图编辑和动态流程展示插件

温馨提示&#xff1a;我们分享的文章是给需要的人&#xff0c;不需要的人请绕过&#xff0c;文明浏览&#xff0c;误恶语伤人&#xff01; 前言 为大家在开发流程相关业务时有个漂亮流程图展示&#xff0c;我们集成一个实用的流程图编辑器&#xff0c;让流程开发变得简单&…

论文阅读:Statistical Comparisons of Classifiers over Multiple Data Sets

论文地址&#xff1a;Statistical Comparisons of Classifiers over Multiple Data Sets (acm.org) 前面在机器学习之Friedman检验-CSDN博客 中提到了Friedman检验&#xff0c;这里将对这个方法的论文进行详细的阅读&#xff0c;以了解其原理。 摘要 尽管用于在单个数据集上比…

【数字信号处理】期末综合实验,离散时间信号与系统的时域分析,离散信号 Z 变换,IIR 滤波器的设计与信号滤波,用窗函数法设计 FIR 数字滤波器

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…

人工智能导论学习笔记

目录 一、概要 二、人工智能基础知识 智能 人工智能 人工智能三要素 人工智能发展历程 人工智能的三次浪潮 人工智能行业发展现状 人工智能技术水平现状 人工智能技术层级 人工智能应用开发周期 机器学习的流程 一、概要 《人工智能导论(通识版)》张大斌 田恒义 许…

ZUC256 Go Go Go!!!

文章目录 背景运行效果代码 背景 因业务需要使用ZUC算法&#xff0c;GitHub上又没有对ZUC256相对应的Go语言的实现。 吃水不忘挖井人&#xff0c;在这里感谢GmSSL及BouncyCastle两个强大的密码学库&#xff01; 本ZUC256的编写&#xff0c;参考了这两个库及中科院软件院发布的…

JAVA |日常开发中连接Sqlite数据库详解

JAVA &#xff5c;日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…

Spring Cloud Alibaba:一站式微服务解决方案

一、简介 Spring Cloud Alibaba&#xff08;简称SCA&#xff09; 是一个基于 Spring Cloud 构建的开源微服务框架&#xff0c;专为解决分布式系统中的服务治理、配置管理、服务发现、消息总线等问题而设计。它集成了阿里巴巴开源的各种分布式服务技术&#xff0c;提供了一系列…