掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装

文章目录

  • 〇、简介
    • 1.Elasticsearch简介
    • 2.典型业务场景
    • 3.数据采集工具
    • 4.名词解释
  • 一、安装
    • 1.使用docker
      • (1)创建虚拟网络
      • (2)Elasticsearch安装步骤
    • 2.使用压缩包
  • 二、配置
    • 1.目录介绍
    • 2.配置文件介绍
    • 3.elasticsearch.yml节点配置
    • 4.jvm.options堆配置
  • 二、可视化工具Kibana
    • 1.介绍
    • 2.安装(Docker)
  • 参考


Elasticsearch版本:7.12.1
Kibana版本:7.12.1
操作系统:centos7

〇、简介

1.Elasticsearch简介

  • 什么是Elasticsearch:

Elasticsearch是一个提供可扩展的企业级搜索服务的工具。它主要提供了大数据搜索和分析服务。相较于传统的关系数据库,Elasticsearch具有更高的性能、易扩展性和良好的容错性。

  • 传统数据库的局限性:

传统的关系数据库在处理大数据时存在明显的短板,主要表现在性能差和扩展难的问题上。即使采用一定的方法去优化SQL,查询速度依然可能很慢,而关系数据库的集群搭建也不太容易,查询性能在很多业务场景中依然没有保障。

  • Elasticsearch的优势:

相较于关系数据库,Elasticsearch存在几个明显的优点:高性能、易扩展和良好的容错性。它使用倒排索引作为存储结构并大量使用缓存机制,能够非常快速地从海量的数据中查询出需要的结果。搭建多个Elasticsearch节点组成一个集群对外提供分布式的搜索服务也非常简单,而且每个索引可以配置副本机制,即使Elasticsearch有部分服务器宕机也不用担心数据丢失。

2.典型业务场景

Elasticsearch在以下几个典型的业务场景中有着广泛的应用:

  • 在线实时日志分析:

使用Elasticsearch分析线上日志是十分常见的操作,从最初的ELK(Elasticsearch、Logstash、Kibana)平台到如今的Elastic Stack都包含开箱即用的在线日志采集、存储、分析的功能,使用起来快捷、方便。

  • 物联网数据监控:

对于各种传感器设备、可穿戴设备实时产生的各种需要监控和分析的数据,由于数据量很大且实时性要求较高,很适合用Elasticsearch来进行技术选型,Elasticsearch在智慧交通、智能家居、公共安全、运维监控等领域有着广泛的应用。

  • 文献检索和文献计量:

Elasticsearch是一种出色的搜索引擎,很适合用于电子图书馆、论文检索系统所需的多样化信息检索服务,同时Elasticsearch强大的数据分析能力为文献计量提供了便利的统计接口。

  • 商务智能大屏展示:

Elasticsearch通过有效的大数据分析和研判,使用多维度的钻取分析为用户提供决策支持和趋势预测,其在智慧公安、智慧交通、智慧水利等领域的大屏展示系统中应用尤其普遍。

  • 数据分析型应用程序中的应用:

Elasticsearch很适合读多写少的数据分析型应用程序,特别适用于OLAP数据分析相关的项目。在这种情况下,考虑到Elasticsearch本身具备数据存储的能力,可以作为数据源。

3.数据采集工具

除了使用应用程序写入Elasticsearch,你还可以使用官方提供的数据采集工具Logstash或者第三方的ETL工具把数据写入Elasticsearch。这些工具功能十分丰富,包括:

  • Logstash:早期的数据采集、转换工具,可以很方便地把各种数据写入Elasticsearch。
  • Beats家族:一系列命名包含beat的轻量级数据采集器,包括Filebeat、Metricbeat、Packetbeat、Winlogbeat、Heartbeat和Auditbeat等,功能各异,但都能用来采集各种数据并写入Elasticsearch。

