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

SonarQube 集成教程

SonarQube 集成教程

SonarQube(原名 Sonar) [3] 是由 SonarSource 开发的一个开源平台,使用java开发,用于对代码质量进行持续检查,通过静态分析代码自动进行审查,以检测 29 种编程语言的错误和代码异味。SonarQube 提供关于重复代码、编码标准、单元测试、代码覆盖率、代码复杂度、注释、错误和安全建议的报告。

如果需要管理整个团队的代码质量,并进行有效跟踪,那么SonarQube相当适合。

以下是 SonarQube 集成教程,涵盖本地部署、项目扫描(以 Java/PHP 为例)的集成流程。

1. SonarQube 本地部署

1.1 快速启动(Docker 方式)

# 创建网络和容器
docker network create sonarqube-net# 启动 PostgreSQL 数据库
docker run -d --name sonarqube-db --network sonarqube-net \-e POSTGRES_USER=sonar -e POSTGRES_PASSWORD=sonar \postgres:13# 启动 SonarQube 服务
docker run -d --name sonarqube --network sonarqube-net \-p 9000:9000 -e SONARQUBE_JDBC_URL=jdbc:postgresql://sonarqube-db:5432/sonar \-e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar \-v sonarqube_data:/opt/sonarqube/data \-v sonarqube_extensions:/opt/sonarqube/extensions \-v sonarqube_logs:/opt/sonarqube/logs \sonarqube:community
  • 访问 http://localhost:9000,默认账号:admin/admin

查看docker启动日志

docker -logs sonarqube

1.2 手动安装(非 Docker)

  • 下载 SonarQube:https://www.sonarsource.com/products/sonarqube/downloads/
  • 配置数据库(PostgreSQL/MySQL/Oracle)。
  • 启动:./bin/[OS]/sonar.sh start

1.3 插件安装

在应用市场中安装插件

如下我安装了中文包插件
在这里插入图片描述


2. 项目扫描

2.1 Java 项目Maven 扫描

步骤 1:配置 Maven

pom.xml 中添加 SonarQube 插件:

<build><plugins><plugin><groupId>org.sonarsource.scanner.maven</groupId><artifactId>sonar-maven-plugin</artifactId><version>5.1.0.4751</version></plugin></plugins>
</build>

这个版本需要和SonarQube的版本对应,不然会报错。

5.1.0.4751对应的jdk11+,3.6.0.1398对应的是jdk8。需要和自己安装的SonarQube对应。

步骤 2:执行扫描

在这里插入图片描述

# 指定 SonarQube 地址和令牌(需先在 SonarQube 界面生成)
mvn sonar:sonar \-Dsonar.host.url=http://localhost:9000 \-Dsonar.login=生成的令牌

2.2 使用SonarScanner进行扫描

步骤 1:安装 PHP 插件
  • 一般默认就有
步骤 2:使用 SonarScanner

SonarScanner使用的jdk版本需要和SonarQube的jdk版本对应上。

下载 SonarScanner:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/

在项目中创建sonar-project.properties文件

# 配置 sonar-project.properties
sonar.projectKey=my-php-project
sonar.sources=src
步骤 3:运行扫描
sonar-scanner \-Dsonar.host.url=http://localhost:9000 \-Dsonar.login=生成的令牌

如果你不想配置sonar-project.properties或者想覆盖sonar-project.properties,可以在命令后面增加如

-Dsonar.projectKey=my-php-project1

这样配置的优先级会高于sonar-project.properties的配置

2.3 使用docker扫描

使用docker的话使用更加方便,和上面步骤一样

步骤 1:安装 PHP 插件
  • 一般默认就有
步骤 2:使用 SonarScanner

在项目中创建sonar-project.properties文件

# 配置 sonar-project.properties
sonar.projectKey=my-php-project
sonar.sources=src
步骤 3:运行扫描
docker run --rm \-v ${YOUR_CACHE_DIR}:/opt/sonar-scanner/.sonar/cache \-v ${YOUR_REPO}:/usr/src \-e SONAR_HOST_URL="http://localhost:9000" \sonarsource/sonar-scanner-cli \-Dsonar.login=生成的令牌

