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

Elasticsearch的安装及常用操作

文章目录

  • 一、Elasticsearch的介绍
    • 1、Elasticsearch索引
    • 2、Elasticsearch的介绍
  • 二、Elasticsearch的安装
    • 1、安装ES服务
    • 2、安装kibana
    • 3、Docker安装ES
    • 4、Docker安装Kibana
  • 三、ES的常用操作
    • 1、索引操作
    • 2、文档操作
    • 3、域的属性
      • 3.1 index
      • 3.2 type
      • 3.3 store
  • 总结

一、Elasticsearch的介绍

1、Elasticsearch索引

  1. Elasticsearch是一个全文检索服务器,全文检索是一种非结构化数据的搜索方式。
    结构化数据:指具有固定长度的数据,如数据库中的字段。
    非结构化数据:指格式和长度不固定的数据。
    结构化数据一般存入数据库,使用sql语句即可快速查询。但由于非结构化数据量大且格式不固定,需要采用全文检索的方式进行搜索。全文检索通过建立倒排索引加快搜索效率。
  2. 索引:将数据中的一部分信息提取出来,重新组织成一定的数据结构,可以根据该结构进行快速搜索,这样的结构称之为索引。索引分为正排索引和倒排索引。
    正排索引(正向索引):将文档id建立为索引,通过id可以快速查找数据。如数据库的主键就是创建的正排索引。
    倒排索引(反向索引):非结构化数据中往往会根据关键词查询数据。此时将数据中的关键词建立为索引,指向文档数据,这样的数据称为倒排索引。

2、Elasticsearch的介绍

  1. Elasticsearch是基于Lucene开发的项目;本质是一个Java语言开发的web项目。 可以通过RESTful风格的接口访问该项目内部的Lucene,从而让全文搜索变得简单。ES内部包含了Lucene。
  2. Elasticsearch自身带有分布式协调管理功能;solr利用zookeeper进行分布式管理。
    Elasticsearch仅支持json文件格式;solr支持很多格式的数据。
    Elasticsearch本身更注重于核心功能,高级功能多由第三方插件提供;solr官方提供的功能更多。
    solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时(即边添加边搜索)效率明显低于Elasticsearch。
    目前ES市场占有率越来越高,solr已经停止维护。
  3. 文档(Document):是可被查询的最小数据单元,一个文档就是一条数据。类似于关系型数据库中的记录的概念。
    类型(Type):具有一组共同字段的文档定义成一个类型,类似于关系型数据库中的数据表的概念。
    索引(Index):是多种类型文档的集合,类似于关系型数据库中库的概念。
    域(Field):文档由多个域组成,类似于关系型数据库中的字段的概念。
    ES7.X之后删除了Type的概念,一个索引不会代表一个库,而是代表一张表。
    即原本对应表概念的Type没有了,使用Index代替对应表概念,同时删除了ES中相当于关系型数据库的库的概念。

二、Elasticsearch的安装

1、安装ES服务

  1. 准备一个CentOS7系统的虚拟机,使用MobaX终端连接虚拟机。
  2. 关闭防火墙:systemctl stop firewalld.service
    禁止防火墙自启动:systemctl disable firewalld.service
  3. 配置最大可创建文件数大小
    1)打开系统文件:vim /etc/sysctl.conf
    2)添加一下配置:vm.max_map_count=655360,保存退出
    3)在命令行使配置生效:sysctl -p
  4. 因为ES不能以root用户运行,需要创建一个非root用户es:useradd es
  5. 在官网下载linux的Elasticsearch压缩包:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.1-linux-x86_64.tar.gz
  6. 通过mobax上传到目录/中,然后解压缩:tar -zxvf elasticsearch-8.6.1-linux-x86_64.tar.gz
  7. 重命名ES文件:mv elasticsearch-8.6.1 elasticsearch
  8. 将ES文件移动到目录/usr/local/中:mv elasticsearch /usr/local/
  9. 让es用户取得该文件夹权限:chown -R es:es /usr/local/elasticsearch
  10. 切换为es用户:su es
  11. 找到/usr/local/elasticsearch/config/目录下面的elasticsearch.yml配置文件,把安全认证开关从原先的true都改成false,即可实现免密登录访问
  12. 进入到目录/usr/local/elasticsearch/bin:cd /usr/local/elasticsearch/bin
  13. 启动es服务:./elasticsearch
  14. 新开一个窗口查询es服务是否启动成功:curl 127.0.0.1:9200,此时{}内有数据,即非Empty时证明启动成功

