自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 Java网络编程(4):(socket API编程:TCP协议的 socket API -- 回显程序)

TCP协议并没有像 UDP协议 那里一样,提供了send 和 receive 方法。而是提供了和这两个方法,获取到字节输入流对象 和字节输出流对象。Socket 本身,是不会进行读写操作的,而是借助两个字节流对象,和OutStream,完成类似于 UDP协议的 send 和 receive。所以,这也是我推荐你看完Java 文件操作 和 IO(3)-- Java文件内容操作(1)-- 字节流操作这篇博客,再来看这篇博客的理由。掌握了字节流对象的输入和输出操作,才能编写接下来的这个程序。

2025-09-14 09:50:46 656

原创 Java网络编程(3):(socket API编程:UDP协议的 socket API -- 简易翻译程序)& 云服务器的简单了解

通过继承的方式,将 回显服务器 的代码进行了复用,减少了重复代码的书写。同时,针对 “ 根据请求,计算响应 ” 这一个单独步骤的方法,进行重写,实现了新的业务逻辑。/***/// 使用哈希表,存储单词,形成单词库// 初始化单词库dictionary.put("你好","hello");dictionary.put("月亮","moon");dictionary.put("小猫","cat");dictionary.put("小狗","dog");

2025-09-14 09:50:23 593

原创 Java网络编程:(socket API编程:UDP协议的 socket API -- 回显程序的客户端程序的编写)

综上所述:客户端程序的 socket对象 进行初始化的时候,一定不能填写 serverPort 或 固定的端口号,必须使用无参数的构造方法,让操作系统随机分配一个空闲的端口。// 由于 UDP 协议本身,并不会保存对端的信息,我们需要在自己的代码中保存一下//客户端和服务器端不一样,//客户端这里的构造方法,是要指定访问的服务器的地址(IP 和 端口号)......这就是客户端的完整编写过程。这篇博客,是基于。

2025-09-13 10:32:30 518

原创 Java网络编程:(socket API编程:UDP协议的 socket API -- 回显程序的服务器端程序的编写)