4.名词解释

  • 集群(cluster):多个安装了Elasticsearch的服务器如果拥有相同的集群名称,则它们属于同一个集群,对外提供统一的服务。在一个集群中,只有一个主节点,当主节点宕机时需要重新“选举”出新的主节点来维持集群正常运转。

  • 节点(node):一个节点就是一台安装了Elasticsearch的服务器,它是组成集群的基本单元。

  • 索引(index):索引是存储数据的基本单元,在大多数情况下,可以把它理解为关系数据库中的表。

  • 文档(document):文档是写入索引的基本单元,一个文档就是索引中的一条数据。写入索引的文档是JSON格式的文本字符串,里面包含各个字段的信息,保存在索引的_source元数据中。

  • 分片(shard):分片分为主分片和副本分片,每个索引拥有至少一个主分片和零个或多个副本分片,一个分片本质上是一个Lucene索引。当整个集群的节点数量增加或减少时,为了让分片在每个节点上分布得比较均匀,通常会使分片在集群中移动,这个过程也就是分片的分配。在任何时候,索引的主分片和它对应的副本分片不能位于同一个节点上,这是为了保证节点宕机时,主分片和副本分片不会同时丢失。

  • 主分片(primary shard):当文档数据写入索引时,会首先选择一个主分片进行写入,再把数据同步到副本分片。主分片的数目在建立索引时就已经固定,无法修改。如果一个索引拥有的主分片越多,那么它能存储的数据越多,主分片的个数通常跟索引的数据量成正相关。

  • 副本分片(replica shard):副本分片是主分片的一个副本,它能够分担一些数据搜索的请求,从而提高搜索的吞吐量。同时,副本分片还具备容灾备份的能力,当主分片所在的节点宕机时,副本分片可以被选举为主分片来保持数据的完整性。另外,索引的副本分片数目可以随时修改。

  • 分片恢复(shard recovery):分片恢复指的是把一个分片的数据完全同步到另一个分片的过程。这个过程伴随有分片的创建和分配,在集群启动时或者节点数目改变时自发完成。只有分片恢复完全结束,副本分片才能对外提供搜索服务。

  • 索引缓冲区(index buffer):索引缓冲区用于在内存中存储最新写入索引的数据,只有在索引缓冲区写满的时候,这些新的数据才会被一次性写入磁盘。

  • 传输模块(transport module):当节点接收请求后不能处理或无法单独处理时,节点需要把请求转发给其他节点,这是同一个集群中不同节点之间互相通信的手段,这个过程由传输模块来完成。

  • 网关模块(gateway module):网关模块存储着集群的信息和每个索引分片的持久化数据。默认使用的是本地网关,它会把数据存储在本地文件系统中,你还可以配置网关模块使用HDFS或其他存储手段来持久化Elasticsearch的数据。

  • 节点发现模块(node discovery module):节点发现模块用于节点之间的互相识别,可把新节点加入集群。这个过程需要使用传输模块来完成节点之间的通信。

  • 线程池(thread pool):Elasticsearch内置了多个线程池用于处理不同的操作请求。例如,analyze线程池用于处理文本分析的请求,write线程池用于处理索引数据的写入请求,search线程池用于处理搜索请求。你可以配置线程池的大小以改变其对这些请求的处理能力。

一、安装

1.使用docker

首先,你需要安装一个docker,关于Docker的使用我在《玩转Docker》系列博客中已经介绍过了。

(1)创建虚拟网络

因为需要使用 Docker 部署 ElasticSearch 和 Kibana ,并且它们相互之间需要进行网络通信,所有首先创建一个虚拟网络,然后在运行容器的时候,加入这个网络即可。

docker network create es-net

(2)Elasticsearch安装步骤

以下是使用Docker安装Elasticsearch的步骤:

  • 拉取Elasticsearch镜像:打开终端或命令行界面,运行以下命令来拉取Elasticsearch的官方镜像:
docker pull elasticsearch/elasticsearch:7.12.1

这将会从Docker Hub上拉取Elasticsearch 7.12.1版本的镜像到本地环境。

  • 创建并运行Elasticsearch容器:运行以下命令来创建并运行Elasticsearch容器
docker run -d \--name es \-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \-e "discovery.type=single-node" \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \
elasticsearch:7.12.1

这个命令中,-d参数表示以后台模式运行容器,–name elasticsearch指定容器的名称,-p 9200:9200 -p 9300:9300指定端口映射,-e "discovery.type=single-node"设置Elasticsearch的单节点模式。--network es-net指定加入虚拟网络。

  • 验证Elasticsearch是否运行:在浏览器中访问localhost:9200

