如何学习Elasticsearch(ES):从入门到精通的完整指南
如何学习Elasticsearch(ES):从入门到精通的完整指南
嘿,小伙伴们!如果你对大数据搜索和分析感兴趣,并且想要掌握Elasticsearch这一强大的分布式搜索引擎,那么你来对地方了!本文将为你提供一个系统的学习路径,帮助你从零开始逐步深入理解Elasticsearch。
1. 基础知识准备
1.1 理解全文搜索
在开始学习Elasticsearch之前,建议先了解一下全文搜索的基本概念。全文搜索是指在一个文档集合中查找包含特定词汇的所有文档的技术。它与传统的数据库查询有很大不同,主要应用于文本数据的快速检索。
- • 倒排索引:Elasticsearch的核心技术之一,通过构建倒排索引来实现高效的全文搜索。
- • 分词器(Analyzer):用于将文本分解为更小的单元(如单词),并进行处理(如去除停用词、转换大小写等)。
1.2 RESTful API基础
Elasticsearch是一个基于RESTful API的系统,因此了解基本的HTTP请求方法(GET、POST、PUT、DELETE)和JSON格式是非常重要的。
- • GET:用于获取资源。
- • POST:用于创建或更新资源。
- • PUT:用于更新现有资源。
- • DELETE:用于删除资源。
1.3 Linux基础命令
由于Elasticsearch通常部署在Linux服务器上,掌握一些基本的Linux命令(如文件操作、进程管理等)有助于更好地管理和维护Elasticsearch集群。
2. 学习资源推荐
2.1 官方文档
官方文档是最权威的学习资源之一,虽然可能看起来有些枯燥,但内容非常全面。你可以从Elasticsearch官网获取最新的文档和教程。
2.2 在线课程
有许多在线平台提供了关于Elasticsearch的优质课程,以下是几个推荐的平台:
- • Coursera:提供由知名大学和公司开设的大数据相关课程,其中包含Elasticsearch的内容。
- • Udemy:有许多实战性强的Elasticsearch课程,适合有一定基础的学习者。
- • edX:提供由顶尖大学提供的免费大数据课程,部分课程涵盖Elasticsearch。
2.3 书籍
以下是一些经典的Elasticsearch学习书籍,适合不同层次的学习者:
- • 《Elasticsearch: The Definitive Guide》:这是一本非常全面的Elasticsearch参考书,适合初学者和中级学习者。
- • 《Mastering Elasticsearch》:这本书侧重于高级功能和技术细节,适合有一定经验的开发者。
- • 《Learning Elasticsearch》:一本入门级书籍,适合刚开始接触Elasticsearch的新手。
2.4 社区与论坛
加入相关的社区和论坛可以帮助你解决遇到的问题,并与其他学习者交流经验。以下是一些活跃的社区和论坛:
- • Stack Overflow:在这里你可以提问并找到许多关于Elasticsearch的实际问题解答。
- • Elastic Discuss Forum:Elastic官方讨论论坛,可以获取最新的技术讨论和支持。
- • Reddit:r/elasticsearch 是一个活跃的子版块,经常有关于Elasticsearch的讨论。
3. 实践操作
3.1 搭建开发环境
理论学习固然重要,但实践操作更能加深理解。首先,你需要搭建一个本地的Elasticsearch开发环境:
- 1. 下载并安装Elasticsearch:从Elastic官网下载最新版本的Elasticsearch,并按照官方文档进行安装。
- 2. 启动Elasticsearch:
bin/elasticsearch
- 3. 验证安装:
打开浏览器,访问http://localhost:9200/
,你应该能看到类似以下的响应:{"name" : "your-node-name","cluster_name" : "elasticsearch","cluster_uuid" : "your-cluster-uuid","version" : {"number" : "7.x.x","build_flavor" : "default","build_type" : "tar","build_hash" : "your-build-hash","build_date" : "your-build-date","build_snapshot" : false,"lucene_version" : "8.x.x","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search" }
3.2 使用Kibana
Kibana是Elastic Stack中的可视化工具,可以帮助你更方便地管理和监控Elasticsearch集群。你可以从Kibana官网下载并安装Kibana。
- 1. 启动Kibana:
bin/kibana
- 2. 访问Kibana界面:
打开浏览器,访问http://localhost:5601/
,进入Kibana的用户界面。
3.3 使用Curl命令
Elasticsearch提供了丰富的RESTful API接口,可以通过curl
命令来进行基本的操作,如创建索引、插入数据、查询数据等。
# 创建一个名为"users"的索引
curl -X PUT "localhost:9200/users"# 插入一条数据
curl -X POST "localhost:9200/users/_doc/1" -H 'Content-Type: application/json' -d'
{"name": "John Doe","age": 25,"email": "john.doe@example.com"
}
'# 查询数据
curl -X GET "localhost:9200/users/_search?q=name:John"
3.4 编写Python程序
Elasticsearch提供了多种编程语言的客户端库,你可以使用这些库编写脚本来进行更复杂的数据操作。以下是一个简单的Python示例:
from elasticsearch import Elasticsearch# 连接Elasticsearch
es = Elasticsearch("http://localhost:9200")# 插入数据
doc = {"name": "Jane Doe","age": 30,"email": "jane.doe@example.com"
}
res = es.index(index="users", id=2, document=doc)
print(res['result'])# 查询数据
res = es.search(index="users", body={"query": {"match": {"name": "Jane"}}})
print(res['hits']['hits'])
3.5 实战项目
参与实际项目是提升技能的最佳方式。你可以尝试以下几个实战项目:
- • 日志分析系统:构建一个基于Elasticsearch的日志分析系统,收集和分析应用日志。
- • 电子商务搜索:设计一个电商网站的搜索功能,支持商品名称、描述、价格等多种条件的搜索。
- • 实时推荐系统:利用Elasticsearch存储用户行为数据,并结合其他技术实现个性化推荐。
4. 深入学习与进阶技巧
4.1 索引与映射
深入研究索引(Index)和映射(Mapping)的概念,理解如何定义字段类型、设置分词器等。
PUT /my_index
{"mappings": {"properties": {"title": {"type": "text","analyzer": "standard"},"price": {"type": "float"}}}
}
4.2 查询DSL
学习Elasticsearch的查询DSL(Domain Specific Language),掌握各种查询类型的使用方法,如匹配查询(Match Query)、布尔查询(Bool Query)等。
GET /my_index/_search
{"query": {"bool": {"must": [{ "match": { "title": "Elasticsearch" }},{ "range": { "price": { "gte": 10, "lte": 100 }}}]}}
}
4.3 聚合分析
聚合分析是Elasticsearch的一个强大功能,可用于统计分析和数据挖掘。学习如何使用聚合(Aggregation)进行分组、计数、求和等操作。
GET /my_index/_search
{"size": 0,"aggs": {"price_stats": {"stats": {"field": "price"}}}
}
4.4 性能调优
学习如何调整Elasticsearch的配置参数,以优化系统的性能。例如,调整索引刷新间隔、分片数量、副本数量等。
# elasticsearch.yml
index.refresh_interval: "30s"
index.number_of_shards: 5
index.number_of_replicas: 1
4.5 高可用性和容错性
了解如何配置Elasticsearch集群,确保其高可用性和容错性。例如,使用多个节点组成集群,配置发现机制等。
# elasticsearch.yml
discovery.seed_hosts: ["host1", "host2"]
cluster.initial_master_nodes: ["node1", "node2"]
5. 持续学习与跟进
5.1 关注最新动态
Elasticsearch是一个不断发展和演进的技术,定期关注官方博客、GitHub仓库以及相关会议(如Elastic{ON}),可以让你及时了解最新的功能和最佳实践。
5.2 参加开源贡献
如果你对某个特定领域特别感兴趣,可以考虑参与Elasticsearch的开源贡献。不仅可以提升自己的技术水平,还能为社区做出贡献。
5.3 保持好奇心
大数据领域变化迅速,保持好奇心和持续学习的心态非常重要。不断探索新的技术和应用场景,才能在这个快速发展的领域中立于不败之地。
总结
通过本文,我们提供了一个系统的学习路径,帮助你从零开始掌握Elasticsearch。无论你是新手还是有一定经验的开发者,都可以根据自己的情况选择合适的学习资源和实践项目,逐步深入理解Elasticsearch的强大功能。
关键点回顾
- • 基础知识准备:了解全文搜索、RESTful API基础和Linux命令。
- • 学习资源推荐:利用官方文档、在线课程、书籍、社区和论坛等多种资源进行学习。
- • 实践操作:搭建开发环境,使用Kibana、Curl命令和编程语言客户端进行实际操作。
- • 深入学习与进阶技巧:研究索引与映射、查询DSL、聚合分析、性能调优等高级技巧。
- • 持续学习与跟进:关注最新动态,参加开源贡献,保持好奇心和持续学习的心态。
互动环节
看完这篇文章后,你是否对学习Elasticsearch有了清晰的方向?你觉得在学习过程中,哪些方面对你来说最具挑战性呢?欢迎在评论区分享你的见解,大家一起交流学习吧!
记住,技术的学习永无止境,让我们一起在这条路上不断探索前进吧!🚀
注:本文旨在通过通俗易懂的方式解释复杂的概念,希望能为读者带来启发和思考。
相关文章:
如何学习Elasticsearch(ES):从入门到精通的完整指南
如何学习Elasticsearch(ES):从入门到精通的完整指南 嘿,小伙伴们!如果你对大数据搜索和分析感兴趣,并且想要掌握Elasticsearch这一强大的分布式搜索引擎,那么你来对地方了!本文将为…...
GDB QUICK REFERENCE (GDB 快速参考手册)
GDB QUICK REFERENCE {GDB 快速参考手册} References GDB QUICK REFERENCE GDB Version 4 https://users.ece.utexas.edu/~adnan/gdb-refcard.pdf 查看方式:在新标签页中打开图片 References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/ [2] gdb-refc…...
Flutter_学习记录_动画的简单了解
用AnimationController简单实现如下的效果图: 1. 只用AnimationController实现简单动画 1.1 完整代码案例 import package:flutter/material.dart;class AnimationDemo extends StatefulWidget {const AnimationDemo({super.key});overrideState<AnimationDe…...
【JavaEE进阶】验证码案例
目 🌲实现说明 🎄Hutool介绍 🌳准备工作 🌴约定前后端交互接口 🚩接口定义 🚩实现服务器后端代码 🚩前端代码 🚩整体测试 🌲实现说明 随着安全性的要求越来越⾼…...
SQL复习
SQL复习 MySQL MySQL MySQL有什么特点? MySQL 不支持全外连接。 安装 数据类型 MySQL中的数据类型分为哪些? MySQL中的数据类型主要分为三大类:数值类型、字符串类型、日期时间类型。 其中, 数值类型又分为七种:T…...
景联文科技:以精准标注赋能AI未来,打造高质量数据基石
在人工智能蓬勃发展的时代,数据已成为驱动技术革新的核心燃料,而高质量的数据标注则是让AI模型从“感知”走向“认知”的关键桥梁。作为深耕数据服务领域的创新者,景联文科技始终以“精准、高效、安全”为核心理念,为全球AI企业提…...
蓝桥杯(B组)-每日一题(阶乘求和)
题目 代码解析: #include<iostream> using namespace std;long long multiply(int x) {long long sum1;//定义longlong类型初始为1 for(int i1;i<x;i)sumsum*i;//每一项的阶乘 return sum;//将阶乘结果返回 }int main() {int n;cin>>n;long long r…...
大模型应用开发时如何调试提示词?
在编程领域,调试通常依赖于断点、堆栈跟踪和详细的错误信息。然而,在提示调试的上下文中,这些传统工具变得不再适用。提示调试更多地依赖于对任务的理解、对提示的精细调整,以及对结果的迭代优化。在本文,我们将深入探…...
国产编辑器EverEdit - 二进制模式下观察Window/Linux/MacOs换行符差异
1 换行符格式 1.1 应用场景 稍微了解计算机历史的人都知道, 计算机3大操作系统: Windows、Linux/Unix、MacOS,这3大系统对文本换行的定义各不相同,且互不相让,导致在文件的兼容性方面存在一些问题,比如它们…...
LockSupport
文章目录 SynchronizedJUCLockSupport详解 Synchronized package com.xd;public class SynchronizedDemo {//等待线程public void waitThread() { // 1.如果将synchronized (this){}注释,会抛出异常,因为wait和notify⼀定要在同步块或同步⽅法中synchronized (this) {try {Sys…...
Spark 和 Flink
Spark 和 Flink 都是目前流行的大数据处理引擎,但它们在架构设计、应用场景、性能和生态方面有较大区别。以下是详细对比: 1. 架构与核心概念 方面Apache SparkApache Flink计算模型微批(Micro-Batch)为主,但支持结构…...
maven——使用idea创建maven项目(文件夹上颜色)
把一开始灰色和相对于maven标准目录缺少的文件夹上色和新建: 在右边给叉掉文件夹就又全都变成灰色的了: 在这个地方也可以改: 使用骨架创建 不使用骨架创建...
DeepSeek教unity------UI框架
/****************************************************文件:BasePanel.cs作者:Edision日期:#CreateTime#功能:面板基类 *****************************************************/using UnityEngine;public class BasePanel : Mo…...
2025年2月16日笔记
问题:用普通二维数组输出1到12,每行输出一个数 解题思路: 1.因为要用到普通二维数组,所以要先想到如何写普通二维数组 普通二维数组的写法: int [行数][列数]{ {数字}, (大括号数字个数…...
[操作系统] 基础IO:系统文件I/O
在 Linux 操作系统中,文件 I/O(输入/输出)是程序与文件系统交互的基础。理解文件 I/O 的工作原理对于编写高效、可靠的程序至关重要。本文将深入探讨系统文件 I/O 的机制。 一种传递标志位的方法 在 Linux 中,文件的打开操作通常…...
CNN手写数字识别1——模型搭建与数据准备
模型搭建 我们这次使用LeNet模型,LeNet是一个经典的卷积神经网络(Convolutional Neural Network, CNN)架构,最初由Yann LeCun等人在1998年提出,用于手写数字识别任务 创建一个文件model.py。实现以下代码。 源码 #…...
基于Istio Ambient Mesh的无边车架构:实现零侵入式服务网格的云原生革命
引言:轻量化时代的服务通信进化论 当传统Sidecar模式面临内存开销暴增的困境,Istio社区推出的Ambient Mesh架构给出终极解决方案。某证券交易系统实测显示,采用该架构后服务延迟降低至1.7ms(降幅达73%),同…...
数位dp入门详解
1. 介绍 数位 d p dp dp一般出现在来求一个范围 [ a , b ] [a, b] [a,b]内满足条件的数有多少。数位 d p dp dp的解决比较公式化,考虑每一位对最终答案的影响。 2. 案例 Luogu P2602: 求给定范围 [ a , b ] [a,b] [a,b]各个数位 k k k出现了多少次。 …...
【黑马点评优化】2-Canel实现多级缓存(Redis+Caffeine)同步
【黑马点评优化】2-Canel实现多级缓存(RedisCaffeine)同步 0 背景1 配置MySQL1.1 开启MySQL的binlog功能1.1.1 找到mysql配置文件my.ini的位置1.1.2 开启binlog 1.2 创建canal用户 2 下载配置canal2.1 canal 1.1.5下载2.2 配置canal2.3 启动canal2.4 测试…...
牛顿法:用泰勒级数求解平方根的秘籍
目录 一、引言二、牛顿法的理论基础——泰勒级数三、牛顿法的原理与推导3.1 原理概述3.2 推导过程3.3 几何解释 四、牛顿法的应用场景4.1 数值计算4.2 优化问题 五、牛顿法求平方根的具体案例5.1 原理推导5.2 具体步骤5.3 代码实现(Python)5.4 示例计算过…...
四、敏捷方法论:敏捷开发中的关键实践
敏捷开发中的关键实践 在敏捷开发中,许多关键实践帮助团队提升效率、增强协作和确保高质量交付。通过合理运用这些实践,团队能够灵活应对需求变化、缩短交付周期,并持续优化工作流程。本文将详细介绍敏捷开发中的一些核心实践,包括用户故事、需求优先级排序、持续交付、持…...
基于Qt 和微信小程序的用户管理系统:WebSocket + SQLite 实现注册与登录
目录 一. 概要 二. 技术栈 三. 系统功能设计 3.1 功能模块 3.2 数据表设计 四. 具体实现 4.1 Qt 服务端 4.1.1 初始化 WebSocket 服务器 4.1.2 用户管理界面 4.2 微信小程序端 4.2.1 注册功能 4.2.2 登录功能 五. 运行效果 六. 源码下载 一. 概要 在物联网和智能设备…...
DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决
我的个人主页 我的专栏:人工智能领域、java-数据结构、Javase、C语言,希望能帮助到大家!!!点赞👍收藏❤ 一、引言 在机器学习的广袤天地中,大型语言模型(LLM)无疑是最…...
【硬件设计细节】缓冲驱动器使用注意事项
一、缓冲驱动器核心功能与选型原则 信号增强与隔离 驱动能力匹配:根据负载电流需求选择缓冲器,例如CMOS缓冲器驱动能力通常为4-8mA,需搭配大电流负载时选用图腾柱输出或专用驱动芯片(如TI的SN74LVC系列)。电压域转换&…...
基于LVGL的简易聊天室
创建过程: 在GUI里配置好了一个大概的界面。聊天界面需要一个滑动页、一个输入框、一个文本框、一个发送按键。其中文本框属于滑动页,并且给发送按键添加上事件。 保存界面后,打开工程代码。 第一件事,是打开键盘使用的宏定义 随…...
DeepSeek 助力 Vue 开发:打造丝滑的开关切换(Switch)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
IDEA集成DeepSeek
引言 随着数据量的爆炸式增长,传统搜索技术已无法满足用户对精准、高效搜索的需求。 DeepSeek作为新一代智能搜索技术,凭借其强大的语义理解与深度学习能力,正在改变搜索领域的游戏规则。 对于 Java 开发者而言,将 DeepSeek 集成…...
pycharm社区版有个window和arm64版本,到底下载哪一个?还有pycharm官网
首先pycharm官网是这一个。我是在2025年2月16日9:57进入的网站。如果网站还没有更新的话,那么就往下滑一下找到 community Edition,这个就是社区版了免费的。PyCharm:适用于数据科学和 Web 开发的 Python IDE 适用于数据科学和 Web 开发的 Python IDE&am…...
LeetCode热题100- 缺失的第一个正数【JavaScript讲解】
题目: 解题一: 如果不考虑时间复杂度和空间复杂度的话,我们最先想到的办法是先将该数组进行排序和去重,将最初的res结果值设置为1;将然后进行遍历,如果第一项不为1,则返回1,否则根…...
基于矢量轨道角动量波的透射超表面设计
摘 要:针对轨道角动量(Orbital Angular Momentum,OAM)在无线通信系统中相位奇点的问题,提出了一种产生矢量OAM波的透射超表面。设计了一种超表面透射单元实现透射极化和相位的调控,并由此单元排布组成透射超表面。采用透射超表面调控透射电磁波…...
全方位探索DeepSeek
目录 前言1. DeepSeek的基础功能与应用场景2. 使用DeepSeek的多种方式2.1 通过Web界面快速体验2.2 调用API实现自动化处理2.3 集成到本地开发环境2.4 结合第三方工具扩展功能 3. 高效使用DeepSeek的进阶技巧3.1 参数调优与性能优化3.2 数据处理与结果分析 4. 实际案例分析与应用…...
详解Redis数据结构(附源码)
引言 只有弄明白Redis数据结构,才能理解它如此快速的原因,并不只是它存储于内存,本篇文章将拆开Redis数据结构分析它高效的原因 字符串(String) 基本概念:字符串是 Redis 中最基本的数据结构,…...
基于Flask的茶叶销售数据可视化分析系统设计与实现
【FLask】基于Flask的茶叶销售数据可视化分析系统设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统的创新之处在于系统不仅提供了基础的图表展示,如价格分布、付款分…...
基于推荐算法的在线课程推荐系统设计与实现
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
计时器任务实现(保存视频和图像)
下面是一个简单的计时器任务实现,可持续地每秒保存一幅图像,也可持续地每60秒保存一个视频,图像和视频均以当前时间命名: TimerTask类的实现如下: class TimerTask { public:TimerTask(const std::string& path):…...
FreeRTOS第3篇:链表的“精密齿轮”——列表与列表项
文章目录 1 列表与列表项:FreeRTOS的“排队系统”2 列表操作:FreeRTOS的“排队算法”3 列表的应用场景:FreeRTOS的“任务调度枢纽”4 源码级洞察:列表的“灵魂代码”5 实战:列表操作实验6 总结与思考引言:嵌入式系统的“任务候车厅” 想象你正在管理一座繁忙的火车站:乘…...
Linux(ubuntu)下载ollama速度慢解决办法
国内安装Ollama都很慢,因为一直卡在下载中,直接通过官网的链接地址下载方法: curl -fsSL https://ollama.com/install.sh | sh速度大概是10min下载1%,完全不能接受啊! 其中很好的一个加速方式是通过使用github文件加速…...
【Java】分布式锁Redis和Redisson
https://blog.csdn.net/weixin_44606481/article/details/134373900 https://www.bilibili.com/video/BV1nW421R7qJ Redis锁机制一般是由 setnx 命令实现,set if not exists,语法setnx key value,将key设置值为value,如果key不存在…...
网络编程-
文章目录 网络编程套接字UDP/TCP的api使用 网络编程套接字 socket,是操作系统给应用程序(传输层给应用层)提供的api,Java也对这个api进行了封装。 socket提供了两组不同的api,UDP有一套,TCP有一套&#x…...
DeepSeek助力学术论文写作[特殊字符]
宝子们,还在为学术论文写作发愁吗?DeepSeek来帮你!只要用对提示词,它就能变成你写作路上的超级助手。今天就来给大家分享一些超好用的提示词,助力学术论文写作,让你的论文在ChatGPT的辅助下闪闪发光✨。 一…...
从零创建DeepSeek:技术路径与实践探索
import tensorflow as tf摘要:本文详细阐述了从零开始创建DeepSeek的全过程,涵盖从项目启动的构思,到技术选型的考量,再到模型训练的精细操作,以及系统集成、测试优化和部署上线的各个环节。通过对这些步骤的深入解析&…...
MySQL技术公开课:Mysql-Server-8.4.4 Innodb 集群搭建与维护
MySQL技术公开课 - Mysql-Server-8.4.4 Innodb 集群搭建与维护 讲课内容: 1、Innodb集群框架介绍 2、Innodb集群部署(mysql-Server、mysql-shell、mysql-router安装配置) 3、Innodb集群维护(主备切换、启动与关闭、故障排除) Mysql-server商业版目前最新的是8.…...
VS Code User和System版区别【推荐使用System版本】and VSCode+Keil协同开发之Keil Assistant
VS Code User和System版区别 Chapter1 VS Code User和System版区别1. 对于安装而言2. 结束语 Chapter2 VS Code 安装、配置教程及插件推荐插件: Chapter3 VSCodeKeil协同开发之Keil Assistant1. 效果展示2. Keil Assistant简介3. Keil Assistant功能特性4. 部署步骤…...
动态规划两个数组dp问题系列一>最长重复子数组
目录 状态表示:状态转移方程:初始化:填表顺序:返回值:代码呈现: 状态表示: 状态转移方程: 初始化: 填表顺序: 返回值: 这里是以某一个位置为结尾定…...
在SpringBoot中使用UniHttp简化天地图路径规划调用实践
目录 写在最前面 前言 一、天地图路径规划简介 1、天地图相关服务 2、天地图路径规划接口 二、UniHttp简介 1、UniHttp是什么? 2、UniHttp能做什么? 三、UniHttp调用天地图接口 1、请求接口的定义 2、实际调用 3、相应结果展示 四、总结 写在…...
springboot与Freemarker
1 基本使用 1.1 介绍 FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。 是一个Java类库。 FreeMarker 被设计用来生成 HTML Web 页面…...
CMake无法生成可执行文件,一直生成库文件
CMakeLists的内容如下,一直生成的main是库文件,而不是可执行文件。本人是在进行鸿蒙的交叉编译的时候遇到,归结为cmake属性的差异。原内容如下: # 设置最低CMake版本要求 cmake_minimum_required (VERSION 2.8.0)# 设置项目名称 …...
PrimeFaces实战:IdleMonitor与Ajax的完美结合
在现代的Web开发中,用户交互的实时反馈是一个重要的用户体验环节。PrimeFaces作为一个强大的Java EE UI库,提供了许多便捷的功能组件,其中之一就是IdleMonitor。通过IdleMonitor,我们可以轻松地检测用户何时处于空闲状态以及何时从…...
搭建一个经典的LeNet5神经网络
第一章:计算机视觉中图像的基础认知 第二章:计算机视觉:卷积神经网络(CNN)基本概念(一) 第三章:计算机视觉:卷积神经网络(CNN)基本概念(二) 第四章:搭建一个经典的LeNet5神经网络 一、LeNet-5背景 LeNet-…...
Transformer多头注意力并行计算原理与工业级实现:从数学推导到PyTorch工程优化
一、核心数学原理剖析 1.1 多头注意力矩阵分解 Q XW^Q ∈ R^{nd_k} K XW^K ∈ R^{nd_k} V XW^V ∈ R^{nd_v} 多头分解公式: head_i Attention(QW_i^Q, KW_i^K, VW_i^V) 其中 W_i^Q ∈ R^{d_kd_k/h}, W_i^K ∈ R^{d_kd_k/h}, W_i^V ∈ R^{d_vd_v/h} (h为头数…...