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

基于“日志审计应用”的 DNS 日志洞察实践

作者:羿莉 (萧羿)

基础背景

DNS(Domain Name System) [ 1] 是任何网络活动的基础。它将易于记忆的域名转换为机器能够理解的 IP 地址。监控 DNS 服务可以帮助用户识别网络活动并保持系统安全。出于合规和安全性的考虑,公司通常要求对网络日志进行存储和分析。通过 DNS 日志,可以清晰了解企业域名解析的使用情况,于发现配置错误和不必要的网络障碍,减少系统中断,在帮助企业对用户行为、网络行为进行审计的同时,及时发现潜在的安全问题。

DNS 解析流程

DNS 查询的结果通常会在本地域名服务器中进行缓存,如果本地域名服务器中有缓存的情况下,则会跳过如下 DNS 查询步骤,很快返回解析结果。下面的示例则概述了本地域名服务器没有缓存的情况下,DNS 查询所需的几个步骤:

在这里插入图片描述

DNS 记录类型

DNS(域名系统)中存在多种不同类型的记录,每种记录类型有特定的用途。以下是一些最常见的 DNS 记录类型及其解释:

在这里插入图片描述

以上是一些基本的 DNS 记录类型,每种类型在日常网络和域名的解析中扮演着重要角色。

日志审计

日志审计应用概况

日志审计服务 [ 2] 是阿里云日志服务 SLS [ 3] 平台下的一款应用,它在继承了日志服务 SLS 的全部功能以外,还有强大的多账号管理及跨地域采集阿里云各种云产品日志的功能,并且支持通过资源目录 [ 4] (Resource Directory)的方式有组织性地统一地管理和记录多账号下云产品实例的日志信息。

如何开通 DNS 日志采集

  1. 登录 SLS 产品控制台 [ 5]

  2. 日志应用栏选择审计与安全页签,然后单击日志审计服务。

在这里插入图片描述

  1. 全局配置页面,将 DNS 的日志审计开关打开并选择中心项目 Project 所在区域,例如 cn-hangzhou;详细操作步骤参见开启日志采集功能 [ 6]

日志审计现已支持内网 DNS 日志、公网 DNS 解析日志、全局流量管理日志这三种日志类型,用户可以按需开启。

在这里插入图片描述

其他功能

此外,除了基础存储、查询、告警等 SLS 功能外,还支持跨账号 [ 7] 采集、精细化采集策略 [ 8] 、Terraform [ 9] 配置等功能。此处不详细展开,用户可以参考内网 DNS 日志转存 SLS [ 10] 进行配置使用。

DNS 日志详情

具体的日志字段内容,及解释请参见附录

内网请求应答示例

日志审计会自动开启用户满足采集策略的地域及 VPC 实例的流量分析功能,详情参见开启 DNS 内网日志采集 [ 11] 。开启流量分析功能后,日志会自动转存投递到用户的日志审计 DNS 专属库 dns_log 中,下面是具体日志内容及相应字段含义的解释介绍。

DNS 请求日志

例如我们查询阿里云日志服务控制台 sls.console.aliyun.com 的 ip 地址。

dig sls.console.aliyun.com +short

在这里插入图片描述

在该请求日志内容中,可以看到会话请求 id 为 50999,该 id 会在后续模块应答日志中继续复用,直至得到完整请求应答日志, 请求域名服务器为内网 ECS 的 ip 地址172.16.0.184,响应地址为阿里云内置域名解析服务地址 100.100.2.136,响应端口为 53。

请求日志模块为 GLOBAL,请求域名为完全限定域名 [1****2] sls.console.aliyun.com.,DNS 记录类型为 A 类,请求发出的 ecs 所属的实例在 cn-hangzhou 地域,其 VPC id 为 vpc-bp9fj,ECS 主机 id 为 i-bp19d7,主机名为iZbp********d7Z,主机所属账号为 148**********782,DNS 信息标志为 RD AD ,具体细节可参见附录日志字段说明。

模块应答日志

在这里插入图片描述

