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

今日总结:雪花算法,拉取在线用户

雪花算法:

public class SnowflakeIdGenerator {private final long epoch = 1626804000000L; // 定义起始时间戳,这里设置为2021-07-21 00:00:00 UTCprivate final long workerIdBits = 5L; // 机器ID所占的位数private final long sequenceBits = 10L; // 序列号所占的位数private final long maxWorkerId = -1L ^ (-1L << workerIdBits); // 最大的机器ID,用于做位运算private final long sequenceMask = -1L ^ (-1L << sequenceBits); // 序列号的掩码,用于取低位private long workerId; // 机器IDprivate long sequence = 0L; // 序列号private long lastTimestamp = -1L; // 上次生成ID的时间戳/*** 构造函数* @param workerId 机器ID*/public SnowflakeIdGenerator(long workerId) {if (workerId > maxWorkerId || workerId < 0) {throw new IllegalArgumentException(String.format("Worker ID must be between 0 and %d", maxWorkerId));}this.workerId = workerId;}/*** 生成下一个唯一ID* @return long 类型的唯一ID*/public synchronized long nextId() {long timestamp = System.currentTimeMillis(); // 获取当前时间戳// 如果当前时间小于上次ID生成的时间戳,则说明系统时钟回退过,抛出异常if (timestamp < lastTimestamp) {throw new RuntimeException("Clock moved backwards. Refusing to generate id");}// 如果是同一时间生成的,则进行序列号累加if (lastTimestamp == timestamp) {sequence = (sequence + 1) & sequenceMask; // sequence自增,并通过sequenceMask防止溢出if (sequence == 0) {timestamp = tilNextMillis(lastTimestamp); // 如果sequence溢出,则阻塞到下一个毫秒,获取新的时间戳}} else {sequence = 0L; // 如果是新的时间戳,则将序列号置为0}lastTimestamp = timestamp; // 更新上次生成ID的时间戳// 使用位运算生成最终的ID,并返回return ((timestamp - epoch) << (workerIdBits + sequenceBits))| (workerId << sequenceBits)| sequence;}/*** 阻塞到下一个毫秒,直到获得新的时间戳* @param lastTimestamp 上次生成ID的时间戳* @return 当前时间戳*/private long tilNextMillis(long lastTimestamp) {long timestamp = System.currentTimeMillis();while (timestamp <= lastTimestamp) {timestamp = System.currentTimeMillis();}return timestamp;}/*** 主函数,用于测试生成ID* @param args 参数*/public static void main(String[] args) {SnowflakeIdGenerator idGenerator = new SnowflakeIdGenerator(1); // 设置机器IDfor (int i = 0; i < 10; i++) {long id = idGenerator.nextId(); // 生成新的IDSystem.out.println("Generated Id: " + id); // 打印生成的ID}}
}

拉取在线用户的思路:登录过后开启线程这就是在线用户,将其线程放入集合中管理,key为ID,遍历集合则可以获取到所有的在线用户
 

获取在线用户的部分代码:

// 集合遍历,遍历hashmap的key
Iterator<String> iterator = hm.keySet().iterator();
String onlineUserList = "";
while (iterator.hasNext()) {onlineUserList += iterator.next() + " ";
}
return onlineUserList;

  1. Iterator<String> iterator = hm.keySet().iterator();:这行代码通过 hm.keySet().iterator() 获取了HashMap hm 的所有键的迭代器(iterator)。hm.keySet() 返回HashMap中所有键的集合,然后 iterator() 方法返回这个集合的迭代器,用于逐个访问集合中的元素。

  2. String onlineUserList = "";:这行代码定义了一个空字符串 onlineUserList,用来存储遍历得到的所有键。

  3. while (iterator.hasNext()) {:这是一个 while 循环,它的条件是 iterator.hasNext(),即迭代器中是否还有下一个元素。如果有,进入循环体。

  4. onlineUserList += iterator.next() + " ";:在循环体内部,iterator.next() 方法返回迭代器的下一个键,并将其添加到 onlineUserList 字符串后面,同时在每个键之间添加一个空格。

  5. return onlineUserList;:最后,当迭代器遍历完所有键后,退出循环,并返回拼接好的 onlineUserList 字符串,其中包含了HashMap中所有键的列表。

查找数据库某个字段的所有数据:

        try {// 加载并注册JDBC驱动Class.forName("com.mysql.cj.jdbc.Driver");//  Class.forName("com.mysql.jdbc.Driver");// 建立数据库连接conn = DriverManager.getConnection(URL, USER, PASSWORD);} catch (ClassNotFoundException e) {throw new RuntimeException(e);} catch (SQLException e) {throw new RuntimeException(e);}//遍历数据库// 创建Statement对象//这个也是个接口,用于执行不带参的,PreparedStatement pstmt是其子接口,执行带参的语句Statement stmt = null;try {stmt = conn.createStatement();} catch (SQLException e) {throw new RuntimeException(e);}try {// 执行查询String sql = "SELECT userId FROM account";ResultSet rs = stmt.executeQuery(sql);String onlineUserList="";// 处理查询结果while (rs.next()) {// 假设userId是整型,根据实际情况调整String userId = rs.getString("userId");onlineUserList+=userId+" ";}return onlineUserList;} catch (SQLException e) {throw new RuntimeException(e);} finally {try {if(rs!=null){rs.close();}if(stmt!=null){stmt.close();}} catch (SQLException e) {throw new RuntimeException(e);}}

相关文章:

今日总结:雪花算法,拉取在线用户

雪花算法&#xff1a; public class SnowflakeIdGenerator {private final long epoch 1626804000000L; // 定义起始时间戳&#xff0c;这里设置为2021-07-21 00:00:00 UTCprivate final long workerIdBits 5L; // 机器ID所占的位数private final long sequenceBits 10L; /…...

前瞻断言与后瞻断言:JavaScript 正则表达式的秘密武器

JavaScript 中的前瞻断言&#xff08;lookahead&#xff09;和后瞻断言&#xff08;lookbehind&#xff09;相信用过的小伙伴就知道它的威力了&#xff0c;在一些特定的需求场景下&#xff0c;可以做到四两拨千斤的作用&#xff0c;今天让我们来盘点一下在 JavaScript 正则表达…...

昇思MindSpore学习总结十六 —— 基于MindSpore的GPT2文本摘要

1、mindnlp 版本要求 !pip install tokenizers0.15.0 -i https://pypi.tuna.tsinghua.edu.cn/simple # 该案例在 mindnlp 0.3.1 版本完成适配&#xff0c;如果发现案例跑不通&#xff0c;可以指定mindnlp版本&#xff0c;执行!pip install mindnlp0.3.1 !pip install mindnlp …...

React Router 6笔记

一个路由就是一个映射关系 key为路径&#xff0c;value可能是function或component 路由分类 后端路由&#xff08;node&#xff09; value是function&#xff0c;用来处理客户端提交的请求注册路由&#xff1a;router.get(path, function(req, res))工作过程&#xff1a;当…...

Android init 中的wait_for_property指令

Android开机优化系列文档-CSDN博客 Android 14 开机时间优化措施汇总-CSDN博客Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客A…...

智能合约语言(eDSL)—— 并行化方案——调度算法

3、调度算法 处理区块的时候,我们会同时启动多个线程去执行多个交易,这个时候我们需要一个良好的调度策略,来决定当前的线程是应该执行交易还是验证交易、提前结束还是立刻重新执行交易等,只有有一个良好调度策略才能保证所有交易都稳定有序的执行; 线程数量 这是一个不…...

vue2.0中如何实现数据监听

vue2中实现数据监听的原理 在Vue 2中&#xff0c;数据监听是通过ES5的Object.defineProperty实现的。Vue在初始化数据对象时&#xff0c;会遍历data对象&#xff0c;并使用Object.defineProperty为每个属性设置getter和setter。当你尝试读取或修改数据属性时&#xff0c;这些g…...

kafka开启kerberos和ACL

作者&#xff1a;恩慈 一、部署kafka-KB包 1&#xff0e;上传软件包 依次点击 部署中心----部署组件----上传软件包 选择需要升级的kafka版本并点击确定 2&#xff0e;部署kafka 依次点击部署中心----部署组件----物理/虚拟机部署----选择集群----下一步 选择手动部署-…...

QT+winodow 代码适配调试总结(三)

问题描述: 1、开发测试环境为: A: window10 64位 B: QT版本为4.8.6 C:采用VS2017 C++ Compiler 9.0 (x86)编译器版本 根据总结(二)经验,开发环境的可执行程序显示正常; 2、新的环境运行的时候显示乱码; 经过查阅资料,还是代码环境编码配置的问题,下面为解…...

Linux之旅:常用的指令,热键和权限管理

目录 前言 1. Linux指令 &#xff08;1&#xff09; ls &#xff08;2&#xff09; pwd 和 cd &#xff08;3&#xff09;touch 和 mkdir &#xff08;4&#xff09; rmdir 和 rm &#xff08;5&#xff09;cp &#xff08;6&#xff09;mv &#xff08;7&#xff09;…...

简单实用的企业舆情安全解决方案

前言&#xff1a;企业舆情安全重要吗&#xff1f;其实很重要&#xff0c;尤其面对负面新闻&#xff0c;主动处理和应对&#xff0c;可以掌握主动权&#xff0c;避免股价下跌等&#xff0c;那么如何做使用简单实用的企业舆情解决方案呢&#xff1f; 背景 好了&#xff0c;提取词…...

【中项】系统集成项目管理工程师-第2章 信息技术发展-2.1信息技术及其发展-2.1.1计算机软硬件与2.1.2计算机网络

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…...

SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表

Sharding-JDBC系列 1、Sharding-JDBC分库分表的基本使用 2、Sharding-JDBC分库分表之SpringBoot分片策略 3、Sharding-JDBC分库分表之SpringBoot主从配置 4、SpringBoot集成Sharding-JDBC-5.3.0分库分表 5、SpringBoot集成Sharding-JDBC-5.3.0实现按月动态建表分表 前言 …...

ubuntu 上安装中文输入法

在Ubuntu上安装中文输入法&#xff0c;通常有以下几种方法&#xff1a; 方法一&#xff1a;使用Fcitx输入法框架和搜狗输入法 安装Fcitx&#xff1a; sudo apt update sudo apt install fcitx fcitx-bin fcitx-table-all 安装搜狗输入法&#xff1a; 首先&#xff0c;从搜狗…...

Postman导出excel文件

0 写在前面 在我们后端写接口的时候&#xff0c;前端页面还没有出来&#xff0c;我们就得先接口测试&#xff0c;在此记录下如何使用postman测试导出excel接口。 如果不会使用接口传参可以看我这篇博客如何使用Postman 1 方法一 2 方法二 3 写在末尾 虽然在代码中写入文件名…...

你还在手动构建Python项目吗?PyBuilder让一切自动化!

在 Python 项目开发中&#xff0c;构建和管理项目是一项繁琐但必不可少的工作。你可能需要处理依赖项、运行测试、生成文档等。这时候&#xff0c;PyBuilder 出场了。它是一个强大的构建自动化工具&#xff0c;可以帮助你简化项目管理&#xff0c;让你更专注于编写代码。 什么…...

WebRTC音视频-前言介绍

目录 效果预期 1&#xff1a;WebRTC相关简介 1.1&#xff1a;WebRTC和RTC 1.2&#xff1a;WebRTC前景和应用 2&#xff1a;WebRTC通话原理 2.1&#xff1a;媒体协商 2.2&#xff1a;网络协商 2.3&#xff1a;信令服务器 效果预期 1&#xff1a;WebRTC相关简介 1.1&…...

centos/rocky容器中安装xfce、xrdp记录

最近需要一台机器来测试rdp连接&#xff0c;使用容器linuxxfcexrdp来实现&#xff0c;在此记录下主要步骤 启动rockylinux容器&#xff08;其他linux发行版步骤应该相似&#xff09; docker run -it -p 33891:3389 rockylinux:9.3 bash容器内操作 # 省略替换软件源步骤 ...# …...

实战:Eureka的概念作用以及用法详解

概叙 什么是Eureka&#xff1f; Netflix Eureka 是一款由 Netflix 开源的基于 REST 服务的注册中心&#xff0c;用于提供服务发现功能。Spring Cloud Eureka 是 Spring Cloud Netflix 微服务套件的一部分&#xff0c;基于 Netflix Eureka 进行了二次封装&#xff0c;主要负责…...

jupyter_contrib_nbextensions安装失败问题

目录 1.文件路径长度问题 2.jupyter不出现Nbextensions选项 1.文件路径长度问题 问题&#xff1a; could not create build\bdist.win-amd64\wheel\.\jupyter_contrib_nbextensions\nbextensions\contrib_nbextensions_help_item\contrib_nbextensions_help_item.yaml: No su…...

设计模式-Git-其他

目录 设计模式&#xff1f; 创建型模式 单例模式&#xff1f; 啥情况需要单例模式 实现单例模式的关键点&#xff1f; 常见的单例模式实现&#xff1f; 01、饿汉式如何实现单例&#xff1f; 02、懒汉式如何实现单例&#xff1f; 03、双重检查锁定如何实现单例&#xff…...

【C#】计算两条直线的交点坐标

问题描述 计算两条直线的交点坐标&#xff0c;可以理解为给定坐标P1、P2、P3、P4&#xff0c;形成两条线&#xff0c;返回这两条直线的交点坐标&#xff1f; 注意区分&#xff1a;这两条线是否垂直、是否平行。 代码实现 斜率解释 斜率是数学中的一个概念&#xff0c;特别是…...

在项目服务器部署git 并实现自动提交

以下场景适合在服务器当中使用git 方便提交代码&#xff0c;同时不需要外部的git仓库&#xff08;码云gitee或者github作为管理平台&#xff09;。依靠服务器本身ssh 连接协议做为git提交的地址&#xff0c;同时利用钩子自动同步项目代码 首先下载git sudo apt update sudo a…...

前缀匹配工具之IP-Prefix

目录 基本概念: 技术背景&#xff1a; 用户需求&#xff1a; 安全需求&#xff1a; 企业内部的访问控制需求&#xff1a; IP-Prefix的配置与语句分析&#xff1a; 调用方式&#xff1a; 尾声 基本概念: IP-Prefix&#xff0c;即IP前缀&#xff0c;相比传统ACL&#xff0c;它能…...

等级保护测评案例分享及合规建议

一、黑龙江省等级保护测评概述 黑龙江省等级保护测评&#xff08;简称“等保测评”&#xff09;是依据国家网络安全等级保护制度的要求&#xff0c;对信息系统进行安全等级划分和安全保护能力的评估。等保测评不仅能够帮助企业和组织发现潜在的安全风险&#xff0c;还能够指导…...

GOLLIE : ANNOTATION GUIDELINES IMPROVE ZERO-SHOT INFORMATION-EXTRACTION

文章目录 题目摘要引言方法实验消融研究 题目 Techgpt-2.0:解决知识图谱构建任务的大型语言模型项目 论文地址&#xff1a;https://arxiv.org/abs/2310.03668 摘要 大型语言模型 (LLM) 与指令调优相结合&#xff0c;在泛化到未见过的任务时取得了重大进展。然而&#xff0c;它…...

2024-07-19 Unity插件 Odin Inspector9 —— Validation Attributes

文章目录 1 说明2 验证特性2.1 AssetsOnly / SceneObjectsOnly2.2 ChildGameObjectsOnly2.3 DisallowModificationsIn2.4 FilePath2.5 FolderPath2.6 MaxValue / MinValue2.7 MinMaxSlider2.8 PropertyRange2.9 Required2.10 RequiredIn2.11 RequiredListLength2.12 ValidateIn…...

跨平台WPF音乐商店应用程序

目录 一 简介 二 设计思路 三 源码 一 简介 支持在线检索音乐&#xff0c;支持实时浏览当前收藏的音乐及音乐数据的持久化。 二 设计思路 采用MVVM架构&#xff0c;前后端分离&#xff0c;子界面弹出始终位于主界面的中心。 三 源码 视窗引导启动源码&#xff1a; namesp…...

设计模式简述(一)

定义&#xff1a;设计模式指的是在软件开发过程中&#xff0c;经过验证的&#xff0c;用于解决在特定环境下&#xff0c;重复出现的&#xff0c;特定问题的解决方案。创建型设计模式关注对象的创建过程&#xff0c;提供了更灵活、可扩展的对象创建机制。结构型设计模式用于解决…...

OSI参考模型:解析网络通信的七层框架

引言 在现代计算机网络中&#xff0c;OSI&#xff08;开放式系统互联&#xff09;参考模型是理解和设计网络通信协议的基础。1978年由国际标准化组织&#xff08;ISO&#xff09;提出&#xff0c;OSI模型定义了网络通信的七层结构&#xff0c;每一层都承担着特定的功能&#x…...

家电网站设计/泰安做网站公司

问题其他情况情况一情况二情况三总结问题 今日在练习SSM整合时&#xff0c;启动服务访问时遇见一个405异常 前端请求的方式是POST方式 后端页面响应使用的是请求转发 显式修改后端接收方式也不行 后将页面响应的改为重定向就可以了 其他情况 情况一 前端使用post方式…...

国外扁平化网站/编写网页的软件

关于VIEW 登陆后 键盘无法输入的问题。主要因为使用了360防火墙的缘故&#xff01; PCOIP为VMware私有协议&#xff0c;不在360信任列表。使用RDP方式没有此问题。 解决方法有两种&#xff1a;1.打开360安全卫士&#xff0c;进入木马防火墙————关闭键盘记录防护 &#xff…...

b s架构做网站好处/品牌营销策划书

UG570 在线配置相关&#xff1a; 1、动态编辑Xilinx FPGA内LUT https://mp.weixin.qq.com/s/UgL3XbxGSskd5SK7xDlJUw 2、在线修改Xilinx FPGA嵌入式RAM比特流 https://mp.weixin.qq.com/s/MxRZqKQVSZ06lIWR5rEHoA 注&#xff1a; 最近在微信公众号确实发现不少好文章&#xff…...

公安局打电话网站备案/广告联盟下载app

作为和杀毒软件的对抗技术出现的无特征码处理中一个比较小众&#xff0c;但是效果明显的技术就是.dll填充。而且作为一个上手即可使用毫无副作用的技术&#xff0c;作为预处理效果也非常明显。但是一直很疑惑为什么可以把输入表中的.dll填充了却不会影响程序的运行。下面会从PE…...

体育网站怎样做香功/谷歌推广怎么样

本文与大家分享一些Python编程语言的入门书籍&#xff0c;其中不乏经典。我在这里分享的&#xff0c;大部分是这些书的英文版&#xff0c;如果有中文版的我也加上了。有关书籍的介绍&#xff0c;大部分截取自是官方介绍。Python基础教程&#xff08;Begining Python&#xff09…...

商城网站模板源码/网络视频营销的案例

本文由5t5发表于TesterHome社区网站&#xff0c;点击原文链接可与作者直接交流。 本次帖子单刀直入&#xff0c;直接说点&#xff0c;谨慎查阅。 兼容性存在的意义 很简单&#xff0c;就是为了把覆盖普及大众的机型上项目暴露出来的问题全部扼杀掉&#xff0c;有效的改善/避免…...