好友关系的缓存存储

最近接触到一个比较有意思问题,需要快速获取两个用户之间的好友关系,比如传入A和B,返回A加了B、B加了A,相互都加了或是相互都没加。 经过一系列讨论,发现使用redis的string数据结构存储即可很好的满足需求。 具体做法是将A,B排序作为key,用二级制位表示A,B与B,A关系,比如A加B就是0b10,B加了A就是0b01。新增和删除关系时设置对应位即可。 整体思路比较清晰,具体实现方面可能有...

阅读更多

多对多全量缓存数据的实现方案

有如下表 t_id code 1 c1 1 c2 2 c2 t_id和code是多对多关系,应用中频繁根据code列表获取t_id列表,类似一个关联配置表,且表的数据不多。 这时,我们可以使用redis的hash结构全量缓存数据。key为自定义的固定值,field为code,value为t_id的逗号分隔,取时使用hmget拿到所有value分隔逗号,然后set去重即可根据codeList拿到t...

阅读更多

[转]dubbo-Telnet 命令参考手册

背景 有时为了调试,我们可能会用到命令行直接调用dubbo服务,官方总结了一份很好的文档,转载当作知识储备。 使用 从 2.0.5 版本开始,dubbo 开始支持通过 telnet 命令来进行服务治理。 telnet localhost 20880 或者: echo status | nc -i 1 localhost 20880 命令 ls ls: 显示服务列表 ls -l: 显示服务详细信...

阅读更多

红点逻辑的服务端实现

最近比较忙,已经两个多月没写博客了,分享一下专治强迫症的红点逻辑的服务端逻辑实现。 具体场景是例如一个图标,用户点击消失,如果距离用户上次点击有内容更新,则该用户则又出现红点。 容易想到的实现方式是记录每个用户的访问时间和内容更新时间作对比,如果没有用户的访问时间(说明是第一次访问)或者内容更新时间大于用户的访问时间,那么有红点,否则没有红点,数据结构使用redis的hash。这个方式已经比较简单...

阅读更多

Mac笔记本触摸板的使用心得

离接触使用Mac有一个多月了,对于触摸板使用有一些心得体会,希望大家都能把机器好好调教下,以便使用起来得心应手。 触摸板 系统偏好设置-触摸板: 打开轻点来点按:使用轻触的方式单击,省力,同时单指连续轻触代替双击也比较方便 辅助点按:使用双指代替右键,一般是食指和中指,刚开始可能比较别扭,但是后面就会感觉很方便,不用找触摸板左下角和右下角然后使劲按下 跟踪速度:类似于鼠标的跟踪速度,和最快相差1个...

阅读更多

警惕正则分组引起的长时间回溯

背景 最近在折腾一个小工具,修改时加了一个正则匹配,启动后出现假死的情况,刚开始以为数据库连接问题,把更改的代码去掉后又恢复正常。后来逐步排查,发现是执行到一个正则匹配就卡住了。 问题原因 查阅资料,是因为正则对于+,*使用了最长匹配的方式,如果不能匹配,就会发生回溯,如果正则表达式中滥用了多个+,*等就会出现长时间回溯,CPU很高的情况。 https://stackoverflow.com/qu...

阅读更多

Mac下部分软件安装填坑指南

最近折腾了下mac的安装配置,记录下以备查 brew安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" https://zhuanlan.zhihu.com/p/111014448 https://brew.sh/index_zh-cn SSH隧道 FinalShell...

阅读更多

Spring任务不执行问题排查

本博客使用了一个自动任务每天23点零5秒自动生成订阅,部署时正常执行,但是最近发现不能执行了。 spring配置文件 ...

阅读更多