当前位置: 首页 > news >正文

asp.net core系统记录当前在线人数

实时记录当前在线人数,登录后保持120秒在线状态,在线状态保存在缓存中,采用滑动过期,在120秒内请求了系统,自动续活120秒;超过时间则移除用户在线状态;

  • 需要在登录过滤器标记用户在线状态
  • 需要排除循环请求的url,比如定时请求的待办数量
  • 登录成功后标记用户在线

web记录当前在线人数状态

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Caching;
using System.Text;
using System.Threading.Tasks;namespace WuZiFenGongSiInfomation.Models
{/// <summary>/// 当前在线人数/// </summary>/// 2024-12-26 9:57:09, wanghaolipublic class OnlineUserAmount{static System.Collections.Concurrent.ConcurrentDictionary<string, bool> dict = new System.Collections.Concurrent.ConcurrentDictionary<string, bool>();/// <summary>/// 添加在线人/// </summary>/// <param name="userId">用户主键id</param>/// 2024-12-26 9:57:09, wanghaolipublic static void AddUserOnline(string userId){dict.TryAdd(userId, true);System.Runtime.Caching.MemoryCache.Default.AddOrGetExisting("AddUserOnline." + userId, 1, new CacheItemPolicy(){SlidingExpiration = TimeSpan.FromSeconds(120),RemovedCallback = (args) =>{string userId2 = args.CacheItem.Key;System.Diagnostics.Debug.WriteLine("移除用户在线状态 ,key=" + userId2);LogHelpter.AddLog("移除用户在线状态,key=" + userId2, null, "UserOnline");string userId3 = userId2.Replace("AddUserOnline.","");bool removeResult = dict.TryRemove(userId3, out bool k);if (removeResult){System.Diagnostics.Debug.WriteLine("移除用户在线状态成功,key=" + userId2);LogHelpter.AddLog("移除用户在线状态成功,key=" + userId2, null, "UserOnline");}}});}/// <summary>/// 标记用户在线,续活/// </summary>/// <param name="userId"></param>/// 2024-12-26 10:04:09,   wanghaolipublic static void VisitUseStatCache(string userId){string key = "AddUserOnline." + userId;bool exists = System.Runtime.Caching.MemoryCache.Default.Contains(key);if (exists){               }else{AddUserOnline(userId);}System.Diagnostics.Debug.WriteLine("激活用户在线状态,key=" + userId);LogHelpter.AddLog("激活用户在线状态,key=" + userId,null, "UserOnline");}/// <summary>/// 当前在线人数/// </summary>/// <returns></returns>public static int GetOnlineUserAmount(){return dict.Count;}}
}

相关文章:

asp.net core系统记录当前在线人数

实时记录当前在线人数&#xff0c;登录后保持120秒在线状态&#xff0c;在线状态保存在缓存中&#xff0c;采用滑动过期&#xff0c;在120秒内请求了系统&#xff0c;自动续活120秒&#xff1b;超过时间则移除用户在线状态&#xff1b; 需要在登录过滤器标记用户在线状态需要排…...

秒杀场景的设计思考

秒杀场景的设计思考 在学习Redis的之后&#xff0c;一个绕不开的话题就是秒杀系统的设计。本文将从下面&#x1f447;&#x1f3fb;几个方面展开一下个人简单的理解&#xff1a; 秒杀场景的介绍设计的核心思路怎么限流、削峰、异步planB总结 ‍ 秒杀场景的介绍 秒杀场景是…...

快速掌握Haproxy原理架构

文章目录 一、原理架构二、无负载均衡三、四层负载均衡的工作流程四、七层负载均衡工作流程五、基础属性mode 属性retries 属性maxconn 属性clitimeout 属性servtimeout 属性states uri 属性 一、原理架构 四层tcp代理&#xff1a;Haproxy仅在客户端和服务器之间双向转发流量&…...

基于Centos7.X系统端口占用处理

1、查看当前端口占用情况 使用 netstat 查看系统中占用的端口和相关的进程。 netstat -tuln 或者 ss -tnl 选项解释&#xff1a; -t 显示 TCP 连接-u 显示 UDP 连接-l 显示监听的端口-n 以数字形式显示端口号和 IP 2、具体进程的pid netstat -anp | grep <port_numb…...

MySQL的索引失效的原因有那些

1. 数据类型不匹配 详细说明&#xff1a;MySQL在比较不同数据类型的值时&#xff0c;可能会尝试进行隐式转换。如果这种转换导致了复杂度增加或无法直接利用索引&#xff0c;则会导致索引失效。 实例与解决方案&#xff1a; -- 错误示例&#xff1a;数据类型不匹配 select *…...

Java重要面试名词整理(十):Kafka

文章目录 Kafka简介相关概念Kraft集群 Kafka收发消息梳理客户端工作机制消费者分组消费机制生产者拦截器机制消息序列化机制消息分区路由机制生产者消息缓存机制发送应答机制生产者消息幂等性生产者消息事务 Kafka集群架构设计-Kafka的Zookeeper元数据梳理Leader Partition选举…...

