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

实时更新UI界面

1.处理实时通信,几种方案

1:当一个用户发送一条需要实时更新的信息,我可以直接查找在线用户,通过在线用户来进行判断条件,发送更新请求

2:用户在一个需要实时更新的界面时,就不断的向服务端发送请求,然后服务端,读取数据库,返回对应的信息,然后客户端对其界面进行更新,这里发送请求的的时间间隔比较不好掌握,

3:用户在一个需要实时更新的界面时,就像服务端发送一个请求,服务端接受到请求,并不做任何处理,当某个变量变化时,服务端,返回一个更新信息,当然,这需要一个线程(监听一个变量是否改变)。

总结:其实三种方案都差不多,第二种,第三种,就收发请求没有那末频繁,但是第三种一直监听一个变量是否变化
而第一种和第三种,其实也类似的,只不过的是,第一种在服务端直接把更新请求发给了客户端,然后由客户端来判断
客户是否在这个界面,这个界面是否需要更新,第三就是判断需要更新的才发请求。这个请求在服务端种监听一个变量,
这个变量的更改又是由其它用户更新信息所造成,所以其实三种都差不多。

 比如学习通服务端处理签到,要实时更新

                        MySignIn mySignIn = (MySignIn) requestMessage.getData();mySignIn.setId(MySignInDAO.addMySignIn(mySignIn));//得到班级的idint myClassId = mySignIn.getMyClass_id();//首先更新用户自己的ui界面Message responseMessage = new Message();responseMessage.setData(mySignIn);responseMessage.setMessageType(MessageType.tea_send_sign_in_success);SocketUtil.getSocketUtil().sendMessage(socket, responseMessage);//循环,进行更新在线用户的界面// 获取每个键对应的值for (Integer userId : onlineUsers.keySet()) {Student student1 = StudentDAO.queryStudent(userId);if (student1 != null) {//找到该用户,学生信息,//判断学生是否是在班级里if(MyClass_addtion_studentDAO.queryMyclass(student1.getId(),myClassId)){//该学生在班级里,可以进行操作// 进行更新界面Socket userSocket = onlineUsers.get(userId);Message responseMessage2 = new Message();responseMessage2.setData(mySignIn);//默认没有进行签到mySignIn.setIsSignIn(1);responseMessage2.setMessageType(MessageType.stu_need_update_sign_in);//客户端获取到签到信息,应该要判断是否在班级界面,在班级界面是否是需要更新的对应班级SocketUtil.getSocketUtil().sendMessage(userSocket, responseMessage2);}else{//学生不在班级里continue;}}else{//说明在线用户不是学生,continue;}//进行查询所有的关系;是否在这个班级里,然后返回服务端,如果服务端的Controller为空,就不更新}

 通过服务端发送信息,进行处理是否需要更新ui界面。这里使用的第一种方法

2.时间类型,对应数据库datebase

 签到的发起和结束时间:类型,

