学习总结(TAT)

好久都没交总结了,今天把之前的思路和错误整理了一下:

在服务器和客户端两侧,不可以同时先初始化获取输入流,否则会造成堵塞,同时为这位作者大大打call:

(3条消息) 关于Java Socket和创建输入输出流的几点注意_明明班长的博客-CSDN博客

还有就是如果客户端和服务器想要用同一个类,可以在两边都复制相同的类,但是要注意,如果这个类在包下,一定要将包也复制一份不然你都不知道自己怎么错的QAQ; 比如在客户端是这样的:

也就是common包包下有一个这个类,但是服务端也要用到这个类,这时候可以把它复制过去:

 重要的事说三遍,记得复制包包也要一样,包名要一样!!!

还有就是在写鼠标点击或者键盘的按压事件(当然,按钮就不要了,按钮有一个专门的方法Action)后要在这个ideal里面这样改,不然事件不匹配;

进去控制类对应的fxml文件,然后将 其打开,在有黄色的鼠标点击事件或者键盘按压事件右击show...什么的,也就是第一个,然后有一个change。。。的会弹出来一个弹框直接点击refactor就行了。(QAQ有点抽象)

如果fxml和view没有在一个包下,比如我是这样的,就要将路径都改成这样的:也就是加载fxml是这样写:

  Parent root = FXMLLoader.load(LoginView.class.getClassLoader().getResource("fxml/login.fxml") );

如果想要在不是某个控制器类的组件下用该组件,有这样一个模板获得该控制器,先是在view界面这样写:

public class ChatRoomView {public static Stage chatRoomStage;private static ChatRoomController controller; // 添加一个控制器对象的引用public static void start(Stage primaryStage) throws IOException {chatRoomStage = primaryStage;FXMLLoader loader = new FXMLLoader(ChatRoomView.class.getClassLoader().getResource("fxml/chatroom.fxml"));Parent root = loader.load();controller = loader.getController(); // 获取FXML文件关联的控制器对象primaryStage.setTitle("小花花聊天室");primaryStage.setScene(new Scene(root, 800, 600));primaryStage.show();}public static ChatRoomController getController() {return controller;}
}

字符串比较一定要用equals,不然自己怎么错了都不知道。少用”==“少用,少用!!!但是不得不说,equals只能是等于,所以用不等于可以在前面加一个!记得添上括号;

还有就是静态变量不可以序列化,熟记熟记熟记,当然如果实在想要序列化可以取巧,比如在一个列里面想要将这个类静态化便于利用,但是又要传,这时候可以定一个临时变量和这个要传的变量同类型;将静态变量赋值给它,本人亲测,真的可以😁;

一般一个输入流对应一个输出流,如果涉及到socket的话,最好两个同时关闭,不要用完一个关闭一个,不然第二个用不了;比如用完输出流输出一次之后就关了,这时候再读取就用不了,因为这时候关闭输出流的时候将socket也给关了;但是正规关闭最后还是要关socket的;

如果在初始化写某个临时组件的点击事件没有用的话,可能是你的顺序放错了,理清思路。(比如有一些是要先在初始化方法里面现附上初始值才可以操作,这时候赋值操作就一定要在这个前面了),还有就是一般一个界面打开一次才动用一次初始化方法,但是如果这个初始化方法里面有点击事件导致界面大幅度变化的也会触发初始化方法;

至于为什么和User用户类有仇我也不想纠结了,换一个名字就不会数据错乱了,所以没去深究,值得说的是,在多个请求情况下,哪怕有些数据是有先后顺序的,还是要对两边的通讯设置接受条件,以防数据传错,所以说,数据的判断条件最好放在一个类里面,不然会很心累TAT~;

