2025-02-25-Tue-T-Prometheus+Grafana
1. Promethues 简介
Prometheus 是由前 Google 工程师从 2012 年开始在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了证明这一点,Prometheus 于 2016 年 5 月加入 CNCF 基金会,成为继 Kubernetes 之后的第二个 CNCF 托管项目。Prometheus 是由前 Google 工程师从 2012 年开始在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。为了证明这一点,Prometheus 于 2016 年 5 月加入 CNCF 基金会,成为继 Kubernetes 之后的第二个 CNCF 托管项目。
1.1 Promethues特点
- 易于管理
- Prometheus核心部分只有一个单独的二进制文件,不存在第三方依赖(数据库,缓存等)。唯一需要的就是本地磁盘,因此不会出现级联故障等风险
- Promethues的
pull模型的架构方式,可以在任何地方(本地电脑,开发环境,测试环境)搭建所需的监控系统 - 对于复杂情况,可以使用Prometheus的
服务发现(Service Discovery)能力动态管理监控目标。 (例如对于新扩展的服务器,自动开始监控)
- 监控服务的内部运行状态
- Prometheus鼓励用户监控服务的内部状态, 基于promethues丰富的Client库。用户可以轻松地在应用程序中添加对Prometheus的支持。从而让用户可以获取应用内部真正的状态。
- 强大的数据模型
- 所有采集的监控数据均以指标(metric)的形式保存在内置的时间序列数据库当中(TSDB)。所有的样本除了基本的指标名称外,还有一组用于描述该指标的标签
1
2
3
# 指标名称(metric){标签}
http_request_status{code="200",content_path="/api/path",enviroment="production"}
2025-01-24-Fri-T-如何做一个开源项目
创建和维护一个开源项目是一个非常有意义的工作,它可以帮助你与全球开发者合作,同时建立个人或团队的影响力。以下是详细步骤,帮你从零开始创建一个成功的开源项目。
1. 确定项目目标
解决实际问题:选择一个对你或他人有用的问题作为项目的核心目标。
定义项目范围:明确项目的功能范围,避免过于宽泛。
简单开始:从一个小而实用的功能入手,后续逐步扩展。
2. 选择开源许可证
许可证的作用:它告诉用户和贡献者项目的使用规则。
常见开源许可证:
MIT:最宽松,允许几乎任何用途。
GPL:要求衍生项目也必须开源。
Apache 2.0:允许商业用途,同时保护作者的专利。
添加许可证: 创建一个 LICENSE 文件,并粘贴许可证文本。例如,MIT 许可证可以从 MIT License 模板 获取。
MIT
特点:
非常宽松,允许商业使用、修改、分发。
用户只需保留版权声明和许可证文本。
适用场景:任何开源项目,尤其是工具类、库类项目。
示例:许多现代项目(如 React)使用 MIT 许可证。
GPL(GNU General Public License)
特点:
用户可以自由使用和修改代码,但必须将修改后的代码也开源并使用相同许可证。
不适合希望代码被广泛商业化的项目。
适用场景:想保护代码开源精神的项目。
变体:
GPLv2:更严格。
GPLv3:增加对 SaaS 模型的限制。
Apache 2.0
特点:
类似 MIT,但额外提供专利授权保护。
如果你的代码包含创新算法,Apache 2.0 可以更好地保护你免受专利纠纷。
适用场景:对知识产权较为敏感的大型项目。
2025-01-14-Tue-T-统一建模语言(UML)指南
统一建模语言(UML)指南
文章来源visual Paradigm
UML 是统一建模语言的简称,它是一种由一整套图表组成的标准化建模语言。UML用于帮助系统开发人员阐明,展示,构建和记录软件系统的产出。UML代表了一系列在大型而复杂系统建模中被证明是成功的做法,是开发面向对象软件和软件开发过程中非常重要的一部分。UML主要使用图形符号来表示软件项目的设计,使用UML可以帮助项目团队沟通、探索潜在的设计和验证软件的架构设计。以下我们将向您详细介绍什么是UML、UML的历史以及每个UML图类型的描述,辅之以UML示例。
然而,在软件工程中,大多数从业者不使用UML,而是产生非正式的手绘图;不过,这些图例中仍往往包括UML的元素
UML 的起源
UML 的目标是提供一个标准的符号,可以被所有面向对象的方法使用,并选择和整合前兆符号的最佳元素。UML可用于广泛的应用程序,它为不同的系统和活动(如分布式系统,分析,系统设计和部署)提供了构造。
UML 是由 OMT 统一而来的符号,时序如下:
- 对象建模技术OMT [James Rumbaugh 1991] - 最适合分析和数据密集型信息系统。
- Booch [Grady Booch 1994] - 强项为设计和写作。Grady Booch 曾经为 Ada 语言方面做过广泛的工作,并且一直是该语言面向对象技术发展的主要参与者。尽管 Booch 方法很强大,但是但并未广为接受 (因为他的模型包含着很多云状,序人不整齐的感觉)
- OOSE(面向对象的软件工程[Ivar Jacobson 1992]) - 有一个称为用例的模型。用例是理解整个系统行为的强大技术(OO传统上很弱的领域)。
到了 1995 年,OOSE的创建者 Ivar Jacobson 也加入了Rational,他的想法(特别是有关“用例” (Use Case) 的概念)被整合于统一方法中,成为“统一建模语言”。Rumbaugh,Booch 和 Jacobson 的团队则被称为“三友”
2025-01-14-Tue-T-实体关系图ERD
实体关系图(ERD)指南
什么是实体关系图(ERD)?
数据库是软件系统中不可或缺的一个组成部分,若能在数据库工程中好好利用 ER 图,便能让您生成高质量的数据库设计,用于数据库创建,管理和维护,也为人员间的交流提供了具意义的基础。
本文将深入介绍 ER 图表。通过阅读本ERD指南,您将获得有关 ER 图和数据库设计的基本知识和技能。你会学到什么是 ERD,为什么要绘制 ERD,ERD 符号,如何绘制 ERD 等,以及一堆 ERD 示例
实体关系图也被称为 ERD、ER 图、实体联系模型、实体联系模式图或 ER 模型,是一种用于数据库设计的结构图。一幅 ERD 包含不同的符号和连接符,用于显示两个重要的信息: 系统范围内的主要实体,以及这些实体之间的相互关系。
什么是实体?
当我们谈论 ERD 中的实体时,我们经常提到诸如人员/角色(例如学生),有形商业对象(例如产品),无形商业对象(例如日志)等业务对象。“关系”則是这些实体在系统内的相互关联。
在典型的 ER 设计中,可以找到诸如圆角矩形和 (Rounded rectangle) 连接符(具有不同样式的末端)的符号来描述实体,它们的属性和相互关系。
ERD 的符号有哪些?
何时绘制ER图?
2024-11-26-Tue-T-SSM
SSM
SSM三者的关系
1 Spring IoC容器
父子工程
1 | <?xml version="1.0" encoding="UTF-8"?> |
1.1 组件到容器
注册组件的方式:
- 使用@Import注解标识启动类
1 | @Import({Dog.class, Person.class}) |
2024-11-21-Thu-T-SpringMVC
SpringMVC
1 SpringMVC 简介
MVC是一种软件架构思想, 将软件按照模型、视图、控制器来划分M: Model : 模型层, 指工程中的Java Bean, 作用是处理数据
Java Bean分为两类:
- 实体类Bean: 专门存储业务数据的, 比如User, Student
- 业务处理Bean: 指Service或者Dao, 专门用于处理业务逻辑和数据访问
V: View :视图层, 指工程中html或sp等页面, 作用是与用户进行交互, 展示数据C: Controller : 控制层, 指工程中的servlet, 作用是接受请求和响应浏览器
SpringMVC是一个Spring的子项目, SpringMVC有如下特点:
- Spring系列原生产品, 与IOC容器等基础设施无缝对接
- 基于原生的Servlet, 通过功能强大的前端控制器DispatcherServlet, 对请求和响应进行统一处理
- 表述层各细分领域需要解决的问题全方面覆盖, 提供全面解决方案
- 代码清晰简洁、组件化程度高、可插拔式组件即插即用、性能卓越..



