Elasticsearch

通用能力

  • 查看文档数量
GET http://192.168.1.243:9200/_count{"query": {"match_all": {}}
}<<{"count": 272053,"_shards": {"total": 2,"successful": 2,"skipped": 0,"failed": 0}
}
  • 集群健康
GET /_cluster/health<<{"cluster_name":          "elasticsearch","status":                "green", "timed_out":             false,"number_of_nodes":       1,"number_of_data_nodes":  1,"active_primary_shards": 0,"active_shards":         0,"relocating_shards":     0,"initializing_shards":   0,"unassigned_shards":     0
}status 字段指示着当前集群在总体上是否工作正常。它的三种颜色含义如下:green
所有的主分片和副本分片都正常运行。
yellow
所有的主分片都正常运行,但不是所有的副本分片都正常运行。
red
有主分片没能正常运行。

创建数据和检索

  • 创建记录
PUT http://192.168.1.243:9200/megacorp/employee/1
-----------------------------索引名称---类型名称---ID--------------------------{"first_name" : "John","last_name" :  "Smith","age" :        25,"about" :      "I love to go rock climbing","interests": [ "sports", "music" ]
}<<{"_index": "megacorp","_type": "employee","_id": "1","_version": 1,"result": "created","_shards": {"total": 2,"successful": 1,"failed": 0},"_seq_no": 0,"_primary_term": 1
}如果想让 ES 自动创建 ID 请把 PUT 方法换成 POST, 自动生成的 ID 是 URL-safe、 基于 Base64 编码且长度为20个字符的 GUID 字符串。 这些 GUID 字符串由可修改的 FlakeID 模式生成,这种模式允许多个节点并行生成唯一 ID ,且互相之间的冲突概率几乎为零。
  • HEAD 方法检查文档是否存在
  • 更新文档
PUT /website/blog/123
{"title": "My first blog entry","text":  "I am starting to get the hang of this...","date":  "2014/01/02"
}
  • 删除文档
DELETE /website/blog/123
  • ID 查询
GET http://192.168.1.243:9200/megacorp/employee/1<<{"_index": "megacorp","_type": "employee","_id": "1","_version": 1,"_seq_no": 0,"_primary_term": 1,"found": true,"_source": {"first_name": "John","last_name": "Smith","age": 25,"about": "I love to go rock climbing","interests": ["sports","music"]}
}返回文档的一部分
GET http://192.168.1.243:9200/megacorp/employee/1?_source=first_name,age只要 _source 不要元数据GET /website/blog/123/_source
  • 检索
http://192.168.1.243:9200/precisiongenes_search_engine/_search<<{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 10000,"relation": "gte"},"max_score": 1.0,"hits": [{"_index": "precisiongenes_search_engine","_type": "_doc","_id": "bd3ad591114e491938b8a7ff8f8932e3","_score": 1.0,"_source": {"Chr": "11","Start": "119216858","End": "119216858","Ref": "G","Alt": "A","HGMD_acc": "CM1926607","HGMD_Disease": "Nanophthalmos","HGMD_tag": "DM","HGMD_rankscore": "0.99","HGMD_Base": "CGA-TGA","HGMD_HGVS": "MFRP:NM_031433.4:c.169C>T:NP_113621.1:p.R57*","HGMD_Mutation_URL": "CGA-TGA|Arg57Term|c.169C>T|- (http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=PubMed&amp;list_uids=31589614&amp;dopt=Abstract)","HGMD_PmidAll": "NULL\n"}}]}
}
  • 搜索条件
http://192.168.1.243:9200/precisiongenes_search_engine/_search?q=HGMD_Mutation_URL:CGA-TGA<<{"took": 25,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 10000,"relation": "gte"},"max_score": 6.579259,"hits": [{"_index": "precisiongenes_search_engine","_type": "_doc","_id": "bd3ad591114e491938b8a7ff8f8932e3","_score": 6.579259,"_source": {"Chr": "11","Start": "119216858","End": "119216858","Ref": "G","Alt": "A","HGMD_acc": "CM1926607","HGMD_Disease": "Nanophthalmos","HGMD_tag": "DM","HGMD_rankscore": "0.99","HGMD_Base": "CGA-TGA","HGMD_HGVS": "MFRP:NM_031433.4:c.169C>T:NP_113621.1:p.R57*","HGMD_Mutation_URL": "CGA-TGA|Arg57Term|c.169C>T|- (http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=PubMed&amp;list_uids=31589614&amp;dopt=Abstract)","HGMD_PmidAll": "NULL\n"}}]}
}
  • 查询表达式
