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

SkyWalking 10.1.0 实战:从零构建全链路监控,解锁微服务性能优化新境界

文章目录

  • 前言
  • 一、集成SkyWalking
  • 二、SkyWalking使用
  • 三、SkyWalking性能剖析
  • 四、SkyWalking 告警推送
    • 4.1 配置告警规则
    • 4.2 配置告警通知地址
    • 4.3 下发告警信息
    • 4.4 测试告警
    • 4.5 慢SQL查询
  • 总结

前言

在传统监控系统中,我们通过进程监控和日志分析来发现系统问题,但通常只能知道哪些服务出故障,而无法迅速定位具体原因。开发和运维人员需要手动查看日志或直接访问服务器,排查过程耗时且低效。而且,即使发现问题,也难以追溯到根本原因,导致解决过程反复。为此,基于分布式追踪的 APM 系统应运而生,帮助快速精准地定位问题,提升系统的可靠性和维护效率。

项目:MicroAdmin后台 账号密码:admin / admin

在这里插入图片描述

一、集成SkyWalking

SkyWalking 在 Java 语言中的接入方式采用 字节码增强(Bytecode Instrumentation)技术,属于无代码侵入(No Code Intrusion) 的 APM(应用性能监控)方案。
它通过 Java Agent 机制,在应用启动时动态植入字节码,无需修改业务代码,即可实现全链路追踪、调用链分析、性能监控等功能。

在需要监控的项目中增加JVM的启动参数,本地开发,在IDEA中设置如下:

在这里插入图片描述

添加JVM参数:

-javaagent:D:\soft\skywalking\apache-skywalking-apm-bin\agent\skywalking-agent.jar
-Dskywalking.agent.service_name=micro-dev::micro-system
-Dskywalking.collector.backend_service=127.0.0.1:11800

参数说明:

-javaagent:skywalking-agent.jar所在路径

-Dskywalking.agent.service_name=分组 + 微服务的服务名称(就是配置参数spring.application.name)

-Dskywalking.collector.backend_service=不用修改(日志收集地址的,固定端口11800)

启动项目:

项目启动成功之后,查看skywalking监控界面,如下:

在这里插入图片描述

登录系统,随便访问几个API接口,可以看到SkyWalking采集到了信息,说明我们的监控链路配置成功了。

在这里插入图片描述

二、SkyWalking使用

SkyWalking整个监控项、指标太多,就不一一说明,这里我们来追踪一个异常方法,以此来演示一下SkyWalking的强大功能。

在新增角色的时候,写了这样的一个异常代码,睡眠5s,被除数为0:
在这里插入图片描述

此时我们多次请求新增角色的接口,毋庸置疑新增肯定是失败的,这才是我们要的结果,目的就是借助SkyWalking排查错误,熟悉SkyWalking核心参数,能够熟练排查我们的线上系统异常问题,在SkyWalking监控中我们可以看到整个服务的评分以及调用成功率在下降。

在这里插入图片描述

核心参数说明:

Service Apdex(数字):当前服务的评分
Successful Rate(数字):请求成功率
Load (calls / min) 数字: 每分钟访问次数
Latency(ms): 百分比响应延时

点击该服务进入到服务内部监控界面如下:

在这里插入图片描述

核心参数说明:

Service Avg Response Times(ms):平均响应延时,单位ms
Service Apdex(折线图):一段时间内Apdex评分
Service Response Time Percentile (ms)折线图:服务响应时间百分比
Service Load (calls / min) 折线图: 分钟请求数
Success Rate (%)折线图:分钟请求成功百分比
Message Queue Consuming Count(折线图):消息队列消耗计数
Message Queue Avg Consuming Latency (ms)折线图:消息队列平均消耗延迟(毫秒)
Service Instances Load (calls / min):节点请求次数
Slow Service Instance (ms):每个服务实例(物理机、云主机、pod)的最大延时
Service Instance Success Rate (%):每个服务实例的请求成功率
Endpoint Load in Current Service (calls / min):每个端点(URL)的请求次数
Slow Endpoints in Current Service (ms):当前端点(URL)的最慢响应时间
Endpoint Success Rate in Current Service (%):当前端点(URL)的成功响应请求占比

仔细看这两个参数的数值:
在这里插入图片描述

