8.3,8.4总结

news2024/10/1 19:27:10

1.改进渲染

                    // 加载头像图像
                    InputStream inputStream = new ByteArrayInputStream(message.getFileBytes());
                    Image image = new Image(inputStream); // 第二个参数表示是否缓存图片,根据需要设置
                    imageView.setImage(image);

                    // 设置头像视图大小
                    imageView.setFitWidth(50);
                    imageView.setFitHeight(50);



                    // 聊天气泡效果的容器
                    Pane messageBubble = new Pane();
                    messageBubble.setStyle("-fx-background-color: #e0e9ff; -fx-background-radius: 10;");
                    messageBubble.setMaxWidth(200); // 设置最大宽度
                    messageBubble.setPadding(new Insets(5)); // 设置内边距
                    messageBubble.getChildren().add(messageText);

2.修改聊天bug 

之前三个人聊天会有些问题

 //根据message获取getterid,然后再得到对应先线程
                    ServerConnectClientThread serverConnectClientThread=ManageClientThreads
                            .getServerConnectClientThread(message.getGetter());

                    BaseService.GetM(message.getSender(),message);


                    ObjectOutputStream oos=new ObjectOutputStream(serverConnectClientThread.getSocket().getOutputStream());
                    oos.writeObject(message);//转发,如果客户不在线,可以保存到数据库,这样可以实现离线留言

                    Message message1=new Message();
                   message1=message;
                    ObjectOutputStream oos1=new ObjectOutputStream(socket.getOutputStream());
                    message1.setMesType(MessageType.MESSAGE_COMM_MES);
                    oos1.writeObject(message1);

3.完善了,添加好友与请求处理

添加好友改了表,好友申请表和好友列表,能实时更新,还有打开更新。

