如何快速深入理解监控知识? | 技术干货


戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg

技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!


作者:叶左左

链接:https://www.jianshu.com/p/5d76d31b3958


0 监控目标

我们先来了解什么是监控,监控的重要性以及监控的目标,当然每个人所在的行业不同、公司不同、业务不同、岗位不同、对监控的理解也不同,但是我们需要注意,监控是需要站在公司的业务角度去考虑,而不是针对某个监控技术的使用。

640?wx_fmt=other

  1. 对系统不间断实时监控:实际上是对系统不间断的实时监控(这就是监控)

  2. 实时反馈系统当前状态:我们监控某个硬件、或者某个系统,都是需要能实时看到当前系统的状态,是正常、异常、或者故障

  3. 保证服务可靠性安全性:我们监控的目的就是要保证系统、服务、业务正常运行

  4. 保证业务持续稳定运行:如果我们的监控做得很完善,即使出现故障,能第一时间接收到故障报警,在第一时间处理解决,从而保证业务持续性的稳定运行。

1 监控方法


既然我们了解到了监控的重要性、以及监控的目的,那么下面我们需要了解下监控有哪些方法。


640?wx_fmt=other


  1. 了解监控对象:我们要监控的对象你是否了解呢?比如CPU到底是如何工作的?

  2. 性能基准指标:我们要监控这个东西的什么属性?比如CPU的使用率、负载、用户态、内核态、上下文切换。

  3. 报警阈值定义:怎么样才算是故障,要报警呢?比如CPU的负载到底多少算高,用户态、内核态分别跑多少算高?

  4. 故障处理流程:收到了故障报警,那么我们怎么处理呢?有什么更高效的处理流程吗?


2 监控核心


我们了解了监控的方法、监控对象、性能指标、报警阈值定义、以及故障处理流程几步骤,当然我们更需要知道监控的核心是什么?


640?wx_fmt=other


  1. 发现问题:当系统发生故障报警,我们会收到故障报警的信息

  2. 定位问题:故障邮件一般都会写某某主机故障、具体故障的内容,我们需要对报警内容进行分析,比如一台服务器连不上:我们就需要考虑是网络问题、还是负载太高导致长时间无法连接,又或者某开发触发了防火墙禁止的相关策略等等,我们就需要去分析故障具体原因。

  3. 解决问题:当然我们了解到故障的原因后,就需要通过故障解决的优先级去解决该故障。

  4. 总结问题:当我们解决完重大故障后,需要对故障原因以及防范进行总结归纳,避免以后重复出现。


3 监控工具


下面我们需要选择一款合适公司业务的监控工具进行监控,这里我对监控工具进行了简单的分类。

640?wx_fmt=png

老牌监控:


MRTG(Multi Route Trffic Grapher)是一套可用来绘制网络流量图的软件,由瑞士奥尔滕的Tobias Oetiker与Dave Rand所开发,以GPL授权。 MRTG最好的版本是1995年推出的,用perl语言写成,可跨平台使用,数据采集用SNMP协议,MRTG将手机到的数据通过Web页面以GIF或者PNG格式绘制出图像。


Grnglia是一个跨平台的、可扩展的、高性能的分布式监控系统,如集群和网格。它基于分层设计,使用广泛的技术,用RRDtool存储数据。具有可视化界面,适合对集群系统的自动化监控。其精心设计的数据结构和算法使得监控端到被监控端的连接开销非常低。目前已经有成千上万的集群正在使用这个监控系统,可以轻松的处理2000个节点的集群环境。


Cacti(英文含义为仙人掌)是一套基于PHP、MySQL、SNMP和RRDtool开发的网络流量监测图形分析工具,它通过snmpget来获取数据使用RRDtool绘图,但使用者无须了解RRDtool复杂的参数。提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、主机设备以及任何一张图,还可以与LDAP结合进行用户认证,同时也能自定义模板。在历史数据展示监控方面,其功能相当不错。 Cacti通过添加模板,使不同设备的监控添加具有可复用性,并且具备可自定义绘图的功能,具有强大的运算能力(数据的叠加功能)