请求成功率为0,并且最慢响应时间最大,能够很直观看到我们的接口情况。

然后我们再点击链路查看接口请求情况:

在这里插入图片描述

左侧:api接口列表,红色-异常请求,蓝色-正常请求
右侧:api追踪列表,api请求连接各端点的先后顺序和时间

可以看到该接口请求爆红,失败了,点击爆红的接口,可以看到错误的日志信息:

在这里插入图片描述

三、SkyWalking性能剖析

还是以上面的接口为例子,上面我们通过SkyWalking分析出来了,接口错误的原因:

ava.lang.ArithmeticException: / by zero 错误表示在代码中尝试进行除法运算时,除数为零。Java 中不允许任何数除以零,因为这是一个数学上的未定义操作,所以会抛出 ArithmeticException 异常

回看代码,我们可以看到代码中还设置了睡眠5s,所以接口响应时间很长,那么怎么通过SkyWalking分析出接口耗时的具体代码呢?

在【Trace Profiling】界面,新建接口任务,然后分析,即可查到耗时的代码了。

在这里插入图片描述

新建任务:
在这里插入图片描述
最大采样数:设置为1,表示端点调用一次SkyWalking agent就能监控到,最大采样数目5表示,调用接口必须5次以上 agent才能监控到。

点击上图中的新建任务后,然后继续访问这个需要分析的url,点击接口分析,就可以看见详细的代码分析页面了。

在这里插入图片描述

采样追踪:

在这里插入图片描述
上图就是我们进行性能剖析后的结果图。从左到右分别表示:栈帧名称、该栈帧总计耗时(包含其下面所有自栈帧)、当前栈帧自身耗时和监控次数,从中我们可以看到在com.micro.system.service.impl.SysRoleServiceImpl.saveRole:94 代码处,睡眠了5s,所以才导致接口请求响应慢的问题。

四、SkyWalking 告警推送

当机器或者服务出现问题时,我们会触发告警及时通知负责人,这是企业中最常见的做法,SkyWalking 也支持告警配置。

4.1 配置告警规则

修改如下的配置文件,配置自己需要的告警规则:

在这里插入图片描述

修改alarm-settings.yml配置文件:

rules:# 【服务响应时间规则】service_resp_time_rule:# 服务的响应时间超过【1000】毫秒的请求超过 3 次expression: sum(service_resp_time > 1000) >= 3# 每隔1分钟检测一次period: 1# 设置3分钟内容相同告警,不重复告警silence-period: 3# 配置告警信息message: 服务【{name}】在1分钟内响应时间超过1s的请求超过3次# 【服务响应成功率SLA规则】service_sla_rule:# 服务的响应成功率低于80%的次数expression: sum(service_sla < 8000) >= 1# 每隔10分钟检测一次period: 10# 设置3分钟内容相同告警,不重复告警silence-period: 3# 配置告警信息message: 服务【{name}】在10分钟内成功率低于80%的情况发生了1次# 【 服务响应时间的不同分位数规则】 #service_resp_time_percentile_rule:# 分位数超过【1000】毫秒的个数超过3个#expression: sum(service_percentile{p='50,75,90,95,99'} > 1000) >= 3# 每隔10分钟检测一次#period: 10# 设置5分钟内容相同告警,不重复告警#silence-period: 5#message: 服务【{name}】在10分钟内分位数【请求响应时间低于:50%、75%、90%、95%、99%】超过1s的请求个数超过3个# 【单个服务实例响应时间规则】service_instance_resp_time_rule:# 服务实例的响应时间超过【1000】毫秒的请求超过 2 次expression: sum(service_instance_resp_time > 1000) >= 2# 每隔10分钟检测一次period: 10# 设置5分钟内容相同告警,不重复告警silence-period: 5message: 服务实例【{name}】在10分钟内响应时间超过1s的请求超过2次# 【数据库访问响应时间规则】  database_access_resp_time_rule:# 数据库访问响应时间超过【1000】毫秒的请求超过 1 次expression: sum(database_access_resp_time > 1000) >= 1# 每隔1分钟检测一次period: 1message: 数据库【{name}】在1分钟内响应时间超过10ms的请求超过1次# 【端点关系响应时间规则】endpoint_relation_resp_time_rule:# 端点调用的响应时间超过【1000】毫秒的请求超过 2 次expression: sum(endpoint_relation_resp_time > 1000) >= 2# 每隔10分钟检测一次period: 10# 配置告警信息message: 接口【{name}】在10分钟内响应时间超过1s的请求超过2次

