3月份周度分享(三)

今天的主要话题围绕这么几个方面?

 

一、9个基于Java的搜索引擎框架

二、本周学习笔记分享

三、《测试驱动开发》知识普及

四、VsCode推荐插件

 

 

一、9个基于Java的搜索引擎框架

今天分享9个基于Java的搜索引擎框架

(1)Java 全文搜索引擎框架 Lucene

官方网站:

http://lucene.apache.org/

 

(2)开源Java搜索引擎Nutch

官方网站:

http://nutch.apache.org/

 

(3)分布式搜索引擎 ElasticSearch

官方网站:

http://www.elasticsearch.org/

 

(4)实时分布式搜索引擎 Solandra

官方网站:

https://github.com/tjake/Solandra

 

(5)IndexTank

官方网站:

https://github.com/linkedin/indextank-engine

 

(6)搜索引擎 Compass

官方网站:

http://www.compass-project.org/

 

(7)Java全文搜索服务器 Solr

官方网站:

http://lucene.apache.org/solr/

 

(8)Lucene图片搜索 LIRE

官方网站:

http://www.semanticmetadata.net/lire/

 

(9)全文本搜索引擎 Egothor

官方网站:

http://www.egothor.org/cms/

 

关于搜索引擎框架,建议最好还是学Lucene、Solr、ElasticSearch等。这三个文档比较丰富,应用也比较多。

 

当然了,有个小小的建议,最好还是系统学习一下MySQL。

在此我推荐《高性能MySQL》这本书。

这个系统的学习并不是指你每天都看,最好是一周抽时间看一章左右,最好还是实际操练一下里面的相关操作。当然了,如果觉得这本书看的有难度,可以去市面上找其它MySQL相关的书籍看看,比如《跟老男孩学Linux》之MySQL、《MySQL技术内幕:SQL编程》、《MySQL DBA修炼之道》等这些相关开发者朋友都可以看看。有人说最好的学习方式是工作驱动。这句话的确有道理,但是个人觉得除了工作驱动外,还有一种叫刻意学习,这种刻意学习,比如你在工作中遇到一个问题,这个问题你很快就解决了,但是你并不明白问题的根源所在,这时你可以深究一下(深究的前提,建立在你当天工作基本完成了,特别是领导分配的优先级最高任务,把优先级最高的完成了,剩下的你可以每天完成两到三个,剩下的时间你可以去深究一下,有朋友说工作中这样做会不会不好,其实不然,因为最理想的情况是“今日事,今日毕”,今天遇到的一些问题,虽然你解决了,但是你还是不明白为什么出现这个问题(没有把握问题的根源所在),初中级开发者最常见的问题就是解决了问题之后做个小记录(有一部分甚至不会做记录),然后就不管了,下次再遇到这个问题,根据以往的经验解决了,但是过一段时间还会出现这样的问题,一次两次多次时不时出现这个问题是非常有问题的。为什么就不能在问题出现三次以上就将其彻底解决呢?初中级开发者存在一个最大的问题就是问题解决就好,其它一概不管,包括我自己也会遇到这种情况(不能说这样不好,因为在很多小公司,领导基本上所要求的就是你把我的需求完成就好,至于怎么完成的,不管我的事情)。

 

目前我正在让自己改变这种行为方式,但是还是会犯的,我只能尽可能的减少犯的次数。

 

 

二、本周学习笔记分享

每天记录一点点,不知不觉就这么多了。个人建议IT开发者们最好都养成记笔记的习惯。

 

后期本人打算在个人GitHub弄一个Wiki,将自己的知识系统化。

 

Node.js之mysql增删改查:

https://www.cnblogs.com/youcong/p/10624292.html

 

node.js api文档生成

https://www.cnblogs.com/youcong/p/10624201.html

 

Ubuntu16.04之安装Nutch

https://www.cnblogs.com/youcong/p/10624622.html

 

Ubuntu16.04之Solr7.7.1环境搭建

https://www.cnblogs.com/youcong/p/10624609.html

 

org.springframework.jdbc.BadSqlGrammarException

https://www.cnblogs.com/youcong/p/10624585.html

 

org.xml.sax.SAXParseException;在实体引用中, 实体名称必须紧跟在 '&' 后面

https://www.cnblogs.com/youcong/p/10624576.html

 

如何让Node.js运行在浏览器端

https://www.cnblogs.com/youcong/p/10624571.html

 

Ubuntu16.04安装和使用ElasticSearch

https://www.cnblogs.com/youcong/p/10624567.html

 

VsCode云端版本

https://www.cnblogs.com/youcong/p/10624548.html

 

普通用户使用Docker

https://www.cnblogs.com/youcong/p/10624543.html

 

Docker安装MySQL并配置远程访问

https://www.cnblogs.com/youcong/p/10624539.html

 

MySQL去除查询结果重复

https://www.cnblogs.com/youcong/p/10624623.html

 

三、《测试驱动开发》知识普及

 

本人觉得TDD可以看这个Wiki,对此可以有一个大概的理解

测试驱动开发(简称TDD): 

https://en.wikipedia.org/wiki/Test-driven_development

 

以我目前公司编写业务,通常情况下,都是把对应的DAO和Service写好后,放到src/test/java某个单元测试,不过通常我会给这个单元测试进行分类,不同的业务放在不同的包下(以Blog为例,src/test/java会有一个cn.blog.test,我会在其写一个PostJunitTest类,从这个名字可以看出,这个单元测试专门针对文章相关的功能。通常编写单元测试,做一下边界条件测试,分正常情况、异常情况,覆盖率比较低,不过这样有一个好处就是,通常单元测试没有问题,直接放到对应的Controller里面,基本上很少出现问题,这就使我养成了,喜欢单元测试的原因,单元测试对于开发者的业务逻辑也会有较大的提升。最后说一下个人的观点:不写单测的程序员,不是一个合格的程序员;写了单测的程序员是一个合格的程序员;写好单测的程序员,是一个优秀的程序员。也许观点会有不少人反对,不过以我个人的实践经验来看,单测真的节省我很多时间,同时在编写的过程中,让逻辑也更加清晰。有不少程序员在小公司里面同时兼任前后端开发+测试+运维等,特别是负责前后端,如果你后端的Controller有问题,前端改其来是无比痛苦(在我之前没有养成单测的习惯,深刻体会到这个痛苦)。

 

四、VsCode推荐插件

刷VsCode的朋友们,建议你们可以使用VsCode,在VsCode插件市场搜索LeetCode并安装对应的插件,就可以开始写算法题了(主要是在这里写,无论是提交还是测试都比较方便)。

如图所示:

 

posted @ 2020-02-10 22:49  挑战者V  阅读(138)  评论(0编辑  收藏  举报