Nagios是一个企业级监控系统,可监控服务的运行状态和网络信息等,并能监视所指定的本地或远程主机状态以及服务,同时提供异常告警通知功能等。 Nagios可运行在Linux和UNIX平台上。同时提供Web界面,以方便系统管理人员查看网络状态、各种系统问题、以及系统相关日志等 Nagios的功能侧重于监控服务的可用性,能根据监控指标状态触发告警。 目前Nagios也占领了一定的市场份额,不过Nagios并没有与时俱进,已经不能满足于多变的监控需求,架构的扩展性和使用的便捷性有待增强,其高级功能集成在商业版Nagios XI中。


Smokeping主要用于监视网络性能,包括常规的ping、www服务器性能、DNS查询性能、SSH性能等。底层也是用RRDtool做支持,特点是绘制图非常漂亮,网络丢包和延迟用颜色和阴影来标示,支持将多张图叠放在一起,其作者还开发了MRTG和RRDtll等工具。 Smokeping的站点为:http://tobi.oetiker.cn/hp

开源监控系统OpenTSDB用Hbase存储所有时序(无须采样)的数据,来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集,支持永久存储,可以做容量规划,并很容易地接入到现有的告警系统里。 OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的采集指标,并进行存储、索引和服务,从而使这些数据更容易让人理解,如Web化、图形化等。

王牌监控


Zabbix是一个分布式监控系统,支持多种采集方式和采集客户端,有专用的Agent代理,也支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库,然后对其进行分析整理,达到条件触发告警。其灵活的扩展性和丰富的功能是其他监控系统所不能比的。相对来说,它的总体功能做的非常优秀。 从以上各种监控系统的对比来看,Zabbix都是具有优势的,其丰富的功能、可扩展的能力、二次开发的能力和简单易用的特点,读者只要稍加学习,即可构建自己的监控系统。


prometheus

Prometheus 是一套开源的系统监控报警框架。它启发于 Google 的 borgmon 监控系统,由工作在 SoundCloud 的 google 前员工在 2012 年创建,作为社区开源项目进行开发,并于 2015 年正式发布。Prometheus是最近几年开始流行的一个新兴监控告警工具,特别是kubernetes的流行带动了prometheus的应用。

Kubernetes和prometheus课程推荐:有兴趣可以在这解下。


小米的监控系统:open-falcon。open-falcon的目标是做最开放、最好用的互联网企业级监控产品。


三方监控:


现在市场上有很多不错的第三方监控,比如:监控宝、监控易、还有很多云厂商自带监控,但是在这里我们不打算着重介绍,如果想了解三方监控可自行上官网咨询。


4 监控流程


上面介绍了这么多,那么到底选择什么监控工具最合适呢,我这里推荐几款开源监控工具:zabbix、Open-Falcon、LEPUS天兔(专用于监控数据库)。
但是本文还是基于zabbix来构建整个监控体系生态圈。
那么下面我们就来聊聊,zabbix的整个流程:


640?wx_fmt=other


  1. 数据采集: Zabbix通过SNMP、Agent、ICMP、SSH、IPMI等对系统进行数据采集

  2. 数据存储: Zabbix存储在MySQL上,也可以存储在其他数据库服务

  3. 数据分析: 当我们事后需要复盘分析故障时,zabbix能给我们提供图形以及时间等相关信息,方面我们确定故障所在。

  4. 数据展示: web界面展示、(移动APP、java_php开发一个web界面也可以)

  5. 监控报警:电话报警、邮件报警、微信报警、短信报警、报警升级机制等(无论什么报警都可以)

  6. 报警处理:当接收到报警,我们需要根据故障的级别进行处理,比如:重要紧急、重要不紧急,等。根据故障的级别,配合相关的人员进行快速处理。

5 监控指标


我们上面了解了监控方法、目标、流程、也了解了监控有哪些工具,可能有人会疑惑,我们具体要监控写什么东西,那么我在这里进行了分类整理:


硬件监控
系统监控
应用监控
网络监控
流量分析
日志监控
安全监控
API监控
性能监控
业务监控

5.1 硬件监控

早期我们通过机房巡检的方式,查看硬件设备灯光闪烁情况判断是否故障,这样非常浪费人力,并且是重复性无技术含量的工作,大家懂得。


640?wx_fmt=other


