Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
目录
- Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
- SonarQube介绍
- 安装
- Docker安装PostgreSQL容器
- Docker安装SonarQube容器
- SonarQube汉化插件安装
- 破解
- 生成license
- 配置agent
- 使用
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
SonarQube介绍
Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。支持Java、kotlin、Scala、python、JavaScrip等二十几种编程语言的代码质量管理与检测。支持将代码扫描集成到现有的工作流,以便在项目分支和拉取请求之间进行连续的代码检查。
分为社区版、开发版、企业版数据中心版。对于静态检测,只有开发版、企业版支持C/C++,而我们的业务以C/C++为主,故选择需要破解的企业版。
安装
环境搭建参考博客:https://www.codestar.top/2024/10/10/Linux/Ubuntu-docker%E6%90%AD%E5%BB%BAsonarqube%E7%A4%BE%E5%8C%BA%E7%89%88/
Docker安装PostgreSQL容器
直接上命令:
docker pull postgres
如下:
启动容器:
docker run --name postgresql \--restart=always \-e POSTGRES_USER=admin \-e POSTGRES_PASSWORD=123456 \-e POSTGRES_DB=sonarqube_db \-p 5432:5432 \-v /opt/postgres:/var/lib/postgresql/data \-e ALLOW_IP_RANGE=0.0.0.0/0 \-d postgres
参数含义如下:
- –name:后接容器名
- –restart=always:dcoker启动后,自动重启容器
- POSTGRES_USER:pg数据库用户名
- POSTGRES_PASSWORD:pg数据库密码
- POSTGRES_DB:创建一个名为sonarqube_db的pg数据库
- -p 5432:5432:端口映射
- -v:主机目录->容器目录的映射
- ALLOW_IP_RANGE=0.0.0.0/0:允许任何主机访问
- -d:守护进程方式创建容器
- 最后一个参数:镜像名。
pg容器创建好后如图所示:
Docker安装SonarQube容器
获取企业版sonarqube镜像:
docker pull sonarqube:9.9-enterprise
如下:
我们可以使用如下命令创建并启动sonarqube容器:
# docker run --name 容器名(可任意) -d -p 内部端口:外部端口 镜像名
docker run --name sonarqube -p 9000:9000 -d sonarqube:9.9-enterprise
但是我们不能向上面那样干!它默认会使用H2嵌入式数据库,并且数据库是存在于内存当中的,如果我们的docker容器重启,那么之前所有的数据都将丢失!
和pg容器创建不同,这里需要手动创建主机到容器映射目录,并将其权限修改为777.
mkdir -p /opt/sonarqube/data /opt/sonarqube/extensions /opt/sonarqube/logs /opt/sonarqube/confsudo chmod 777 -R /opt/sonarqube
然后创建SonarQube容器实例:
docker run --name sonarqube \--restart=always \-e SONAR_JDBC_URL=jdbc:postgresql://192.168.0.135:5432/sonarqube_db \-e SONAR_JDBC_USERNAME=admin \-e SONAR_JDBC_PASSWORD=dc123 \-p 9000:9000 \-v /opt/sonarqube/data:/opt/sonarqube/data \-v /opt/sonarqube/extensions:/opt/sonarqube/extensions \-v /opt/sonarqube/logs:/opt/sonarqube/logs \-v /opt/sonarqube/conf:/opt/sonarqube/conf \-d sonarqube:9.9-enterprise
参数含义如下(同前面重复的省略):
- SONAR_JDBC_URL:pg数据库的url,ip根据主机实际情况填写
- SONAR_JDBC_USERNAME:pg数据库用户名
- SONAR_JDBC_PASSWORD:pg数据库密码
- extensions目录:sonarsube插件存放目录
- logs:日志目录
- conf: 配置目录
不出意外,容器状态会一直是restart状态,此时需要使用docker logs -f sonarqube查看对应的日志信息检查错误点。
一般是因为容器卷映射目录权限问题,或者是需要修改主机的系统参数(报错:max virtual memory areas vm.max_map_count [65530] is too low)。
权限问题好解决,直接chmod修改/opt/sonarqube目录权限为777即可。
而系统参数问题解决方法参考如下:
在主机上(宿主机,非docker容器!docker容器会继承宿主机的系统参数。)修改系统参数:
vim /etc/sysctl.conf# 最后一行添加:
vm.max map count=262144
vm.max map count=524288sysctl -p # 加载生效
然后重启docker:
docker start sonarqube
实例运行情况:
在ubuntu浏览器当中输入http://localhost:9000/ ,默认管理员用户及密码:admin/admin。
SonarQube汉化插件安装
进入到插件商城,搜索插件chinese
,按下面操作进入到插件主页进行下载:
进入汉化github插件仓库,进入标签发布页,找到9.9版本的中文插件,点击即可下载:
下载完成后,将插件拷贝到主机的/opt/sonarqube/extensions/plugins目录下(plugins目录需要手动创建),再次重启sonarqube容器,重新登录http://localhost:9000/,可以看到提示变成了中文,说明我们的插件安装成功了!
破解
破解参考博客:https://dashenxian.github.io/post/SonarQube%E7%A0%B4%E8%A7%A3
生成license
将如下这段信息全部复制,然后进行base64加密就是license的内容:
Company=Unknown
Digest=NotRequired
Edition=Enterprise
EditionLabel=Enterprise
Expiration=2099-01-01
MaxLoc=9223372036854775806
Plugins=abap,cpp,plsql,security,sonarapex,swift,tsql,vbnet,cobol,pli,rpg,vb
Features=*
ServerId=*
Support=false
Type=ny0c
同理,如果是开发版,只需将Enterprise替换为Developer。
Base64转换如下:
Q29tcGFueT1Vbmtub3duCkRpZ2VzdD1Ob3RSZXF1aXJlZApFZGl0aW9uPUVudGVycHJpc2UKRWRpdGlvbkxhYmVsPUVudGVycHJpc2UKRXhwaXJhdGlvbj0yMDk5LTAxLTAxCk1heExvYz05MjIzMzcyMDM2ODU0Nzc1ODA2ClBsdWdpbnM9YWJhcCxjcHAscGxzcWwsc2VjdXJpdHksc29uYXJhcGV4LHN3aWZ0LHRzcWwsdmJuZXQsY29ib2wscGxpLHJwZyx2YgpGZWF0dXJlcz0qClNlcnZlcklkPSoKU3VwcG9ydD1mYWxzZQpUeXBlPW55MGM=
配置agent
首先下载agent jar包:SonarQubeAgent-1.2-SNAPSHOT.jar。
使用docker命令,将下载好的agent jar包拷贝到容器当中,这里为方便,我直接拷贝到根目录下面。:
docker cp ./SonarQubeAgent-1.2-SNAPSHOT.jar sonarqube:9.9-enterprise:/
在sonarqube的配置文件conf/sonar.properties(sonar.properties文件需要手动创建),里面新增如下内容:
sonar.web.javaOpts=-javaagent:/SonarQubeAgent-1.2-SNAPSHOT.jar -Xmx1G -Xms128m -XX:+HeapDumpOnOutOfMemoryError
sonar.ce.javaOpts=-javaagent:/SonarQubeAgent-1.2-SNAPSHOT.jar -Xmx2G -Xms128m -XX:+HeapDumpOnOutOfMemoryError
重启sonarqube容器,然后License Manager当中填入上文获取的证书即可:
使用
这里主要叙述手工代码审查的步骤:
-
主页右上角 -> 新增项目 -> 手工
-
按需填写显示名和项目标识符:
-
选择本地:
-
(按需)将令牌修改为永不过期:
-
记住这个令牌:
-
选择C,C++或ObjC -> Linux,下面会出现下载必要的应用包、扫描器以及在项目当中扫描器的使用教程,相关步骤代码如下:
(注意下面这些配置都是属于客户主机的配置,即你所要审查的项目代码所在的那台主机)应用包、扫描器的安装以及环境变量的配置:
curl --create-dirs -sSLo $HOME/.sonar/build-wrapper-linux-x86.zip http://192.168.0.135:9000/static/cpp/build-wrapper-linux-x86.zip unzip -o $HOME/.sonar/build-wrapper-linux-x86.zip -d $HOME/.sonar/export PATH=$HOME/.sonar/build-wrapper-linux-x86:$PATH export SONAR_SCANNER_VERSION=4.7.0.2747 export SONAR_SCANNER_HOME=$HOME/.sonar/sonar-scanner-$SONAR_SCANNER_VERSION-linuxcurl --create-dirs -sSLo $HOME/.sonar/sonar-scanner.zip https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-$SONAR_SCANNER_VERSION-linux.zip unzip -o $HOME/.sonar/sonar-scanner.zip -d $HOME/.sonar/export PATH=$SONAR_SCANNER_HOME/bin:$PATH export SONAR_SCANNER_OPTS="-server"export SONAR_TOKEN=sqp_0e3bfc1c50b71f7ba912e8e36700c315f155081d
其中ip地址以及令牌根据实际情况填写!
-
在独立的cmake项目当中使用sonarqube:
项目结构如下:
进入build目录,执行
cmake ..
,然后执行如下命令进行编译:cd build build-wrapper-linux-x86-64 --out-dir bw-output make
执行完成后会在build目录下生成一个bw-output目录,里面比较重要的是build-wrapper-dump.json文件,如果你看到该文件生成了很多配置(大几十行),说明你的配置是正确的,否则如果只有少数几行,说明配置存在问题,需要查看是否有步骤缺失。
build-wrapper-linux-x86-64
命令实际上会hook住编译器,从而获取项目当中各个源文件以及其依赖关系。接下来的sonar-scanner
命令才是真正执行代码审查的主体。然后回到项目根目录,使用扫描器进行代码审查,分析结果会传到sonarqube所属项目当中:
cd .. sonar-scanner \ -Dsonar.projectKey=test \ -Dsonar.sources=. \ -Dsonar.cfamily.build-wrapper-output=build/bw-output \ -Dsonar.host.url=http://192.168.0.135:9000 \ -Dsonar.login=sqp_0e3bfc1c50b71f7ba912e8e36700c315f155081d
这里主要关注这两个参数:
- -Dsonar.cfamily.build-wrapper-output:build-wrapper-linux-x86-64命令生成配置文件路径。- -Dsonar.sources:源码根路径
步骤如下:
等待执行完成后,输出:
此时同样的会在项目根目录产生一个配置目录:.scannerwork,结合上述,现在项目结构为:
在sonarqube网页上可以看到分析结果:
-
在buildroot项目当中使用sonarqube:
有了cmake项目使用sonarqube的经验,buildroot项目其实也类似,高度重复的部分会直接省略:
首先是环境变量的配置,参考步骤6的开头部分,然后是使用build-wrapper-linux-x86-64命令对buildroot包进行编译,并自动创建bw-output,这里以编译mediaserver为例:
# 更换项目令牌 export SONAR_TOKEN=sqp_60cd6b366e2852a5fdb5f7629c5e6c73b6c94d6c build-wrapper-linux-x86-64 --out-dir bw-output make mediaserver
在buildroot下生成了bw-output目录:
进入到buildroot/output/dc_rv1126_ipc/build/mediaserver/目录(合理修改
-Dsonar.sources
、-Dsonar.cfamily.build-wrapper-output
参数路径可以无需cd来cd去,前者代表源码根路径,后者代表执行build-wrapper-linux-x86-64
命令时所指定的–out-dir的目录路径),执行如下代码:sonar-scanner \ -Dsonar.projectKey=mediaserver \ -Dsonar.sources=. \ -Dsonar.cfamily.build-wrapper-output=../../../../bw-output \ -Dsonar.host.url=http://192.168.0.135:9000 \ -Dsonar.login=sqp_60cd6b366e2852a5fdb5f7629c5e6c73b6c94d6c \ -Dsonar.scm.disabled=true \ -Dsonar.scm.exclusions.disabled=true
结果如下:
-
本章完结
相关文章:
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
目录 Ubuntu使用Docker搭建SonarQube企业版(含破解方法)SonarQube介绍安装Docker安装PostgreSQL容器Docker安装SonarQube容器SonarQube汉化插件安装 破解生成license配置agent 使用 Ubuntu使用Docker搭建SonarQube企业版(含破解方法ÿ…...
牛客网 NC22167: 多组数据a+b
牛客网 NC22167: 多组数据ab 题目分析 这道题目来自牛客网(题号:NC22167),要求我们计算两个整数a和b的和。乍看简单,但有以下特殊点需要注意: 输入包含多组测试数据每组输入两个整数当两个整数都为0时表示…...
EdgeShard:通过协作边缘计算实现高效的 LLM 推理
(2024-05-23) EdgeShard: Efficient LLM Inference via Collaborative Edge Computing (EdgeShard:通过协作边缘计算实现高效的 LLM 推理) 作者: Mingjin Zhang; Jiannong Cao; Xiaoming Shen; Zeyang Cui;期刊: (发表日期: 2024-05-23)期刊分区:本地链接: Zhang 等 - 2024 …...
π0: A Vision-Language-Action Flow Model for General Robot Control
TL;DR 2024 年 Physical Intelligence 发布的 VLA 模型 π0,基于 transformer 流匹配(flow matching)架构,当前开源领域最强的 VLA 模型之一。 Paper name π0: A Vision-Language-Action Flow Model for General Robot Contr…...
RabbitMQ高级篇-MQ的可靠性
目录 MQ的可靠性 1.如何设置数据持久化 1.1.交换机持久化 1.2.队列持久化 1.3.消息持久化 2.消息持久化 队列持久化: 消息持久化: 3.非消息持久化 非持久化队列: 非持久化消息: 4.消息的存储机制 4.1持久化消息&…...
4、前后端联调文生文、文生图事件
4、前后端联调文生文、文生图事件 原文地址 1、底部【发送按钮】事件触发调用后端AI程序逻辑 <!-- 前端模板如下: --> <!DOCTYPE html> <html><head><meta charset"utf-8"><title>小薛博客LLM大模型实战</title><me…...
深度学习中的提示词优化:梯度下降全解析
深度学习中的提示词优化:梯度下降全解析 在您的代码中,提示词的更新方向是通过梯度下降算法确定的,这是深度学习中最基本的优化方法。 一、梯度下降与更新方向 1. 核心公式 对于可训练参数 θ \theta θ(这里是提示词嵌入向量),梯度下降的更新公式为:...
Midjourney 最佳创作思路与实战技巧深度解析【附提示词与学习资料包下载】
引言 在人工智能图像生成领域,Midjourney 凭借其强大的艺术表现力和灵活的创作模式,已成为设计师、艺术家和创意工作者的核心工具。作为 CSDN 博主 “小正太浩二”,我将结合多年实战经验,系统分享 Midjourney 的创作方法论&#x…...
【数字图像处理】半开卷复习提纲
1:要求 2张A4纸以内,正反面均可写 (不过博主由于墨水浸到背面了,采用了把2张单面通过双面胶粘起来的方法,结果考前半个小时都在用这个难用的双面胶。。。) 2:提纲内容 3:提示 考的…...
交通运输与能源融合发展——光储充在交通上的应用完整解决方案
在全球积极应对气候变化、推动可持续发展的大背景下,交通运输与能源领域的融合发展成为关键趋势。近日,交通运输部等十部门联合发布的《关于推动交通运输与能源融合发展的指导意见》,为这两个重要行业的协同前行指明了清晰的方向,…...
API 接口开放平台 Crabc 3.2 发布
2025 年 5 月 15 日,API 接口开放平台 Crabc 3.2 发布。 Crabc 是一款 API 接口开发平台、企业级接口管理和 SQL2API 平台。它支持动态数据源、动态 SQL 和标签,能接入多种 SQL 或 NoSQL 数据源,包括 MySQL、Oracle、达梦、TiDB、Hive、ES 和…...
基于智能推荐的就业平台的设计与实现(招聘系统)(SpringBoot Thymeleaf)+文档
💗博主介绍💗:✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示:文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…...
【web应用】配置Java JDK与maven3的环境变量
文章目录 一、控制面板 - 系统 - 高级系统设置-环境变量二、用户变量和系统变量的配置方法一样:三、查看是否配置成功 maven有两种安装方式: 1、IDEA捆绑安装,一般是maven3【这里配置的环境变量是捆绑安装这种方式】 2、手动下载安装插件 一、…...
编程日志5.7
二叉树的功能代码 #include<iostream> using namespace std; //二叉树结点定义 template<typename T> struct TreeNode { T val;//定义了一个类型为T的成员变量val,用于存储树节点的值 TreeNode* left;//定义了一个指向TreeNode类型的指针成员变量left,…...
室内定位:热门研究方向与未解难题深度解析
I. 引言:对普适性室内定位的持续探索 A. 室内定位在现代应用中的重要性 室内定位系统(IPS)正迅速成为众多应用领域的基石技术,其重要性源于现代社会人们约70%至90%的时间在室内度过的事实 1。这些应用横跨多个行业,包括应急响应 1、智能建筑与智慧城市 6、医疗健康(如病…...
图片通过滑块小图切换大图放大镜效果显示
图片通过滑块小图切换大图放大镜效果显示 实现目标: 显示一组图片列表,鼠标进入小图记录当下小图下标,通过小图下标在数组中对应图片显示到大图位置; 鼠标进入大图位置时,带动滑块移动,并将放大两倍的大图…...
[250515] 腾讯推出 AI 编程助手 CodeBuddy,对标 Cursor
目录 腾讯推出 AI 编程助手 CodeBuddy 腾讯推出 AI 编程助手 CodeBuddy 腾讯发布 CodeBuddy,一款 AI 编程助手,旨在提升开发者效率。 主要亮点: CodeBuddy: 全新英文品牌,面向全球开发者。Craft 模式: A…...
OpenCV光流估计:原理、实现与应用
一、什么是光流? 光流(Optical Flow)是计算机视觉中描述图像序列中像素运动模式的重要概念。它表示图像中物体在连续帧之间的表观运动,是由物体或相机的运动引起的。 光流的基本假设 亮度恒常性:同一物体点在连续帧中的亮度保持不变时间持…...
使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据(申请key教程)
使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据 目录 使用 QGIS 插件 OpenTopography DEM Downloader 下载高程数据📌 简介🛠 插件安装方法🌍 下载 DEM 数据步骤🔑 注册 OpenTopography 账号(如使用 Cope…...
PHP基础知识
【学习资料】 视频: https://www.bilibili.com/video/BV1Xh411S7G1?spm_id_from333.788.videopod.episodes&vd_sourcebe26b82da70367069ab00d6db4f4ffc0 文档:https://www.runoob.com/php/php-tutorial.html 目录 1,PHP是什么2ÿ…...
Kotlin 和 Java 混合开发时需要注意哪些问题
1 空安全(Null Safety) Kotlin 有严格的空安全机制(如非空类型的 String 和可空类型 String?),但是 Java 没有: Kotlin 代码调用 Java 代码:Java 中的所有引用类型默认都是可空的,…...
乘法口诀练习神器
请你利用python语言开发一个“乘法口诀练习神器”,主要辅助小学生练习乘法口诀,主要功能如下: 1. 能够随机循环出10道题,可以是乘法或者是除法。如果是乘法,确保两个因数都是1-9之间的整数;如果是除法&…...
How to configure Linux mint desktop
Backgrounds apt install mint-backgrounds-*Theme...
【golang】DNS 资源记录(RR)接口
Go 中 miekg/dns 包对 DNS 资源记录(RR)接口 的定义: type RR interface {Header() *RR_HeaderString() stringcopy() RRlen(off int, compression map[string]struct{}) intpack(...)unpack(...)parse(...)isDuplicate(r2 RR) bool }这个接…...
Vue中的自定义指令适用于哪些场景
自定义指令在 Vue 中非常灵活且功能强大,它们可以在多种场景中使用,以实现特定的 DOM 操作或行为 自定义样式和类 自定义指令可以用来动态地添加或修改元素的样式和类。这在需要根据数据动态调整样式时非常有用。 <div id"app"><d…...
边缘计算平台
本文来源 : 腾讯元宝 边缘计算平台是一种在靠近数据源头的网络边缘侧部署的分布式计算架构,通过融合网络、计算、存储和应用核心能力,就近提供实时、低延迟的智能服务。以下是其核心要点: 1. 定义与特点 定义&a…...
2025年5月H12-831新增题库带解析
组播基础 以下关于PIM-SM(SSM)的描述,错误的是哪一项? PIM-SM(SSM)无需维护RPPIM-SM(SSM)模型形成的组播分发树会一直存在,不会因为没有组播流量而消失PIM-SM(SSM)可以在成员端DR上基于组播源地址直接反向建立SPT在PIM-SM(SSM)中依日需要注册组播源 答…...
JavaScript - 运算符之逗号操作符与逗号分隔符(逗号操作符概述、逗号操作符用法、逗号分隔符、逗号分隔符用法)
一、逗号操作符概述 【表达式 1】, 【表达式 2】, 【表达式 3】, ..., 【表达式 N】逗号操作符(,)允许在一个语句中从左到右执行多个表达式,并返回最后一个表达式的值 二、逗号操作符用法 for 循环中的多变量控制 for (let i 0, j 10; i…...
AM1.5G太阳光模拟器参数
AM1.5G太阳光模拟器的参数通常包括光谱匹配度、空间均匀性、时间稳定性等关键指标,这些参数对于太阳能电池的测试和校准至关重要。以下是AM1.5G太阳光模拟器的主要参数: 光谱匹配度 AM1.5G光谱是指大气质量为1.5时,太阳光在地球表面的光谱分…...
YOLO11解决方案之距离计算探索
概述 Ultralytics提供了一系列的解决方案,利用YOLO11解决现实世界的问题,包括物体计数、模糊处理、热力图、安防系统、速度估计、物体追踪等多个方面的应用。 测量两个物体之间的间距被称为特定空间内的距离计算,YOLO11使用两个边界框的中心…...
OkHttp用法-Java调用http服务
特点:高性能,支持异步请求,连接池优化 官方文档:提供快速入门指南和高级功能(如拦截器、连接池)的详细说明,GitHub仓库包含丰富示例。 社区资源:中文教程丰富,GitHub高…...
c/c++中程序内存区域的划分
c/c程序内存分配的几个区域: 1.栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放,栈内存分配运算内置于处理器的指令集中,效率很高但是分配的内存容量有…...
JMeter聚合报告中的任务数和并发数区别
JMeter聚合报告中的任务数和并发数有本质的区别。 任务数(样本数) 任务数或样本数是指在性能测试中发出的请求数量。例如,如果模拟20个用户,每个用户发送100次请求,那么总的任务数或样本数就是2000次请求 并发…...
70、微服务保姆教程(十三)Docker容器详细讲义
一、关于Docker 1.1为什么要用docker? 随着开发的项目越来越复杂,软件越来越多,服务器越来越多,我们在开发和部署的时候会遇到很多问题,比如: 1.不同的应用程序可能会有不同的应用环境,比如Java开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都…...
2025年5月-信息系统项目管理师高级-软考高项-成本计算题
成本计算题挣值分析、成本计算题如何学?1、PV,EV,AC需要理解,根据题目给出的一些个条件需要求得这些值;2、CV,SV,CPI,SPI公式必须记住,需要根据求得的值判断项目的进度和成本的执行情况&#x…...
【BotSharp详细介绍——一步步实现MCP+LLM的聊天问答实例】
BotSharp详细介绍——一步步实现MCPLLM的聊天问答实例 一、MCP原理介绍二、创建BotSharp的项目,实现LLM推理机器人1、新建一个 解决方案,结构如下:2、先看下 MyWeatherPlugin3、创建MyWeatherMcpAPI 三、创建 MCP Server1、添加引用2、添加工…...
[Linux性能优化] 线程卡顿优化。Linux加入USB(HID)热插拔线程占用CPU优化。Linux中CPU使用率过高优化
文章目录 [Linux性能优化] 线程卡顿优化。一、问题定位:CPU 资源分析二、线程卡顿现场复现线程优化前图片线程优化后图片 [Linux性能优化] 线程卡顿优化。 一、问题定位:CPU 资源分析 线程卡顿通常与 CPU 资源竞争、线程调度异常相关,第一步…...
鸿蒙OSUniApp 开发的文件上传与下载功能#三方框架 #Uniapp
使用 UniApp 开发的文件上传与下载功能 前言 在移动应用开发中,文件上传与下载是非常常见且重要的功能需求。无论是上传用户头像、提交表单附件,还是下载资源文件、缓存图片,这些需求几乎存在于每一个成熟的应用中。UniApp 作为一个跨平台开…...
【MySQL】基础知识
MySQL(一)基础知识 MySQL 一、结构 1.客户端 2.服务器 分布式系统 二、存储 1.空间 1.1内存 1.1.1速度 1.1.2稳定性 1.1.3大小 1.1.4使用 1.2硬盘 1.2.1速度 1.2.2稳定性 1.2.3大小 1.2.4【Java学习】反射-CSDN博客 2.体系 表-数据库-服务器 3.特点 3.1…...
产品销量数据爬虫通用模板
最近遇到各行各业的需要爬取销售数据,每次写一个教程相对麻烦,所以思前考后我还是觉得写一个通用模板更适合。所以模板需要足够的灵活性,让用户能够自定义选择器。比如,产品标题、价格、销量的CSS选择器可能因网站而异,…...
一文讲透 Vue3 + Three.js 材质属性之皮革篇【扫盲篇】
文章目录 前言一、Three.js材质系统基础1.1 为什么选择PBR材质?1.2 关键参数解析 二、不同类型皮革的材质配置2.1 牛皮材质实现2.2 羊皮材质实现2.3 仿皮材质实现 三、高级贴图技术3.1 贴图制作流程3.2 组合贴图实战 四、性能优化策略4.1 贴图压缩技术4.2 材质共享4…...
mysql读写分离
一、读写分离原理 客户端连接代理层,代理层(中间件)来实现读操作给从服务器,写操作给主服务器。 二、示例 mycat实现读写分离 读写分离在主从复制的基础上 1客户机1代理1主2从1、网络主 192.168.10.101从1 192.168.10.102从2 …...
Java集合框架
集合 概念:对象的容器,定义了对多个对象进行操作的常用方法。可实现数组的功能 和数组的区别 数组长度固定,集合长度不固定 数组可以存储基本类型和引用类型,集合只能存储引用类型 位置:java.util.* Collection体…...
salesforce如何导出所有字段
在 Salesforce 中,导出所有字段信息(包括字段名、API 名、字段类型、是否可报表、是否可搜索等)通常不是一个“一键完成”的操作,但可以通过几种方法实现。以下是常用的几种方法: ✅ 方法一:使用 Salesforc…...
一招解决Tailwindcss4.x与其他库样式冲突问题
当项目中引入tailwindcss,并与其他UI库混用时,可能会出现样式冲突问题,因为tailwindcss重置了一些基础样式,例如:引入tailwindcss后,原生button按钮没有了默认的样式。 在老版本中解决这个问题,…...
[Harmony]封装一个可视化的数据持久化工具
1.添加权限 在module.json5文件中添加权限 // 声明应用需要请求的权限列表 "requestPermissions": [{"name": "ohos.permission.DISTRIBUTED_DATASYNC", // 权限名称:分布式数据同步权限"reason": "$string:distrib…...
关于AI人工智能的知识图谱简介
人工智能是计算机科学的一个重要领域,旨在理解和构建智能行为。人工智能可以被划分为多个子领域或分支,包括机器学习、深度学习、自然语言处理(Natural Language Processing,NLP)、计算机视觉(Computer Vis…...
uniapp,小程序中实现文本“展开/收起“功能的最佳实践
文章目录 示例需求分析实现思路代码实现1. HTML结构2. 数据管理3. 展开/收起逻辑4. CSS样式 优化技巧1. 性能优化2. 防止事件冒泡3. 列表更新处理 实际效果总结 在移动端应用开发中,文本内容的"展开/收起"功能是提升用户体验的常见设计。当列表项中包含大…...
RabbitMQ 消息模式实战:从简单队列到复杂路由(一)
RabbitMQ 初相识 在当今分布式系统大行其道的技术领域中,消息队列作为实现系统间异步通信、解耦以及流量削峰的关键组件,发挥着不可或缺的作用。而 RabbitMQ,无疑是消息队列领域中一颗耀眼的明星。自 2007 年诞生以来,RabbitMQ 凭…...
阿里云ECS部署Dify
一:在ECS上面安装Docker 关防火墙 sudo systemctl stop firewalld 检查防火墙状态 systemctl status firewalld sudo yum install -y yum-utils device-mapper-persistent-data lvm2 设置阿里镜像源,安装并启动docker [base] nameCentOS-$releas…...