avatar
文章
17
标签
10
分类
6

主页
档案
标签
分类
AZoooGo
主页
档案
标签
分类

AZoooGo

mongodb 慢查分析和索引优化
发表于2023-08-18|mongodb|mongodb| 条评论
前言 MongoDB 作为一款非常流行的 NoSQL 数据库,由于其灵活的数据模型和易用性,被广泛应用于各种业务场景中。然而,随着数据量的增长和查询复杂度的提高,数据库的性能问题逐渐显现出来,其中最常见的就是查询速度的下降,即我们常说的“慢查询”。 慢查询不仅会影响到应用的性能,还可能因此导致整个系统的响应速度下降,严重影响用户体验。因此,对 MongoDB 的慢查询进行分析,并通过优化索引等方法提高查询性能,是每一位使用 MongoDB 的开发者必须掌握的技能。 在接下来的文章中,我将详细介绍 MongoDB 的慢查询分析和索引优化的相关知识。 使用 Profiling 工具进行慢查日志收集 Profiling 工具 Profiling 是 mongodb 的查询分析工具,可以通过其收集 mongo 命令的执行信息。收集的信息将会记录在 system.profile 集合中。 可以通过以下命令来查看是否开启了 Profiling 工具: 1db.getProfilingStatus() 以下是一个返回的示例: 1{ was: 0, slowms: 100, sampleRa ...
mongodb 入门
发表于2023-07-20|mongodb|mongodb| 条评论
前言 MongoDB 是一种专为快速开发互联网 Web 应用而设计的数据库,它的设计目标是简洁、灵活,并且能够作为 Web 应用开发栈的重要组成部分。在众多的非关系型数据库中,MongoDB 最接近关系型数据库的特性和表现,这使得它在处理复杂数据结构时,既具有非关系型数据库的灵活性,又不失关系型数据库的严谨性。 在接下来的文章中,我将从零开始,介绍 MongoDB 的基本使用,让各位读者能够顺利地入门这个强大的数据库。 为什么是 MongoDB MongoDB 的优势很明显,它基于 Json 的数据模型十分贴合开发者的设计思维,灵活动态的 schema 能够极大简化数据库的设计流程。以下引用MongoDB 开发者团队的一次技术分享,你可以根据项目状况判断是否要选择 MongoDB。 如果你还在为是否应该使用 MongoDB 而发愁,不如做几个选择题来辅助决策: 应用不需要事务及复杂 join 支持新应用; 需求会变,数据模型无法确定,想快速迭代开发; 应用需要2000-3000以上的读写QPS(更高也可以); 应用需要TB甚至 PB 级别数据存储; 应用发展迅速,需要能快速水平扩展 ...
使用 docker 构建各种服务(持续更新)
发表于2023-06-17|docker|backend•docker| 条评论
前言 作为后端开发者,日常开发中总是需要依赖到各种各样的环境,如数据库、消息队列、配置中心,有时候还需要调试负载均衡和反向代理等。代码开发可能只是小问题,如何搞定开发环境才是比较麻烦的。 在 docker 出现之前,如果要用到数据库,可能就只能在本地装一个数据库,但如果是初学者的话,总是很容易在安装的时候四处碰壁,需要各种各样的问题,浏览器打开一篇又一篇的博客,搜索如何解决问题。但在 docker 出现之后,一切都可以简化了。不仅构建各种各样的依赖服务简化了,由于容器的隔离性质,各服务之间出现冲突的概率也降低了,这是后端开发者的福音! 这篇文章主要收集和汇总一些常用服务通过 docker 进行部署的方法。 Tips:虽然 docker 容器本身相对于虚拟机来说更加轻量化,但是每个容器依旧需要一些额外的内存和 CPU 资源来维护容器的运行状态和隔离机制。若是个人计算机的性能不是特别高的话,不建议启动太多的容器。你也可以在容器启动的时候,设置每个容器的 CPU 和 内存限制,确保资源的有效利用。 mysql 123456docker run --name mysql \ -p 3306: ...
go 面向对象
发表于2023-06-05|golang|golang| 条评论
前言 在编程领域中,面向对象编程(OOP)是一种广泛使用的编程范式,它通过将数据和操作数据的函数封装成对象,以提高代码的可读性、可维护性和复用性。 Go 语言是一种静态类型、编译型的开源语言,其在语法上并不直接支持面向对象编程,但它提供了一种独特的方式来实现面向对象编程的一些核心理念,如封装、继承和多态。 在这篇文章中,我将探讨如何在 Go 语言中实现面向对象编程,展示一下如何通过 Go 语言的特性来实现面向对象编程。 面向对象思想 面向对象一般是跟面向过程相比较的,网上对这两个概念的介绍还是比较详细的,这里就简单的讲这两个概念分别表示什么。 面向过程,表示我们在编程时,解决一个问题会将其分成多个步骤,然后依次去实现这些步骤来达成目的。 面向对象,表示我们在编程时,会先将一个个事务抽象成对象的概念,然后赋予该对象一些属性和方法,之后让这些对象通过自己的方法,去达成最终的目的。 使用面向对象思想进行程序开发,主要的目的就是降低系统的耦合性,设计出易维护、易复用、易拓展的程序。 由于下面会出现面向对象的三个特性–封装、继承、多态,这里也简单介绍一下: 封装:也就是把客观事物封装成抽象的类, ...
消息队列之RabbitMQ
发表于2023-05-20|mq|mq•rabbitmq| 条评论
前言 在现代分布式系统和微服务架构中,消息队列扮演着至关重要的角色。它不仅能够实现系统之间的解耦,还能提供异步处理、负载均衡和削峰填谷等多种功能。RabbitMQ 作为业界广泛使用的消息代理之一,凭借其稳定性、灵活性和丰富的功能,成为了众多开发者和企业的首选。本文将深入探讨消息队列的基础知识,并逐步介绍 RabbitMQ 的基本概念、核心特性及其在 Go 语言中的应用,帮助你在项目中充分利用这一强大的工具。 消息队列 消息队列的作用 消息队列最主要的三个优势:解耦、异步、削峰。 解耦 解耦指的是系统各个部分可以独立开发、部署和维护,不需要直接互相依赖。通过消息队列,生产者和消费者可以独立运行,即使其中一个出现问题,也不会直接影响到另一个。 🌰举个例子: 假设有一个Web应用程序需要记录大量的日志信息,这些日志信息需要存储到不同的日志处理系统中,例如文件系统、数据库或云存储。 不使用消息队列: Web 应用程序直接调用多个日志处理系统的 API; 每次记录日志时,Web 应用程序必须等待所有日志处理系统处理完毕; 使用消息队列; Web 应用程序将日志消息发送到消息队列; 各个 ...
golang 并发
发表于2023-04-14|golang|golang| 条评论
前言 在之前的 Go 语言入门 文章中,我们介绍了 Go 语言的基础知识和大部分数据结构。然而,有一个非常常用且重要的数据结构——通道(channel),我们并未进行详述。这是因为通道是 Go 语言中一个复杂且重要的特性,对其的介绍和理解需要投入更多的篇幅和精力。 因此,在这篇文章中,我将专门对通道进行详细介绍,并深入解析 Go 语言的并发是如何处理的。希望通过这篇文章,读者能够深入理解 Go 语言的并发模型,以及通道在其中的作用和使用方法。 并发 进程、线程和协程 我们首先区分一下并发和并行的概念。并发指的是能处理不同的任务,但这些任务并不是同时处理的。而并行指的是能够同时处理不同的任务。真正的并行,是需要靠多核应用来支持的。 接下来,我们介绍一下标题所说的三种’程’。 进程: 进程是一个程序在一个数据集中的一次动态执行过程,可以简单理解为"正在执行的程序",它是CPU资源分配和调度的独立单位。 进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的 ...
golang 入门
发表于2023-04-06|golang|golang| 条评论
前言 最近比较空闲,重新回顾了一下 golang 的基础知识,再结合之前的笔记,汇总了下形成了这篇文章。 可以根据目录查看对应的内容,快速回顾一下基础知识。 使用的编辑器:goland 使用的 go 版本:go1.20 简介和入门知识 简介 golang 是由 google 开发的一门开源的编程语言,诞生于 2006年1月2日15点4分5秒(这是重点,要记的),与 2009 年 11 月开源,2012 年发布稳定版本。诞生之初的主要目标是“兼具 Python 等动态语言的开发速度和 C/C++ 等编译语言的性能和安全性”。 这是一门天生支持并发的语言,可以很简单的通过语言特性来实现并发。除此之外,go 还具有以下特点: 属于编译型语言,性能优越,支持跨平台(交叉编译) 丰富的标准库 语言层面定义源代码的格式化(代码风格统一) 语法简单,开发效率高 自带 GC go 语言的适用场景: 服务端开发 分布式系统、微服务 网络编程 区块链开发 云平台 go 文件结构 go 文件使用 .go 作为文件后缀。 所有的 go 文件都必须包含包名,通过 package 关键字指定,且同一个目 ...
12
avatar
憍陈那
一个后端程序员的一些碎碎念
文章
17
标签
10
分类
6
最新文章
MYSQL空间索引使用指南2024-08-11
用ebiten写一个炸弹人2024-07-18
MYSQL数据库踩坑合集2024-06-21
go&redis组合编写一个分布式队列2024-05-24
golang中的反射2024-05-20
分类
  • docker1
  • golang9
  • mongodb2
  • mq2
  • mysql2
  • nginx1
标签
mysql mq mongodb rabbitmq backend ebiten golang docker redis nginx
归档
  • 八月 20241
  • 七月 20241
  • 六月 20241
  • 五月 20242
  • 三月 20241
  • 一月 20241
  • 十二月 20231
  • 十一月 20231
©2023 - 2025 By 憍陈那
粤ICP备2024257928号