发出请求后,首先得到一条递归模块应答日志,从根域名服务器开启递归,得到sls.console.aliyun.com. 的 CNAME 记录为 sls-console-adns.console.aliyun.com.

在这里插入图片描述

然后继续查询 sls-console-adns.console.aliyun.com. 得到一条缓存模块应答日志,其对应的 CNAME 记录为 sls-console-adns.console.aliyun.com.gds.alibabadns.com.

在这里插入图片描述

继续查询 sls-console-adns.console.aliyun.com.gds.alibabadns.com. 得到对应的缓存模块应答日志,其 CNAME 记录为 tyjr-cn-hangzhou.aliyun.com.

在这里插入图片描述

继续查询 tyjr-cn-hangzhou.aliyun.com. 找到缓存应答模块对应的 CNAME 记录为 tyjr-cn-hangzhou.aliyun.com.vipgds.alibabadns.com.

在这里插入图片描述

追溯到域名 tyjr-cn-hangzhou.aliyun.com.vipgds.alibabadns.com. 后,得到对应的资源记录应答集合,并找到其真正的 A 记录地址例如 47.97.242.13。

在这里插入图片描述

全局应答日志

最后我们得到一条完整的全局应答日志,从而找到 sls.console.aliyun.com. 对应的 ip 地址。

在这里插入图片描述
在这里插入图片描述

公网解析日志示例

配置公网域名流量分析

首先用户需要进入 DNS 控制台 [ 13] ,添加对应的域名,并打开相应域名下的 DNS 流量分析功能。

在这里插入图片描述
在这里插入图片描述

查看公网权威解析日志
dig   y*****.online  @dns27.hichina.com

在这里插入图片描述

当前公网解析日志仅包含响应模块,在 SLS 日志审计下可以得到如下的响应日志,其结果是一条 SOA 记录,指定关于该区域的权威信息,如 DNS 区域的主名称服务器,区域的管理员,TTL 等信息。

在这里插入图片描述

全局流量管理日志示例

配置全局流量管理模块

首先用户需要进入 DNS 控制台,全局流量管理界面,购买全局流量管理实例,并创建接入域名。

在这里插入图片描述
在这里插入图片描述

查看全局流量管理日志
dig ti*****.g****.net +vc

在这里插入图片描述

其响应日志内容记录在日志审计中如下:

在这里插入图片描述

洞察 DNS 日志

因为 DNS 日志包含了丰富的信息,所以知道这些字段的具体解释,以及这些字段出现异常时,其内容所代表的特殊意义,对于我们在网络安全和网络性能中排查定位将会提供很大帮助。下面,本文大概总结了一些在监控 DNS 日志时安全运营人员应该注意的信号,掌握这些信号就可以快速而轻松地发现问题。详情可参见附录中日志字段的详细介绍。

  • query_name 字段, 其内容为查询的完全限定域名 (FQDN [ 14] , fully qualified domain name),可以让用户知道每一次请求应答的具体查询内容。如果查询的 Domain 出现在恶意域名列表上,那么该日志就可以作为安全威胁的证据。此外,过多重复的查询可能是恶意活动的一个指标,例如 DoS 攻击,在这种攻击中,恶意行为者让目标域名的服务器不堪重负,发送异常超高量的 DNS 查询。
  • query_type 字段, 包含请求的记录类型,当搜寻恶意活动时可以提供有用的上下文。例如,文本(TXT) 记录经常被用于指挥和控制(C2)攻击以及 DNS 隧道攻击。详细的记录类型可以参见前文背景介绍。
  • rt 字段, 其内容为请求应答时间,如果 query_type 为 GLOBAL,则为全局应答,表示整个请求到应答的时延,否则模块日志 rt 仅表示在模块内部消耗的时延。如果 rt 值异常提升可能是网络连接问题的一个信号。例如,如果安全运维人员注意到与 DNS 日志中 rt 值升高相关的超时错误激增,你可能会推断超时错误是在 DNS 解析过程中发生的,这将表明用户的 DNS 服务器可能存在问题。
  • rcode 字段, 即响应状态码,例如:0 表示 NOERROR,没有错误,查询域名成功;1 表示 FORMERR,格式错误,DNS 无法解析该请求;2 表示 SERVFAIL,即 DNS 服务器遇到内部错误或者超时引起的解析失败。rcode 为 2 是 DNS 无法从权威名称服务器获取有效响应时常见的一种错误。记录这个值的日志可以帮助运维人员找出问题的根本原因。
  • answer_rrset 字段, 包含 DNS 所请求的信息返回的 IP 地址集合,例如 [www.taobao.com 600 A 1.1.1.1],这个字段的常见值 ip,可以帮助安全运维人员在本地网络上定位受损机器。在公共互联网上,这些 IP 地址可以与恶意行为者 IP 地址的数据库对照检查,例如可以发现是否存在 DNS 劫持行为等。
  • dns_msg_flags 字段, 该字段中有许多请求标志(QR、RD、AA、TC 等),表明如查询是否是递归的、是否包含 DNSSEC 状态等。这些标志可以为 DNS 请求提供重要的上下文,例如所请求的 DNS 记录是否来自它的权威名称服务器、以及数据是否被修改。

