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

Elasticsearch使用篇 - 指标聚合

指标聚合

指标聚合从聚合文档中提取出指标进行计算。可以从文档的字段或者使用脚本方式进行提取。

聚合统计可以同时返回明细数据,可以分页查询,可以返回总数量。

可以结合查询条件,限制数据范围,结合倒排索引+列式存储。

指标聚合的资料可以参考 Elasticsearch Metrics aggregation。

语法格式:

GET <index>/_search
{"aggs": {"<aggs_name>": {"<aggs_type>": {"field": "<field_name>"}}}
}

min、max、sum、avg

分别是最小值、最大值、求和、求平均值。它们四个都是单值指标聚合。可以从聚合文档中指定数值字段或者脚本中提取数值来计算统计信息。

  • field:对指定字段进行聚合。

  • missing:当指定字段的值不存在时,指定一个缺省值。默认会忽略。

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"sum_taxful_total_price": {"sum": {"field": "taxful_total_price"}},"avg_taxful_total_price": {"avg": {"field": "taxful_total_price"}},"max_taxful_total_price": {"max": {"field": "taxful_total_price"}},"min_taxful_total_price": {"min": {"field": "taxful_total_price"}}}
}

结果输出如下:

{"took" : 16,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"max_taxful_total_price" : {"value" : 2250.0},"sum_taxful_total_price" : {"value" : 350884.12890625},"avg_taxful_total_price" : {"value" : 75.05542864304813},"min_taxful_total_price" : {"value" : 6.98828125}}
}

以上四种聚合可以从脚本中提取数值来统计相关信息。

GET kibana_sample_data_ecommerce/_search
{"size": 0,"runtime_mappings": {"unit_price": {"type": "double","script": """emit(doc['taxful_total_price'].value / doc['total_quantity'].value)"""}}, "aggs": {"avg_unit_price": {"avg": {"field": "unit_price"}}}
}

stats

统计聚合。一种多值指标聚合,可以从聚合文档中指定数值字段或者脚本中提取数值来计算统计信息,统计信息包括 count、min、max、sum、avg。

  • field:对指定字段进行聚合。

  • missing:当指定字段的值不存在时,指定一个缺省值。默认会忽略。

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"stats_taxful_total_price": {"stats": {"field": "taxful_total_price"}}}
}

输出结果如下:

{"took" : 22,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"stats_taxful_total_price" : {"count" : 4675,"min" : 6.98828125,"max" : 2250.0,"avg" : 75.05542864304813,"sum" : 350884.12890625}}
}

stat 聚合可以从脚本中提取数值来统计相关信息。

GET kibana_sample_data_ecommerce/_search
{"size": 0,"runtime_mappings": {"unit_price": {"type": "double","script": """emit(doc['taxful_total_price'].value / doc['total_quantity'].value)"""}}, "aggs": {"stat_price": {"stats": {"field": "unit_price"}}}
}

extended_stats

拓展统计聚合。一种多值指标聚合,可以从聚合文档中指定数值字段或者脚本中提取数值来计算统计信息。

  • field:对指定字段进行聚合。
  • sigma:控制应该显示离均值的标准偏差的数量。
  • missing:当指定字段的值不存在时,指定一个缺省值。默认会忽略。
GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"extend_stats_total_price": {"extended_stats": {"field": "taxful_total_price"}}}
}

输出结果如下:

{"took" : 4,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"extend_stats_total_price" : {"count" : 4675,"min" : 6.98828125,"max" : 2250.0,"avg" : 75.05542864304813,"sum" : 350884.12890625,"sum_of_squares" : 3.9367749294174194E7,	// 平方和"variance" : 2787.59157113862,			// 方差"variance_population" : 2787.59157113862,"variance_sampling" : 2788.187974983536,"std_deviation" : 52.79764740155209,		// 标准差"std_deviation_population" : 52.79764740155209,"std_deviation_sampling" : 52.80329511482722,"std_deviation_bounds" : {"upper" : 180.6507234461523,"lower" : -30.53986616005605,"upper_population" : 180.6507234461523,"lower_population" : -30.53986616005605,"upper_sampling" : 180.66201887270256,"lower_sampling" : -30.551161586606312}}}
}

extended_stats 聚合同样支持从脚本中提取数值来统计相关信息。

GET kibana_sample_data_ecommerce/_search
{"size": 0,"runtime_mappings": {"unit_price": {"type": "double","script": """emit(doc['taxful_total_price'].value / doc['total_quantity'].value)"""}}, "aggs": {"extended_stat_unit_price": {"extended_stats": {"field": "unit_price"}}}
}

percentiles

[pə’sentaɪlz] ,百分位数聚合。

它属于多值指标聚合,从聚合文档中的数值字段、直方图字段或者脚本中提取出一个或者多个百分位数。

百分位表示观测值的某个百分比出现的点。例如,第 95 个百分位数是大于观测值 95% 的值。

百分位数通常用于寻找异常值。在正态分布中,第 0.13 和 第 99.87 个百分位代表与平均值的三个标准差。任何超出三个标准差的数据通常都被认为是异常。

当检索到一个百分比范围时,可以使用它们来估计数据分布,并确定数据是否倾斜、双峰等。

  • field:对指定字段进行聚合。

  • keyed:默认 true,即使用键值对格式返回数据;如果设置为 false,则使用数组格式返回数据。

  • percents:指定百分位等级。

  • tdigest:百分位计算选择的算法。TDigest 算法用来平衡内存使用率和估算精度。该算法使用一些节点来估算百分位数 - 可用的节点越多,数据的精度越高,但是内存使用率也越高。节点个数限制为 compression * 20。一个节点大约占用 32 字节的内存,按照默认配置的最差情况将产生一个大约 64 KB 大小的 TDigest。

  • compression:压缩参数。默认100。

  • hdr:使用 HDR 直方图(High Dynamic Range Histogram,即高动态范围直方图)计算百分位数。它比 TDigest 算法更快,但是占用更大的内存。内部维护一个固定的最坏情况百分比错误(指定为有效数字的数量)。这意味着,如果在直方图中记录从 1 微秒到 1 小时(3,600,000,000 微秒)的值,并将其设置为 3 个有效数字,则对于 1 毫秒以内的值将保持 1 微秒的值分辨率,对于最大跟踪值(1 小时)将保持 3.6 秒(或更好)的值分辨率。

  • number_of_significant_value_digits:有效数字的数量。不能为负数。

  • missing:当指定字段的值不存在时,指定一个缺省值。默认会忽略。

  • script:使用脚本方式。

统计商品价格的百分位数(使用 TDigest 算法)

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"percentiles_taxful_total_price": {"percentiles": {"field": "taxful_total_price","percents": [1,5,25,50,75,95,99],"tdigest": {"compression": 200}}}}
}

输出如下:

{"took" : 58,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"percentiles_taxful_total_price" : {"values" : {"1.0" : 21.984375,"5.0" : 27.984375,"25.0" : 44.96875,"50.0" : 63.96875,"75.0" : 93.0,"95.0" : 156.0,"99.0" : 222.0}}}
}

使用 HDR 直方图的方式。

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"percentiles_taxful_total_price": {"percentiles": {"field": "taxful_total_price","percents": [1,5,25,50,75,95,99],"hdr": {"number_of_significant_value_digits": 3}}}}
}

百分位数聚合支持脚本方式。

GET kibana_sample_data_ecommerce/_search
{"size": 0,"aggs": {"percentiles_taxful_total_price": {"percentiles": {"script": {"lang": "painless","source": "doc['taxful_total_price'].value / params.timeUnit","params": {"timeUnit": 1000}}}}}
}

percentile_ranks

[pərˈsentaɪl],百分位数排名聚合。

多值指标聚合,从聚合文档中的指定数值字段、直方图字段或者脚本中提取出一个或者多个百分位排名。