如果一切正常,将会看到Elasticsearch的信息返回,表明Elasticsearch已经成功运行。

注意:
这里使用的是单节点模式的Elasticsearch,如果你需要搭建多节点集群,还需要进行额外的配置。
docker安装的Elasticsearch的目录文件默认是在容器中的/usr/share/elasticsearch目录下。

2.使用压缩包

注意,这一节我安装示范版本为7.2.0,操作系统为centos。

安装Elasticsearch 7.2.0 在 CentOS 上的完整步骤如下:

  1. 更新系统:首先,确保你的 CentOS 系统是最新的。可以通过以下命令更新系统:
sudo yum update
  1. 安装 Java:Elasticsearch 运行需要 Java 环境,确保你的系统已经安装了 Java。你可以通过以下命令检查是否已经安装了 Java:
java -version

如果没有安装 Java,你可以通过以下命令安装 OpenJDK:

sudo yum install java-1.8.0-openjdk
  1. 下载并安装 Elasticsearch:使用 wget 命令下载 Elasticsearch 7.2.0 的安装包,并解压安装:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.0-linux-x86_64.tar.gz
tar -xzf elasticsearch-7.2.0-linux-x86_64.tar.gz
  1. 配置 Elasticsearch:进入解压后的 Elasticsearch 目录,编辑配置文件 elasticsearch.yml:
cd elasticsearch-7.2.0/config
vi elasticsearch.yml

在配置文件中,你可以设置集群名称、节点名称、监听地址等参数。

  1. 创建非root用户
useradd es
passwd es #输入密码

6.启动 Elasticsearch 服务:

su es # 切换到非root用户
./安装目录/elasticsearch-7.2.0/bin/elasticsearch
  1. 验证 Elasticsearch:使用 curl 命令验证 Elasticsearch 是否正常运行:
curl -X GET "你的电脑ip:9200/"

如果一切顺利,你应该能够看到 Elasticsearch 的信息返回。

通过以上步骤,你应该能够在 CentOS 上成功安装 Elasticsearch 7.2.0,并启动 Elasticsearch 服务。记得根据实际情况修改配置文件和路径,以确保一切正常运行。

二、配置

1.目录介绍

在容器外,进入正在运行的Elasticsearch容器的命令行界面:

docker exec -it es /bin/bash

进入安装目录:

cd /usr/share/elasticsearch

在这里插入图片描述

  • 安装目录介绍:

● bin:包含与Elasticsearch有关的各种可执行脚本,很多都是批处理文件。
● config:包含各种节点的配置文件,elasticsearch.yml文件也在这个目录下,可以用于配置许多重要的参数。
● data:默认的数据存放目录,包含写入Elasticsearch的数据文件。
● jdk:包含一个自带的JDK,如果你不用自己计算机中的JDK,那么这个JDK就会派上用场。
● lib:包含Elasticsearch运行时需要用到的JAR包。
● logs:默认的日志存放目录,包含Elasticsearch运行时产生的各种日志文件。
● modules:包含Elasticsearch内置的各种模块,每个模块都是一个插件。
● plugins:包含用户添加的第三方插件,例如IK分词器插件就需要安装到这个目录下。

2.配置文件介绍

查看配置文件:

cd /usr/share/elasticsearch/config
ls

在这里插入图片描述

在Elasticsearch的config文件夹下,一共有3个重要的配置文件,其中elasticsearch.yml用于配置节点的参数,jvm.options用来配置Elasticsearch运行时占用的堆内存大小,log4j2.properties用来配置Elasticsearch运行时的日志参数。

那些可以通过调用REST接口,在节点运行时动态修改的配置叫作动态配置;配置在elasticsearch.yml文件中,只能在集群重启后才能生效的配置叫作静态配置。

  • 配置优先级:

当你需要修改集群节点的配置信息时,通常有以下3种方法。
(1)调用集群节点配置的REST接口并设置配置项临时生效,该配置项在集群重启后失效。
(2)调用集群节点配置的REST接口并设置配置项持久生效,该配置项在集群重启后依然有效。
(3)直接把集群节点配置项写在elasticsearch.yml文件中。

