Sass初探:嵌套只是开始,解锁Sass更多功能

文章目录

  • 1. 安装Sass
  • 2. Sass编译成CSS
  • 3. 设置编译后的CSS格式
  • 4. Sass和Scss有什么区别?
  • 5. Sass变量的使用
  • 6. 选择器嵌套写法
  • 7. Mixin(混合)
  • 8. extend(继承)
  • 9. Sass中的模块化(@import)
  • 10. Sass中的模块化(@use)

1. 安装Sass

要安装 Sass,你可以根据你的开发环境选择合适的方式。以下是几种常见的安装方法:

  • 通过 npm 安装

    如果你使用 Node.js 和 npm,可以通过以下命令全局安装 Sass:

    npm install -g sass
    
  • 通过 yarn 安装

    如果你偏好使用 Yarn,可以执行:

    yarn global add sass
    
  • 全局安装 Sass

    如果你偏好使用 pnpm,可以执行:

    pnpm add -g sass
    
  • 作为项目依赖安装

    如果你希望将 Sass 仅作为特定项目的开发依赖,可以在项目目录下执行:

    pnpm add -D sass
    

安装完成后,你可以通过命令行使用 Sass,或者在构建工具中配置 Sass 的使用。如果你使用的是像 Webpack 这样的模块打包工具,可能还需要安装额外的 loader 来处理 .scss.sass 文件。

验证安装

为了确保 Sass 已正确安装,你可以运行以下命令来检查 Sass 版本:

sass --version

如果安装成功,你应该会看到 Sass 的版本号输出。

在这里插入图片描述

2. Sass编译成CSS

新建如下目录,在style.scss文件中写一点css

.card {
  width: 100%;
  color: blue;
  font-size: 14px;
  font-weight: 500;
}

执行命令:

sass sass/style.scss:css/style.css

则会将sass编译后的css输出到css/style.css文件中,如下图所示:

在这里插入图片描述
监视文件变化
sass --watch 是一个用于监视 Sass 文件更改并自动编译为 CSS 的命令。

  • 命令格式

    sass --watch [输入文件或目录]:[输出文件或目录]
    
  • 示例

    • 监视单个文件:
      sass --watch input.scss:output.css
      
    • 监视整个目录:
      sass --watch scss:css
      

在这里插入图片描述
在这里插入图片描述

当监视之后,当指定的 .scss.sass 文件发生更改时,Sass 编译器会自动重新编译这些文件,并将生成的 CSS 文件保存到指定的输出路径。
这样可以避免手动编译,提高开发效率。

3. 设置编译后的CSS格式

  1. 默认输出样式(nested)
    这是默认的输出样式,嵌套结构与 Sass 文件中的嵌套相似。
.card {
  width: 100%;
  color: blue;
  font-size: 14px; }

.card .title {
  color: #333;
  font-family: "Courier New", Courier, monospace; }
  1. Expanded 样式
    使用 --style expanded 选项,输出格式为扩展样式,每条规则占一行,但仍然保持缩进。
sass -w sass:css -s  expanded

生成的 CSS 如下:

.card {
  width: 100%;
  color: blue;
  font-size: 14px;
}

.card .title {
  color: #333;
  font-family: "Courier New", Courier, monospace;
}
  1. Compact 样式
    使用 --style compact 选项,输出格式为紧凑样式,每个选择器和声明块在一行内。
sass -w sass:css -s  compact

生成的 CSS 如下:

.card { width: 100%; color: blue; font-size: 14px; }
.card .title { color: #333; font-family: "Courier New", Courier, monospace; }
  1. Compressed 样式
    使用 --style compressed 选项,输出格式为压缩样式,所有内容合并为一行,去除不必要的空格和换行。
sass -w sass:css -s compressed

生成的 CSS 如下:

.card{width:100%;color:blue;font-size:14px}.card .title{color:#333;font-family:"Courier New",Courier,monospace}

总结:

  • 默认nested 样式,适合开发时查看。
  • Expanded:每条规则占一行,适合调试。
  • Compact:每个选择器和声明块在一行内,减少文件大小。
  • Compressed:最小化文件大小,适合生产环境。

4. Sass和Scss有什么区别?

Sass 和 SCSS 是 Sass(Syntactically Awesome Style Sheets)的两种不同的语法格式。它们的主要区别在于语法结构和书写方式,但编译后的输出都是标准的 CSS。以下是它们的主要区别:

  1. 语法格式
  • Sass (缩进语法)

    • 文件扩展名:.sass
    • 使用缩进来表示嵌套关系,不需要大括号 {} 和分号 ;
    • 更简洁,适合喜欢 Python 或 Haml 风格的人。

    示例

    .card
      width: 100%
      color: blue
      font-size: 14px
    
      .title
        color: #333
        font-family: "Courier New", Courier, monospace
    
  • SCSS (Sassy CSS)

    • 文件扩展名:.scss
    • 类似于标准的 CSS 语法,使用大括号 {} 和分号 ;
    • 更接近传统的 CSS 写法,容易上手,适合从 CSS 迁移过来的开发者。

    示例

    .card {
      width: 100%;
      color: blue;
      font-size: 14px;
    
      .title {
        color: #333;
        font-family: "Courier New", Courier, monospace;
      }
    }
    
  1. 兼容性
  • SCSS:完全兼容 CSS 语法,可以直接将现有的 CSS 文件重命名为 .scss 并继续使用,无需修改内容。
  • Sass:不兼容 CSS 语法,需要转换为缩进格式,不能直接使用标准的 CSS 语法。
  1. 社区支持和工具链
  • SCSS:由于其与 CSS 的相似性,SCSS 更广泛使用,社区支持更好,大多数现代工具链(如 Webpack、Gulp 等)默认支持 SCSS。
  • Sass:虽然功能相同,但由于语法差异,使用较少,某些工具可能需要额外配置才能支持。
  1. 选择建议
  • 如果你是新手或从 CSS 迁移过来,推荐使用 SCSS,因为它更直观且易于理解。
  • 如果你喜欢简洁的缩进语法,并且愿意接受一些学习成本,可以选择 Sass

总结

  • Sass:缩进语法,无大括号和分号,简洁但不兼容 CSS。
  • SCSS:类似 CSS 的语法,兼容 CSS,更容易上手和维护。

5. Sass变量的使用

$primary-color: #333;
$primary-border: 1px solid $primary-color;
$primary-background: #f5f5f5;

.card {
  width: 200px;
  height: 200px;
  font-size: 14px;
  color: $primary-color;
  border: $primary-border;
  background-color: $primary-background;
}

6. 选择器嵌套写法

  1. 结构嵌套
<nav>
  <ul>
    <li class="item active">
      <a href="#">首页</a>
    </li>
    <li class="item">
      <a href="#">关于</a>
    </li>
  </ul>
</nav>
nav {
  background: #f5f5f5;
  ul {
    li {
      a {
        &:hover {
          color: blue;
        }
      }
      &.item {
        color: #333;
      }

      &.active {
        a {
          color: red;
        }
      }
    }
  }
}

  1. 属性嵌套
    嵌套前,这些属性都有共同的部分font
body {
  font-size: 14px;
  font-weight: 400;
  font-family: "Courier New", Courier, monospace;
}

嵌套后:

body {
  font: {
    font-size: 14px;
    font-weight: 400;
    font-family: "Courier New", Courier, monospace;
  }
}

输出:
在这里插入图片描述

7. Mixin(混合)

Sass 中的 @mixin 是一种非常强大的功能,它允许你定义一组样式规则,并在多个地方复用这些规则。这不仅提高了代码的可维护性,还减少了重复代码。

  1. 定义和使用 @mixin

定义 @mixin

使用 @mixin 关键字定义一个 mixin,后面跟上 mixin 的名称和括号(即使没有参数也需包含括号)。可以在括号中传递参数,以增强灵活性。

示例:

@mixin font-settings($size, $weight, $family) {
  font-size: $size;
  font-weight: $weight;
  font-family: $family;
}

使用 @include

使用 @include 关键字来应用 mixin。可以传递参数值给 mixin,使其更具动态性。

示例:

body {
  @include font-settings(14px, 400, "Courier New", Courier, monospace);
}
  1. 带默认参数的 @mixin

你可以为 mixin 的参数设置默认值,这样在调用时可以选择性地传递参数。

示例:

@mixin font-settings($size: 16px, $weight: 400, $family: "Arial", sans-serif) {
  font-size: $size;
  font-weight: $weight;
  font-family: $family;
}

body {
  @include font-settings(14px, 400, "Courier New", Courier, monospace);
}

h1 {
  @include font-settings($size: 24px, $weight: bold);
}
  1. 带可变参数的 @mixin

有时你可能需要传递不定数量的参数。可以使用 $args... 语法来实现。

示例:

@mixin font-settings($size, $weight, $family...) {
  font-size: $size;
  font-weight: $weight;
  font-family: $family;
}

body {
  @include font-settings(14px, 400, "Courier New", Courier, monospace);
}
  1. 带条件逻辑的 @mixin

可以在 mixin 内部使用条件语句(如 @if@else)来根据传入的参数执行不同的逻辑。

示例:

@mixin font-settings($size, $weight, $family, $line-height: null) {
  font-size: $size;
  font-weight: $weight;
  font-family: $family;

  @if $line-height {
    line-height: $line-height;
  }
}

body {
  @include font-settings(14px, 400, "Courier New", Courier, monospace, 1.5);
}

p {
  @include font-settings(16px, 400, "Arial", sans-serif);
}
  1. 结合选择器嵌套使用 @mixin

你可以在嵌套的选择器中使用 mixin,以保持代码结构清晰。

示例:

@mixin font-settings($size, $weight, $family) {
  font-size: $size;
  font-weight: $weight;
  font-family: $family;
}

nav {
  ul {
    li {
      a {
        @include font-settings(14px, 400, "Courier New", Courier, monospace);

        &:hover {
          color: purple;
        }
      }

      &.item {
        background-color: red;
      }
    }
  }
}
  1. 应用多个mixin
 <nav>
      <ul>
        <li><a href="#">导航1</a></li>
        <li><a href="#">导航2</a></li>
        <li><a href="#">导航3</a></li>
        <li><a href="#">导航4</a></li>
        <li><a href="#">导航5</a></li>
        <li><a href="#">导航6</a></li>
      </ul>
    </nav>
@mixin flex-settings($flex-direction, $flex-wrap, $justify-content, $align-items, $gap: 0) {
  display: flex;
  flex-direction: $flex-direction;
  flex-wrap: $flex-wrap;
  justify-content: $justify-content;
  align-items: $align-items;

  @if $gap != 0 {
    gap: $gap;
  }
}

@mixin font-settings($font-size: 16px, $font-weight: 400, $font-family...) {
  font: {
    size: $font-size;
    weight: $font-weight;
    family: $font-family;
  }
}
nav {
  width: 400px;
  ul {
    width: 100%;
    @include flex-settings(column, nowrap, space-between, center, 30px);
    li {
      list-style: none;
      // 去除下划线
      a {
        display: block;
        text-decoration: none;
        @include font-settings(16px, 700, "微软雅黑", Arial);
      }
    }
  }
}

输出的CSS:

@charset "UTF-8";
nav {
  width: 400px;
}
nav ul {
  width: 100%;
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;
  gap: 30px;
}
nav ul li {
  list-style: none;
}
nav ul li a {
  display: block;
  text-decoration: none;
  font-size: 16px;
  font-weight: 700;
  font-family: "微软雅黑", Arial;
}

/*# sourceMappingURL=style.css.map */

总结

  • 定义 @mixin:使用 @mixin 关键字定义一组可复用的样式规则。
  • 使用 @include:通过 @include 关键字应用 mixin。
  • 参数化:可以通过传递参数使 mixin 更具灵活性。
  • 默认参数:为 mixin 参数设置默认值,简化调用。
  • 条件逻辑:在 mixin 内部使用条件语句实现更复杂的逻辑。
  • 选择器嵌套:在嵌套选择器中使用 mixin 保持代码结构清晰。

8. extend(继承)

在 Sass 中,@extend 指令用于将一个选择器的样式继承到另一个选择器中。这可以帮助你避免重复代码,并且可以使样式表更加模块化和易于维护。

  1. 基本用法

@extend 允许一个选择器继承另一个选择器的所有样式规则。目标选择器必须在样式表中已经定义。

示例:

.card1 {
  width: 300px;
  height: 300px;
  background-color: blue;
  a {
    font-weight: 700;
    color: white;
  }
}

.card2 {
  @extend .card1;
  background-color: red;
  font-size: 30px;
}

编译后的 CSS:

.card1, .card2 {
  width: 300px;
  height: 300px;
  background-color: blue;
}

.card1 a, .card2 a {
  font-weight: 700;
  color: white;
}

.card2 {
  background-color: red;
  font-size: 30px;
}
  1. 注意事项
  • 目标选择器必须存在@extend 的目标选择器(如 .card1)必须在样式表中已经定义,否则会报错。
  • 避免不必要的继承:过度使用 @extend 可能会导致生成的 CSS 文件变得庞大且难以维护。确保只在必要时使用。
  • 选择器合并@extend 会将继承的选择器合并在一起,这有助于减少重复的样式规则。
  1. 使用 !optional 关键字

如果你不确定目标选择器是否存在,可以使用 !optional 关键字来避免编译错误。

示例:

.card2 {
  @extend .card1 !optional;
  background-color: red;
  font-size: 30px;
}
  1. 嵌套选择器中的 @extend

你可以在嵌套选择器中使用 @extend,以保持代码结构清晰。

示例:

.card1 {
  width: 300px;
  height: 300px;
  background-color: blue;

  a {
    font-weight: 700;
    color: white;
  }
}

.card2 {
  @extend .card1;

  background-color: red;
  font-size: 30px;

  a {
    color: yellow;
  }
}

编译后的 CSS:

.card1, .card2 {
  width: 300px;
  height: 300px;
  background-color: blue;
}

.card1 a, .card2 a {
  font-weight: 700;
  color: white;
}

.card2 {
  background-color: red;
  font-size: 30px;
}

.card2 a {
  color: yellow;
}
  1. 避免样式冲突

确保继承的选择器不会导致样式冲突。例如,.card2 中的 background-color 会覆盖 .card1 中的 background-color

示例:

.card1 {
  width: 300px;
  height: 300px;
  background-color: blue;

  a {
    font-weight: 700;
    color: white;
  }
}

.card2 {
  @extend .card1;
  background-color: red;
  font-size: 30px;
}

编译后的 CSS:

.card1, .card2 {
  width: 300px;
  height: 300px;
  background-color: blue;
}

.card1 a, .card2 a {
  font-weight: 700;
  color: white;
}

.card2 {
  background-color: red;
  font-size: 30px;
}

总结

  • 基本用法:使用 @extend 将一个选择器的样式继承到另一个选择器中。
  • 注意事项:确保目标选择器存在,避免不必要的继承,注意选择器合并。
  • !optional 关键字:使用 !optional 避免目标选择器不存在时的编译错误。
  • 嵌套选择器:可以在嵌套选择器中使用 @extend,保持代码结构清晰。
  • 避免冲突:确保继承的选择器不会导致样式冲突。

9. Sass中的模块化(@import)

我们都知道,在CSS中也存在@import指令,在说明Sass中的模块化之前,需要对两个关键概念有所了解,即编译时运行时

编译时(Compile Time)

编译时 是指在代码被实际运行之前,通过编译器或预处理器将源代码转换为目标代码的过程。对于 Sass 文件,编译时是指将 .scss 文件转换为 .css 文件的过程。

特点:

  • 静态处理:编译时处理的是静态代码,不涉及实际的运行环境。
  • 优化性能:编译器可以进行各种优化,如合并文件、压缩代码等。
  • 错误检测:编译时可以检测和报告语法错误和其他问题。
  • 资源合并:可以将多个文件合并成一个文件,减少 HTTP 请求。

运行时(Run Time)

运行时 是指代码在实际运行环境中执行的时间点。对于前端开发,运行时通常是指浏览器加载和执行 HTML、CSS 和 JavaScript 文件的时间。

特点:

  • 动态处理:运行时处理的是动态内容,涉及实际的用户交互和环境变化。
  • 性能影响:运行时的性能直接影响用户体验。
  • 资源加载:浏览器需要加载和解析所有依赖的资源文件。
  • 错误处理:运行时错误通常需要通过浏览器的开发者工具进行调试。

注意:当前项目的目录结构如下,以下说明都会基于这个目录结构说明。
在这里插入图片描述

CSS中的模块化:

@import url("../base/index.css");
// 或者
// @import "../base/index.css";
.container {
  background-color: black;
}

.card1 {
  width: 300px;
  height: 300px;
  background-color: blue;
  a {
    font-weight: 700;
    color: white;
  }
}

.card2 {
  @extend .card1;
  background-color: red;
  font-size: 30px;
}

编译后的结果:

在这里插入图片描述
运行后的结果:
在这里插入图片描述
这里说明,CSSd的模块化在编译时并不会将引入的css文件合并成一个css文件,在运行时在浏览器额外发起了http请求。这会增加页面加载时间,尤其是在网络条件较差的情况下。

Sass中的模块化:

// scss文件不用写扩展名
@import "../base/index";

.container {
  background-color: black;
}

.card1 {
  width: 300px;
  height: 300px;
  background-color: blue;
  a {
    font-weight: 700;
    color: white;
  }
}

.card2 {
  @extend .card1;
  background-color: red;
  font-size: 30px;
}

编译后的结果:
在这里插入图片描述
运行后的结果:

在这里插入图片描述

这里说明,Sass的模块化在编译时会将css合并到一个文件中,不会导致额外的http请求。

注意点:

不要在scss文件中通过CSS的语法@import url()引入scss文件,例如@import url("./_reset.scss");。此时会在编译时将该导入语句原样输出,不会报错,但是在浏览器中运行时会报错,因为浏览器不认识scss语法。

10. Sass中的模块化(@use)

Sass中的@import指令会存在以下三个问题:

  1. 混淆: 由于css中也存在@import指令,而在css中的@import是运行时的,sass中的@import是编译时的;使用时还需要区分这两者的区别,增加了心智负担。
  2. 污染:@import导入的变量会污染全局。
  3. 没有自己的私有变量。

@use的用法:

@use "variables" as vars; // 这里默认的命名空间是variables, 重新设置命名空间为vars

.button {
	color: vars.$primary-color; // 使用模块中定义的变量
}

$-radius: 3px; // 设置模块的私有成员 - 或 _ 都可以

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux:文件描述符fd、系统调用open

目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说&#xff0c;如果在电脑上新建了一个空白文档&#xff0…

CKA | Docker容器技术概述

往期文章推荐 【新版】容器&Kubernetes认证管理员&#xff08;CKA&#xff09;课程介绍 k8s-CKS认证课程介绍 【K8s】Kubernetes 词汇表 什么是Docker容器&#xff1f; 3个管理多k8s集群实用工具 K8S-CKA课程试听:Container 概述 CKA课程 | Docker容器技术概述 今日分…

如何在Ubuntu上安装Cmake

前言 ​ 本文主要阐述如何在Ubuntu22.04上面安装cmake&#xff0c;具体可看下面的操作。 正文 一、环境 Ubuntu22.04 cmake-3.31.4.tar.gz 二、步骤 参考这个方案&#xff1a; 【运维】Ubuntu如何安装最新版本的Cmake&#xff0c;编译安装Cmake&#xff0c;直接命令安装…

DETR论文阅读

1. 动机 传统的目标检测任务需要大量的人工先验知识&#xff0c;例如预定义的先验anchor&#xff0c;NMS后处理策略等。这些人工先验知识引入了很多人为因素&#xff0c;且较难处理。如果能够端到端到直接生成目标检测结果&#xff0c;将会使问题变得很优雅。 2. 主要贡献 提…

【算法】枚举

枚举 普通枚举1.铺地毯2.回文日期3.扫雷 二进制枚举1.子集2.费解的开关3.Even Parity 顾名思义&#xff0c;就是把所有情况全都罗列出来&#xff0c;然后找出符合题目要求的那一个。因此&#xff0c;枚举是一种纯暴力的算法。一般情况下&#xff0c;枚举策略都是会超时的。此时…

我国无人机新增实名登记110.3 万架,累计完成飞行2666万小时

据央视新闻从中国民航局了解到&#xff0c;2024 年我国全年新增通航企业 145 家、通用机场 26 个&#xff0c;颁发无人驾驶航空器型号合格证 6 个、新增实名登记无人机 110.3 万架&#xff0c;无人机运营单位总数超过 2 万家&#xff0c;累计完成无人机飞行 2666 万小时&#x…

Redis | 第6章 事件与客户端《Redis设计与实现》

前言 参考资料&#xff1a;《Redis设计与实现 第二版》&#xff1b; 第二部分为单机数据库的实现&#xff0c;主要由以下模块组成&#xff1a;数据库、持久化、事件、客户端与服务器&#xff1b; 本篇将介绍 Redis 中的事件与客户端&#xff0c;其中事件有两种&#xff1a;文件…

SpringBoot源码解析(七):应用上下文结构体系

SpringBoot源码系列文章 SpringBoot源码解析(一)&#xff1a;SpringApplication构造方法 SpringBoot源码解析(二)&#xff1a;引导上下文DefaultBootstrapContext SpringBoot源码解析(三)&#xff1a;启动开始阶段 SpringBoot源码解析(四)&#xff1a;解析应用参数args Sp…

【Flink系列】4. Flink运行时架构

4. Flink运行时架构 4.1 系统架构 Flink运行时架构——Standalone会话模式为例 1&#xff09;作业管理器&#xff08;JobManager&#xff09; JobManager是一个Flink集群中任务管理和调度的核心&#xff0c;是控制应用执行的主进程。也就是说&#xff0c;每个应用都应该被…

thinkphp6 + redis实现大数据导出excel超时或内存溢出问题解决方案

redis下载安装&#xff08;window版本&#xff09; 参考地址&#xff1a;https://blog.csdn.net/Ci1693840306/article/details/144214215 php安装redis扩展 参考链接&#xff1a;https://blog.csdn.net/jianchenn/article/details/106144313 解决思路&#xff1a;&#xff0…

HTML中最基本的东西

本文内容的标签&#xff0c;将是看懂HTML的最基本之基本 &#xff0c;是跟您在写文章时候一样内容。一般想掌握极其容易&#xff0c;但是也要懂得如何使用&#xff0c;过目不忘&#xff0c;为手熟尔。才是我们学习的最终目的。其实边看边敲都行&#xff0c;或者是边看边复制粘贴…

【大前端】Vue3 工程化项目使用详解

目录 一、前言 二、前置准备 2.1 环境准备 2.1.1 create-vue功能 2.1.2 nodejs环境 2.1.3 配置nodejs的环境变量 2.1.4 更换安装包的源 三、工程化项目创建与启动过程 3.1 创建工程化项目 3.2 项目初始化 3.3 项目启动 3.4 核心文件说明 四、VUE两种不同的API风格 …

-bash: /java: cannot execute binary file

在linux安装jdk报错 -bash: /java: cannot execute binary file 原因是jdk安装包和linux的不一致 程序员的面试宝典&#xff0c;一个免费的刷题平台

业务幂等性技术架构体系之消息幂等深入剖析

在系统中当使用消息队列时&#xff0c;无论做哪种技术选型&#xff0c;有很多问题是无论如何也不能忽视的&#xff0c;如&#xff1a;消息必达、消息幂等等。本文以典型的RabbitMQ为例&#xff0c;讲解如何保证消息幂等的可实施解决方案&#xff0c;其他MQ选型均可参考。 一、…

RustDesk ID更新脚本

RustDesk ID更新脚本 此PowerShell脚本自动更新RustDesk ID和密码&#xff0c;并将信息安全地存储在Bitwarden中。 特点 使用以下选项更新RustDesk ID&#xff1a; 使用系统主机名生成一个随机的9位数输入自定义值 为RustDesk生成新的随机密码将RustDesk ID和密码安全地存储…

QT开发技术 【基于TinyXml2的对类进行序列化和反序列化】一

一、对TinyXml2 进行封装 使用宏 实现序列化和反序列化 思路&#xff1a; 利用宏增加一个类函数&#xff0c;使用序列化器调用函数进行序列化 封装宏示例 #define XML_SERIALIZER_BEGIN(ClassName) \ public: \virtual void ToXml(XMLElement* parentElem, bool bSerialize …

金仓Kingbase客户端KStudio报OOM:Java heap space socketTimeout

找到Kingbase\ES\V8\KESRealPro\V008R006C006B0021\ClientTools\guitools\KStudio\KStudio.ini 修改JVM参数&#xff1a; 默认值&#xff1a; -Xms512m -Xmx1024m 改为&#xff1a; -Xms1024m -Xmx2048m -XX:MaxPermSize512m SQL查询报错&#xff1a;An I/O error occurred …

Redis--21--大Key问题解决方案

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Redis--20--大Key问题解析 一、如何发现Redis大Key1. 使用Redis命令行工具**MEMORY USAGE****RANDOMKEY****DEBUG OBJECT****SCAN命令****redis-cli 工具&#…

【进程与线程】进程的状态

在操作系统中&#xff0c;进程是执行中的程序实例。进程在其生命周期中会经历不同的状态&#xff0c;操作系统根据进程的执行情况和资源调度&#xff0c;将进程划分为多个状态。 这些状态帮助操作系统更加高效地管理 CPU 和系统资源。 进程的状态&#xff1a;就绪态&#xff0…

K8S开启/关闭审计日志

K8S默认禁用审计 开启/关闭 k8s 审计日志 默认 Kubernetes 集群不会输出审计日志信息。通过以下配置&#xff0c;可以开启 Kubernetes 的审计日志功能。 准备审计日志的 Policy 文件配置 API 服务器&#xff0c;开启审计日志重启并验证 准备审计日志 Policy 文件 apiVersio…