GET http://192.168.1.243:9200/precisiongenes_search_engine/_search
BODY
{"query" : {"match" : {"last_name" : "Smith"}}
}<<{"took": 7,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 10000,"relation": "gte"},"max_score": 6.579259,"hits": [{"_index": "precisiongenes_search_engine","_type": "_doc","_id": "bd3ad591114e491938b8a7ff8f8932e3","_score": 6.579259,"_source": {"Chr": "11","Start": "119216858","End": "119216858","Ref": "G","Alt": "A","HGMD_acc": "CM1926607","HGMD_Disease": "Nanophthalmos","HGMD_tag": "DM","HGMD_rankscore": "0.99","HGMD_Base": "CGA-TGA","HGMD_HGVS": "MFRP:NM_031433.4:c.169C>T:NP_113621.1:p.R57*","HGMD_Mutation_URL": "CGA-TGA|Arg57Term|c.169C>T|- (http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&amp;db=PubMed&amp;list_uids=31589614&amp;dopt=Abstract)","HGMD_PmidAll": "NULL\n"}}]}
}
  • 更复杂的搜索
GET /megacorp/employee/_search
{"query" : {"bool": {"must": {"match" : {"last_name" : "smith" }},"filter": {"range" : {"age" : { "gt" : 24 } }}}}
}<<{"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation": "eq"},"max_score": 0.2876821,"hits": [{"_index": "megacorp","_type": "employee","_id": "1","_score": 0.2876821,"_source": {"first_name": "John","last_name": "Smith","age": 25,"about": "I love to go rock climbing","interests": ["sports","music"]}}]}
}
  • 短语搜索
GET /megacorp/employee/_search
{"query" : {"match_phrase" : {"about" : "rock climbing"}}
}<<{..."hits": {"total":      1,"max_score":  0.23013961,"hits": [{..."_score":         0.23013961,"_source": {"first_name":  "John","last_name":   "Smith","age":         25,"about":       "I love to go rock climbing","interests": [ "sports", "music" ]}}]}
}
  • 高亮搜索
GET /megacorp/employee/_search
{"query" : {"match_phrase" : {"about" : "rock climbing"}},"highlight": {"fields" : {"about" : {}}}
}<<{..."hits": {"total":      1,"max_score":  0.23013961,"hits": [{..."_score":         0.23013961,"_source": {"first_name":  "John","last_name":   "Smith","age":         25,"about":       "I love to go rock climbing","interests": [ "sports", "music" ]},"highlight": {"about": ["I love to go <em>rock</em> <em>climbing</em>" ]}}]}
}
  • 聚合分析
GET /megacorp/employee/_search
{
// ------- query 可以不带---------"query": {"match": {"last_name": "smith"}},
// ------------------------------"aggs": {"all_interests": {"terms": { "field": "interests" }}}
}<<{..."hits": { ... },"aggregations": {"all_interests": {"buckets": [{"key":       "music","doc_count": 2},{"key":       "forestry","doc_count": 1},{"key":       "sports","doc_count": 1}]}}
}
  • 聚合分析-分级汇总
查询特定兴趣爱好员工的平均年龄GET /megacorp/employee/_search
{"aggs" : {"all_interests" : {"terms" : { "field" : "interests" },"aggs" : {"avg_age" : {"avg" : { "field" : "age" }}}}}
}<<..."all_interests": {"buckets": [{"key": "music","doc_count": 2,"avg_age": {"value": 28.5}},{"key": "forestry","doc_count": 1,"avg_age": {"value": 35}},{"key": "sports","doc_count": 1,"avg_age": {"value": 25}}]}

最牛的功能——搜索

  • 空搜索
GET /_search   GET /_search?timeout=10ms
  • 多索引,多类型
/_search
在所有的索引中搜索所有的类型
/gb/_search
在 gb 索引中搜索所有的类型
/gb,us/_search
在 gb 和 us 索引中搜索所有的文档
/g*,u*/_search
在任何以 g 或者 u 开头的索引中搜索所有的类型
/gb/user/_search
在 gb 索引中搜索 user 类型
/gb,us/user,tweet/_search
在 gb 和 us 索引中搜索 user 和 tweet 类型
/_all/user,tweet/_search
在所有的索引中搜索 user 和 tweet 类型
  • 分页
