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

ElasticSearch基本使用


title: ElasticSearch基本使用
date: 2022-08-29 00:00:00
tags:

  • ElasticSearch
  • 基本使用
    categories:
  • ElasticSearch

基本概念

随着ES版本的升级,文中有些概念可能已经废弃。

  • 索引词(term)
    • 一个能够被索引的精确值,区分大小写,可以通过term查询进行准确的搜索。
  • 文本(text)
    • 一段普通的非结构化文字,文本会被分析成一个个的索引词,存储在es的索引库中,这样才能进行搜索。
  • 分析(analysis)
    • 将文本转换为索引词的过程,分析的结果依赖于分词器。
    • 分析机制用于进行全文文本的分词,以建立供搜索用的反向索引。
  • 索引(index)
    • 索引类似于关系数据库中的数据库,每个索引有不同字段,可以对应不同的类型;
    • 每个索引都可以有一个或者多个主索引片,同时每个索引还可以有零个或者多个副本索引片。
  • 文档(document)
    • 文档类似于关系数据库中的表中的行记录,每个存储在索引中的一个文档都有一个原始的json文档,被存储在一个叫做_source的字段中。当搜索文档的时候默认返回的是这个字段。
    • 一个文档不只有数据,还包含了元数据(metadata)——关于文档的信息:
      1. _index:文档存储的地方。名字必须是全部小写,不能以下划线开头,不能包含逗号;
      2. _id:id仅仅是一个字符串,指一个文件的唯一标识 ,它与_index组合时就可以在ES中唯一标识一个文档。
      3. 创建新文档时,可以自定义id,也可以让ES自动生成id。自动生成的ID有22个字符长,URL-safe, Base64-encoded string universally unique identifiers, 或者叫UUIDs。
  • 映射(mapping)
    • 映射类似于关系数据库中的表结构,每一个索引都有一个映射,它定义了索引中的每一个字段类型,以及一个索引范围内的设置。一个映射可以事先被定义,或者在第一次存储文档的时候自动识别。
    • 映射(mapping)机制用于进行字段类型确认,将每个字段匹配为一种确定的数据类型(string, number, booleans, date等) 。
  • 字段(field)
    • 字段类似于关系数据库中表的列,每个字段都对应一个字段类型,例如整数、字符串、对象等,可以指定如何分析该字段的值。
    • 重要的是在ES里面:每个文档里的字段都默认会被索引并被查询。也就是说,每个字段专门有一个反向索引用于快速检索。而且与其它数据库不同,它可以在同一个查询中利用所有的这些反向索引,以惊人的速度返回结果。
  • 来源字段(sourcefield)
    • 默认情况下,原始文档将被存储在_source这个字段中,查询的时候也是返回这个字段。这样可以从搜索结果中访问原始的对象,这个对象返回一个精确的json字符串,这个对象不显示索引分析后的其他任何数据。
  • 集群(cluster)
    • 由一个或多个共享相同群集名称的节点组成的ES组,它们具有相同的cluster.name,它们协同工作,分享数据和负载。
    • ES是一个分布式的文档(document) 存储引擎,它可以实时存储并检索复杂数据结构,序列化的JSON文档。换言说,一旦文档被存储在ES中,它就可以在集群的任一节点上被检索。
  • 节点(node)
    • 集群中的一个ES服务器,一个节点是一个逻辑上独立的服务,它是集群的一部分,可以存储数据,并参与集群的索引和搜索功能,在启动时,节点将使用广播来发现具有相同群集名称的现有群集,并将尝试加入该群集
  • 主节点
    • 每个群集有一个单独的主节点,这由程序自动选择,如果当前主节点失败,程序会自动选择其他节点作为主节点。
    • 它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。
  • 路由(routing)
    • 操作文档时,选择文档所在分片的过程。一个文档会存储在一个唯一的主分片中,具体存储在哪个分片是通过散列值来进行选择的。
    • 默认情况下,这个值是由文档的id生成。
    • 如果文档有一个指定的父文档,从父文档ID中生成,该值可以在存储文档的时候进行修改。
  • 分片(shard)
    • 一个单一的Lucene实例,用来真正存储索引并提供搜索功能。这个是由ES管理的比较底层的功能,ES的索引是指向主分片和副本分片的逻辑空间。
    • 对于使用,只需要指定分片的数量,其他不需要做过多的事情。在开发使用的过程中,我们对应的对象都是索引,ES会自动管理集群中所有的分片,当发生故障的时候,ES会把分片移动到不同的节点或者添加新的节点。
    • 注意:可以在一个单一的Lucene索引中存储的最大值为2147483519(=integer.max_value - 128)个文档。
  • 主分片(primary shard)
    • 每个文档都存储在一个分片中,当你存储一个文档的时候,系统会首先存储在主分片中,然后会复制到不同的副本中。默认情况下,一个索引有5个主分片。可以在事先制定分片的数量,当分片一旦建立,分片的数量则不能修改。
  • 副本分片(replica shard)
  • 副本是主分片的复制,每一个分片有零个或多个副本,这样做有两个目的:
    1. 增加高可用性:当主分片失败的时候,可以从副本分片中选择一个作为主分片。
    2. 提高性能:当查询的时候可以到主分片或者副本分片中进行查询。
  • 默认情况下,一个主分片有一个副本,但副本的数量可以在后面动态的配置增加。副本必须部署在不同的节点上,不能部署在和主分片相同的节点上。