当然我们现在可以通过IPMI对硬件详细情况进行监控,并对CPU、内存、磁盘、温度、风扇、电压等设置报警设置报警阈值(自行对监控报警内容编写合理的报警范围)


5.2 系统监控

中小型企业基本全是Linux服务器,那么我们肯定是要监控起系统资源的使用情况,系统监控是监控体系的基础。

监控主要对象:


640?wx_fmt=other


CPU

CPU有几个重要的概念:上下文切换、运行队列和使用率。

这也是我们CPU监控的几个重点指标。
通常情况,每个处理器的运行队列不要高于3,CPU 利用率中用“户态/内核态”比例维持在70/30,空闲状态维持在50%,上下文切换要根据系统繁忙程度来综合考量。

针对CPU常用的工具有:htop、top、vmstat、mpstat、dstat、glances

内存

通常我们需要监控内存的使用率、SWAP使用率、同时可以通过zabbix描绘内存使用率的曲线图形发现某服务内存溢出等。

针对内存常用的工具有: free、top、vmstat、glances

IO

IO分为磁盘IO和网络IO。除了在做性能调优我们要监控更详细的数据外,那么日常监控,只关注磁盘使用率、磁盘吞吐量、磁盘写入繁忙程度,网络也是监控网卡流量即可。

常用工具有:iostat、iotop、df、iftop、sar、glances

5.3 应用监控

把硬件监控和系统监控研究明白后,我们进一步操作是需要登陆到服务器上查看服务器运行了哪些服务,都需要监控起来。
应用服务监控也是监控体系中比较重要的内容,例如:
LVS、Haproxy、Docker、Nginx、PHP、Memcached、Redis、MySQL、Rabbitmq等等,相关的服务都需要使用zabbix监控起来。

5.4 网络监控

网络监控是我们构建监控平台是必须要考虑的,尤其是针对有多个机房的场景,各个机房之间的网络状态,机房和全国各地的网络状态都是我们需要重点关注的对象,那么如何掌握这些状态信息呢?我们需要借助于网络监控工具Smokeping。

Smokeping 是rrdtool的作者Tobi Oetiker的作品,是用Perl写的,主要是监视网络性能,www 服务器性能,dns查询性能等,使用rrdtool绘图,而且支持分布式,直接从多个agent进行数据的汇总。


同时,由于自己监控点比较少,还可以借助很多商业的监控工具,比如监控宝、听云、基调、博瑞等。同时这些服务提供商还可以帮助你监控CDN的状态。

5.5 流量分析

网站流量分析对于运维人员来说,更是一门必须掌握的知识了。比如对于一家电商公司来说:
通过对订单来源的统计和分析,可以了解我们在某个网站上的广告投入有没有收到预期的效果。
可以区分不同地区的访问人数、甚至商品交易额等。

百度统计、google分析、站长工具等等,只需要在页面嵌入一个js即可。
但是,数据始终是在对方手中,个性化定制不方便,于是google出一个叫piwik的开源分析工具。


5.6 日志监控

通常情况下,随着系统的运行,操作系统会产生系统日志,应用程序会产生应用程序的访问日志、错误日志,运行日志,网络日志,我们可以使用ELK来进行日志监控。

对于日志监控来说,最见的需求就是收集、存储、查询、展示,开源社区正好有相对应的开源项目:
logstash(收集) + elasticsearch(存储+搜索) + kibana(展示)
我们将这三个组合起来的技术称之为ELK Stack,所以说ELK Stack指的是Elasticsearch、Logstash、Kibana技术栈的结合。

如果收集了日志信息,那么如果部署更新有异常出现,可以立即在kibana上看到。

5.7 安全监控

虽然Linux开源的安全产品不少,比如四层iptables,七层WEB防护nginx+lua实现WAF,最后将相关的日志都收至Elkstack,通过图形化进行不同的攻击类型展示。但是始终是一件比较耗费时间,并且个人效果并不是很好。这个时候我们可以选择接入第三方服务厂商。

三方厂商提供全面的漏洞库,涵盖服务、后门、数据库、配置检测、CGI、SMTP等多种类型全面检测主机、Web应用漏洞自主挖掘和行业共享相结合第一时间更新0day漏洞,杜绝最新安全隐患


5.8 API监控

