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

ElasticSearch入门详解

1.ElasticSearch

1.1 ElasticSearch(简称es)

Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。
能够达到实时搜索,稳定,可靠,快速,安装使用方便。
客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。
官方网站: https://www.elastic.co/
下载地址:https://www.elastic.co/cn/start

1.2 ElasticSearch与Lucene的关系

Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库(框
架)
但是想要使用Lucene,必须使用Java来作为开发语言并将其直接集成到你的应用
中,并且Lucene的配置及使用非常复杂,你需要深入了解检索的相关知识来理解它
是如何工作的。
Lucene缺点:
1)只能在Java项目中使用,并且要以jar包的方式直接集成项目中.
2)使用非常复杂-创建索引和搜索索引代码繁杂
3)不支持集群环境-索引数据不同步(不支持大型项目)
4)索引数据如果太多就不行,索引库和应用所在同一个服务器,共同占用硬
盘.共用空间少.
上述Lucene框架中的缺点,ES全部都能解决

1.3 哪些公司在使用Elasticsearch

  1. 京东

  2. 携程

  3. 去哪儿

  4. 58同城

  5. 滴滴

  6. 今日头条

  7. 小米

  8. 哔哩哔哩

  9. 等等

1.4 ES vs 关系型数据库

2.Lucene全文检索框架

2.1 什么是全文检索

全文检索是指:

- 通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单

  词在文本中的位置、以及出现的次数

- 用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位

  置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内

  容读取出来了

3.Elasticsearch中的核心概念

3.1 索引 index

一个索引就是一个拥有几分相似特征的文档的集合。比如说,可以有一个客户数据 的索引,另一个产品目录的索引,还有一个订单数据的索引 一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这 个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字

3.2 映射 mapping

ElasticSearch中的映射(Mapping)用来定义一个文档 mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认 值、分词器、是否被索引等等,这些都是映射里面可以设置的

3.3 字段Field

相当于是数据表的字段|列

3.4 字段类型 Type

每一个字段都应该有一个对应的类型,例如:Text、Keyword、Byte等

3.5 文档 document

一个文档是一个可被索引的基础信息单元,类似一条记录。文档以JSON(Javascript Object Notation)格式来表示;

3.6 集群 cluster

一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提 供索引和搜索功能

3.7 节点 node

一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索 引和搜索功能 一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每 个节点都会被安排加入到一个叫做“elasticsearch”的集群中 这意味着,如果在网络中启动了若干个节点,并假定它们能够相互发现彼此,它们 将会自动地形成并加入到一个叫做“elasticsearch”的集群中 在一个集群里,可以拥有任意多个节点。而且,如果当前网络中没有运行任何 Elasticsearch节点,这时启动一个节点,会默认创建并加入一个叫 做“elasticsearch”的集群。

3.8 分片和副本 shards&replicas

3.8.1 分片
  • 一个索引可以存储超出单个结点硬件限制的大量数据。比如,一个具有10

    亿文档的索引占据1TB的磁盘空间,而任一节点都没有这样大的磁盘空间;或

    者单个节点处理搜索请求,响应太慢

  • 为了解决这个问题,Elasticsearch提供了将索引划分成多份的能力,这些

    份就叫做分片

  • 当创建一个索引的时候,可以指定你想要的分片的数量

  • 每个分片本身也是一个功能完善并且独立的“索引”,这个“索引”可以

    被放置到集群中的任何节点上

  • 分片很重要,主要有两方面的原因

    允许水平分割/扩展你的内容容量

    允许在分片之上进行分布式的、并行的操作,进而提高性能/吞吐量

  • 至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是完全由

    Elasticsearch管理的,对于作为用户来说,这些都是透明的

3.8.2 副本
  • 在一个网络/云的环境里,失败随时都可能发生,在某个分片/节点不知怎

    么的就处于离线状态,或者由于任何原因消失了,这种情况下,有一个故障转

    移机制是非常有用并且是强烈推荐的。为此目的,Elasticsearch允许你创建分

    片的一份或多份拷贝,这些拷贝叫做副本分片,或者直接叫副本

  • 副本之所以重要,有两个主要原因

  1. 在分片/节点失败的情况下,提供了高可用性。注意到复制分片从不与原/主要(original/primary)分片置于同一节点上是非常重要的

  2. 扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行运行每个索引可以被分成多个分片。一个索引有0个或多个副本一旦设置了副本,每个索引就有了主分片和副本分片,分片和副本的数量可以在索引创建的时候指定,索引创建之后,可以在任何时候动态地改变副本的数量,但是不能改变分片的数量

