自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络原理(9):HTTPS 协议初识

HTTPS 是什么 & 组成引入 HTTPS 的原因什么是密钥对称加密非对称加密对称加密 & 非对称加密的特点(不同)以上,是 HTTPS协议 的基础概念,需要重点掌握。网络原理(10):HTTPS协议的工作原理详细学习 HTTPS协议 的工作原理,这篇博客,非常重要。

2025-09-25 14:50:37 1140

原创 同向双指针(滑动窗口)_长度最小的子数组

同向双指针” ,指的就是像 right 和 left 这两个指针,都是从左向右(同一个方向)移动的。而 “同向双指针” ,也可以称为:滑动窗口。为什么叫做:滑动窗口呢?如果把 left 作为窗口的左边, right 作为窗口的右边,再把两个边框起来,非常像一个窗口一样,在数组里面滑来滑去:当然,只是个名字,我们真正要学的是这个算法的思想。什么是滑动窗口?本质上,就是 同向双指针。什么时候用 滑动窗口(同向双指针)?

2025-09-24 14:34:04 718

原创 双指针_复写零

这里,依旧使用双指针的算法。cur = 0;dest = -1;使用循环,根据下面的步骤,找到 cur 指向的最后一个复写元素,让 dest 指向数组最后一个元素。我们先看,如果是这种情况下,“从后往前” 完成复写操作,是一种什么样的结果。n - 1 = 0dest -= 2cur - 1代码://2.处理边界情况,当 最后一个复写数 指向为 0时cur--;dest -= 2;最后, “从后往前” 完成复写操作,就不会报错了。

2025-09-24 14:33:38 906

原创 网络原理(8):Session的介绍

Session 是什么Session 的作用Cookie 和 Session 沟通的桥梁:SessionIDCookie 和 Session 存在的理由Cookie和Session的区别Session,是非常非常非常重要的属性。如果你以后想从事计算机行业相关的工作,这都是面试,必考内容。甚至开发工作中,经常涉及到这个属性,还有 Session。在你学习 Springboot 的过程中,一定也会涉及到 Cookie,Session。

2025-09-23 09:20:19 929

原创 网络原理(7):HTTP请求 -- HTTP请求头(Cookie)

Cookie 是什么Cookie 的存储机制Cookie 从服务器来Cookie 的应用场景Cookie,是非常非常非常重要的属性。如果你以后想从事计算机行业相关的工作,这都是面试,必考内容。甚至开发工作中,经常涉及到这个属性,还有 Session。在你学习 Springboot 的过程中,一定也会涉及到 Cookie,Session。这里,我们只是介绍了这个属性,至于如何使用,当你们学习当 Springboot 的时候,会结合代码,进行使用。HTTP请求 和 HTTP响应,

2025-09-23 09:19:35 995

原创 网络原理(6):HTTP请求 -- HTTP报头(Referer,状态码)

状态码:描述了我们本次的请求得到的响应结果,是正确,还是出错,以及出错是什么原因。直接开讲,可能大家不一定能理解到位,我们就先举一个生活中的例子:洗衣机随着时代科技的进步,现在的洗衣机,发展迅速,有的洗衣机,可能都是通过液晶屏来操作了。我们要用来举例的洗衣机,不是这种,而是老式的:这种洗衣机,当你洗衣服洗到一半时,可能会报错,洗衣机停止工作,液晶屏会显示 “E02”。(不同的洗衣机,可能会不一样,我这里只是举个例子,不要钻牛角尖)显示“E02”,这是一种错误码。

2025-09-22 16:09:18 803

原创 网络原理(5):HTTP请求 -- HTTP报头(Host,Content-Length 和 Content-Type,User-Agent)

请求头 和 响应头,两个都可以叫做报头。以下,都叫做报头。报头,也叫做:header,它的整体的格式也是“键值对” 结构。报头中的内容,分为很多行,每一行,就是一个键值对。每个键值对占一行,键和值之间使用:空格分割。键: 值报头中,键和值,有哪些,都是由标准规定的,这一套标准是:RFC标准文档既然每一个键值对,都是由标准指定,那么,每一个键值对,都有其自身的含义。我们接下来,就介绍几个常见属性。请求和响应,都会使用到Content-Length 和 Content-Type。

2025-09-22 16:08:49 1212

原创 网络原理(4):HTTP协议 -- HTTP请求 -- 首行(请求方法)

通过上述抓取到的信息,我们发现,这些请求的方法,都是 GET。可以说明,GET,使用的场景,还是很多的。如果你仔细观察,会发现:GET请求一般是没有 body 的。如果需要通过 GET 给服务器发送一些数据,是通过 Query String(URL 中 ’?’ 后面的,也叫做 查询字符串 ) 传递过去的。对于POST,两个经典的场景登录上传上传 =>请求带有正文(body)的,正文就是保存了当前上传的数据的内容。我们这个更换头像的请求,图片本身,就是二进制的数据。

2025-09-18 18:32:29 1313

原创 网络原理(3):HTTP协议 -- HTTP请求 -- 首行(URL)

