- 博客(28)
- 收藏
- 关注
原创 网络原理(自定义协议)
数据组织格式:行文本:原始定义方式xml:可读性高,冗余量高json:可读性高,冗余量一般,目前主流方式protobuf:可读性低,运行效率高,冗余最小,高性能情况下使用。
2024-12-22 16:02:28
767
1
原创 TCP流套接字编程
可以看到,Scanner的构造方法中参数对象是可以为InputStream输入流对象的,因此使用Scanner方法可以直接写入到输入流对象中。
2024-11-22 15:15:55
683
3
原创 UDP数据报套接字编程
(1)读取请求并且解析(2)根据请求,计算响应(3)把响应返回给客户端(4)记录日志,观察执行结果(由于当前是在本机运行,IP地址为“127.0.0.1”)(1)输入需要发送的数据(2)构造并发送数据报(3)接收并显示服务器的响应因为服务器是7*24小时工作的,所以我们需要一个死循环来模拟一下服务器客户端也可以使用死循环来模拟请求。
2024-11-19 18:33:27
834
2
原创 网络编程套接字概念(UTP和TCP)
认识了网络,我们就应该考虑一下如何编程实现不同主机上的应用进程之间如何进行双向互通的端点。是网络编程的一种基本概念,套接字是应用程序通过网络协议进行通信的接口,是操作系统提供的一组api(在传输层给应用层提供)。在网络编程中,套接字主要应用于客户端和服务器之间的通信,工作在网络的,基于来传输数据。是传输层的俩个核心的协议,这俩个协议有很大的差别,所以Socket就提供了俩套套接字,分别为和数据报套接字。
2024-11-17 16:49:26
969
3
原创 网络原理(TCP/IP)
网络原理涉及到计算机网络的基本组成、工作原理、以及网络通信的基础知识。而计算机网络是由节点链路和协议三个重要元素组成的系统,通过通信线路连接多个计算机及其外部设备,实现资源的共享和信息的传递。网络通信的本质是网络数据传输,计算机之间通过网络来传输数据。
2024-11-09 14:15:57
1253
4
原创 多线程——Thread 类的基本用法
以下是Thread类的几个常见属性1.ID是线程的唯一标识,不同线程不会重复2.名称是其他的调试工具用到。
2024-10-26 16:50:06
755
2
原创 MySQL—视图
基本表和视图修改时都会互相影响,因为视图本质上是一个虚拟表,不存储任何数据,基于原表的数据。而且视图的数据是动态生成的,视图只提供了一个查看和操作原始数据的接口,也可以用来限制用户对数据的访问。
2024-10-11 17:30:41
690
1
原创 MySQL 表的增删改查
在SQL语句中,对于表的增删改查围绕着这几种基本格式:增(create),删(delete),改(update),查(retrieve)。对于表的操作,这里推荐一个MySQL的可视化工具:Navicat(
2024-09-14 18:46:49
1410
11
原创 MySQL数据库基本操作
对于关系型数据库,通常是使用了关系模型来组织数据,关系模型指的是一种二维表格模型,关系型数据库就是基于二维表及之间的联系所组成的一个数据组织。而对于MySQL而言,是属于关系型数据库,它基于二维表的实现。上图对应的每一列都是数据库中表的属性,而数据行对应的是每一条的记录,将记录一一对应在表中的属性上,形成一条条的记录存储在表中。MySQL就是利用列与行的关系来操作表,使得存储查询新增删除变得方便起来。关系型数据库一般用于业务方面的OLTP系统。
2024-09-04 11:53:35
534
3
原创 双指针算法——滑动窗口
滑动窗口本质上也是利用双指针来解决特定情况下的问题。滑动窗口算法思想是通过俩个指针,定义在左边和右边,俩指针同向运动,保持着一个像“窗口”一样的双指针来不停的压缩或者扩展来移动“窗口”,从而找到特定的子数组。
2024-06-24 12:54:24
2299
8
原创 双指针算法
该算法涉及到使用俩个指针来来遍历数组,通过俩个指针的协调工作,能大大的提高代码效率,有效的减少时间复杂度,提高代码性能。双指针算法包括快慢指针,前后指针,或者可以搭配单调性来很好的解决问题。本文将利用Java语言来实现双指针的常见题型。
2024-06-18 22:38:06
902
8
原创 ArrayList——简单洗牌算法
该语法情况比较特殊,相当于一个“二维数组”存着一个个线性表的结构,如图:该语法的灵活性强,可适用于多种类型和多种情况。接下来就使用该语法来实现一个简单的洗牌操作。
2024-06-06 22:44:06
997
9
原创 ArrayList
顺序表是线性表的一种,它是较于数组更加灵活的一种储存方式。线性表通常是逻辑上是连续的一条直线,但在物理上不是连续的。java中已经实现好了一个顺序表,搭配泛型可以支持各种类型的使用,下面就来介绍该如何使用。
2024-06-06 16:56:09
987
3
原创 JAVA——异常
先来看异常的内部是如何实现的:可以看到,一路调用父类来执行抛出异常的操作,而形参为String类(填写错误信息)我们可以模仿使用继承来选择异常为运行时异常还是编译时异常,然后内部调用super,传入一个形参,则如下实现://登录//用户名异常//密码异常//自定义异常实现登录//抛出异常错误if(!throw new NameException("用户名错误!");if(!throw new PasswordException("用户密码错误!");
2024-06-03 12:34:39
948
9
原创 String类详解
由图可知道,String类的字符由value数组所进行维护,无法修改。所有涉及到可能修改字符串内容的都是创立一个新的对象,改变的是新对象,原有的字符串无法改变,如我们使用replace方法:可以看到,这个替换只是创建了新的对象,并没有真正的改变。如果真要改变字符串,可以直接这样:
2024-05-30 15:48:50
1216
13
原创 Object——toString方法和equals方法
在java中,所有类都是有继承关系存在的,都默认继承Object类。当一个类继承了其他父类,它并不会直接继承Object类,但是它的父类若是没有其他继承关系也会默认继承Object类,子类也可以继续调用Object类。由图可知,原先的方法是类名 + “@”+ 地址组成的(内部实现可自行查看,按住ctrl+点击),我们通过了重写的方法使得他能够打印出整个对象。Object类提供着许多方法,但是这些方法在开发过程中往往不能满足程序员想要的功能,一般会对Object类的方法进行重写,以满足功能开发的多样性。
2024-05-27 11:54:04
424
8
原创 Object——Clonable接口(深浅拷贝)
Object提供了一个拷贝方法,用于重新创建出一个数据一样的对象或者数据的副本。拷贝的意义在于节省创建对象的成本,避免原对象的数据修改。
2024-05-23 15:53:14
379
5
原创 用接口模拟实现排序方法
如果int能和int进行比较,那么student类能和student类进行比较嘛?答案是不能直接比较的,因为编译器不确定是通过什么方法比较,比如让sort方法进行排序,编译器会报错那我们该如何使其能成功比较并且排序呢?
2024-05-22 19:46:26
453
8
原创 JAVA——接口
关键字:interface(用于定义接口)关键字:implements(用来实现接口)接口的定义方式与类的定义方式类似,只需吧class换成interface即可语法格式:interface 接口名称{//抽象方法。。。类要想使用接口,则通过implements来实现接口,并且重写接口的所有抽象方法(子类与父类为extends继承关系,类与接口是implements实现关系)语法格式:class 类名 implements 接口名称{//重写的抽象方法。。。接口的实用代码实例:
2024-05-22 15:10:16
2360
10
原创 JAVA——抽象类
被abstract修饰的类被称为抽象类,被修饰的方法称为抽象方法,抽象方法不用给出具体实现(即无方法体)抽象类中可以有其他的普通方法,也可以有属性和构造方法。但是一个类当中如果有抽象方法,那么这个类必须是抽象类,抽象类不能被实例化对象!
2024-05-20 23:42:58
206
5
原创 JAVA——多态
多态是面向对象编程的一个重要特性,实现方式主要体现在重载和重写,以及接口的实现。多态的出现使得调用者对类的使用成本降低,可降低代码的“圈复杂度”,避免使用大量的if-else,可扩展能力强。
2024-05-20 19:10:50
1141
4
原创 JAVA——继承
继承是java的面向对象编程的四大基本特性之一,合理的使用继承,能大大提高程序的开发效率,有效的减少代码的冗杂和重用,让使用者的代码更加清晰并且易于管理。可能有人会想:继承是什么?为什么需要继承?下面就来由我一一解答吧。(1)概念继承机制:它允许程序员在保持原有的类的特性的基础上进行扩展,延伸增加新功能,专门用来进行共性抽取,实现代码复用。
2024-05-20 11:42:41
1115
4
原创 JAVA类和对象
我们知道,java中已经提供了很多现成的类供我们使用,如Scanner类是java中提供的用于扫描输入文本的实用程序类,这个类存在于java.util这个包中,使用import语句如上图一样导入我们的包。static成员是静态成员,静态成员不属于任何的单个实例,而是属于类,被static修饰的成员只有一份,存在方法区(静态区),不属于某个具体的对象,是所有对象。编译器里自带的toString方法是用来打印对象地址的,然后我们给定一个方法toString,调用这个方法的重写打印对象,所以打印出来的就是对象。
2024-05-16 14:53:02
674
5
原创 基础版扫雷游戏的流程
用来统计mine数组被选择坐标(x,y)周围雷的个数,因为都是字符‘0’或字符‘1’,此时需要用到ARCll码值进行计算,俩者相差1,通过周围八个坐标和八个字符‘0’的arcll码值的差来返回。打印show棋盘,行和列的数组打印方式,11*11,外围一圈为空格(不打印),其余全部为‘*’(9*9),再打印显示的行和列。排查9*9里的mine棋盘的雷,需要用到布雷棋盘和显示棋盘,布雷棋盘(mine)隐藏操作,判断雷的位置,显示棋盘(show)显示周围有几个雷,此时需要统计,用到函数GetMineCount。
2023-12-15 14:33:32
1030
9
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人