Easter79 Easter79
4年前
Springboot+shiro+redis 限制同一账号 同时在多处登录
这里的业务场景,就类似与qq账号不能同时在多部手机登录一样,后者会强制前者下线,被强制下线的用户重新登录又挤掉前者,如此反复.....一.说下我的思路(不供参考)1\.利用Cookie里面的JESSIONID,其实也就是sessionid,是可以获取到的2.利用Deque双向队列,最大maxSize设置为13
Wesley13 Wesley13
4年前
C#的单例模式 以及 消息分发机制实现
C单例模式,多线程安全//Singleton.cspublic class Singleton<T where T : new(){    private static T _instance;    private static object _lock  new object();
Easter79 Easter79
4年前
SynchronousQueue 介绍
SynchronousQueue是一种特殊的阻塞队列,不同于LinkedBlockingQueue(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fvickyqi.com%2F2015%2F11%2F23%2FJDK%25E5%25B9%25B6%25E5%258F%2591%25E5%2
Wesley13 Wesley13
4年前
Java 基础知识(七)
1.创建线程池1)newCacheThreadPool 创建一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程 2)newFixedThreadPool  创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待 3)newScheduledThreadPool  创建一个定长线程池,支持
Stella981 Stella981
4年前
Kafka、RabbitMQ、RocketMQ等 消息中间件 介绍和对比
文章目录1、前言(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fu014597198%2Farticle%2Fdetails%2F100563722%231_1)2、概念(https://www.oschina.net/
Stella981 Stella981
4年前
LiteOS:盘点那些重要的数据结构
摘要:本文会给读者介绍下LiteOS源码中常用的几个数据结构,包括:双向循环链表LOS\_DL\_LIST,优先级队列PriorityQueue,排序链表SortLinkList等。在学习HuaweiLiteOS源代码的时候,常常会遇到一些数据结构的使用。如果没有掌握这它们的用法,阅读LiteOS源代码的时候会很费解、很吃力。本文会给读
Stella981 Stella981
4年前
Spring Cloud(七)《基于RabbitMQ消息总线方式刷新配置服务》
!(https://oscimg.oschina.net/oscnet/2bcf28bf1419a03a3e9ecd562c8fc5dbcd5.jpg)作者:付政委读书不觉已春深,一寸光阴一寸金。不是道人来引笑,周情孔思正追寻。微信公众号:bugstack虫洞栈沉淀、分享、成长,专注于原创专题案例,以最易学习编程的方式分享知识
Wesley13 Wesley13
4年前
(转)Java多线程
前言:   在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识Blockin
Stella981 Stella981
4年前
Kafka 发送消息过程中拦截器的用途?
消息在通过send()方法发往broker的过程中,有可能需要经过拦截、序列化器(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fmp.weixin.qq.com%2Fs%3F__biz%3DMzU3OTc1MDM1Mg%3D%3D%26mid%3D2247497846%26i
程序员小五 程序员小五
2年前
语音消息使用 remote 地址在 android 手机上播放失败
由于remote地址中有特殊字符,导致播放报错,可以把地址使用encodeURI转换后即可正常播放。示例代码letinnerAudioContextuni.createInnerAudioContext();innerAudioContext.autopl