Ease Monitor 会把基础层,中间件层的监控数据和服务的监控数据打通,从总体的视角提供监控分析
1. 产品定位
Ease Monitor 有如下的产品定位:
关注于整体应用的SLA。 主要从为用户服务的 API 来监控整个系统。
关联指标聚合。 把有关联的系统及其指示聚合展示。主要是三层系统数据:基础层、平台中间件层和应用层。
快速故障定位。 对于现有的系统来说,故障总是会发生的,而且还是会频繁发生。故障发生不可怕,可怕的是故障的恢复时间过长。所以,快速的定位故障就相当关键。
换句话说,Ease Monitor 主要是为以下两个场景所设计的:
“体检”
容量管理。 提供一个全局的系统运行时数据的展示,可以让工程师团队知道是否需要增加机器或是其它资源。
性能管理。可以通过查看大盘,找到系统瓶颈,并有针对性的优化系统和相应代码。
“急诊”
定位问题。可以快速的暴露并找到问题的发生点,帮助技术人员诊断问题。
性能分析。当出现不预期的流量提升,可以快速的找到系统的瓶颈,并可以帮助开发人员深入代码。
下图是一个很常见的情况:
2. 设计原则
Ease Monitor 其实是一种 APM - Application Performance Management,但是又不同于传统意议上的 APM 软件。
主要有下面两个方面影响了 Ease Monitor 的设计:
不同的工程视角。我们知道,在很多公司有不同的工程师角色,如:开发、应用运维、系统运维等等,他们会站在不同的地方来看一个系统,例如:
经理们主要关心的是整个系统的运行健康情况,不太关注细节。
软件开发工程师主要关注应用的运行状态。
运维人员主要关注底层和各种中间件的运行状态。
不重新发明轮子。重新开发一个监控就像是重新发明一个轮子,因为这个世界上已经有很多的监控系统了。所以,我们不想重新发明轮子。我们希望我们的 Ease Monitor 是一个可以足够兼容现有的主流的监控软件,并且可以像乐高玩具一样,可以做到其中的组件随意替换随意剪裁的效果。
所以,Ease Monitor 有如下的设计原则:
使用主流的技术。 我们希望我们使用的技术是绝大多数的工程师团队熟悉并可以运维的。
组件都可以被替换和被裁剪。 因为不同的场景有不同的需求和业务形态,所以,设计必需做到有足够的灵活度可以容易地替换或裁剪相当的组件。
跟踪用户请求。 可以在一个分布式的系统,从端到端跟踪整个用户的调用。
引导工程能力。 好的一个监控至少可以让工程师做两件事:1)快速地定位故障,2)容易的做出工程上的决定。
驱动自动化。 一个好的监控系统可以和现有的集群控制系统关联起来,做自动化运维。如:自动化扩展,或是自动化的资源或流量调度。
全栈监控。我们必需对三层软件进行监控:
应用服务层。 在这一层上,主要是对应用服务的关键指针进行监控,如:HTTP request, Status code, Throughput, Latency …等等。
平台中间件层。 在这一层上,主要是参考相关的中间件进行监控,如:Nginx, Redis, Tomcat, Kafka, MySQL… 等等。
基础层。 在这一层上,主要是对相关主机的操作系统进行监控,如:CPU, Memory, Disk, Network … 等等。
自定义的仪表盘。 不同的用户有不同的视角,所以,用户可以定义自己感兴趣的仪表盘。
3. 系统架构设计
上图是整个 Ease Monitor 的架构图所用到的技术。
数据采集端
基础层和中间件指标采集 - Telegraf
日志采集 - Filebeat 和 Fluentd
Java Agent - EaseAgent (我们自研并开源了这个组件 - Apache 2.0许可证。详见 “技术细节” 一节)
数据处理管线
数据总线 - Apache Kafka
数据 ETL - Logstash
数据存储 - ElasticSearch
报警数据 - InfluxDB
报警触发和报警处理 - 我们自研了这个组件。详见 “技术细节” 一节
Web前端控制台 - 我们自研了这个组件。详见 “技术细节” 一节
对于这个技术架构,其中的技术都是主流的成熟的,其被设计于可以监控一个规模很大的集群,而且其中的组件是可以被灵活的裁剪和取代。
4. 系统要求和限制
目前,Ease Monitor 只支持如下的系统环境。
Java 语言系的应用。Java的版本得 >= 1.6
Linux 操作系统。
5. 功能展示
5.1 总体仪表板
总体仪表板主要展示了系统整体的健康和容量情况。
5.2 服务 SLA 日报
下图展示了服务的SLA报告,可以是全站的,也可以是单个服务的
5.3 面向服务的大盘
下图整合了服务的流量,服务的上下游,服务的TOP API,最慢的Tracing,相关资源使用指示的整体大盘
5.4 调用链跟踪
下图展示了一个整体调用拓扑图。
下图展示了一个请求在整个系统中的服务调用链以及相应的时间分布。
5.5 系统请求排名列表
系统请求排名列表列出了系统比较耗时的请求以及相关的请求热点。
Nginx 请求排名列表
JDBC 数据库操作排名列表
5.6 可自由定制的仪表盘
基础操作系统的仪表盘
6. 技术细节
6.1 EaseAgent
EaseAgent 是一个使用 Instrument API开发的 Java Agent,使用字节码增强的方式对应用的性能和调用链数据进行收集。
它针对使用Spring Boot的代码做了大量的增强。
兼容主流监控生态系统,如Kafka、ElasticSearch、Prometheus、Zipkin等。
EaseAgent 收集基本指标和服务跟踪日志,对性能分析和故障排除很有帮助。
6.1.1 设计原则
它遵从微服务架构设计,从服务的角度收集数据。
以无侵入的方式对应用程序字节码进行增强。
轻量级并且对CPU、内存和 I/O 资源使用率非常低。
对Java应用程序是安全可靠的。
6.1.2 兼容性与要求
记录性能数据和调用链日志
JDBC 4.0
HTTP Servlet、HTTP Filter
Spring Boot 2.2.x: WebClient 、 RestTemplate、FeignClient
RabbitMQ Client 5.x、 Kafka Client 2.4.x
Jedis 3.5.x、 Lettuce 5.3.x
记录访问日志
HTTP Servlet、HTTP Filter
Spring Cloud Gateway
支持在应用的日志中增加traceId and spanId。
提供健康检查的API。
提供应用就绪检查的API
6.1.3 采集数据种类
服务器收到 HTTP 请求的 Metric。
JDBC Connection 获取和 Statement 执行的 Metric, 以及调用关联信息(如 URL,SQL等)
兼容 Zipkin 协议的分布式调用链数据,包括:
HTTP 接收 与 发送
SQL 执行
Redis 访问
6.1.4 安装与使用
从 release 下载 easeagent.jar 后, 添加如下 Java 运行时参数:
-javaagent=easeagent.jar
6.2 事件报警
当前,Ease Monitor 的事件报警支持如下的用户案例。
指标 - 持续时间 - 阈值。 当一个指标在一个时间段内持续超过所配置的阈值,引发报警。如:在两分钟内 cpu 利用率持续超过 80% 。
指标 - 持续时间 - 百分比分布 - 阈值。 当一个指标在一个时间段间的某个百分比分布超过所配置的阈值,引发报警。如:99%的请求响应时间在两分钟内超过 300ms (即:P99)
指标 - 持续时间 - 函数 - 阈值。 支持一些简单的函数计算 Sum/Average/Min/Max/Count。如:在两分钟内 JVM 的 GC 次数超过所配置的阈值(使用Sum函数)。
日志 - 持续时间 - 关键词 - 匹配次数。监控日志中某个关键词在一个时间段内出现的次数超过某个数量,引发报警。关键词支持正规表达式匹配。
6.3 数据存储格式
下面是 Ease Monitor 在 ElasticSearch 中的数据存储格式。
6.3.1 索引格式
6.3.2 文档类型格式
我们有如下的文档类型的存储格式:
Index mapping template
ease-monitor-metrics-* - 用于存储时序类型的指标数据。
ease-monitor-aggregate-metrics-* - 用于存储 Java Agent 所采集的数据。
ease-monitor-logs-* - 用于存储日志数据。
Category
application - 表明是应用层的数据种类。
platform - 表明是平台层中间件的数据种类。如:nginx, redis, tomcat, mysql, kafka … 等等。
infrastructure - 表明是基础层的数据种类。如: CPU, MEM, DISK, NET 指标。
Document Type
组件名称
组件的指标和统计名。
相关示例:
文档
相关文章:
Ease Monitor 会把基础层,中间件层的监控数据和服务的监控数据打通,从总体的视角提供监控分析
1. 产品定位 Ease Monitor 有如下的产品定位: 关注于整体应用的SLA。 主要从为用户服务的 API 来监控整个系统。 关联指标聚合。 把有关联的系统及其指示聚合展示。主要是三层系统数据:基础层、平台中间件层和应用层。 快速故障定位。 对于现有的系统…...
苹果MacOS 调用自编译opencv的Dylib显示一个图片程序的步骤
前言 为了测试自编译的opencv库是否能在苹果MacOS系统下使用,需要写一个简单的测试程序。这个测试程序写起来不难,麻烦的是一些配置。网上的办法很多,里面因为版本的问题有一些坑。特此写了一个建立步骤,供大家参考。 1、新建一个…...
网页中调用系统的EXE文件,如打开QQ
遇到一个实际的问题,需要在网页中打开本地的某个工业软件。 通过点击exe文件就可以调用到程序。 比如双击qq的exe就可以启动qq的程序。 那么问题就变成了如何加载exe程序呢? 可以通过Java的 Process process Runtime.getRuntime().exec(command);通过…...
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager)
在 Ubuntu 系统上安装 npm 环境以及 nvm(Node Version Manager) 步骤 1: 更新系统包步骤 2: 安装 nvm步骤 3: 安装 Node.js 和 npm步骤 4: 设置默认 Node.js 版本(可选)总结 在 Ubuntu 系统上安装 npm 环境以及 nvm(No…...
Linux环境开启MongoDB的安全认证
文章目录 1. MongoDB安全认证简介1.1 访问控制1.2 角色1.3 权限 2. MongoDB中的常见角色3. MongoDB Shell3.1 下载MongoDB Shell3.2 通过MongoDB Shell连接MongoDB 4. 创建管理员用户5. 为具体的数据库创建用户6. 开启权限认证7. 重启MongoDB服务8. 连接MongoDB9. MongoDB数据库…...
实现了两种不同的图像处理和物体检测方法
这段代码实现了两种不同的图像处理和物体检测方法:一种是基于Canny边缘检测与轮廓分析的方法,另一种是使用TensorFlow加载预训练SSD(Single Shot Multibox Detector)模型进行物体检测。 1. Canny边缘检测与轮廓分析: …...
经典工具 | 使用SIFT预测错义突变的有害性
SIFT 用计算机替代人预测复杂事件的影响,是我们这个时代最令人兴奋的科学进展之一。SIFT就是这样一个应用于基因组学研究的经典工具。 SIFT可预测多种生物体的基因组变异,主要是错义突变的影响与效应,最大的特点是物种丰富,是一个…...
如何给 Apache 新站点目录配置 SELinux ?
在 web 服务器管理领域,确保服务器环境的安全性至关重要。SELinux (Security-Enhanced Linux) 是保护 Linux 服务器最有效的工具之一,它是一种强制访问控制 (MAC mandatory access control) 安全机制。当使用最流行的 web 服务器 Apache 提供 web 内容时…...
RTSP播放器EasyPlayer.js播放器分辨率高的视频在设置container的宽高较小时,会出现锯齿状的画面效果
流媒体播放器的核心技术及发展趋势展现了其在未来数字生活中的无限潜力。随着技术的不断进步和市场的持续发展,流媒体播放器将在内容创新、用户体验优化以及跨平台互通等方面取得新的突破。对于从业者而言,把握这些趋势并积极应对挑战将是实现成功的关键…...
云讷科技Kerloud无人飞车专利发布
云讷科技Kerloud无人飞车获得了“一种室内外两用的四旋翼无人飞车”的实用新型专利证书,作为科教社区第一款四旋翼飞车,这项技术结合了无人机和无人车的优势,提供了一种能够在多种环境下使用的多功能飞行器。 这项设计的优势如下ÿ…...
快速识别模型:simple_ocr,部署教程
快速识别图片中的英文、标点符号、数学符号、Emoji, 模型会输出图片中文字行的坐标位置、最低得分、识别结果。当前服务用到的模型:检测模型、数字识别、英文符号识别。 一、部署流程 1.更新基础环境 apt update2.安装miniconda wget https://repo.anaconda.com/…...
Qt交叉编译x86和arm心得
最近一直在Linux上开发qt程序,主要工作是在x86的Ubuntu上开发编译调试程序,确定没有问题后交叉编译到arm的linux系统上运行 1.环境 Qt的交叉编译环境厂家已经提供了,嵌入式的同事帮我安装调试的,具体就是装了厂家给的gcc编译套件…...
用CAXA CAD电子图板导入图框、标题栏并导出pdf的方法
1.导入图框: 点击调入图框->出现读入图框文件 一个一个点击,选择合适的图框 然后点击导入 2.导入标题栏: 调入标题栏->出现读入标题栏文件 一个一个点击,选择合适的标题栏,然后点击导入 3.导出pdf&#x…...
在 Ubuntu/Debian 上安装 Go
使用官方二进制文件安装(推荐) Go 提供了官方的二进制安装包,适用于大多数 Linux 发行版,包括 Ubuntu 和 Debian。步骤如下: 更新包索引: bash sudo apt update 安装依赖(如果尚未安装&#…...
设计模式之策略模式-工作实战总结与实现
文章目录 应用场景存在问题解决方案继续延伸 应用场景 假设有这样的业务场景,大数据系统把文件推送过来,根据不同类型采取不同的解析方式。多数的小伙伴就会写出以下的代码: public class Question {public static void main(String[] args…...
自动语音识别(ASR)与文本转语音(TTS)技术的应用与发展
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
实验十三 生态安全评价
1 背景及目的 生态安全是生态系统完整性和健康性的整体反映,完整健康的生态系统具有调节气候净化污染、涵养水源、保持水土、防风固沙、减轻灾害、保护生物多样性等功能。维护生态安全对于人类生产、生活、健康及可持续发展至关重要。随着城市化进程的不断推进&…...
【MySQL实战45讲笔记】基础篇——redo log 和 binlog
系列文章 基础篇——MySQL 的基础架构 目录 系列文章1. 重要的日志模块:redo log 和 binlog1.1 redo log1.2 binlog1.3 执行器和 InnoDB 引擎内部如何执行更新语句 1. 重要的日志模块:redo log 和 binlog 前面系统的了解了一个查询语句的执行流程&…...
Java 基于SpringBoot+vue框架的老年医疗保健网站
大家好,我是Java徐师兄,今天为大家带来的是Java Java 基于SpringBootvue框架的老年医疗保健网站。该系统采用 Java 语言开发,SpringBoot 框架,MySql 作为数据库,系统功能完善 ,实用性强 ,可供大…...
Java集合分页
一、前言 在Java开发中,若单次展示的数据量太大,会造成程序响应缓慢,就需要用到分页功能,每一页展示一定量的数据,分多次展示 ... 那么在List集合中,如何实现分页功能呢? 本文将以3种方式&…...
python语言基础-5 进阶语法-5.5 上下文管理协议(with语句)
声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。 5.5 上下文管理协议(with语句)(参考链接࿱…...
周志华深度森林deep forest(deep-forest)最新可安装教程,仅需在pycharm中完成,超简单安装教程
1、打开pycharm 没有pycharm的,在站内搜索安装教程即可。 2、点击“文件”“新建项目” 3、创建项目,Python版本中选择Python39。如果没有该版本,选择下面的Python 3.9下载并安装。 4、打开软件包,搜索“deep-forest”软件包&am…...
技术美术百人计划 | 《2.1 色彩空间介绍》笔记
总览 一、色彩发送器 色彩认知: 光源是出生点,光源发射出光线,光线通过直射反射折射等路径最终进入人眼。 但人眼接收到光线后,人眼的细胞产生了一系列化学反应。 由此把产生的信号传入大脑,最终大脑对颜色产生了认…...
设计模式:6、装饰模式(包装器)
目录 0、定义 1、装饰模式包含的四种角色 2、装饰模式的UML类图 3、示例代码 0、定义 动态地给对象添加一些额外的职责。就功能来说装饰模式相比生成子类更为灵活。 1、装饰模式包含的四种角色 抽象组件(Component):抽象组件是一个抽象…...
vue-office:word(.docx)、pdf、excel(.xlsx,.xls)格式文件预览
vue-office:word(.docx)、excel(.xlsx,.xls)格式文件预览 组件安装 // docx文档预览组件 npm install vue-office/docx vue-demi0.14.6// excel文档预览组件 npm install vue-office/excel vue-demi0.14.…...
简单工厂模式
简单工厂模式详解 定义 简单工厂模式(Simple Factory Pattern)是一种创建型设计模式,用于创建对象的实例。通过一个工厂类来决定实例化哪一个具体类,降低客户端与具体类之间的耦合。 对于长switch或者长if、else,且…...
得物彩虹桥架构演进之路-负载均衡篇
文 / 新一 一、前言 一年一更的彩虹桥系列又来了,在前面两期我们分享了在稳定性和性能2个层面的一些演进&优化思路。近期我们针对彩虹桥 Proxy 负载均衡层面的架构做了一次升级,目前新架构已经部署完成,生产环境正在逐步升级中…...
【大数据学习 | Spark-Core】spark-shell开发
spark的代码分为两种 本地代码在driver端直接解析执行没有后续 集群代码,会在driver端进行解析,然后让多个机器进行集群形式的执行计算 spark-shell --master spark://nn1:7077 --executor-cores 2 --executor-memory 2G sc.textFile("/home/ha…...
macos 使用 nvm 管理 node 并自定义安装目录
系统环境:MacOS Version 参考文章: Github 地址:https://github.com/nvm-sh/nvm 安装的方式是很简单的,直接执行下面的命令即可: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bas…...
MongoDB分片集群搭建
什么是分片 分片是一种跨多台机器分布数据的方法。MongoDB 使用分片来支持超大数据集和高吞吐量操作的部署。什么情况下使用分片 存储容量受单机限制,即磁盘资源遭遇瓶颈。读写能力受单机限制,可能是CPU、内存或者网卡等资源遭遇瓶颈,导致读…...
MySQL数据库基础
1.数据库的操作 1.1 显示当前数据库 show databses; 1.2 创建数据库 create database [if not exist] db_name; 创建名为db_test1的数据库 create database db_test1; 说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集;utf8,校验规则是 utf8_general_c…...
前端性能优化
前端性能优化是提升用户体验的重要环节,优化的目标是减少页面加载时间、提高交互响应速度、降低资源消耗。以下从 加载性能优化、渲染性能优化 和 交互性能优化 三个维度详细说明: 一、加载性能优化 目标是减少页面首次加载时间,提升页面的加…...
深度学习中的正则化技术
在深度学习中,正则化是一种防止模型过拟合的重要手段。过拟合是指模型在训练数据上表现良好,但在未见数据上表现不佳的现象。正则化通过引入额外的约束或信息来限制模型的复杂性,从而提高模型的泛化能力。本文将介绍几种常见的正则化技术&…...
工商银行湖仓智一体创新应用实践
数智技术已经成为企业数字化转型的核心动力 国家《“十四五”数字经济发展规划》指出数字经济是未来的主要经济形态,数据因其倍增效应和乘数效应,可以带来全要素效率的提升,已经成为数字经济的核心要素资源,是企业数字化转型的新要素、新动能。为了高质量推进企业数字化转…...
测试实项中的偶必现难测bug之模糊匹配逻辑
问题: 现在有一个场景,如果只是通过功能测试会比较难测,例如刚开始我们做会员的时候,只有白银会员,在用户分群的场景下,需要用条件逻辑匹配,当时开发用了like的匹配方式没有问题。1年后加了白银试用会员,导致在统计会员分群的时候明明条件选的是白银会员,但是统计的数…...
金融科技白皮书:2022-2023年度回顾与前瞻
在金融科技领域,2022至2023年见证了一系列创新技术的应用和发展。本白皮书将回顾过去一年的主要成就,并展望未来一年的发展趋势。 2022年亮点回顾 **低代码平台:**低代码平台通过高度抽象化和自动化的可视化过程,简化了应用程序开…...
40分钟学 Go 语言高并发:sync包详解(下)
sync包详解(下) 学习目标 知识点掌握程度应用场景WaitGroup使用熟练使用和理解原理并发任务的同步等待Once实现原理理解底层实现和使用场景单例模式、一次性初始化Pool性能优化掌握对象池的使用和调优高并发下的内存优化Cond应用场景了解条件变量的使用…...
android 使用MediaPlayer实现音乐播放--权限请求
在Android应用中,获取本地音乐文件的权限是实现音乐扫描功能的关键步骤之一。随着Android版本的不断更新,从Android 6.0(API级别23)开始,应用需要动态请求权限,而到了android 13以上需要的权限又做了进一步…...
空间计算、物理计算、实时仿真与创造拥有「自主行为」的小狗 | 播客《编码人声》
「编码人声」是由「RTE开发者社区」策划的一档播客节目,关注行业发展变革、开发者职涯发展、技术突破以及创业创新,由开发者来分享开发者眼中的工作与生活。 虚拟世界与现实世界的界限逐渐模糊,已然成为不争的事实。但究竟哪些曾经的幻想已然…...
Day24 回溯算法part03
93.复原IP地址 本期本来是很有难度的,不过 大家做完 分割回文串 之后,本题就容易很多了 题目链接/文章讲解:代码随想录 视频讲解:回溯算法如何分割字符串并判断是合法IP?| LeetCode:93.复原IP地址_哔哩哔哩_bilibili class Solution {private List<String> resul…...
PyTorch:如何使用TensorBoard优化和监控深度学习模型
如何使用TensorBoard优化和监控深度学习模型 为了提供一个更加详细和完整的指南关于如何使用 TensorBoard 进行深度学习模型的监控与优化,我们将从TensorBoard的基础知识开始,一步步探讨如何设置和利用其各项功能。 1. TensorBoard简介与基本架构 Ten…...
FastAPI重载不生效?解决PyCharm中Uvicorn无法重载/重载缓慢的终极方法!
文章目录 📖 介绍 📖🏡 演示环境 🏡📒 重载缓慢 📒📝 问题概述🚨 相关原因📝 解决方案一📝 解决方案二📝 解决方案三📝 解决方案四⚓️ 相关链接 ⚓️📖 介绍 📖 在使用FastAPI开发时,reload=True 本应让你在修改代码后自动重启服务,提升开发效率…...
利用 GitHub 和 Hexo 搭建个人博客【保姆教程】
利用 GitHub 和 Hexo 搭建个人博客 利用 GitHub 和 Hexo 搭建个人博客一、前言二、准备工作(一)安装 Node.js 和 Git(二)注册 GitHub 账号 三、安装 Hexo(一)创建博客目录(二)安装 H…...
【无标题】
通过shell脚本分析部署nginx网络服务 1.接收用户部署的服务名称 2.判断服务是否安装 已安装;自定义网站配置路径为/www;并创建共享目录和网页文件;重启服务 没有安装;安装对应的软件包 3.测试 判断服务是否成功运行&a…...
金融数据中心容灾“大咖说” | 美创科技赋能“灾备一体化”建设
中国人民银行发布的《金融数据中心容灾建设指引》(JR/T 0264—2024)已于2024年7月29日正式实施。这一金融行业标准对金融数据中心容灾建设中的“组织保障、需求分析、体系规划、建设要求、运维管理”进行了规范和指导。面对不断增加的各类网络、业务、应…...
数据集-目标检测系列- 荷花 莲花 检测数据集 lotus>> DataBall
数据集-目标检测系列- 荷花 莲花 检测数据集 lotus>> DataBall DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 贵在坚持! 数据样例项目地址: * 相关项目 1)数据集可视化项…...
【SQL Server】华中农业大学空间数据库实验报告 实验六 视图
1.实验目的 通过课堂理论学习与实验课的实际操作,充分理解视图的相关概念,作用,以及特点,视图中定义的是对一个或多个基本表的查询语句,其本身并不保存数据,所有的数据都存储在数据库的表中,因…...
jetson orin系列开发版安装cuda的gpu版本的opencv
opencv安装包下载地址: https://github.com/opencv/opencv/扩展库下载地址: https://github.com/opencv/opencv_contrib1. 删除jetpack包中的opencv版本 原先的opencv库安装在目录/usr/lib/aarch64-linux-gnu/下(一般其他的第三方库也都安…...
android 使用SQLiteOpenHelper 如何优化数据库的性能
一、数据库设计优化 (Schema Design): 这是性能优化的基础。一个精心设计的数据库结构可以显著提高查询速度和减少存储空间。 范式化 (Normalization): 遵循数据库范式,特别是第一范式、第二范式和第三范式,可以消除数据冗余。冗余数据不仅浪费存储空间…...
海盗王集成网关和商城服务端功能golang版
之前用golang把海盗王的商城服务端和网关服务端都重写了一次。 后来在同时开启网关和商城服务时,发现窗口数量有点多,有时要找到商城窗口比较麻烦。 既然2个都是用golang govcl写的,是不是可以集成到一起,方便使用呢?…...