2、安装kibana

  1. 在Elasticsearch官网下载linux版的kibana:https://artifacts.elastic.co/downloads/kibana/kibana-8.6.1-linux-x86_64.tar.gz
  2. 在目录/中上传该压缩包,然后在目录/下解压缩到目录/usr/local/中:tar -zxvf kibana-8.6.1-linux-x86_64.tar.gz -C /usr/local/
  3. 修改配置文件
    1)进入到config目录下:cd /usr/local/kibana-8.6.1/config
    2)修改配置文件:vim kibana.yml
    3)添加kibana主机ip:server.host: "192.168.126.24"
    添加Elasticsearch路径:elasticsearch.hosts: ["http://127.0.0.1:9200"]
  4. 给es用户设置kibana目录权限:chown -R es:es /usr/local/kibana-8.6.1/
  5. 切换到es用户:su es
  6. 进入到kibana的bin目录:cd /usr/local/kibana-8.6.1/bin/
  7. 确保启动Elasticsearch后,再启动kibana:./kibana
  8. 在浏览器中访问kibana:http://192.168.126.24:5601/
    如果google浏览器版本太低的话是访问不到这个页面的
  9. 在kibana页面中选择Management,再选择Index Management,即可查看Elasticsearch索引信息
    在这里插入图片描述

3、Docker安装ES

  1. 安装docker:curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
    重复了2次命令,第一次显示获取密钥失败,第二次才安装成功
  2. 启动docker :systemctl start docker
  3. 拉取ES镜像:docker pull elasticsearch:8.6.1
  4. docker容器间建立通信:docker network create elastic
  5. 创建ES容器:docker run --restart=always -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms512m -Xmx512m" --name='elasticsearch' --net elastic --cpuset-cpus="1" -m 1G -d elasticsearch:8.6.1
    参数:
    -p:第一个-p是外部访问时的端口号,第二个-p是ES集群内部通信的端口号
    -e:第一个-e是指ES是单节点的,第二个-e是指该ES在JAVA中占用的内存为固定内存512M
    –name:指该容量的名字
    –net:指使用的网关
    –cpuset-cpus:指使用多少个cpu
    -m:占用的内存
    -d:指被使用的镜像名字
  6. 修改配置文件(设置免密码登录)
    1)将ES容器中的elasticsearch.yml拷贝到当前目录下:docker cp elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml .
    因为相对路径显示找不到文件,此时用的是绝对路径
    2)修改yml文件:vim elasticsearch.yml,将所有的true改为false即可
    3)将修改后的配置文件拷贝回容器中:docker cp elasticsearch.yml elasticsearch:/usr/share/elasticsearch/config/elasticsearch.yml
    4)重启elasticsearch容器:docker restart elasticsearch

4、Docker安装Kibana

  1. 拉取kibana镜像:docker pull kibana:8.6.1
  2. 启动容器:docker run --name kibana --net elastic --link elasticsearch:elasticsearch -p 5601:5601 -d kibana:8.6.1
  3. 在浏览器中访问kibana:192.168.126.24:5601

三、ES的常用操作

1、索引操作

Elasticsearch是使用RESTful风格的http请求访问操作的,请求参数和返回值都是json格式,可以使用kibana发送http请求操作ES。
1)选择Management下的DevTools,即可通过kibana来操作ES
在这里插入图片描述

2)在IndexManagement中查看索引
在这里插入图片描述

  1. 创建索引,在kibana中输入下面内容并运行,即可创建student索引

    PUT /student
    {"mappings": {"properties": {"id": {"type": "integer"},"name": {"type": "text"},"age": {"type": "integer"}}}
    }

    即创建student索引并添加索引的结构

  2. 删除索引,在kibana中输入下面内容并运行,即可删除student索引

    DELETE /student
    

