From 8e05a1ea10de719e1dc40b152b32a40270e07ce7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E6=B5=8E=E8=8A=9D?= Date: Wed, 24 Jul 2024 17:03:37 +0800 Subject: [PATCH] =?UTF-8?q?feat(post):=20=E5=AE=8C=E5=96=84=E6=96=87?= =?UTF-8?q?=E7=AB=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Elasticsearch\350\257\246\350\247\243.md" | 205 +++++------ ...77\347\224\250\346\212\200\345\267\247.md" | 106 +++--- blog-site/public/index.xml | 2 +- blog-site/public/page/6/index.html | 2 +- .../public/posts/essays/dev-idea/index.html | 120 ++++--- .../essays/java-elasticsearch/index.html | 332 +++++------------- blog-site/public/posts/index.html | 2 +- blog-site/public/posts/index.xml | 4 +- blog-site/public/tags/elasticsearch/index.xml | 2 +- .../index.xml" | 2 +- .../tags/\350\257\246\350\247\243/index.xml" | 2 +- docs/index.xml | 4 +- docs/page/6/index.html | 4 +- docs/posts/essays/dev-idea/index.html | 120 ++++--- .../essays/java-elasticsearch/index.html | 332 +++++------------- docs/posts/index.html | 2 +- docs/posts/index.xml | 4 +- .../tags/\351\232\217\347\254\224/index.html" | 2 +- .../tags/\351\232\217\347\254\224/index.xml" | 4 +- 19 files changed, 482 insertions(+), 769 deletions(-) diff --git "a/blog-site/content/posts/essays/Elasticsearch\350\257\246\350\247\243.md" "b/blog-site/content/posts/essays/Elasticsearch\350\257\246\350\247\243.md" index 56a71d9e..fcaeef38 100644 --- "a/blog-site/content/posts/essays/Elasticsearch\350\257\246\350\247\243.md" +++ "b/blog-site/content/posts/essays/Elasticsearch\350\257\246\350\247\243.md" @@ -193,122 +193,125 @@ shard = hash(routing) % number_of_primary_shards 5. 协调节点最终返回的结果可能包括主分片的最新数据和副本分片的同步数据。这样,即使副本分片尚未完全更新,客户端也能收到最新的数据或正确的查询结果。 ## 原理 -[//]: # (写到了这里) -分片是`Elasticsearch`最小的工作单元。传统的数据库每个字段存储单个值,但这对全文检索并不够。文本字段中的每个单词需要被搜索,对数据库意味着需要单个字段有索引多值的能力。最好的支持是一个字段多个值需求的数据结构是倒排索引。 +`Elasticsearch`通过将数据存储为JSON格式的文档,并把这些文档组织到索引中来工作。每个索引被拆分成多个主分片,这些分片负责存储数据并处理查询。 +为了提高性能和可靠性,主分片有副本分片,这些副本分片用于备份数据并分担查询负载。 + +`Elasticsearch`使用倒排索引来加速搜索,这种索引方法将文档的字段值映射到包含这些值的文档列表,使得查询速度非常快。 +数据在主分片中被分成多个段,段是固定的数据块,存储了倒排索引和实际数据。为了保持性能,系统定期刷新数据,将内存中的变更写入磁盘,并通过合并小段文件来优化存储空间和查询速度。 ### 倒排索引 -Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。 +`Elasticsearch`使用一种称为倒排索引的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。 +倒排索引也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过`key`找`value`,反向索引则是通过`value`找`key`。 + +它的基本原理是将文档的内容映射到一个倒排列表中,便于快速查找包含特定词汇的文档。 +倒排表记录了,出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项。根据倒排列表,即可获知哪些文档包含某个单词。 + +假设有一个小型的文本数据库,其中包含三个文档: +- 文档1:`"Elasticsearch is a search engine"` +- 文档2:`"Elasticsearch uses inverted index"` +- 文档3:`"Search engine uses inverted index"` -倒排索引示例: +从这些文档中提取出所有独特的词汇,形成一个词汇表。假设词汇表包括这些词: ```text -| value | key | -|----------|-------------------| -| my name is zhangsan | 1001 | +"Elasticsearch" +"is" +"a" +"search" +"engine" +"uses" +"inverted" +"index" ``` - -```text -| key | value| -|---------|------| -| name | 1001 | -| zhang | 1001 | -| zhangsan| 1001 | -``` -倒排索引搜索过程: 查询单词是否在词典中,如果不在搜索结束,如果在词典中需要查询单词在倒排列表中的指针,获取单词对应的文档ID,根据文档ID查询时哪一条数据 +倒排列表为每个词汇创建一个倒排列表,记录这个词汇出现在哪些文档中。例如: +- `"Elasticsearch"`:出现于文档1和文档2; +- `"search"`:出现于文档1和文档3; +- `"engine"`:出现于文档1和文档3; +- `"inverted"`:出现于文档2和文档3; +- `"index"`:出现于文档2和文档3; -词条: 索引中最小的存储和查询单元 -词典: 词条的集合;一般用hash表或B+tree存储 -倒排表: 记录了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项.根据倒排列表,即可获知哪些文档包含某个单词. +倒排索引搜索时,先查询单词是否在词汇表中,如果不在则搜索结束。如果在词汇表中需要查询单词在倒排列表中的指针,获取单词对应的文档ID,根据文档ID查询时哪一条数据。 +倒排索引将每个词汇映射到包含该词汇的文档列表中。这样,查询时系统无需遍历所有文档,只需查找词汇的倒排列表,即可快速找到相关文档。相比逐个检查每个文档,查找倒排列表速度更快。 ### 分析器 -倒排索引总是和分词分不开的,中文分词和英文分词是不一样的,所以就需要分析器. - -分析器的主要功能是将一块文本分成适合于倒排索引的独立词条,分析器组成: -- 字符过滤器: 在分词前整理字符串,一个字符过滤器可以用来去掉 HTML,或者将 & 转化成 and; -- 分词器: 字符串被分词器分为单个的词条,一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条; -- 词单元过滤器: 按顺序通过每个过滤器,这个过程可能会改变词条(例如,小写化Quick ),删除词条(例如, 像 a, and, the 等无用词),或者增加词条(例如,像jump和leap这种同义词); - -Elasticsearch附带了可以直接使用的预包装的分析器: -- 标准分析器: 默认使用的分析器。它是分析各种语言文本最常用的选择。它根据Unicode 联盟定义的单词边界划分文本。删除绝大部分标点; -- 简单分析器: 在任何不是字母的地方分隔文本,将词条小写; -- 空格分析器: 在空格的地方划分文本; -- 语言分析器: 考虑指定语言的特点,根据语法进行分词; 例如,英语分析器附带了一组英语无用词(常用单词,例如and或者the ,它们对相关性没有多少影响),它们会被删除; - -常用中文分词器: [ik分词器](https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0), 将解压后的后的文件夹放入 ES 根目录下的 plugins 目录下,重启 ES 即可使用. - - -### 文档搜索 -早期的全文检索会为整个文档集合建立一个很大的倒排索引并将其写入到磁盘。 被写入的索引不可变化,一旦新的索引就绪,旧的就会被其替换.如果你需要让一个新的文档可被搜索,你需要重建整个索引。这要么对一个索引所能包含的数据量造成了很大的限制,要么对索引可被更新的频率造成了很大的限制。 +倒排索引总是和分词分不开的,不同语言的分词方式也有所不同。分析器在`Elasticsearch`中负责将文本数据转换成适合于倒排索引的形式。 + +分析器的主要功能是将一块文本分成适合于倒排索引的独立词条,分析器组成: +- 字符过滤器:主要功能为对输入文本进行预处理,修改或删除字符。在分词前整理字符串,比如字符过滤器可以用来去掉`HTML`或者将`&`转化成`and`; +- 分词器:它的主要作用是将处理后的文本分割成基本的词汇单元或标记。字符串被分词器分为单个的词条,一个简单的分词器遇到空格和标点的时候,可能会将文本拆分成词条; +- 过滤器:对分词器生成的词汇进行进一步处理,如标准化、去除停用词等。按顺序通过每个过滤器,这个过程可能会改变词条例如,小写化`Quick`,删除词条例如,像`a`,`and`,`the`等无用词 + +举个例子,为了保证文本数据在索引和搜索过程中被适当处理,在`Elasticsearch`中,可以通过如下配置定义分析器: +```json +{ + "settings": { + "analysis": { + "analyzer": { + "custom_html_analyzer": { + "type": "custom", + "char_filter": ["html_strip"], + "tokenizer": "standard", + "filter": [ + "lowercase", + "stop", + "stemmer" + ] + } + }, + "filter": { + "stop": { + "type": "stop", + "stopwords": "_english_" + }, + "stemmer": { + "type": "stemmer", + "name": "english" + } + } + } + } +} +``` +假设我们有以下文本: +```html +