4.2 配置告警通知地址

修改alarm-settings.yml配置文件:

hooks:webhook:default:is-default: trueurls:- http://127.0.0.1:9092/alarm/notify

4.3 下发告警信息

由于我配置的告警通知地址是项目的接口地址,这样方便我将告警信息投放到不同的接收方,如QQ邮箱,企业微信、微信等等,我这里是将告警信息发给 企业微信机器人

在这里插入图片描述

4.4 测试告警

还是以我们的新增角色接口为例子,多次请求之后,接口响应慢,服务请求成功率下降,都会触发告警。

在这里插入图片描述

查看SkyWalking监控控制台情况:

在这里插入图片描述

4.5 慢SQL查询

在生产环境中,我们经常会遇到一些慢SQL,也可以通过SkyWalking监控查到,如下慢SQL耗时情况,方便我们优化SQL,特别方便。

在这里插入图片描述

总结

SkyWalking 是一款功能强大且易于集成的 APM 工具,适合用于微服务架构下的性能监控、故障诊断和优化。通过其强大的分布式追踪、性能分析、错误监控等功能,我们能够深入了解应用的运行状态,定位问题并进行针对性的优化。

优点:

  • 易于集成:支持多种语言的 Agent,Java、Node.js、PHP 等都可以方便地集成。
  • 实时监控:可以实时查看服务性能、请求链路、数据库查询等信息,帮助及时发现和解决问题。
  • 强大的可视化功能:UI 展示清晰易懂,拓扑图和链路分析非常有帮助。

不足:

  • 配置复杂:对于初次使用者来说,配置可能较为繁琐,尤其是在集群部署时,需要关注各组件之间的协调。
  • 资源消耗:SkyWalking 的后端服务(特别是 Elasticsearch)对资源有一定要求,在大规模部署时可能需要适当扩展,所以一般企业项目线上都不集成SkyWalking 日志采集。

总的来说,SkyWalking 是一个强大的监控工具,能够为微服务架构提供精准的性能和故障诊断。如果你正在使用微服务或云原生架构,SkyWalking 无疑是一个值得考虑的解决方案。

相关文章:

SkyWalking 10.1.0 实战:从零构建全链路监控,解锁微服务性能优化新境界

文章目录 前言一、集成SkyWalking二、SkyWalking使用三、SkyWalking性能剖析四、SkyWalking 告警推送4.1 配置告警规则4.2 配置告警通知地址4.3 下发告警信息4.4 测试告警4.5 慢SQL查询 总结 前言 在传统监控系统中&#xff0c;我们通过进程监控和日志分析来发现系统问题&…...

1. 构建grafana(版本V11.5.1)

一、grafana官网 https://grafana.com/ 二、grafana下载位置 进入官网后点击downloads&#xff08;根据自己的需求下载&#xff09; 三、grafana安装&#xff08;点击下载后其实官网都写了怎么安装&#xff09; 注&#xff1a;我用的Centos&#xff0c;就简略的写下我的操作步…...

STM32-知识

一、Cortex-M系列双指针 Cortex-M系列的MSP与PSP有一些重要的区别&#xff0c;双指针是为了保证OS的安全性和稳健性。本质上&#xff0c;区别于用户程序使用PSP&#xff0c;操作系统和异常事件单独使用一个MSP指针的目的&#xff0c;是为了保证栈数据不会被用户程序意外访问或…...

SearchBar组件的功能与用法

文章目录 1. 概念介绍2. 使用方法3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"Material3中的IconButton"相关的内容&#xff0c;本章回中将介绍SearchBar组件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在本…...

解决VsCode的 Vetur 插件has no default export Vetur问题

文章目录 前言1.问题2. 原因3. 解决其他 前言 提示&#xff1a; 1.问题 Cannot find module ‘ant-design-vue’. Did you mean to set the ‘moduleResolution’ option to ‘node’, or to add aliases to the ‘paths’ option? Module ‘“/xxx/xxx/xxx/xxx/xxx/src/vie…...

游戏引擎学习第96天

