如何判断一个元素在亿级数据中是否存在?
分享一些 Kafka 消费数据的小经验
前言
之前写过一篇《从源码分析如何优雅的使用 Kafka 生产者》 ,有生产者自然也就有消费者。
建议对 Kakfa 还比较陌生的朋友可以先看看。
就我的使用经验来说,大部分情况都是处于数据下游的消费者角色。也用 Kafka
消费过日均过亿的消息(不得不佩服 Kakfa 的设计),本文将借助我使用 Kakfa 消费数据的经验来聊聊如何高效的消费数据。
设计一个可拔插的 IOC 容器
前言
磨了许久,借助最近的一次通宵上线 cicada 终于更新了 v2.0.0
版本。
之所以大的版本号变为 2,确实是向下不兼容了;主要表现为:
- 修复了几个反馈的
bug
。 - 灵活的路由方式。
- 可拔插的
IOC
容器选择。
其中重点是后面两个。
不改一行代码定位线上性能问题
背景
最近时运不佳,几乎天天被线上问题骚扰。前几天刚解决了一个 HashSet 的并发问题,周六又来了一个性能问题。
大致的现象是:
我们提供出去的一个 OpenAPI 反应时快时慢,快的时候几十毫秒,慢的时候几秒钟才响应。
尝试解决
由于这种也不是业务问题,不能直接定位。所以尝试在测试环境复现,但遗憾的测试环境贼快。
没办法只能硬着头皮上了。
中途有抱着侥幸心里让运维查看了 Nginx
里 OpenAPI
的响应时间,想把锅扔给网络。结果果然打脸了;Nginx
里的日志也表明确实响应时间确实有问题。
一次 HashSet 所引起的并发问题
1.6W star 的 JCSprout 阅读体验大提升
一份针对于新手的多线程实践--进阶篇
前言
在上文《一份针对于新手的多线程实践》留下了一个问题:
这只是多线程其中的一个用法,相信看到这里的朋友应该多它的理解更进一步了。
再给大家留个阅后练习,场景也是类似的:
在 Redis 或者其他存储介质中存放有上千万的手机号码数据,每个号码都是唯一的,需要在最快的时间内把这些号码全部都遍历一遍。
有想法感兴趣的朋友欢迎在文末留言参与讨论🤔🤨。
网友们的方案
一份针对于新手的多线程实践
前言
前段时间在某个第三方平台看到我写作字数居然突破了 10W 字,难以想象高中 800 字作文我都得巧妙的利用换行来完成(懂的人肯定也干过😏)。
干了这行养成了一个习惯:能撸码验证的事情都自己验证一遍。
于是在上周五通宵加班的空余时间写了一个工具:
https://github.com/crossoverJie/NOWS
利用 SpringBoot
只需要一行命令即可统计自己写了多少个字。
1 | java -jar nows-0.0.1-SNAPSHOT.jar /xx/Hexo/source/_posts |
利用责任链模式设计一个拦截器
前言
近期在做 Cicada 的拦截器功能,正好用到了责任链模式。
这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。
责任链模式
先来看看什么是责任链模式。
引用一段维基百科对其的解释:
责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。
光看这段描述可能大家会觉得懵,简单来说就是该设计模式用于对某个对象或者请求进行一系列的处理,这些处理逻辑正好组成一个链条。
下面来简单演示使用与不使用责任链模式有什么区别和优势。