如果一个配置项没有采用以上3种方法进行配置,则会采用集群节点默认的配置。如果同一个配置项在多个地方都配置过,而且配置得不一样,则第一种临时配置的优先级最高,第二种持久生效的配置次之,写在elasticsearch.yml文件中的配置优先级最低。

通常比较好的做法是,对于整个集群范围内生效的动态配置直接使用REST接口进行控制,对于每个节点各自不同的配置(例如IP地址)直接在节点的elasticsearch.yml中配置,这样做可以避免遗漏某个节点的配置而引起错误。


为了方便,我们在容器外面把elasticsearch的config目录复制出来查看:

语法为:docker cp 容器id:容器中的目录 主机上的目录

docker cp 1536112ad6f4:/usr/share/elasticsearch/config ./

然后就可以在容器外面查看各个配置文件了。

3.elasticsearch.yml节点配置

这是elasticsearch.yml最初的配置,指定了集群名和节点host:

cluster.name: "docker-cluster"
network.host: 0.0.0.0

下面我介绍一下其他比较重要的配置。

  • path.data和path.logs

这两个配置项用于配置数据目录和日志目录,在生产环境中,由于文件较大,应尽量配置存储容量大的目录,可以配置多个目录。

path:data:- /esdata1- /esdata2logs:- /var/log/eslog1- /var/log/eslog2
  • bootstrap.memory_lock

这是用于操作系统内存锁的配置项,开启内存锁可以防止操作系统中的缓存数据被交换到外存而导致查询性能大幅下降,在生产环境中,这个配置项一定要设置为true。

bootstrap.memory_lock: true

注意:在CentOS中,直接设置bootstrap.memory_lock为true可能会因为缺少权限并不能立即开启内存锁,还需要一些额外的配置,我将会在后续博客中介绍这个问题。

  • network.host和http.port
network.host: 192.168.9.105
http.port: 9201
  • discovery.seed_hosts和cluster.initial_master_nodes

这两个配置项在单节点环境下保持默认设置即可,当需要搭建集群时,这两个配置项对于节点的发现和主节点的选举至关重要。discovery.seed_hosts用于配置一组IP地址或主机名,这组地址的列表是集群中的主候选节点的列表,当一个节点启动时会尝试与该列表中的各个主候选节点建立连接,如果连接成功并找到主节点就把该节点加入集群。

discovery.seed_hosts:- 192.168.9.10- 192.168.9.11- host3.com

cluster.initial_master_nodes用于明确地指定一组节点名称的列表,这个列表也是主候选节点的列表,Elasticsearch集群在第一次启动时会读取该列表初始化投票配置,该配置将用于主节点的选举。在这个列表中,配置的每个节点的名称要与该节点的node.name配置的名称保持一致。

cluster.initial_master_nodes: ["node-1", "node-2"]

4.jvm.options堆配置

Elasticsearch的堆内存配置在性能调优中非常重要。以下是一些关于Elasticsearch堆内存配置的要点:

分配合适的堆内存大小
Elasticsearch的堆内存大小直接影响其性能。如果设置得太小,可能查询时内存不够而导致服务宕机;如果设置得太大,又会超过JVM用于压缩对象指针的阈值而导致内存浪费。通常建议将堆内存设置为物理内存的一半,但不要超过30GB(压缩对象指针的阈值)。过小的堆内存会导致频繁的垃圾回收,而过大的堆内存可能会导致长时间的垃圾回收暂停,影响性能。

-Xms4g
-Xmx4g

Xms代表最小的堆内存大小,Xmx代表最大的堆内存大小,这两个值必须设置成一样的。

二、可视化工具Kibana

1.介绍

Kibana是一个开源的数据分析和可视化平台,它是Elastic Stack(之前称为ELK Stack)的一部分,用于搜索、查看、分析和交互式地操作存储在Elasticsearch索引中的数据。Kibana提供了丰富的图表、表格、地图等可视化组件,用户可以通过Kibana轻松地创建各种数据可视化和仪表盘,以便更好地理解和分析数据。