GET /_search?size=5
GET /_search?size=5&from=5
GET /_search?size=5&from=10

轻量搜索

查询在 tweet 类型中 tweet 字段包含 elasticsearch 单词的所有文档
GET /_all/tweet/_search?q=tweet:elasticsearch查询在 name 字段中包含 john 并且在 tweet 字段中包含 mary 的文档
+name:john +tweet:mary
但是查询字符串参数所需要的 百分比编码:
GET /_search?q=%2Bname%3Ajohn+%2Btweet%3Amary+ 前缀表示必须与查询条件匹配。类似地, - 前缀表示一定不与查询条件匹配。没有 + 或者 - 的所有其他条件都是可选的——匹配的越多,文档就越相关。
  • _all 字段
GET /_search?q=mary
当索引一个文档的时候,Elasticsearch 取出所有字段的值拼接成一个大的字符串,作为 _all 字段进行索引
+name:(mary john) +date:>2014-09-10 +(aggregations geo)name 字段中包含 mary 或者 john
date 值大于 2014-09-10
_all 字段包含 aggregations 或者 geo?q=%2Bname%3A(mary+john)+%2Bdate%3A%3E2014-09-10+%2B(aggregations+geo)

映射和分析

基于对字段类型的猜测, Elasticsearch 动态为我们产生一个映射,由于 _all 是默认字段,所以没有提及它。但是我们知道 _all 字段是 string 类型的。

Elasticsearch 支持如下简单域类型:

  • 字符串: string
  • 整数 : byte, short, integer, long
  • 浮点数: float, double
  • 布尔型: boolean
  • 日期: date

这意味着如果你通过引号( "123" )索引一个数字,它会被映射为 string 类型,而不是 long 。但是,如果这个域已经映射为 long ,那么 Elasticsearch 会尝试将这个字符串转化为 long ,如果无法转化,则抛出一个异常。

查看类型 http://36.152.126.130:9200/megacorp/_mapping/

自定义域映射-跳过

index

index 属性控制怎样索引字符串。它可以是下面三个值:

  • analyzed

    首先分析字符串,然后索引它。换句话说,以全文索引这个域。

  • not_analyzed

    索引这个域,所以它能够被搜索,但索引的是精确值。不会对它进行分析。

  • no

    不索引这个域。这个域不会被搜索到。

查询与过滤

  • 过滤情况 :查询被设置成一个“不评分”或者“过滤”查询;只是简单的检查包含或者排除,这就使得计算起来非常快,结果会被缓存到内存中以便快速读取。

  • 查询情况 :查询就变成了一个“评分”的查询;不仅仅要找出匹配的文档,还要计算每个匹配文档的相关性,计算相关性使得它们比不评分查询费力的多。同时,查询结果并不缓存。

语句

  • match_all 查询简单的匹配所有文档。在没有指定查询方式时,它是默认的查询
{ "match_all": {}}
  • match如果你在一个全文字段上使用 match 查询,在执行查询前,它将用正确的分析器去分析查询字符串;如果在一个精确值的字段上使用它,例如数字、日期、布尔或者一个 not_analyzed 字符串字段,那么它将会精确匹配给定的值。
{ "match": { "tweet": "About Search" }}{ "match": { "age":    26           }}
{ "match": { "date":   "2014-09-01" }}
{ "match": { "public": true         }}
{ "match": { "tag":    "full_text"  }}
  • query 对于精确值的查询,你可能需要使用 filter 语句来取代 query,因为 filter 将会被缓存。

  • multi_match 查询可以在多个字段上执行相同的 match 查询。

{"multi_match": {"query":    "full text search","fields":   [ "title", "body" ]}
}
  • range 查询找出那些落在指定区间内的数字或者时间
{"range": {"age": {"gte":  20,"lt":   30}}
}
  • term 查询被用于精确值匹配,这些精确值可能是数字、时间、布尔或者那些 not_analyzed 的字符串
{ "term": { "age":    26           }}
{ "term": { "date":   "2014-09-01" }}
{ "term": { "public": true         }}
{ "term": { "tag":    "full_text"  }}
  • 字符串被索引的时候是被 analyzed 的,有一些关键自负的丢失,不支持精确索引,而且一旦被 analysis 将不能再转变为 not_analyzed

查看 analyzed 的结果:

GET /my_store/_analyze
{"field": "productID","text": "XHDK-A-1293-#fJ3"
}<<<{"tokens" : [ {"token" :        "xhdk","start_offset" : 0,"end_offset" :   4,"type" :         "<ALPHANUM>","position" :     1}, {"token" :        "a","start_offset" : 5,"end_offset" :   6,"type" :         "<ALPHANUM>","position" :     2}, {"token" :        "1293","start_offset" : 7,"end_offset" :   11,"type" :         "<NUM>","position" :     3}, {"token" :        "fj3","start_offset" : 13,"end_offset" :   16,"type" :         "<ALPHANUM>","position" :     4} ]
}Elasticsearch 用 4 个不同的 token 而不是单个 token 来表示这个 UPC 。
所有字母都是小写的。
丢失了连字符和哈希符#所以当我们用 term 查询查找精确值 XHDK-A-1293-#fJ3 的时候,找不到任何文档,因为它并不在我们的倒排索引中,正如前面呈现出的分析结果,索引里有四个 token 。

此时只能删除索引重新创建映射然后重建数据来支持精确索引

DELETE /my_store PUT /my_store
{"mappings" : {"products" : {"properties" : {"productID" : {"type" : "string","index" : "not_analyzed" }}}}}
  • terms 查询和 term 查询一样,但它允许你指定多值进行匹配。**一定要了解 termterms包含(contains) 操作,而非 等值(equals) (判断)。 **精确相等的话,解决方法是创建另一个辅助字段。
{ "terms": { "tag": [ "search", "full_text", "nosql" ] }}{"terms" : {"price" : [20, 30]}
}
  • exists 查询和 missing 查询被用于查找那些指定字段中有值 (exists) 或无值 (missing) 的文档。这与SQL中的 IS_NULL (missing) 和 NOT IS_NULL (exists) 在本质上具有共性,这些查询经常用于某个字段有值的情况和某个字段缺值的情况。
{"exists":   {"field":    "title"}
}
  • 组合多查询

    • must

      文档 必须 匹配这些条件才能被包含进来。

    • must_not

      文档 必须不 匹配这些条件才能被包含进来。

    • should

      如果满足这些语句中的任意语句,将增加 _score ,否则,无任何影响。它们主要用于修正每个文档的相关性得分。

    • filter

      必须 匹配,但它以不评分、过滤模式来进行。这些语句对评分没有贡献,只是根据过滤标准来排除或包含文档。

复合(Compound) 语句 主要用于 合并其它查询语句。 比如,一个 bool 语句 允许在你需要的时候组合其它语句,无论是 must 匹配、 must_not 匹配还是 should 匹配,同时它可以包含不评分的过滤器(filters){"bool": {"must":     { "match": { "tweet": "elasticsearch" }},"must_not": { "match": { "name":  "mary" }},"should":   { "match": { "tweet": "full text" }},"filter":   { "range": { "age" : { "gt" : 30 }} }}
}找出信件正文包含 business opportunity 的星标邮件,或者在收件箱正文包含 business opportunity 的非垃圾邮件
{"bool": {"must": { "match":   { "email": "business opportunity" }},"should": [{ "match":       { "starred": true }},{ "bool": {"must":      { "match": { "folder": "inbox" }},"must_not":  { "match": { "spam": true }}}}],"minimum_should_match": 1}
}如果我们不想因为文档的时间而影响得分,可以用 filter 语句来重写前面的例子{"bool": {"must":     { "match": { "title": "how to make millions" }},"must_not": { "match": { "tag":   "spam" }},"should": [{ "match": { "tag": "starred" }}],"filter": {"range": { "date": { "gte": "2014-01-01" }} }}
}range 查询已经从 should 语句中移到 filter 语句, 通过将 range 查询移到 filter 语句中,我们将它转成不评分的查询,将不再影响文档的相关性排名。由于它现在是一个不评分的查询,可以使用各种对 filter 查询有效的优化手段来提升性能。{"bool": {"must":     { "match": { "title": "how to make millions" }},"must_not": { "match": { "tag":   "spam" }},"should": [{ "match": { "tag": "starred" }}],"filter": {"bool": { "must": [{ "range": { "date": { "gte": "2014-01-01" }}},{ "range": { "price": { "lte": 29.99 }}}],"must_not": [{ "term": { "category": "ebooks" }}]}}}
}
  • constant_score term 查询被放置在 constant_score 中,转成不评分的 filter。这种方式可以用来取代只有 filter 语句的 bool 查询。

    {"constant_score":   {"filter": {"term": { "category": "ebooks" } }}
    }
  • 验证查询