基本使用

以下示例均在ES 8.3/Kibana 8.3版本上验证通过

怎样与ES交互?

  • 有两种方法,一是直接向ES发送HTTP请求,拿创建索引举例:
# 注意默认情况下直接发送情况会失败,需要修改ES配置文件,将xpack.security.enabled设置为false。
# 当然在启用安全认证的情况下,其实也可以通过证书+用户的方式发送请求,我在后续文章中专门介绍。
curl -XPUT 'http://192.168.0.110:9200/mytest?pretty' -d '{"settings": {"index": {"number_of_shards": 5,"number_of_replicas": 2}}
}'
  • 另一种方式是使用Kibana Dev Tools页面,使用起来非常便利,这是推荐的交互方式。
PUT /mytest
{"settings": {"index": {"number_of_shards": 5,"number_of_replicas": 2}}
}
  • 执行成功后会获得如下响应数据:
{"acknowledged": true,"shards_acknowledged": true,"index": "mytest"
}
  • 查看索引,列出所有的索引 GET /_cat/indices,后面跟 ?v 能看到结果的表头。

插入数据

PUT /mytest/_create/p1
{"name": "Mac Book笔记本","price": 12345,"description": "这是一款笔记本","cats": ["3c","computer"]
}
  1. 请记住_index、_id两者唯一确定一个文档,所以要想保证文档是新加入的,最简单的方式是让ES自动生成唯一_id。
  2. 如果想使用自定义的_id,必须告诉ES应该在_index、_id两者都不同时才接受请求。
  3. 第一种方法使用op_type查询参数:PUT /website_blog/123?op_type=create
  4. 第二种方法是在URL后加/_create做为端点:PUT /website_blog/123/_create
  5. 如果请求成功的创建了一个新文档,ES将返回正常的元数据且响应状态码是201 Created。另一方面,如果包含相同的_index、_type和_id的文档已经存在,ES将返回409 Conflict响应状态码。
  6. 当创建文档的时候,如果索引不存在,则会自动创建该索引。
  • 自动创建的索引会自动映射每个字段的类型。
  • 自动创建索引可以通过配置文件设置action.auto_create_index为false在所有节点的配置文件中禁用。
  • 自动映射的字段类型可以通过配置文件设置index.mapper.dynamic为false禁用。自动创建索引可以通过模板设置索引名称,例如:可以设置action.auto_create_index为 +aaa*, -bbb*, +ccc*, -* (+表示准许,-表示禁止) 。

查询数据

  1. GET /mytest/_doc/p1 请求将返回文档的全部字段,存储在_source参数中。但是可能你感兴趣的字段只是title。请求个别字段可以使用_source参数。多个字段可以使用逗号分隔:GET /mytest/_doc/p1?_source=cats,name
  2. 如果你想做的只是检查文档是否存在,对内容完全不感兴趣,使用HEAD方法来代替GET HEAD /mytest/_doc/p1
  3. 你也可以禁掉source,只要设置_source=false即可。
  4. 如果你只想获取sorce中的一部分内容,还可以用_source_include或者_source_exclude来包含或者过滤其中的某些字段 GET /mytest/_doc/p1?_source_includes=name