2、文档操作

  1. 新增或修改文档

    POST /student/_doc/1
    {"id":1,"name":"zzx","age":10}
    

    此时文档id设置为1,如果不写id则自动生成文档id,id和已有id重复时修改文档

  2. 根据文档id查询文档

    GET /student/_doc/1
    
  3. 根据id删除文档

    DELETE /student/_doc/1
    
  4. 根据id批量查询文档

    GET /student/_mget
    {"docs":[{"_id":1},{"_id":2}]
    }
    
  5. 查询所有文档

    GET /student/_search
    {"query":{"match_all":{}}
    }
    
  6. 修改文档

    POST /student/_doc/1
    {"id": 3,"name": "zzx","age": 10
    }

    Elasticsearch执行删除操作时,ES先标记文档为deleted状态,而不是直接物理删除。当ES存储空间不足或者工作空闲时,才会执行物理删除。
    Elasticsearch执行修改操作时,ES不会真的修改Document中的数据,而是标记ES中原有的文档为deleted状态,再创建一个新的文档来存储数据。

3、域的属性

3.1 index

只有域中的index的值为true时,才能根据该域的关键词查询文档。

  1. 创建两个索引,其中一个索引的域中的index值为true,另一个为false。

    PUT /student1
    {"mappings": {"properties": {"name": {"type": "text","index":true}}}
    }
    PUT /student2
    {"mappings": {"properties": {"name": {"type": "text","index":false}}}
    }
    
  2. 创建2个域的值相同的文档

    POST /student1/_doc/1
    {"name":"zzx 111"
    }
    POST /student2/_doc/1
    {"name":"zzx 111"
    }
    
  3. 在这两个文档中,都按name域查找

    GET /student1/_search
    {"query":{"term":{"name": "zzx"}}
    }
    GET /student2/_search
    {"query":{"term":{"name": "zzx"}}
    }
    

    此时student1的name域的index为true,能找到,但是student2是false,直接报错。并且按域查找时,text类型是以空格符为分割符,即如果是zz的话,也是找不到。

3.2 type

  1. 字符串类型:text
  2. 整数类型:long,integer,short,byte
  3. 浮点型:double,float
  4. 日期类型:date
  5. 布尔类型:boolean
  6. 数组类型:array
  7. 对象类型:object
  8. 不分词的字符串:keyword
    1)创建一个student3
	PUT /student3{"mappings": {"properties": {"name": {"type": "keyword","index":true}}}}

2)进行查询

	GET /student3/_search{"query":{"term":{"name": "zzx"}}}

此时因为keyword类型是不分词的,所以找不到

3.3 store

域中store的值为true,则为单独存储,即该域能够单独查询。

  1. 创建2个索引

    PUT /student1
    {"mappings": {"properties": {"age": {"type":"integer"},"name": {"type": "text","index":true,"store": true}}}
    }
    PUT /student2
    {"mappings": {"properties": {"age": {"type":"integer"},"name": {"type": "text","index":true,"store": false}}}
    }
    
  2. 给俩个索引赋值

    POST /student1/_doc/1
    {"age":11,"name":"zzx 111"
    }
    POST /student2/_doc/1
    {"age":11,"name":"zzx 111"
    }
    
  3. 分别按域单独查找

    GET /student1/_search
    {"stored_fields":["name"]
    }
    GET /student2/_search
    {"stored_fields":["name"]
    }
    

    其中student1的store值为true,student2为false,索引student1单独查找时能找到域值,而索引student2单独查找时没有找到域值。

总结

  1. Elasticsearch是一个全文检索服务器,全文检索是一种非结构化数据的搜索方式。
    全文检索通过建立倒排索引加快搜索效率。
    docker安装ES及Kibana,拉取ES镜像后,创建ES通信用的网关,创建ES容器,将配置文件修改为免密码登录即可;拉取Kibana镜像后,创建Kibana容器后即可通过Kibana访问ES服务。
    在使用docker的cp指令时,遇到一个问题,就是不能通过相对路径找到文件,而是用绝对路径才能找到文件。
  2. ES在执行删除和修改操作时,不会马上删除,而是先标记为deleted状态,在内存不足或工作空闲时,才会执行物理删除操作。
  3. index为true时,在查询文档时,可以根据域值查找文档。
    store为true时,将该域进行单独存储,可以按域名单独查询到。

相关文章:

Elasticsearch的安装及常用操作

文章目录一、Elasticsearch的介绍1、Elasticsearch索引2、Elasticsearch的介绍二、Elasticsearch的安装1、安装ES服务2、安装kibana3、Docker安装ES4、Docker安装Kibana三、ES的常用操作1、索引操作2、文档操作3、域的属性3.1 index3.2 type3.3 store总结一、Elasticsearch的介…...

网络安全应急响应服务方案怎么写?包含哪些阶段?一文带你了解!

文章目录一、服务范围及流程1.1 服务范围1.2 服务流程及内容二、准备阶段2.1 负责人准备内容2.2 技术人员准备内容(一)服务需求界定(二)主机和网络设备安全初始化快照和备份2.3市场人员准备内容(1)预防和预…...

11、事务原理和实战,MVCC

事务原理和实战 1. 认识事务2. 事务控制语句2.1 开启事务2.2 事务提交2.3 事务回滚3. 事务的实现方式3.1 原子性3.2 一致性3.3 隔离性3.3 持久性4purge thread线程5事务统计QPS与TPS5.1 QPS5.2 TPS6. 事务隔离级别6.1 隔离级别6.2 查看隔离级别6.3 设置隔离级别6.4 不同隔离级别…...

Robust Self-Augmentation for Named Entity Recognition with Meta Reweighting

摘要 近年来,自我增强成为在低资源场景下提升命名实体识别性能的研究热点。Token substitution and mixup (token替换和表征混合)是两种有效提升NER性能的自增强方法。明显,自增强方法得到的增强数据可能由潜在的噪声。先前的研究…...

Java基础-xml

1.xml 1.1概述 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为止&#…...

TCP的Nagle算法和delayed ack---延时发送和延时应答与稍带应答选项

本文目录提高TCP的网络利用率的二个思考解决方案:Nagle算法和delayed ack(延时发送和延时应答与稍带应答选项)Nagle算法和delayed ack算法同时启动可能会导致的问题提高TCP的网络利用率的二个思考 我们都知道,TCP是一个基于字节流…...

智能拣配单解决方案

电子货架标签系统(ESLs),是一种放置在货架上、可替代传统纸质价格标签的电子显示装置, 每一个电子货架标签通过有线或者无线网络与商场计算机数据库相连, 并将最新的商品价格通过电子货架标签上的屏显示出来。 电子…...

如何防御入侵服务器

根据中华人民共和国刑法: 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的&#xff…...

[软件工程导论(第六版)]第4章 形式化说明技术(课后习题详解)

文章目录1. 举例对比形式化方法和欠形式化方法的优缺点。2. 在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则?3. 一个浮点二进制数的构成是:一个可选的符号(+或-)&…...

Premiere基础操作

一:设置缓存二:ctrI导入素材三:导入图像序列四:打开吸附。打开吸附后素材会对齐。五:按~键可以全屏窗口。六:向前选择轨道工具。在时间线上点击,向前选中时间线上素材。向后选择轨道工具&#x…...

Prometheus监控案例-tomcat、mysql、redis、haproxy、nginx

监控tomcat tomcat自身并不能提供监控指标数据,需要借助第三方exporter实现:https://github.com/nlighten/tomcat_exporter 构建镜像 基于tomcat官方镜像,重新制作一个镜像,将tomcat-exporter和tomcat整合到一起。Ddockerfile如…...

如何寻找SAP中的增强

文章目录0 简介1 寻找一代增强2 寻找二代增强2.2 在包里也可以看到2.3 在出口对象里输入包的名字也可以找到2.4 通过以下函数可以发现已有的增强2.5 也可以在cmod里直接找2.6 总结3 寻找第三代增强0 简介 在SAP中,对原代码的修改最不容易的是找增强,以下…...

算法刷题打卡第95天: 最大平均通过率

最大平均通过率 难度:中等 一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试。给你一个二维数组 classes ,其中 classes[i] [passi, totali] ,表示你提前知道了第 i 个班级总共有 totali…...

Springboot扩展点系列之终结篇:Bean的生命周期

前言关于Springboot扩展点系列已经输出了13篇文章,分别梳理出了各个扩展点的功能特性、实现方式和工作原理,为什么要花这么多时间来梳理这些内容?根本原因就是这篇文章:Spring bean的生命周期。你了解Spring bean生命周期&#xf…...