下面我们通过几个具体的实践案例,深入体验如何洞察 DNS 日志。

解析路径劫持

原理背景

通过对 DNS 数据包“请求阶段”中的解析路径进行划分,我们将 DNS 解析路径分为四类。

  • 首先是正常的 DNS 解析路径(Normal resolution),用户的 DNS 请求只到达指定的公共 DNS 服务器;此时,权威服务器应当只看到一个来自公共服务器的请求。

以下三类均属于 DNS 解析路径劫持

  • 请求转发(Request redirection),用户的 DNS 请求将直接被重定向到劫持者的解析服务器,解析路径如下图红色路径所示;此时,权威服务器只收到来自这个服务器的请求,用户指定的公共 DNS 服务器完全被排除在外。
  • 请求复制(Request replication),用户的 DNS 请求被网络中间设备复制,一份去往原来的目的地,一份去往劫持者使用的解析服务器,解析路径如下图橙色路径所示;此时,权威服务器将收到两个相同的查询。
  • 直接应答(Direct responding),用户发出的请求同样被转发,但解析服务器并未进行后续查询而是直接返回一个响应,解析路径如图紫色路径所示;此时,权威服务器没有收到任何查询,但是客户端却收到解析结果。

在这里插入图片描述

环境模拟

下面我们将构造一个直接应答的解析路径劫持实验:

1)正常请求返回及日志审计 DNS 日志记录如下:

dig aaa.y******.online

在这里插入图片描述

在 sls 日志审计的 dns_log 可以看到正常的权威解析的资源记录集 ["y******.online. 600 SOA dns27.hichina.com. hostmaster.hichina.com. 2024060609 3600 1200 86400 600 "],对应的权威 dns 解析服务器为 dns27.hichina.com,因为没有配置对应的 ip 记录,所以应答资源记录集为空。

在这里插入图片描述

2)自建 DNS 服务器,并配置记录,更改 nameserver 配置

接下来,我们基于 bind [ 15] 自建一个 DNS 解析服务器,其 ns 地址为 172.16.0.186,在该 DNS 服务器的 zone 数据库文件(y*****.online.zone)下配置一条记录:

[aaa A 172.16.0.189]

在这里插入图片描述

3)然后我们修改本地 nameserver,将其地址指向我们自建的 DNS 服务器

在这里插入图片描述

4)自建 dns 服务器直接应答,跳过前往权威 dns 服务器查询请求过程

此时 dig aaa.y******.online. 返回的 ip 地址为 172.16.0.189,即我们在自建 dns 解析服务器配置的 A 记录返回。没有经过权威解析服务器的请求流程,直接应答一个结果,从而将 aaa.y******.online 域名的访问劫持到我们指定的 ip 地址。

在这里插入图片描述

PrivateZone 域名转发