3. 查看报告

扫描完成后,访问 SonarQube 的 Web 界面(如 http://localhost:9000):

  • 仪表盘:项目健康状态(漏洞、坏味道、覆盖率等)。
  • 问题分类:按严重程度(Blocker/Critical/Major)筛选。
  • 历史趋势:代码质量随时间变化。
  • 在这里插入图片描述

4. 高级配置

  • 自定义规则:在 Quality Profiles 中覆盖默认规则。

  • 排除文件:在 sonar-project.properties 中添加:

    sonar.exclusions=**/test/**, **/vendor/**
    
  • 多模块项目:为每个模块指定扫描路径。 可以查看下面的java多模块配置


5.常见问题

1.es启动失败

一般会有如下报错

bootstrap check failure [1] of [1]: max virtual memory areas vm.max_map_count [65530] is too low

原因是 Elasticsearch 的 vm.max_map_count 参数值太低,需要从默认的 65530 提升到至少 262144。以下是解决方案:

Linux/macOS

编辑 /etc/sysctl.conf 文件,添加以下行:

vm.max_map_count=262144

然后执行:

sudo sysctl -p  # 重新加载配置
Windows(WSL2)

%USERPROFILE%\.wslconfig 文件中添加:

[wsl2]
kernelCommandLine = "sysctl.vm.max_map_count=262144"

重启 WSL:

wsl --shutdown

2.语言未安装

一般会有如下报错

There are no languages available. You cannot create a new profile.

解决方案:
需要到插件市场安装对应的语言

3.sonar-maven-plugin 与运行环境不兼容

一般会有如下报错:

org/sonarsource/scanner/maven/SonarQubeMojo has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0

这是你需要更新sonar-maven-plugin的版本,使其和你的jdk版本适应

  • class file version 55.0 → 编译插件使用的 JDK 11。
  • up to 52.0 → 当前运行的 JDK 8。

兼容性表

Java 版本Class File Version
JDK 852.0
JDK 1155.0

方案如下:

1. 项目升级 Java 版本

2.降级 SonarQube 插件版本(兼容 JDK 8)

4.项目的JDK和SonarQube的JDK使用的版本不一致

mvn sonar:sonar \-Dsonar.host.url=http://localhost:9000 \-Dsonar.login=生成的令牌

如果你的项目使用的环境是JDK8,而SonarQube使用的是JDK11,那么也会出现上面问题点3的报错。

方案如下:

1.将SonarQube改为使用你环境对应JDK的版本,如JDK8对应最后一个SonarQube 的版本为7.8

docker run -d --name sonarqube --network sonarqube-net \-p 9000:9000 -e SONARQUBE_JDBC_URL=jdbc:postgresql://sonarqube-db:5432/sonar \-e SONARQUBE_JDBC_USERNAME=sonar -e SONARQUBE_JDBC_PASSWORD=sonar \-v sonarqube_data:/opt/sonarqube/data \-v sonarqube_extensions:/opt/sonarqube/extensions \-v sonarqube_logs:/opt/sonarqube/logs \sonarqube:7.8-community

2.将编译和扫描拆分

在本例中,你可以使用JDK8进行编译,然后使用JDK11进行扫描。

建议使用docker,无需导致配置污染。

# 1. 用JDK 8构建
docker run --rm -v "$(pwd)":/usr/src -w /usr/src maven:3.8.6-openjdk-8 \mvn clean package# 2. 用JDK 11扫描
docker run --rm -v "$(pwd)":/usr/src -w /usr/src maven:3.8.6-opnejdk-11 \mvn sonar:sonar \-Dsonar.host.url=http://your-sonarqube-server:9000 \-Dsonar.login=your-token-Dsonar.java.binaries=target/classes

或者使用和sonarqube对应的sonar-scanner-cli进行扫描。

先在项目中配置sonar-project.properties。下面是多模块java项目的配置样例:

# 自定义项目唯一标识
sonar.projectKey=cfw-project
# 自定义项目名字
sonar.projectName=cfw-project
sonar.sourceEncoding=UTF-8
# 自定义版本
sonar.projectVersion=v3.2
sonar.ce.workerCount=1
sonar.language=java
sonar.forceAnalysis=true
sonar.ce.workerCount=1
sonar.java.binaries=target/classes
sonar.sources=src/main/java
# 指定SonarQube服务地址
sonar.host.url=http://192.168.1.107:9000
# SonarQube服务生成的登录令牌
sonar.login=88288b599e11b4d86a23ge6r85e81774619c2c8b
# sonar.login相当于登录用户 & 密码
# 多个子工程用逗号隔开
sonar.modules=module-One,module-Two
# 子工程名字
module-One.sonar.projectName=module-One
module-Two.sonar.projectName=module-Two
sonar.scm.provider=git
sonar.java.libraries=
# 1. 用JDK 8构建
docker run --rm -v "$(pwd)":/usr/src -w /usr/src maven:3.8.6-openjdk-8 \mvn clean package# 2. 用sonar-scanner-cli扫描
docker run --rm \-v ${YOUR_REPO}:/usr/src \-e SONAR_HOST_URL="http://${SONARQUBE_URL}" \sonarsource/sonar-scanner-cli

6.案例场景

1.java项目升级

某公司在进行项目升级时,决定从JDK 8迁移到JDK 11。为了确保Sonar扫描过程的顺利进行,他们采取了以下步骤:

  • 在所有开发人员的工作站上安装JDK 11,并统一配置JAVA_HOME
  • 更新项目的pom.xml文件,指定maven.compiler.sourcemaven.compiler.target为11。
  • 在SonarQube服务器上设置JAVA_HOME为JDK 11的路径。
  • 在Jenkins/其他CICD流水线上构建代理上安装JDK 11,并在构建配置中设置环境变量。

通过这些步骤,他们成功完成了JDK版本的迁移,并确保了Sonar扫描过程的顺利进行。

将项目JDK和Sonar的JDK版本保持一致

2. 多个不同语言项目

公司存在java,PHP,python,Go项目。

  • java项目使用mvn方式进行扫描,过程同案例1
  • PHP,python,Go项目使用sonar-scanner-cli的方式进行扫描
  • PHP,python,Go项目中需配置好sonar-project.properties

3.多个JDK版本项目

公司可能存在使用不同JDK版本的项目如果JDK8和jDK11共存。

由于sonar-scanner扫描的是class文件,因此可以分两次进行。

  • 在构建阶段,使用JDK 8的Docker镜像进行编译和测试。
  • 在Sonar扫描阶段,使用JDK 11的Docker镜像运行Sonar Scanner。

tips:

sonar-scanner-cli的方式适用于几乎所有语言。

java项目建议使用 mvn 进行扫描

常用的命令:

//运行一个docker容器
docker run -d --name sonartest sonarqube:7.8-community
//停止容器
docker stop sonartest
//删除容器
docker rm sonartest
//将容器内重要文件复制到宿主机
docker cp sonartest:/opt/sonarqube/conf /data/volume/sonarqube
docker cp sonartest:/opt/sonarqube/data /data/volume/sonarqube
docker cp sonartest:/opt/sonarqube/logs /data/volume/sonarqube
docker cp sonartest:/opt/sonarqube/extensions /data/volume/sonarqube
//查看docker日志
docker -logs sonarqube

原文:
https://mp.weixin.qq.com/s/S85N4WvLT4vAChfwzmidVA

参考:

https://www.jianshu.com/p/1a4b8bdf12f8

https://www.tcxurun.cn/2024/12/10/%e4%bd%bf%e7%94%a8docker%e6%96%b9%e5%bc%8f%e5%ae%89%e8%a3%85sonar-7-8-%e6%89%ab%e6%8f%8fjdk1-8%e9%a1%b9%e7%9b%ae/

https://docs.pingcode.com/baike/2878392

相关文章:

SonarQube 集成教程

SonarQube 集成教程 SonarQube&#xff08;原名 Sonar&#xff09; [3] 是由 SonarSource 开发的一个开源平台&#xff0c;使用java开发&#xff0c;用于对代码质量进行持续检查&#xff0c;通过静态分析代码自动进行审查&#xff0c;以检测 29 种编程语言的错误和代码异味。S…...

最优树搜索策略

1. Hill Climbing (爬山算法) 1.1 算法思路 爬山算法是一种简单的局部搜索算法&#xff0c;旨在通过不断选择当前状态的“最优”邻居来寻找全局最优解。该算法的核心思想是通过不断朝着某个方向改进来寻找解&#xff0c;直到没有更好的邻居可选为止。 具体步骤&#xff1a; …...

java基础问题

1. 数组扩充 new ArrayList(20) 扩容问题 这样初始化&#xff0c;没有发生扩容。在使用时若容量不够用了才会发生扩容。 当容量超过20个时会发生1.5倍原容量的扩容 如&#xff1a;容量加到 < 30 个。会扩容到 30 个。 若容量加到 > 30个&#xff0c;如31个&#xff0…...

2025年人工智能指数报告(斯坦福)重点整理

在今天的AI简报中&#xff0c;我将分享斯坦福大学以人为本人工智能研究所&#xff08;HAI&#xff09;于2025年4月7日发布的《2025年AI指数报告》的精彩内容。这是该年度报告的第八版&#xff0c;它提供了全球AI格局的详细信息和分析&#xff0c;包括全球应用、出版物、专利、资…...

驱动移植【简略版】

一、RTC时钟 测试一下看看能不能用就行 二、LED指示灯驱动 1.在设备树找到LED的节点&#xff0c;改对应的引脚&#xff0c; 2.还需要注意引脚的复用引脚有没有被其它东西占用&#xff0c;可以通过NXP官方提供的cofingue tool软件去查看&#xff0c;注释掉就行 三、RJGT102加…...

Qt QTimer 详解与使用指南

Qt QTimer 详解 QTimer 是 Qt 中用于实现定时器功能的类&#xff0c;通过周期性地触发 timeout() 信号来执行任务。以下从核心用法、高级功能、注意事项及示例代码等方面进行详细解析。 1. 基本用法 步骤&#xff1a; 创建对象&#xff1a;实例化 QTimer&#xff0c;通常指定…...

PDK中technology file从tf格式转换为lef格式

在数字后端流程中需要导入technology file工艺文件&#xff0c;一般传统的PDK中都提供.tf形式&#xff0c;能够在Synopsys ICC中进行导入。但是由于Cadence Innovus不断地完善&#xff0c;更多的工程采用了其进行数字后端设计。不过Cadence Innovus导入的是.lef格式的工艺文件&…...

Spring Boot资源耗尽问题排查与优化

Spring Boot服务运行一段时间后新请求无法处理的问题。服务没有挂掉&#xff0c;也没有异常日志。思考可能是一些资源耗尽或阻塞的问题。 思考分析 首先&#xff0c;资源耗尽可能涉及线程池、数据库连接、内存、文件句柄或网络连接等。常见的如线程池配置不当&#xff0c;导致…...

图+文+语音一体化:多模态合成数据集构建的实战与方法论

目录 图文语音一体化&#xff1a;多模态合成数据集构建的实战与方法论 一、多模态合成数据的核心价值 二、系统架构概览 三、核心模块与实现建议 ✅ 1. 文→图&#xff1a;图像合成&#xff08;Text-to-Image&#xff09; ✅ 2. 图→文&#xff1a;自动描述&#xff08;I…...

java的lambda和stream流操作

Lambda 表达式 ≈ 匿名函数 &#xff08;Lambda接口&#xff09;函数式接口&#xff1a;传入Lambda表达作为函数式接口的参数 函数式接口 只能有一个抽象方法的接口 Lambda 表达式必须赋值给一个函数式接口&#xff0c;比如 Java 8 自带的&#xff1a; 接口名 作用 Functio…...

Excalidraw:一个免费开源的白板绘图工具

Excalidraw 是一款免费开源的白板绘图工具&#xff0c;主打手绘风格&#xff0c;界面简洁易用&#xff0c;支持实时协作。它常用于绘制技术架构图、流程图、线框图、思维导图等&#xff0c;尤其适合需要快速草图设计的场景。 Excalidraw 支持的主要功能如下&#xff1a; &…...

推荐一款Umi-OCR_文字识别工具

Umi-OCR_文字识别工具 https://github.com/hiroi-sora/Umi-OCR/releases/latest...

leetcode0146. LRU 缓存-medium

1 题目&#xff1a;LRU 缓存 官方标定难度&#xff1a;中 请你设计并实现一个满足 LRU (最近最少使用) 缓存 约束的数据结构。 实现 LRUCache 类&#xff1a; LRUCache(int capacity) 以 正整数 作为容量 capacity 初始化 LRU 缓存 int get(int key) 如果关键字 key 存在于缓…...

单线服务器有什么优点

单线服务器是一个普遍存在的术语&#xff0c;它是指一种服务器连接互联网时只使用一个物理线路的服务器。简单来说&#xff0c;就是使用一条网络线路的服务器&#xff0c;上传和下载的数据都通过一个通道实现。在当今数字化的时代&#xff0c;服务器的选择至关重要。今天&#…...

Manus AI:突破多语言手写识别技术壁垒之路

Manus AI与多语言手写识别 讨论Manus AI如何突破多语言手写识别的技术壁垒。 写一篇详细的博客有重点有链接超详细 Manus AI&#xff1a;突破多语言手写识别技术壁垒之路 在人工智能领域&#xff0c;多语言手写识别一直是极具挑战性的难题。不同语言的字符形态、书写规则大相…...

pip 的包下载之后存放在哪?

以下是关于 pip 下载的包存放位置的详细说明&#xff0c;适用于不同操作系统场景&#xff1a; 一、临时缓存位置 当使用 pip install 安装包时&#xff0c;下载的包会先暂存在 临时缓存目录&#xff0c;安装完成后自动删除。以下是各系统默认路径&#xff1a; 操作系统缓存路…...

文章记单词 | 第38篇(六级)

一&#xff0c;单词释义 distress [dɪˈstres] n. 悲痛&#xff1b;苦恼&#xff1b;忧虑&#xff1b;贫困&#xff1b;危难&#xff1b;不幸 v. 使悲痛&#xff1b;使苦恼&#xff1b;使忧虑odor [ˈəʊdə(r)] n. 气味&#xff1b;&#xff08;尤指&#xff09;难闻的气味…...

L2-006 树的遍历

L2-006 树的遍历 问题描述格式输入格式输出样例输入样例输出评测用例规模与约定解析参考程序难度等级 问题描述 给定一棵二叉树的后序遍历和中序遍历&#xff0c;请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。 格式输入 输入第一行给出一个正整数N&#xff0…...

在国产麒麟Kylin Linux Advanced Server V10中使用QT5开发环境并支持中文输入

切记&#xff1a;不要安装第三方源的工具包&#xff0c;包括QT官网的&#xff01;&#xff01;&#xff01; 在联网的情况下按以下步骤安装即可&#xff1a; sudo yum groupinstall "Development Tools" -y sudo yum install qt5-qtbase-devel qt5-qtdeclarative-d…...

C语言动规学习

文章目录 一、动态规划的基本概念1. 最优子结构2. 重叠子问题 二、动态规划的求解步骤三、动态规划与递归的比较四、例题&#xff08;只讲思维&#xff0c;空间时间复杂度大小不与题目比较&#xff09;1、斐波那契数列1. 定义状态2. 找出状态转移方程3. 初始化边界条件4. 确定计…...

Vue3中provide和inject的用法示例

在 Vue3 中&#xff0c;provide 和 inject 用于实现跨层级组件通信。以下是一个简单的示例&#xff1a; 1. 父组件 (祖先组件) - 提供数据 javascript 复制 // ParentComponent.vue import { provide, ref, reactive } from vue;export default {setup() {// 提供静态数据p…...

fastdds:传输层SHM和DATA-SHARING的区别

下图是fastdds官方的图&#xff0c;清晰地展示了dds支持的传输层: 根据通信双方的相对位置(跨机器、同机器跨进程、同进程)的不同选择合适的传输层&#xff0c;是通信中间件必须要考虑的事情。 跨机器&#xff1a;udp、tcp 跨机器通信&#xff0c;只能通过网络&#xff0c; f…...

MQ基础篇

1.初识MQ 1.同步调用 概念&#xff1a; 同步调用是一种程序执行方式&#xff0c;在调用一个函数或服务时&#xff0c;调用方会一直等待被调用方执行完成并返回结果&#xff0c;才会继续执行后续代码 &#xff0c;期间调用线程处于阻塞状态。 同步调用的优势&#xff1a; 时…...

网络编程2

day2 一、UDP编程 1.编程流程 2.函数接口 3.注意 (1)、对于TCP是先运行服务器&#xff0c;客户端才能运行。(2)、对于UDP来说&#xff0c;服务器和客户端运行顺序没有先后&#xff0c;因为是无连接&#xff0c;所以服务器和客户端谁先开始&#xff0c;没有关系.(3)、一个服务器…...

Python环境中在线训练机器学习模型所遇到的问题及解决方案

我最近开发个智能控制系统,包括实时数据采集、预测、策略优化等功能,最近增加在线学习功能,也就是在线进行模型训练,在线进行模型训练时出现了问题,现象为: 控制台报: cmdstanpy - INFO - Chain [1] start processing所有任务、线程停止,Web服务登录无法访问后台的pyt…...

「仓颉编程语言」Demo

仓颉编程语言」Demo python 1)# 仓颉语言写字楼管理系统示例&#xff08;虚构语法&#xff09;# 语法规则&#xff1a;中文关键词 类Python逻辑定义 写字楼管理系统属性:租户库 列表.新建()报修队列 列表.新建()费用单价 5 # 元/平方米方法 添加租户(名称, 楼层, 面积):…...

《软件设计师》复习笔记(11.4)——处理流程设计、系统设计、人机界面设计

目录 一、业务流程建模 二、流程设计工具 三、业务流程重组&#xff08;BPR&#xff09; 四、业务流程管理&#xff08;BPM&#xff09; 真题示例&#xff1a; 五、系统设计 1. 主要目的 2. 设计方法 3. 主要内容 4. 设计原则 真题示例&#xff1a; 六、人机界面设…...

win11系统截图的几种方式

在 Windows 11 中&#xff0c;系统内置的截图功能已全面升级&#xff0c;不仅支持多种截图模式&#xff0c;还整合了录屏、OCR 文字识别和 AI 增强编辑等功能。以下是从基础操作到高阶技巧的完整指南&#xff1a; 一、快捷键截图&#xff08;效率首选&#xff09; 1. Win Sh…...

http://noi.openjudge.cn/——2.5基本算法之搜索——1998:寻找Nemo

文章目录 题目宽搜代码优先队列深搜代码小结 题目 总时间限制: 2000ms 内存限制: 65536kB 描述 Nemo 是个顽皮的小孩. 一天他一个人跑到深海里去玩. 可是他迷路了. 于是他向父亲 Marlin 发送了求救信号.通过查找地图 Marlin 发现那片海像一个有着墙和门的迷宫.所有的墙都是平行…...

win10系统完美配置mamba-ssm全整合方案

好久没瞎写东西了&#xff0c;刚好最近遇到一个逆天需求&#xff1a;要在win10平台上配置可用的mamba-ssm环境。由于这个环境原版以及相关依赖都是仅适配linux的&#xff0c;即使是依赖conda环境直接拿来往windows系统上装也全是bug&#xff0c;网上大量的垃圾教程也都是错的&a…...

MQTTClient.c中的协议解析与报文处理机制

MQTTClient.c中的协议解析与报文处理机制 1. 协议解析的核心逻辑 &#xff08;1&#xff09;报文头部解析 MQTT协议报文由固定头&#xff08;Fixed Header&#xff09; 可变头&#xff08;Variable Header&#xff09; 负载&#xff08;Payload&#xff09;三部分组成。在rea…...

LeetCode每日一题4.18

2364.统计坏数对的数目 问题 问题分析 根据题目要求&#xff0c;(i, j) 是一个坏数对的条件是&#xff1a; i < j j - i ! nums[j] - nums[i]&#xff0c;即 nums[j] - j ! nums[i] - i 因此&#xff0c;我们可以转换问题&#xff1a;对于每个 j&#xff0c;找到所有 i &l…...

cmd查询占用端口并查杀

查看特定端口的占用情况 netstat -ano | findstr 端口号 netstat -ano | findstr 端口号 结束指定进程 askkill /T /F /PID PID askkill /T /F /PID PID...

ETL数据集成平台在交通运输行业的五大应用场景

在智能交通与数字物流时代&#xff0c;交通运输企业每天产生海量数据——车辆轨迹、货物状态、乘客流量、设备日志……但这些数据往往被困在分散的系统中&#xff1a;GPS定位数据躺在车载终端里&#xff0c;物流订单卡在Excel表中&#xff0c;地铁客流统计锁在本地服务器内。如…...

自定义 el-menu

使用的工具&#xff1a;vue2 element-ui <!DOCTYPE html> <html><head><link rel"stylesheet" href"https://unpkg.com/element-ui/lib/theme-chalk/index.css"><style>.el-menu--horizontal {border-bottom: none !impor…...

创维E900V20C-国科GK6323V100C-rtl8822cs-安卓9.0-短接强刷卡刷固件包

创维E900V20C&#xff0f;创维E900V20D-国科GK6323V100C-安卓9.0-强刷卡刷固件包 创维E900V20C 刷机说明&#xff1a; 1、用个老款4G&#xff0c;2.0的U盘&#xff0c;fat32&#xff0c;2048块单分区格式化&#xff0c; 5个文件复制到根目录&#xff0c;插盒子靠网口U口&…...

DemoGen:用于数据高效视觉运动策略学习的合成演示生成

25年2月来自清华、上海姚期智研究院和上海AI实验室的论文“DemoGen: Synthetic Demonstration Generation for Data-Efficient Visuomotor Policy Learning”。 视觉运动策略在机器人操控中展现出巨大潜力&#xff0c;但通常需要大量人工采集的数据才能有效执行。驱动高数据需…...

影楼精修-高低频磨皮算法解析

注意&#xff1a;本文样例图片为了避免侵权&#xff0c;均使用AIGC生成&#xff1b; 高低频磨皮基础 高低频磨皮是一种常用于人像后期修图的技术&#xff0c;它能在保留皮肤纹理的同时柔化瑕疵&#xff0c;使皮肤看起来更加自然细腻。高低频磨皮的算法原理如下&#xff1a; …...

打造搜索神功:Express 路由中的关键词探查之道

前言 在 Web 开发的江湖,Express 好比一位身怀绝技的武林高手,出手稳准狠,擅长解决各种疑难杂症。今天,我们将与这位高手并肩作战,一探关键词搜索路由的奥义。这不是枯燥的教学,而是一场充满玄机与笑点的江湖奇遇。挥起代码之剑,踏上探索之路,不仅能习得招式,还能在轻…...

kubernetes-使用ceph-csi

kubernetes-使用ceph-csi Kubernetes &#xff08;简称K8s&#xff09;和Ceph都是开源的云计算技术&#xff0c;K8s是一个容器编排平台&#xff0c;而Ceph是一个分布式存储系统。将K8s和Ceph集成在一起可以为应用程序提供高可用性和持久性存储。本文主要介绍如何在使用openEul…...

​​从Shell到域控:内网渗透中定位域控制器的8种核心方法​

在内网渗透中&#xff0c;定位域控制器&#xff08;Domain Controller, DC&#xff09;是攻防对抗的关键环节。本文结合实战经验与工具技术&#xff0c;总结出​​8种从Shell快速发现域控主机的方法​​&#xff0c;涵盖命令探测、网络扫描、日志分析等维度&#xff0c;助你系统…...

FA-YOLO:基于FMDS与AGMF的高效目标检测算法解析

本文《FA-YOLO: Research On Efficient Feature Selection YOLO Improved Algorithm Based On FMDS and AGMF Modules》针对YOLO系列在特征融合与动态调整上的不足,提出两种创新模块:​FMDS(细粒度多尺度动态选择模块)​和AGMF(自适应门控多分支聚焦融合模块)​。论文结构…...

【RK3588 嵌入式图形编程】-SDL2-扫雷游戏-结束和重新开始游戏

结束和重新开始游戏 文章目录 结束和重新开始游戏1、概述2、更新Globals.h3、触发GAME_WON和GAME_LOST事件4、对游戏结束的反应5、重启游戏6、创建新游戏按钮7、完整代码8、总结在本文中,将实现胜负检测并添加重新开始功能以完成游戏循环。 1、概述 在本文中,我们将更新我们…...

OpenAI重返巅峰:o3与o4-mini引领AI推理新时代

引言 2025年4月16日&#xff0c;OpenAI发布了全新的o系列推理模型&#xff1a;o3和o4-mini&#xff0c;这两款模型被官方称为“迎今为止最智能、最强大的大语言模型&#xff08;LLM&#xff09;”。它们不仅在AI推理能力上实现了质的飞跃&#xff0c;更首次具备了全面的工具使…...

《软件设计师》复习笔记(12.3)——质量管理、风险管理

目录 一、质量管理 1. 质量定义 2. 质量管理过程 3. 软件质量特性&#xff08;GB/T 16260-2002&#xff09; 4. 补充知识 McCall质量模型&#xff1a; 软件评审 软件容错技术 真题示例&#xff1a; 二、风险管理 1. 风险管理的目的&#xff1a; 2. 风险管理流程及内…...

优化自旋锁的实现

在《C11实现一个自旋锁》介绍了分别使用TAS和CAS算法实现自旋锁的方案&#xff0c;以及它们的优缺点。TAS算法虽然实现简单&#xff0c;但是因为每次自旋时都要导致一场内存总线流量风暴&#xff0c;对全局系统影响很大&#xff0c;一般都要对它进行优化&#xff0c;以降低对全…...

项目实战--新闻分类

从antd中拿一个表格 表格 Table - Ant Designhttps://ant-design.antgroup.com/components/table-cn#table-demo-edit-cell使用的是可编辑单元格 实现引入可编辑单元格&#xff1a; import React, { useState, useEffect, useRef, useContext } from react import { Button, …...

人像面部关键点检测

此工作为本人近期做人脸情绪识别&#xff0c;CBAM模块前是否能加人脸关键点检测而做的尝试。由于创新点不是在于检测点的标注&#xff0c;而是CBAM的改进&#xff0c;因此&#xff0c;只是借用了现成库Dilb与cv2进行。 首先&#xff0c;下载人脸关键点预测模型:Index of /file…...

OpenVINO怎么用

目录 OpenVINO 简介 主要组件 安装 OpenVINO 使用 OpenVINO 的基本步骤 OpenVINO 简介 OpenVINO&#xff08;Open Visual Inference and Neural Network Optimization&#xff09;是英特尔推出的一个开源工具包&#xff0c;旨在帮助开发者在英特尔硬件平台上高效部署深度学…...

写论文时降AIGC和降重的一些注意事项

‘ 写一些研究成果&#xff0c;英文不是很好&#xff0c;用有道翻译过来句子很简单&#xff0c;句型很单一。那么你会考虑用ai吗&#xff1f; 如果语句太正式&#xff0c;高级&#xff0c;会被误判成aigc &#xff0c;慎重选择ai润色。 有的话就算没有用ai生成&#xff0c;但…...