讨论了优化和速度问题&#xff0c;以便简化调试过程 节目以一个有趣的类比开始&#xff0c;提到就像某些高端餐厅那样&#xff0c;菜单上充满了听起来陌生或不太清楚的描述&#xff0c;需要依靠服务员进一步解释。虽然这听起来有些奇怪&#xff0c;但实际上&#xff0c;它反映…...

【项目总结】易到家家政服务平台 —— 派单调度(7)

派单调度需求分析 在抢单业务中&#xff0c;用户下单成功由服务人员或机构进行抢单&#xff0c;抢单成功服务人员上门服务&#xff0c;除了抢单业务系统还设计了派单业务&#xff0c;由系统根据用户订单的特点自动派给合适的服务人员。 流程如下&#xff1a; 首先获取待分配…...

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 0基础…...

Flink-DataStream API

一、什么样的数据可以用于流式传输 Flink的DataStream API 允许流式传输他们可以序列化的任何内容。Flink自己的序列化程序用于 基本类型&#xff1a;即字符串、长、整数、布尔值、数组复合类型&#xff1a;元组、POJO和Scala样例类 基本类型我们已经很熟悉了&#xff0c;下…...

chromium-mojo

https://chromium.googlesource.com/chromium/src//refs/heads/main/mojo/README.md 相关类&#xff1a;https://zhuanlan.zhihu.com/p/426069459 Core:https://source.chromium.org/chromium/chromium/src//main:mojo/core/README.md;bpv1;bpt0 embedder:https://source.chr…...

Sourcetree 安装教程(附下载链接)

一、介绍 Sourcetree是一款免费的Git桌面工具&#xff0c;可以简化我们与Git之间敲代码的过程&#xff0c;使得我们可以更快的管理代码版本。 虽然现在各大IDE都内置Git功能&#xff0c;但在一些没有内置Git的IDE情况下&#xff0c;使用Sourcetree进行Git下的代码管理是一件非…...

NIO 和 AIO 的区别?

目录 设计理念 工作模式 适用场景 性能特点 NIO(Non - blocking I/O,非阻塞 I/O)和 AIO(Asynchronous I/O,异步 I/O)都是 Java 中用于实现高效 I/O 操作的机制,它们在设计理念、工作模式、适用场景等方面存在明显区别,以下为你详细介绍: 设计理念 NIO:NIO 基于事…...

Python中10个常用的接口自动化装饰器

更多Python学习内容&#xff1a;ipengtao.com 装饰器&#xff08;Decorators&#xff09;是Python中一种强大的编程工具&#xff0c;它们用于修改或增强函数或方法的行为。在接口自动化测试中&#xff0c;装饰器可以起到简化代码、提高代码可维护性和可重用性的作用。本文将介…...

Odoo17 0.1常见的QWeb 模板语言指令的详细总结

Odoo QWeb 模板语言提供了许多指令 (directives) 来增强 HTML 模板的功能&#xff0c;使其能够动态地展示数据、进行条件判断、循环遍历、以及实现更复杂的逻辑。 这些指令都以 t- 开头作为属性添加到 HTML 标签上。 以下是一些常见的 Odoo QWeb 模板语言指令的详细总结&#…...

螺旋矩阵 II

螺旋矩阵 II 一、题目描述 给定一个正整数 n&#xff0c;请你生成一个包含 1 到 n^2 所有元素的 n x n 正方形矩阵&#xff0c;元素顺序按顺时针的方式进行螺旋排列。 示例 1&#xff1a;输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a;…...

Object:所有类的超类

定义&#xff1a;所有类的超(父)类。 Object有下面几个常用的方法&#xff1a; equals()&#xff1a;比较内存地址是否指向相同getclass()&#xff1a;获取类的信息--反射领域hashcode 散列码--根据地址生成wait -- 线程进入等待状态&#xff0c;让出CPU和锁notify -- 唤醒等待…...

LabVIEW 开发航天项目软件

在航天项目软件开发中&#xff0c;LabVIEW 凭借其图形化编程优势被广泛应用。然而&#xff0c;航天项目的高可靠性、高精度及复杂环境适应性要求&#xff0c;使得在使用 LabVIEW 开发时&#xff0c;有诸多关键要点需要特别关注。本文将详细分析在开发航天项目软件时需要重点注意…...

docker部署superset并连接华为MRS hive数据库