使用Kibana有以下好处:

  1. 数据可视化:Kibana提供了丰富的可视化组件,用户可以通过简单的拖拽和配置操作,创建各种图表、表格、地图等数据可视化,帮助用户更直观地理解数据。

  2. 仪表盘:Kibana允许用户将多个可视化组件组合成仪表盘,从而可以在一个页面上综合展示多个数据可视化,帮助用户全面地监控和分析数据。

  3. 数据查询:Kibana提供了强大的查询功能,用户可以通过Kibana界面轻松地构建和执行复杂的数据查询,以便快速地找到所需的数据。

  4. 开放性和扩展性:Kibana是一个开源的项目,用户可以根据自己的需求进行定制和扩展,满足不同的数据分析和可视化需求。

总的来说,Kibana作为Elastic Stack的一部分,为用户提供了强大的数据分析和可视化能力,帮助用户更好地理解和利用存储在Elasticsearch中的数据。

2.安装(Docker)

下面开始使用docker安装kibana:

  • 拉取Kibana镜像:在终端中执行以下命令来拉取Kibana的官方镜像:
docker pull kibana:7.12.1
  • 运行Kibana容器:执行以下命令来运行Kibana容器:
docker run -d --name kibana -e ELASTICSEARCH_HOSTS=http://es:9200 --network=es-net -p 5601:5601  kibana:7.12.1

-e ELASTICSEARCH_HOSTS=http://es:9200: 设置 Kibana 运行时连接的 Elasticsearch 节点的地址,这里指定了 Elasticsearch 服务的地址为 http://es:9200,其中 “es” 是 Elasticsearch 服务的容器名,而不是具体的 IP 地址。这是因为在 --network=es-net 中指定了容器连接到 “es-net” 网络,容器名会被解析为相应的 IP 地址。

  • 访问Kibana:在浏览器中输入http://localhost:5601,如果一切正常,你将会看到Kibana的页面,表明Kibana已经成功运行。

参考

https://blog.csdn.net/qq_61635026/article/details/133645483

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI数字人互动大屏采用什么技术?

互动大屏(技术支持:zhibo175)本身具有令人瞩目的效果,再配置丰富多彩的多媒体,如引人注目的广告、特效或游戏等,可起到很好的引流作用。在空间开阔且客流密集的场所,使用各种形态的大面积屏幕&a…

轻量级开源服务器Tomcat本地部署并将网页发布到公网远程访问

目录 1.前言 2.本地Tomcat网页搭建 2.1 Tomcat安装 2.2 配置环境变量 2.3 环境配置 2.4 Tomcat运行测试 2.5 Cpolar安装和注册 3.本地网页发布 3.1.Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 前些天发现了一个巨牛的人工智能学习网站,通…

小型洗衣机哪个牌子质量好?口碑最好的四款小型洗衣机推荐

随着科技的快速发展,现在的人们越来越注重自己的卫生问题,不仅在吃上面会注重卫生问题,在用的上面也会更加严格要求,而衣服做为我们最贴身的东西,我们对它的要求也会更加高,所以最近这几年较火爆的无疑是内…

微信服务号变成订阅号全流程攻略

服务号和订阅号有什么区别?服务号转为订阅号有哪些作用?我们都知道,服务号一个月只能发4次文章,但是订阅号每天都能发文章。不过在接收消息这一方面,服务号群发的消息有消息提醒,并显示在对话框&#xff1b…

FC忍者神龟格斗可视化hack源码

[FC][忍者神龟格斗][最佳可视化][Final] 时间:2023.12.22 作者:FlameCyclone 内容: 1.可视化功能菜单 (1)菜单按键操作 1.上下键: 移动选项 2.左右键: 翻页 3.选择键: 翻转功能开关 4.开始键: 退出菜单 5.B键: 启用功能 …

143.【Nginx-02】

Nginx-02 (五)、Nginx负载均衡1.负载均衡概述2.负载均衡的原理及处理流程(1).负载均衡的作用 3.负载均衡常用的处理方式(1).用户手动选择(2).DNS轮询方式(3).四/七层负载均衡(4).Nginx七层负载均衡指令 ⭐(5).Nginx七层负载均衡的实现流程 ⭐ 4.负载均衡状态(1).down (停用)(2)…

小学班委有哪些职位

在成长的道路上,班委是一个不可或缺的角色。它不仅是一个职位,更是一份责任和担当。对于孩子们来说,成为班委不仅意味着荣誉,更意味着在集体中发挥自己的力量,为班级做贡献。 那么,小学班委有哪些职位呢&am…

