学习总结(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.mzph.cn/news/33090.shtml

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

相关文章

一、安全世界观

文章目录 1、 Web安全简史1.1 中国黑客简史1.2 黑客技术的发展历程1.3 web安全的兴起 2、黑帽子、白帽子3、安全的本质4、安全三要素5、如何实施安全评估5.1 资产等级划分5.2 威胁分析5.3 风险分析5.4 设计安全方案 6、白帽子兵法6.1 Secure By Default6.2 纵深防御原则6.3 数据…

java的junit之异常测试、参数化测试、超时测试

1.对可能抛出的异常进行测试 异常本身是方法签名的一部分测试错误的输入是否导致特定的异常 summary 测试异常可以使用Test(expectedExceptio.class)对可能发生的每种类型的异常进行测试 2.参数化测试 如果待测试的输入和输出是一组数据&#xff1a; 可以把测试数据组织起…

Oracle时间查询使用笔记:sysdate用法

Oracle的sysdate用法 通常会有 sysdate - 1 / 12这种&#xff0c;或者sysdate - 1 / 24/3 这两种用法,表示从当前时间往前推若干时间 下面就用sysdate - A/B,sysdate - A/B/C代替 第一种 sysdate - A/B型&#xff0c;这种结果是小时&#xff0c;A代表天数&#xff0c;B代表小时…

学习51单片机怎么开始?

学习的过程不总是先打好基础&#xff0c;然后再盖上层建筑&#xff0c;尤其是实践性的、工程性很强的东西。如果你一定要先全面打好基础&#xff0c;再学习单片机&#xff0c;我觉得你一定学不好&#xff0c;因为你的基础永远打不好&#xff0c;因为基础太庞大了&#xff0c;基…

Spring AOP 切点表达式

参考博客&#xff1a; 参考博客

Oracle 知识篇+会话级全局临时表在不同连接模式中的表现

标签&#xff1a;会话级临时表、全局临时表、幻读释义&#xff1a;Oracle 全局临时表又叫GTT ★ 结论 ✔ 专用服务器模式&#xff1a;不同应用会话只能访问自己的数据 ✔ 共享服务器模式&#xff1a;不同应用会话只能访问自己的数据 ✔ 数据库驻留连接池模式&#xff1a;不同应…

探索数据之美:初步学习 Python 柱状图绘制

文章目录 一 基础柱状图1.1 创建简单柱状图1.2 反转x和y轴1.3 数值标签在右侧1.4 演示结果 二 基础时间线柱状图2.1 创建时间线2.2 时间线主题设置取值表2.3 演示结果 三 GDP动态柱状图绘制3.1 需求分析3.2 数据文件内容3.3 列表排序方法3.4 参考代码3.5 运行结果 一 基础柱状图…

谷粒商城第十二天-基本属性销售属性管理功能的实现

目录 一、总述 二、前端部分 三、后端部分 四、总结 一、总述 前端的话&#xff0c;依旧是直接使用老师给的。 前端的话还是那些增删改查&#xff0c;业务复杂一点的话&#xff0c;无非就是设计到多个字段多个表的操作&#xff0c;当然这是后端的事了&#xff0c;前端这里…

Nodejs安装及环境变量配置(修改全局安装依赖工具包和缓存文件夹及npm镜像源)

本机环境&#xff1a;win11家庭中文版 一、官网下载 二、安装 三、查看nodejs及npm版本号 1、查看node版本号 node -v 2、查看NPM版本号&#xff08;安装nodejs时已自动安装npm&#xff09; npm -v 四、配置npm全局下载工具包和缓存目录 1、查看安装目录 在本目录下创建no…

瓴羊发布All in One 产品,零售SaaS的尽头是DaaS?

“打破烟囱、化繁为简&#xff0c;让丰富的能力、数据和智能All in One”&#xff0c;这是瓴羊新发布的产品瓴羊One承担的使命&#xff0c;也意味着瓴羊DaaS事业迈入了一个新阶段。 成立伊始&#xff0c;瓴羊就打出了“Not SaaS&#xff0c;But DaaS”旗号&#xff0c;将自己的…

小程序裂变怎么做?小程序裂变机制有哪些?

做了小程序就等于“生意上门”&#xff1f;其实并不是这样。小程序跟流量平台较为明显的区别就在于小程序并非“自带流量”&#xff0c;而是需要企业利用自己的营销推广能力来建立引流渠道&#xff0c;从而完成用户的拉新和留存、转化。因此&#xff0c;想要用小程序来增加自己…

[虚幻引擎] UE DTBase64 插件说明 使用蓝图对字符串或文件进行Base64加密解密

本插件可以在虚幻引擎中使用蓝图对字符串&#xff0c;字节数组&#xff0c;文件进行Base64的加密和解密。 目录 1. 节点说明 String To Base64 Base64 To String Binary To Base64 Base64 To Binary File To Base64 Base64 To File 2. 案例演示 3. 插件下载 1. 节点说…

centos如何配置IP地址?

CentOS如何查看和临时配置IP地址 CentOS系统中&#xff0c;可以通过使用ifconfig命令来查看当前本机的IP地址信息。输入ifconfig即可显示当前网络接口的IP地址、网络掩码和网关信息。如果需要设置临时IP地址&#xff0c;可以使用ifconfig命令后接网卡名称和需要设置的IP地址、网…

自定义element-plus的弹框样式

项目中弹框使用频繁,需要统一样式风格,此组件可以自定义弹框的头部样式和内容 一、文件结构如下: 二、自定义myDialog组件 需求&#xff1a; 1.自定义弹框头部背景样式和文字 2.自定义弹框内容 3.基本业务流程框架 components/myDialog/index.vue完整代码&#xff1a; &…

采用pycharm在虚拟环境使用pyinstaller打包python程序

一年多以前&#xff0c;我写过一篇博客描述了如何虚拟环境打包&#xff0c;这一次有所不同&#xff0c;直接用IDE pycharm构成虚拟环境并运行pyinstaller打包 之前的博文&#xff1a; 虚拟环境venu使用pyinstaller打包python程序_伊玛目的门徒的博客-CSDN博客 第一步&#xf…

山西电力市场日前价格预测【2023-08-12】

日前价格预测 预测明日&#xff08;2023-08-12&#xff09;山西电力市场全天平均日前电价为330.52元/MWh。其中&#xff0c;最高日前电价为387.00元/MWh&#xff0c;预计出现在19: 45。最低日前电价为278.05元/MWh&#xff0c;预计出现在13: 00。 价差方向预测 1&#xff1a; 实…

伯俊ERP对接打通金蝶云星空表头表体组合查询接口与采购订单新增接口

伯俊ERP对接打通金蝶云星空表头表体组合查询接口与采购订单新增接口 数据源平台:伯俊ERP 伯俊科技&#xff0c;依托在企业信息化建设方面的领先技术与实践积累&#xff0c;致力于帮助企业实现全渠道一盘货。伯俊提供数字经营的咨询与系统实施&#xff0c;助力企业信息化升级、加…

vue3使用pinia和pinia-plugin-persist做持久化存储

插件和版本 1、安装依赖 npm i pinia // 安装 pinia npm i pinia-plugin-persist // 安装持久化存储插件2、main.js引入 import App from ./App.vue const app createApp(App)//pinia import { createPinia } from pinia import piniaPersist from pinia-plugin-persist //持…

tomcat多实例与动静分离

实验&#xff1a;在一台虚拟机上配置多台tomcat 1.配置 tomcat 环境变量 vim /etc/profile.d/tomcat.sh source /etc/profile.d/tomcat.sh 2.修改 tomcat2 中的 server.xml 文件&#xff0c;要求各 tomcat 实例配置不能有重复的端口号 vim /usr/local/tomcat/tomcat2/conf/…

篇二十一:中介者模式:解耦对象之间的交互

篇二十一&#xff1a;"中介者模式&#xff1a;解耦对象之间的交互" 开始本篇文章之前先推荐一个好用的学习工具&#xff0c;AIRIght&#xff0c;借助于AI助手工具&#xff0c;学习事半功倍。欢迎访问&#xff1a;http://airight.fun/。 另外有2本不错的关于设计模式…