修改数据

PUT /mytest/_doc/p1
{"name": "新款Mac Book笔记本","price": 54321
}
  1. 文档在ES中是不可变的, 如果需要更新已存在的文档,可以替换掉它。
  2. 在内部,ES已经标记旧文档为删除并添加了一个完整的新文档。旧版本文档不会立即消失,但你也不能去访问它。ES会在你继续索引更多数据时清理被删除的文档。

删除数据

  • DELETE /mytest/_doc/p1
  • 删除一个文档也不会立即从磁盘上移除,它只是被标记成已删除。ES将会在你之后添加更多索引的时候才会在后台进行删除内容的清理。

删除索引

  • DELETE /mytest
  • 删除索引后执行 GET /mytest 会得到status=404的响应。

简单查询

  • 通过url参数进行搜索 GET /mytest/_search?q=price:12345
    1. q:查询字符串
    2. df:当查询中没有定义前缀的时候默认使用的字段,例如 ?q=123445&df=price
    3. analyzer:当分析查询字符串的时候使用的分词器,例如 ?q=笔记&df=description&analyzer=ik_max_word
    4. lowercase_expanded_terms:搜索的时候忽略大小写标志,默认为true
    5. analyze_wildcard:通配符或者前缀查询是否被分析,默认false
    6. default_operator:默认多个条件的关系,AND或者OR,默认OR
    7. lenient:如果设置为true,字段类型转换失败的时候将被忽略,默认为false
    8. explain:在每个返回结果中,将包含评分机制的解释
    9. _source:是否包含元数据,同时支持_source_include和_source_exclude
    10. fields:只返回索引中指定的列,多个列中间用逗号分开
    11. sort:排序,例如fieldName:asc或者fieldName:desc
    12. track_scores:评分轨迹,当排序的时候,设置为true的时候返回评分的信息
    13. timeout:超时的时间设置
    14. terminate_after:在每个分片中查询的最大条数,返回结果中会有一个terminated_early字段
    15. from:开始的记录数
    16. size:搜索结果中的条数
    17. search_type:搜索的类型,可以是dfs_query_then_fetch,query_then_fetch,默认query_then_fetch

关于Timeout

  • 一般情况下搜索请求不会超时。通常,协调节点会等待接收所有分片的回答。如果有一个节点遇到问题,它会拖慢整个搜索请求。
  • Timeout参数告诉协调节点最多等待多久,就可以放弃等待而将已有结果返回。返回部分结果总比什么都没有好。搜索请求的返回将会指出这个搜索是否超时,以及有多少分片成功答复了。
  • 你可以定义timeout参数为10或者10ms(10毫秒),或者1s(1秒),例如:GET /_search?timeout=10ms,ES将返回在请求超时前收集到的结果。
  • 注意:超时不是一个断路器,也就是说timeout不会停止执行查询,它仅仅告诉你目前顺利返回结果的节点然后关闭连接。在后台,其他分片可能依旧执行查询,尽管结果已经被发送。

多索引和多类别

  • 通过限制搜索的不同索引或类型,可以在集群中跨所有文档搜索。ES转发搜索请求到集群中的主分片或每个分片的复制分片上,收集结果后选择顶部十个返回给我们。
  • 可以通过定义URL中的索引或类型来限定搜索的范围,例如:
    1. /_search:在所有索引中搜索
    2. /mytest/_search:在索引mytest中搜索
    3. /mytest,test2/_search:在索引mytest和test2中搜索
    4. /my*,t*/_search:在以my或t开头的索引的所有类型中搜索
    5. /_all/_search:在所有索引中搜索
  • 当你搜索包含单一索引时,ES转发搜索请求到这个索引的主分片或每个分片的复制分片上,然后聚集每个分片的结果。搜索包含多个索引也是同样的方式——只不过或有更多的分片被关联。
  • 注意:搜索一个索引有5个主分片和5个索引各有一个分片事实上是一样的。

分页

  • ES接受from和size参数:
    • size: 结果数,默认10
    • from: 跳过开始的结果数,默认0
  • 如果你想每页显示5个结果,页码从1到2,那请求如下:
    • GET /_search?size=5
    • GET /_search?size=5&from=5

