第九周作业总结
JVM
JVM(java 虚拟机)就是一层用软件实现的物理机。Java 当年主打的核心特征就是:Write Once Run Anywhere;通俗来说就是编译器将 Java 文件编译成.class,通过 JVM 加载并执行这些.class 文件;这种执行文件放在所有平台的 JVM 上都拥有相同的产出
Java 代码优化
线程安全问题:在多个线程并发环境下,多个线程共同访问同一共享内存资源时,在其中一个线程对资源进行写操作的途中,其他线程对这个写了一半的资源进⾏了读操作,或者对这个写了一半的资源进⾏了写操作,最后导致此资源出现数据错误的情况。
内存泄漏
内存泄漏:当应用程序不再使用对象时发生的情况,但是垃圾回收器无法将其从工作内存中删除,因为它们仍在被引用。因此,应用程序会消耗越来越多的资源,最终导致致命的 OutOfMemoryError。
搜索引擎
倒排索引,也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。
一般数据库通常基于 Forward Index,即以文档 ID 作为索引,以文档内容作为记录。而 Inverted index 指的是将单词或记录作为索引,将文档 ID 作为记录,这样便可以方便地通过单词或记录查找到其所在的文档。
Lucene 架构
Lucene 是一套用于全文检索和搜索的开放源码程序库,由 Apache 软件基金会支持和提供。Lucene 提供了一个简单却强大的应用程序接口,能够做全文索引和搜索。
ElasticSearch 架构
Elasticsearch 是一个基于 Lucene 库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。
Elasticsearch 是分布式的,这意味着索引可以被分成分片,每个分片可以有 0 个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。
评论