URL 的构成部分,已经全都介绍了。那么,介绍完这些部分之后,我举一个例子,把这些部分都串联一下。假设,我现在,在某某大学的某个餐厅,盘下了一个档口,假设是18 号档口,我来卖 早餐。面条:排骨面牛杂面鸡肉面......粥:艇仔粥皮蛋瘦肉粥白粥......其他的:.......现在,有位同学来我这吃早餐了,他点餐,是这么说的:老板,来一碗排骨面,加辣椒,不要给葱和香菜。https://某某大学几号餐厅:18/面/排骨面?葱=不要&香菜=不要&辣椒=微辣通过IP,确定的是。

2025-09-18 18:32:08 1040

原创 网络原理(2):TCP/IP五层模型 -- 应用层(HTTP协议初识)

对于 HTTP 的报文格式,我们可以总结一下:HTTP是一个文本格式的协议。分别有 HTTP请求 和 HTTP响应。首行请求头(header)空行正文(body)首行响应头(header)空行正文(body)这些格式,面试的时候,不会单独考,但是,我们进行网络编程的时候,进行开发和调试的时候,会用到。这些基本的格式,需要重点掌握,后续,我们将分成博客,单独讲解 HTTP请求和HTTP响应 中,常见的属性,和具体的含义。

2025-09-17 11:36:53 1253

原创 网络原理(1):TCP/IP五层模型 -- 应用层(自定义协议的两个阶段,约定信息组织的四种格式)

什么叫做自定制?就是你自己写代码的时候,自己发明创造出来的协议。协议,其实就是一个约定,只要服务器和客户端,遵守你所创造出来的协议,就行。协议这个概念,挺广泛的,不要想的太复杂了。应用层这里,可以说是在不断创造协议,是基于其他协议(早期大佬定义好的那些,例如:UDP、TCP、IP、以太网… …)创造的。既然程序员可以自定义协议,那么,该如何自定义呢?答:分为两个阶段第一:根据需求,明确传输哪些信息约定好信息组织的格式上面这两步,是我们在编写代码之前,就要明确好的。

2025-09-17 11:36:22 1073

原创 TCP回显程序 -- 服务器连接多个客户端

看完这篇博客,就可以回到这篇博客,继续阅读了。Java网络编程(4):(socket API编程:TCP协议的 socket API – 回显程序)

2025-09-16 09:28:58 1080

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

创建客户端的 Socket对象,并通过构造方法,初始化 客户端的 Socket对象,保存服务器端的IP地址和端口号创建 start 方法,获取客户端的 Socket对象 的两个流对象客户端会不断发送请求,编写死循环这篇博客,是对客户端程序的编写。Java网络编程:(socket API编程:TCP协议的 socket API – 回显程序),继续学习,关于 TCP协议提供的 Socket API下,回显程序的编写。

2025-09-16 09:28:39 954

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

这里,我们主要是完成了对客户端的连接建立,后续,可以通过 clientSocket ,来对客户端的请求和响应进行处理了。System.out.println("启动服务器!");// 服务器需要不断的读取客户端的请求数据,用一个死循环实现这一点// 对于 TCP 来说,需要先处理客户端发来的连接// clientSocket 这个变量,就表示和服务器和客户端进行交流的一个对象,// 后续,就通过读写 clientSocket ,和客户端进行通信将处理的过程,封装成一个方法。

2025-09-15 16:20:40 975

原创 Java网络编程:(socket API编程:TCP协议的 socket API -- 服务器端处理请求的三个步骤)

这一步操作,我们主要讲了,如何改变读取的方式采用 Scanner 的方式,对客户端发送过来的请求进行读取。这一种方式,能够简化代码,更加快捷的将请求数据转化为字符串,方便后续操作。// 处理一个客户端的连接// 一个客户端,可能会发送多个请求,就要处理多个请求,得到多个响应// 打印一个日志,输出 clientSocket 的 IP和端口号System.out.printf("[%s : %d] 客户端连接成功,客户端上线!

2025-09-15 16:19:42 1158

原创 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 811

原创 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 928

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

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

2025-09-13 10:32:30 773

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

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

2025-09-13 10:32:05 921

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

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

2025-09-12 14:04:57 1034

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

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

2025-09-12 14:04:14 783

原创 双指针算法_移动零

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

2025-09-11 18:50:29 1028

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

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

2025-09-11 18:49:32 1027

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

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

2025-09-10 09:55:52 1094

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

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

2025-09-10 09:55:16 1190

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

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

2025-09-09 09:24:56 828

原创 抓包工具:Fiddler 的安装

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

2025-09-09 09:24:28 998

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

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

2025-09-08 18:35:44 1078

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

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

2025-09-08 18:33:10 801

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

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

2025-06-03 16:04:12 1110

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

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

2025-06-03 16:03:50 1030

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

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

2025-06-01 00:21:59 1083

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

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

2025-06-01 00:21:16 311

原创 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 1023

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

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

2025-05-31 22:06:40 1314

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

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

2025-05-29 12:39:10 1219

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

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

2025-05-29 12:38:48 1464

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

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

2025-05-28 09:55:16 1137

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

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

2025-05-28 09:54:22 1048

原创 Java 继承(下)

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

2025-05-27 23:21:17 997

空空如也

空空如也

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

TA关注的人

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