一份针对于新手的多线程实践--进阶篇
前言
在上文《一份针对于新手的多线程实践》留下了一个问题:
这只是多线程其中的一个用法,相信看到这里的朋友应该多它的理解更进一步了。
再给大家留个阅后练习,场景也是类似的:
在 Redis 或者其他存储介质中存放有上千万的手机号码数据,每个号码都是唯一的,需要在最快的时间内把这些号码全部都遍历一遍。
有想法感兴趣的朋友欢迎在文末留言参与讨论🤔🤨。
网友们的方案
一份针对于新手的多线程实践
前言
前段时间在某个第三方平台看到我写作字数居然突破了 10W 字,难以想象高中 800 字作文我都得巧妙的利用换行来完成(懂的人肯定也干过😏)。
干了这行养成了一个习惯:能撸码验证的事情都自己验证一遍。
于是在上周五通宵加班的空余时间写了一个工具:
https://github.com/crossoverJie/NOWS
利用 SpringBoot
只需要一行命令即可统计自己写了多少个字。
1 | java -jar nows-0.0.1-SNAPSHOT.jar /xx/Hexo/source/_posts |
利用责任链模式设计一个拦截器
前言
近期在做 Cicada 的拦截器功能,正好用到了责任链模式。
这个设计模式在日常使用中频率还是挺高的,借此机会来分析分析。
责任链模式
先来看看什么是责任链模式。
引用一段维基百科对其的解释:
责任链模式在面向对象程式设计里是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。
光看这段描述可能大家会觉得懵,简单来说就是该设计模式用于对某个对象或者请求进行一系列的处理,这些处理逻辑正好组成一个链条。
下面来简单演示使用与不使用责任链模式有什么区别和优势。
分享几个 SpringBoot 实用的小技巧
从源码分析如何优雅的使用 Kafka 生产者
前言
在上文 设计一个百万级的消息推送系统 中提到消息流转采用的是 Kafka
作为中间件。
其中有朋友咨询在大量消息的情况下 Kakfa
是如何保证消息的高效及一致性呢?
正好以这个问题结合 Kakfa
的源码讨论下如何正确、高效的发送消息。
内容较多,对源码感兴趣的朋友请系好安全带😏(源码基于
v0.10.0.0
版本分析)。同时最好是有一定的 Kafka 使用经验,知晓基本的用法。
「造个轮子」——cicada 设计全局上下文
设计一个百万级的消息推送系统
前言
首先迟到的祝大家中秋快乐。
最近一周多没有更新了。其实我一直想憋一个大招,分享一些大家感兴趣的干货。
鉴于最近我个人的工作内容,于是利用这三天小长假憋了一个出来(其实是玩了两天🤣)。
先简单说下本次的主题,由于我最近做的是物联网相关的开发工作,其中就不免会遇到和设备的交互。
最主要的工作就是要有一个系统来支持设备的接入、向设备推送消息;同时还得满足大量设备接入的需求。
所以本次分享的内容不但可以满足物联网领域同时还支持以下场景:
- 基于
WEB
的聊天系统(点对点、群聊)。 WEB
应用中需求服务端推送的场景。- 基于 SDK 的消息推送平台。
技术选型
要满足大量的连接数、同时支持双全工通信,并且性能也得有保障。
在 Java 技术栈中进行选型首先自然是排除掉了传统 IO
。
那就只有选 NIO 了,在这个层面其实选择也不多,考虑到社区、资料维护等方面最终选择了 Netty。
最终的架构图如下:
「造个轮子」——cicada 设计一个配置模块
【译】如何高效的使用 Git
代码昨天还是运行好好的今天就不行了。
代码被删了。
突然出现了一个奇怪的 bug,但是没人知道怎么回事。
如果你出现过上面的任何一种情况,那本篇文章就是为你准备的。
除了知道 git add
, git commit
, git push
之外,Git 中还需要其他重要的技术需要掌握。长远来看对我们是有帮助的。这里我将向你展示 Git 的最佳实践。