百分位数排名表示观测值低于某一数值的百分比。例如,如果一个值大于或等于观测值的 95%,则它位于第 95 百分位。

  • field:对指定字段进行聚合。

  • values:指定观测值。

  • keyed:默认 true,即使用键值对格式返回数据;如果设置为 false,则使用数组格式返回数据。

  • hdr:使用 HDR 直方图(High Dynamic Range Histogram,即高动态范围直方图)计算百分位数。它比 TDigest 算法更快,但是占用更大的内存。内部维护一个固定的最坏情况百分比错误(指定为有效数字的数量)。这意味着,如果在直方图中记录从 1 微秒到 1 小时(3,600,000,000 微秒)的值,并将其设置为 3 位有效数字,则对于 1 毫秒以内的值将保持 1 微秒的值分辨率,对于最大跟踪值(1 小时)将保持 3.6 秒(或更好)的值分辨率。

  • number_of_significant_value_digits:有效数字的数量。不能为负数。

  • missing:当指定字段的值不存在时,指定一个缺省值。默认会忽略。

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"percentile_ranks_total_price": {"percentile_ranks": {"field": "taxful_total_price","values": [100,200]}}}
}

结果输出如下:

{"took" : 22,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"percentile_ranks_total_price" : {"values" : {"100.0" : 79.31550802139039,"200.0" : 98.43850267379679}}}
}

percentile_ranks 聚合同样支持脚本方式。

GET kibana_sample_data_ecommerce/_search
{"size": 0,"aggs": {"percentile_ranks_taxful_total_price": {"percentile_ranks": {"values": [90, 100],"script": {"lang": "painless","source": "doc['taxful_total_price'].value / params.timeUnit","params": {"timeUnit": 10}}}}}
}

cardinality

[kɑːdɪ’nælɪtɪ],基数聚合。

一种单值指标聚合,统计不同值的近似计数。底层使用 Hyperloglog++ 算法。

  • field:对指定字段进行聚合。

  • precision_threshold:精度控制参数,默认 3000, 最大值 40000,在这个范围内,统计出来的数据去重是准确的,超过之后存在一定的误差。

  • missing:当指定字段的值不存在时,指定一个缺省值。默认会忽略。

统计客户数量

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"cardinality_customer_id": {"cardinality": {"field": "customer_id","precision_threshold": 3000}}}
}

结果输出如下:

{"took" : 9,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"cardinality_customer_id" : {"value" : 46}}
}

value_count

值计数聚合。用于计算从聚合文档中提取的值的数量。它是一种单值指标聚合。

  • field:指定聚合的字段

统计客户购买了多少商品

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"value_count_products_id": {"value_count": {"field": "products._id.keyword"}}}
}

对于 histogram 类型的字段,value_count 聚合会统计 counts 数组元素之和。

PUT metrics_index
{"mappings": {"properties": {"network.name": {"type": "keyword"},"latency_histo": {"type": "histogram"}}}
}
PUT metrics_index/_doc/1
{"network.name" : "net-1","latency_histo" : {"values" : [0.1, 0.2, 0.3, 0.4, 0.5],"counts" : [3, 7, 23, 12, 6] }
}PUT metrics_index/_doc/2
{"network.name" : "net-2","latency_histo" : {"values" :  [0.1, 0.2, 0.3, 0.4, 0.5],"counts" : [8, 17, 8, 7, 6] }
}
GET /metrics_index/_search?size=0
{"aggs": {"total_requests": {"value_count": { "field": "latency_histo" }}}
}

输出结果如下:

{"took" : 6,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"total_requests" : {"value" : 97}}
}

string_stats

字符串统计聚合,仅用于 keyword 类型的数据。它是一种多值指标聚合。

统计客户的名字

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"string_stats_customer_name": {"string_stats": {"field": "customer_full_name.keyword"}}}
}

结果输出如下:

{"took" : 81,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"string_stats_customer_name" : {"count" : 4675,"min_length" : 7,"max_length" : 25,"avg_length" : 13.309304812834224,"entropy" : 4.773147238719484}}
}

count:非空值的数量。

min_length:最小长度。

max_length:最大长度。