下载构建源码 这个项目实现了汉化和开箱即用&#xff0c;感谢大佬 GitHub - lutinglt/superset-zh: Superset 汉化, Superset 中文版 替换国内apt源 查看debian版本&#xff0c;不同版本替换apt源的内容不同 cat /etc/debian_version我这里是11.9版本 apt源文件sources.li…...

在 Flutter 实现下拉刷新、上拉加载更多和一键点击回到顶部的功能

在 Flutter 中&#xff0c;实现下拉刷新、上拉加载更多和一键点击回到顶部的功能&#xff0c;通常会结合使用 RefreshIndicator、ListView 和 ScrollController 来实现这些交互效果。下面分别介绍如何实现这些功能。 1. 下拉刷新 Flutter 提供了 RefreshIndicator 组件来实现…...

Linux常见命令——系统定时任务

文章目录 crontab 服务管理crontab -e :编辑crontab 定时任务crontab -l 查看crontab 任务crontab -r 删除当前用户所有的crontab 任务 crontab 服务管理 systemctl status crond该系统进程是开机自启动&#xff0c;并且被打开了&#xff0c;可以使用。 crontab -e :编辑cr…...

国产编辑器EverEdit - 书签功能介绍

1 书签 1.1 应用场景 当用户在文档中多处进行编辑时&#xff0c;为了方便在多个编辑位置跳转&#xff0c;使用书签功能可以方便记录各个位置。 1.2 使用方法 1.2.1 切换书签 设置或取消光标所在行的书签 方法1&#xff1a;选择主菜单查找 -> 书签 -> 切换书签 方法2&…...

【Hadoop】大数据权限管理工具Ranger2.1.0编译

目录 ​编辑一、下载 ranger源码并编译 二、报错信息 报错1 报错2 报错3 报错4 一、下载 ranger源码并编译 ranger官网 https://ranger.apache.org/download.html 由于Ranger不提供二进制安装包&#xff0c;故需要maven编译。安装其它依赖&#xff1a; yum install gcc …...

推荐算法实践:movielens数据集

MovieLens 数据集介绍 MovieLens 数据集是由明尼苏达大学的GroupLens研究小组维护的一个广泛使用的电影评分数据集&#xff0c;主要用于推荐系统的研究。该数据集包含用户对电影的评分、标签以及其他相关信息&#xff0c;是电影推荐系统开发与研究的常用数据源。 数据集版本 …...

基于 PyTorch 的树叶分类任务:从数据准备到模型训练与测试

基于 PyTorch 的树叶分类任务&#xff1a;从数据准备到模型训练与测试 1. 引言 在计算机视觉领域&#xff0c;图像分类是一个经典的任务。本文将详细介绍如何使用 PyTorch 实现一个树叶分类任务。我们将从数据准备开始&#xff0c;逐步构建模型、训练模型&#xff0c;并在测试…...

生成式语言模型技术全解析

一、引言 在人工智能领域&#xff0c;生成式语言模型&#xff08;Generative Language Models&#xff0c;GLMs&#xff09;无疑是近年来最为耀眼的明星。从早期的简单语言模型到如今如DeepSeek、Qwen 2.5 Max等具有强大能力的先进模型&#xff0c;它们在自然语言处理的各个方…...

香港中文大学 Adobe 推出 MotionCanvas:开启用户掌控的电影级图像视频创意之旅。

简介&#xff1a; 亮点直击 将电影镜头设计引入图像到视频的合成过程中。 推出了MotionCanvas&#xff0c;这是一种简化的视频合成系统&#xff0c;用于电影镜头设计&#xff0c;提供整体运动控制&#xff0c;以场景感知的方式联合操控相机和对象的运动。 设计了专门的运动条…...

bazel 小白理解

Bazel命令是用于构建和测试软件项目的一个强大工具&#xff0c;尤其适用于大规模和多语言的软件项目。对于小白来说&#xff0c;可以这样理解Bazel及其命令&#xff1a; Bazel的基本概念 构建系统&#xff1a;Bazel是一个构建系统&#xff0c;它的主要任务是自动化地编译和链…...

基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能