由于API变得越来越重要,很显然我们也需要这样的数据来分辨我们提供的 API是否能够正常运作。
监控API接口GET、POST、PUT、DELETE、HEAD、OPTIONS的请求
可用性、正确性、响应时间为三大重性能指标

5.9 性能监控

全面监控网页性能,DNS响应时间、HTTP建立连接时间、页面性能指数、响应时间、可用率、元素大小等

5.10 业务监控

没有业务指标监控的监控平台,不是一个完善的监控平台,通常在我们的监控系统中,必须将我们重要的业务指标进行监控,并设置阈值进行告警通知。比如电商行业:


每分钟产生多少订单,每分钟注册多少用户,

每天有多少活跃用户,每天有多少推广活动,推广活动引入多少用户,推广活动引入多少流量,推广活动引入多少利润等等 重要指标都可以加入zabbix上,然后通过screen展示。

6 监控报警


故障报警通知的方式有很多种,当然我们最常用的还是短信,邮件


640?wx_fmt=other


7 报警处理


一般报警后我们故障如何处理,首先,我们可以通过告警升级机制先自动处理,比如nginx服务down了,可以设置告警升级自动启动nginx。
但是如果一般业务出现了严重故障,我们通常根据故障的级别,故障的业务,来指派不同的运维人员进行处理。
当然不同业务形态、不同架构、不同服务可能采用的方式都不同,这个没有一个固定的模式套用。


640?wx_fmt=other


8 面试监控


在运维面试中,常常会被问题监控相关的问题,那么这个问题到底该如何来回答,我针对本文给大家提供了一个简单的回答思路。


1. 硬件监控。

通过SNMP来进行路由器交换机的监控(这些可以跟一些厂商沟通来了解如何做)、服务器的温度以及其他,可以通过IPMI来实现。当然如果没有硬件全都是云,直接跳过这一步骤。


2. 系统监控。

如CPU的负载,上下文切换、内存使用率、磁盘读写、磁盘使用率、磁盘inode使用率。当然这些都是需要配置触发器,因为默认太低会频繁报警。


3.服务监控。

比如公司用的LNMP架构,nginx自带Status模块、PHP也有相关的Status、MySQL的话可以通过percona官方工具来进行监控。Redis这些通过自身的info获取信息进行过滤等。方法都类似。要么服务自带。要么通过脚本来实现想监控的内容,以及报警和图形功能。


4.网络监控。

如果是云主机又不是跨机房,那么可以选择不监控网络。当然你说我们是跨机房以及如何如何。推荐使用smokeping来做网络相关的监控。或者直接交给你们的网络工程师来做,因为术业有专攻。


5.安全监控。

如果是云主机可以考虑使用自带的安全防护。当然也可以使用iptables。如果是硬件,那么推荐使用硬件防火墙。使用云可以购买防DDOS,避免出现故障导致down机一天。如果是系统,那么权限、密码、备份、恢复等基础方案要做好。web同时也可以使用Nginx+Lua来实现一个web层面的防火墙。当然也可以使用集成好的openresty。


6.Web监控。

web监控的话题其实还是很多。比如可以使用自带的web监控来监控页面相关的延迟、js响应时间、下载时间、等等。这里我推荐使用专业的商业软件,监控宝或听云来实现。毕竟人家全国各地都有机房。(如果本身是多机房那就另说了)

7.日志监控。

如果是web的话可以使用监控Nginx的50x、40x的错误日志,PHP的ERROR日志。其实这些需求无非是,收集、存储、查询、展示,我们其实可以使用开源的ELKstack来实现。Logstash(收集)、elasticsearch(存储+搜索)、kibana(展示)


8.业务监控。

我们上面做了那么多,其实最终还是保证业务的运行。这样我们做的监控才有意义。所以业务层面这块的监控需要和开发以及总监开会讨论,监控比较重要的业务指标,(需要开会确认)然后通过简单的脚本就可以实现,最后设置触发器即可

9.流量分析。

平时我们分析日志都是拿awk sed xxx一堆工具来实现。这样对我们统计ip、pv、uv不是很方便。那么可以使用百度统计、google统计、商业,让开发嵌入代码即可。为了避免隐私也可以使用piwik来做相关的流量分析。

