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并安装对应的插件,就可以开始写算法题了(主要是在这里写,无论是提交还是测试都比较方便)。
如图所示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述