一、介绍 蘑菇识别系统&#xff0c;本系统使用Python作为主要开发语言&#xff0c;基于TensorFlow搭建卷积神经网络算法&#xff0c;并收集了9种常见的蘑菇种类数据集【“香菇&#xff08;Agaricus&#xff09;”, “毒鹅膏菌&#xff08;Amanita&#xff09;”, “牛肝菌&…...

基于 STM32 平台的音频特征提取与歌曲风格智能识别系统

标题:基于 STM32 平台的音频特征提取与歌曲风格智能识别系统 内容:1.摘要 摘要&#xff1a;本文介绍了一种基于 STM32 平台的音频特征提取与歌曲风格智能识别系统。该系统通过对音频信号进行特征提取和分析&#xff0c;实现了对歌曲风格的自动识别。在特征提取方面&#xff0c…...

AUTOGPT:基于GPT模型开发的实验性开源应用程序; 目标设定与分解 ;;自主思考与决策 ;;信息交互与执行

目录 AUTOGPT是一款基于GPT模型开发的实验性开源应用程序目标设定与分解自主思考与决策信息交互与执行AUTOGPT是一款基于GPT模型开发的实验性开源应用程序 目标设定与分解 自主思考与决策 信息交互与执行 AUTOGPT是一款基于GPT模型开发的实验性开源应用程序,它能让大语言模…...

DeepSeek底层揭秘——知识图谱与语料库的联邦学习架构

目录 1. 知识图谱与语料库的联邦学习架构 2. 技术要素 3. 技术难点与挑战 4. 技术路径 5. 应用场景 6. 最新研究与技术进展 7. 未来趋势 8. 实际案例 猫哥说 1. 知识图谱与语料库的联邦学习架构 (1) 定义 “知识图谱与语料库的联邦学习架构”是一种结合知识图谱&…...

MVVM设计模式

‌MVVM&#xff08;Model-View-ViewModel&#xff09;是一种软件设计模式,MVVM模式由三个主要部分组成&#xff1a; ‌Model&#xff08;模型&#xff09;‌&#xff1a;负责管理应用程序的业务逻辑和数据。它不关心UI如何展示数据&#xff0c;主要负责与服务器通信和数据处处…...

5.实时推荐系统的设计与实现

接下来我们将学习实时推荐系统的设计与实现。实时推荐系统需要处理大规模数据&#xff0c;并在用户交互时提供即时的推荐结果。这一课我们将介绍以下内容&#xff1a; 实时推荐系统的基本概念实时推荐系统的架构设计实时推荐系统的关键技术实践示例 1. 实时推荐系统的基本概念…...

分层解耦-ioc引入

内聚: 软件中各个功能模块内部的功能联系。 耦合: 衡量软件中各个层/模块之间的依赖、关联的程度。 软件设计原则: 高内聚低耦合。...

Docker安装常用软件说明

1.总体步骤 2.安装tomcat docker run -d -p 8080:8080 --name tomcat1 tomcat:11.0.8 访问tomcat猫首页 出现404 这是正常情况 Docker 默认采用的是 NAT 网络模式&#xff0c;所以会自动创建 IPtable 规则并自动开放端口&#xff0c;所以无需考虑防火墙问题 新版Tomcat已经…...

陶氏环面包络减速机:为工业视觉检测注入“精准动力”!

在工业4.0时代&#xff0c;视觉检测技术已成为智能制造的核心环节。无论是精密电子元件的检测&#xff0c;还是汽车零部件的质量把控&#xff0c;视觉检测系统都需要极高的精度、稳定性和响应速度。而这一切&#xff0c;离不开一颗强大的“心脏”——陶氏环面包络减速机。 一、…...

标准日本语 导学

新版标准日本语-初级 结构 初级 上 初级 下 每章结构 教学方法...

vscode怎么更新github代码

vscode怎么更新github代码 打开终端&#xff1a; 在 VS Code 中&#xff0c;使用快捷键 Ctrl (Mac 上是 Cmd) 打开终端。 导航到项目目录&#xff1a; 确保你当前所在的终端目录是你的项目目录。如果不是&#xff0c;可以使用 cd 命令导航到项目目录&#xff0c;例如&#xf…...

【转载】开源鸿蒙OpenHarmony社区运营报告(2025年1月)