下面展示一个 Private zone 域名转发的日志洞察示例,比如由于某些业务场景安全需要,需要将某些服务的域名访问地址从公网方式(.xxx.com)切换到 vpc 内网方式(-vpc-inner.region.xxx.com),而当前线上业务应用部署复杂,业务切换流依赖较多,直接进行业务代码切换的复杂性太大,很容易影响上下游业务,这个时候我们可以通过简单 PrivateZone 域名转发的案例进行域名切换,从而实现平滑业务流程,无损且快捷地切换到对应链路,而 DNS 解析日志可以帮助我们验证域名转发是否配置正确,符合期望。

配置域名转发

在这里插入图片描述

验证域名转发

1)此时我们请求域名 ***.xxx.com.

在这里插入图片描述

2)经过 private zone 域名转发,经过权威普通模块,得到一个 CNAME 记录 ***-vpc-inner.cn-hangzhou.xxx.com.,以下为模块应答日志。

在这里插入图片描述

继续递归,得到 ***-vpc-inner.cn-hangzhou.xxx.com. 的 CNAME 记录 ***-vpc-inner.cn-hangzhou.xxx.com.yyy.zzz.com.

在这里插入图片描述

继续递归,得到 ***-vpc-inner.cn-hangzhou.xxx.com.yyy.zzz.com. 的 CNAME 记录 -vpc-inner.cn-hangzhou.xxx.com..com.

在这里插入图片描述

等走完全部递归查询,可以得到真正的 ip 地址为 100...35。

在这里插入图片描述

3)最终我们得到完整应答日志,得到 ***.xxx.com. 请求所对应的真正的解析地址 IP 记录。因为日志中有完整的 vpc、ecs id、ecs hostname 信息,后续出现问题,安全运维人员可以直接排查定位,判断 DNS 解析路径是否符合期望。

解析失败、解析请求异常和解析 RT 异常

在这里插入图片描述

解析失败

rcode 是作为应答日志可以反映基本的解析状态,rcode 返回值 SERVFAIL(2) 或者 NXDOMAIN(3)是两个较为典型且常见的解析失败场景,前者说明 DNS 服务器遇到内部错误或者超时引起的解析失败,后者表示这个域名并未找到。此时我们结合具体的用户阿里云 Uid 信息,和具体的 ECS 信息(内网场景)则可以更快捷地定位到此时出现问题的服务。下表是查找访问不存在的域名(rcode=3)的汇总统计记录。

rcode :3  and GLOBAL | select distinct(query_name),  ecs_hostname, region_id, vpc_id, user_id

在这里插入图片描述

解析请求异常

前文已经提到,query_name 字段如果出现安全异常值(例如安全威胁库中已知的恶意地址),则可以作为一个非常直观的安全威胁的证据指标,另外某些 query_name 的解析量飙升,也可以作为判断 DoS 攻击的依据,下面是一个 vpc 下,通过全局响应日志进行 query_name 统计的图表示例,如果从中发现了对某些已知恶意域名的访问,则可以进一步排查,找到安全威胁:

* and vpc_id: vpc-j6cd*****mgkrt6 and ( region_id : cn-hongkong ) and GLOBAL  and ( region_id : cn-hongkong ) and rcode: 0 |select count(*) as total_req, query_name group by  query_name

在这里插入图片描述

正常情况下域名的解析请求量维持在一个可控平稳的范围(如下图),如果出现某个域名的请求量出现陡增,例如从 20 次/min 提升到了 1000 次/min,说明该域名可能遭受了攻击,可以通过创建告警分组评估 [ 16] ,分别监控需要特殊关注的域名目标,通知到响应的安全运维人员处。

* and vpc_id: vpc-j6cd*****mgkrt6 and ( region_id : cn-hongkong ) and GLOBAL and rcode: 0 |select date_trunc('minute', __time__ )as t , query_name, count(*) as total_req group by t, query_name

在这里插入图片描述

解析请求 RT 异常

解析响应时间异常同样值得引发注意,这里我们仅用全局应答日志的 RT 进行统计分析,全局应答日志的 RT 是表示整个查询到应答的时延,解析路径的各个模块也包括在内,因为有 CACHE 模块的存在,正常情况下响应时延在一个可控范围。如果某个域名的 RT 突然提升,有可能是因为用户的 DNS 服务器网络配置存在问题,或者是遭遇了网络攻击,此时的域名解析服务器已经不堪重负,因此 RT 的统计分析也是非常有价值的观测指标。