validate-query API 可以用来验证查询是否合法。

GET /gb/tweet/_validate/query?explain
{"query": {"tweet" : {"match" : "really powerful"}}
}<<{"valid" :     false,"_shards" :   { ... },"explanations" : [ {"index" :   "gb","valid" :   false,"error" :   "org.elasticsearch.index.query.QueryParsingException:[gb] No query registered for [tweet]"} ]
}

排序

ES 默认通过 _score 降序排列,可以调整排序字段,如果调整到其他字段就不再计算 score 值。

  • 排序
GET /_search
{"query" : {"bool" : {"filter" : { "term" : { "user_id" : 1 }}}},"sort": { "date": { "order": "desc" }}
}
  • 多级排序,结果首先按第一个条件排序,仅当结果集的第一个 sort 值完全相同时才会按照第二个条件进行排序,以此类推。
GET /_search
{"query" : {"bool" : {"must":   { "match": { "tweet": "manage text search" }},"filter" : { "term" : { "user_id" : 2 }}}},"sort": [{ "date":   { "order": "desc" }},{ "_score": { "order": "desc" }}]
}Query-string 搜索 也支持自定义排序,可以在查询字符串中使用 sort 参数:GET /_search?sort=date:desc&sort=_score&q=search
  • 多值字段排序, 对于数字或日期,你可以将多值字段减为单值,这可以通过使用 minmaxavg 或是 sum 排序模式
"sort": {"dates": {"order": "asc","mode":  "min"}
}

相关性

Elasticsearch 的相似度算法被定义为检索词频率/反向文档频率, TF/IDF ,包括以下内容:

  • 检索词频率

    检索词在该字段出现的频率?出现频率越高,相关性也越高。 字段中出现过 5 次要比只出现过 1 次的相关性高。

  • 反向文档频率

    每个检索词在索引中出现的频率?频率越高,相关性越低。检索词出现在多数文档中会比出现在少数文档中的权重更低。

  • 字段长度准则

    字段的长度是多少?长度越长,相关性越低。 检索词出现在一个短的 title 要比同样的词出现在一个长的 content 字段权重更大。

单个查询可以联合使用 TF/IDF 和其他方式,比如短语查询中检索词的距离或模糊查询里的检索词相似度。

分析器(晚点看)


http://www.taodudu.cc/news/show-6768069.html

相关文章:

  • linux cat | grep 查找日志常用命令
  • TCP/IP异常 java.io.IOException
  • 知识点 | 数据仓库中的 ods ,dw,dm分别是个啥?
  • 下载生成af-only-gnomad.hg19.vcf.gz文件
  • HGMD数据库简介
  • 尚硅谷云原生学习笔记(76~143集)
  • 【尚硅谷云原生Java架构师的第一课 4 2021-09-28】KubeSphere三种安装,docker,k8s,nfs安装,metrics。KubeKey一键单 多节点安装。
  • k8s部署手册-v04
  • 云原生 | Kubernetes - kube-scheduler
  • k8s-v1.20.10 二进制部署指导文档
  • 内网环境下手动部署kubernetes(v1.26.3)高可用集群
  • 云原生扫盲
  • k8s集群部署 | 三节点(复用)高可用集群过程参考
  • k8s集群部署 | 二进制三节点(复用)高可用集群部署过程
  • OpenEuler安装Kubernetes+KubeSphere教程
  • 人工智能正处在一个转折点
  • 数据倾斜原因和解决方案
  • 人工智能---梯度下降的原理和手写实现
  • 为什么说人机融合智能就是强人工智能?
  • 对于数据倾斜的思考
  • 解决数据倾斜
  • 干货!AI与自动驾驶─人工智能有可能实现人类智能的挑战性任务吗
  • 笔记,人工智能,梯度下降法
  • 【人工智能】从梯度下降算法到人工神经网络
  • 关于数据倾斜
  • 非人工智能方向粗糙理解深度学习
  • Vue3通透教程【十四】TS复杂类型详解(一)
  • easypoi导入复杂表头Excel
  • 复杂的数据类型(数组,指针)
  • 如何写复杂的SQL