10.可视化。

通过screen以及引入一些第三方的库来美化界面,同时我们也需要知道,订单量突然增加、突然减少。或者说突然来了一大波流量,这流量从哪儿来,是不是推广了,还是被攻击了。可以结合监控平来梳理各个系统之间的业务关系。

11.自动化监控。

如上我们做了那么多的工作,当然不能是一台一台的来加key实现。可以通过Zabbix的主动模式以及被动模式来实现。当然最好还是通过API来实现。

9 监控总结


真正想做到更完整的监控体系,目前的开源软件,确实无法很好的满足,有条件的公司都开始自己开发自己的监控系统,比如小米开源的Open-Falcon。也有比较好的开源的监控框架如Sensu等,再加上influxdb、grafana可以用来定制符合自己企业的监控平台。


640?wx_fmt=png


640?wx_fmt=jpeg


福利

扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:

  • 刷了一个半月算法题,我薪资终于Double了

  • 掌声送给TensorFlow 2.0!用Keras搭建一个CNN | 入门教程

  • 中国AI开发者真实现状:写代码这条路,会走多久?

  • 520 这天,我突然意识到,她根本配不上我这么聪明的男人

  • 厉害!女学生偷师男子学校,变身区块链开发工程师

  • 确实, 5G与物联网离不开区块链!

  • Linux 之父:我就是觉得苹果没意思!| 人物志


640?wx_fmt=png真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523640.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bootstrap 模态框无法使用_模态窗 Modal Window - 产品中的??注意力设计

本文是「经典交互模式」系列第二篇,前文回顾:面包屑导航 Breadcrumbs Trail全文目录什么是模态窗 模态窗的使用问题 模态框应用实践 什么是模态窗 Modal Window我们在各种不同的屏幕应用中见过「模态窗」,全屏幕模态窗、弹出信息框、&#xf…

QQmlApplicationEngine failed to load component qrc:/main.qml:-1 No such file or directory

记录qml运行时出现的问题问题描述解决办法问题描述 qml项目编译的时候通过,但是在运行时出现图中所示错误提示。 解决办法 在项目所在的文件夹下删除编译生成的目录,我的项目编译生成目录如下图: 删除编译生成的文件夹后,项目…

SpringBoot +Lombok注解精华篇

SpringBoot 必知必会 核心精粹_注解Lombok 文章目录Lombok注解应用场景DataGetter、Setter、RequiredArgsConstructor、ToString、EqualsAndHashCodeTable当数据库的表名和实体类不一致时,name 属性可以指定数据库的表,这样实体类和数据库的表就可以有映…

服务迁移之路 | Spring Cloud向Service Mesh转变 | 技术干货

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!作者: 李宁转自:博云技术社区Spring Cloud基于Spring Boot开发…

oracle使用关键字做表字段名_ArcGIS SQL使用

本主题将介绍 ArcGIS 中的选择表达式所用的常规查询的各个元素。ArcGIS 中的查询表达式使用常规 SQL 语法。警告:SQL 语法不适用于使用字段计算器计算字段。字段在 SQL 表达式中指定字段时,如果该字段名可能产生岐义(比如与 SQL 保留关键字相同)&#xf…

uml类图浅录

uml类图UML中类图的绘制单个类图的绘制类图中的成员访问属性UML类图中类与类的几种关系关联代码示例解释UML类图表示多重性说明依赖代码示例解释uml类图表示继承示例代码解释UML类图表示实现示例代码解释UML类图表示聚合示例代码UML类图表示组合示例代码解释UML类图表示绘制UML…

技术官网总览

说明连接地址Spring Cloud官网https://spring.io/projects/spring-cloud#learn官网文档https://cloud.spring.io/spring-cloud-static/Greenwich.SR2/single/spring-cloud.htmlSpring Cloud中文官网https://springcloud.cc/spring-cloud-dalston.html 说明连接地址Spring Boot…

python安装spark_python的安装_[老汤]Spark 2.x实战应用系列之Spark开发环境搭建(windows)_大数据系统视频-51CTO学院...

本门课程整理了scala/java/python开发spark应用的本地开发环境的搭建,轻而易举的用各种工具搭建spark开发环境更多的课程可以在51CTO学院中搜索"老汤"播放的时候选择“高清”模式,效果会更好------------------------------------------------…