●截至2025年1月31日&#xff0c;开放原子开源鸿蒙&#xff08;OpenAtom OpenHarmony&#xff0c;简称“开源鸿蒙”或“OpenHarmony”&#xff09;社区累计超过8200名贡献者&#xff0c;共63家成员单位&#xff0c;产生51.2万多个PR、2.9万多个Star、10.5万多个Fork、68个SIG。…...

Pdf手册阅读(1)--数字签名篇

原文阅读摘要 PDF支持的数字签名&#xff0c; 不仅仅是公私钥签名&#xff0c;还可以是指纹、手写、虹膜等生物识别签名。PDF签名的计算方式&#xff0c;可以基于字节范围进行计算&#xff0c;也可以基于Pdf 对象&#xff08;pdf object&#xff09;进行计算。 PDF文件可能包…...

【C#】任务调度的实现原理与组件应用Quartz.Net

Quartz 是一个流行的开源作业调度库&#xff0c;最初由 Terracotta 开发&#xff0c;现在由 Terracotta 的一部分 Oracle 所有。它主要用于在 Java 应用程序中调度作业的执行。Quartz 使用了一种复杂的底层算法来管理任务调度&#xff0c;其中包括任务触发、执行、持久化以及集…...

HTML之JavaScript函数声明

HTML之JavaScript函数声明 1. function 函数名(){}2. var 函数名 function(){}<!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1…...

如何在 Qt 中添加和使用系统托盘图标

在 Qt 中实现系统托盘图标是一个常见的需求&#xff0c;尤其是在桌面应用程序中。系统托盘图标可以让应用程序在后台运行时仍然具有可见性&#xff0c;同时避免占用过多的桌面空间。本文将详细介绍如何在 Qt 项目中添加托盘图标&#xff0c;并通过资源系统&#xff08;.qrc 文件…...

day5QT套接字通信

Widget.cpp #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);objtimer new QTimer (this);//连接定时器的timeout信号到启动的槽函数//connect(objtimer,&…...

JVM速成=。=

JVM跨平台原理 跨平台&#xff1a;一次编译&#xff0c;到处运行 本质&#xff1a;不同操作系统上运行的JVM不一样&#xff0c;只需要把java程序编译成一份字节码文件&#xff0c;JVM执行不同的字节码文件。 Java是高级语言&#xff0c;提前编译一下&#xff08;变成字节码文件…...

操作系统中的任务调度算法

在多任务操作系统中&#xff0c;任务调度算法&#xff08;Task Scheduling Algorithm&#xff09;是决定CPU资源如何分配给进程或线程的核心机制。优秀的调度算法需要平衡响应时间、吞吐量和公平性&#xff0c;同时适应不同的应用场景。 任务调度的核心目标 CPU利用率最大化&a…...

第七节 文件与流

基本的输入输出&#xff08;iostream&#xff09; C标准库提供了一组丰富的输入/输出功能&#xff0c;C的I/O发生在流中&#xff0c;流是字节序列。如果字节流是从设备&#xff08;键盘、磁盘驱动器、网络连接等&#xff09;流向内存&#xff0c;叫做输入操作。如果字节流是从…...

回首2024,展望2025

2024年&#xff0c;是个充满挑战与惊喜的年份。在这366个日夜里&#xff0c;我站在编程与博客的交汇点&#xff0c;穿越了无数的风景与挑战&#xff0c;也迎来了自我成长的丰收时刻。作为开发者的第十年&#xff0c;我依然步伐坚定&#xff0c;心中始终带着对知识的渴望与对自我…...

Ubuntu指令学习(个人记录、偶尔更新)

Ubuntu指令学习 0、一点常用指令列表一、Ubuntu下复制与移动&#xff0c;cp/mv二、Ubuntu下echo 与 重定向>,>>三、Ubuntu下chmod,用户权限四、Ubuntu下的tar打包&#xff0c;gzip压缩五、Ubuntu(22.04)下系统语言为中文&#xff0c;切换主目录文件名为英文。六、Ubun…...

【牛客】动态规划专题一:斐波那契数列

文章目录 DP1 斐波那契数列法1&#xff1a;递归法2&#xff1a;动态规划法3&#xff1a;优化空间复杂度 2.分割连接字符串3. 给定一个字符串s和一组单词dict&#xff0c;在s中添加空格将s变成一个句子 DP1 斐波那契数列 法1&#xff1a;递归 // 递归 #include <iostream>…...