- 博客(24)
- 收藏
- 关注
原创 TCP4位首部长度
这个首部长度其实是由固定字段和可选字段所构成的,固定字段指的是包含源端口、目的端口、序位号等。就等于是这个长度已经是不能发生改变的了,20个字节。而可选择字段则长度不固定,可选字段最多 40 字节。因此综上所述,整个 TCP 首部的总长度是 “20 字节 + 可选字段长度”,范围是 20~60 字节。
2025-10-28 20:46:06
311
1
原创 TCP与UDP深度理解
通过上篇博客,我们可以清楚的了解到UDP协议是无连接,不可靠传输,面向数据报,全双工。并且,所谓的UDP/TCP/IP协议,其实都是通过报头加上载荷(应用层数据包)来构成的。在此基础上,现在让我们更加深层了解它吧。
2025-10-27 23:24:23
748
原创 InputStream和OutputStream在网络编程发挥的作用
在网络编程中,我们一般使用socket调用getInputStream方法,获得一个InputStream类型的数据。两个的创建,以此来形成一条通道,传输数据的通道,而且还是全双工的。构建完通道,我们一般使用Scanner和PrintWriter来进行传输数据。不过这仅限于文本数据,如果想要传输二进制数据(如图片、视频等),就要用DataOutputStream。InputStream和OutputStream都是在IO读写操作的内容,他们都是父类。同时也是抽象类,因此不能直接进行创建对象。
2025-10-06 16:25:41
215
原创 套接字(socket)及TCP/UDP
至此,UDP回显服务器构建完成,以下是总体代码//UDP服务器System.out.println("UdpSever启动!");//打印日志//UDP客户端System.out.println("UdpClient 启动!");//TCP服务器System.out.println("TCPserver 开始!");
2025-10-05 23:30:01
1173
原创 网络编程初识
协议就是一种约定,约定通信双方,对于传输数据的格式/含义进行约定,就像我们中国人与中国人对话时,能听得懂是因为我们都遵守中文协议,但和外国人就行不通,那是因为别人没有遵守中文协议在计算机中,有很多的协议。程序员为了让这些协议不乱,因此,对他们进行了 分层。并且让上层协议调用下层协议,下层协议为上层协议提供服务。就好比我们和电话的关系,我们打电话时,要调用电话协议,电话给我们提供服务。而且,上层协议不用在意下层协议的细节,直接使用即可。就好比我们为了打电话,我们不会关心这是大哥大还是苹果手机。
2025-09-26 14:47:17
749
原创 Java之链表
因为链表是由多个节点所构成的,又因为内部类是能对外隐藏,所以我们通过内部类的方式来进行构建节点。在这里面我们需要定义一个节点的引用和val变量来存放值。
2025-09-25 21:06:56
1152
原创 Java之线程安全问题
所谓的线程安全就是使用多线程的过程中,出现了与预期不符的情况。以下是会导致线程安全的关键因素:(1)线程调度随机(2)多个线程修改同一个变量(3)修改操作不是原子(4)内存可见性(5)指令重排序。
2025-09-24 17:42:21
818
原创 Java数据结构之顺序表
List是顺序表、链表的上层接口,这两者通过实现List接口来获得线性表通用行为顺序表的底层逻辑是一维数组,它在物理上虽然不一定连续的,但在逻辑上是连续的,在java中是个新类型,叫ArrayList。接下来我们根据它的原理,自己定义一个顺序表接口,IList。定义一个MyArrayList类,并且implents接口,重写方法// 新增元素,默认在数组最后新增// 在 pos 位置新增元素// 判定是否包含某个元素// 查找某个元素对应的位置// 获取 pos 位置的元素。
2025-09-13 00:08:23
897
原创 javaEE之线程初步认识
因为多线程他能让程序同时进行工作,如:一个程序中,一个线程用来接受请求,另一个线程用于计算。如果是单线程的话,就只能一个结束后再进行下一个。但此时肯定会右朋友问,用进程也可以实现这功能啊,为什么要用线程。你说得对,但是,相对于多线程而言,其实进程的创建销毁的开销是很大。这里就要讲一下线程和进程的关系了众所周知,电脑内部有一个叫CPU的元件,它能能接受线程和进程的执行指令,就好比CPU是工人,而线程进程是任务,任务分配给工人去做。其中,任务中肯定也有大任务包含小任务,如:计划出国旅游(
2025-09-10 22:05:48
956
原创 JAVA数据结构之排序
hello,又见面啦。今天我们要走进 Java 数据结构中一个既基础又核心的领域 —— 排序。想象一下,当你翻开一本没有目录的字典,想找到某个单词时会有多茫然;当你打开手机通讯录,联系人杂乱无章时,想找到某个号码又会多低效。排序,正是解决这类 "混乱" 的钥匙 —— 它通过特定的规则将一组数据重新排列,让无序变得有序,让查找、比较、统计变得高效而清晰。今天,我们就一起揭开这些排序算法的面纱,看看它们如何用代码构建秩序,又如何在时间与空间的权衡中各显神通。准备好了吗?
2025-09-08 00:06:37
616
原创 泛型的理解
本文介绍了Java泛型的基本概念和使用方法。通过垃圾分类的比喻说明了泛型的作用,即对同类数据进行集合管理。文章对比了使用instanceof判断类型和泛型的区别,展示了泛型在减少代码复杂度方面的优势。详细讲解了泛型的语法、编译原理(类型擦除机制)以及上下界(extends和super关键字)的应用场景,并用垃圾桶的例子形象解释了上下界的使用限制。最后介绍了通配符"?"的用法及其适用场景。全文通过生活化的比喻帮助读者理解泛型这一抽象概念。
2025-09-06 19:38:15
732
原创 我的创作纪念日
作为一名大学生,技术创作在我的生活中占据着独特且重要的位置,与我的学习和未来职业规划紧密相连,同时在精力有限的情况下,平衡好创作与学习也成为了一项重要的挑战。而且,创作还激发了我主动学习的热情,为了写出有深度、有价值的内容,我会主动去探索更多前沿的技术和应用案例,拓宽自己的技术视野。我始终坚信,技术的魅力不仅在于其本身的强大功能,更在于知识的共享与传承。虽然在这半年的编程学习时光里,我接触和掌握的语法知识还远远称不上丰富,甚至还不足以独立完成一个完整的项目,但这段时间带给我的收获却是沉甸甸的。
2025-03-30 17:25:25
975
原创 继承和多态
所谓的继承其实就和电视剧中集团少爷继承亿万家产中的“继承”是同一个道理,总所周知,想要继承,那么两者必须要构成某种特定的关系。在JAVA中也如此,想要继承的话必须有一个子类,也必须要有一个父类,而连接两者的桥梁便是“extends”这个关键字。在面向对象编程里,子类是对父类的扩展,子类拥有父类的所有属性和方法,并且可能还有自己额外的属性和方法。向上转型就是把一个子类类型的对象当作父类类型来使用。
2025-03-30 00:19:09
1185
原创 JAVA 类和对象
包允许将类组织在同一个层次当中,这有效防止类名的冲突和提高代码的可读性。它就好比系统中的文件夹,将同类的事物放在一起。如果一个类想在类里面调用另外一个包的类,那么我们便要将那个包导入到当前这个包里面,其实在之前我们早就使用过导入包这个操作了,例如Scanner当然,我们写代码必要时也需要创建包。首先我们右键src,然后再点及Package接着,输入包的名字即可(注:包的名字要全部小写),例如:demo1.......
2025-03-23 15:07:35
359
原创 JAVA 之 类和对象
类就像一张蓝图,例如像汽车的图纸、房子的架构图等。它在JAVA也是如此,他是一个框架,里面包含了属性,行为等,以下列代码为演示:这一串代码表示的是一台电脑的图纸,红色框内是属性,可以理解为配置,而黄色框内表示的是行为,可以理解为功能,其中红色框内是用来说明这个类是什么,黄色框说明这个类可以用来做什么。对象在日常生活中可以指代伴侣,物体.......,在JAVA中,其作用是类的体现。正如刚刚输入的Scanner,其实这个就是一个类,当我们new了之后,就等于创建了一个新的对象。
2025-03-16 17:00:21
761
原创 JAVA之IDEA调试
接下来这个按键则有两种不同的用法,第一种是,程序还未开始调试,点击这里,会屏蔽所有的断点,当点击开始调试后虽然断电还是红色的,但是他不会停下来。第二种是,程序已经开始调试后,点击按钮,会屏蔽断点,此时断点的颜色是灰色的。再编程后期,随着代码量的增加,红点的个数也会跟着增加,有时想直接从第一行的断点运行到地五行的断点,我们便可按下此键,它便会跳到你想移动到的位置了。而这一个则是用来显示现有的断点,通过此处可以清晰地知道有多少个断点及其位置,亦可以删除断点,当然,前面也有介绍过快捷键,这里就不多讲了。
2025-03-09 23:35:45
751
原创 C语言的认识3(持续更新)
随机数的生成必须要包含头文件<time.h>格式:其中srand(time(NULL));就是设置种子,rand()%100+1就是获取随机数。
2025-02-26 08:00:00
698
原创 C语言的关键字
A:关键字是预先定义好的、具有特定含义且被编译器识别的单词,它们有着专门的用途,不能被用作变量名、函数名等自定义的标识符,如printf这些。
2024-12-07 07:00:00
322
原创 C语言的认识1(持续更新)
占位符用于指定输出格式,并预留出相应位置,之后函数执行时会用实际的数据去替换这些位置进行显示。也就是说是用来占位置的,如图1.定义变量前,需要确定此变量是什么类型,如整形就对应int,浮点型就对应float2.确定完类型后需要给变量起一个名字,如a,ab3.此时可以为变量附上值(不强制性要求)
2024-12-06 16:45:51
1216
原创 注册CSDN的第一天,自我介绍及问题询问
其次就是学习编程的计划,我打算大一上学期学好C语言后,开始学习C++或者java(其实挺犹豫的,不知选哪个好,提点建议呗),若还有时间的话学习一下前端等技术。既然说到计划,那就不得不说下每周花在编程的时间,我打算一周大约21个小时,平均下来一天三小时。但是,实操下来仍有许多疑惑的地方,像学完C语言后能做什么,C语言能干什么以及学完C语言后学算法结构还是直接学多们编程语言等问题。同时,我对我的学习计划也有所疑惑,以下是我的编程计划。如果可以,实现一下我儿时的梦想------编出一款自己创作的游戏。
2024-11-22 18:13:49
216
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