* and vpc_id: vpc-j6cd*****mgkrt6  and ( region_id : cn-hongkong ) and GLOBAL  and rcode: 0 |select date_trunc('minute', __time__ )as t , query_name, avg(rt)as avg_rt where rt>=60 group by t, query_name

附录

DNS 日志字段

在这里插入图片描述
在这里插入图片描述

相关链接:

[1] DNS(Domain Name System)

https://help.aliyun.com/zh/dns/basic-concepts

[2] 日志审计服务

https://help.aliyun.com/zh/sls/user-guide/overview-of-log-audit-service

[3] 日志服务 SLS

https://help.aliyun.com/zh/sls/product-overview/what-is-log-service

[4] 资源目录

https://help.aliyun.com/zh/resource-management/product-overview/what-is-resource-management

[5] SLS 产品控制台

https://sls.console.aliyun.com/lognext/profile

[6] 开启日志采集功能

https://help.aliyun.com/zh/sls/user-guide/enable-log-collection-1#section-h4b-mzq-ed1

[7] 跨账号

https://help.aliyun.com/zh/sls/user-guide/configure-multi-account-collection?spm=a2c4g.11186623.0.i4

[8] 采集策略

https://help.aliyun.com/zh/sls/user-guide/configure-log-collection-policies?spm=a2c4g.11186623.0.0.5f8e6632XACz9z

[9] Terraform

https://help.aliyun.com/zh/sls/user-guide/use-terraform-to-configure-log-audit-service?spm=a2c4g.11186623.0.0.d2d0c154paZb41

[10] 内网 DNS 日志转存 SLS

https://help.aliyun.com/zh/dns/intranet-dns-parsing-log-transfer-to-sls?spm=5176.28197678_-433446379.help.dexternal.1a065b8ePzpUmZ

[11] 开启 DNS 内网日志采集

https://help.aliyun.com/zh/sls/user-guide/additional-fees-for-some-cloud-services?spm=a2c4g.11186623.0.0.3c2844aaoZgwuP#fcb33aa3b5p0k

[12] 完全限定域名

https://en.wikipedia.org/wiki/Fully_qualified_domain_name

[13] DNS 控制台

https://dns.console.aliyun.com/

[14] FQDN

https://en.wikipedia.org/wiki/Fully_qualified_domain_name

[15] bind

https://bind9.readthedocs.io/en/v9.18.14/chapter1.html

[16] 分组评估

https://help.aliyun.com/zh/sls/user-guide/use-the-group-evaluation-feature

相关文章:

基于“日志审计应用”的 DNS 日志洞察实践

作者:羿莉 (萧羿) 基础背景 DNS(Domain Name System) [ 1] 是任何网络活动的基础。它将易于记忆的域名转换为机器能够理解的 IP 地址。监控 DNS 服务可以帮助用户识别网络活动并保持系统安全。出于合规和安全性的考虑,公司通常要求对网络日志进行存储和…...

大学按照学科类别、办学层次、教育性质分类有哪些?创龙教仪一文带您了解

大学的分类多种多样,主要可以从学科类别、办学层次、教育性质等方面进行划分。 一、按学科类别划分 综合类大学 特点:学科门类齐全,文理渗透,科研实力强。 优势:拥有较多的国家级重点学科和实验室,师资…...

数据结构与算法 - 递归