内置ALC的前置放大器D2538A/D3308

一、概述 D2538A/D3308是芯谷科技推出的带有ALC&#xff08;自动电平控制&#xff09;的前置音频放大器芯片&#xff0c;最初产品为单声道/立体声收录机及盒式录音机而开发&#xff0c;作为录音/回放的磁头放大器使用&#xff1b;由于产品的高增益、低噪声及ALC外部可调的特性&…...

04-微服务02

我们将黑马商城拆分为5个微服务&#xff1a; 用户服务 商品服务 购物车服务 交易服务 支付服务 由于每个微服务都有不同的地址或端口&#xff0c;相信大家在与前端联调的时候发现了一些问题&#xff1a; 请求不同数据时要访问不同的入口&#xff0c;需要维护多个入口地址…...

Java中的this关键字详解:深入理解与应用

目录 一、this关键字的基本概念 二、this指代当前对象 示例&#xff1a; 三、this区分成员变量与方法参数 示例&#xff1a; 四、使用this()调用构造方法 示例&#xff1a; 五、使用this传递当前对象 示例&#xff1a; 六、this的其他注意事项输出结果&#xff1a; …...

2、C#基于.net framework的应用开发实战编程 - 设计(二、四) - 编程手把手系列文章...

二、设计&#xff1b; 二&#xff0e;四、制定设计规范&#xff1b; 编码规范在软件编程里起到了非常重要的作用&#xff0c;主要是让代码更加的规范化&#xff0c;更加的简洁&#xff0c;更加的漂亮&#xff0c;更加的能够面向对象显示。 以前那个系列就有发布C#的编码规范的文…...

设置首选网络类型以及调用Android框架层的隐藏API

在Android SDK中提供的framework.jar是阉割版本的&#xff0c;比如有些类标记为hide&#xff0c;这些类不会被打包到这个jar中&#xff0c;而有些只是类中的某个方法或或属性被标记为hide&#xff0c;则这些类或属性会被打包到framework.jar&#xff0c;但是我们无法调用&#…...

“Gold-YOLO:基于聚合与分发机制的高效目标检测新范式”

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月26日8点00分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文源地址&#xff08;有视频&#xf…...

神经网络-AlexNet

AlexNet是在2012年的ImageNet竞赛后&#xff0c;整理发表的文章&#xff0c;也是对CNN网络的衍生。 网络结构 AlexNet网络结构如下图所示&#xff0c;网络分为了上下两部分&#xff0c;对应两个不同的GPU训练&#xff0c;可以更好的利用GPU算力。只有在特殊的网络层后&#x…...

Hutool 发送 HTTP 请求的几种常见写法

最简单的 GET 请求&#xff1a; String result HttpUtil.get("https://www.baidu.com");带参数的 GET 请求&#xff1a; // 方法1: 直接拼接URL参数 String result HttpUtil.get("https://www.baidu.com?name张三&age18");// 方法2: 使用 HashMap…...

【Linux】进度条

本文中&#xff0c;我们来写一个进度条。 本文大纲&#xff1a; 写一个命令行版的进度条。 1.回车换行 2.缓冲区问题&#xff08;本文不深究&#xff09; ​ 2.1测试代码 3.写一个什么样的进度条&#xff1f; ​ version1 ​ version2 回车换行 这俩不是一个概念&…...

【zookeeper核心源码解析】第四课:客户端与服务端读写的io核心流程

系列文章目录 【zookeeper核心源码解析】第一课&#xff1a;zk启动类核心流程序列图 【zookeeper核心源码解析】第二课&#xff1a;俯瞰QuorumPeer启动核心流程&#xff0c;实现选举关键流程 【zookeeper核心源码解析】第三课&#xff1a;leader与follower何时开始同步&#…...

强化学习蘑菇书笔记

绪论 强化学习就是一个智能体在一个不确定的环境中最大化它的奖励。智能体在一个环境中获取某个状态后&#xff0c;做一个动作&#xff0c;也称为决策&#xff0c;在环境中执行这个决策以后&#xff0c;会有一个奖励。尽可能多地获得更多的奖励。 强化学习概述 强化学习与监…...

《机器学习》——线性回归模型

文章目录 线性回归模型简介一元线性回归模型多元线性回归模型误差项分析一元线性模型实例完整代码 多元线性模型实例完整代码 线性回归模型简介 线性回归是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。 相关关系&…...

Linux(Centos 7.6)网卡信息没有了问题处理

1.问题现象 虚拟机打开后&#xff0c;使用ifconfig查看IP信息&#xff0c;虚拟机默认的网卡名称是ens33&#xff0c;ifconfig没有看到相关问题&#xff0c;远程连接工具Xshell也不能正常访问该虚拟机。 [rootnode1 ~]# ifconfig lo: flags73<UP,LOOPBACK,RUNNING> mtu…...

WEB攻防-通用漏洞-文件上传-js验证-MIME验证-user.ini-语言特征