在集群系统中深度分页

  • 为什么深度分页是有问题?假设在一个有5个主分片的索引中搜索,当请求结果的第一页(结果1到10)时,每个分片产生自己最顶端10个结果然后返回它们给请求节点,它再排序这所有的50个结果以选出顶端的10个结果。
  • 现在假设请求第1000页——结果10001到10010,工作方式都相同,不同的是每个分片都必须产生顶端的10010个结果,然后请求节点排序这50050个结果并丢弃50040个!
  • 可以看到在分布式系统中,排序结果的花费随着分页的深入而成倍增长。这也是为什么网络搜索引擎中任何语句不能返回多于1000个结果的原因。

关于routing

  • 可以在操作文档的时候,指定用来计算路由的routing值,从而限定操作会落在哪些分片上,如果在新增文档的时候指定了routing,那么后续对这个文档的所有操作,都应该使用同样的routing值,这个技术在设计非常大的搜索系统时非常有用,例如:
    1. 新增Document ,指定routing:
      PUT /mytest/_doc/p12?routing=myrouting{"name": "2022 Mac Book 笔记本","price": 12.59,"description": "这是一款笔记本","cats": ["3c","computer"]}
    
    1. 查询的时候,也带上相同的routing值 GET /mytest/_doc/p12?routing=myrouting

关于加减符号

  • 搜索中还可以使用加减号,+前缀表示语句匹配条件必须被满足,类似的-前缀表示条件,必须不被满足。
  • 所有条件如果没有+-表示是可选的——匹配越多,相关的文档就越多,比如:GET /mytest/_search?q=+price:12.59

关于API

现在官方推荐大家使用HTTP协议的API,早期也支持TCP协议的API,不过从接口兼容角度考虑后选择废弃了。

多索引参数

  • 大多数API支持多索引查询,就是同时可以查询多个索引中的数据,例如,参数test1,test2,test3,表示同时搜索test1,test2,test3三个索引中中的数据,或者用(_all全部索引)。
  • 在参数中同时支持通配符的操作,例如test*, 表示查询所有以test开头的索引。同时也支持排除操作,例如+test*, -test3表示查询所有test开头的索引,排除test3。
  • 多索引查询还支持以下参数:
    1. ignore_unavailable:当索引不存在或者关闭的时候,是否忽略这些索引,值为true和false。
    2. allow_no_indices:当使用通配符查询时,当有索引不存在的时候是否返回查询失败。
    3. expand_wildcards:控制什么类型的索引被支持,值为open,close,none,all,open表示只支持open类型的索引,close表示只支持关闭状态的索引,none表示不可用,all表示同时支持open和close索引。
    4. 注意:文档操作API和索引别名API不支持多索引参数。

通用参数

  • pretty参数,请求的返回值是经过格式化后的JSON数据,这样阅读起来更加的方便。系统还提供了另一种格式 ?format=yaml,YAML格式,这将导致返回的结果具有可读的YAML格式。
  • human参数,对于统计数据,系统支持计算机数据,同时也支持适合人类阅读的数据,比如:计算机数据 size_in_bytes: 1024 更适合人类阅读的数据:"size": "1kb"。当 ?human=ture 的时候输出更适合人类阅读的数据,但这会消耗更多的资源,默认是false。
  • 响应过滤(filter_path)
    • 所有的返回值可以通过filter_path来减少返回值的内容,多个值可以用逗号分开。例如:
    GET /mytest/_doc/p1?filter_path=found,_source.cats
    {"found": true,"_source": {"cats": ["3c","computer"]}
    }
    
    • 它也支持通配符*匹配任何部分字段的名称,例如:
    GET /mytest/_doc/p1?filter_path=_source.*
    {"_source": {"name": "Mac Book笔记本","price": 12345,"description": "这是一款笔记本","cats": ["3c","computer"]}
    }
    
    • 我们可以用两个通配符**来匹配不确定名称的字段,例如我们可以返回Lucene版本的段信息:GET /_segments?filter_path=indices.**.version
    • 有时直接返回ES的某个字段的原始值,如_source字段。如果你想过滤_source字段,可以结合_source字段和filter_path参数。
  • 基于URL的访问控制
    • 当多用户通过URL访问ES索引的时候,为了防止用户误删除等操作,可以通过基于URL的访问控制来限制用户对某个具体索引的访问。
    • 可以在配置文件中添加参数:rest.action.multi.allow_explicit_index: false。这个参数默认为true。当为false的时候。在请求参数中指定具体索引的请求将会被拒绝。