4.安装Elasticsearch

4.1 安装Elasticsearch

4.1.1 创建普通用户

**ES不能使用root用户来启动,必须使用普通用户来安装启动。**这里我们创建一个普通用户以及定义一些常规目录用于存放我们的数据文件以及安装包等。创建一个es专门的用户(必须)

使用root用户在服务器执行以下命令

先创建组, 再创建用户:
1)创建 elasticsearch 用户组
[root@localhost ~]# groupadd elasticsearch2)创建用户 tlbaiqi 并设置密码
[root@localhost ~]# useradd aaa
[root@localhost ~]# passwd aaa3)# 创建es文件夹,
并修改owner为aaa用户
mkdir -p /usr/local/es4)用户es 添加到 elasticsearch 用户组
[root@localhost ~]# usermod -G elasticsearch tlbaiqi
[root@localhost ~]# chown -R aaa /usr/local/es/elasticsearch-7.6.15)设置sudo权限
#为了让普通用户有更大的操作权限,我们一般都会给普通用户设置sudo权限,方便普通用户的操作
#三台机器使用root用户执行visudo命令然后为es用户添加权限
[root@localhost ~]# visudo#在root ALL=(ALL) ALL 一行下面
#添加tlbaiqi用户 如下:
aaa ALL=(ALL) ALL#添加成功保存后切换到aaa用户操作[root@localhost ~]# su aaa
[aaa@localhost root]$# 解压Elasticsearch
su tlbaiqi
cd /user/local/
tar -zvxf elasticsearch-7.6.1-linux-x86_64.tar.gz -C /usr/local/es/
#进入服务器使用baiqi用户来修改配置文件cd /usr/local/es/elasticsearch-7.6.1/config
mkdir -p /usr/local/es/elasticsearch-7.6.1/log
mkdir -p /usr/local/es/elasticsearch-7.6.1/data
rm -rf elasticsearch.ymlvim elasticsearch.yml
cluster.name: aaa-es
node.name: node1
path.data: /usr/local/es/elasticsearch-7.6.1/data
path.logs: /usr/local/es/elasticsearch-7.6.1/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["服务器IP"]
cluster.initial_master_nodes: ["节点名"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
#修改jvm.option
cd /usr/local/es/elasticsearch-7.6.1/config
vim jvm.options
-Xms2g
-Xmx2g#4.2  修改系统配置,解决启动时候的问题
#由于现在使用普通用户来安装es服务,且es服务对服务器的资源要求比较多,包括内存大小,线程数等。所以我们需要给普#通用户解开资源的束缚
#4.2.1  普通用户打开文件的最大数限制
#问题错误信息描述:
#max file descriptors [4096] for elasticsearch process likely too low, increase to at least #[65536]
#ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限##  #制,不然ES启动就会抛错
sudo vi /etc/security/limits.conf
#添加如下内容: 注意*不要去掉了
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096#普通用户启动线程数限制
#问题错误信息描述
#max number of threads [1024] for user [es] likely too low, increase to at least [4096]
#修改普通用户可以创建的最大线程数
#max number of threads [1024] for user [es] likely too low, increase to at least [4096]原因:#无法创建本地线程问题,用户最大可创建线程数太小解决方案:修改90-nproc.conf 配置文件。
Centos6
sudo vi /etc/security/limits.d/90-nproc.conf
Centos7
sudo vi /etc/security/limits.d/20-nproc.conf* soft nproc 1024#修改为
* soft nproc 4096#4.2.3 普通用户调大虚拟内存
#错误信息描述:
#max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least #[262144]
#调大系统的虚拟内存
#原因:最大虚拟内存太小
#每次启动机器都手动执行下。
#三台机器执行以下命令   
sudo vim /etc/sysctl.conf
#追加以下内容:
vm.max_map_count=262144
sysctl -p#4.3  启动ES服务
#三台机器使用aaa用户执行以下命令启动es服务
nohup /usr/local/es/elasticsearch-7.6.1/bin/elasticsearch 2>&1 &#后台启动ES 进入bin目录  ./elasticsearch  -d
#启动成功之后jsp即可看到es的服务进程,并且访问页面 http://192.168.21.130:9200/?pretty#这个路径下面去查看错误日志
#关闭Linux防火墙
#永久性生效,重启后不会复原
#开启: chkconfig iptables on
#关闭: chkconfig iptables off
#即时生效,重启后复原
#开启: service iptables start
#关闭: service iptables stop

5.ES数据管理

8.1 ES数据管理概述

ES是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。

然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。

在ES中,你可以对文档(而非成行成列的数据)进行索引、搜索、排序、过滤。

ES使用JSON作为文档序列化格式。

JSON现在已经被大多语言所支持,而且已经成为NoSQL领域的标准格式。

ES存储的一个员工文档的格式示例:

  { "email": "584614151@qq.com", "name": "张三", "age": 30, "interests": [ "篮球", "健身" ] }  
 

8.2 基本操作

  1. 创建索引

格式: PUT /索引名称

举例: PUT /es_db

  1. 查询索引

格式: GET /索引名称

举例: GET /es_db

  1. 删除索引

格式: DELETE /索引名称

举例: DELETE /es_db

  1. 添加文档

格式: PUT /索引名称/类型/id

举例: PUT /es_db/doc/1 { "name": "张三", "sex": 1, "age": 25, "address": "广州天河公园", "remark": "java developer" } PUT /es_db/doc/2 { "name": "李四", "sex": 1, "age": 28, "address": "广州荔湾大厦", "remark": "java assistant" } PUT /es_db/doc/3 { "name": "rod", "sex": 0, "age": 26, "address": "广州白云山公园", "remark": "php developer" } PUT /es_db/doc/4 { "name": "admin", "sex": 0, "age": 22, "address": "长沙橘子洲头", "remark": "python assistant" } PUT /es_db/_doc/5 { "name": "小明", "sex": 0, "age": 19, "address": "长沙岳麓山", "remark": "java architect assistant" }

  1. 修改文档

格式: PUT /索引名称/类型/id 举例: PUT /es_db/_doc/1 { "name": "白起老师", "sex": 1, "age": 25, "address": "张家界 森林公园", "remark": "php developer assistant" }

注意:POST和PUT都能起到创建/更新的作用

1、需要注意的是==PUT==需要对一个具体的资源进行操作也就是要确定id才能进行==更新/创建,而==POST==是可以针对整个资源集合进行操作的,如果不写id就由ES生成一个唯一id进行==创建==新文档,如果填了id那就针对这个id的文档进行创建/更新

2、PUT只会将json数据都进行替换, POST只会更新相同字段的值

3、PUT与DELETE都是幂等性操作, 即不论操作多少次, 结果都一样

  1. 查询文档

格式: GET /索引名称/类型/id

举例: GET /es_db/_doc/1

  1. 删除文档

格式: DELETE /索引名称/类型/id

举例: DELETE /es_db/_doc/1

相关文章:

ElasticSearch入门详解

1.ElasticSearch 1.1 ElasticSearch(简称es) Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。 能够达到实时搜索,稳定,可靠,快速,安装使用方便。 客户端支持Java、.NET(C#)、PHP、Py…...

【计算机网络01】 网络组成与三种交换方式

【参考资料】 《自顶向下的计算机网络第八版》湖科大计算机网络(b站)王道考研(b站) 文章目录 一、网络基础概念解析1.1 网络、互联网与因特网 二、因特网发展三阶段(了解)三、ISP3.1 ISP基本概念3.2 基于I…...

计算机网络——以太网交换机

目录 交换机的作用 以太网交换机的自学习功能 因为以太网交换机有自学习功能,所以以太网交换机支持即插即用 交换机的作用 它工作在数据链路层,为结点转发帧,并且可以根据一个帧的目的MAC地址去进行相应的转发,以及交换机的每…...

机器视觉开发教程——C#如何封装海康工业相机SDK调用OpenCV/YOLO/VisionPro/Halcon算法

目录 引言前期准备Step1 创建工程Step2 创建接口2.1定义操作相机实例接口方法2.2定义设置相机参数接口方法(部分) Step3 创建基类3.1定义操作相机实例&&设置相机参数的抽象层3.2定义操作相机实例&&设置相机参数的公用方法1.获取当前帧图…...

c++STL-string的模拟实现

cSTL-string的模拟实现 string的模拟实现string的模拟线性表的实现构造函数析构函数获取长度(size)和获取容量(capacity)访问 [] 和c_str迭代器(iterator)交换swap拷贝构造函数赋值重载(&#x…...

HTTP 和 WebSocket 的区别

✅ 一、定义对比 协议简要定义HTTP一种基于请求-响应模式的、无状态的应用层协议,通常用于客户端与服务器之间的数据通信。WebSocket一种全双工通信协议,可以在客户端和服务器之间建立持久连接,实现实时、低延迟的数据传输。 ✅ 二、通信方式…...

【Tools】Visual Studio使用经验介绍(包括基本功能、远程调试、引入第三方库等等)

这里写目录标题 1. VS基本使用1.1. 快捷键1.2. 查看变量地址1.3. 查看代码汇编1.4. visual studio 热重载功能的使用1.5. vs远程服务器调试1.6. 引入第三方库VLD1.7. release debug模式 1. VS基本使用 1.1. 快捷键 ctrl c :复制光标所在行 注意:只需要光标在这…...

一周内学完计算机网络课程之二:计算机网络物理层的理解

消失人口回归,重新开始学习新知识。再次伟大。 物理层详解 需要理解的几个概念: 曼彻斯特编码、差分曼彻斯特编码 码元:构成信号的基本单元 调制: 通信中的调制是一种将原始信号(如音频、视频、数据等)转…...

Python OpenCV性能优化与部署实战指南

在计算机视觉领域,OpenCV作为开源视觉库的标杆,其性能表现直接影响着从工业检测到AI模型推理的各类应用场景。本文结合最新技术趋势与生产实践,系统性梳理Python环境下OpenCV的性能优化策略与部署方案。 一、性能优化核心技术矩阵 1.1 内存…...

深度解析:可视化如何重塑销售策略制定与执行

为什么你的销售策略总是“听起来挺对,做起来却没用”? 你有没有遇到过这样的情况: 销售团队天天跑客户,但业绩还是上不去;市场部说数据在增长,销售部却觉得“根本没转化”;高层开会时信心满满…...

opencv关键点检测

python 使用opencv进行图片关键点检测 功能: 在一张图片中裁剪出一块小图 使用cv2中 cv2.SIFT_create() SIFT检测器检测关键点 匹配原图和小图的关键点 import cv2 import numpy as np # 读取图像 img1 cv2.imread(rE:\234947.jpg, cv2.IMREAD_GRAYSCALE) img…...

C#游戏开发中的注意事项

目录 一、性能优化:提升游戏运行效率 1. 避免不必要的循环和迭代 2. 减少字符串拼接 3. 利用Unity的生命周期函数 4. 使用对象池(Object Pooling) 二、内存管理:避免内存泄漏和资源浪费 1. 及时释放非托管资源 2. 避免空引用异常 3. 合理使用引用类型和值类型 4. …...

MySQL的锁

锁 概述:锁是计算机协调多个线程或进程并发访问某一资源的机制。如何保证数据库中并发的一致性,有效性,这就是锁的作用。 分类: 全局锁 对数据库实例加锁,加锁之后,处于只读状态,后续的DML语句…...

学习黑客5 分钟小白弄懂Windows Desktop GUI

5 分钟小白弄懂Windows Desktop GUI 🖥️ 大家好!今天我们将深入浅出地探索Windows桌面图形用户界面(GUI)——这是我们每天与计算机交互的"门面"。无论你是刚开始接触计算机,还是想在TryHackMe等平台上提升安全技能,理…...

机器人运动控制原理浅析-UC Berkeley超视觉模态模型

加州伯克利发布的超视觉多感知模态融合(FuSe, Fuse Heterogeneous Sensory Data)模型,基于视觉、触觉、听觉、本体及语言等模态,利用自然语言跨模态对齐(Cross-Modal Grounding)优调视觉语言动作等通用模型,提高模型任务成功率。 总体框架 …...

【计算机网络】网络IP层

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 上篇文章:传输层协议TCP 下篇文章:数据链路层 文章摘要&#xff1…...

Nginx重写功能

目录 一 . 简介 二. if指令 2.1基本语法 2.2 举例说明 2.3 配置实例 三. return 3.1 基本语法 3.2 配置实例 四. set指令 4.1 基本语法 4.2 举例说明 4.3 配置实例 五.break指令 5.1 作用 5.2 举例说明 5.3 配置实例 六.rewrite指令 6.1 基本语法 6.2 配…...

2025-05-11 项目绩效域记忆逻辑管理

好的,我们可以用一个故事来帮助记忆这些规划绩效域的要素,同时通过逻辑关系来串联它们。以下是一个故事化的版本: 《项目管理的奇幻之旅》 在一个遥远的王国里,有一个勇敢的项目经理名叫小K。小K被国王赋予了一个艰巨的任务&…...

全模态具身智能:从 VLM 到 MLLM

写在前面 人工智能的感知边界正在以前所未有的速度扩展。最初,我们惊叹于大型语言模型(LLM)对文本的深刻理解和流畅生成。很快,视觉语言模型(Vision-Language Models, VLM) 登场,让 AI 第一次真正“看见”了世界,能够理解图像内容并将其与语言关联,实现了“看图说话”…...

C++入门小馆: 二叉搜索树

嘿,各位技术潮人!好久不见甚是想念。生活就像一场奇妙冒险,而编程就是那把超酷的万能钥匙。此刻,阳光洒在键盘上,灵感在指尖跳跃,让我们抛开一切束缚,给平淡日子加点料,注入满满的pa…...

C++.IP协议通信

C++IP协议通信 1. TCP协议通信1.1 服务端实现创建套接字绑定地址监听连接接受连接数据传输关闭连接1.2 客户端实现创建套接字连接服务器数据传输关闭连接1.3 示例代码服务端代码示例客户端代码示例绑定地址接收数据发送数据关闭套接字2.2 客户端实现创建套接字发送数据接收数据…...

虚幻引擎5-Unreal Engine笔记之UE编辑器退出时的保存弹框

虚幻引擎5-Unreal Engine笔记之UE编辑器退出时的保存弹框 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之UE编辑器退出时的保存弹框1. 退出编辑器时弹出的“Save Content”窗口2. File 菜单中的保存选项3. 区别总结 1. 退出编辑器时弹出的“Save Content”窗口 退出时…...

【KEIL】更新AC6编译器

看过部分的文章,Arm Compiler 6(AC6)编译器,相比AC5在编译速度和代码优化上提升了。因此,笔者决定升级到AC6的最新版本。可以更新keil5到最新版本,上面集成AC6编译器的版本,与最新版相差不远。假…...

Mosquitto MQTT库实战指南

目录 1. MQTT协议简介2. Mosquitto概述3. 开源MQTT实现对比4. 为什么选择Mosquitto5. Mosquitto的交叉编译6. MQTT发布订阅实战7. 进阶应用与最佳实践8. 总结 1. MQTT协议简介 MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的轻…...

C语音学习---函数指针

目录 1. 函数指针解析 2. 自定义实现(函数指针赋值) 利用下面一段例子来解析: int (*set_slave)(modbus_t *ctx, int slave); 1. 函数指针解析 set_slave 是一个 函数指针,指向一个函数。 该函数接受两个参数: mo…...

04.three官方示例+编辑器+AI快速学习webgl_animation_skinning_additive_blending

本实例主要讲解内容 这个示例展示了Three.js中**骨骼动画的叠加混合(Additive Animation Blending)**技术。通过加载一个机器人模型,演示了如何在基础动画(如站立、行走、跑步)之上叠加额外的动画效果(如潜行姿态、悲伤表情、点头同意等),实现更丰富的角…...

WSL配置docker启动nacos容器load derby-schema.sql error.问题解决方案

nacos配置问题 问题再现查看错误logsQWEN的解答不挂载/data结论 问题再现 本来想要本地跑一下nacos,之前都是直接在Linux环境下面,现在就使用windows的wsl跑一下nacos,之前是需要先配置/conf文件下面的porperties文件以及构建对应的nacos-config数据库。所以我使用…...

游戏引擎学习第272天:显式移动转换

回顾并为今天的内容铺垫背景 我们刚开始为游戏主角编写一些程序逻辑,因为我们之前已经完成了大部分引擎方面的开发,现在可以专注在角色身上。这个角色的移动方式会有些特别,与大多数游戏角色的运动机制不太一样。我们当前正在实现的控制方式…...

AVL树解析

插入操作 // 插入操作 bool insert(const pair<K, V>& kv) {// 若树为空&#xff0c;直接构造&#xff0c;new一个if (_root nullptr) {_root new Node(kv);return true;}// 用于遍历树的当前节点Node* cur _root;// 用于记录当前节点的父节点Node* parent n…...

vue 中的数据代理

在 Vue 中&#xff0c;数据代理&#xff08;Data Proxy&#xff09; 是 Vue 实现 MVVM 模式 的关键技术之一。Vue 使用数据代理让你可以通过 this.message 访问 data.message&#xff0c;而不需要写 this.data.message —— 这大大简化了模板和逻辑代码。 我们来深入理解它的本…...

Linux共享内存深度解析:从内核机制到云原生应用

引言&#xff1a;超越进程边界的内存魔术 在Linux系统的进程间通信&#xff08;IPC&#xff09;领域&#xff0c;共享内存&#xff08;Shared Memory&#xff09;如同魔法镜子般的存在——不同进程透过它看到相同的内存镜像。这种机制摒弃了数据拷贝&#xff0c;直击性能瓶颈&…...

Vue Router全局拦截

Vue Router全局拦截全攻略 一、为什么需要全局拦截&#xff1f; 最近在开发后台管理系统时&#xff0c;突然发现所有页面都需要登录才能访问。如果每个页面都手动检查登录状态&#xff0c;那代码简直要写成意大利面条了。这时候&#xff0c;Vue Router的全局拦截功能就像个贴…...

从0开始学linux韦东山教程第三章问题小结(3)

本人从0开始学习linux&#xff0c;使用的是韦东山的教程&#xff0c;在跟着课程学习的情况下的所遇到的问题的总结,理论虽枯燥但是是基础。说实在的越看视频越感觉他讲的有点乱后续将以他的新版PDF手册为中心&#xff0c;视频作为辅助理解的工具。参考手册为嵌入式Linux应用开发…...

【前端】【css】【总复习】三万字详解CSS 知识体系

🌈 CSS 知识体系目录大纲 一、基础知识入门 1. CSS 简介与作用 CSS(Cascading Style Sheets,层叠样式表)是一种用于给 HTML 页面添加样式的语言,作用是让网页更美观、结构更清晰、布局更灵活。 核心作用: 控制网页元素的 颜色、字体、间距、边框、背景布局网页元素位置…...

Linux 进程等待

1、进程等待 僵尸进程 是一个比较麻烦的问题&#xff0c;如果不对其做出处理&#xff0c;僵尸进程 就会越来越多&#xff0c;导致 内存泄漏 和 标识符 占用问题 进程一旦变成僵尸状态&#xff0c;那就刀枪不入&#xff0c;“杀人不眨眼”的kill -9 也无能为力&#xff0c;因为…...

轻量服务器与宝塔

因为访问宝塔面板是需要在安全组设置一下开放端口&#xff0c;比如这里是42450 但是我们用的轻量服务器是把安全组这种功能削减了的&#xff0c;所以我就去尝试修改了一下防火墙设置 然后就可以访问了...

深入理解AMBA总线(六)AHB-lite Slave响应和其它控制信号

上一篇文章给大家介绍了AHB-lite的一些控制信号&#xff0c;重点是通过这些控制信号去理解AHB-lite为什么这么设计&#xff0c;采用这些控制信号有什么好处。这节课给大家带来剩余的一些控制信号介绍。 ** 1、Slave Response Signaling ** 1.1、Slave Transfer Responses …...

app加固

1、什么是加固? 我们之前讲的逆向,大多数都是用加密算法去加密一些明文字符串,然后把得到的结果用 Base64、Hex等进行编码后提交。加固其实也一样&#xff0c;只不过他通常加密的是 dex文件而已。但是 dex 文件加密以后&#xff0c;安卓系统是没法直接运行的。所以加固的核心&…...

Linux架构篇、第三章_2_Linux服务器监控与NGINX优化

Linux_架构篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a; 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.11 适用环境: Centos7 文档说明 本文围绕 Linux 服务器监控与 NGINX 优化展开。介绍了 sysst…...

第26节:卷积神经网络(CNN)-数据增强技术(PyTorch)

1. 引言 在深度学习领域,数据增强(Data Augmentation)是提升卷积神经网络(CNN)性能的关键技术之一。通过人为地扩展训练数据集,数据增强能够有效提高模型的泛化能力,防止过拟合,特别是在训练数据有限的情况下。本文将全面介绍PyTorch框架下的数据增强技术,包括基本原理、…...

架构思维:通用架构模式_怀疑下游的设计思路与最佳实践

文章目录 1. 引言2. 为什么要“怀疑下游”3. 三大类下游依赖及应对方案3.1 对其他微服务的依赖3.1.1 分布式事务简易补偿方案3.2 对数据库的依赖3.3 对消息中间件的依赖 4. 分布式事务实战案例5. 小结 1. 引言 在 架构思维&#xff1a;通用架构模式_从设计到代码构建稳如磐石的…...

[Java实战]Spring Boot 中Starter机制与自定义Starter实战(九)

[Java实战]Spring Boot 中Starter机制与自定义Starter实战&#xff08;九&#xff09; 引言 Spring Boot 的 Starter 是其“约定优于配置”理念的核心体现&#xff0c;通过简化依赖管理和自动配置&#xff0c;极大提升了开发效率。本文将深入剖析 Starter 的设计思想、实现原…...

C++23 views::repeat (P2474R2) 深入解析

文章目录 引言C20 Ranges库回顾什么是Rangesstd::views的作用 views::repeat概述基本概念原型定义工作原理应用场景初始化容器模拟测试数据 总结 引言 在C的发展历程中&#xff0c;每一个新版本都会带来一系列令人期待的新特性&#xff0c;这些特性不仅提升了语言的性能和表达…...

【第三十五周】Janus-pro 技术报告阅读笔记

Janus-Pro 摘要Abstract文章信息引言方法Janus 架构Janus 训练Janus-Pro 的改进 实验结果总结 摘要 本篇博客介绍了Janus-Pro&#xff0c;这是一个突破性的多模态理解与生成统一模型&#xff0c;其核心思想是通过解耦双路径视觉编码架构解决传统方法中语义理解与像素生成的任务…...

基于Qt的app开发第七天

写在前面 笔者是大一下计科生&#xff0c;标题这个项目是笔者这个学期的课设&#xff0c;与学长共创&#xff0c;我负责客户端部分&#xff0c;现在已经实现了待办板块的新建、修改。 这个项目目前已经走上正轨了&#xff0c;博主也实现了主要功能的从无到有&#xff…...

第二十二节:图像金字塔-拉普拉斯金字塔

在数字图像处理的奇幻世界中,存在着一种能够连接不同视觉维度的神秘阶梯——图像金字塔。这种独特的结构让计算机视觉算法能够在不同尺度下观察和理解图像特征,而其中的拉普拉斯金字塔更是隐藏着图像细节重构的终极奥秘。 一、金字塔的数学基础:从高斯到拉普拉斯 1.1 高斯金…...

Flutter基础()

导航栏 appBar: AppBar() title: const Text(搜索) //标题 backgroundColor: Colors.blue //背景颜色 centerTitle: true //标题居中leading 属性 作用&#xff1a; 放置在应用栏左侧的控件&#xff0c;通常是一个图标按钮&#xff0c;用于导航或打开菜单。 AppBar(le…...

ES面试题系列「一」

1、Elasticsearch 是什么&#xff1f;它与传统数据库有什么区别&#xff1f; 答案&#xff1a;Elasticsearch 是一个基于 Lucene 的分布式、开源的搜索和分析引擎&#xff0c;主要用于处理大量的文本数据&#xff0c;提供快速的搜索和分析功能。与传统数据库相比&#xff0c;E…...

Oracle 通过 ROWID 批量更新表

Oracle 通过 ROWID 批量更新表 在 Oracle 数据库中&#xff0c;使用 ROWID 进行批量更新是一种高效的更新方法&#xff0c;因为它直接定位到物理行位置&#xff0c;避免了通过索引查找的开销。 ROWID 基本概念 ROWID 是 Oracle 数据库中每一行的唯一物理地址标识符&#xff…...

罗技无线鼠标的配对方法

罗技鼠标的配对方法&#xff1a; 重新连接鼠标 请按照以下步骤将鼠标与 USB 接收器重新配对。 1.将USB接收器插入计算机。 2.将鼠标关闭电源。 3.按住并持续按住向右按钮&#xff0c;直到操作结束。 4.切换鼠标电源。 5. 单击一次左侧按钮。 6. 单击一次中间按钮。 7.全部松开&…...