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

中间件--ClickHouse-12--案例-1-日志分析和监控

1、案例背景

一家互联网公司需要实时分析其服务器日志、应用日志和用户行为日志,以快速发现潜在问题并优化系统性能。

2、需求分析

  • 目标:实时分析日志数据,快速发现问题并优化系统性能。
  • 数据来源:
    • 服务器日志:如 Nginx、Tomcat、Docker等日志。
    • 应用日志:业务系统的运行日志。
    • 用户行为日志:用户操作记录(如点击、浏览、下单等)。
  • 输出:
    • 错误率、请求延迟、用户行为路径等关键指标。
    • 实时监控仪表盘。

3、解决思路

  • 日志采集:使用工具(如Filebeat或Fluentd)将日志数据写入Kafka。
  • 数据存储与分析:Kafka中的数据被导入到ClickHouse,利用其高效的压缩和查询性能进行日志分析。
  • 可视化:通过 Grafana 或 Redash 构建仪表盘,展示关键指标(如错误率、请求延迟等)。

4、技术选型

  • 日志采集:Filebeat 或 Fluentd。
  • 消息队列:Kafka(用于缓冲和传输日志数据)。
  • 存储与分析:ClickHouse(高性能 OLAP 数据库)。
  • 可视化:Grafana 或 Redash。

5、ClickHouse的作用

  • 高效存储:日志数据量通常非常庞大,ClickHouse的列式存储和高压缩比显著降低了存储成本。
  • 实时分析:支持毫秒级响应的复杂查询,适合对海量日志进行实时分析。
  • 灵活扩展:支持分布式部署,能够处理PB级别的日志数据。

6、基本实现步骤

(1)、日志采集

1. 安装 Filebeat:

bash示例:

sudo apt-get install filebeat
2. 配置 Filebeat:

编辑 filebeat.yml 文件,指定日志文件路径和 Kafka 输出:
yaml示例:

  filebeat.inputs:- type: logpaths:- /var/log/nginx/*.log- /var/log/application/*.logoutput.kafka:hosts: ["kafka-broker:9092"]topic: "logs" 

解释:
Input为采集日志相关配置,如nginx的log日志文件,应用程序的log日志文件,output指定输出到kafka。

3. 启动 Filebeat:

bash示例:

sudo service filebeat start

(2)、消息队列(Kafka)

1. 安装 Kafka:

bash示例:

wget https://downloads.apache.org/kafka/3.0.0/kafka_2.13-3.0.0.tgz
tar -xzf kafka_2.13-3.0.0.tgz
cd kafka_2.13-3.0.0
2. 启动 Kafka:

bash示例:

bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

(3)、数据消费与写入ClickHouse

1. 创建 ClickHouse 表:

sql示例:

   CREATE TABLE logs (timestamp DateTime,level String,message String,source String) ENGINE = MergeTree()ORDER BY (timestamp);

(4)、可视化

1. 安装 Grafana:

bash示例:

sudo apt-get install grafana
sudo service grafana-server start
2. 配置 ClickHouse 数据源:

在 Grafana 中添加 ClickHouse 数据源,配置连接信息。

3. 构建仪表盘:

创建图表展示日志的关键指标,如错误率、请求延迟等。

7、Spring Boot代码示例

使用Spring Boot消费Kafka数据并写入 ClickHouse。

(1)、添加依赖

<dependencies><!-- Spring Boot Starter --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!-- Kafka --><dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId></dependency><!-- ClickHouse JDBC --><dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.3.2</version></dependency><!-- Jackson for JSON Parsing --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId></dependency>
</dependencies>

(2)、配置 Kafka 和 ClickHouse

在 application.yml 中配置 Kafka 和 ClickHouse:

spring:kafka:bootstrap-servers: kafka-broker:9092consumer:group-id: clickhouse-groupauto-offset-reset: earliestdatasource:url: jdbc:clickhouse://clickhouse-server:8123/defaultdriver-class-name: com.clickhouse.jdbc.ClickHouseDriverusername: defaultpassword: 

(3)、Kafka 消费者

import org.springframework.kafka.annotation.KafkaListener;
import org.springframework.stereotype.Service;@Service
public class LogConsumer {private final LogRepository logRepository;public LogConsumer(LogRepository logRepository) {this.logRepository = logRepository;}@KafkaListener(topics = "logs", groupId = "clickhouse-group")public void consume(String message) {// 解析日志消息Log log = parseLog(message);// 写入 ClickHouselogRepository.save(log);}private Log parseLog(String message) {// 假设日志是 JSON 格式ObjectMapper objectMapper = new ObjectMapper();try {return objectMapper.readValue(message, Log.class);} catch (Exception e) {throw new RuntimeException("Failed to parse log message", e);}}
}

(4)、ClickHouse 数据访问层

创建Repository类。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;@Repository
public class LogRepository {private final JdbcTemplate jdbcTemplate;@Autowiredpublic LogRepository(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public void save(Log log) {String sql = "INSERT INTO logs (timestamp, level, message, source) VALUES (?, ?, ?, ?)";jdbcTemplate.update(sql, log.getTimestamp(), log.getLevel(), log.getMessage(), log.getSource());}
}

(5)、日志实体类

import java.time.LocalDateTime;public class Log {private LocalDateTime timestamp;private String level;private String message;private String source;// Getters and Setters
}

(6)、 Service 层(LogService.java)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;@Service
public class LogService {@Autowiredprivate JdbcTemplate jdbcTemplate;// 查询最近5分钟的错误率public List<Map<String, Object>> getErrorRate() {String sql = "SELECT program, error_count * 100.0 / total_requests AS error_percent " +"FROM log_errors_mv " +"WHERE minute >= now() - interval 5 minute " +"GROUP BY program";return jdbcTemplate.queryForList(sql);}// 查询指定时间段的响应时间分布public List<Map<String, Object>> getResponseTimeStats(String startTime, String endTime) {String sql = "SELECT percentileState(upstream_response_time, 0.95) AS p95 " +"FROM log_main " +"WHERE timestamp BETWEEN ? AND ?";return jdbcTemplate.queryForList(sql, startTime, endTime);}
}

(7)、Controller 层(LogController.java)

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Map;@RestController
public class LogController {@Autowiredprivate LogService logService;@GetMapping("/error-rate")public List<Map<String, Object>> getErrorRate() {return logService.getErrorRate();}@GetMapping("/response-time")public List<Map<String, Object>> getResponseTime(@RequestParam String startTime,@RequestParam String endTime) {return logService.getResponseTimeStats(startTime, endTime);}
}

8、关键优化与注意事项

以上仅为简单的示例,实际生产中每一步都会比较复杂,需要结合实际需求在做详细的数据库设计以及接口设计等。这里我们主要是理解做的思路。

(1)、表设计优化

  • 分区策略:按 toYYYYMMDD(timestamp) 分区,便于按天清理旧数据。
  • 物化视图:预聚合高频查询指标(如错误率、响应时间),避免重复计算。
  • 索引与排序:在 program 和 timestamp 字段上建立索引,加速过滤查询。

(2)、ClickHouse 配置优化

  • 资源分配:增大 max_threads 和 max_memory_usage,提升并发处理能力。
  • 日志压缩:使用 gzip 或 lz4 压缩日志数据,减少存储开销。

(3)、Spring Boot 性能调优

  • 连接池配置:使用 HikariCP 管理数据库连接(通过 spring.datasource.hikari.* 配置)。
  • 缓存机制:对高频查询结果使用 Redis 缓存(如错误率统计)。

逆风成长,Dare To Be!!!

相关文章:

中间件--ClickHouse-12--案例-1-日志分析和监控

1、案例背景 一家互联网公司需要实时分析其服务器日志、应用日志和用户行为日志&#xff0c;以快速发现潜在问题并优化系统性能。 2、需求分析 目标&#xff1a;实时分析日志数据&#xff0c;快速发现问题并优化系统性能。数据来源&#xff1a; 服务器日志&#xff1a;如 Ng…...

QML中的3D功能--自定义着色器开发

在 Qt 3D 中使用自定义着色器可以实现高度定制化的渲染效果。以下是完整的自定义着色器开发方案。 一、基础着色器创建 1. 创建自定义材质 qml import Qt3D.Core 2.15 import Qt3D.Render 2.15 import Qt3D.Extras 2.15Entity {components: [Transform { translation: Qt.v…...

如何防止接口被刷

目录 &#x1f6e1;️ 一、常见的防刷策略分类 &#x1f527; 二、技术实现细节 ✅ 1. 基于 IP 限流 ✅ 2. 给接口加验证码 ✅ 3. 使用 Token 限制接口访问权限 ✅ 4. 给接口加冷却时间&#xff08;验证码类经典&#xff09; ✅ 5. 使用滑动窗口限流算法&#xff08;更精…...

18、TimeDiff论文笔记

TimeDiff **1. 背景与动机****2. 扩散模型基础****3. TimeDiff 模型****3.1 前向扩散过程****3.2 后向去噪过程** 4、TimeDiff&#xff08;架构&#xff09;原理训练推理其他关键点解释 DDPM&#xff08;相关数学&#xff09;1、正态分布2、条件概率1. **与多个条件相关**&…...

docker底层原理

一句话&#xff0c;dockerfile里面的一行指令&#xff0c;就是一个layer层 docker底层原理 在机器上安装docker服务器端的程序&#xff0c;就会在机器上自动创建以下目录&#xff0c;默认安装路径是/var/lib/ docker服务器端的工作目录的作用如下&#xff0c;镜像的每一层的元数…...

YOLO拓展-NMS算法

1.概述 NMS&#xff08;non maximum suppression&#xff09;即非极大值抑制&#xff0c;其本质就是搜索局部极大值&#xff0c;抑制非极大值元素&#xff0c;可以理解为局部最大搜索。 这里不讨论通用的NMS算法(参考论文《Efficient Non-Maximum Suppression》对1维和2维数据…...

Docker Swarm 容器与普通 Docker 容器的网卡差异

问题背景 在 Docker Swarm 网络空间启动的容器有两张网卡&#xff08;eth0 和 eth1&#xff09;&#xff0c;而普通 Docker 容器只有一张网卡&#xff08;eth0&#xff09;。以下通过分析 ip addr show 和 ip link show 的输出&#xff0c;解释原因。 命令输出解析 Docker S…...

【Linux】线程ID、线程管理、与线程互斥

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f310; C 语言 上篇文章&#xff1a; 【Linux】线程&#xff1a;从原理到实战&#xff0c;全面掌握多线程编程&#xff01;-CSDN博客 下…...

服务器简介(含硬件外观接口介绍)

服务器&#xff08;Server&#xff09;是指提供资源、服务、数据或应用程序的计算机系统或设备。它通常比普通的个人计算机更强大、更可靠&#xff0c;能够长时间无间断运行&#xff0c;支持多个用户或客户端的请求。简单来说&#xff0c;服务器就是专门用来存储、管理和提供数…...

自动驾驶---决策规划之导航增强端到端

1 背景 自动驾驶算法通常包括几个子任务&#xff0c;包括3D物体检测、地图分割、运动预测、3D占用预测和规划。近年来&#xff0c;端到端方法将多个独立任务整合到多任务学习中&#xff0c;优化整个系统&#xff0c;包括中间表示&#xff0c;以实现最终的规划任务。随着端到端技…...

Datawhale AI春训营 世界科学智能大赛--合成生物赛道:蛋白质固有无序区域预测 小白经验总结

一、报名大赛 二、跑通baseline 在魔塔社区创建实例&#xff0c;根据教程完成速通第一个分数~ Datawhale-学用 AI,从此开始 三、优化实例&#xff08;这里是我的学习优化过程&#xff09; 1.先将官方给的的模型训练实例了解一遍&#xff08;敲一敲代码&#xff09; 训练模…...

基于Java(Struts2 + Hibernate + Spring)+MySQL实现的(Web)在线预约系统

基于Struts2 Hibernate Spring的在线预约系统 1.引言 1.1编写目的 针对医院在线预约挂号系统&#xff0c;提供详细的设计说明&#xff0c;包括系统的需求、功能模块、界面设计、设计方案等&#xff0c;以辅助开发人员顺利进行系统的开发并让项目相关者可以对这个系统进行分…...

PHP获取大文件行数

在PHP中获取大文件的行数时&#xff0c;直接读取整个文件到内存中可能会导致内存溢出&#xff0c;特别是对于非常大的文件。因此&#xff0c;最有效的方法是逐行读取文件并计数。以下是一些实现方法&#xff1a; 方法一&#xff1a;使用 fgets() fgets() 函数逐行读取文件&am…...

2024年网站开发语言选择指南:PHP/Java/Node.js/Python如何选型?

2024年网站开发语言选择指南&#xff1a;PHP/Java/Node.js/Python如何选型&#xff1f; 一、8大主流Web开发语言技术对比 1. PHP开发&#xff1a;中小型网站的首选方案 最新版本&#xff1a;PHP 8.3&#xff08;2023年11月发布&#xff09;核心优势&#xff1a; 全球78%的网站…...

Win7模拟器2025中文版:重温经典,掌上电脑体验

随着科技的快速发展&#xff0c;现代操作系统变得越来越高级&#xff0c;但许多用户仍然怀念经典的Windows 7系统。如果你也想重温那种熟悉的操作体验&#xff0c;Win7模拟器2025中文版 是一个不错的选择。这款软件能够让你在手机上轻松实现Windows 7系统的模拟&#xff0c;带来…...

HTML5+CSS3小实例:CSS立方体

实例:CSS立方体 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0&q…...

使用 Vite 快速搭建现代化 React 开发环境

1.检查环境 说明&#xff1a;检测环境&#xff0c;node版本为18.20.6。 2.创建命令 说明&#xff1a;创建命令&#xff0c;选择对应的选项。 npm create vitelatest 3.安装依赖 说明&#xff1a;安装相关依赖。 npm i...

Linux网络编程——基于ET模式下的Reactor

一、前言 上篇文章中我们已经讲解了多路转接剩下的两个接口&#xff1a;poll和epoll&#xff0c;并且知道了epoll的两种工作模式分别是 LT模式和ET模式&#xff0c;下来我们就实现的是一个简洁版的 Reactor&#xff0c;即半同步半异步I/O&#xff0c;在linux网络中&#xff0c…...

【现代深度学习技术】循环神经网络04:循环神经网络

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

1. 认识DartGoogle为Flutter选择了Dart语言已经是既

1. 认识Dart Google为Flutter选择了Dart语言已经是既定的事实&#xff0c;无论你多么想用你熟悉的语言&#xff0c;比如JavaScript、TypeScript、ArkTS等来开发Flutter&#xff0c;至少目前都是不可以的。 Dart 是由谷歌开发的计算机编程语言&#xff0c;它可以被应用于 Web/…...

学习设计模式《三》——适配器模式

一、基础概念 适配器模式的本质是【转换匹配&#xff0c;复用功能】&#xff1b; 适配器模式定义&#xff1a;将一个类的接口转换为客户希望的另外一个接口&#xff1b;适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器模式的目的&#xff1a;复用…...

【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识

【Java面试系列】Spring Boot微服务架构下的分布式事务处理与性能优化 - 2025-04-19详解 - 3-5年Java开发必备知识 引言 在微服务架构中&#xff0c;分布式事务处理和性能优化是面试中高频出现的主题。随着系统规模的扩大&#xff0c;如何保证数据一致性和系统性能成为开发者…...

Elasticsearch只返回指定的字段(用_source)

在Elasticsearch中&#xff0c;当你想要查询文档但不返回所有字段&#xff0c;只返回指定的字段&#xff08;比如这里的id字段&#xff09;&#xff0c;你可以使用_source参数来实现这一点。但是&#xff0c;有一点需要注意&#xff1a;Elasticsearch的_source字段默认是返回的…...

【Linux “sed“ 命令详解】

本章目录: 1. 命令简介sed 的优势&#xff1a; 2. 命令的基本语法和用法基本语法&#xff1a;参数说明&#xff1a;常见用法场景&#xff1a;示例1&#xff1a;替换文本示例2&#xff1a;删除空行示例3&#xff1a;从命令输出中处理内容 3. 命令的常用选项及参数常用命令动作&a…...

JMETER使用

接口测试流程: 1.获取接口文档&#xff0c;熟悉接口业务 2.编写接口测试用例以及评审 正例:输入正常的参数&#xff0c;验证接口能否正常返回 反例:权限异常(为空、错误、过期)、参数异常(为空、长度异常、类型异常)、其他异常(黑名单、调用次数限制)、兼容异常(一个接口被多种…...

JavaWeb 课堂笔记 —— 13 MySQL 事务

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…...

离线安装elasticdump并导入和导出数据

离线安装elasticdump 在 CentOS 或 RHEL 系统上安装 elasticdump&#xff0c;你可以使用 npm&#xff08;Node.js 的包管理器&#xff09;来安装&#xff0c;因为 elasticdump 是一个基于 Node.js 的工具。以下是步骤 先在外网环境下安装 下载nodejs和npm&#xff08;注意x8…...

WhatTheDuck:一个基于浏览器的CSV查询工具

今天给大家介绍一个不错的小工具&#xff1a;WhatTheDuck。它是一个免费开源的 Web 应用程序&#xff0c;允许用户上传 CSV 文件并针对其内容执行 SQL 查询分析。 WhatTheDuck 支持 SQL 代码自动完成以及语法高亮。 WhatTheDuck 将上传的数据存储为 DuckDB 内存表&#xff0c;继…...

关于数字信号与图像处理——基于Matlab的图像增强技术

本篇博客是在做数字信号与图像处理实验中的收获。 具体内容包括&#xff1a;根据给定的代码放入Matlab中分别进行两次运行测试——比较并观察运行后的实验结果与原图像的不同点——画出IJ的直方图&#xff0c;并比较二者差异。接下来会对每一步进行具体讲解。 题目&#xff1a…...

MySQL数据库 - 锁

锁 此笔记参考黑马教程&#xff0c;仅学习使用&#xff0c;如有侵权&#xff0c;联系必删 文章目录 锁1. 概述1.1 介绍1.2 分类 2. 全局锁2.1 介绍2.2 语法2.3 特点&#xff08;弊端&#xff09; 3. 表级锁3.1 介绍3.2 表锁3.3 元数据锁&#xff08;meta data lock&#xff0…...

免费多平台运行器,手机畅玩经典主机大作

软件介绍 飞鸟模拟器是一款面向安卓设备的免费游戏平台&#xff0c;支持PS2/PSP/NDS等十余种经典主机游戏运行。 该软件突破传统模拟器复杂操作模式&#xff0c;采用智能核心加载技术&#xff0c;用户只需双击主程序即可开启游戏之旅&#xff0c;真正实现"即下即玩"…...

计算机软考中级 知识点记忆——排序算法 冒泡排序-插入排序- 归并排序等 各种排序算法知识点整理

一、&#x1f4cc; 分类与比较 排序算法 最优时间复杂度 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性 应用场景与特点 算法策略 冒泡排序 O(n) O(n) O(n) O(1) 稳定 简单易实现&#xff0c;适用于小规模数据排序。 交换排序策略 插入排序 O(n) O(n) O…...

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统

STC32G12K128单片机GPIO模式SPI操作NorFlash并实现FatFS文件系统 Norflash简介NorFlash操作驱动代码文件系统测试代码 Norflash简介 NOR Flash是一种类型的非易失性存储器&#xff0c;它允许在不移除电源的情况下保留数据。NOR Flash的名字来源于其内部结构中使用的NOR逻辑门。…...

uniapp-x 二维码生成

支持X&#xff0c;二维码生成&#xff0c;支持微信小程序&#xff0c;android&#xff0c;ios&#xff0c;网页 - DCloud 插件市场 免费的单纯用爱发电的...

当HTTP遇到SQL注入:Java开发者的攻防实战手册

一、从HTTP请求到数据库查询:漏洞如何产生? 危险的参数拼接:Servlet中的经典错误 漏洞代码重现: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String category = request.getParameter("…...

[dp20_完全背包] 介绍 | 零钱兑换

目录 1. 完全背包 题解 背包必须装满 2.零钱兑换 题解 1. 完全背包 链接&#xff1a; DP42 【模板】完全背包 描述 你有一个背包&#xff0c;最多能容纳的体积是V。 现在有n种物品&#xff0c;每种物品有任意多个&#xff0c;第i种物品的体积为vivi ,价值为wiwi。 &a…...

精打细算 - GPU 监控

精打细算 - GPU 监控 在上一篇,咱们历经千辛万苦,终于让应用程序在 Pod 的“驾驶舱”里成功地“点火”并用上了 GPU。太棒了!但是,车开起来是一回事,知道车速多少、油耗多少、引擎水温是否正常,则是另一回事,而且同样重要,对吧? 我们的 GPU 应用跑起来了,但新的问题…...

故障诊断 | CNN-BiGRU-Attention故障诊断

效果一览 摘要 在现代工业生产中,设备的稳定运行至关重要,故障诊断作为保障设备安全、高效运行的关键技术,其准确性和及时性直接影响着生产效率与成本[[doc_refer_1]][[doc_refer_2]]。随着工业设备复杂性的不断增加,传统故障诊断方法已难以满足实际需求。深度学习技术凭借…...

单片机AIN0、AIN1引脚功能

目录 1. 模拟-数字转换器&#xff08;ADC&#xff09; 2. 交流电源&#xff08;AC&#xff09; 总结 这两部分有什么区别&#xff1f; 在这个电路图中&#xff0c;两个部分分别是模拟-数字转换器&#xff08;ADC&#xff09;和交流电源&#xff08;AC&#xff09;。以下是这…...

交换机与路由器的主要区别:深入分析其工作原理与应用场景

在现代网络架构中&#xff0c;交换机和路由器是两种至关重要的设备。它们在网络中扮演着不同的角色&#xff0c;但很多人对它们的工作原理和功能特性并不十分清楚。本文将深入分析交换机与路由器的主要区别&#xff0c;并探讨它们的工作原理和应用场景。 一、基本定义 1. 交换…...

uniApp小程序保存定制二维码到本地(V3)

这里的二维码组件用的 uv-ui 的二维码 可以按需引入 QRCode 二维码 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 <uv-qrcode ref"qrcode" :size"280" :value"payCodeUrl"></uv-qrcode>&l…...

手机投屏到电视方法

一、投屏软件 比如乐播投屏 二、视频软件 腾讯视频、爱奇艺 三、手机无线投屏功能 四、有线投屏 五、投屏器...

桌面应用UI开发方案

一、基于 Web 技术的跨平台方案 Electron Python/Go 特点&#xff1a; 技术栈&#xff1a;前端使用 HTML/CSS/JS&#xff0c;后端通过 Node.js 集成 Python/Go 模块或服务。 跨平台&#xff1a;支持 Windows、macOS、Linux 桌面端&#xff0c;适合开发桌面应用。 生态成熟&…...

FFmpeg+Nginx+VLC打造M3U8直播

一、视频直播的技术原理和架构方案 直播模型一般包括三个模块&#xff1a;主播方、服务器端和播放端 主播放创造视频&#xff0c;加美颜、水印、特效、采集后推送给直播服务器 播放端&#xff1a; 直播服务器端&#xff1a;收集主播端的视频推流&#xff0c;将其放大后推送给…...

山东科技大学深度学习考试回忆

目录 一、填空&#xff08;五个空&#xff0c;十分&#xff09; 二、选择题(五个&#xff0c;十分&#xff09; 三、判断题&#xff08;五个&#xff0c;五分&#xff09; 四、论述题&#xff08;四个&#xff0c;四十分&#xff09; 五、计算题&#xff08;二个&#xff…...

【Flutter动画深度解析】性能与美学的完美平衡之道

Flutter的动画系统是其UI框架中最引人注目的部分之一&#xff0c;它既能创造令人惊艳的视觉效果&#xff0c;又需要开发者对性能有深刻理解。本文将深入剖析Flutter动画的实现原理、性能优化策略以及设计美学&#xff0c;帮助你打造既流畅又美观的用户体验。 一、Flutter动画核…...

【嵌入式】——Linux系统远程操作和程序编译

目录 一、虚拟机配置网络设置 二、使用PuTTY登录新建的账户 1、在ubuntu下开启ssh服务 2、使用PuTTY连接 三、树莓派实现远程登录 四、树莓派使用VNC viewer登录 五、Linux使用talk聊天程序 1、使用linux自带的talk命令 2、使用c语言编写一个talk程序 一、虚拟机配置网络…...

零、HarmonyOS应用开发者基础学习总览

零、HarmonyOS应用开发者基础认证 1 整体学习内容概览 1 整体学习内容概览 通过系统化的课程学习&#xff0c;熟练掌握 DevEco Studio&#xff0c;ArkTS&#xff0c;ArkUI&#xff0c;预览器&#xff0c;模拟器&#xff0c;SDK 等 HarmonyOS 应用开发的关键概念&#xff0c;具…...

记录一次项目中使用pdf预览过程以及遇到问题以及如何解决

背景 项目中现有的pdf浏览解析不能正确解析展示一些pdf文件&#xff0c;要么内容一直在加载中展示不出来&#xff0c;要么展示的格式很凌乱 解决 方式一&#xff1a;&#xff08;优点&#xff1a;比较无脑&#xff0c;缺点&#xff1a;不能解决遇到的一些特殊问题&#xff0…...

致远OA——自定义开发rest接口

文章目录 :apple: 业务流程 &#x1f34e; 业务流程 代码案例&#xff1a; https://pan.quark.cn/s/57fa808c823f 官方文档&#xff1a; https://open.seeyoncloud.com/seeyonapi/781/https://open.seeyoncloud.com/v5devCTP/39/783.html 登录系统 —— 后台管理 —— 切换系…...