[Es_1] 介绍 | 特点 | 图算法 | Trie | FST
编程就是一门不断试错的艺术。不要害怕犯错,实践才会出真知。
什么是ElasticSearch?
Elasticsearch是一个分布式的免费开源搜索和分析引擎
适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。
Elasticsearch在Apache Lucene的基础上开发而成。然而,Elasticsearch不仅仅是Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:
- 一个分布式的实时文档存储,每个字段都可以被索引与搜索
- 一个分布式实时分析搜索引擎
- 能胜任上百个服务节点的扩展,并支持PB级别的结构化或者非结构化数据
三大特点
1.强大的全文检索
2.丰富的聚合统计功能
- 天然具备 大数据量的 数据实时聚合统计特性
(解决了 mysql 的 上旋下钻,合计小计)
3.无模式设计的非结构化
应用
做数据仓库
设计概念
- 唯一的文档编号
特点与算法
es 是主要用 java 写的,但因为博主平时刷算法用的 C++,所以相关算法就还是用 C++来介绍啦
1. 强大的全文检索
实现
字典树Trie的C++实现
#include <unordered_map>
#include <vector>class TrieNode {
public:std::unordered_map<char, TrieNode*> children;bool isEnd = false;
};class Trie {
public:Trie() { root = new TrieNode(); }void insert(const std::string& word) {TrieNode* curr = root;for (char c : word) {if (!curr->children.count(c)) {curr->children[c] = new TrieNode();}curr = curr->children[c];}curr->isEnd = true;}bool search(const std::string& word) {TrieNode* curr = root;for (char c : word) {if (!curr->children.count(c)) return false;curr = curr->children[c];}return curr->isEnd;}private:TrieNode* root;
};
数据结构:字典树
优化 1:FST 共享前后缀---形成了 DAG
优化 2:结合偏移量 获取 id
倒排索引
关于倒排索引,去年写搜索引擎的项目中有讲解过[项目详解][boost搜索引擎#2] 建立index | 安装分词工具cppjieba | 实现倒排索引
• 正排索引适合:已知ID查内容(如SELECT * FROM table WHERE id=123)
• 倒排索引适合:关键词搜索(如搜索包含"5G手机"的文档)
场景:
• 图书馆管理系统:正排索引查书号找书,倒排索引按主题找书
• 电商平台:正排索引展示商品详情,倒排索引实现搜索功能
举例
排序评分算法
1. TF-IDF算法
#include <cmath>// 计算词频(TF)
double compute_tf(const Posting& post) {return post.positions.size() > 0 ? 1.0 + log(post.positions.size()) : 0.0;
}// 计算逆文档频率(IDF)
double compute_idf(const InvertedIndex& index,
const std::string& term,
int total_docs) {if (!index.count(term)) return 0.0;return log(total_docs / (1.0 + index.at(term).size()));
}
2. BM25算法优化版
class BM25 {
public:
BM25(double k=1.2, double b=0.75) : k1(k), b(b) {}double score(const Posting& post,
double avgdl, // 平均文档长度
int doc_length,
double idf) {double tf = post.positions.size();double numerator = tf * (k1 + 1);double denominator = tf + k1 * (1 - b + b * doc_length / avgdl);return idf * (numerator / denominator);
}private:
double k1, b;
};
3.FST优化关键点
struct FSTNode {char c; int output;std::vector<FSTNode*> next;// 共享后缀检测bool has_common_suffix(const FSTNode* other) {return (this->c == other->c) && (this->next == other->next);}
跳表查找文档
1. 跳表加速查找
// 跳表节点结构
struct SkipNode {
int doc_id;
std::vector<SkipNode*> levels;SkipNode(int id, int level) : doc_id(id) {levels.resize(level, nullptr);
}
};
2. Delta编码压缩
void delta_encode(std::vector<int>& ids) {if (ids.empty()) return;int prev = ids[0];for (int i=1; i<ids.size(); ++i) {int temp = ids[i];ids[i] -= prev;prev = temp;}
}
2.丰富的聚合统计功能
3. 无模式设计的非结构化
这两个特性和其运用的算法将在下一篇文章中讲解
Wiki
Elasticsearch is a search engine based on Apache Lucene, a free and open-source search engine. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Official clients are available in Java,[2] .NET[3] (C#), PHP,[4] Python,[5] Ruby[6] and many other languages.[7] According to the DB-Engines ranking, Elasticsearch is the most popular enterprise search engine.[8]
Elasticsearch 是一个基于 Apache Lucene 的搜索引擎,Apache Lucene 是一个免费的开源搜索引擎。它提供了一个分布式的、支持多租户的全文搜索引擎,具有 HTTP Web 界面和无模式的 JSON 文档。官方客户端支持 Java、[2]、.NET[3] (C#)、PHP、[4] Python、[5] Ruby[6] 和许多其他语言。[7]根据 DB-Engines 排名,Elasticsearch 是最受欢迎的企业搜索引擎。 [8]
History 历史
[edit]
Shay Banon created the precursor to Elasticsearch, called Compass, in 2004.[9] While thinking about the third version of Compass he realized that it would be necessary to rewrite big parts of Compass to "create a scalable search solution".[9] So he created "a solution built from the ground up to be distributed" and used a common interface, JSON over HTTP, suitable for programming languages other than Java as well.[9] Shay Banon released the first version of Elasticsearch in February 2010.[10]
Shay Banon 于 2004 年创建了 Elasticsearch 的前身,称为 Compass。[9]在考虑 Compass 的第三个版本时,他意识到有必要重写 Compass 的大部分内容以“创建一个可扩展的搜索解决方案”。[9]因此,他创建了“一个从头开始构建以供分发的解决方案”,并使用了一个通用接口,即 JSON over HTTP,也适用于 Java 以外的编程语言。[9]Shay Banon 于 2010 年 2 月发布了 Elasticsearch 的第一个版本。 [10]
Elastic NV was founded in 2012 to provide commercial services and products around Elasticsearch and related software.[11] In June 2014, the company announced raising $70 million in a Series C funding round, just 18 months after forming the company. The round was led by New Enterprise Associates (NEA). Additional funders include Benchmark Capital and Index Ventures. This round brought total funding to $104M.[12]
Elastic NV 成立于 2012 年,旨在围绕 Elasticsearch 和相关软件提供商业服务和产品。[11]2014 年 6 月,该公司宣布在 C 轮融资中筹集了 7000 万美元,而此时距离公司成立仅 18 个月。该轮融资由 New Enterprise Associates (NEA) 领投。其他资助者包括 Benchmark Capital 和 Index Ventures。本轮融资总额达到 $104M。
In March 2015, the company Elasticsearch changed its name to Elastic.[13]
2015 年 3 月,Elasticsearch 公司更名为 Elastic。 [13]
In June 2018, Elastic filed for an initial public offering with an estimated valuation of between 1.5 and 3 billion dollars.[14] On 5 October 2018, Elastic was listed on the New York Stock Exchange.[15]
2018 年 6 月,Elastic 申请了首次公开募股,估计估值在 1.5 至 30 亿美元之间。[14]2018 年 10 月 5 日,Elastic 在纽约证券交易所上市。 [15]
Developed from the Found acquisition by Elastic in 2015,[16] Elastic Cloud is a family of Elasticsearch-powered SaaS offerings which include the Elasticsearch Service, as well as Elastic App Search Service, and Elastic Site Search Service which were developed from Elastic's acquisition of Swiftype.[17] In late 2017, Elastic formed partnerships with Google to offer Elastic Cloud in Google Cloud Platform (GCP), and Alibaba to offer Elasticsearch and Kibana in Alibaba Cloud.
Elastic Cloud 是在 2015 年被 Elastic 收购后开发的,[16] 是一系列由 Elasticsearch 提供支持的 SaaS 产品,其中包括 Elasticsearch Service,以及 Elastic App Search Service 和 Elastic Site Search Service,它们是在 Elastic 收购 Swiftype 后开发的。[17]2017 年底,Elastic 与 Google 建立了合作伙伴关系,在 Google Cloud Platform (GCP) 中提供 Elastic Cloud,并与阿里巴巴建立了合作伙伴关系,在阿里云中提供 Elasticsearch 和 Kibana。
Elasticsearch Service users can create secure deployments with partners, Google Cloud Platform (GCP) and Alibaba Cloud.[18]
Elasticsearch Service 用户可以与合作伙伴 Google Cloud Platform (GCP) 和阿里云一起创建安全部署。 [18]
Licensing changes 许可变更
[edit]
In January 2021, Elastic announced that starting with version 7.11, they would be relicensing their Apache 2.0 licensed code in Elasticsearch and Kibana to be dual licensed under Server Side Public License and the Elastic License, neither of which is recognized as an open-source license.[19][20] Elastic blamed Amazon Web Services (AWS) for this change, objecting to AWS offering Elasticsearch and Kibana as a service directly to consumers and claiming that AWS was not appropriately collaborating with Elastic.[20][21] Critics of the re-licensing decision predicted that it would harm Elastic's ecosystem and noted that Elastic had previously promised to "never....change the license of the Apache 2.0 code of Elasticsearch, Kibana, Beats, and Logstash". Amazon responded with plans to fork the projects and continue development under Apache License 2.0.[22][23] Other users of the Elasticsearch ecosystem, including Logz.io, CrateDB and Aiven, also committed to the need for a fork, leading to a discussion of how to coordinate the open source efforts.[24][25][26] Due to potential trademark issues with using the name "Elasticsearch", AWS rebranded their fork as OpenSearch in April 2021.[27][28]
2021 年 1 月,Elastic 宣布,从版本 7.11 开始,他们将在 Elasticsearch 和 Kibana 中重新许可其 Apache 2.0 许可代码,以根据服务器端公共许可证和 Elastic 许可证进行双重许可,这两者都不被视为开源许可证。 [19] [20]Elastic 将这一变化归咎于 Amazon Web Services (AWS),反对 AWS 直接向消费者提供 Elasticsearch 和 Kibana 即服务,并声称 AWS 没有与 Elastic 进行适当的合作。 [20] [21]重新许可决定的批评者预测它将损害 Elastic 的生态系统,并指出 Elastic 之前曾承诺“永远不会......更改 Elasticsearch、Kibana、Beats 和 Logstash 的 Apache 2.0 代码的许可证”。亚马逊回应说,计划分叉项目并在 Apache 许可证 2.0 下继续开发。 [22][23]Elasticsearch 生态系统的其他用户,包括 Logz.io、CrateDB 和 Aiven,也承诺需要分叉,从而引发了关于如何协调开源工作的讨论。 [24] [25] [26]由于使用“Elasticsearch”名称存在潜在的商标问题,AWS 于 2021 年 4 月将其分叉更名为 OpenSearch。 [27] [28]
In August 2024 the GNU Affero General Public License was added to ElasticSearch version 8.16.0 as an option, making Elasticsearch free and open-source again.[22][29]
2024 年 8 月,GNU Affero 通用公共许可证作为选项添加到 ElasticSearch 版本 8.16.0 中,使 Elasticsearch 再次免费和开源。 [22] [29]
Features 特征
[edit]
| This article may be too technical for most readers to understand. Please help improve it to make it understandable to non-experts, without removing the technical details. (May 2023) (Learn how and when to remove this message) |
Elasticsearch can be used to search any kind of document. It provides scalable search, has near real-time search, and supports multitenancy.[30] "Elasticsearch is distributed, which means that indices can be divided into shards and each shard can have zero or more replicas. Each node hosts one or more shards and acts as a coordinator to delegate operations to the correct shard(s). Rebalancing and routing are done automatically".[30] Related data is often stored in the same index, which consists of one or more primary shards, and zero or more replica shards. Once an index has been created, the number of primary shards cannot be changed.[31]
Elasticsearch 可用于搜索任何类型的文档。它提供可扩展的搜索,具有近乎实时的搜索功能,并支持多租户。[30]“Elasticsearch 是分布式的,这意味着索引可以分为多个分片,每个分片可以有零个或多个副本。每个节点托管一个或多个分片,并充当协调器,将作委托给正确的分片。再平衡和路由是自动完成的”。[30]相关数据存储在同一索引中,该索引由一个或多个主分片和零个或多个副本分片组成。一旦创建了索引,主分片的数量就无法更改。 [31]
Elasticsearch is developed alongside the data collection and log-parsing engine Logstash, the analytics and visualization platform Kibana, and the collection of lightweight data shippers called Beats. The four products are designed for use as an integrated solution, referred to as the "Elastic Stack".[32] (Formerly the "ELK stack", short for "Elasticsearch, Logstash, Kibana".)
Elasticsearch 与数据收集和日志解析引擎 Logstash、分析和可视化平台 Kibana 以及名为 Beats 的轻量级数据采集器集合一起开发。这四款产品旨在用作集成解决方案,称为“Elastic Stack”。[32](以前称为“ELK 堆栈”,“Elasticsearch、Logstash、Kibana”的缩写。
Elasticsearch uses Lucene and tries to make all its features available through the JSON and Java API. It supports facetting and percolating (a form of prospective search),[33][34] which can be useful for notifying if new documents match for registered queries. Another feature, "gateway", handles the long-term persistence of the index;[35] for example, an index can be recovered from the gateway in the event of a server crash. Elasticsearch supports real-time GET requests, which makes it suitable as a NoSQL datastore,[36] but it lacks distributed transactions.[37]
Elasticsearch 使用 Lucene,并尝试通过 JSON 和 Java API 提供其所有功能。它支持分面和渗透(一种前瞻性搜索形式),[33][34]这对于通知新文档是否与已注册的查询匹配很有用。另一个功能,“网关”,处理索引的长期持久性;[35]例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch 支持实时 GET 请求,这使得它适合作为 NoSQL 数据存储,[36]但它缺乏分布式事务。 [37]
On 20 May 2019, Elastic made the core security features of the Elastic Stack available free of charge, including TLS for encrypted communications, file and native realm for creating and managing users, and role-based access control for controlling user access to cluster APIs and indexes.[38] The corresponding source code is available under the “Elastic License”, a source-available license.[39] In addition, Elasticsearch now offers SIEM[40] and Machine Learning[41] as part of its offered services.
2019 年 5 月 20 日,Elastic 免费提供了 Elastic Stack 的核心安全功能,包括用于加密通信的 TLS、用于创建和管理用户的文件和原生领域,以及用于控制用户对集群 API 和索引的访问的基于角色的访问控制。[38]相应的源代码在“Elastic License”下提供,这是一种源代码可用的许可证。[39]此外,Elasticsearch 现在提供 SIEM[40] 和 Machine Learning[41] 作为其提供的服务的一部分。
相关文章:
[Es_1] 介绍 | 特点 | 图算法 | Trie | FST
编程就是一门不断试错的艺术。不要害怕犯错,实践才会出真知。 什么是ElasticSearch? Elasticsearch是一个分布式的免费开源搜索和分析引擎 适用于包括文本、数字、地理空间、结构化和非结构化数据等在内的所有类型的数据。 Elasticsearch在Apache Luc…...
企业安装加密软件有什么好处
企业安装加密软件可以有效保护敏感数据安全,防止信息泄露,并满足合规要求。以下是其主要好处及具体应用场景: 1. 防止数据泄露,保护核心资产 文件加密:对敏感文件(如财务数据、客户信息、设计图纸ÿ…...
【MVCP】基于解纠缠表示学习和跨模态-上下文关联挖掘的多模态情感分析
多处可看出与同专栏下的DCCMCI很像 abstract 多模态情感分析旨在从多模态数据中提取用户表达的情感信息,包括语言、声学和视觉线索。 然而,多模态数据的异质性导致了模态分布的差异,从而影响了模型有效整合多模态互补性和冗余性的能力。此外,现有的方法通常在获得表征后直…...
2025软考【系统架构设计师】:两周极限冲刺攻略(附知识点解析+答题技巧)
距离2025上半年“系统架构设计师”考试已经只剩最后两周了,还没有准备好的小伙伴赶紧行动起来。为了帮助大家更好的冲刺学习,特此提供一份考前冲刺攻略。本指南包括考情分析、答题技巧、注意事项三个部分,可以参考此指南进行最后的复习要领&a…...
企业该如何选择合适的DDOS防护?
在互联网行业当中,大型的网络游戏和网络视频企业会经常受到DDOS攻击和CC攻击,这些网络攻击会导致服务器崩溃或者是网络中断,给企业造成巨大的经济损失,所以企业通常会配备合适的DDOS防护来进行防御,但是,对…...
CPU-GPU-NPU-TPU 概念
1.CPU 中央处理器(Central Processing Unit,简称CPU)作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。CPU自产生以来,在逻辑结构、运行效率以及功能外延上取得了巨大发展。 2.GPU GPU࿰…...
DELL R770 服务器,更换OCP模块!
今天接到客户报修电话,说有一台 DELL PowerEdge R770服务器,网卡出现了故障,需要更换OCP模块。顺便做一个教程,分享给有需要的小伙伴们。 这一期的教程,听起来好像很高大上,很多小伙伴可能不知道OCP是什么…...
go.mod没有自动缓存问题
今天在安装Gin框架的时候遇到了一个问题 在Terminal运行下面命令安装时,包已经被下载安装到了GoPath中的bkg/mod go get -u github.com/gin-gonic/gin但是由于使用的是Go Modules,GPT以及大多数人给的说法是 运行完这个依赖包会被自动同步更新到go.mod…...
黑电平校正(Black Level Correction, BLC)算法
黑电平校正(Black Level Correction, BLC)算法 黑电平校正(BLC)是图像传感器(如CMOS/CCD)信号处理中的一个重要步骤,主要用于消除传感器暗电流(Dark Current)导致的基线…...
Ubuntu 安装 Keepalived
Keepalived 是什么 Keepalived 是一个用于实现高可用性(High Availability, HA)的服务,是一款基于 VRRP 协议的高可用软件,常用于主备切换和虚拟IP漂移,在服务故障时自动实现故障转移。 Keepalived 的核心功能 功能说…...
基于SpringBoot和PostGIS的应急运输事件影响分析-以1.31侧翻事故为例
目录 前言 一、技术实现路径 1、需要使用的数据 2、空间分析方法 二、相关模块设计与实现 1、运输路线重现开发 2、事故点影响范围实现 3、WebGIS可视化实现 三、讨论 1、界面结果展示 2、影响范围分析 四、总结 前言 在交通运输发达的当今社会,应急运输…...
ABP-Book Store Application中文讲解 - 前期准备 - Part 2:创建Acme.BookStore + Angular
ABP-Book Store Application中文讲解-汇总-CSDN博客 因为本系列文章使用的.NET8 SDK,此处仅介绍如何使用abp cli .NET 8 SDK SQL sevrer 2014创建Angular模板的Acme.BookStore。 目录 1. ABP cli创建项目 1.1 打开cmd.exe 1.2 创建项目 2. ABP Studio创建项…...
grpc到底是啥! ! !!
一、什么是RPC(Remote Procedure Call) 简单理解: RPC是一种让程序可以像调用本地函数一样去调用远程机器上的函数或方法。它的目标:让分布式系统中的不同计算机可以透明地互相通信,实现远程服务调用的封装。 举个例…...
ES6入门---第三单元 模块五:Map和WeakMap
map: users.map((user) 遍历 类似 json, 但是json的键(key)只能是字符串 map的key可以是任意类型 使用: let map new Map(); map.set(key,value); 设置一个值 map.get(key) 获取一个值 map.delete(key) 删除一项 map.has(key) 判断有没有 map.clear…...
【C++】【数据结构】【API列表】标准库数据结构
标准库数据结构 unordered_set 头文件:#include <unordered_set> 特性: 唯一性:所有元素唯一,重复插入无效无序性:元素存储顺序不固定自定义类型:若存储自定义类型需提供哈希函数和相等比较器 …...
三、Hadoop1.X及其组件的深度剖析
作者:IvanCodes 日期:2025年5月7日 专栏:Hadoop教程 一、Hadoop 1.X 概述 (一)概念 Hadoop 是 Apache 开发的分布式系统基础架构,用 Java 编写,为集群处理大型数据集提供编程模型,…...
stm32常见错误
1.使用LCD屏幕时,只用st-link时,亮度很暗,需要用usb数据线额外给屏幕供电; 2.移植freertos到f103c8t6芯片时,工程没有错误,但单片机没有反应; 需要将堆的大小改成10*1024; 3.在找已经…...
《Python星球日记》 第46天:决策树与随机森林
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、前言二…...
【Pandas】pandas DataFrame expanding
Pandas2.2 DataFrame Function application, GroupBy & window 方法描述DataFrame.apply(func[, axis, raw, …])用于沿 DataFrame 的轴(行或列)应用一个函数DataFrame.map(func[, na_action])用于对 DataFrame 的每个元素应用一个函数DataFrame.a…...
【SpringCloud GateWay】Connection prematurely closed BEFORE response 报错分析与解决方案
一、背景 今天业务方调用我们的网关服务报错: Connection prematurely closed BEFORE response二、原因分析 三、解决方案 第一步: 增加 SCG 服务的JVM启动参数,调整连接获取策略。 将连接池获取策略由默认的 FIFO(先进先出)变更为 LIFO(…...
【行业】一些名词
名词 分布式应用架构(分布式计算技术的应用和工具)中间件 中间件(Middleware)主流中间件技术1.通信类2.数据类3. **协调与治理类中间件**4. 监控与可观测性中间件5.**流处理与批处理**中间件6.云原生中间件 数据库Redismogodb 分布…...
深度学习模型的部署实践与Web框架选择
引言 在深度学习项目的完整生命周期中,模型训练只是第一步,将训练好的模型部署到生产环境才能真正发挥其价值。本文将详细介绍模型部署的核心概念、常见部署方式以及三种主流Python Web框架的对比分析,帮助开发者选择最适合自己项目的技术方…...
【笔记】当个自由的书籍收集者从canvas得到png转pdf
最近有点迷各种古书,然后从 www.shuge.org 下载了各种高清的印本,快成db狂魔了…上面也有人在各种平台上分享,不胜感激…只是有些平台可以免费看但是没法下载… 反正你都canvas了,撸下来自己珍藏… 于是让qwen写了一段代码&#…...
Ubuntu 配置网络接口端点(静态 IP 地址)详细教程
在 Ubuntu 系统中,配置网络接口端点通常指的是为您的有线或无线网卡设置一个固定的 IP 地址、子网掩码、网关以及 DNS 服务器。这对于服务器或者需要稳定网络标识的设备来说非常重要。 使用 Netplan (Ubuntu 17.10 及更高版本的默认方式)使用 ifupdown (通过 /etc/…...
JavaScript ES6+ 最佳实践
1. 变量声明:从 var 到 let/const 问题代码:var 存在变量提升,只有函数作用域,没有块级作用域,容易导致变量污染。 // 变量提升导致意外行为 console.log(num); // undefined 而非报错 var num 10;// 没有块级作用域…...
华为昇腾在智慧矿山机器人的应用及其技术解决方案
一、智慧矿山机器人的核心应用场景 1. 井下智能巡检机器人 搭载昇腾AI芯片的巡检机器人可实现 全自主导航与多模态感知,通过激光雷达视觉SLAM技术实时构建井下三维地图,精准识别巷道变形、设备漏油等异常状态47。结合昇腾边缘计算能力…...
发那科机器人3(机器人编程基础)
发那科机器人(机器人编程基础) 一、机器人编程基础1、程序构成2、程序创建3、程序修改4、程序操作5、程序的停止与恢复6、执行程序7、测试运转8、自动运转一、机器人编程基础 1、程序构成 什么是程序? 程序指的是由用户编写的一系列机器人指令以及其他附带信息构成,使机器…...
2014年写的一个文档《基于大数据应用的综合健康服务平台研发及应用示范》
项目目标与任务 项目目标与任务需求分析 当今社会已经处于高度信息化的时代,作为关系民生的重要领域,医疗行业的信息化直接涉及临床服务、社会保障、医学研究和大众健康等环节,对提升医疗服务水平,强化管理职能,改善…...
Python初学者笔记第十一期 -- (字符串编程练习题)
第20节课 【字符串编程练习题】 练习01 回文字符串 输入一个字符串,判断其是否是回文字符串。 # 思路1 # s1 "黄山落叶松叶落山黄" # s2 s1[::-1] # 反转 # print(s2) # print(s1 s2)# 思路2 def is_palindrome(s):l 0r len(s) - 1while l < r…...
[量化交易Backtrader] - 如何规避过拟合
一、回测中的过拟合:隐藏在数据背后的陷阱 过拟合发生在模型过度适应历史数据,以至于在新数据上表现不佳。这就像是为历史数据量身定制了一件衣服,却在新的数据集上穿不进去。 (一)过拟合的常见表现 曲线过于完美 当在回测报告中看到策略的净值曲线如同一条完美的上升直…...
前端日常 · 移动端网页调试
前端日常 移动端网页调试技巧集锦:5个工具 实战思路 在移动端开发中,调试网页内容常常不是“写完就跑”的顺滑体验。尤其当页面跑在 App WebView 里时,不同系统版本、设备特性、浏览器行为都可能带来各种“只有你遇得到”的玄学 Bug。本篇…...
SQLite数据库加密(Java语言、python语言)
1. 背景与需求 SQLite 是一种轻量级的关系型数据库,广泛应用于嵌入式设备、移动应用、桌面应用等场景。为了保护数据的隐私与安全,SQLite 提供了加密功能(通过 SQLCipher 扩展)。在 Java 中,可以使用 sqlite-jdbc 驱动与 SQLCipher 集成来实现 SQLite 数据库的加密。 本…...
【前端基础】6、CSS的文本属性(text相关)
目录内容 text-decoration:设置文本装饰线text-transform:文本中文字的大小写转换text-indent:首行缩进text-align:设置文本对齐方式 一、text-decoration:设置文本装饰线 常见值: None:没有…...
Kafka生产者send方法详解
Kafka生产者send方法详解 1. send方法的工作原理 1.1 基本流程 #mermaid-svg-EXvKiyf8oSlenrxK {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-EXvKiyf8oSlenrxK .error-icon{fill:#552222;}#mermaid-svg-EXvKiyf…...
RPA与After Effects 2024深度融合:自动化影视特效全链路革命
文章目录 一、RPA在影视后期中的核心应用场景1. 跨平台数据自动化采集与预处理2. 动态数据驱动动画:从Excel到AE的无缝衔接 二、After Effects 2024自动化增强技术1. Python脚本深度集成:批量生成三维动画2. 实时渲染优化:智能调度与多分辨率…...
【Python 实战】---- 使用Python批量将 .ncm 格式的音频文件转换为 .mp3 格式
1. 前言 .ncm 格式是网易云音乐专属的加密音频格式,用于保护版权。这种格式无法直接播放,需要解密后才能转换为常见的音频格式。本文将介绍如何使用 Python 批量将 .ncm 格式的音频文件转换为 .mp3 格式。 2. 安装 ncmdump ncmdump 是一个专门用于解密 .ncm 文件的工具。它…...
【上位机——MFC】序列化机制
相关类 CFile-文件操作类,封装了关于文件读写等操作 CFile::Open CFile::Write/Read CFile::Close CFile::SeekToBegin / SeekToEnd / Seek 代码示例 #include <afxwin.h> #include <iostream>using namespace std;void File() {CFile file;file.Ope…...
同步 / 异步、阻塞 / 非阻塞
前言 同步异步,在计算机科学中是一个非常重要的概念。作为一位软件开发工程师,我们每天都在和同步和异步打交道。 同步 同步-阻塞,顾名思义,就是同步和阻塞。调用方法后,必须等到结果返回,才能继续执行别…...
Java学习手册:ORM 框架性能优化
一、优化实体类设计 减少实体类属性 :仅保留必要的字段,避免持久化过多数据。例如,对于一个用户实体类,如果某些信息(如详细地址)不是经常使用,可以将其拆分到单独的实体类中。使用合适的数据类…...
标量/向量/矩阵/张量/范数详解及其在机器学习中的应用
标量(Scalar)、向量(Vector)、矩阵(Matrix)、张量(Tensor)与范数(Norm)详解及其在机器学习中的应用 1. 标量(Scalar) 定义࿱…...
Android学习总结之网络篇补充
一、TCP/IP 五层模型(字节跳动 / 腾讯高频题) 面试真题 1:TCP/IP 五层模型与 OSI 七层模型的区别是什么?各层的核心协议有哪些? 常见错误:混淆五层模型与七层模型的层次对应,遗漏关键协议&…...
金融企业如何借力运维监控强化合规性建设?
日前,国家金融监督管理总局网站公布行政处罚信息,认定某银行存在多项违规并对其进行罚款。其中,国家金融监督管理总局认定该银行主要违规内容包括: 一、部分重要信息系统识别不全面,灾备建设和灾难恢复能力不符合监管要…...
食品行业EDI:General Mills EDI需求分析
General Mills 是全球知名的食品制造企业致力于生产和销售各类食品和消费品牌,涵盖早餐谷物、零食、乳制品、烘焙产品和宠物食品等多个领域。其旗下拥有众多家喻户晓的品牌,如 Cheerios、Nature Valley、Yoplait、Hagen-Dazs 和 Blue Buffalo。General M…...
C语言初阶--数组
1.一维数组的创建和初始化 1.1数组的创建 数组是一组相同类型元素的集合。 数组的创建方式: type_t arr_name [const_n]; //type_t 数组的元素类型 //const_n 常量表达式,指定数组的大小#include <stdio.h> int main() {int arr[10]; //数组…...
如何做界面自动化工具选择?
在2025年的技术环境中,UI自动化测试工具的选择需综合考虑工具的功能特性、适用场景、维护成本以及与团队技术栈的匹配度。以下从不同维度对当前主流的UI自动化工具进行分类推荐,并结合实际应用场景提供选型建议: 一、AI驱动的智能测试工具 …...
点云采集学习个人记录
Eagle LiDAR Scanner使用 3DMakerpro Eagle 发布:基于 LiDAR 的空间 3D 扫描仪 --- 3DMakerpro Eagle Launch: LiDAR-based Spatial 3D Scanner (3dwithus.com) RayStudio 工作流程教程 https://store.3dmakerpro.com/blogs/school/raystudio-workflow-tutorial…...
css识别\n换行
在CSS中,\n 通常不会被识别为换行符。如果你希望在CSS中实现换行效果,可以使用以下几种方法: 使用 white-space 属性: 设置 white-space: pre 或 white-space: pre-wrap,这样文本中的换行符 \n 会被保留并显示为换行。…...
《Python星球日记》 第45天:KNN 与 SVM 分类器
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏:《Python星球日记》,限时特价订阅中ing 目录 一、KNN 原理与距离计算1. KNN 的基本原理2. 距离计算方法3. K值的选择二、SVM 的支持向量与核技…...
STM32基础教程——硬件SPI
目录 前言 SPI硬件电路 SPI部分特征 SPI框图 SPI数据收发过程 W25Q64 技术实现 接线图 代码实现 技术要点 引脚操作 SPI初始化 SPI起始信号 SPI终止信号 SPI字节交换 宏替换W25Q64操作指令 W25Q64写使能 忙等待 读取设备ID号和制造商ID 页写入 数…...
系统架构-云原生架构设计
内涵 基于云原生技术,旨在将云应用中的非业务代码部分进行最大化的剥离,让云设施接管应用中原有的大量非功能特性。 云原生的代码包括三部分:业务代码、三方软件、处理非功能特性的代码 具备云原生架构的应用可以最大程度利用云服务和提升…...