OnGUI Color 控件||Unity 3D GUI 简介||OnGUI TextField 控件

Unity 3D Color 控件与 Background Color 控件类似,都是渲染 GUI 颜色的,但是两者不同的是 Color 不但会渲染 GUI 的背景颜色,同时还会影响 GUI.Text 的颜色。具体使用时,要作如下定义:public static var color:Color;…...

【日刻一诗】

日刻一诗 1)LeetCode总结(线性表)_链表类 2)LeetCode总结(线性表)_栈队列类 3)LeetCode总结(线性表)_滑动窗口 4)LeetCode总结(线性表&#x…...

设计模式 状态机

前言 本文梳理状态机概念,在实操中状态机和状态模式类似,只是被封装起来,可以很方便的实现状态初始化和状态转换。 概念 有限状态机(finite-state machine)又称有限状态自动机(英语:finite-s…...

React源码分析(二)渲染机制

准备工作 为了方便讲解&#xff0c;假设我们有下面这样一段代码&#xff1a; function App(){const [count, setCount] useState(0)useEffect(() > {setCount(1)}, [])const handleClick () > setCount(count > count)return (<div>勇敢牛牛, <sp…...

Object.defineProperty 和 Proxy 的区别

区别:Object.defineProperty是一个用来定义对象的属性或者修改对象现有的属性的函数&#xff0c;&#xff0c;而 Proxy 是一个用来包装普通对象的对象的对象。Object.defineProperty是vue2响应式的原理, Proxy 是vue3响应式的原理1)参数不同Object.defineProperty参数obj: 要定…...

Python基础4——面向对象

目录 1. 认识对象 2. 成员方法 2.1 成员方法的定义语法 3. 构造方法 4. 其他的一些内置方法 4.1 __str__字符串方法 4.2 __lt__小于符号比较方法 4.3 __le__小于等于符号比较方法 4.4 __eq__等号比较方法 5. 封装特性 6. 继承特性 6.1 单继承 6.2 多继承 6.3 pas…...

Hive 核心知识点灵魂 16 问

本文目录 No1. 请谈一下 Hive 的特点No2. Hive 底层与数据库交互原理&#xff1f;No3. Hive 的 HSQL 转换为 MapReduce 的过程&#xff1f;No4. Hive 的两张表关联&#xff0c;使用 MapReduce 怎么实现&#xff1f;No5. 请说明 hive 中 Sort By&#xff0c;Order By&#xff0…...

聊聊探索式测试与敏捷实践

这是鼎叔的第五十二篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。欢迎关注本专栏和微信公众号《敏捷测试转型》&#xff0c;大量原创思考文章陆续推出。探索式测试在敏捷测试象限中处于右上角&#xff0c;即面向业务且评价产品&#xff0c;这篇补充一下探索…...

社区宠物诊所管理系统

目录第一章概述 PAGEREF _Toc4474 \h 21.1引言 PAGEREF _Toc29664 \h 31.2开发背景 PAGEREF _Toc3873 \h 3第二章系统总体结构及开发 PAGEREF _Toc19895 \h 32.1系统的总体设计 PAGEREF _Toc6615 \h 32.2开发运行环境 PAGEREF _Toc13054 \h 3第三章数据库设计 PAGEREF _Toc2852…...

Vue项目创建首页发送axios请求

这是个全新的Vue项目,引入了ElementUI 将App.vue里的内容干掉,剩如下 然后下面的三个文件也可以删掉了 在views文件下新建Login.vue组件 到router目录下的index.js 那么现在的流程大概是这样子的 启动 写登陆页面 <template><div><el-form :ref"form"…...

Nginx

NginxNginxNginx可以从事的用途Nginx安装Nginx自带常用命令Nginx启动Nginx停止Nginx重启Nginx配置概要第一部分&#xff1a;全局块第二部分&#xff1a;events 块&#xff1a;第三部分&#xff1a;http块&#xff1a;Nginx Nginx是一个高性能的http和反向代理服务器&#xff0…...

2049. 统计最高分的节点数目

2049. 统计最高分的节点数目题目算法设计&#xff1a;深度优先搜索题目 传送门&#xff1a;https://leetcode.cn/problems/count-nodes-with-the-highest-score/ 算法设计&#xff1a;深度优先搜索 这题的核心是计算分数。 一个节点的分数 左子树节点数 右子树节点数 除自…...

Docker 架构简介

Docker 架构 Docker 包括三个基本概念: 镜像&#xff08;Image&#xff09;&#xff1a;Docker 镜像&#xff08;Image&#xff09;&#xff0c;就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。容器&am…...

玄子Share-BCSP助学手册-JAVA开发

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b2gPyAnt-1676810001349)(./assets/%E7%8E%84%E5%AD%90Share%E4%B8%89%E7%89%88.jpg)] 玄子Share-BCSP助学手册-JAVA开发 前言&#xff1a; 此文为玄子&#xff0c;复习BCSP一二期后整理的文章&#x…...

