谢谢你留下时光匆匆
算法类Java服务开发经验小结

本文总结了自己在算法工作中,Java服务开发的一些经验。算法工程师日常开发的内容主要是:从一个或多个源获取数据,在这些数据上做一些业务逻辑操作,返回一个列表给下游。例如:我们从推荐模型获取某用户的新闻推荐列表,从kv数据库获取某用户最近浏览过的新闻列表,将推荐列表中用户已经浏览过的新闻过滤掉,如果过滤后的列表有用户经常浏览类别的新闻,选2个放在返回结果的开头,剩下的按照新闻时间由旧到新排序。

这篇总结主要包括,常见需求的代码优化实践,简单的代码结构设计以及工程细节。


《读者》杂志epub电子书整理

自己中学时候经常看《读者》杂志。现在周围报刊亭很少了,加之阅读时间慢慢被刷手机占据,渐渐就没有了阅读《读者》的习惯。偶然间发现网站读者文摘杂志有《读者》的历史文章,便花了一点时间,将文章按每一期整理成epub电子书,便于有需要的人使用。


有趣实用的网站软件(一)

自己是一个很喜欢尝试新软件、探索新网站的人,这个系列文章,把自己觉得有趣的玩意,或者能提高效率的工具汇总起来,分享给大家。

本期关键词:音乐,设计,效率,娱乐,博客


slf4j 本地日志输出

在进行Java开发时,我们常需要打印日志来帮助我们检查运行结果,定位问题。slf4j是常用的日志框架,但其只是日志框架的一部分(即所谓的设计模式中的门面),真正日志记录的实现还需要相应的后端支持(如在生产环境配置的log4j2),这意味着,在本地机器中如果没有相关配置,代码中slf4j记录的日志可能无法直接查看。我们可以通过简单的配置使我们在本地启动服务时候也能顺利打印出日志。


如何避免 Java NPE(NullPointerException) 空指针问题

NPE(NullPointerException) 是在Java开发中常遇到的问题,特别对于刚入门的Java开发者来说,很容易忽略空指针的问题,进而影响整理代码质量。自己查阅了网络上相关资料,在这里对NPE空指针问题的解决方法做一个总结。

NPE的应对,整体上分为两大情况——1,接受外部数据,处理这些外部数据时,出现NPE;2,自己定义方法/接口时,空指针作为返回结果。


Hugo设置在新页面打开链接

默认情况下,打开Hugo博客中的链接,会在当前浏览器页面上直接进行跳转的,而不会在新浏览器标签页中打开。这导致了较差的用户体验,并且还可能让读者跳出了网站,终止后续阅读,不利于网站更多内容的呈现。

我们可以进行如下简单的配置,实现在新标签页打开链接的优化:在theme目录下找到当前主题对应的文件夹目录,在其下layouts\_default\_markup路径(如果没有自行建立)添加文件render-link.html,将下面一段代码复制到文件里后,即可配置完成


CSS 与 SCSS 常用信息小结

最近一直在更新优化一些前端的小项目,这其中包括CSS样式表的代码重构。我选择将CSS代码转向SCSS,使得CSS代码更为简洁,结构更加清晰,方便后期的维护与开发。这里对CSS与SCSS基础的用法做一个简单的记录。


docker常用命令整理

最近在部署一些应用时候用到了docker,上一次用docker也是几年前了,很多命令印象已经不深刻了,这里稍微复习整理了一下常用的命令,方便以后部署应用使用。

container 相关

运行一个container

启动一个container是docker应用部署的关键一步,有许多配置选项需要注意。

1
docker run [flags] XXX/IAMGE_TO_RUN

利用Github Action定时运行Python脚本

自己业余时间经常会开发一些脚本,定时运行它们,来辅助自己完成各种各样的任务,比如:定时推送天气情况到自己的todo list;定时运行一些爬虫,摘录新闻、消息(例如优化热榜类RSS feed源);定期整理自己的财务数据,输出报表等等等等。

以前我用过云服务设置cron job定时来跑这些脚本,但是云服务的使用是需要付费的。后来Github Action发布,public repo可以无限制使用,private repo也提供一定的免费时长额度。Action job可以通过cron形式触发,我们可以借此实现定时运行Python脚本。整个实现过程只需要两步,本文简单记录一下过程。


优化热榜类RSS feed源

自己个人很喜欢用传统的RSS feed源来获取信息,因为其简洁纯净的风格,可以避免App推荐算法带来的信息茧房,以及广告与用户评论带来的嘈杂;RSS的集成性,使只用一个完全定制的app接受各种信息变为可能,提供很不错的浏览体验。但有一类比较重要的信息与RSS适配不算完美,就是各大平台的热榜(例如,微博热搜、知乎热榜等),这些热榜类信息代表时下社会热点。

现有的热榜类RSS feed源,以RssHub为例,不能带来很好的浏览体验,其原因有三:首先,热榜channel是以每一条热榜条目为item,每条item在channel出现的顺序并非按照热度顺序呈现,很难定位到头部重点热点内容;二是以热榜条目为item,整个channel内会出现一段时间内所有的热榜条目,数量庞大;三是传统意义上,RSS item应该以一篇文章为单位,热榜中每条条目单独作为一条item,信息量极小,与RSS阅读器的操作逻辑不符合。

于是,我自己搭建了一个为热榜类信息优化的RSS源,本文记录一下相关细节。