9_less教程 --[CSS预处理]
LESS(Leaner Style Sheets)是一种CSS预处理器,它扩展了CSS语言,增加了变量、嵌套规则、混合(mixins)、函数等功能,使得样式表的编写更加灵活和易于维护。下面是一些LESS的基础教程内容:
1. 安装
安装 LESS 预处理器通常需要通过 Node.js 的包管理工具 npm (Node Package Manager) 来完成。以下是安装步骤:
在本地计算机上安装 LESS
-
确保已安装 Node.js 和 npm
在安装 LESS 之前,你需要确保你的计算机上已经安装了 Node.js 和 npm。你可以通过在命令行(或终端)中输入以下命令来检查是否已安装以及它们的版本:
node -v npm -v
如果没有安装,请前往 Node.js 官方网站下载并安装适合你操作系统的版本。Node.js 的安装程序会自动包含 npm。
-
全局安装 LESS
打开命令行界面(Windows 上是命令提示符或 PowerShell,macOS 或 Linux 上是终端),然后使用 npm 安装 LESS:
npm install -g less
-g
参数表示全局安装,这意味着 LESS 将可以在任何项目中使用,而不需要为每个项目单独安装。 -
验证安装
安装完成后,可以通过运行以下命令来验证 LESS 是否安装成功:
lessc -v
这将显示 LESS 编译器的版本信息,如果安装正确的话。
-
使用 LESS 编译 CSS
安装后,你可以使用
lessc
命令来编译.less
文件为.css
文件。例如,如果你有一个名为styles.less
的文件,你可以用下面的命令编译它:lessc styles.less styles.css
这将会把
styles.less
文件编译成styles.css
文件。
使用在线编译器或IDE插件
除了在命令行安装和使用 LESS 编译器之外,还有很多在线编译器和集成开发环境(IDE)的插件可以直接处理 LESS 文件的编写和编译,无需手动安装 LESS。这些工具对于快速测试代码或者不想配置开发环境的用户来说非常方便。
2. 变量
当然可以。下面我将给出两个关于如何在 LESS 中使用变量的示例,包括基础的颜色变量定义和更复杂的变量用法。
示例 1: 基础颜色变量
这是最简单的变量用法,主要用于存储重复使用的颜色值。通过这种方式,如果你需要更改网站的主题颜色,你只需要在一个地方修改变量的值即可。
// 定义变量
@primary-color: #4D926F;
@secondary-color: #79BD8F;// 使用变量
body {background-color: @primary-color;color: @secondary-color;
}a {color: @primary-color;
}
在这个例子中,@primary-color
和 @secondary-color
是两个颜色变量。它们分别被用来设置 body
的背景色和文本颜色,以及链接的颜色。
示例 2: 更复杂的变量用法
除了简单的颜色定义,LESS 变量还可以用于存储任何 CSS 属性值,比如尺寸、字体系列等。此外,你可以根据变量进行运算。
// 定义变量
@base-font-size: 16px;
@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
@border-radius: 5px;
@padding-base-vertical: 10px;
@padding-base-horizontal: 15px;// 使用变量并结合算术运算
.button {font-size: @base-font-size + 2; // 按钮字体比基础字体大2pxfont-family: @font-family-sans-serif;border-radius: @border-radius;padding: @padding-base-vertical @padding-base-horizontal;
}// 继续使用相同的变量定义其他样式
.input {font-size: @base-font-size;font-family: @font-family-sans-serif;border-radius: @border-radius;padding: @padding-base-vertical - 2 @padding-base-horizontal;
}
在这个复杂一点的例子中,我们定义了多个不同类型的变量,并且展示了如何在 .button
和 .input
类中使用这些变量。注意,我们不仅直接使用了变量值,还进行了简单的数学运算来调整按钮和输入框的内边距(padding)和字体大小(font-size)。这样做的好处是保持了代码的一致性和可维护性。如果以后需要调整字体大小或圆角半径,只需修改变量的定义即可,所有使用该变量的地方都会相应更新。
3. 嵌套
当然,LESS 的嵌套功能是它的一个强大特性,可以使 CSS 代码更加简洁和直观。下面我将给出两个示例来展示如何使用 LESS 的嵌套。
示例 1: 简单的 HTML 元素嵌套
在这个例子中,我们将创建一个简单的导航栏样式,其中 ul
(无序列表)包含多个 li
(列表项),每个 li
又包含一个 a
(链接)。通过 LESS 的嵌套规则,可以更清晰地反映这些 HTML 元素之间的层次关系。
nav {background-color: #333;ul {margin: 0;padding: 0;list-style: none;display: flex;li {display: inline-block;a {display: block;padding: 10px 20px;color: white;text-decoration: none;&:hover { // 使用 &:hover 直接添加伪类background-color: #575757;}}}}
}
编译后的 CSS 将会正确反映上述元素的嵌套结构,同时保持了代码的整洁性和可读性。
示例 2: 组件级别的嵌套与扩展
这个例子展示了如何为一个按钮组件编写样式,并且包括一些额外的状态,比如 :hover
和 :active
。此外,我们还将定义一个带有图标的按钮变体,通过嵌套进一步简化代码。
// 定义基本按钮样式
.button {display: inline-block;padding: 10px 20px;font-size: 16px;cursor: pointer;text-align: center;text-decoration: none;outline: none;color: #fff;background-color: #4CAF50;border: none;border-radius: 15px;box-shadow: 0 9px #999;// 添加悬停状态&:hover {background-color: #3e8e41;}// 添加按下状态&:active {background-color: #3e8e41;box-shadow: 0 5px #666;transform: translateY(4px);}
}// 定义带图标的按钮变体
.button.icon {padding-left: 40px; // 为图标留出空间position: relative;// 图标定位&::before {content: "";position: absolute;left: 10px;top: 50%;transform: translateY(-50%);width: 24px;height: 24px;background-image: url('icon.png'); // 假设这里有一个图标图片background-size: cover;}
}
在这个例子中,.button
类定义了一个通用按钮的样式,而 .button.icon
则是在此基础上增加了一些特定于带有图标的按钮的样式。注意,:hover
和 :active
伪类以及 ::before
伪元素都直接在相应的选择器内部定义,这使得代码组织得更好,也更容易维护。
通过这两个示例,你应该能感受到 LESS 的嵌套功能是如何帮助你写出更加结构化和易于管理的 CSS 代码的。
4. 混合(Mixins)
LESS 的混合(mixins)功能允许你将一组样式封装到一个类中,并在其他规则中复用这些样式。这不仅提高了代码的可维护性,还能避免重复代码。下面是两个使用 LESS 混合的示例:
示例 1: 基本混合
在这个简单的例子中,我们将创建一个用于设置圆角边框的混合,然后在不同的选择器中使用它。
// 定义一个混合来设置圆角边框
.rounded-corners (@radius: 5px) {border-radius: @radius;-webkit-border-radius: @radius;-moz-border-radius: @radius;
}// 使用这个混合
.box {.rounded-corners(10px); // 应用带参数的混合background-color: #eee;padding: 20px;margin-bottom: 10px;
}.button {.rounded-corners(); // 不提供参数时使用默认值background-color: #4CAF50;color: white;padding: 10px 20px;text-align: center;text-decoration: none;display: inline-block;
}
编译后的 CSS 将包含 .box
和 .button
类的样式,并且它们都会应用 border-radius
属性。.box
类会使用传入的 10px
参数,而 .button
类则使用默认的 5px
。
示例 2: 带有参数和条件的复杂混合
在这个更复杂的例子中,我们将创建一个带有参数和条件判断的混合,以根据不同的状态(如正常、悬停、激活等)应用不同的背景颜色。
// 定义一个带有参数和条件的混合
.button-style (@bg-color: #4CAF50, @hover-bg-color: darken(@bg-color, 10%), @active-bg-color: darken(@bg-color, 20%)) {background-color: @bg-color;color: white;padding: 10px 20px;text-align: center;text-decoration: none;display: inline-block;border-radius: 5px;&:hover {background-color: @hover-bg-color;}&:active {background-color: @active-bg-color;}
}// 使用这个混合并传递参数
.success-button {.button-style(#4CAF50);
}.warning-button {.button-style(#FFC107, darken(#FFC107, 8%), darken(#FFC107, 15%));
}.danger-button {.button-style(#F44336);
}
在这个例子中,.button-style
混合接收三个参数:默认背景颜色、悬停时的背景颜色以及按下时的背景颜色。我们还定义了几个按钮类(.success-button
, .warning-button
, .danger-button
),每个都调用了 .button-style
混合,并根据需要提供了不同的颜色参数。此外,混合内部还包括了对 :hover
和 :active
状态的支持,通过 LESS 的颜色函数(如 darken
)动态计算出不同的背景颜色。
这两个示例展示了如何利用 LESS 的混合功能来简化和优化 CSS 样式的编写。如果你有更多问题或需要进一步的帮助,请随时提问!
5. 继承
在 LESS 中,继承(extend)允许一个选择器继承另一个选择器的所有样式规则。这有助于减少重复代码,并且使得维护更加容易。下面我将给出两个使用 LESS 继承的示例。
示例 1: 基本继承
在这个简单的例子中,我们将创建一个基本的消息框样式,然后让错误消息框和成功消息框继承这个基本样式,并添加各自特有的样式。
// 定义一个基础的消息框样式
.message {border: 1px solid #ccc;padding: 10px;color: #333;
}// 错误消息框继承 .message 并添加特定样式
.error {&:extend(.message); // 继承 .message 的所有样式border-color: red;background-color: #fdd;color: red;
}// 成功消息框继承 .message 并添加特定样式
.success {&:extend(.message); // 继承 .message 的所有样式border-color: green;background-color: #dfd;color: green;
}
编译后的 CSS 将包含 .error
和 .success
类的样式,并且它们都会继承自 .message
类的基础样式。这意味着如果将来需要更改消息框的基本样式,只需修改 .message
类即可,而无需分别调整每个具体的类。
示例 2: 复杂的选择器继承与多重继承
在这个更复杂的例子中,我们将展示如何在一个复杂的选择器中使用继承,以及如何进行多重继承。这里我们将定义一个按钮的基本样式,然后为不同类型的按钮(如主要按钮、次要按钮)提供额外的样式,最后还将展示如何同时继承多个选择器。
// 定义一个基础按钮样式
.button {display: inline-block;padding: 10px 20px;font-size: 16px;cursor: pointer;text-align: center;text-decoration: none;outline: none;border-radius: 5px;transition: all 0.3s ease;
}// 主要按钮继承 .button 并添加特定样式
.primary-button {&:extend(.button);background-color: #4CAF50;color: white;border: 2px solid #4CAF50;&:hover {background-color: darken(#4CAF50, 10%);}
}// 次要按钮继承 .button 并添加特定样式
.secondary-button {&:extend(.button);background-color: transparent;color: #4CAF50;border: 2px solid #4CAF50;&:hover {background-color: lighten(#4CAF50, 10%);}
}// 禁用按钮状态,同时继承主要按钮和次要按钮的样式
.disabled-button {&:extend(.primary-button, .secondary-button); // 多重继承opacity: 0.6;cursor: not-allowed;&:hover {background-color: initial; // 取消悬停效果}
}
在这个例子中:
.primary-button
和.secondary-button
分别继承了.button
的所有样式,并添加了各自的颜色方案。.disabled-button
展示了多重继承的概念,它同时继承了.primary-button
和.secondary-button
的样式,并添加了一个禁用状态的效果(例如降低透明度和改变光标样式),并且移除了悬停时的背景颜色变化。
通过这两个示例,你可以看到 LESS 的继承功能如何帮助你组织和简化 CSS 样式表,使代码更加模块化和易于维护。
6. 运算
LESS 支持多种运算,允许你在样式表中进行数学计算,从而动态地生成 CSS 属性值。这使得 LESS 代码更加灵活和强大。以下是两个使用 LESS 运算的示例:
示例 1: 基础尺寸运算
在这个例子中,我们将展示如何使用 LESS 来计算元素的宽度、内边距(padding)等属性,以确保布局的一致性和灵活性。
// 定义基础变量
@base-font-size: 16px;
@base-line-height: 24px;
@container-width: 960px;
@gutter-width: 20px;// 使用运算来创建响应式容器
.container {width: (@container-width - @gutter-width * 2); // 减去两边的内边距margin: 0 auto; // 居中对齐padding: 0 @gutter-width; // 应用左右内边距
}// 使用运算来设置字体大小和行高
.text-block {font-size: @base-font-size + 2; // 比基础字体大2pxline-height: @base-line-height / @base-font-size; // 计算行高比率
}
在这个例子中,我们首先定义了一些基础变量,然后通过这些变量进行了简单的加减乘除运算,以计算出合适的宽度、内边距、字体大小和行高等属性。这样做不仅保持了代码的一致性,还使得调整全局样式变得非常容易——只需要修改几个变量即可影响整个网站的设计。
示例 2: 颜色运算与渐变背景
这个例子展示了如何使用颜色运算来创建不同的色调,并结合渐变背景来增强视觉效果。
// 定义颜色变量
@primary-color: #4CAF50;
@secondary-color: lighten(@primary-color, 20%);
基本按钮样式
// 创建按钮样式,使用颜色运算和渐变背景
.button {background-image: linear-gradient(to bottom,darken(@primary-color, 5%), // 按钮顶部颜色稍微深一点@primary-color // 按钮底部颜色为原始颜色);color: white;padding: 10px 20px;border-radius: 5px;transition: background 0.3s ease;&:hover {background-image: linear-gradient(to bottom,darken(@secondary-color, 5%), // 悬停时顶部颜色基于次要颜色@secondary-color // 悬停时底部颜色为次要颜色);}
}// 使用颜色运算创建不同状态下的按钮变体
.success-button {.button; // 继承基本按钮样式background-image: linear-gradient(to bottom,darken(green, 5%), // 绿色按钮顶部颜色稍微深一点green // 绿色按钮底部颜色);&:hover {background-image: linear-gradient(to bottom,darken(lighten(green, 20%), 5%), // 悬停时绿色按钮顶部颜色稍微深一点lighten(green, 20%) // 悬停时绿色按钮底部颜色);}
}
在这个例子中,我们使用了 darken
和 lighten
函数来进行颜色运算,以创建不同的色调,并且将这些颜色应用于线性渐变背景。此外,.success-button
类展示了如何通过继承 .button
类并覆盖特定属性来创建按钮的不同变体。这种方法可以让你轻松创建一组外观一致但又略有不同的按钮样式。
这两个示例说明了如何利用 LESS 的运算功能来编写更智能、更动态的 CSS 样式表。
7. 函数
LESS 提供了一系列内置函数,用于操作颜色、尺寸、字符串等,这使得样式表的编写更加灵活和动态。下面我将给出两个使用 LESS 内置函数的示例。
示例 1: 颜色函数
在第一个例子中,我们将展示如何使用颜色函数来创建不同色调的颜色,并应用于样式规则中。这些函数可以帮助你轻松地调整颜色的亮度、饱和度等属性。
// 定义基础颜色变量
@base-color: #4CAF50; // 绿色// 使用颜色函数生成不同的颜色变体
body {background-color: lighten(@base-color, 20%); // 背景颜色比基础颜色更亮
}header {color: darken(@base-color, 30%); // 文本颜色比基础颜色更深
}a {color: saturate(@base-color, 20%); // 链接颜色比基础颜色更饱和&:hover {color: desaturate(@base-color, 20%); // 悬停时链接颜色比基础颜色更不饱和}
}.button {background-color: spin(@base-color, 10); // 旋转色相角度,创建按钮背景颜色
}
在这个例子中,我们定义了一个基础颜色 @base-color
,然后通过 lighten
、darken
、saturate
、desaturate
和 spin
函数生成了不同版本的颜色。这样做可以确保整个网站的颜色主题保持一致的同时,又能够根据不同元素的需求进行细微调整。
示例 2: 尺寸和数学函数
在第二个例子中,我们将展示如何使用尺寸和数学函数来计算布局中的间距、宽度等值。这对于创建响应式设计或需要根据某些条件动态调整大小的情况非常有用。
// 定义一些基础尺寸变量
@base-font-size: 16px;
@container-width: 960px;
@gutter-width: 20px;// 使用数学运算和尺寸函数创建响应式布局
.container {width: percentage((@container-width - @gutter-width * 2) * 0.001); // 计算容器宽度百分比margin: 0 auto; // 居中对齐padding: 0 @gutter-width; // 应用左右内边距
}.text-block {font-size: ceil(@base-font-size * 1.2); // 字体大小向上取整line-height: floor(@base-font-size * 1.5); // 行高向下取整margin-bottom: round(@base-font-size * 1.75); // 底部外边距四舍五入
}.grid-item {width: (@container-width / 4) - @gutter-width; // 假设每行有4个网格项,减去内边距float: left;margin-right: @gutter-width; // 右边距为内边距宽度&:nth-child(4n) {margin-right: 0; // 每行最后一个项目右边距为0}
}
在这个例子中:
percentage()
函数用于将像素值转换成相对于某个基准值(这里是1000px)的百分比。ceil()
、floor()
和round()
函数分别用于向上取整、向下取整和四舍五入数值,以确保尺寸符合预期。- 数学运算直接用于计算
.grid-item
的宽度,以适应一个包含四个项目的网格布局。
这两个示例展示了 LESS 内置函数的强大功能,它们可以帮助你更智能地处理颜色和尺寸,从而写出更加灵活和动态的 CSS 样式表。
8. 导入
在 LESS 中,@import
规则用于导入其他 LESS 文件的内容。这有助于将样式表模块化,便于维护和重用代码。以下是两个使用 @import
的示例,展示了如何有效地组织和导入 LESS 文件。
示例 : 基础导入
在这个简单的例子中,我们将展示如何从一个主 LESS 文件中导入变量、混合(mixins)和其他样式规则。假设我们有一个项目结构如下:
styles/
├── variables.less
├── mixins.less
└── main.less
variables.less
// 定义颜色变量
@primary-color: #4CAF50;
@secondary-color: #79BD8F;
@base-font-size: 16px;
mixins.less
// 定义一个圆角边框的混合
.rounded-corners (@radius: 5px) {border-radius: @radius;-webkit-border-radius: @radius;-moz-border-radius: @radius;
}
main.less
// 导入变量文件
@import "variables";
// 导入混合文件
@import "mixins";body {background-color: @primary-color;font-size: @base-font-size;
}.button {.rounded-corners(10px);background-color: @secondary-color;color: white;padding: 10px 20px;
}
在这个例子中,main.less
文件通过 @import
规则引入了 variables.less
和 mixins.less
文件中的定义,然后在样式规则中使用这些定义。这样做可以保持每个文件专注于特定的任务(如定义变量或混合),同时在主文件中组合使用它们。
以上就是LESS的一些基础特性介绍。随着你对LESS的深入学习,你会发现它还有很多高级特性和最佳实践可以帮助你更有效地开发网站或Web应用的样式。
相关文章:
9_less教程 --[CSS预处理]
LESS(Leaner Style Sheets)是一种CSS预处理器,它扩展了CSS语言,增加了变量、嵌套规则、混合(mixins)、函数等功能,使得样式表的编写更加灵活和易于维护。下面是一些LESS的基础教程内容ÿ…...
macOS:安装第三方软件
基于安全性考虑,Mac 系统通常不允许安装那些从网络上下载下来的第三方软件包。 比如,在打开镜像盘时,报错为“该镜像已损坏,请移至废纸篓”,或者打开软件时提示“XXX 已损坏,打不开。您应该将它移到废纸篓”…...
HTML+CSS+Vue3的静态网页,免费开源,可当作作业使用
拿走请吱一声,点个关注吧,代码如下,网页有移动端适配 HTML <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width…...
昇思25天学习打卡营第33天|共赴算力时代
文章目录 一、平台简介二、深度学习模型2.1 处理数据集2.2 模型训练2.3 加载模型 三、共赴算力时代 一、平台简介 昇思大模型平台,就像是AI学习者和开发者的超级基地,这里不仅提供丰富的项目、模型和大模型体验,还有一大堆经典数据集任你挑。…...
IAR环境下STM32静态库编译及使用
IAR环境下STM32静态库编译及使用 前言 最近了解到了STM32的静态库与动态库,在此记录一下STM32静态库的生成与使用。 静态库的作用主要是对代码进行封装及保护,使其他使用者只知其然而不知其所以然,因为封装后的静态库只有.h文件没有.c文件。…...
前端如何性能优化
前端性能优化是提高网页加载速度和响应速度的重要手段。优化前端性能不仅能提升用户体验,还能提高SEO排名,降低服务器负担,节省带宽等。下面是一些常见的前端性能优化方法: 1. 减少 HTTP 请求 每个页面资源(如图片、…...
【开源】为Stable Diffusion工作流程提供的一个更加灵活易用的Web界面
一个开源项目,旨在为Stable Diffusion工作流程提供一个更加灵活、易用的Web界面。这个项目特别适用于图像生成和编辑,具有以下几个显著特点: 分层和非破坏性编辑:OpenDream支持非破坏性编辑,允许用户在保留原始图像数据…...
安全见闻(1)
Target 开阔见闻,不做井底之蛙 Trial 建议 前期小白到中级红队:把python学好 C\C:偏向底层,适合逆向,不适合前期web渗透 编程语言 C语言: 一种通用的、面向过程的编程语言,广泛应用于系统软件和嵌入…...
基于32单片机的RS485综合土壤传感器检测土壤PH、氮磷钾的使用(超详细)
1-3为RS485综合土壤传感器的基本内容 4-5为基于STM32F103C8T6单片机使用RS485传感器检测土壤PH、氮磷钾并显示在OLED显示屏的相关配置内容 注意:本篇文件讲解使用的是PH、氮磷钾四合一RS485综合土壤传感器,但里面的讲解内容适配市面上的所有多合一的RS…...
SQL server学习03-创建和管理数据表
目录 一,SQL server的数据类型 1,基本数据类型 2,自定义数据类型 二,使用T-SQL创建表 1,数据完整性的分类 2,约束的类型 3,创建表时创建约束 4,任务 5,由任务编写…...
Windows 系统下 Python 环境安装
一、引言 Python 作为一种广泛应用的编程语言,在数据分析、人工智能等领域发挥着重要作用。本文将详细介绍在 Windows 系统上安装 Python 环境的步骤。 二、安装前准备 系统要求 Windows 7 及以上版本一般都能支持 Python。硬件方面,通常 2GB 内存、几…...
Redis 在Go项目中的集成和统一管理
本节我们在项目中安装和集成 go-redis,让项目能访问Redis,后面实战项目中的用户认证体系会依赖Redis来实现,像Token、Session这些都是在Redis中存储的。 本节大纲如下: Redis的使用场景有不少,不过有一点需要提醒的…...
Hive——HQL数据定义语言
文章目录 Hive HQL数据查询语言更多大数据资源持续更新中。。。学习目标一、HQL数据定义语言(DDL)概述1、DDL语法的作用2、Hive中DDL使用☆ 创建数据库☆ 查询数据库☆ 切换数据库☆ 修改数据库☆ 删除数据库 二、Hive DDL建表基础1、完整建表语法树2、H…...
Python机器视觉的学习
一、二值化 1.1 二值化图 二值化图:就是将图像中的像素改成只有两种值,其操作的图像必须是灰度图。 1.2 阈值法 阈值法(Thresholding)是一种图像分割技术,旨在根据像素的灰度值或颜色值将图像分成不同的区域。该方法…...
使用navicat新旧版本,连接PostgreSQL高版本报错问题图文解决办法
使用navicat新旧版本,连接PostgreSQL高版本报错问题图文解决办法 一、问题现象:二、出现原因三、解决方法:1、升级Navicat版本:2、使用低版本的postgreSQL:3、修改Navicat的dll二进制文件:navicat版本15nav…...
秒杀抢购场景下实战JVM级别锁与分布式锁
背景历史 在电商系统中,秒杀抢购活动是一种常见的营销手段。它通过设定极低的价格和有限的商品数量,吸引大量用户在特定时间点抢购,从而迅速增加销量、提升品牌曝光度和用户活跃度。然而,这种活动也对系统的性能和稳定性提出了极…...
【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(四)
目录 ARC规则 规则 对象型变量不能作为C语言结构体的成员 显式转换id和void* 属性 数组 ARC规则 规则 在ARC有效的情况下编译源代码必须遵守一定的规则: 主要解释一下最后两条 对象型变量不能作为C语言结构体的成员 要把对象型变量加入到结构体成员中时&a…...
Reactor 响应式编程(第一篇:Reactor核心)
系列文章目录 Reactor 响应式编程(第一篇:Reactor核心) Reactor 响应式编程(第二篇:Spring Webflux) Reactor 响应式编程(第三篇:R2DBC) Reactor 响应式编程(…...
数据挖掘之聚类分析
聚类分析(Clustering Analysis) 是数据挖掘中的一项重要技术,旨在根据对象间的相似性或差异性,将对象分为若干组(簇)。同一簇内的对象相似性较高,而不同簇间的对象差异性较大。聚类分析广泛应用…...
修改uniapp下拉刷新圆圈颜色
直接看图 修改前就是常规的绿色 自定义更符合我们的软件 直接说方法 修改 在App.vue的style样式里添加一行 .uni-page-refresh--refreshing .uni-page-refresh__path{stroke:#FF2442; }我是通过 不执行 uni.stopPullDownRefresh(); 下拉刷新 之后通过F12看出来的 希望可以帮…...
SparkSQL与Hive的整合
文章目录 SparkSQL与Hive的整合1.1. Spark On Hive1.1.1. Hive的准备工作1.1.2. Spark的准备工作1.1.3. Spark代码开发1.1.4. Spark On Hive案例 1.2. Hive On Spark1.3. SparkSQL命令行1.4. SparkSQL分布式查询引擎1.4.1. 开启ThriftServer服务1.4.2. beeline连接ThriftServer…...
电子科技大学考研,计算机与软件专业怎么选择?
电子科技大学在计算机与软件领域具备卓越实力,其毕业生就业前景及薪资水平均颇为可观。因此,学生应依据个人课程专长来选定专业。若各项课程均表现出色,推荐25届考生优先考虑软件专业,因其上岸难度相对较低。 接下来,C…...
MSF(Metasploit Framework)
渗透测试中MSF是一个非常强大的工具,可以用来验证系统漏洞、执行攻击以及开发自定义的漏洞利用代码。以下是使用MSF进行渗透测试的基本步骤: 1.启动MSF 启动MSF控制台。 msfconsole2. 搜索漏洞 在MSF中搜索已知漏洞。 search <vulnerability nam…...
@SpringBootTest 报错: UnsatisfiedDependencyException
Spring Boot Test 报错: UnsatisfiedDependencyException 在使用 SpringBootTest 测试时,出现 UnsatisfiedDependencyException 报错,原因和解决方法如下。 报错原因分析 1. Spring 存在涉及 Bean 没有被添加 Spring Boot 测试中,默认会加…...
QT数据库操作详解
在Qt中,操作数据库通常使用Qt SQL模块,该模块提供了一组类来与数据库进行交互。 数据库连接与查询执行 QSqlDatabase::addDatabase(): 添加一个数据库连接。 QSqlDatabase::open(): 打开数据库连接。 QSqlDatabase::close(): 关闭数据库连接。 QSql…...
Coding Caprice - dynamic programming13
647. 回文子串 class Solution { public:int countSubstrings(string s) {int s_len s.size();vector<int> dp{0};int out(1);for(int i1; i<s_len; i){out;vector<int> dq{i};if(s[i]s[i-1]){dq.push_back(i-1);out;}for(int j:dp){if(j>0&&s[j-1…...
Fastapi教程:使用 aioredis 连接池执行Redis 的高效异步操作
在构建高性能的 Web 应用时,缓存系统是一个至关重要的组成部分。Redis 是最常见的缓存系统之一,它提供了高效的存储与读取机制。然而,在与 Redis 进行频繁交互时,创建和销毁连接可能会成为瓶颈。为了优化这一问题,我们…...
Elasticsearch对象映射
Spring Data Elasticsearch对象映射是将Java对象(域实体)映射到存储在Elasticsearchs中的JSON表示形式并返回的过程。内部用于此映射的类是MappingElasticsearchConverter。 元模型对象映射 基于元模型的方法使用域类型信息对Elasticsearch进行读写操作…...
解决Logitech G hub 无法进入一直转圈的方案(2024.12)
如果你不是最新版本无法加载尝试以下方案:删除AppData 文件夹下的logihub文件夹 具体路径:用户名根据实际你的请情况修改 C:\Users\Administrator\AppData\Local 如果你有通过lua编译脚本,记得备份!! ↓如果你是最新…...
Debezium SchemaNameAdjuster 分析
Debezium SchemaNameAdjuster 分析 目录 1. 概述2. 核心功能3. 实现原理4. 应用场景5. 扩展示例6. 总结1. 概述 SchemaNameAdjuster 是 Debezium 中的一个工具类,主要用于确保 Schema 名称符合 Avro 命名规范。在数据库变更事件被转换为 Kafka 消息时,需要为每个表和字段创…...
聊一下前端常见的图片格式
1. JPEG (JPG) 概述:是一种有损压缩的图像格式,它通过去除图像中一些人类视觉不易察觉的细节来减小文件大小。它支持数百万种颜色,能够很好地呈现照片等色彩丰富的图像内容。优点: 压缩率高:可以在保持相对较好的图像…...
npm : 无法加载文件 D:\nodejs\npm.ps1
问题描述 npm run serve 启动一个Vue项目,报错如下: npm : 无法加载文件 D:\nodejs\npm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/? LinkID135170 中的 about_Execution_Policies。…...
如何使用 Python 实现 TCP / IP 客户端和服务端通信?
如何使用Python实现TCP/IP客户端和服务端通信? 1. TCP/IP通信基础 TCP/IP(传输控制协议/互联网协议)是互联网的基础协议,用于在网络中的计算机之间进行可靠的数据传输。在Python中,可以使用socket模块来实现TCP/IP通…...
IDEA 可视化使用 git rebase 合并分支步骤 使git分支树保持整洁
模拟环境 dev 分支开发完一个功能,需要合并到 master 分支,如果现在直接 merge 合并的话 git分支树会出现杂乱分叉,先把 master 分支 rebase 到 dev git分支树就会是整洁的一条直线 git rebase介绍 rebase:翻译成中文是重新设定,…...
【指南】03 CSC联系外导
确定外导 课题组有合作关系的国外导师与自己研究方向密切相关的国外导师国外高校官网、谷歌学术、Research Gate等平台检索不可以是中国港澳台的高校科研院所或机构注意外导所在高校排名和科研水平可列表记录注意外国签证政策 发送邮件 自我介绍简要介绍CSC介绍自己的研究对…...
axios请求拦截器和响应拦截器,封装naive-ui的 Loading Bar加载条和useMessage消息提示
接之前的博客设计从0开始边做边学,用vue和python做一个博客,非规范化项目,怎么简单怎么弄,跑的起来有啥毛病解决啥毛病(三),目前已经完成了基本的功能demo,但是请求接口不可能每个页…...
联网功耗电流波形
飞行模式下,Wifi 可连接或不可连接的条件对比: 1. 基电流为 3.5 mA 的环境下, 网络不可连接时,会产生一个持续0.72s,平均电流为 54.8 mA 的电流波形 2. 基电流为 6.8 mA 的环境下, 网络可连接时,会产生一个持续4.64s,平均电流为 73.63 mA 的电流波形 …...
Unity 模板测试透视效果(URP)
可以实现笼中窥梦和PicoVR中通过VST局部透视效果。 使用到的Shader: Shader "Unlit/StencilShader" {Properties{[IntRange]_Index("Stencil Index",Range(0,255))0}SubShader{Tags{"RenderType""Opaque""Queue""Geo…...
C 语言动态爱心代码
C 语言动态爱心代码 代码 #include <stdio.h> #include <math.h> #include <windows.h> #include <tchar.h> float f(float x, float y, float z) {float a x * x 9.0f / 4.0f * y * y z * z - 1;return a * a * a - x * x * z * z * z - 9.0f / …...
Linux服务器磁盘满了,清理步骤命令
Linux服务器磁盘满了,磁盘空间不足,清理步骤 1. 检查磁盘使用情况 了解哪些文件和目录占用了大量空间。 使用 df -h查看所有分区的总体使用情况。 使用 du -sh /directory/* | sort -rh | head -n 10 查找特定目录下占用空间最大的前10个子目录或文件。…...
CTFshow-命令执行(Web41-57)
CTFshow-命令执行(Web41-57) CTFWeb-命令执行漏洞过滤的绕过姿势_绕过空格过滤-CSDN博客 总结rce(远程代码执行各种sao姿势)绕过bypass_远程命令执行绕过-CSDN博客 对比两者的源代码,我们发现,cat指令把flag.php的内容导出后依…...
Batch Norm vs Layer Norm:为什么 Transformer 更适合用 Layer Norm?
Batch Norm vs Layer Norm:为什么 Transformer 更适合用 Layer Norm? 1. Batch Norm 和 Layer Norm 的定义与作用 1.1 Batch Normalization (BN) Batch Norm 是一种归一化方法,主要用于加速深层神经网络的训练。它在每个小批量(b…...
jQuery Mobile页面事件
jQuery Mobile页面事件 jQuery Mobile是一个基于jQuery的移动设备友好的Web应用框架,它提供了一套丰富的页面事件,这些事件在移动应用的交互设计中扮演着重要的角色。本文将详细介绍jQuery Mobile中的页面事件,包括它们的触发时机、用途以及如何使用它们来增强移动应用的交…...
接口测试Day01-HTTP请求
概念 接口:系统之间(外部系统与内部系统,内部系统与内部系统)数据交通的通道。 接口测试:校验 接口回发的 响应数据 与 预期结果 是否一致。 接口测试,可以绕过前端界面。直接对 服务器进行测试!…...
使用枚举实现单例模式,不会反序列化破坏攻击,不会被反射破坏攻击。(附带枚举单例的简单实现)
原因分析 1.反序列化方法 ① jdk8中的Enum源码中对反序列化方法进行重写,抛出异常。 java.lang.Enum#readObject方法截图如下 ②java.io.ObjectInputStream#readObject 方法中的 readEnum 方法处理了枚举类型的反序列化,从而确保了枚举的单例特性。 …...
又细又长的马尾:tail
英语里边有一个单词 tail,意为“尾巴”,这应当是众所周知的事情了。 不过,tail 这条尾巴,并不简单,因为它还是一个词根,也就是说 tail 其实是自由词素。 事实上,tail 最初来自 马尾 这样一个概…...
记录:VB6 直接获取 PictureBox 的图像数据到数组 GetDIBits
记得十几年前写几个游戏辅助工具的时候用过这个功能,这几天想直接把图片控件的数据转换为 PNG 文件不想用存出 BMP 文件交换,直接取得图像数据操作即可,但是忘记了当初是怎么做的了,找到个 2007 年的例子好像不太对,运…...
uboot移植网络驱动过程,无法ping通mx6ull和ubuntu问题解决方案
开发板:mx6ull-ALPHA_V2.4 ubuntu版本:20.04 1.现在虚拟机设置中添加网路适配器用于开启桥接模式 2.在编辑中打开“虚拟网络编辑器” 我的电脑本身只有VMnet1和VMnet8,需要底下“添加网络”,增加这个VMnet0 ,并且进行…...
Ubuntu 安装软件被锁:Could not get lock问题解决
今天刚使用虚拟机安装完Ubuntu系统,想要安装所需要的软件是出现了以下错误信息: 错误信息: E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable) E: Unable to lock the administration directory (/…...
S2CRNet 图像测评笔记 图像融合
空间分离曲线渲染网络用于高效高分辨率图像协调 开源地址: https://github.com/stefanLeong/S2CRNet 效果图: 左边是输入,最右边是效果:效果不是很理想,色差问题还在 本地代码: S2CRNet-demos-main...