private LocalDateTime start_time;
private LocalDateTime end_time;
 public static List<MySignIn> queryMySignInList(int ClassId){Connection connection = null;PreparedStatement preparedStatement =null;ResultSet resultSet = null;List<MySignIn> mySignInList = new ArrayList<>();try {//获取数据库连接connection = JDBCUtil.getJdbcUtil().getConnection();//准备数据库语句String sql = "select * from signs where sign_class_id = ? ";preparedStatement = connection.prepareStatement(sql);preparedStatement.setInt(1,ClassId);resultSet = preparedStatement.executeQuery();while(resultSet.next()) {MySignIn mySignIn = new MySignIn();mySignIn.setId(resultSet.getInt(1));mySignIn.setMyClass_id(resultSet.getInt(2));mySignIn.setSignIn_code(resultSet.getString(3));mySignIn.setStart_time((LocalDateTime) resultSet.getObject(4));mySignIn.setEnd_time((LocalDateTime) resultSet.getObject(5));mySignInList.add(mySignIn);}} catch (Exception e) {e.printStackTrace();}finally {JDBCUtil.getJdbcUtil().closeConnection(resultSet,preparedStatement,connection);}return mySignInList;}

 

相关文章:

实时更新UI界面

1.处理实时通信&#xff0c;几种方案 1&#xff1a;当一个用户发送一条需要实时更新的信息&#xff0c;我可以直接查找在线用户&#xff0c;通过在线用户来进行判断条件&#xff0c;发送更新请求 2&#xff1a;用户在一个需要实时更新的界面时&#xff0c;就不断的向服务端发…...

为什么Spring不推荐@Autowired用于字段注入

背景 Spring是Java程序员常用的框架之一。官方从Spring 4.0开始不推荐使用Autowired进行字段注入。 Spring注入方式 基于构造器注入&#xff1a;在构造器上使用Autowired。 优点&#xff1a;可以声明字段为final&#xff0c;确保字段在构造时被初始化。 基于setter方法注入&…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第三十九章 Linux MISC驱动

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

基于MobileNetv2的垃圾分类函数式自动微分-昇思25天打卡

基于MobileNetv2的垃圾分类 本文档主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 1、实验目的 了解熟悉垃圾分类应用代码的编写&#xff08;Python语言&#xff09;&a…...

STM32CubeIDE(CAN)

目录 一、概念 1、简述 2、CAN 的几种模式 二、实践 1、环回模式轮询通信 1.1 软件配置 1.2 代码编写 2、环回模式中断通信 2.1 软件配置 2.2 代码编写 一、概念 1、简述 STM32微控制器系列包含多个型号&#xff0c;其中一些型号集成了CAN&#xff08;Controller Are…...

GO Channel使用详解(各种场景下的最佳实践)

GO Channel使用详解(各种场景下的最佳实践) 一个知识点:通过反射的方式执行 select 语句,在处理很多的 case clause,尤其是不定长的 case clause 的时候,非常有用。而且,在后面介绍任务编排的实现时,我也会采用这种方法,所以,我先带你具体学习下 Channel 的反射用法…...

SwiftUI 5.0(iOS 17)滚动视图的滚动目标行为(Target Behavior)解惑和实战

概览 在 SwiftUI 的开发过程中我们常说&#xff1a;“屏幕不够&#xff0c;滚动来凑”。可见滚动视图对于超长内容的呈现有着多么秉轴持钧的重要作用。 这不&#xff0c;从 SwiftUI 5.0&#xff08;iOS 17&#xff09;开始苹果又为滚动视图增加了全新的功能。但是官方的示例可…...

picker 构建记录

picker 构建记录 tomlinuxtom:~/openverify/picker$ cd picker bash: cd: picker: 没有那个文件或目录 tomlinuxtom:~/openverify/picker$ export BUILD_XSPCOMM_SWIGpython tomlinuxtom:~/openverify/picker$ make rm -rf temp build /home/tom/Tools/verible-v0.0-3724/bin/…...

Docker部署kafka,Docker所在宿主机以外主机访问

# 安装启动zookeeper docker run -d --name zookeeper --publish 2181:2181 --volume /etc/localtime:/etc/localtime zookeeper:latest --network 指定的网络 -p&#xff1a;设置映射端口&#xff08;默认2181&#xff09; -d&#xff1a;后台启动 # 启动kafka docker run -d…...

控制欲过强的Linux小进程

控制欲强?视奸&#xff1f;普通人那才叫视奸&#xff0c;您是皇帝&#xff0c;天下大事无一逃过您的耳目&#xff0c;您想看什么就看什么&#xff0c;臣怀疑他在朋友圈私养兵士&#xff0c;囤积枪甲&#xff0c;蓄意谋反&#xff0c;图谋皇位啊&#xff01; 哈哈哈哈开个玩笑&…...

​探讨元宇宙和VR虚拟现实之间的区别​

在数字时代&#xff0c;人们对虚拟现实的兴趣与日俱增。在虚拟现实技术的推动下&#xff0c;出现了两个概念&#xff1a;元宇宙和VR虚拟现实。虽然这两个概念都与虚拟现实有关&#xff0c;但它们有着不同的特点和用途。在本文中&#xff0c;我们将探讨元宇宙和VR虚拟现实之间的…...

Docker Desktop安装

0 Preface/Foreward 1 安装 1.1 运行docker安装包 安装完Docker Desktop后&#xff0c;运行Docker Desktop&#xff0c;出现WSL 2安装不完整情况&#xff0c;具体情况如下&#xff1a; 解决方法&#xff1a;旧版 WSL 的手动安装步骤 | Microsoft Learn 也可以直接下载新的安…...

《Towards Black-Box Membership Inference Attack for Diffusion Models》论文笔记

《Towards Black-Box Membership Inference Attack for Diffusion Models》 Abstract 识别艺术品是否用于训练扩散模型的挑战&#xff0c;重点是人工智能生成的艺术品中的成员推断攻击——copyright protection不需要访问内部模型组件的新型黑盒攻击方法展示了在评估 DALL-E …...

vscode调试nextjs前端后端程序、nextjs api接口

最近有一个项目使用了nextjs框架&#xff0c;并且使用nextjs同时实现了前后端&#xff0c;由于之前前后端都是分离的&#xff0c;前端的调试可以通过在代码种添加debugger或者直接在浏览器中打断点实现&#xff0c;现在想调试后端接口&#xff0c;前面的方式就不适用了。故研究…...

《SeTformer Is What You Need for Vision and Language》

会议&#xff1a;AAAI 年份&#xff1a;2024 论文&#xff1a;DDAE: Towards Deep Dynamic Vision BERT Pretraining - AMinerhttps://www.aminer.cn/pub/6602613613fb2c6cf6c387c2/ddae-towards-deep-dynamic-vision-bert-pretraining 摘要 这篇论文介绍了一种新型的变换器…...

[保姆级教程]uniapp安装使用uViewUI教程

文章目录 创建 UniApp 项目下载uView UI下载安装方式步骤 1: 安装 uView UI步骤 2: 查看uView UI是否下载成功步骤 3: 引入 uView 主 JS 库步骤 4: 引入 uView 的全局 SCSS 主题文件步骤 5: 引入 uView 基础样式步骤 6: 配置 easycom 组件模式注意事项 NPM方式步骤 1: 安装 uVi…...

网络安全法规对企业做等保有哪些具体规定?

网络安全法规对企业做等保的具体规定 根据《中华人民共和国网络安全法》&#xff0c;企业作为网络运营者&#xff0c;需要履行网络安全等级保护制度的相关义务&#xff0c;确保网络安全和数据保护。具体规定包括&#xff1a; 网络安全等级保护制度&#xff1a;企业应根据网络安…...

Java开发中超好用Orika属性映射工具

Orika属性映射工具 引入pom依赖 <dependency><groupId>ma.glasnost.orika</groupId><artifactId>orika-core</artifactId><version>1.5.4</version></dependency>上干货 封装的工具类:OriUtilsimport ma.glasnost.orika.Map…...

qt初入门8:下拉框,输入框模糊查询,提示简单了解 (借助QCompleter)

实现一个简单的模糊查询的逻辑&#xff0c;输入框能提示相关项。 主要借助qt的QCompleter 类&#xff08; Qt 框架中提供的一个用于自动补全和模糊搜索的类&#xff09;&#xff0c;结合一些控件&#xff0c;比如QComboBox和QLineEdit&#xff0c;实现模糊查询的功能。 1&…...

【qt】VS中如何配置Qt环境

https://download.qt.io/official_releases/vsaddin/ 首先需要下载一下vsaddin,上面的是下载的网站. 下载的时候可能会出现下图的情况 说明你下的vsaddin和您的VS版本不匹配,所以你可以多下几个其他版本的vsAddin,一般都是和你VS版本相匹配的才可以,如Vs2022,那就试试vsaddin2…...

GLM-4V-9B真实案例展示:从上传JPG到输出结构化文本的端到端演示

GLM-4V-9B真实案例展示&#xff1a;从上传JPG到输出结构化文本的端到端演示 1. 项目背景与核心价值 GLM-4V-9B作为多模态大模型的优秀代表&#xff0c;能够同时理解图像和文本信息&#xff0c;实现真正的视觉-语言交互。但在实际部署中&#xff0c;很多开发者会遇到环境兼容性…...

10个ProjectLearn性能优化技巧:提升网站加载速度和用户体验的终极指南

10个ProjectLearn性能优化技巧&#xff1a;提升网站加载速度和用户体验的终极指南 【免费下载链接】projectlearn-project-based-learning A curated list of project tutorials for project-based learning. 项目地址: https://gitcode.com/gh_mirrors/pr/projectlearn-proj…...

Kook Zimage真实幻想Turbo部署教程:免conda环境纯pip安装方案

Kook Zimage真实幻想Turbo部署教程&#xff1a;免conda环境纯pip安装方案 1. 项目简介 Kook Zimage真实幻想Turbo是一款专为个人GPU设计的轻量化幻想风格文生图系统。它基于Z-Image-Turbo官方极速文生图底座&#xff0c;通过特殊技术融合了专属的幻想风格模型权重&#xff0c…...

Qwen2.5-7B离线推理实战:无需GPU,CPU版本快速部署指南

Qwen2.5-7B离线推理实战&#xff1a;无需GPU&#xff0c;CPU版本快速部署指南 1. 引言 在当今AI技术快速发展的背景下&#xff0c;大型语言模型的应用越来越广泛。然而&#xff0c;许多开发者和企业在实际部署时面临GPU资源不足或成本过高的问题。本文将介绍如何在普通CPU环境…...

终极指南:p5.js Web Editor 如何让创意编程触手可及

终极指南&#xff1a;p5.js Web Editor 如何让创意编程触手可及 【免费下载链接】p5.js-web-editor p5.js Web Editor, officially launched! 项目地址: https://gitcode.com/gh_mirrors/p5/p5.js-web-editor 欢迎来到 p5.js Web Editor 的世界&#xff01;这是一个专为…...

FPGA实战避坑:手把手教你用Verilog搞定跨时钟域信号传输(附同步/异步FIFO完整代码)

FPGA实战避坑&#xff1a;手把手教你用Verilog搞定跨时钟域信号传输 第一次在FPGA项目里遇到跨时钟域问题&#xff0c;我盯着屏幕上那些随机跳变的数据波形&#xff0c;整整三天没想明白问题出在哪。当时我正在做一个工业传感器数据采集系统&#xff0c;处理器接口跑在100MHz&a…...

立知lychee-rerank-mm快速上手:无需代码,网页界面轻松实现文档相关性打分

立知lychee-rerank-mm快速上手&#xff1a;无需代码&#xff0c;网页界面轻松实现文档相关性打分 你是不是经常遇到这样的困扰&#xff1f;在搜索引擎里输入一个问题&#xff0c;结果返回的答案五花八门&#xff0c;真正有用的信息却藏在好几页之后。或者&#xff0c;你的智能…...

OpenFeign性能优化最全实战

Feign 就是动态代理 模板化 HTTP 请求&#xff0c;帮你把接口方法自动转成 HTTP 调用。 完整执行流程&#xff08;8 步&#xff09; 启动时&#xff1a;FeignClient 接口被 Feign 扫描&#xff0c;生成动态代理类 调用时&#xff1a;执行接口方法 → 进入代理类 解析注解&…...

微内核架构与事件驱动架构的区别与联系详细对比

1. 微内核架构 (Microkernel Architecture)1.1 核心概念微内核架构将系统核心功能最小化&#xff0c;将大部分服务&#xff08;文件系统、设备驱动、网络协议等&#xff09;移出内核&#xff0c;作为独立的用户态进程运行。内核仅保留最基本的功能&#xff1a;进程间通信&#…...

ARM Cortex-M中断状态寄存器实战:从配置到调试的完整指南

ARM Cortex-M中断状态寄存器实战&#xff1a;从配置到调试的完整指南 在嵌入式开发领域&#xff0c;中断处理是系统实时响应的核心机制。作为ARM Cortex-M系列处理器的开发者&#xff0c;深入理解中断状态寄存器(Interrupt Status Register)的工作原理和操作技巧&#xff0c;能…...