//界面初始化,我的好友
    public static void sendupdateListFriend(String user1){
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(URL, USER, PASSWORD);

            // 2. 准备 SQL 查询语句
            String sql = "SELECT * FROM friendstable WHERE User1 = ?";
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, user1); // 设置查询参数

            // 3. 执行查询
            rs = stmt.executeQuery();

            // 4. 处理查询结果
            while (rs.next()) {
               
//发送过去

//*****************************************************
            }

        } catch (ClassNotFoundException e) {
           e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }
    //界面,我的好友更新
    public static void sendupdateListFriendEnd(String user1){
        Connection conn = null;
        PreparedStatement stmt = null;
        ResultSet rs = null;

        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
            conn = DriverManager.getConnection(URL, USER, PASSWORD);

            // 2. 准备 SQL 查询语句
            String sql = "SELECT * FROM friendstable WHERE User1 = ?";
            stmt = conn.prepareStatement(sql);
            stmt.setString(1, user1); // 设置查询参数

            // 3. 执行查询
            rs = stmt.executeQuery();

            // 4. 处理查询结果
            while (rs.next()) {
                String user2 = rs.getString("User2");

                // 这里可以根据需要处理每行数据,例如打印输出或者其他逻辑处理
                Message message1=new Message();
                message1.setGetter(user2);
                BaseService.GetM(user2,message1);


                try {
                    //清空好友列表的
                   //*****************代码*****************

                       
//好友
 BaseService.sendupdateListFriend(user2);
                    }


                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
                System.out.println(user1 +"初始好友列表有:"+user2);
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

4.展示好友/我的资料

a.左边我的

b.右边好友的

5.聊天记录的建表

表名:chat_records

字段:Sender_id 发送者,Getter_id 接受者,SendTime发送时间,Message_type消息类型,

MessageContent 消息内容

 

 

6.聊天列表的刷新 

a.这是与黄头的聊天

b.点击绿头时,这是绿头的聊天

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979499.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装eclipse时候 打开eclipse出现一连串英文

问题描述:打开eclipse失败,提示错误Version 1.8.xx of the JVM is not suitable for this product Version:11 or greater is required 本地已经有1.8.XX 的jdk,但因为新安装的eclipse需要JVM更高的版本。 原因:jdk版本太低 解…

基于随机森林、XGBoost、lightGBM的大气污染预测可视化系统【前后端交互】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主数据介绍系统界面展示系统登陆展示系统主界面可视化展示机器学习模型预测展示框架界面功能每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 数据介绍…

【C语言】C语言期末突击/考研--结构体与C++引用

一、结构体--结构体对齐--结构体数组 1.1.结构体的定义、初始化、结构体数组 有时候需要将不同类型的数据组合为一一个整体,以便于引用。 例如,一名学生有学号、姓 名、性别、年龄、地址等属性,如果针对学生的学号、姓名、年龄等都单独定义一…

代码坏味道有24种?我看未必

微信公众号:牛奶 Yoka 的小屋 有任何问题。欢迎来撩~ 最近更新:2024/08/03 [大家好,我是牛奶。] 我在上一篇文章打开IDEA,程序员思考的永远只有两件事!中,通过代码命名、重复代码、合格方法三个章节&#…

PXE实验

实验前准备 关闭VMware的dhcp 点击 编辑 点击 虚拟网络编辑器 选择 NAT模式 将dhcp取消勾选 准备两台虚拟机 一台试验机,(网络环境正常并且有图形化的界面的rhel7) 一台测试机 init 5 --------------> 开启图形化界面 如…

《C/C++实战进阶》介绍

🚀 前言 本文是《C/C实战进阶》专栏的说明贴(点击链接,跳转到专栏主页,欢迎订阅,持续更新…)。 专栏介绍:以多年的开发实战为基础,总结并讲解一些的C/C基础与项目实战进阶内容&…

AI用Alice_split_toolset切割音频的采样率

AI用Alice_split_toolset切割音频的采样率 目录 AI用Alice_split_toolset切割音频的采样率 一、Sample rate采样率的概念 二、Alice_split_toolset切割音频的参数 2.1、字符串参数--input_folder输入文件夹路径 2.2、字符串参数--output_folder输出文件夹路径 2.3、字符串…

第一次作业,sql注入总结

sqli-labs靶场中演示: less1: 注入点为: $sql"SELECT * FROM users WHERE id$id LIMIT 0,1"; get输入一个id,可以逃逸出单引号来实现sql注入。 正常的输入为,输出数据库中查询的内容。 http://127.0.0…

如何将PyCharm 中使用 PDM 管理的 Django 项目迁移到 VS Code 并确保一切正常工作?

嗨,我是兰若姐姐,相信很多小伙伴都遇到过这种情况,使用pycharm用习惯了,想换个编辑器,比如换成vscode,今天就告诉大家,如果轻松切换到vscode 步骤 1:在 VS Code 中打开项目 打开 V…

并行状态的广播事件

平行状态的广播事件 此示例显示了并行状态下事件广播操作的行为。 最初,图表处于休眠状态。并行子状态A.A1.A1a和A.A2.A2a处于活动状态。事件E_one发生并唤醒图表,图表从根向下通过层次结构处理事件: 1 图表根会检查根级别是否存在E_one导致…

Docker简介 MacM1安装Docker

文章目录 1 Docker简介2 Docker VS 虚拟机1 Docker优势2 Docker用途 3 MacM1 下载安装Docker1 配置环境变量 4 配置Docker2 设置Docker资源3 设置Docker镜像 参考 1 Docker简介 Docker主要解决了软件开发和运行配置的问题,但是由于其功能的强大,也被应用…

跨境电商下载工具天猫主图sku图等图片信息

优美的图片是电商卖家吸引顾客、展示商品魅力的关键。高质量的图片能够提升产品吸引力,增强用户信任感,促进购买决策,从而直接影响销量和店铺形象。在视觉营销的时代,优秀的商品图片更是流量转化的利器。 使用图快下载器&#xf…

多租户系统数据隔离方案

目录 前言 数据行 数据表 基于业务场景 基于数据量 数据库 数据源表 动态数据源 前言 多租户系统是一种将多个客户的数据和应用程序分开的系统,每个客户被视为一个独立的租户,互不干扰。实现多租户系统的关键之一是确保数据的隔离。 数据隔离的…

Windows 添加自定义服务实现开机(用户登录之前)自动运行 Python 脚本

实现效果 使用 Python 编写的一个脚本, 希望在 Windows 系统启动时, 用户登录之前就自动运行. 准备工作 首先确保 Python 脚本可以手动正常运行, 演示起见, 编写下面的一个简单的脚本用于在 C 盘根目录中生成一个包含脚本运行时间戳的文本文件. Python 脚本存放在 C:\Python…

RISC-V (五)上下文切换和协作式多任务

任务(task) 所谓的任务就是寄存器的当前值。 -smp后面的数字指的是hart的个数,qemu模拟器最大可以有8个核,此文围绕一个核来讲。 QEMU qemu-system-riscv32 QFLAG -nographic -smp 1 -machine virt -bios none 协作式多任务 …

绘唐科技,绘唐3高级推理创作

绘唐科技,绘唐3高级推理创作绘唐3https://qvfbz6lhqnd.feishu.cn/wiki/D3YLwmIzmivZ7BkDij6coVcbn7W 《绘唐3:高级推理创作》 第一章:谋杀案的启示 在古代绘唐王朝的京都,发生了一起离奇的谋杀案。一位名叫李红的官员&#xff0c…

[Day 44] 區塊鏈與人工智能的聯動應用:理論、技術與實踐

生成对抗网络(Generative Adversarial Networks,GANs)是一种由Ian Goodfellow等人在2014年提出的深度学习模型,广泛用于图像生成、图像超分辨率、图像修复等领域。GAN由一个生成器(Generator)和一个判别器&…

状态同步帧同步

帧同步: 有明确的逻辑帧概念,按照固定的逻辑帧间隔同步帧数据 原理 锁帧:mmo那种游戏,服务器需要收到第k帧所有客户端的指令,就算没有操作也发个空指令上去(相对来说回合制卡牌这类就简单很多&#xff0…

keil编程时,出现”MULTIPLE PUBLIC DEFINITIONS“,extern声明时不能赋值

原因导致重复定义? 有可能是重复定义导致的,这就需要查看报错位置的变量或函数是不是被重复定义了。也可能是一些语法错误导致的错误 语法错误导致的错误原因 使用extern只是为了说明这个变量在别的地方已经定义过,但使用extern引用时&…

NSS [HNCTF 2022 WEEK3]ssssti

NSS [HNCTF 2022 WEEK3]ssssti SSTI类题目(flask)毋庸置疑。 有过滤,我们拿burp先fuzz一波。长度159的都是被过滤的。 过滤了下划线、引号、args、os。 我们利用request对象绕过对下划线和引号的过滤(题目不允许POST方法&#x…