还有就是在Javafx里面,有一个UI界面的主线程,但是有一些界面UI更新比较慢(涉及到要去数据库什么的获取数据),会阻塞主线程,导致界面卡死,这时候可以通过Task类和Platform来辅助实现:比如我这个点击事件:

  friendList.setOnMouseClicked(event -> {Friend selectedFriend = friendList.getSelectionModel().getSelectedItem();getMy = selectedFriend;accountt.add(getMy.getAccount());accountt.add(ManageClientToThread.u.getUserAccount());// 创建一个后台任务来加载聊天记录数据Task<ArrayList<Message>> getFriendsTask = new Task<ArrayList<Message>>() {@Overrideprotected ArrayList<Message> call() throws Exception {if (tempMessage != null) {new MessageClientService().insertMessage(tempMessage);}imageA=ucs1.imageAvar(accountt);return new MessageClientService().initMessagerecord(ManageClientToThread.u.getUserAccount(), selectedFriend.getAccount());}};// 设置任务完成后的处理逻辑getFriendsTask.setOnSucceeded(e -> {ArrayList<Message> messages = getFriendsTask.getValue();// 在主线程中更新UIPlatform.runLater(() -> {// 清空聊天框中的内容flowPane1.getChildren().clear();// 将加载的聊天记录填充到聊天框中for (Message msg : messages) {System.out.println("加一个消息");addBox(msg);}System.out.println("到底来了不?");});});// 启动任务Thread thread = new Thread(getFriendsTask);thread.setDaemon(true); // 设置为守护线程(可选)thread.start();});

批量查询不是什么其他的,只能是execute或者executeQuery,Batch不可以用于查询,不可以!!!

关于类静态变量没有过构造器这件事,切记切记,要用初始化用静态构造块,真的要记住!!!

关于正则判断,我真的要说五遍,表示路径里面的一个单线杠要用四个‘\’(单引号里面的,不包括单引号);这里是chat的一点解释,主要是靠自己理解QAQ:

目前就是这些,把自己之前受过的委屈发出来真是太爽了!!! 

然后再稍稍励志一下:如果这段时间你觉得很疲惫,觉得全是坎坷,请相信这是老天对你赐福的考验,熬过了这段时间,接下来全是好运

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战项目ssm权限系统 3-自定义注解+AOP拦截器记录登录日志

一 登录日志以及操作操作日志的操作 1.1 登录日志配置收集 1.1.1 编写log入库的service层接口 1.接口&#xff1a;在spring-security模块中 2.实现类&#xff1a;在service-system模块中 3.dao层&#xff1a;在service-system模块中 1.1.2 过滤器添加log记录 在过滤器中&…

01_什么是ansible、基本架构、ansible工作机制、Ansible安装、配置主机清单、设置SSH无密码登录等

1.什么是ansible 1.1.基本介绍 1.2.基本架构 1.3.基本特征 1.4.优点 1.5.ansible工作机制 2.Ansible安装 2.1.机器准备 2.2.安装ansible 2.2.1.安装epel源 2.2.2.安装ansible 2.2.3.查看ansible版本 2.2.4.树状结构展示文件夹 2.2.4.1.其中ansible.cfg的内容如下 2.2.4.2.host的…

ts中interface自定义结构约束和对类的约束

一、interface自定义结构约束对后端接口返回数据 // interface自定义结构 一般用于较复杂的结构数据类型限制 如后端返回的接口数据// 首字母大写;用分割号隔开 interface Iobj{a:number;b:string } let obj:Iobj {a:1,b:2 }// 复杂类型 模拟后端返回的接口数据 interface Il…

管理类联考——逻辑——论证逻辑——汇总篇——真题和典例——削弱

削弱 199-2014-10-41——割裂关系 卫计委的报告表明&#xff0c;这些年来医疗保健费的确是增加了。可见&#xff0c;我们每个人享受到的医疗条件大大改善了。 以下哪项对上述结论提出最严重的质疑? A.医疗保健费的绝大部分用在了对高危病人的高技术强化护理上。 B.在不增加费…

Spring事务管理

目录 1.什么是事务 事务的四大特性&#xff08;ACID&#xff09; 2.Spring中的事务 2.1PlatformTransactionManager 2.2TransactionDefinition 2.3TransactionStatus 3.编程式事务 4.声明式事务&#xff08;Transactional&#xff09; 5. 事务属性 5.1 隔离性(isolat…

Linux-GPIO 配置pull up、pull down、no pull

author daisy.skye的博客_CSDN博客-Qt,嵌入式,Linux领域博主 https://blog.csdn.net/qq_40715266?typeblog 系列基于RK3568的Linux驱动开发——GPIO知识点&#xff08;一&#xff09;_daisy.skye的博客-CSDN博客基于RK3568的Linux驱动开发—— GPIO知识点&#xff08;二&#…

【VisualGLM】大模型之 VisualGLM 部署

目录 1. VisualGLM 效果展示 2. VisualGLM 介绍 3. VisualGLM 部署 1. VisualGLM 效果展示 VisualGLM 问答 原始图片 2. VisualGLM 介绍 VisualGLM 主要做的是通过图像生成文字&#xff0c;而 Stable Diffusion 是通过文字生成图像。 一种方法是将图像当作一种特殊的语言进…

C语言刷题------(2)

C语言刷题——————&#xff08;2&#xff09; 刷题网站&#xff1a;题库 - 蓝桥云课 (lanqiao.cn) First Question&#xff1a;时间显示 题目描述 小蓝要和朋友合作开发一个时间显示的网站。 在服务器上&#xff0c;朋友已经获取了当前的时间&#xff0c;用一个整数表…

Nginx与docker配置安装

目录&#xff1a; Nginx的安装配置&#xff1a; 1、安装依赖包&#xff1a; 2、下载Nginx安装包&#xff1a; 3、解压Nginx压缩包&#xff1a; 4、配置Nginx编译环境&#xff1a; 5、编译并安装Nginx&#xff1a; 6、安装完Nginx后&#xff0c;可以切换到Nginx的安装目录…

python版《羊了个羊》游戏开发第一天

Python小型项目实战教学课《羊了个羊》 一、项目开发大纲&#xff08;初级&#xff09; 版本1.0&#xff1a;基本开发 课次 内容 技术 第一天 基本游戏地图数据 面向过程 第二天 鼠标点击和移动 面向对象 第三天 消除 设计模式&#xff1a;单例模式 第四天 完整…

clion使用qDebug()控制台无输出的可能解决方法

给项目添加一个环境变量 QT_ASSUME_STDERR_HAS_CONSOLE1参考网址&#xff1a;https://youtrack.jetbrains.com/issue/CPP-24369/Auto-enable-qDebug-console.log-output-to-the-debug-console-for-Qt-projects-on-Windows

Flutter:文件读取—— video_player、chewie、image_picker、file_picker

前言 简单学习一下几个比较好用的文件读取库 video_player 简介 用于视频播放 官方文档 https://pub-web.flutter-io.cn/packages/video_player 安装 flutter pub add video_player加载网络视频 class _MyHomePageState extends State<MyHomePage> {// 控制器late…

Android 开发者选项日志存储路径

android开发者选项中存在两个item是关于系统日志的。 1.日志记录器缓冲区大小 2.在设备上永久存储日志记录器数据 一个是用来设置缓冲区大小&#xff0c;一个是用来日志存储开关及过滤。 通过分析 system/core/logcat/logcatd.rc mkdir /data/misc/logd 0770 logd log 日志的…

ArcGIS Pro基础:【划分】工具实现等比例、等面积、等宽度划分图形操作

本次介绍【划分】工具的使用&#xff0c;如下所示&#xff0c;为该工具所处位置。使用该工具可以实现对某个图斑的等比例面积划分、相等面积划分和相等宽度划分。 【等比例面积】&#xff1a;其操作如下所示&#xff0c;其中&#xff1a; 1表示先选中待处理的图斑&#xff0c;2…

华为智选首款纯电轿跑“LUXEED”能大卖吗?

监制 | 何玺 排版 | 叶媛 华为智选纯电轿跑来袭&#xff01; 8月7日&#xff0c;华为常务董事余承东在社交媒体上发文&#xff0c;宣布华为智选即将推出首款“突破想象”的纯电轿跑车。 01 华为智选首款纯电轿跑来袭 余承东的发文引起了极大关注&#xff0c;在各大媒体的报…

动力节点Redis7实战教程,从基础到底层一套通关

Redis是一种非常强大的数据缓存和存储系统&#xff0c;既可以用作关系型数据库的缓存降低查询延迟&#xff0c;也可以作为一个分布式系统的共享数据存储。 动力节点的Redis7课程将带领大家完整的学习Redis7.0版本&#xff0c;内容涵盖Redis全套知识体系&#xff0c;由浅入深 总…

微信小程序读取本地json

首先在项目录下新建【server】文件夹&#xff0c;新建data.js文件&#xff0c;并定义好json数据格式。如下&#xff1a; pages/index/index.ts导入data.js并请求json pages/index/index.wxml页面展示数据

JavaWeb-能制作中小型网站企业管理系统(适合快速梳理)

导言 第一章 Web前端开发 一、初始web前端 二、HTML、CSS介绍 三、VsCode安装 四、标签 1 实现标题--排版 2 实现标题--样式 颜色表示 CSS选择器 3 实现标题--超链接 4 实现标签--正文 5 页面布局 盒子模型 布局标签 6 表格、表单标签 表格标签 表单标签 表单项 …

Positive证书是什么?

Positive SSL是全球著名CA Sectigo的子品牌&#xff0c; 也是目前全球签发量最高的商业SSL证书。价格低&#xff0c;安全性高&#xff0c;在个人网站和中小型企业网站中拥有极高的占有率。 Positive SSL证书包括DV SSL&#xff0c; EV SSL&#xff0c;也是唯一支持IP地址加密的…

第十六次CCF计算机软件能力认证

第一题&#xff1a;小中大 在数据分析中&#xff0c;最小值最大值以及中位数是常用的统计信息。 老师给了你 n 个整数组成的测量数据&#xff0c;保证有序&#xff08;可能为升序或降序)&#xff0c;可能存在重复的数据。 请统计出这组测量数据中的最大值、中位数以及最小值&am…