Elasticsearch is a powerful search engine for full-text search.

+``` +首先经过字符过滤器,去除HTML标签: +```text +Elasticsearch is a powerful search engine for full-text search. +``` +然后经过分词器,将文本分割成词条: +```text +["Elasticsearch", "is", "a", "powerful", "search", "engine", "for", "full-text", "search"] +``` +最后经过过滤器,将词条进一步处理,这里配置了三个过滤器`lowercase`、`stop`、`stemmer`,最终经过过滤器后,得到最终的词条列表: +```text +["elastics", "power", "search", "engin", "full-text", "search"] +``` -如何在保留不变性的前提下实现倒排索引的更新? +分析器的主要作用是分词,常用中文分词器是[ik分词器](https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.8.0),将解压后的后的文件夹放入`ES`根目录下的`plugins`目录下,重启`ES`即可使用。 -用更多的索引。通过增加新的补充索引来反映新的修改,而不是直接重写整个倒排索引。每一个倒排索引都会被轮流查询到,从最早的开始查询完后再对结果进行合并。 +### 倒排索引的更新 +早期的全文检索会为整个文档集合建立一个很大的倒排索引并将其写入到磁盘。被写入的索引不可变化,如果需要让一个新的文档可被搜索,你需要重建整个索引。 +一旦新的索引就绪,旧的就会被其替换。这样要么对一个索引所能包含的数据量造成了很大的限制,要么对索引可被更新的频率造成了很大的限制。 -当一个文档被删除时,它实际上只是在文件中被标记删除。一个被标记删除的文档仍然可以被查询匹配到,但它会在最终结果被返回前从结果集中过滤掉。 文档更新也是类似的操作方式:当一个文档被更新时,旧版本文档被标记删除,文档的新版本被索引到一个新的段中。可能两个版本的文档都会被一个查询匹配到,但被删除的那个旧版本文档在结果集返回前就已经被移除。 -当一个查询被触发,所有已知的段按顺序被查询。词项统计会对所有段的结果进行聚合,此时会将标记删除的数据真正的删除. +如何在保留不变性的前提下实现倒排索引的更新? +用更多的索引。通过增加新的补充索引来反映新的修改,而不是直接重写整个倒排索引。每一个倒排索引都会被轮流查询到,从最早的开始查询完后再对结果进行合并。 +具体来说,当一个文档被删除时,它实际上只是在文件中被标记删除。被标记删除的文档仍然可以被查询匹配到,但它会在最终结果被返回前从结果集中过滤掉。 +文档更新也是类似的操作方式,当一个文档被更新时,旧版本文档被标记删除,文档的新版本被索引到一个新的段中。可能两个版本的文档都会被一个查询匹配到,但被删除的那个旧版本文档在结果集返回前就已经被移除。 ### 近实时搜索 -Elasticsearch 的主要功能就是搜索,但是Elasticsearch的搜索功能不是实时的,而是近实时的,主要原因在于ES搜索是分段搜索. +`Elasticsearch`的主要功能就是搜索,但是`Elasticsearch`的搜索功能不是实时的,而是近实时的,主要原因在于`ES`搜索是分段搜索。 -ES中的每一段就是一个倒排索引,最新的数据更新会体现在最新的段中,而最新的段落盘之后ES才能进行搜索,所以磁盘性能极大影响了ES软件的搜索.ES的主要作用就是快速准确的获取想要的数据,所以降低处理数据的延迟就显得尤为重要. +`Elasticsearch`将索引分为多个段。每个段是倒排索引的一个部分,包含一部分文档的索引数据。 +最新的数据更新会体现在最新的段中,而最新的段落盘之后`ES`才能进行搜索,所以磁盘性能极大影响了`ES`软件的搜索。 +`ES`的主要作用就是快速准确的获取想要的数据,所以降低处理数据的延迟就显得尤为重要。 -ES近实时搜索实现: ![Elasticsearch详解-04](/iblog/posts/annex/images/essays/Elasticsearch详解-04.png) -1. 一个文档被索引之后,就会被添加到内存缓冲区,并且追加到了 translog 事务日志中;(先写入索引中,再写入到日志中,目的防止数据丢失,类似数据库中的事务日志) -2. 将内存缓冲区中的分片刷新到磁盘中(refresh);此时缓冲区的数据可被搜索,当完全将数据写入磁盘会清空缓冲区中的数据; -3. 随着不断的刷写,磁盘中的文件会越来越多,此时需要文件段合并;当一个新的索引文件产生之后,文件的更新,删除便会体现出,此时在合并文件的时候便会真正的将数据删除;小的段被合并到大的段,然后这些大的段再被合并到更大的段; - -## 优化 -Elasticsearch 在数据量很大的情况下(数十亿级别)如何提高查询效率? - -### 合理设置分片数 -分片和副本的设计为 ES 提供了支持分布式和故障转移的特性,但并不意味着分片和副本是可以无限分配的。而且索引的分片完成分配后由于索引的路由机制,我们是不能重新修改分片数的.否则将无法找到对应的数据. - -- 控制每个分片占用的硬盘容量不超过 ES 的最大 JVM 的堆空间设置,因此,如果索引的总容量在 500G 左右,那分片大小在 16 个左右即可; -- 考虑一下 node 数量,一般一个节点有时候就是一台物理机,如果分片数过多,大大超过了节点数,很可能会导致一个节点上存在多个分片,一旦该节点故障,即使保持了 1 个以上的副本,同样有可能会导致数据丢失,集群无法恢复。所以, 一般都设置分片数不超过节点数的 3 倍; -- 主分片,副本和节点最大数之间数量,我们分配的时候可以参考: 节点数<=主分片数 *(副本数+1); - - -### [文件缓冲区](https://doocs.github.io/advanced-java/#/docs/high-concurrency/es-optimizing-query-performance) -往 ES 里写的数据,实际上都写到磁盘文件里去了,查询的时候,操作系统会将磁盘文件里的数据自动缓存到 filesystem cache 里面去;ES 的搜索引擎严重依赖于底层的 filesystem cache ,你如果给 filesystem cache 更多的内存,尽量让内存可以容纳所有的 idx segment file 索引数据文件,那么你搜索的时候就基本都是走内存的,性能会非常高。 - -> 案例: 某个公司 ES 节点有 3 台机器,每台机器看起来内存很多,64G,总内存就是 64 * 3 = 192G 。每台机器给 ES jvm heap 是 32G ,那么剩下来留给 filesystem cache 的就是每台机器才 32G ,总共集群里给 filesystem cache 的就是 32 * 3 = 96G 内存。而此时,整个磁盘上索引数据文件,在 3 台机器上一共占用了 1T 的磁盘容量,ES 数据量是 1T ,那么每台机器的数据量是 300G 。这样性能好吗? filesystem cache 的内存才 100G,十分之一的数据可以放内存,其他的都在磁盘,然后你执行搜索操作,大部分操作都是走磁盘,性能肯定差。 - -归根结底,你要让 ES 性能要好,最佳的情况下,就是你的机器的内存,至少可以容纳你的总数据量的一半。 - -根据生产环境实践经验,最佳的情况下,是仅仅在 ES 中就存少量的数据,就是你要用来搜索的那些索引,如果内存留给 filesystem cache 的是 100G,那么你就将索引数据控制在 100G 以内,这样的话,你的数据几乎全部走内存来搜索,性能非常之高,一般可以在 1 秒以内。 - -比如说你现在有一行数据。 id,name,age .... 30 个字段。但是你现在搜索,只需要根据 id,name,age 三个字段来搜索。如果你傻乎乎往 ES 里写入一行数据所有的字段,就会导致说 90% 的数据是不用来搜索的,结果硬是占据了 ES 机器上的 filesystem cache 的空间,单条数据的数据量越大,就会导致 filesystem cahce 能缓存的数据就越少。其实,仅仅写入 ES 中要用来检索的少数几个字段就可以了,比如说就写入 ES id,name,age 三个字段,然后你可以把其他的字段数据存在 mysql/hbase 里,我们一般是建议用 ES + hbase 这么一个架构。 - -写入 ES 的数据最好小于等于,或者是略微大于 ES 的 filesystem cache 的内存容量。然后你从 ES 检索可能就花费 20ms,然后再根据 ES 返回的 id 去 hbase 里查询,查 20 条数据,可能也就耗费个 30ms,可能你原来那么玩儿,1T 数据都放 es,会每次查询都是 5~10s,现在可能性能就会很高,每次查询就是 50ms。 - - -### [数据预热](https://doocs.github.io/advanced-java/#/docs/high-concurrency/es-optimizing-query-performance) - -假如说,哪怕是你就按照上述的方案去做了,ES 集群中每个机器写入的数据量还是超过了 filesystem cache 一倍,比如说你写入一台机器 60G 数据,结果 filesystem cache 就 30G,还是有 30G 数据留在了磁盘上。 - -其实可以做数据预热。 - -举个例子,拿微博来说,你可以把一些大 V,平时看的人很多的数据,你自己提前后台搞个系统,每隔一会儿,自己的后台系统去搜索一下热数据,刷到 filesystem cache 里去,后面用户实际上来看这个热数据的时候,他们就是直接从内存里搜索了,很快。 - -或者是电商,你可以将平时查看最多的一些商品,比如说 iphone 8,热数据提前后台搞个程序,每隔 1 分钟自己主动访问一次,刷到 filesystem cache 里去。 - -对于那些你觉得比较热的、经常会有人访问的数据,最好做一个专门的缓存预热子系统,就是对热数据每隔一段时间,就提前访问一下,让数据进入 filesystem cache 里面去。这样下次别人访问的时候,性能一定会好很多。 - -### [冷热分离](https://doocs.github.io/advanced-java/#/docs/high-concurrency/es-optimizing-query-performance) -ES 可以做类似于 mysql 的水平拆分,就是说将大量的访问很少、频率很低的数据,单独写一个索引,然后将访问很频繁的热数据单独写一个索引。最好是将冷数据写入一个索引中,然后热数据写入另外一个索引中,这样可以确保热数据在被预热之后,尽量都让他们留在 filesystem os cache 里,别让冷数据给冲刷掉。 - -假设你有 6 台机器,2 个索引,一个放冷数据,一个放热数据,每个索引 3 个 shard。3 台机器放热数据 index,另外 3 台机器放冷数据 index。然后这样的话,你大量的时间是在访问热数据 index,热数据可能就占总数据量的 10%,此时数据量很少,几乎全都保留在 filesystem cache 里面了,就可以确保热数据的访问性能是很高的。但是对于冷数据而言,是在别的 index 里的,跟热数据 index 不在相同的机器上,大家互相之间都没什么联系了。如果有人访问冷数据,可能大量数据是在磁盘上的,此时性能差点,就 10% 的人去访问冷数据,90% 的人在访问热数据,也无所谓了。 - - -### [document模型设计](https://doocs.github.io/advanced-java/#/docs/high-concurrency/es-optimizing-query-performance) -对于 MySQL,我们经常有一些复杂的关联查询。在 ES 里该怎么玩儿,ES 里面的复杂的关联查询尽量别用,一旦用了性能一般都不太好。 - -最好是先在 Java 系统里就完成关联,将关联好的数据直接写入 ES 中。搜索的时候,就不需要利用 ES 的搜索语法来完成 join 之类的关联搜索了。 - -document 模型设计是非常重要的,很多操作,不要在搜索的时候才想去执行各种复杂的乱七八糟的操作。ES 能支持的操作就那么多,不要考虑用 ES 做一些它不好操作的事情。如果真的有那种操作,尽量在 document 模型设计的时候,写入的时候就完成。另外对于一些太复杂的操作,比如 join/nested/parent-child 搜索都要尽量避免,性能都很差的。 - - - - +1. 当新文档被索引到`Elasticsearch`中时,它首先被写入到内存中的数据结构,然后被逐渐持久化到磁盘上的倒排索引中。 +并且追加到了`translog`事务日志中。(先写入索引中,再写入到日志中,目的防止数据丢失,类似数据库中的事务日志) +2. 为了使新文档可被搜索,`Elasticsearch`会周期性地执行刷新操作。刷新操作将内存中的数据结构(称为“内存索引”或“写入缓冲区”)刷新到磁盘,创建新的搜索段。此时缓冲区的数据可被搜索,当完全将数据写入磁盘会清空缓冲区中的数据。 +3. 随着不断的刷写,磁盘中的文件会越来越多,此时需要文件段合并。当一个新的索引文件产生之后,文件的更新,删除便会体现出,此时在合并文件的时候便会真正的将数据删除。 +小的段被合并到大的段,然后这些大的段再被合并到更大的段。合并操作是一个渐进的过程,它在后台进行,以避免影响查询性能。 +由于刷新操作的周期性,`Elasticsearch`的近实时搜索通常在几秒钟内可以检索到新索引的文档。 diff --git "a/blog-site/content/posts/essays/IDEA\345\270\270\347\224\250\351\205\215\347\275\256\345\217\212\344\275\277\347\224\250\346\212\200\345\267\247.md" "b/blog-site/content/posts/essays/IDEA\345\270\270\347\224\250\351\205\215\347\275\256\345\217\212\344\275\277\347\224\250\346\212\200\345\267\247.md" index d233d2db..dcc8fb51 100644 --- "a/blog-site/content/posts/essays/IDEA\345\270\270\347\224\250\351\205\215\347\275\256\345\217\212\344\275\277\347\224\250\346\212\200\345\267\247.md" +++ "b/blog-site/content/posts/essays/IDEA\345\270\270\347\224\250\351\205\215\347\275\256\345\217\212\344\275\277\347\224\250\346\212\200\345\267\247.md" @@ -1,136 +1,135 @@ --- -title: "IDEA常用配置及使用技巧" +title: "配置IDEA及使用技巧" date: 2022-12-16 draft: false tags: ["随笔"] slug: "dev-idea" --- -## 下载 -工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率. -- 新UI很漂亮。IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html -- 激活工具 百度云下载. 链接:https://pan.baidu.com/s/1bmktlKMWC6nIqgJNSUYx_A?pwd=8888 + +## 下载 +工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率。IDEA新UI很漂亮,IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 。 +下载完之后激活,激活工具百度云下载,链接: https://pan.baidu.com/s/1bmktlKMWC6nIqgJNSUYx_A?pwd=8888 。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-01.jpg) -## 插件 -一些实用的插件,能提高开发速度 +## 常用插件 +开发中一些实用的插件,能提高开发速度。 ### JRebel and XRebel -代码调试热部署插件,使用需要花钱; [破解教程供参考](https://blog.csdn.net/lamedunk/article/details/124780925). - -启动完成需要改动代码调试,编译(快捷键: ctrl+b)一下即完成热部署,非常方便. +代码调试热部署插件,付费插件,[破解教程供参考](https://blog.csdn.net/lamedunk/article/details/124780925)。 +当需要改动代码时,不用再重启项目,编译(快捷键,ctrl+b)一下即可完成热部署,非常方便。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-02.jpg) ### Chinese Language Pack -中文语言包,对英文不太好的人很友好,根据使用习惯自行添加. +中文语言包,对英文不太好的人很友好,根据使用习惯自行添加。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-03.jpg) ### Mybatis X -现在几乎用[mybatis-plus](https://gitee.com/mhb0409/mybatis-plus) / [mybatis-plus-join](https://gitee.com/mhb0409/mybatis-plus-join) 取代了mybatis,所以该插件根据需要安装吧 - -功能: -1. XML和Mapper跳转 -2. Mapper和XML代码生成 -3. Mapper单表条件查询生成XML类似JPA +现在几乎用`MybatisPlus`取代了`Mybatis`,所以该插件根据需要安装吧,插件功能: +1. `XML`和`Mapper`跳转; +2. `Mapper`和`XML`代码生成; +3. `Mapper`单表条件查询生成`XML`类似`JPA`; ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-04.jpg) ### EasyCode -该插件可替代mybatis-generator生成代码,且支持支持导入导出模板,由于集成到IDEA中使用更加方便,配置好模板(Velocity模板引擎)即可生成. 使用文档: https://gitee.com/makejava/EasyCode/wikis/pages +该插件可替代`mybatis generator`,根据模板生成代码,且支持导入导出模板。由于集成到IDEA中所以使用更加方便,配置好模板(Velocity模板引擎)即可生成。参考[使用文档](https://gitee.com/makejava/EasyCode/wikis/pages)。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-05.jpg) ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-06.jpg) ### Translation -一款比较好用的翻译插件,可以使用快捷键 Ctrl+Shift+X 替换单词,从此妈妈再也不用担心变量方法命名的问题了. +一款比较好用的翻译插件,可以使用快捷键`Ctrl+Shift+X`替换单词,从此妈妈再也不用担心变量方法命名的问题了。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-07.jpg) ### Auto filling Java call arguments -自动填充调用参数,一些方法的参数非常多,可以用这个插件提高效率,根据需要下载 +自动填充调用参数,一些方法的参数非常多,可以用这个插件提高效率,根据需要下载。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-08.jpg) ### Codota AI Autocomplete for Java and JavaScript -该插件适用于 Java 和 JavaScript 的 AI 更好地完成代码,与之相关的国产有一个AiXcoder Code Completer 都挺不错的. +该插件适用于Java和JavaScript的AI更好地完成代码,与之相关的国产有一个`AiXcoder Code Completer`都挺不错的。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-09.jpg) ### Alibaba Java Coding Guidelines -可以使你写的代码不至于太烂 +该插件是阿里的一套规范,可以使你写的代码不至于太烂。 -> 对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求。但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java程序员也无法做到时刻将规范牢记于心。所以对于代码规范扫描工具,一经问世就广受青睐,阿里巴巴出品的Alibaba Java Coding Guidelines(阿里巴巴Java代码规约扫描,以下简称为AJCG)插件便是其中之一. +对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求。但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java程序员也无法做到时刻将规范牢记于心。 +所以对于代码规范扫描工具,一经问世就广受青睐,阿里巴巴出品的Alibaba Java Coding Guidelines(阿里巴巴Java代码规约扫描,以下简称为AJCG)插件便是其中之。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-10.jpg) ### EasyYapi -公司用Yapi作为前后端项目文档,那么使用该插件可以快速导入到yapi中,操作详情查看文档: https://easyyapi.com/documents/index.html +公司用`Yapi`作为前后端项目文档,那么使用该插件可以快速导入到`Yapi`中,操作详情参考[官方文档](https://easyyapi.com/documents/index.html)。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-11.jpg) ### GenerateAllSetter -一键生成一个对象的所有set,get方法,可赋默认值,支持链式调用 +一键生成一个对象的所有`set` `get`方法,可赋默认值,支持链式调用。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-12.jpg) ### Git Commit Template -该插件最主要作用就算规范git提交信息,方便统一管理生成release note,当然也可以在项目根目录建立模板文件(`git config commit.template`)这种方式来进行规范,请根据具体使用场景来 +该插件的作用就是规范`Git`提交信息,方便统一管理生成`release note`,当然也可以在项目根目录建立模板文件(`git config commit.template`)这种方式来进行规范,请根据具体使用场景来。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-13.jpg) ### GitToolBox -GitToolBox是的git增强工具,能够帮你开始查看当前代码的提交记录。比如什么时间、谁提交的。对于快速查看代码提交记录是一款不错的工具 - -可以当前编辑行的后面显示git记录,不想看可以取消,当然如果你觉得碍眼,可以不下载.请根据使用习惯来进行下载 +`GitToolBox`是的`Git`增强工具,能够帮你开始查看当前代码的提交记录。比如什么时间、谁提交的,对于快速查看代码提交记录是一款不错的工具。 +可以当前编辑行的后面显示`Git`记录,不想看可以取消,当然如果你觉得碍眼,可以不下载。根据使用习惯来进行下载。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-14.jpg) ### SQL Params Setter -鼠标选中日志中打印的mybatis日志,右键选择 Sql Params Setter 自动将参数拼接到sql语句里,并复制到剪切板上. +鼠标选中日志中打印的`Mybatis` `SQL`日志,右键选择`Sql Params Setter`自动将参数拼接到`SQL`语句里,并复制到剪切板上,对于调试程序来说简直不要太方便。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-15.jpg) ### Key Promoter X -当你在IDEA里面使用鼠标的时候,如果这个鼠标操作是能够用快捷键替代的,那么Key Promoter X会弹出一个提示框,告知你这个鼠标操作可以用什么快捷键替代。对于想完全使用快捷键在IDEA的,这个插件就很有用。 +当你在IDEA里面使用鼠标的时候,如果这个鼠标操作是能够用快捷键替代的,那么`Key Promoter X`会弹出一个提示框,告知你这个鼠标操作可以用什么快捷键替代。 +对于想完全使用快捷键在IDEA的,这个插件就很有用。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-16.jpg) ### Maven Helper -Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也需要依赖C。但是A依赖的C的版本是1.0,B依赖的C的版本是2.0。这时候,Maven会将这1.0的C和2.0的C都下载到你的项目中,这样你的项目中就存在了不同版本的C,这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的Jar包,而另一个无用的Jar包则未被使用,这就是所谓的依赖冲突。 - -在大多数时候,依赖冲突可能并不会对系统造成什么异常,因为Maven始终选择了一个Jar包来使用。但是,不排除在某些特定条件下,会出现类似找不到类的异常,所以,只要存在依赖冲突,在我看来,最好还是解决掉,不要给系统留下隐患。 +Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的,Maven的依赖机制会导致`jar`包的冲突。 +举个例子,现在你的项目中,使用了两个`jar`包,分别是A和B。现在A需要依赖另一个`jar`包C,B也需要依赖C。但是A依赖的C的版本是1.0,B依赖的C的版本是2.0。 +这时候,Maven会将这1.0的C和2.0的C都下载到你的项目中,这样你的项目中就存在了不同版本的C,这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的`jar`包,而另一个无用的`jar`包则未被使用,这就是所谓的依赖冲突。 -解决依赖冲突的方法,就是使用Maven提供的标签,标签需要放在标签内部。 +在大多数时候,依赖冲突可能并不会对系统造成什么异常,因为Maven始终选择了一个`jar`包来使用。但是不排除在某些特定条件下,会出现类似找不到类的异常,所以只要存在依赖冲突,在我看来最好还是解决掉,不要给程序留下隐患。 +解决依赖冲突的方法,就是使用Maven提供的``标签,``标签需要放在``标签内部使用。 -Maven Helper插件可以帮助我们分析依赖关系,从而解决依赖冲突。 +`Maven Helper`插件可以帮助我们分析依赖关系,从而解决依赖冲突。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-17.jpg) ### Rainbow Brackets -不同括号不同颜色,能增加代码可读性 +不同括号不同颜色,能增加代码可读性,挺方便的。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-18.jpg) ### GsonFormatPlus -能将json转java对象,按住alt + s然后进行配置转换 +能将`JSON`数据转Java对象,按住`alt+s`然后进行配置转换。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-19.jpg) ## 配置及技巧 ### 自定义模板 -配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。例如: 输入 `sout` 会出现 `System.out.println();` +配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。例如,输入`sout`会出现`System.out.println();`。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-20.jpg) -### Idea快捷键及设置 ->本人Idea设置(windows版)供参考 [下载](/iblog/posts/annex/zip/idea-settings.zip) +### IDEA快捷键及设置 +> 本人IDEA设置(windows版)供参考 [下载](https://whiteppure.github.io/iblog/posts/annex/zip/idea-settings.zip) -IDEA windows 版本常用快捷键如下: +IDEA Windows版本常用快捷键如下: | 快捷键 | 介绍 | |----------------|----------------| @@ -151,30 +150,29 @@ IDEA windows 版本常用快捷键如下: | Ctrl+B | 编译(配合热部署插件使用) | | Ctrl+Shift+F10 | 运行快捷键 | -除此之外,根据自己的使用习惯,可以用[Key Promoter X](#Key Promoter X)插件来配置你自己的快捷键. - +除此之外,根据自己的使用习惯,还可以用`Key Promoter X`插件来配置你自己的快捷键。 -在这个地方可以自己设置快捷键,如果你之前用的是eclipse,那么可以使用eclipse映射的快捷键,大大降低了学习成本 +在这个地方可以自己设置快捷键,如果你之前用的是Eclipse,那么可以使用Eclipse映射的快捷键,大大降低了学习成本。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-21.jpg) -### 快速发起请求 -一般写完接口,我们会使用Postman等其他测试接口工具来发起请求,看符不符合自己的预期. 这里不是在介绍Postman,而是介绍IDEA中的一个插件,它也能做到Postman的功能,而且由于集成到了idea中使开发效率大大增加. +### 快速请求接口 +一般写完接口,我们会使用`Postman`等其他测试接口工具来发起请求,看符不符合自己的预期。这里不是在介绍`Postman`,而是介绍IDEA中的一个插件,它也能做到`Postman`的功能,而且由于集成到了IDEA中使开发效率大大增加。 -`HTTP Client` 是 IDEA 自带的一款简洁轻量级的接口调用插件,通过它,我们能在 IDEA 上开发、调试、测试`Restful Web`服务.有了它 Postman 可以扔掉了 +`HTTP Client`是IDEA自带的一款简洁轻量级的接口调用插件,通过它我们能在IDEA上开发、调试、测试`Restful Web`服务,有了它`Postman`可以扔掉了。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-23.jpg) ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-22.jpg) ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-24.jpg) -### 快速开发 -配置maven项目骨架(模板),可以快速开发,可自定义项目模板,参考[教程](https://blog.csdn.net/qq_42986107/article/details/83421811),maven骨架[下载地址](https://repository.apache.org/content/repositories/releases/archetype-catalog.xml) +### Maven骨架 +配置Maven项目骨架,能帮助我们快速开发。自定义项目模板,参考[教程](https://blog.csdn.net/qq_42986107/article/details/83421811),Maven骨架[下载地址](https://repository.apache.org/content/repositories/releases/archetype-catalog.xml)。 > Maven骨架简单的来说就是一种模型 (结构),Maven根据我们的不同的项目和需求,提供了不同的模型,这样就不需要我们自己建模型了。举个简单的例子:就比如我们要做一套普通的楼房,我们使用Maven就不需要我们自己打地基,直接把使用Maven打好的地基就可以了。同时种类的楼房(写字楼,商场,套房,别墅) 就有不同的地基,因此,Maven就有很多种模型。 -配置maven骨架 +简单来说,Maven骨架就是生成一个基础的项目,不用每次开发时都要在其他项目中进行复制代码,使用Maven骨架可以直接生成项目,然后基于这个项目进行开发,从而加速开发。 +配置`Maven`骨架。 + ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-26.jpg) -设置自动导入包,清除无用的包,使代码更加整洁 +设置自动导入包,清除无用的包,使代码更加整洁。 ![idea常用配置](/iblog/posts/annex/images/essays/idea常用配置-25.jpg) - -在开发一些功能时需要的某些类库 https://www.21doc.net/ 这个网站做了一个导航供参考 diff --git a/blog-site/public/index.xml b/blog-site/public/index.xml index b773a1e2..c4a52d70 100644 --- a/blog-site/public/index.xml +++ b/blog-site/public/index.xml @@ -615,7 +615,7 @@ http://localhost:1313/iblog/posts/essays/java-elasticsearch/ Tue, 14 Feb 2023 00:00:00 +0000 http://localhost:1313/iblog/posts/essays/java-elasticsearch/ - 概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可 + 概览 Elasticsearch简称为ES,它是一个开源的高扩展的分布式全文搜索引擎,是整个ElasticStack技术栈的核心。 它可以近乎实时的存储、检索数据, 编程专业术语汇总及解释,持续更新... diff --git a/blog-site/public/page/6/index.html b/blog-site/public/page/6/index.html index 3fde3e29..129587a0 100644 --- a/blog-site/public/page/6/index.html +++ b/blog-site/public/page/6/index.html @@ -512,7 +512,7 @@

Elasticsearch详解
-

概览 Elasticsearch,简称为 ES, ES是一个开源的高扩展的分布式全文搜索引擎, 是整个 ElasticStack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可......

+

概览 Elasticsearch简称为ES,它是一个开源的高扩展的分布式全文搜索引擎,是整个ElasticStack技术栈的核心。 它可以近乎实时的存储、检索数据,......

diff --git a/blog-site/public/posts/essays/dev-idea/index.html b/blog-site/public/posts/essays/dev-idea/index.html index 8689d061..7278b309 100644 --- a/blog-site/public/posts/essays/dev-idea/index.html +++ b/blog-site/public/posts/essays/dev-idea/index.html @@ -8,11 +8,11 @@ - IDEA常用配置及使用技巧 | 脚踏实地 + 配置IDEA及使用技巧 | 脚踏实地 - + @@ -96,8 +96,8 @@ @@ -651,7 +651,7 @@ @@ -678,8 +678,8 @@ @@ -706,8 +706,8 @@ @@ -817,7 +817,7 @@

-

IDEA常用配置及使用技巧

+

配置IDEA及使用技巧

2022.12.16 @@ -826,89 +826,87 @@

IDEA常用配置及使用技巧

下载

-

工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率.

- +

工欲善其事必先利其器,一个好的开发工具,能极大提高开发效率。IDEA新UI很漂亮,IDEA 官方下载地址: https://www.jetbrains.com/zh-cn/idea/download/other.html 。 +下载完之后激活,激活工具百度云下载,链接: https://pan.baidu.com/s/1bmktlKMWC6nIqgJNSUYx_A?pwd=8888

idea常用配置

-

插件

-

一些实用的插件,能提高开发速度

+

常用插件

+

开发中一些实用的插件,能提高开发速度。

JRebel and XRebel

-

代码调试热部署插件,使用需要花钱; 破解教程供参考.

-

启动完成需要改动代码调试,编译(快捷键: ctrl+b)一下即完成热部署,非常方便.

+

代码调试热部署插件,付费插件,破解教程供参考。 +当需要改动代码时,不用再重启项目,编译(快捷键,ctrl+b)一下即可完成热部署,非常方便。

idea常用配置

Chinese Language Pack

-

中文语言包,对英文不太好的人很友好,根据使用习惯自行添加.

+

中文语言包,对英文不太好的人很友好,根据使用习惯自行添加。

idea常用配置

Mybatis X

-

现在几乎用mybatis-plus / mybatis-plus-join 取代了mybatis,所以该插件根据需要安装吧

-

功能:

+

现在几乎用MybatisPlus取代了Mybatis,所以该插件根据需要安装吧,插件功能:

    -
  1. XML和Mapper跳转
  2. -
  3. Mapper和XML代码生成
  4. -
  5. Mapper单表条件查询生成XML类似JPA
  6. +
  7. XMLMapper跳转;
  8. +
  9. MapperXML代码生成;
  10. +
  11. Mapper单表条件查询生成XML类似JPA

idea常用配置

EasyCode

-

该插件可替代mybatis-generator生成代码,且支持支持导入导出模板,由于集成到IDEA中使用更加方便,配置好模板(Velocity模板引擎)即可生成. 使用文档: https://gitee.com/makejava/EasyCode/wikis/pages

+

该插件可替代mybatis generator,根据模板生成代码,且支持导入导出模板。由于集成到IDEA中所以使用更加方便,配置好模板(Velocity模板引擎)即可生成。参考使用文档

idea常用配置

idea常用配置

Translation

-

一款比较好用的翻译插件,可以使用快捷键 Ctrl+Shift+X 替换单词,从此妈妈再也不用担心变量方法命名的问题了.

+

一款比较好用的翻译插件,可以使用快捷键Ctrl+Shift+X替换单词,从此妈妈再也不用担心变量方法命名的问题了。

idea常用配置

Auto filling Java call arguments

-

自动填充调用参数,一些方法的参数非常多,可以用这个插件提高效率,根据需要下载

+

自动填充调用参数,一些方法的参数非常多,可以用这个插件提高效率,根据需要下载。

idea常用配置

Codota AI Autocomplete for Java and JavaScript

-

该插件适用于 Java 和 JavaScript 的 AI 更好地完成代码,与之相关的国产有一个AiXcoder Code Completer 都挺不错的.

+

该插件适用于Java和JavaScript的AI更好地完成代码,与之相关的国产有一个AiXcoder Code Completer都挺不错的。

idea常用配置

Alibaba Java Coding Guidelines

-

可以使你写的代码不至于太烂

-
-

对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求。但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java程序员也无法做到时刻将规范牢记于心。所以对于代码规范扫描工具,一经问世就广受青睐,阿里巴巴出品的Alibaba Java Coding Guidelines(阿里巴巴Java代码规约扫描,以下简称为AJCG)插件便是其中之一.

-
+

该插件是阿里的一套规范,可以使你写的代码不至于太烂。

+

对于Java代码规范,业界有统一的标准,不少公司对此都有一定的要求。但是即便如此,庞大的Java使用者由于经验很水平的限制,未必有规范编码的意识,而且即便经验丰富的老Java程序员也无法做到时刻将规范牢记于心。 +所以对于代码规范扫描工具,一经问世就广受青睐,阿里巴巴出品的Alibaba Java Coding Guidelines(阿里巴巴Java代码规约扫描,以下简称为AJCG)插件便是其中之。

idea常用配置

EasyYapi

-

公司用Yapi作为前后端项目文档,那么使用该插件可以快速导入到yapi中,操作详情查看文档: https://easyyapi.com/documents/index.html

+

公司用Yapi作为前后端项目文档,那么使用该插件可以快速导入到Yapi中,操作详情参考官方文档

idea常用配置

GenerateAllSetter

-

一键生成一个对象的所有set,get方法,可赋默认值,支持链式调用

+

一键生成一个对象的所有set get方法,可赋默认值,支持链式调用。

idea常用配置

Git Commit Template

-

该插件最主要作用就算规范git提交信息,方便统一管理生成release note,当然也可以在项目根目录建立模板文件(git config commit.template)这种方式来进行规范,请根据具体使用场景来

+

该插件的作用就是规范Git提交信息,方便统一管理生成release note,当然也可以在项目根目录建立模板文件(git config commit.template)这种方式来进行规范,请根据具体使用场景来。

idea常用配置

GitToolBox

-

GitToolBox是的git增强工具,能够帮你开始查看当前代码的提交记录。比如什么时间、谁提交的。对于快速查看代码提交记录是一款不错的工具

-

可以当前编辑行的后面显示git记录,不想看可以取消,当然如果你觉得碍眼,可以不下载.请根据使用习惯来进行下载

+

GitToolBox是的Git增强工具,能够帮你开始查看当前代码的提交记录。比如什么时间、谁提交的,对于快速查看代码提交记录是一款不错的工具。 +可以当前编辑行的后面显示Git记录,不想看可以取消,当然如果你觉得碍眼,可以不下载。根据使用习惯来进行下载。

idea常用配置

SQL Params Setter

-

鼠标选中日志中打印的mybatis日志,右键选择 Sql Params Setter 自动将参数拼接到sql语句里,并复制到剪切板上.

+

鼠标选中日志中打印的Mybatis SQL日志,右键选择Sql Params Setter自动将参数拼接到SQL语句里,并复制到剪切板上,对于调试程序来说简直不要太方便。

idea常用配置

Key Promoter X

-

当你在IDEA里面使用鼠标的时候,如果这个鼠标操作是能够用快捷键替代的,那么Key Promoter X会弹出一个提示框,告知你这个鼠标操作可以用什么快捷键替代。对于想完全使用快捷键在IDEA的,这个插件就很有用。

+

当你在IDEA里面使用鼠标的时候,如果这个鼠标操作是能够用快捷键替代的,那么Key Promoter X会弹出一个提示框,告知你这个鼠标操作可以用什么快捷键替代。 +对于想完全使用快捷键在IDEA的,这个插件就很有用。

idea常用配置

Maven Helper

-

Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也需要依赖C。但是A依赖的C的版本是1.0,B依赖的C的版本是2.0。这时候,Maven会将这1.0的C和2.0的C都下载到你的项目中,这样你的项目中就存在了不同版本的C,这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的Jar包,而另一个无用的Jar包则未被使用,这就是所谓的依赖冲突。

-

在大多数时候,依赖冲突可能并不会对系统造成什么异常,因为Maven始终选择了一个Jar包来使用。但是,不排除在某些特定条件下,会出现类似找不到类的异常,所以,只要存在依赖冲突,在我看来,最好还是解决掉,不要给系统留下隐患。

-

解决依赖冲突的方法,就是使用Maven提供的标签,标签需要放在标签内部。

-

Maven Helper插件可以帮助我们分析依赖关系,从而解决依赖冲突。

+

Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的,Maven的依赖机制会导致jar包的冲突。 +举个例子,现在你的项目中,使用了两个jar包,分别是A和B。现在A需要依赖另一个jar包C,B也需要依赖C。但是A依赖的C的版本是1.0,B依赖的C的版本是2.0。 +这时候,Maven会将这1.0的C和2.0的C都下载到你的项目中,这样你的项目中就存在了不同版本的C,这时Maven会依据依赖路径最短优先原则,来决定使用哪个版本的jar包,而另一个无用的jar包则未被使用,这就是所谓的依赖冲突。

+

在大多数时候,依赖冲突可能并不会对系统造成什么异常,因为Maven始终选择了一个jar包来使用。但是不排除在某些特定条件下,会出现类似找不到类的异常,所以只要存在依赖冲突,在我看来最好还是解决掉,不要给程序留下隐患。 +解决依赖冲突的方法,就是使用Maven提供的<exclusion>标签,<exclusion>标签需要放在<exclusions>标签内部使用。

+

Maven Helper插件可以帮助我们分析依赖关系,从而解决依赖冲突。

idea常用配置

Rainbow Brackets

-

不同括号不同颜色,能增加代码可读性

+

不同括号不同颜色,能增加代码可读性,挺方便的。

idea常用配置

GsonFormatPlus

-

能将json转java对象,按住alt + s然后进行配置转换

+

能将JSON数据转Java对象,按住alt+s然后进行配置转换。

idea常用配置

配置及技巧

自定义模板

-

配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。例如: 输入 sout 会出现 System.out.println();

+

配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。例如,输入sout会出现System.out.println();

idea常用配置

-

Idea快捷键及设置

+

IDEA快捷键及设置

-

本人Idea设置(windows版)供参考 下载

+

本人IDEA设置(windows版)供参考 下载

-

IDEA windows 版本常用快捷键如下:

+

IDEA Windows版本常用快捷键如下:

@@ -983,25 +981,25 @@

Idea快捷键及设置

-

除此之外,根据自己的使用习惯,可以用[Key Promoter X](#Key Promoter X)插件来配置你自己的快捷键.

-

在这个地方可以自己设置快捷键,如果你之前用的是eclipse,那么可以使用eclipse映射的快捷键,大大降低了学习成本 +

除此之外,根据自己的使用习惯,还可以用Key Promoter X插件来配置你自己的快捷键。

+

在这个地方可以自己设置快捷键,如果你之前用的是Eclipse,那么可以使用Eclipse映射的快捷键,大大降低了学习成本。 idea常用配置

-

快速发起请求

-

一般写完接口,我们会使用Postman等其他测试接口工具来发起请求,看符不符合自己的预期. 这里不是在介绍Postman,而是介绍IDEA中的一个插件,它也能做到Postman的功能,而且由于集成到了idea中使开发效率大大增加.

-

HTTP Client 是 IDEA 自带的一款简洁轻量级的接口调用插件,通过它,我们能在 IDEA 上开发、调试、测试Restful Web服务.有了它 Postman 可以扔掉了

+

快速请求接口

+

一般写完接口,我们会使用Postman等其他测试接口工具来发起请求,看符不符合自己的预期。这里不是在介绍Postman,而是介绍IDEA中的一个插件,它也能做到Postman的功能,而且由于集成到了IDEA中使开发效率大大增加。

+

HTTP Client是IDEA自带的一款简洁轻量级的接口调用插件,通过它我们能在IDEA上开发、调试、测试Restful Web服务,有了它Postman可以扔掉了。

idea常用配置 idea常用配置 idea常用配置

-

快速开发

-

配置maven项目骨架(模板),可以快速开发,可自定义项目模板,参考教程,maven骨架下载地址

+

Maven骨架

+

配置Maven项目骨架,能帮助我们快速开发。自定义项目模板,参考教程,Maven骨架下载地址

Maven骨架简单的来说就是一种模型 (结构),Maven根据我们的不同的项目和需求,提供了不同的模型,这样就不需要我们自己建模型了。举个简单的例子:就比如我们要做一套普通的楼房,我们使用Maven就不需要我们自己打地基,直接把使用Maven打好的地基就可以了。同时种类的楼房(写字楼,商场,套房,别墅) 就有不同的地基,因此,Maven就有很多种模型。

-

配置maven骨架 -idea常用配置

-

设置自动导入包,清除无用的包,使代码更加整洁

+

简单来说,Maven骨架就是生成一个基础的项目,不用每次开发时都要在其他项目中进行复制代码,使用Maven骨架可以直接生成项目,然后基于这个项目进行开发,从而加速开发。 +配置Maven骨架。

+

idea常用配置

+

设置自动导入包,清除无用的包,使代码更加整洁。

idea常用配置

-

在开发一些功能时需要的某些类库 https://www.21doc.net/ 这个网站做了一个导航供参考