配置Nginx出现403 (Forbidden)静态文件加载不出来

出现问题如图 出现此问题可能和索引文件缺失、访问限制等原因有关,在默认的Nginx的配置中,出现此问题的大概率问题可能出现在启动用户和nginx工作用户不一致所致。 Nginx的默认配置文件的 nginx.conf 里首行是 user www-data; 如果你是在 root 下启用…

基于JAVA实现的简易学生信息管理系统(附源码)

一、前言 最近在学习JAVA,这几天跟着网上的视频学完基础知识之后,做了一个学生信息管理系统,写的比较普通,没太大亮点,希望可以给初学者一些参考经验,另外,如有不恰当的地方还请各位指正&am…

浅谈智能型电动机保护器在也门化工行业的应用

1.背景信息Background 现代化工工业中,电动机作为一种拖动机械,成为所有动力机械基础,科学技术不断进步和工艺控制不断完善,尤其是自动化生产要求,迫切需要开发和完善电动机控制和保护设备,实现对生产过程…

卫星接收LNBs的专用电路

都具有FET偏置控制器电路的卫星接收器LNB电路 芯片的描述:D3211是一-块用于卫星接收LNBs的专用电路,具有极化电压检测切换、22KHz脉冲检测切换和提供高放、本振级GaAs或HEMT FET晶体管工作点偏置等功能。D321 1内部的22K检测及切换控制由22K有源滤波器、…

一文带你深入浅出Web的自动化测试工具Selenium【建议收藏】

文章目录 前言发现宝藏第01节 Selenium概述第02节 安装浏览器驱动(以Google为例)第03节 定位页面元素1. 打开指定页面2. id 定位3. name 定位4. class 定位5. tag 定位6. xpath 定位7. css 选择器8. link 定位9. 示例 有道翻译 第04节 浏览器控制1. 修改…

重装系统后桌面图标没有了,“此电脑”怎么添加?

重装电脑系统对于使用电脑的用户来说是一种很常见的操作。但是有时在重装系统之后,我们会发现电脑桌面图标不见了,那么这时该怎么办呢?“此电脑”该怎么添加呢? 解决方法: 1.在桌面空白处单击鼠标右键,选择…

绝地反击,不做背锅侠!

那么作为运维人员,如何摆脱以上背黑锅的尴尬局面呢?堡垒机当然是破解此局面的绝杀大招。 1.统一登录入口 提供统一入口,集中管理和分配账户密码、所有运维人员只能登录堡垒机才能访问服务器,梳理“人与服务器”之间的关系&#…

C++设计模式 #7 工厂方法(Factory Method)

“对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持创建的稳定。它是接口抽象之后的第一步工作。 动机 在软件系统中,经常面临着创…

全球市场拓展指南:出海企业品牌力觉醒与长期主义引领

近年来,随着全球化的深入推进,越来越多的企业纷纷踏上了出海之路,希望在国际市场中寻找新的增长点。然而,仅仅依靠产品和服务的优势已经不能满足出海企业在激烈的国际市场竞争中立于不败之地。在这个背景下,企业们慢慢…

英特尔A770显卡介绍与解读

基础介绍 英特尔A770显卡。这是英特尔推出的一款高性能显卡,属于他们的Arc系列。这个系列的显卡主要面向游戏玩家和专业内容创作者,提供高性能图形处理能力。 A770显卡配备了先进的特性,例如支持硬件级光线追踪、AI加速技术,以及…

【实用干货】通过PMP认证考试的心得分享

要知道,PMP备考考试只是暂时的,但通过获得PMP证书和能力将是持久的。 参加PMP认证考试的整个过程不仅让我获得了PMP培训结业证书和PMP认证证书,更重要的是让我学到了大量项目管理知识,为我提供了全新的思维模式。 一、备考期间需…

jquery Tab切换,CSS3制作发光字

jquery Tab切换&#xff0c;CSS3制作发光字 代码如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta ht…

Three.js起步案例(画线)

Three.js官网 <template><div id"webgl"></div> </template><script setup> import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js;const scene new THREE.Scene();// 画线 // 材…