利用React实现多个场景下的鼠标跟随框提示框

前言 鼠标跟随框的作用如下图所示&#xff0c;可以在前端页面上&#xff0c;为我们后续的鼠标操作进行提示说明&#xff0c;提升用户的体验。本文将通过多种方式去实现&#xff0c;从而满足不同场景下的需求。 实现原理 实现鼠标跟随框的原理很简单&#xff0c;就是监听鼠标在…...

【安全知识】——如何绕过cdn获取真实ip

作者名&#xff1a;白昼安全主页面链接&#xff1a; 主页传送门创作初心&#xff1a; 以后赚大钱座右铭&#xff1a; 不要让时代的悲哀成为你的悲哀专研方向&#xff1a; web安全&#xff0c;后渗透技术每日鸡汤&#xff1a; 现在的样子是你想要的吗&#xff1f;cdn简单来说就是…...

源码网站程序/石家庄关键词优化软件

设备树历史最详解 zynq设备树历史最详解 注&#xff1a;由于内核版本的演变&#xff0c;设备树成了任何使用较高版本Linux系统的设备平台所必须文件&#xff0c;然国内相关技术文档严重不足&#xff0c;本文是国外技术专栏的翻译&#xff0c;原文链接&#xff1a;http://xillyb…...

品牌网站设计打造/媒介

0x01. 进入环境&#xff0c;下载附件 题目给的压缩包&#xff0c;包含一个txt文件&#xff0c;如图&#xff1a; 0x02. 问题分析 0x02_1. 维吉利亚密码 什么是维吉利亚密码&#xff1f;维吉尼亚密码是在凯撒密码基础上产生的一种加密方法&#xff0c;它将凯撒密码的全部25…...

怎么向百度提交网站地图/河北百度推广客服电话

为了方便切换IP地址&#xff0c;特编制bat命令代码来实现&#xff0c;将以下代码复制到txt文本中&#xff0c;然后保存为bat文件&#xff0c;双击bat文件运行即可。 通过bat命令运行&#xff0c;自动修改IP地址&#xff0c;代码如下&#xff1a; echo off cls color 0A e…...

灵犀科技 网站建设/google网站登录入口

这篇文章主要为大家详细介绍了PHP字符串函数入门实例&#xff0c;具有一定的参考价值&#xff0c;可以用来参考一下。感兴趣PHP字符串函数入门实例的小伙伴&#xff0c;下面一起跟随512笔记的小编罗X来看看吧。1查找字符位置函数&#xff1a;strpos($str,search,[int]):查找sea…...

怎样建设好网站/嘉兴seo网络推广

规则1 每个 PR 审查至少需要 2 个同组开发者的批准&#xff0c;管理者的审批不统计。 首先要注意的是&#xff0c;由于我所在的是一个 3 人团队&#xff0c;这是最理想的。所有的 修改 3 个开发者都 100% 知情。如果团队规模更大&#xff0c;情况可能会有所不同。你所追求的是…...

东莞网站建设 兼职/seo的基本内容

假设这样一种情况&#xff0c;当一个班上有两个名叫 Zara 的学生时&#xff0c;为了明确区分它们&#xff0c;我们在使用名字之外&#xff0c;不得不使用一些额外的信息&#xff0c;比如他们的家庭住址&#xff0c;或者他们父母的名字等等。 同样的情况也出现在 C 应用程序中。…...