相关文章:

ElasticSearch基本使用

title: ElasticSearch基本使用 date: 2022-08-29 00:00:00 tags: ElasticSearch基本使用 categories:ElasticSearch 基本概念 随着ES版本的升级,文中有些概念可能已经废弃。 索引词(term) 一个能够被索引的精确值,区分大小写,可以通过term查…...

windows微软商店下载应用失败/下载故障的解决办法;如何在网页上下载微软商店的应用

一、问题背景 设置惠普打印机时,需要安装hp smart,但是官方只提供微软商店这一下载渠道。 点击安装HP Smart,确定进入微软商店下载。 完全加载不出来,可能是因为开了代理。 把代理关了,就能正常打开了。 但是点击“…...

MySQL进阶篇之InnoDB存储引擎

06、InnoDB引擎 6.1、逻辑存储结构 表空间(Tablespace) 表空间在MySQL中最终会生成ibd文件,一个mysql实例可以对应多个表空间,用于存储记录、索引等数据。 段(Segment) 段,分为数据段&#x…...

商标侵权行为的种类有哪些

商标侵权行为的种类有哪些 1、商标侵权行为的种类有以下七种: (1)未经商标注册人的许可,在同一种商品上使用与其注册商标相同的商标的; (2)未经商标注册人的许可,在同一种商品上使用与其注册商标近似的商标,或者在类似商品上使…...

Similarity-Preserving KD(ICCV 2019)原理与代码解析

paper:Similarity-Preserving Knowledge Distillationcode:https://github.com/megvii-research/mdistiller/blob/master/mdistiller/distillers/SP.py背景本文的灵感来源于作者观察到在一个训练好的网络中,语义上相似的输入倾向于引起相似的…...

在Linux和Windows上安装seata-1.6.0

记录:381场景:在CentOS 7.9操作系统上,安装seata-1.6.0。在Windows上操作系统上,安装seata-1.6.0。Seata,一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。版本:JDK…...

兼职任务平台收集(二)分享给有需要的朋友们

互联网时代,给人们带来了很大的便利。信息交流、生活缴费、足不出户购物、便捷出行、线上医疗、线上教育等等很多。可以说,网络的时代会一直存在着。很多人也在互联网上赚到了第一桶金,这跟他们的努力和付出是息息相关的。所谓一份耕耘&#…...

目标检测三大数据格式VOC,YOLO,COCO的详细介绍

注:本文仅供学习,未经同意请勿转载 说明:该博客来源于xiaobai_Ry:2020年3月笔记 对应的PDF下载链接在:待上传 目录 目标检测常见数据集总结 V0C数据集(Annotation的格式是xmI) A. 数据集包含种类: B. V0C2007和V0C2012的区别…...

SpringBoot实现统一返回接口(除AOP)

起因 关于使用AOP去实现统一返回接口在之前的博客中我们已经实现了,但我突然突发奇想,SpringBoot中异常类的统一返回好像是通过RestControllerAdvice 这个注解去完成的,那我是否也可以通过这个注解去实现统一返回接口。 正文 这个方法主要…...

ChatGpt - 基于人工智能检索进行论文写作

摘要 ChatGPT 是一款由 OpenAI 训练的大型语言模型,可用于各种自然语言处理任务,包括论文写作。使用 ChatGPT 可以帮助作者提高论文的语言流畅度、增强表达能力和提高文章质量。在写作过程中,作者可以使用 ChatGPT 生成自然语言的段落、句子、单词或者短语,作为启发式的写…...

实例三:MATLAB APP design-多项式函数拟合

一、APP 界面设计展示 注:在左侧点击数据导入,选择自己的数据表,如果数据导入成功,在右侧的空白框就会显示数据导入成功。在多项式项数右侧框中输入项数,例如2、3、4等,点击计算按钮,右侧坐标框就会显示函数图像,在平均相对误差下面的空白框显示平均相对误差。...

springboot多种方式注入bean获取Bean