一、递归 1. 概述 定义:在计算机科学中,递归是一种解决计算问题的方法,其中解决方案取决于同一类问题的更小子集。 比如单链表递归遍历的例子: void f(Node node) {if(node null) {return;}println("before:" node…...

python:plotly 网页交互式数据可视化工具

pip install plotly plotly-5.22.0-py3-none-any.whl pip install plotly_express 包含:GDP数据、餐厅的订单流水数据、鸢尾花 Iris数据集 等等 pip show plotly Name: plotly Version: 5.22.0 Summary: An open-source, interactive data visualization librar…...

聊一聊 webpack5性能优化有哪些?

介绍 此文章基于webpack5来阐述 webpack性能优化较多,可以对其进行分类 优化打包速度,开发或者构建时优化打包速度(比如exclude、catch等)优化打包后的结果,上线时的优化(比如分包处理、减小包体积、CDN…...

公布一批神马爬虫IP地址,真实采集数据

一、数据来源: 1、这批神马爬虫IP来源于尚贤达猎头公司网站采集数据; 2、数据采集时间段:2023年10月-2024年1月; 3、判断标准:主要根据用户代理是否包含“YisouSpider”,具体IP没做核实。 二、神马爬虫主…...

uni-app全局文件与常用API

文章目录 rpx响应式单位import导入css样式及scss变量用法与static目录import导入css样式uni.scss变量用法 pages.json页面路由globalStyle的属性pages设置页面路径及窗口表现tabBar设置底部菜单选项及iconfont图标 vite.config中安装插件unplugin-auto-import自动导入vue和unia…...

连接器表面缺陷检测方案

连接器是一种用于连接电子设备或电路中不同部件之间的组件,通常用于传输电力、信号或数据。连接器的设计和类型各不相同,以适应不同设备和应用的需求。连接器用于连接电子设备之间的电线、电缆或电路板,实现信号传输和电力供应。连接器设计应…...

React项目动态设置index.html中的<title>标签内容

1. 安装react-helmet-async npm install react-helmet-async -S2. 如下修改App.tsx即可 import { ConfigProvider } from "antd"; import { RouterProvider } from "react-router-dom"; import { router } from "//router"; import { Helmet, …...

大龄程序员转型攻略:拥抱人工智能,开启新征程

前言 随着科技的飞速发展,人工智能浪潮席卷全球,相关岗位炙手可热。在这个背景下,许多大龄程序员开始思考如何转型,以适应时代的变化。结合自身编程基础,大龄程序员可以学习机器学习、深度学习算法,投身于…...

Jenkins保姆笔记(1)——基于Java8的Jenkins安装部署

前言 记录分享下Jenkins的相关干货知识。分2-3篇来介绍Jenkins的安装部署以及使用。还是和以前一样,文章不介绍较多概念和细节,多介绍实践过程,以战代练,来供大家学习和理解Jenkins 概念 Jenkins是一个开源的自动化服务器&…...

学习c语言第18天(字符串和内存函数)

1.函数介绍 1.1 strlen size_t(就是无符号整形) strlen(const char * str); 字符串已经\0作为结束标志,strlen函数返回的是在字符串中\0前面出现的字符个数(不包 含\0) 参数指向的字符串必须要以\0结束。 注意函数的返回值为size_t,…...

无心剑七绝《潘展乐神》

七绝潘展乐神 潘江陆海忘情游 展志凌云筑玉楼 乐创全球新纪录 神姿英发舞金钩 2024年8月1日 平水韵十一尤平韵 潘展乐神,这四个字,如同四座矗立的丰碑,分别代表了潘展乐在游泳领域的卓越成就、豪情壮志、快乐创新和非凡风采。无心剑的这首…...

Linux C++ 开发1 - 搭建C++开发环境

1. 安装GCC/GDB 1.1. 安装1.2. 校验 2. 安装CMake 2.1. 安装2.2. 校验 3. 安装IDE 3.1. VSCode3.2. CLion 1. 安装GCC/GDB 1.1. 安装 # 更新软件源 sudo apt update # 通过以下命令安装编译器和调试器 sudo apt install build-essential gdb Ubuntu 默认情况下没有提供C/C…...

吴恩达老师机器学习-ex4

梯度检测没有实现。有借鉴网上的部分 导入相关库,读取数据 因为这次的数据是mat文件,需要使用scipy库中的loadmat进行读取数据。 通过对数据类型的分析,发现是字典类型,查看该字典的键,可以发现又X,y等关…...

C语言-函数例题

函数经典例题 1、编写一个函数实现该功能&#xff1a;从键盘输入一个字串符&#xff0c; 再输入两个正整数 m 和 n, 输出字符串中从 m 开始&#xff0c; 连续 n 个字符。例如&#xff0c; 输入 abcdefg,2,3,输出 bcd. #include <stdio.h> /*作者: zcy日期:功能描述:编写…...

鸿蒙应用框架开发【多HAP】程序框架

多HAP 介绍 本示例展示多HAP开发&#xff0c;简单介绍了多HAP的使用场景&#xff0c;应用包含了一个entry HAP和两个feature HAP&#xff0c;两个feature HAP分别提供了音频和视频播放组件&#xff0c;entry中使用了音频和视频播放组件。 三个模块需要安装三个hap包&#xff…...

PG如何实现跨大版本升级

数据库进行升级&#xff0c;是一个再正常不过的功能&#xff0c;比如功能的需要&#xff0c;遇到BUG&#xff0c;安全漏洞等等&#xff0c;具体升级包含子版本升级&#xff0c;主版本升级。如果用过ORACLE的朋友&#xff0c;一定知道&#xff0c;在ORACLE中&#xff0c;如果要实…...

JDK 8 升级 17 及 springboot 2.x 升级 3.x 指南

JDK 8 升级 17 简介 从 JDK 8 升级到 JDK 17 的过程中&#xff0c;有几个主要的变化&#xff0c;特别是 Java Platform Module System (JPMS) 的引入&#xff0c;以及一些包路径的调整。以下是与 JDK 17 相关的一些重要变化&#xff1a; Java Platform Module System (JPMS) …...

基于java的人居环境整治管理系统(源码+lw+部署文档+讲解等)

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝20W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…...

深入了解Pip:Python包管理器的详细指南

目录 Pip简介Pip的安装与升级Pip的基本使用 安装包卸载包列出已安装的包查看包的信息 管理依赖 使用requirements.txt冻结当前环境的包 Pip进阶用法 安装特定版本的包使用代理安装包从本地文件安装包 创建和发布Python包 创建一个Python包编写setup.py文件发布到PyPI 常见问题…...

Corsearch 用 ClickHouse 替换 MySQL 进行内容和品牌保护

本文字数&#xff1a;3357&#xff1b;估计阅读时间&#xff1a;9 分钟 作者&#xff1a;ClickHouse Team 本文在公众号【ClickHouseInc】首发 Chase Richards 自 2011 年在初创公司 Marketly 担任工程负责人&#xff0c;直到 2020 年公司被收购。他现在是品牌保护公司 Corsear…...

常见的应急救援设备有哪些_鼎跃安全

在我们的生活中&#xff0c;应急事件的发生常常是突如其来的&#xff0c;它们对人民的生命财产安全构成重大威胁&#xff0c;同时也对社会稳定提出严峻挑战。在这样的紧急情况下&#xff0c;迅速开展有效的救援工作显得尤为重要。而在整个救援过程中&#xff0c;应急设备的使用…...

Vue 项目部署后首页白屏问题排查与解决

引言 在部署 Vue.js 项目时&#xff0c;有时会遇到首页加载后出现白屏的情况&#xff0c;这可能是由于多种原因造成的。本文将介绍一些常见的排查方法和解决方案&#xff0c;帮助开发者快速定位问题并解决。 1. 常见原因分析 首页白屏的问题可能由以下几个方面的原因导致&am…...

STM32 定时器移相任意角度和占空比,频率可调

由于使用了中断修改翻转的CCR值&#xff0c;对于频率超250K以上不太适用. void Motor1_Init(Motor MotorChValue) { GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;NVIC_InitTypeDef NVIC_Ini…...

C++ 与其他编程语言区别_C++11/14/17新特性总结

C11 decltype类型推导 decltype不依赖于初始化&#xff0c;根据表达式类推导类型 auto b &#xff1a;根据右边a的初始值来推导出变量的类型&#xff0c;然后将该初始值赋给bdecltype 则是根据a表达式来推导类型&#xff0c;变量的初始值与表达式的值无关表达式类型注意点&…...

玩转云服务:Google Cloud谷歌云永久免费云服务器「白嫖」 指南

前几天&#xff0c;和大家分享了&#xff1a; 玩转云服务&#xff1a;Oracle Cloud甲骨文永久免费云服务器注册及配置指南 相信很多同学都卡在了这一步&#xff1a; 可用性域 AD-1 中配置 VM.Standard.E2.1.Micro 的容量不足。请在其他可用性域中创建实例&#xff0c;或稍后…...

用18讲必看:宇哥亲划重点内容+核心题总结

25考研结束之后&#xff0c;张宇老师的风评可能会两极分化 其中一波把张宇老师奉为考研数学之神&#xff0c;吹捧「三向解题法」天下无敌。 另外一波对张宇老师的评价负面&#xff0c;在网上黑张宇老师&#xff01; 为什么会这么说&#xff0c;因为张宇老师的新版36讲争议太…...

什么是安全生产痕迹化管理?如何做到生产过程中全程痕迹化管理?

安全生产痕迹化管理&#xff0c;简单来说&#xff0c;就是通过记录一些“信息”来确保安全工作的进展。这些方法包括记会议内容、写安全日记、拍照片、签字盖章、指纹识别、面部识别还有手机定位等。记录下来的文字、图片、数据和视频&#xff0c;就像一个个“脚印”&#xff0…...

VIsual Studio:为同一解决方案下多个项目分别指定不同的编译器

一、引言 如上图&#xff0c;我有一个解决方案【EtchDevice】&#xff0c;他包含两个&#xff08;甚至更多个&#xff09;子项目&#xff0c;分别是【DeviceRT】和【DeviceWin】&#xff0c;见名知意&#xff0c;我需要一个项目编译运行在RTOS上&#xff0c;譬如一个名叫INTime…...

网站开发模板专家数据库/爱站网关键字挖掘

伴随着疫情影响的逐渐减弱和国际竞争的不断加剧&#xff0c;全球制造业的数字化转型正在加速推进。中国作为全球的制造业大国、全球供应链体系最完备的国家&#xff0c;只有快速实现数字化的升级和转型&#xff0c;才能持续的在风高浪急的新局面中保持“中国制造”的优势。当前…...

地产平面网站/网络营销推广策划

本机存在ssh key 在安装Git前提下&#xff0c;打开Git Bash Here 输入 cd ~/.ssh 进入到.ssh 文件夹 输入 ls 查看.ssh 文件夹里面的文件&#xff0c;有 【id_rsa】【 id_rsa.pub】 known_hosts &#xff0c;ssh秘钥就在 id_rsa.pub文件里 id_rsa是私钥&#xff0c;不能泄露出…...

网站怎么做架构图/引擎优化

前言 这个话题已经是老生常谈了&#xff0c;之所以又被我拎出来&#xff0c;是因为博主隔壁的一个童鞋最近写了一篇叫做《ThreadLocal内存泄露》的文章&#xff0c;我就不上链接了&#xff0c;因为写的实在是。。&#xff08;省略一万字&#xff09; 重点是写完后&#xff0c;还…...

山西通州集团网站建设/seo赚钱方法大揭秘

面传值是学习asp.net初期都会面临的一个问题&#xff0c;总的来说有页面传值、存储对象传值、ajax、类、model、表单等。但是一般来说&#xff0c;常用的较简单有QueryString&#xff0c;Session&#xff0c;Cookies&#xff0c;Application&#xff0c;Server.Transfer。 一、…...

可以免费做商业网站的cms/网上怎么发布广告

混迹网络并且喜欢在线视频的朋友&#xff0c;作为一名“豆粉”&#xff0c;相信对“土豆网”的视频播客不会陌生&#xff0c;尽管在线观看非常方便&#xff0c;但也不得不面临播放不够流畅、视频短片上传分享比较麻烦、想把片子的对白提取出来随时收听困难等问题&#xff0c;其…...

北湖区网站建设/百度录入网站

四、 测试、试运行、维护阶段 测试的主要任务是发现并修改系统的问题&#xff0c;其中性能问题也是一个重要的方面。重点应该放在发现有性能问题的地方&#xff0c;并进行必要的优化。主要进行语句优化、索引优化等。 试运行和维护阶段是在实际的环境下运行系统&#xff0c;发…...