目录 定义 1.前端验证 2.MIME验证 3.htaccess文件和.user. ini 4.对内容进行了过滤&#xff0c;做了内容检测 5.[ ]符号过滤 6.内容检测php [] {} ; 7.()也被过滤了 8.反引号也被过滤 9.文件头检测 定义 文件上传漏洞是指攻击者上传了一个可执行文件&#xff08;如木马…...

颠覆式效率革命:Krita智能选区插件重新定义图像分割工作流

颠覆式效率革命&#xff1a;Krita智能选区插件重新定义图像分割工作流 【免费下载链接】krita-vision-tools Krita plugin which adds selection tools to mask objects with a single click, or by drawing a bounding box. 项目地址: https://gitcode.com/gh_mirrors/kr/kr…...

OpenClaw版本升级:无缝迁移Kimi-VL-A3B-Thinking服务的实践

OpenClaw版本升级&#xff1a;无缝迁移Kimi-VL-A3B-Thinking服务的实践 1. 升级前的准备工作 上周五晚上&#xff0c;当我正准备下班时&#xff0c;收到了OpenClaw团队发来的新版本发布邮件。作为一个重度依赖OpenClawKimi-VL-A3B-Thinking组合的开发者&#xff0c;我既期待新…...

醒醒吧,你当不了AI的老板-AI时代重新思考普通程序员的职业之路

“人是BOSS&#xff0c;AI是员工”——这话听着爽&#xff0c;但轮得到你吗&#xff1f;最近&#xff0c;AI大神Karpathy发了一条推文&#xff0c;分享如何用LLM构建个人知识库&#xff0c;引发了不少讨论。而真正让我反复琢磨的&#xff0c;是一个更底层的问题&#xff1a;人和…...

千问3.5-2B轻量部署最佳实践:Docker容器资源限制+GPU显存预分配配置

千问3.5-2B轻量部署最佳实践&#xff1a;Docker容器资源限制GPU显存预分配配置 1. 千问3.5-2B模型简介 千问3.5-2B是Qwen系列中的轻量级视觉语言模型&#xff0c;具备图片理解与文本生成能力。这个2B参数规模的模型在保持较高性能的同时&#xff0c;显著降低了部署门槛和资源…...

Qwen3-ForcedAligner-0.6B效果展示:WAV/MP3混合输入下98.2%字级对齐准确率

Qwen3-ForcedAligner-0.6B效果展示&#xff1a;WAV/MP3混合输入下98.2%字级对齐准确率 1. 惊艳效果开场&#xff1a;语音识别的精准新标杆 想象一下这样的场景&#xff1a;一段包含中文、英文混合的会议录音&#xff0c;背景还有轻微的键盘敲击声。传统的语音识别工具可能只能…...

Intv_AI_MK11自动化测试脚本生成:基于自然语言描述的测试用例实现

Intv_AI_MK11自动化测试脚本生成&#xff1a;基于自然语言描述的测试用例实现 1. 引言&#xff1a;当测试遇上自然语言处理 "测试工程师小王盯着屏幕上的登录页面&#xff0c;手指在键盘上敲击着&#xff1a;driver.find_element(By.ID, username).send_keys(testuser).…...

企业微信外部群自动化回复避坑指南:RPA如何稳定接管WebSocket连接不断线

企业微信外部群自动化回复的WebSocket稳定性实战&#xff1a;从心跳包到风控规避 当你的RPA机器人第三次在凌晨2点因为WebSocket连接断开而停止响应时&#xff0c;技术负责人发来的质问消息比企业微信的报警通知更让人心惊。这不是简单的技术故障&#xff0c;而是关乎业务流程连…...

GLM-4-9B-Chat-1M效果惊艳:长篇小说逻辑梳理+代码库跨文件调试实录

GLM-4-9B-Chat-1M效果惊艳&#xff1a;长篇小说逻辑梳理代码库跨文件调试实录 1. 开篇&#xff1a;本地大模型的突破性体验 当我第一次用GLM-4-9B-Chat-1M处理完一整部长篇小说后&#xff0c;真的被震撼到了。这不是那种需要联网等待的云端服务&#xff0c;而是在我自己电脑上…...

千问3.5-9B领域适配:OpenClaw法律文书处理特化

千问3.5-9B领域适配&#xff1a;OpenClaw法律文书处理特化 1. 为什么需要法律领域的特化模型 去年处理一起商业合同时&#xff0c;我花了整整三天时间逐条核对法条引用是否准确。这种重复性工作让我开始思考&#xff1a;能否用AI辅助完成法律文书的专项处理&#xff1f;通用大…...

LightOnOCR-2-1B作品分享:多语言识别效果实测,支持中日英法等

LightOnOCR-2-1B作品分享&#xff1a;多语言识别效果实测&#xff0c;支持中日英法等 1. 引言&#xff1a;多语言OCR的现实需求 在全球化的商业环境中&#xff0c;企业每天需要处理来自不同国家的文档、票据和表单。传统OCR工具往往面临两大挑战&#xff1a;一是对多语言混合…...