avg_length:平均长度。

entropy:信息熵。对于测量数据集的广泛属性,如多样性、相似性、随机性等,这是一个非常有用的度量标准。

top_hits

即热门聚合。热门聚合关注关联性最强的文档。通常作为子聚合使用,聚合每个桶中匹配程度最高的文档。简言之,分桶聚合时,热门聚合作为子聚合,用来返回每组头部明细数据。

  • size:限制明细数据返回数量。
  • sort:指定明细数据的排序字段以及排序方式。
  • _source:指定明细数据返回的字段。
GET kibana_sample_data_ecommerce/_search
{"size": 0,"aggs": {"aggs_customer_id": {"terms": {"field": "customer_id","size": 10},"aggs": {"top_hits": {"top_hits": {"size": 2, "_source": {"includes": ["customer_id", "order_date", "products"]},"sort": [{"order_date": {"order": "desc"}}  ]}}}}}
}
PUT sales
{"mappings": {"properties": {"tags": { "type": "keyword" },"comments": {                           "type": "nested","properties": {"username": { "type": "keyword" },"comment": { "type": "text" }}}}}
}
PUT sales/_doc/1?refresh
{"tags": ["car","auto"],"comments": [{"username": "baddriver007","comment": "This car could have better brakes"},{"username": "dr_who","comment": "Where's the autopilot? Can't find it"},{"username": "ilovemotorbikes","comment": "This car has two extra wheels"}]
}
GET sales/_search
{"query": {"term": {"tags": "car"}},"aggs": {"by_sale": {"nested": {"path": "comments"},"aggs": {"by_user": {"terms": {"field": "comments.username","size": 1},"aggs": {"by_nested": {"top_hits": {}}}}}}}
}

top_metrics

即头部指标聚合。可以指定自定义字段与排序规则,按照排序字段的头部数据统计。

  • metrics:获取头部指标字段的数值。
  • sort:指定头部指标字段的排序规则
  • size:限制头部指标返沪的数据条数。默认1,索引限制最多为10,可以修改 index.top_metrics_max_size

e.g. 按照客户分桶统计,在每个桶中按照客户下单日期顺序排序,返回订单中第一条购买的总金额。

GET kibana_sample_data_ecommerce/_search
{"size": 0, "aggs": {"aggs_customer_id": {"terms": {"field": "customer_id","size": 2},"aggs": {"top_metrics_total_price": {"top_metrics": {"metrics": {"field": "taxful_total_price"},"sort": {"order_date": "desc"},"size": 1}}}}}
}

结果输出如下:

{"took" : 14,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 4675,"relation" : "eq"},"max_score" : null,"hits" : [ ]},"aggregations" : {"aggs_customer_id" : {"doc_count_error_upper_bound" : 0,"sum_other_doc_count" : 4139,"buckets" : [{"key" : "27","doc_count" : 348,"top_metrics_total_price" : {"top" : [{"sort" : ["2022-08-13T18:38:53.000Z"],"metrics" : {"taxful_total_price" : 79.0}}]}},{"key" : "52","doc_count" : 188,"top_metrics_total_price" : {"top" : [{"sort" : ["2022-08-13T21:41:46.000Z"],"metrics" : {"taxful_total_price" : 75.0}}]}}]}}
}

修改 top metrics 限制

PUT kibana_sample_data_ecommerce/_settings
{"top_metrics_max_size": 100
}

相关文章:

Elasticsearch使用篇 - 指标聚合

指标聚合 指标聚合从聚合文档中提取出指标进行计算。可以从文档的字段或者使用脚本方式进行提取。 聚合统计可以同时返回明细数据&#xff0c;可以分页查询&#xff0c;可以返回总数量。 可以结合查询条件&#xff0c;限制数据范围&#xff0c;结合倒排索引列式存储。 指标…...

Python生命周期及内存管理

文章目录 一、Python的生命周期 1、概念2、如何监听生命周期二、内存管理 1.存储2.垃圾回收3.引用计数一、生命周期&#xff1a; 1、概念&#xff1a;一个对象从创建到消亡的过程 当一个对象呗创建是&#xff0c;会在内存中分配响应的内存空间进行存储 当这个对象不再使…...