03_SpringCloud整合Ribbon实现负载均衡

采用随机负载均衡策略,四线服务之间的调用 2个用户中心,1个内容中心,内容中心调用用户中心服务 package com.itmuch.contentcenter.service.impl;import com.itmuch.contentcenter.dao.content.ShareMapper; import com.itmuch.contentcent…

c++构造函数执行顺序

引言 当创建一个类的对象时调用该类的构造函数;若为继承关系的类,则先执行父类的构造函数,再执行子类的构造函数;若为继承关系的类,该类中含有其它类类型的成员变量,那么其构造函数的调用顺序该如何呢。今…

容器精华问答 | 我们为什么需要容器?

戳蓝字“CSDN云计算”关注我们哦!容器技术是这两年热门的话题,因为容器技术给我们带来了很多方便的地方,节约了不少成本,不管是在运维还是开发上。今天,就让我们来看看关于容器更加有深度的问题吧。1Q:什么…

C++11继承构造函数在类中的使用

继承构造函数概念衍生问题使用示例注意扩展使用(函数)示例代码输出结果注意概念 继承构造函数在C11特性中随之提及,其大概可以理解为: 解决了派生类无法直接使用基类中的构造函数的这一问题。 正常情况下,基类定义了自…

grep从文件末尾开始找_新人自学前端到什么程度才能找工作?

这个问题打我记事起到现在,问过我的人,没有1000也有800了。足以见得这个问题是多么的不得人心。自学前端开发,不管他在网上百度了多少资料,看了多少教程,你总得先做个网页出来。所以,很多人都是从html标签开…

Spring Tool Suite 4安装Lombok

Lombok官网:https://www.projectlombok.org/download 文章目录一、下载jar包二、lombok.jar复制三、运行lombok.jar四、安装lombok4.1 点击确定4.2 找到SpringToolSuite4.exe五、以管理员运行Spring Tool Suite 4六、引入lombok依赖6.1 maven项目6.2 普通web项目七、…

base昆明,腾讯云在合作伙伴的阵营中@了TA

戳蓝字“CSDN云计算”关注我们哦!技术头条:干货、简洁、多维全面。更多云计算精华知识尽在眼前,get要点、solve难题,统统不在话下!在今年的腾讯“三合一”大会上,阿晶得到了这样一则数据:截至目…

IntelliJ IDEA 2019 安装lombok

文章目录一、安装插件二、添加lombok依赖三、重启IntelliJ IDEA四、效果图五、如果不生效一、安装插件 二、添加lombok依赖 <!--Lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version&g…

记录C++类中的一次函数调用

引用 之前遇到一次函数调用结果的问题&#xff0c;今天在这里做一下记录。 一个基类&#xff0c;一个派生类&#xff0c;两个类中都有一个函数名相同&#xff0c;参数相同&#xff0c;参数不同的函数&#xff0c;创建基类指针指向派生类对象&#xff0c;调用相应的函数&#x…

bootstrap table移动端_bootstrap介绍

简介bootstrap是一款前端开发自适应页面的js库&#xff0c;可以让你在开发网页的时候轻松实现网站的PC与移动端兼容&#xff0c;避免在移动端上面出现样式错位等。原理bootstrap的原理是媒体查询CSS3的media&#xff0c;用于检测屏幕&#xff0c;从而改变样式的百分比。结构boo…

Spring Tool Suite 4 自动提示功能

文章目录一、java文件 自动提示二、JavaScript文件 自动提示三、HTML文件 自动提示四、导出配置文件五、编辑导出的配置文件5.1 java提示规则替换5.2 html提示规则替换六、导入配置好的文件一、java文件 自动提示 打开STS→Windows→Preferences→Java→Editor→Content Assis…

关于C++编程中引入头文件的顺序

头文件顺序场景头文件顺序场景 此文仅记录在编写程序的时候&#xff0c;.h或者.cpp引入头文件时&#xff0c;标准库头文件&#xff0c;自己定义的类的头文件的先后顺序。c兼容c语言&#xff0c;故而有时还是涉及到c语言的标准库头文件的引入。这里只记录其引入的顺序。 头文件…