java求职学习day20
1 在线考试系统
因为我们刚提到客户端的主要作用,实际上就是提供一个界面,让用户选择。那用户根据这个界面呢进行选择,而真正的这个选择之后的业务处理实际上,是不还得交给服务器来实现真正的功能处理?
这有点像我们现实中的什么呢?ATM机。就是我们取钱的时候,可能是通过ATM机来取款。但是我们的这个账户信息,我们的个人账户信息是在ATM机里面存着吗?当然不是,对不对?
那ATM机坏了,岂不是我们的账说不清了吗?那在哪儿啊?哎,这个我们的这个账户信息实际上实际上是不是都在后台的服务器
我们的客户端主界面其实已经绘制完了。但是这里面呢,遗留了一个小小的问题,什么问题就是我们扫描器创建完了,但是没有关闭。对不对?那有的小伙伴呢?在想说那简单呀,那就在这个switch的后面儿关了呗。那不行,
我循环过来,是不是还要用。有的说那放在循环的外面关呗?那也不行,因为return会直接把方法结束了。对不对?而且我们这个扫描器啊,不仅仅在当前主界面的绘制中要用到,我们到了学员登录跟管理员儿登录的时候,是不是也都得需要入这个用户名密码。那意味着我们的这个scanner是不都得用?那既然这个scanner呢?在我们客户端好多的地方呃,都要用,那这个时候我们如果说在每个地方都去new都去关闭。是不是那就太啰嗦了,
又会出现代码的什么冗余,那问大家怎么办呢?这个时候其实我们是不是就可以把scanner提炼出来,打包成一个工具类,然后让所有的地方是不是都拿着这个工具类去用就可以了。
但这样写还是有问题的,或者说不太完美,为啥呢?因为你如果这样写的话,这个扫描器实际上是不是相当于是作为这个类的成员变量啊?那要想访问这个扫描器,我是不是又得new这个类对象,那反而复杂了嘛,所以这个时候应该加一个static关键字之后,意味着隶属于类层级,我们要再访问的时候是不是类名点访问就可以了。对不对?但是因为我们学了封装之后啊,就得private。啊private就得封装。封装的话,意味着在类外是不是就不能直接使用了?那怎么办?提供公有的get方法呗。public static,然后叫scanner,然后get哎scanner。
可以吗?好,然后呢?紧接着一段大括号里面returns c呗,这不就行了吗?对不对哎?这儿写错了啊,不是system叫scanner。对不对?好了,然后这儿写一下注释。叫编程实现扫描器,或者说叫这样叫自定义成员方法方法。实现扫描器的返回或者说获取。可以吧,
那这里面的return是不是返回的就是扫描器啊?当然,除了它之外,我们说扫描器还得需要怎么办?关闭叫自定义成员方法,实现扫描器的关闭。
客户端将管理员相关信息发送出去
我们在这里面再封装一个方法进行调用。
有同学为啥报错了呀?当然报错了,因为这个方法我们并没有写嘛,我只是在这是不是调用啊?那怎么办?根据错误提示,是不是创建一个这样的方法就行了?好,
然后一点,你看这不就创建完了吗?而且默认的这个方法是不是私有,私有的意思就是说这个方法只能在本类中使用,不能在类外中使用,而且这个方法确实是在我本类中的方法中调用,所以我用private是没问题。
另外问一下大家user,这个类需不需要?进行客户端就是user类型的对象,要不要在客户端跟服务器之间传输啊?要。那传输,而且用对象流传输,那意味着我们是不是就得需要实现一个接口java.io.Serializable。然后实现series里边接口之后是不是还得需要指定一个版本号。
这样一来,我们的账号密码有了之后,接下来我们说是不是加上消息类型一起打包成一个user message类型对象。
而对象输出流在我们的哪个类中?collect in it close里面,而且还是私有的,外面能直接用吗?不能用,为了让外面能用,是不还得提供get方法?所以out insert这里面选择生成get方法给谁啊?给这两个输出输出流提供get方法是不是就可以了。
但要调这个get方法,是不是又得拿着这个类的对象引用点儿?是不是才能调。怎么办?合成复用原则。那有了这个cic之后,那现在我们是不是就可以拿到这个输出流。
就是我原来在collect view这个类中没有写构造方法的时候,所以我用无参的方式new对象没问题,但是现在我在这里面实际上是不是写了构造之后编译器就不再提供了,而且是有参构造参数要的是collect in it close类型引用。所以这边new对象的时候,是不是就得传参数,穿一个cic就行了。
服务器接收客户端发来的消息并打印
那接下来我们是不是该实现服务器啊,使用对象数流接收客户端发来的这个对象相关的信息呀。在我们服务器端啊啊server的上面儿,你有一个新的类,你这个类的名字叫什么呢?客户端不是叫clientview吗?那我们服务器这边呢?我们就叫server view。
这里面简单写一下注释,叫编程实现服务器的主功能,当然它没有主界面嘛,所以我们就叫主功能吧。好,然后呢?在这里面呢?我们写一下方法,叫自定义成员方法方法,
然后实现客户端发来消息的接收并处理。
然后接下来写一下这个方法吧,那方法名儿我们就叫serverReceive,然后紧接着那这边儿的话呢,要想接收就得用对象输入流,而对象输入流是不是在server init close这里面?对不对?好,那在server int close这里面的话,而且这里面是不是还是私有的?
要想用还得公有的get方法。提供了get方法之后,紧接着切回来,这边是不还得使用合成复用原则。
当然默认生成的是不是object呀?但其实那边发的是不是应该是一个user message类型的?对不对?那我就用user message去接,这是它真实的数据类型,那这块儿报错是因为有异常抛一下。然后呢?这儿还报错,是因为我们是不是要做一个类型转换呀?因为这里面默认返回的是object,我现在用user message接嘛。对不对?好了,那么接完之后呢?你看这样一来,我们这边儿的这个接收就完事儿。
服务器校验后发送给客户端
客户端接收结果并打印
相关文章:
java求职学习day20
1 在线考试系统 1.1 软件开发的流程 需求分析文档、概要设计文档、详细设计文档、编码和测试、安装和调试、维护和升级 1.2 软件的需求分析 在线考试系统的主要功能分析如下: ( 1 )学员系统 (1.1)用户模块&…...
Python NumPy(8):NumPy 位运算、NumPy 字符串函数
1 NumPy 位运算 位运算是一种在二进制数字的位级别上进行操作的一类运算,它们直接操作二进制数字的各个位,而不考虑数字的整体值。NumPy 提供了一系列位运算函数,允许对数组中的元素进行逐位操作,这些操作与 Python 的位运算符类似…...
日志2025.1.30
日志2025.1.30 1.简略地做了一下交互系统 public class Interactable : MonoBehaviour { private MeshRenderer renderer; private Material defaultMaterial; public Material highlightMaterial; private void Awake() { renderer GetComponentInChildren<Me…...
实战:如何快速让新网站被百度收录?
本文来自:百万收录网 原文链接:https://www.baiwanshoulu.com/22.html 要让新网站快速被百度收录,可以采取以下实战策略: 一、网站基础优化 网站结构清晰:确保网站的结构简洁清晰,符合百度的抓取规则。主…...
PhotoShop中JSX编辑器安装
1.使用ExtendScript Tookit CC编辑 1.安装 打开CEP Resource链接: CEP-Resources/ExtendScript-Toolkit at master Adobe-CEP/CEP-Resources (github.com) 将文件clone到本地或者下载到本地 点击AdobeExtendScriptToolKit_4_Ls22.exe安装,根据弹出的…...
01-时间与管理
时间与效率 一丶番茄时钟步骤好处 二丶86400s的财富利用时间的方法每天坚持写下一天计划 自我管理体系计划-行动-评价-回顾 一丶番茄时钟 一个计时器 一份任务清单,任务 步骤 每一个25分钟是一个番茄时钟 将工作时间划分为若干个25分钟的工作单元期间只专注于当前任务,遇到…...
MiniMax-01技术报告解读
刚刚MiniMax发布了MiniMax-01,简单测试了效果,感觉不错。于是又把它的技术报告看了一下。这种报告看多了,就会多一个毛病,越来越觉得自己也能搞一个。 这篇文章我觉得最有意思的一句是对数据质量的强调“低质量数据在训练超过两个…...
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新——从DeepSeek看下一代语言模型的高效之路
多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新 ——从DeepSeek看下一代语言模型的高效之路 大模型的“内存焦虑” 当ChatGPT等大语言模型(LLM)惊艳世界时,很少有人意识到它们背后隐藏的“内存焦虑”…...
哈希表实现
目录 1. 哈希概念 1.1 直接定址法 1.2 哈希冲突 1.3 负载因子 1.4 将关键字转为整型 1.5 哈希函数 1.5.1 除法散列法/除留余数法 1.5.2 乘法散列法 1.5.3 全域散列法 1.5.4 其他方法 1.6 处理哈希冲突 1.6.1 开放定址法 1.6.1.1 线性探测 1.6.1.2 二次探测 1.6.…...
Linux的常用指令的用法
目录 Linux下基本指令 whoami ls指令: 文件: touch clear pwd cd mkdir rmdir指令 && rm 指令 man指令 cp mv cat more less head tail 管道和重定向 1. 重定向(Redirection) 2. 管道(Pipes&a…...
Ubuntu安装VMware17
安装 下载本文的附件,之后执行 sudo chmod x VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle sudo ./VMware-Workstation-Full-17.5.2-23775571.x86_64.bundle安装注意事项: 跳过账户登录的办法:断开网络 可能出现的问题以及解决…...
什么是线性化PDF?
线性化PDF是一种特殊的PDF文件组织方式。 总体而言,PDF是一种极为优雅且设计精良的格式。PDF由大量PDF对象构成,这些对象用于创建页面。相关信息存储在一棵二叉树中,该二叉树同时记录文件中每个对象的位置。因此,打开文件时只需加…...
每日一题——序列化二叉树
序列化二叉树 BM39 序列化二叉树题目描述序列化反序列化 示例示例1示例2 解题思路序列化过程反序列化过程 代码实现代码说明复杂度分析总结 BM39 序列化二叉树 题目描述 请实现两个函数,分别用来序列化和反序列化二叉树。二叉树的序列化是将二叉树按照某种遍历方式…...
Transformer+vit原理分析
目录 一、Transformer的核心思想 1. 自注意力机制(Self-Attention) 2. 多头注意力(Multi-Head Attention) 二、Transformer的架构 1. 整体结构 2. 编码器层(Encoder Layer) 3. 解码器层(Decoder…...
「AI学习笔记」深度学习的起源与发展:从神经网络到大数据(二)
深度学习(DL)是现代人工智能(AI)的核心之一,但它并不是一夜之间出现的技术。从最初的理论提出到如今的广泛应用,深度学习经历了几乎一个世纪的不断探索与发展。今天,我们一起回顾深度学习的历史…...
【漫话机器学习系列】069.哈达马乘积(Hadamard Product)
哈达马乘积(Hadamard Product) 哈达马乘积(Hadamard Product)是两个矩阵之间的一种元素级操作,也称为逐元素乘积(Element-wise Product)。它以矩阵的对应元素相乘为规则,生成一个新…...
2025一区新风口:小波变换+KAN!速占!
今天给大家分享一个能让审稿人眼前一亮,好发一区的idea:小波变换KAN! 一方面:KAN刚中稿ICLR25,正是风口上,与小波变换的结合还处于起步阶段,正是红利期,创新空间广阔。 另一方面&a…...
相同的树及延伸题型(C语言详解版)
从LeetCode 100和101看二叉树的比较与对称性判断 今天要讲的是leetcode100.相同的树,并且本文章还会讲到延伸题型leetcode101.对称二叉树。本文章编写用的是C语言,大家主要是学习思路,学习过后可以自己点击链接测试,并且做一些对…...
【Redis】 String 类型的介绍和常用命令
1. 介绍 Redis 中的 key 都是字符串类型Redis 中存储字符串是完全按照二进制流的形式保存的,所以 Redis 是不处理字符集编码的问题,客户端传入的命令中使用的是什么编码就采用什么编码,使得 Redis 能够处理各种类型的数据,包括文…...
LLM - 大模型 ScallingLaws 的设计 100B 预训练方案(PLM) 教程(5)
欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145356022 免责声明:本文来源于个人知识与公开资料,仅用于学术交流,欢迎讨论,不支持转载。 Scaling Laws (缩放法则) 是大模型领域中,用于描述 模型性能(Loss) 与…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