Elasticsearch7.8.0版本进阶——数据写流程

目录一、数据写流程概述二、数据写流程步骤2.1、数据写流程图2.2、数据写流程步骤&#xff08;新建索引和删除文档所需要的步骤顺序&#xff09;2.3、数据写流程的请求参数一、数据写流程概述 新建、删除索引和新建、删除文档的请求都是写操作&#xff0c; 必须在主分片上面完…...

化学试剂Glutaric Acid-PEG-Glutaric Acid,GA-PEG-GA,戊二酸-聚乙二醇-戊二酸

一&#xff1a;产品描述 1、名称 英文&#xff1a;Glutaric Acid-PEG-Glutaric Acid&#xff0c;GA-PEG-GA 中文&#xff1a;戊二酸-聚乙二醇-戊二酸 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Carboxylic acid PEG 4、分子量&#xff1a;可定制&#xff0c; 戊…...

知识图谱业务落地技术推荐之国内知识图谱平台汇总(竞品)[阿里、腾讯、华为等】

各位可以参考国内知识图谱平台产品进行对技术链路搭建和产品参考提供借鉴。...

ABC 289 G - Shopping in AtCoder store 数学推导+凸包

大意&#xff1a; n个顾客&#xff0c;每个人有一个购买的欲望bi,m件物品&#xff0c;每一件物品有一个价值ci,每一个顾客会买商品当且仅当bici>定价. 现在要求对每一个商品定价&#xff0c;求出它的最大销售值&#xff08;数量*定价&#xff09; n,m<2e5 思路&#x…...

ARM Linux 如何在sysfs用户态命令行中控制 GPIO 引脚?

ARM Linux 如何在sysfs用户态命令行中控制 GPIO 引脚&#xff1f;我们在开发工作中&#xff0c;经常需要确定内核gpio驱动&#xff0c;是否有异常&#xff0c;或者在没有应用的情况下&#xff0c;像控制某个外设&#xff0c;这时我们就可以在控制台命令行中&#xff0c;用命令导…...

【Linux】生产者消费者模型 - 详解

目录 一.生产者消费者模型概念 1.为何要使用生产者消费者模型 2.生产者消费者之间的关系 3.生产者消费者模型的优点 二.基于阻塞队列的生产消费模型 1.在阻塞队列中的三种关系 2.BlockingQueue.hpp - 阻塞队列类 3.LockGurad.hpp - RAII互斥锁类 4.Task.hpp - 在阻塞队…...

源码深度解析Spring Bean的加载

在应用spring 的过程中&#xff0c;就会涉及到bean的加载&#xff0c;bean的加载经历一个相当复杂的过程&#xff0c;bean的加载入口如下&#xff1a; 使用getBean&#xff08;&#xff09;方法进行加载Bean&#xff0c;最终调用的是AbstractBeanFactory.doGetBean() 进行Bean的…...

STL——priority_queue

一、priority_queue介绍及使用 1.priority_queue文档介绍 &#xff08;1&#xff09;优先队列是一种容器适配器&#xff0c;根据严格的弱排序标准&#xff0c;它的第一个元素总是它所包含的元素中最大的。 &#xff08;2&#xff09;此上下文类似与堆&#xff0c;在堆中可以…...

Springboot集成工作流Activity

介绍 官网&#xff1a;https://www.activiti.org/ 一 、工作流介绍 1.工作流&#xff08;workflow&#xff09; 就是通过计算机对业务流程自动化执行管理&#xff0c;它主要解决的是“使在多个参与这之间按照某种预定义规则自动化进行传递文档、信息或任务的过程&#xff0c…...

2023软件测试工程师涨薪攻略,3年如何达到月薪30K?

1.软件测试如何实现涨薪 首先涨薪并不是从8000涨到9000这种涨薪&#xff0c;而是从8000涨到15K加到25K的涨薪。基本上三年之内就可以实现。 如果我们只是普通的有应届毕业生或者是普通本科那我们就只能从小公司开始慢慢往上走。 有些同学想去做测试&#xff0c;是希望能够日…...

Java面试——Spring Bean相关知识

目录 1.Bean的定义 2.Bean的生命周期 3.BeanFactory及Factory Bean 4.Bean的作用域 5.Bean的线程安全问题 1.Bean的定义 JavaBean是描述Java的软件组件模型。在Java模型中&#xff0c;通过JavaBean可以无限扩充Java程序的功能&#xff0c;通过JavaBean的组合可以快速的生…...

上班在群里摸鱼,逮到一个字节8年测试开发,聊过之后羞愧难当...

老话说的好&#xff0c;这人呐&#xff0c;一旦在某个领域鲜有敌手了&#xff0c;就会闲得某疼。前几天我在上班摸鱼刷群的时候认识了一位字节测试开发大佬&#xff0c;在字节工作了8年&#xff0c;因为本人天赋比较高&#xff0c;平时工作也兢兢业业&#xff0c;现在企业内有一…...

HTTP、WebSocket和Socket.IO

一、HTTP协议 HTTP协议是Hyper Text Transfer Protocol&#xff08;超文本传输协议&#xff09;。HTTP 协议和 TCP/IP 协议族内的其他众多的协议相同&#xff0c; 用于客户端和服务器之间的通信。请求访问文本或图像等资源的一端称为客户端&#xff0c; 而提供资源响应的一端称…...

Fluent Python 笔记 第 11 章 接口:从协议到抽象基类

本章讨论的话题是接口:从鸭子类型的代表特征动态协议&#xff0c;到使接口更明确、能验证实现是否符合规定的抽象基类(Abstract Base Class&#xff0c;ABC)。 11.1 Python 文化中的接口和协议 对 Python 程序员来说&#xff0c;“X 类对象”“X 协 议”和“X 接口”都是一个…...

【Spark分布式内存计算框架——Spark Core】11. Spark 内核调度(下)

8.5 Spark 基本概念 Spark Application运行时&#xff0c;涵盖很多概念&#xff0c;主要如下表格&#xff1a; 官方文档&#xff1a;http://spark.apache.org/docs/2.4.5/cluster-overview.html#glossary Application&#xff1a;指的是用户编写的Spark应用程序/代码&#x…...

Java中的函数

1.String.trim() : 主要有2个用法&#xff1a; 1、就是去掉字符串中前后的空白&#xff1b;这个方法的主要可以使用在判断用户输入的密码之类的。 2、它不仅可以去除空白&#xff0c;还可以去除字符串中的制表符&#xff0c;如 ‘\t’,\n等。 2.Integer.parseInt() : 字符串…...

实验6-霍纳法则及变治技术

目录 1.霍纳法则(Horners rule) 2.堆排序 3.求a的n次幂 1.霍纳法则(Horners rule) 【问题描述】用霍纳法则求一个多项式在一个给定点的值 【输入形式】输入三行,第一行是一个整数n,表示的是多项式的最高次数;第二行多项式的系数组P[0...n](从低到高存储);第三行是…...

IP地址:揭晓安欣警官自证清白的黑科技

《狂飙》这部电视剧&#xff0c;此从播出以来可谓是火爆了&#xff0c;想必大家都是看过的。剧中&#xff0c;主人公“安欣”是一名警察。一直在与犯罪分子做斗争。 莽村的李顺案中&#xff0c;有匿名者这个案件在网上发帖恶意造谣&#xff0c;说安欣是黑恶势力的保护伞&#…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

css的定位(position)详解:相对定位 绝对定位 固定定位

在 CSS 中&#xff0c;元素的定位通过 position 属性控制&#xff0c;共有 5 种定位模式&#xff1a;static&#xff08;静态定位&#xff09;、relative&#xff08;相对定位&#xff09;、absolute&#xff08;绝对定位&#xff09;、fixed&#xff08;固定定位&#xff09;和…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...