2022-04-21 ElasticSearch 学习笔记相关推荐

  1. 古月ROS入门21讲学习笔记

    古月ROS入门21讲学习笔记 1.VMware+Ubuntu18.04+ROS安装 2.Linux命令 3.ROS是什么 ROS中的通信机制 ROS的开发工具 ROS的应用功能 ROS中的生态系统 老 ...

  2. 黑马程序员--分布式搜索ElasticSearch学习笔记

    写在最前 黑马视频地址:https://www.bilibili.com/video/BV1LQ4y127n4/ 想获得最佳的阅读体验,请移步至我的个人博客 SpringCloud学习笔记 消息队列M ...

  3. elasticSearch学习笔记04-同义词,停用词,拼音,高亮,拼写纠错

    由于elasticSearch版本更新频繁,此笔记适用ES版本为 7.10.2 此笔记摘录自<Elasticsearch搜索引擎构建入门与实战>第一版 文中涉及代码适用于kibana开发工 ...

  4. 古月居ROS入门21讲学习笔记P9

    古月居ROS入门21讲学习笔记P9 工作空间(workspace) 创建工作空间 创建功能包 实操 创建工作空间 创建功能包 老师在B站的原视频 链接: [古月居]古月·ROS入门21讲 | 一学就会 ...

  5. ScalersTalk 机器学习小组第 21 周学习笔记(深度学习-10)

    ScalersTalk 机器学习小组第 21 周学习笔记(深度学习-10) Scalers点评:机器学习小组是成长会的内部小组,这是成长会机器学习小组第21周学习笔记,也是深度学习第10次的复盘笔记 ...

  6. ElasticSearch 学习笔记:Multi Search

    本文目录 1 简介 2 格式 3 header格式 4 body格式 5 返回格式 6 性能 7 相关文章 1 简介 批量查询接口(Multi Search API)允许在一次请求中执行多个查询操作, ...

  7. ElasticSearch学习笔记-ngram、中文拼音、简繁体搜索记录

    ElasticSearch版本:elasticsearch-7.3.0 ElasticSearch相关插件安装可以参考: ElasticSearch学习笔记-插件安装记录_人生偌只如初见的博客-CSD ...

  8. ElasticSearch学习笔记之十一 Anayle API和IK分词器

    ElasticSearch学习笔记之十一 Anayle API和IK分词器 Anayle API IK分词器 IK分词器版本支持 安装 下载或者编译 选择一 选择二 重启ElasticSearch I ...

  9. ElasticSearch学习笔记之二十一 指标聚合

    ElasticSearch学习笔记之二十一 指标聚合 指标聚合 Avg Aggregation Script Value Script Missing value Weighted Avg Aggre ...

  10. ElasticSearch学习笔记(8)· ES集群的搭建

    目录 十三.集群的实现 1.相关概念 集群(cluster) 节点(node) 分配和复制(shards & replicas) 2.快速搭建集群 3.安装head插件 十三.集群的实现 1. ...

最新文章

  1. C#面向对象设计模式纵横谈
  2. 在Castle中使用nhibernate
  3. 计算机文化理论基础考试单机版,计算机文化基础授课计划表
  4. iOS地图之MapKit框架
  5. 洛谷——P1319 压缩技术
  6. itext生成pdf间距_跳过APP打开pdf的烦恼,服务端直接将pdf转图片,别踩乱码之坑...
  7. 安装设备驱动程序Android,手机adb驱动安装(Universal Adb Driver)
  8. 51单片机之 IE,TCON,TMOD 寄存器 (超详细解读-内含详细代码)
  9. win10登陆界面如何截屏
  10. 完全背包问题(Java)
  11. SELinux audit2allow命令使用
  12. 用PS怎样把图片改为100k的图片
  13. 截止失真放大电路_模电必学基本放大电路
  14. 中文的括号和英文的括号区别_如何在word里快捷键入六角括号
  15. HTML+CSS基础知识04
  16. java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType的解决方案之一
  17. 面试:WebSocket相关
  18. 实际经历告诉你,写一本技术书能赚多少钱(转)
  19. [数据集][VOC]高质量的目标检测数据集合集(持续更新)
  20. 命里有时终须有与我命由我不由天

热门文章

  1. 发生认识论――图式的概念
  2. 网站后台管理-登录页面
  3. Sonic--开源云真机测试平台
  4. android 未找到命令,ANDROID NDK – android:命令未找到
  5. 科达 MTS转码服务器 任意文件读取漏洞
  6. 使用模板报表提高生产力,水晶报表 10 模板技术
  7. .Net Core-做一个微信公众号的排队系统
  8. 2023太原理工大学计算机考研信息汇总
  9. 范数 --python
  10. C语言中的小知识1~20