springboot动态注入bean1、创建Bean(demo)2、动态注入Bean3、通过注解注入Bean4、通过config配置注入Bean5、通过Import注解导入6、使用FactoryBean接口7、实现BeanDefinitionRegistryPostProcessor接口1、创建Bean(demo) Data public class Demo(){private String name;publi…...

Markdown及其语法详细介绍(全面)

文章目录一、基本语法1.标题2.段落和换行3.强调4.列表5.链接6.图片7.引用8.代码9.分割线10表格二、扩展语法1.标题锚点标题 {#anchor}2.脚注3.自动链接4.任务列表5.删除线6.表情符号7.数学公式三、Markdown 应用1.文档编辑2.博客写作3.代码笔记四、常见的工具和平台支持 Markdo…...

在Linux和Windows上安装sentinel-1.8.5

记录:380场景:在CentOS 7.9操作系统上,安装sentinel-1.8.5。在Windows上操作系统上,安装sentinel-1.8.5。Sentinel是面向分布式、多语言异构化服务架构的流量治理组件。版本:JDK 1.8 sentinel-1.8.5 CentOS 7.9官网地址…...

面试攻略,Java 基础面试 100 问(十)

StringBuffer、StringBuilder、String区别 线程安全 StringBuffer:线程安全,StringBuilder:线程不安全。 因为 StringBuffer 的所有公开方法都是 synchronized 修饰的,而 StringBuilder 并没有 synchronized 修饰。 StringBuf…...

Zero-shot(零次学习)简介

zero-shot基本概念 首先通过一个例子来引入zero-shot的概念。假设我们已知驴子和马的形态特征,又已知老虎和鬣狗都是又相间条纹的动物,熊猫和企鹅是黑白相间的动物,再次的基础上,我们定义斑马是黑白条纹相间的马科动物。不看任何斑…...

51单片机简易电阻电感电容RLC测量仪仿真设计

51单片机简易电阻电感电容RLC测量仪仿真( proteus仿真程序讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0040 51单片机简易电阻电感电容RLC测量仪仿真51单片机最小系统的相关知识复位…...

[软件工程导论(第六版)]第6章 详细设计(课后习题详解)

文章目录1 假设只有SEQUENCE和DO-WHILE两种控制结构,怎样利用它们完成 IF THEN ELSE操作?2 假设只允许使用SEQUENCE和IF-THEN-ELSE两种控制结构,怎样利用它们完成DO WHILE操作?3 画出下列伪码程序的程序流程图和盒图:4…...

【2.19】算法题2:贪心算法、动态规划、分治

题目:给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组 是数组中的一个连续部分。方法一:贪心算法原理:若当前指针所指元素之前的和小…...

【Redis】Redis 发布订阅通信模式 ( 发布订阅模式 | 订阅频道 | 发布消息 | 接收消息 )

文章目录一、发布订阅模式二、订阅频道三、发布消息四、接收消息一、发布订阅模式 Redis 中 存在一种 发布订阅 消息通信模式 : 消息发布者 : 负责发送消息 , 订阅者需要订阅该发布者频道 ;消息订阅者 : 负责接收消息 ; 订阅者 先 订阅 发布者频道 , 当 发布者 发布消息时 , …...

VNCTF 2023复现

文章目录象棋王子电子木鱼BabyGo象棋王子 签到题,直接在源码中找就ok。 找到一处编码,在控制台输出。 flag为:flag{w3lc0m3_t0_VNCTF_2023~~~} 电子木鱼 需要先理清代码逻辑。 存在三个路由。 一:/路由用来查看当前的功德数量…...

python基础知识有哪些需要背(记住是基础知识)我是初学者

大家好,小编来为大家解答以下问题,一个有趣的事情,一个有趣的事情,今天让我们一起来看看吧! 1、python基础知识有哪些需要背(记住是基础知识)我是初学者 或看好Python的广阔前景,或…...

Linux下TCP连接断开后不释放的解决办法

问题:在开发测试时发现断开与服务器端口后再次连接时拒绝连接。 分析:服务器上查看端口占用情况,假设端口为8888。 netstat -anp |grep 8888 发现端口8888端口显示被占用(ip为本机ip确定是上次连接)且状态为ESTABLI…...

1.关于嵌入式开发软件工程师的理解

学习嵌入式软件开发,首先要学会使用工具, 包括各种语言,C语言、FPGA、C等各种工具软件,各种芯片开发的IDE环境各种操作系统,Vxworks、Linux、Freertos等计算机基础,基本的框架结构,网络通信等编…...

1760字,让你拿捏 [‘列表‘]

如约而至,紧接着第一篇文章,小编将会陆续把自己精心做的全套Python笔记依次发放给大家,便于大家学习Python、期末备考、巩固基础等(这几期是公众号小插曲,后期发放编程技术的话主要还是会围绕Java来展开,感谢小伙伴们的…...

A562基于android的养老APP

需求信息: 1:家庭信息管理,包括家庭成员基本情况、性别、年龄、关系、工作单位、联系方式(手机号码、微信等); 2:个人健康数据管理,包括姓名、性别、年龄、关系、原工作单位、联系方式(手机号码…...

java面试题-并发基础

1.多线程的出现是要解决什么问题的? 本质什么?提高程序性能:单线程程序只能按照固定的顺序依次执行每个任务,无法同时处理多个任务。多线程技术可以在同一时间内执行多个任务,从而提高程序的运行效率和响应速度。提高程序的并发性&#xff…...

用纯C语言实现3D空间中的点坐标转化为屏幕二维点坐标,包含主视图、侧视图、俯视图、正等轴投影

要实现3D空间中的点坐标转换为屏幕二维点坐标,需要进行透视变换和投影变换。以下是一些基本的思路和示例代码,可以用于实现主视图、侧视图、俯视图、正等轴投影。 1. 主视图投影 主视图投影是指以一个点作为视点,从一个方向观察物体&#x…...

.sh脚本文件的执行方式

方法1: ./xxx.sh方法2: source xxx.sh方法3: bash xxx.sh方法4: sh xxx.sh初识shell,学习并记录...

Android 基础知识4-2.5View与VIewGroup的概念、关系与区别

1.概念: Android里的图形界面都是由View和ViewGroup以及他们的子类构成的: View:所有可视化控件的父类,提供组件描绘和时间处理方法 ViewGroup: View类的子类,可以拥有子控件,可以看作是容器 Android UI中的控件都是…...

彩票网站招代理广告怎么做/还有哪些平台能免费营销产品

科普:揭秘手机软件自启原理 2014-07-26 11:32 原创 郝晓茹 4条评论 一些手机软件不是用户主动运行的,那么它到底是如何自己运行起来的呢?接下来我们将简单讲讲软件自启的方式和原理。(以下内容有些偏技术,读起来可能有…...

项城网站建设/模板建站的网站

思维导图 头文件代码实现&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #define ROW 3 #define COL 3 void InitBroad(char board[ROW][COL], int row, int col);//声明初始化棋盘为空格&#xff1b; void DispalyBoard(char board[ROW][COL], int r…...

wordpress手机号码插件/百度推广有哪些售后服务

我们的家庭宽带光猫软件会定期进行升级&#xff0c;推送及更新一些新的插件&#xff0c;下面来说说光猫几个内置插件的作用及功能&#xff1b;用户无法对插件进行操作&#xff0c;默认光猫开机后&#xff0c;插件就开始运行了&#xff0c;这些插件都需要通过INTERNET连接出去&a…...

网站如何做搜索/西安网络seo公司

随着软件开发日趋国际化&#xff0c;对软件的质量要求和管理也随之增高。微软看到了应用程序生命周期管理在业界逐渐被接受认可的趋势。在微软VS2010&#xff08;Visual Studio 2010 Ultimate&#xff09;中&#xff0c;可以利用各种工具辅助每个关键环节进行管理&#xff08;A…...

取消wordpress还原/seo同行网站

实现多操作系统计算机的资源共享.pdf2004年6月 电 脑 学 习 第3期实现多操作系统计算机的资源共享赵晓静 孙全尚可矧摘 要 阐述在一台多操作系统计算机上共享应用程序、IE资源以及Ou‰kExpress电子邮件的方法。多操作系统 资源共享 Windows98 Willdows2000IE Oudook关键词 Expr…...

宁波做网站的大公司排名/如何优化网站

在asp.net mvc2.0中做开发&#xff0c;model 中包含泛型的字段字段的情况很常见&#xff0c;但网上一直很难找到相关的例子&#xff0c;没办法&#xff0c;只能自己摸索。分享如下。 代码&#xff1a; <table class"checkBoxList"> …...