获取的是 response 这个String对象中的字节数组获取字节数组的长度获取客户端的套接字地址(IP 地址和端口号到这里,我们的响应数据包,就构建好了,我们就可以发送了。读取请求并解析,这一步,应该是开始上难度了,因为这一步,我们使用到的几个方法,都是第一次使用。而且,通过字节数组,来创建 String对象的方式,比较少见。所以,这一步理解起来,可能会有难度了。如果其他的服务器,处理方式,可能不一样,这里仅仅是讨论了我们这个回显服务器的 socket对象,要不要关闭的问题。

2025-09-13 10:32:05 595

原创 Java网络编程(2):(socket API编程:UDP协议的 socket API -- 回显程序)

请求客户端给 服务器端发送一个数据,叫做请求响应服务器端 返回给 客户端 一个数据,叫做响应回显服务器请求是什么,响应就是什么。比如:请求是 “ hello ” 这么一个字符串,响应同样是 “ hello ”。所以,我们这里设计的程序,就是要达成这样的效果!但是真实情况中,真正的服务器,请求和响应肯定是不一样的我们这里,不去理会服务器的复杂逻辑,主要是学习 UDP 的 socket API 的初步使用,因此,这里就写一个最简单的回显。回显类似于什么呢?有点像鹦鹉学舌。

2025-09-12 14:04:57 994

原创 Java网络编程(1):(使用 socket 进行网络编程前的预备知识)

这篇博客,主要介绍了TCP和UDP的四个特点。也仅仅是简单介绍了一下,更详细的,需要我们使用 socket API 进行网络编程之后,有了基本的了解,再去详细的说TCP协议和UDP协议的这四个特点。尤其是TCP协议,这是一个非常重要的协议,既是面试中考的很多的协议,也是以后开发工作中,经常涉及到的内容。介绍这四个特点,既是面试的时候,会考,也是对后续使用 socket API 进行编程做准备,在代码中,会体现到以上的这四个特点。

2025-09-12 14:04:14 744

原创 双指针算法_移动零

这里的指针,并不是C语言 当中的指针。这里的指针,指的是数组下标 来作为指针。因为数组里面,有个很好的特性,我们可以通过数组的下标,来索引(寻找)到数组的元素。

2025-09-11 18:50:29 1004

原创 Java网络初识(5):网络数据通信的基本流程 -- 分用

Java网络初识(4):网络数据通信的基本流程 – 封装如果你是第一次点击这篇博客,你需要先点击这个链接,将上面这篇博客看完,再回来看这篇博客。分用这个过程,其实就是封装的反向过程。根据物理层数据信号,来确定数据链路层使用的是什么协议(此处假定为以太网协议)接着,通过以太网的报头判断上一层(网络层)使用的是什么协议(此处假定为IP协议)然后,通过IP报头,判断上一层(传输层)使用的是什么协议(此处假定为TCP协议)最后,通过TCP报头中存放的目的端口号,告知我们数据应该要交给哪个应用程序。

2025-09-11 18:49:32 996

原创 Java网络初识(4):网络数据通信的基本流程 -- 封装

Java网络编程:初始网络(协议分层(TCP/IP五层模型))如果你有网络有一定的了解,可以直接看像我们这里,需要传输的这个应用层数据包,往往是一个结构化的数据,里面包含多个属性。什么是结构化的数据?类似于C语言的结构体,Java的类,有很多的属性。但是,要想将这个结构化的数据,发送出去,要把结构化的数据转换成 字符串/二进制的bit流(结构化数据 —> 字符串/二进制的bit流),接收数据的时候,把字符串/二进制的bit流解析回 结构化数据(字符串/二进制的bit流 —> 结构化数据)。

2025-09-10 09:55:52 993

原创 Java网络初识(3):协议分层(TCP/IP五层模型)

如果你本身对 协议 这个概念有点了解的话,就可以直接看这篇博客Java网络初识(2):IP地址和端口号,协议,五元组,再来看我这篇博客。仍然是拿床刷子这个例子来举例:你在淘宝买了一个床刷子,买了之后,等它一到我的手里,我需要考虑的是如何使用床刷子 —> 应用层卖家只要关心,收件人的信息,不需要关心运输流程 —>传输层物流需要关心,包裹是怎么传输的 —> 网络层快递小哥/货车司机,关心的是相邻节点间的传输 —> 数据链路层当然,运输的前提,是要“修桥铺路”,有路,才能运输 —>物理层。

2025-09-10 09:55:16 1112

原创 Fiddler 的简单使用,使用Fiddler 查看请求和响应

这篇博客,主要是介绍了如何使用 Fiddler 的。

2025-09-09 09:24:56 734

原创 抓包工具:Fiddler 的安装

这篇博客,就主要介绍了如何安装 Fiddler。Fiddler 的简单使用,使用Fiddler 查看请求和响应。

2025-09-09 09:24:28 816

原创 Java网络初识(2):IP地址和端口号,协议,五元组

网络协议,是计算机网络中用于数据交换的一组规则、标准或约定,是通信双方对于 发送/接收数据格式的约定。即,我的数据怎么发送给你的,你收到之后就得怎么解析。我发送的规则,和你解析数据的规则是一样的,才是有意义的。IP地址和端口号协议的概念五元组协议分层(重点掌握)这些内容,图片可能没有别的博客那么生动形象,但是,该有的内容,基本上都有,也足够通俗易懂,希望这篇博客讲到的知识内容,能够帮助到对这方面知识有困惑的你!

2025-09-08 18:35:44 1042

原创 Java网络初识(1):局域网和广域网,路由器,交换机

单机时代(不能联网)—> 局域网时代 —> 广域网时代 —> 移动互联网时代(截止2025年,仍处于这个阶段)到这,先对路由器和交换机有个概念,印象即可,后面学到具体的网络协议的时候,再讲这两个设备的具体区别。本篇博客,主要是记载了我国国内,网络的发展历程,由于都是文字,读起来会有点枯燥,能读到这里,也已经很了不起了。什么是局域网什么是广域网路由器的功能交换机的功能。

2025-09-08 18:33:10 765

原创 常见的七种排序算法 ——直接插入排序

中间变量,我以tmp为例。这两种方式的代码,你随便选就可以,都能达到最终目的:将数组的首个元素,更改为最小值。

2025-06-03 16:04:12 1029

原创 Java 文件操作 和 IO(5)-- 综合案例练习 -- 示例三

这一个代码,对于搜索文件,总体来说,是一个比较低效的方法。因为我们这个查找过程,我们需要针对所有的文件的文件名和文件内容进行遍历,整体的一个遍历的开销,如果文件多的话,这种开销是比较大的。如果,你搜的是整个 C盘(算是一个很大的目录),那么,搜索的时间就很久了,你可以自己试试。总体来说,是一个比较慢的方案。更高效的方案,就是“搜索引擎例如:百度,搜狗等。搜索引擎做的事情,就是在海量的文件当中,找到哪些文件的内容包含了关键字,而且,还要识别出哪些文件的相关性更高,排到前面。

2025-06-03 16:03:50 1023

原创 Java 文件操作 和 IO(5)-- 综合案例练习 -- 示例二

复制,就是把文件里的每个字节,都读出来,写入到另一个文件中。E:\code\gitee\JAVA代码\java-code-\java_File_IO_11.28\cat.jpg 是一张小猫图片。的介绍中,我们说过,该方法可以进行文件的移动,那么,文件的复制,又该如何操作呢?本题要求进行普通文件内容的复制,使得复制后生成的文件和源文件的大小是一样的。程序的最终目的:将结果演示案例的小猫图片复制一份,要求大小一样。,并对这两个 File对象,进行。,也就是被复制的文件的。,也就是复制出来的文件。

2025-06-01 00:21:59 1071

原创 Java 文件操作 和 IO(5)-- 综合案例练习

由于这三个综合案例,解释起来,文字比较多,我就在这篇博客里,设置三个综合案例的博客连接,点击蓝色文字即可跳转。

2025-06-01 00:21:16 308

原创 Java 文件操作 和 IO(5)-- 综合案例练习 -- 示例一

E:\code\gitee\JAVA代码\java-code-\java_File_IO_11.28\test.txt 是一个普通的文本文件。的文件,然后输入 y / n ,y 表示删除文件,n 表示不删除文件。(我代码中的 rootfile),第二个变量:要删除的文件中,,无法列出子目录的内容(当前目录中的另一个目录中的内容)。然而该项目路径中,并没有以这样关键字为名的普通文件。,传入两个变量,第一个变量:根据目录的路径所创建的。遍历目录的代码,我们写到一个方法里面,,孙子目录,曾孙目录…

2025-05-31 22:07:32 1017

原创 Java 文件操作 和 IO(4)-- Java文件内容操作(2)-- 字符流操作

使用java来操作文件,主要是通过java标准库提供的一系列的类,而这些类,又可以分为两种操作方向:文件系统操作这里主要是关于 文件 或 目录 的创建,文件的删除,文件的重命名,创建目录等…文件内容操作这里就是对某一个具体的文件的内容进行读和写了,又由于文件有两种种类,所以,我们又区分了字节流操作和字符流操作。(1)字节流:读写文件,以字节为单位,是针对二进制文件使用的。(2)字符流:读写文件,以字符为单位,是针对文本文件使用的。这篇博客里面,讲的是文件内容操作中的字符流操作。

2025-05-31 22:06:40 1265

原创 Java 文件操作 和 IO(3)-- Java文件内容操作(1)-- 字节流操作

使用java来操作文件,主要是通过java标准库提供的一系列的类,而这些类,又可以分为两种操作方向文件系统操作这里主要是关于 文件 或 目录 的创建,文件的删除,文件的重命名,创建目录等…文件内容操作这里就是对某一个具体的文件的内容进行读和写了,又由于文件有两种种类,所以,我们又区分了字节流操作和字符流操作。(1)字节流:读写文件,以字节为单位,是针对二进制文件使用的。(2)字符流:读写文件,以字符为单位,是针对文本文件使用的。这篇博客里面,讲的是文件内容操作中的字节流操作。

2025-05-29 12:39:10 1209

原创 字节流操作:InputStream类 读取文件的操作(三种 read 方法)

读取英文字符的时候,按照一个一个字节读出来的,打印的结果,是英文字符所代表的 ASCII码。读取中文字符的时候,按照字节读取,结果以十六进制的形式表示,可以证明,是 UTF-8 字符集 中所表示的汉字。其实,文件内容操作,就那么几个步骤打开文件操作文件中的内容(读或者写),关闭文件在实际开发过程当中,这三种read方法需要根据具体的情况来进行使用。这篇博客,主要是讲解 使用字节流操作:InputStream类 读取文件的操作(三种 read 方法)。

2025-05-29 12:38:48 1374

原创 Java 文件操作 和 IO(2)-- Java文件系统操作

java中操作文件,主要是通过java标准库提供的一系列的类,而这些类,又可以分为两种操作方向:文件系统操作这里主要是关于 文件 或 目录 的创建,文件的删除,文件的重命名,创建目录等…文件内容操作这里就是对某一个具体的文件的内容进行读和写了,又由于文件有两种种类,所以,我们又区分了字节流操作和字符流操作。(1)字节流:读写文件,以字节为单位,是针对二进制文件使用的。(2)字符流:读写文件,以字符为单位,是针对文本文件使用的。这篇博客里面,讲的是文件系统操作,关于文件内容操作,将在。

2025-05-28 09:55:16 1127

原创 Java 文件操作 和 IO(1)-- 文件相关知识背景介绍

文件是存储在硬盘上的目录也是文件,操作系统通过树形结构组织目录和文件通过路径识别或定位到具体的文件(绝对路径,相对路径)文件分为 文本文件和二进制文件首先,硬盘有明确的分类机械硬盘 和 固态硬盘。绝对路径,我们说这是一个文件在计算机硬盘中,存放的完整路径。可以理解为:这是你家的详细地址,或者是你寄快递时候,需要写一个完整的地址,可以让快递员送货上门。相对路径,我们谈到相对路径,需要明确一个 基准路径以这个基准路径为出发点,寻找到目标文件。

2025-05-28 09:54:22 1035

原创 Java 继承(下)

时刻牢记,我们写的类是现实事物的抽象。真正的项目往往业务比较复杂,可能会涉及到一系列复杂的概念,都需要我们使用代码来表示,所以我们真实项目中所写的类也会有很多类之间的关系也会更加复杂。但是即使如此,我们并不希望类之间的继承层次太复杂。一般我们不希望出现超过三层的继承关系。如果继承层次太多, 就需要考虑对代码进行重构了。如果想从语法上进行限制继承,就可以使用final 关键字final关键字可以用来修饰变量、成员方法以及类。到这里,继承介绍完了,需要学习继承的读者,看完java 继承(上)

2025-05-27 23:21:17 992

原创 Java 继承(上)

如果访问的成员变量子类中有优先访问自己的成员变量。如果访问的成员变量子类中无,则访问父类继承下来的,如果父类没有定义,则编译报错。如果访问的成员变量与父类中成员变量同名(相同),则优先访问自己的。成员变量访问遵循就近原则自己有优先自己的,如果没有则向父类中找。在子类对象中访问父类不相同的成员方法的时候,优先在子类当中去寻找,如果子类当中没有,则去父类当中找父类找不到的话,就编译报错。在子类对象中访问父类相同的成员方法的时候,优先使用子类的。当子类和父类。

2025-05-27 23:20:33 980

原创 检测字符串是否为回文 -- java

做题链接:验证回文串如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。形如:abcba,正着读是 abcba,反着读是 abcba,这就是一个回文串。字母和数字都属于字母数字字符。给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 。开始先进行大小写的转换,然后定义 left 和 right ,作为下标,分别指向字符串的首字母和结尾最后一个字符,然后循环遍历,从 左侧和右侧分别向中间逼近 ,比较 lef

2024-11-02 10:36:19 1016

原创 记录字符串当中的单词数 -- java

总体思路:定义一个count,用来计数,作为方法的返回值以 空格 作为分割符,将字符串拆分,放到一个String数组里面去,然后循环遍历数组的元素,判断该元素的长度是不是为 0 (其实也就是判断该字符串是否为一个空格,因为你无法避免需要拆分的字符串会出现连续的空格,然后被 split 方法拆分),如果是为 0,不做处理,如果不为 0,则 count++ ,循环结束以后,返回的 count ,就是记录的单词数。统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。

2024-11-02 10:35:55 508

原创 Java的String类(下)

字符串最后一个单词的长度以上就是 关于 String类的一些基本编程题目,且以上的解题方法,并不只有一种,大家也可以去看看其他的解题方法。这些题目,由于堆积在一个博客里,可能在想看自己想看的题目的解答的,不太方便一下就找到,所以,这些题目,我也会每道题目都独立出来,放在我的另一个专栏:java简单编程题 里面。看完这篇博客,希望这在学习JAVA的你,可以自己动手敲一敲,不要看着代码,自己去想,能自己敲出来,说明你的编程能力又提升,这样日积月累下去,相信你一定会成为一个编程高手的~~

2024-11-02 10:35:28 1581

原创 转换成小写字母(限制不能使用 大写转换成小写的方法 toLowerCase())-- java

转换成小写字母,肯定不会像下面这么写,了,以下代码,只是为了让我们更好的熟悉和使用字符串常用的方法,知道转换成小写字母的工作流程。

2024-11-01 14:32:53 850

原创 字符串最后一个单词的长度 -- java

由于数组是由 0 下标开始的,所以,数组的长度-1,就是该数组的最后一个元素的下标,通过这个下标,就可以访问到最后一个数组元素,并利用。第一种思路,是对字符串进行了拆分,创建了新的字符串,对拆分后的字符串进行操作的。计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。输入一行,代表要计算的字符串,非空,长度小于5000。输出一个整数,表示输入字符串最后一个单词的长度。说明:最后一个单词为nowcoder,长度为8。第二种思路,是对本身这个字符串进行操作。

2024-11-01 14:31:38 328

原创 Java的String类(上)

Java的String类(上)

2024-10-29 15:37:06 2056

原创 第一个只出现一次的字符 -- java

由于题目限制了,s 只能包含小写字母,所以,我们可以创建一个int类型的标记数组,这个数组用来记录 s 字符串当中每个字符出现过的次数,最后可以利用。如果是 1,则表明,循环获取 s字符串 的当前字符,就是第一个只出现一次的字符,此时,令 ret = i ,同时,跳出循环。这段解题代码,是旨在解决力扣上的,而完整的一个代码,你需要在 main 方法里面,自己输入一个字符串,然后调用该方法。如果是该字符对应的标记数组的位置上为第一个出现的 1,那么就是这个字符串第一个只出现一次的字符。charAt()方法。

2024-10-29 15:34:49 584

原创 删除有序数组中的重复项 -- java

计数:建立 count 变量,并设立初始值为 1,因为一旦给出题目中的有序数组,必然会有至少一个数,循环遍历数组,根据标准值的比较判定,如果出现了不同的重复元素,就 count 加1,循环结束,返回 count 值,根据 count 值,输出数组唯一元素的个数。设立一个标准值,将这个标准值设为数组的第一个元素,这个标准值是记录数组中出现过的元素,并通过这个元素,循环遍历数组,去和数组内其他元素进行比较判定,看是或否相等,如果不相等,就更换这个标准值,直到循环结束。输出:2, nums = [1,2,_]

2024-10-21 21:53:03 712

原创 移除元素问题--java

循环获取数组内各个元素,根据判断条件,判断与val是否相同,相同则不理会,不同的话,就移动与 val 不相同的元素,同时count加1。解释:你的函数应该返回 k = 5,并且 nums 中的前五个元素为 0,0,1,3,4。解释:你的函数函数应该返回 k = 2, 并且 nums 中的前两个元素均为 2。输入:nums = [0,1,2,2,3,0,4,2], val = 2。输出:5, nums = [0,1,4,0,3,_ , _, _ ]输入:nums = [3,2,2,3], val = 3。

2024-10-21 21:52:40 663

原创 JAVA 异常

明白异常到底是什么?—>异常就是类知道异常的体系 / 知道异常的分类在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,比如:参数检测。在Java中,可以借助throw关键字,抛出一个指定的异常对象,将错误信息告知给调用者。具体语法如下:throw new XXXException(“异常产生的原因”);throw new NullPointerException("传递的数组为null");

2024-09-29 21:47:41 1191

原创 JAVA 初始类和对象(下)

基本规则在文件的最上方加上一个 package 语句指定该代码在哪个包中.包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如:com.CSDN.demo1 )包名要和代码路径相匹配. 例如创建 com.CSDN.demo1 的包, 那么会存在一个对应的路径 com/CSDN/demo1 来存储代码.如果一个类没有 package 语句, 则该类被放到一个默认包中.静态的,不依赖对象属于类不属于对象!

2024-09-29 21:47:05 920

原创 JAVA 初识类和对象(上)

java类和对象(上)

2024-09-07 22:10:58 1848 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除