自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringMVC 中常用注解

在SpringMVC框架的开发中,注解的合理运用能够极大地提高开发效率和代码的可维护性。今天,让我们一起来总结一下SpringMVC中一些常用的注解及其用法。

2024-07-13 04:12:53 379

原创 Java 垃圾回收的核心要点

在 Java 编程中,垃圾回收(Garbage Collection,GC)是一项至关重要的机制,它在幕后默默工作,确保程序的内存使用高效且安全。

2024-07-11 02:25:10 266

原创 Java 类加载机制与双亲委派模型

在 Java 中,类的加载是 JVM 运行时的一个重要环节。它确保了程序在运行时能够正确地获取和使用所需的类。

2024-07-11 02:22:08 153

原创 HTTPS 加密流程全解析

HTTPS 的加密流程是一个多步骤、协同工作的复杂过程,它融合了非对称加密和对称加密的优势,为我们在互联网上的敏感信息传输提供了严密的防护。HTTPS(HyperText Transfer Protocol Secure)作为一种安全的通信协议,通过复杂而精巧的加密流程,为我们的在线交流提供了可靠的保护。而在密钥交换过程中使用的非对称加密(如 RSA),虽然计算成本较高,但确保了对称密钥在不安全的网络环境中的安全交换。服务器接收到加密的对称密钥后,使用其私钥进行解密,从而获取到与客户端相同的对称密钥。

2024-07-11 02:17:30 626

原创 HTTP 协议格式与 Fiddler 工具的用法

总之,了解 HTTP 协议的基本格式对于理解 Web 通信至关重要,而 Fiddler 这样的工具则为我们深入分析和调试 HTTP 流量提供了极大的便利。在 Fiddler 的界面中,可以查看每个请求和响应的详细信息,包括请求方法、URL、请求头、响应状态码、响应头和响应体等。Fiddler 提供了一些性能指标,帮助分析 HTTP 通信的性能,如响应时间、数据传输量等。可以在请求发送前或响应返回前设置断点,以便修改请求或响应的数据,进行调试和测试。通过设置过滤规则,只显示感兴趣的特定请求,提高分析效率。

2024-07-11 02:15:01 510

原创 数据链路层:网络通信的桥梁

数据链路层的有效运作确保了数据在相邻节点之间的可靠传输,为网络层提供了稳定的数据传输服务。常见的方法有令牌环和以太网的 CSMA/CD 等。常见的方法有停止等待协议和滑动窗口协议。这是应用最为广泛的局域网技术,基于 CSMA/CD 协议,使用 MAC 地址进行节点标识。将网络层传递下来的数据包封装成帧,添加帧头和帧尾,以便在链路上进行传输和识别帧的边界。在计算机网络的体系结构中,数据链路层起着至关重要的作用,它是物理层和网络层之间的桥梁。多端口网桥,能够实现全双工通信,极大地提高了网络带宽的利用率。

2024-07-11 02:08:15 158

原创 IP 协议的特性

IP 协议是一种无连接的协议。综上所述,IP 协议的这些特性使得它成为互联网通信的基础,但同时也需要与其他协议协同工作,以满足各种不同应用的需求。IP 协议(Internet Protocol)作为互联网的核心协议之一,具有诸多关键特性,为网络通信的实现和发展奠定了坚实基础。当数据包的大小超过网络链路的最大传输单元(MTU)时,IP 协议会将数据包分段成较小的片段进行传输,并在目的地进行重组。IP 数据包的头部包含了源地址、目的地址、协议类型、生存时间(TTL)等重要信息,用于网络中的路由和处理。

2024-07-11 02:06:23 406

原创 TCP 协议:可靠传输的基石

TCP(Transmission Control Protocol,传输控制协议)作为互联网中最重要的协议之一,具有众多独特而关键的特性,为网络通信的可靠性和稳定性提供了坚实的基础。

2024-07-11 01:57:13 370

原创 UDP 报文结构与注意事项全解析

在网络通信中,UDP(User Datagram Protocol,用户数据报协议)是一种无连接、不可靠的传输层协议。尽管它不如 TCP 那样提供可靠的传输服务,但在某些特定场景中,UDP 因其简单高效而备受青睐。

2024-07-11 01:49:30 455

原创 深入理解进程调度的基本过程

在操作系统中,进程调度是一项关键任务,它负责合理地分配 CPU 资源给各个进程,以确保系统的高效运行和资源的有效利用。

2024-07-11 01:44:19 188

原创 Java 文件操作:File 类、InputStream 和 OutputStream

在 Java 中,文件操作是一项常见且重要的任务。File类用于表示文件和目录,而和则用于读取和写入文件的内容。

2024-07-11 01:37:57 136

原创 IO、存储、硬盘、文件系统相关常识

总之,IO、存储、硬盘和文件系统是计算机系统中相互关联的重要组成部分,理解它们的工作原理和特点有助于优化系统性能、提高数据管理效率和保障数据的安全可靠。它包括输入操作(如读取键盘输入、接收网络数据)和输出操作(如在屏幕上显示内容、将数据发送到打印机)。常见的 IO 设备包括键盘、鼠标、显示器、磁盘、网络接口等。外存如硬盘、U盘、光盘等,容量大、价格低但速度较慢,用于长期存储数据和程序。硬盘的性能指标包括容量、转速(机械硬盘)、读写速度、接口类型等。文件系统负责文件的存储、检索、权限管理和数据完整性保护等。

2024-07-11 01:33:31 250

原创 css选择器常见用法

后代选择器:使用空格分隔多个选择器,选择指定元素的后代元素。的形式,选择具有指定 ID 的单个元素。选择紧接在指定元素后的第一个兄弟元素。这会将所有元素的外边距和内边距都设置为 0。选择具有指定属性且属性值为指定值的元素。元素选择器:通过元素的名称来选择,例如。的形式,选择具有指定类名的元素。选择指定元素之后的所有兄弟元素。属性选择器:根据元素的属性来选择,例如。这样的元素,其背景颜色会变为黄色。的元素,会有绿色的背景。选择具有指定属性的元素,元素的文本会添加下划线。元素会有黑色的边框。

2024-07-11 01:24:14 190

原创 力扣:最长递增子序列(动态规划)

(2):子序列长度大于1时:此时我可以和[0,(i-1) | | (i-2)……] 位置构成子序列,我们可以定义j为前面某个数的下标(0

2024-05-24 17:09:42 308 1

原创 力扣:经典动态规划线性dp—打家劫舍

的话,根据题意,我们的i - 1位置一定是不能选的,那我们i - 1位置不选的最大金额刚好在我们的g[i - 1]里面存着。,因为我们的i - 1位置既可以选也可以不选,具体选不选我们要根据金额大小来判断。g[i]表示:到达第i个位置的时候不选,最大金额。f[i]表示:到达第i个位置的时候选,最大金额。

2024-05-19 16:36:38 374 1

原创 牛客网剑指offer第46题——孩子们的游戏(圆圈中最后剩下的数)

每年六一儿童节,牛客都会准备一些小礼物和小游戏去看望孤儿院的孩子们。其中,有个游戏是这样的:首先,让 n 个小朋友们围成一个大圈,小朋友们的编号是0~n-1。然后,随机指定一个数 m ,让编号为0的小朋友开始报数。从题目中可以得到,每次需要删除第m-1位置的数,然后从他的下一个位置开始计数,反复循环,就相当于是一个环,那我们可以构造出一个循环链表,一直进行循环操作,碰到符合条件的(m-1位置),就删除该位置节点,等到链表长度为1时,此时就是我们需要的结果,还有一种动态规划的做法,下面附上这两种代码。

2024-05-18 02:01:04 237

原创 力扣:最大数

首先根据提示的数据范围可以看出数据量是非常大的,所以我们要返回一个字符串,那么如何使得我们组成的这个数最大呢,由于题目说明(每个数不可拆分)那我们就需要比较数组里面两个不同位置的数,例如45和2,这两数组合有两种情况,452和245,明显是452大,那我们只需要对字符串进行排序,保证大的数在前面即可,还有个细节问题,我们最后要对排序的字符串进行判断,如果为0,返回0就好了。,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。输出结果可能非常大,所以你需要返回一个字符串而不是整数。

2024-05-17 15:14:14 318

原创 java—网络编程套接字

是客户端Socket,或服务端中接收到客户端建立连接(accept方法)的请求后,返回的服务端Socket。是UDP Socket,用于发送和接收UDP数据报。是UDP Socket发送和接收的数据报。是创建TCP服务端Socket的API。概念:Socket套接字,是。使用传输层TCP协议。使用传输层UDP协议。

2024-05-17 14:34:07 315

原创 牛客AC题:除2!

由于题目说明要使的数组的和最小,并且不能超过k次,那我们要明白数组的和最小,我们每次要取出数组中最大的偶数来进行除2操作,并且除2之后如果这个数还是最大的,我们要一直循环操作;这样不难想到我们学过优先级队列,将偶数放入优先级队列中并按照大根堆进行排序,这样变能保证我们每次操作的偶数都是最大的,附上代码。选择数组中的一个偶数 aia_iai​,将其变成 ai/2a_i/2ai​/2。现在你进行不超过 k k\ k 次操作后,给一个数组,一共有 n n\ n 个数。你能进行最多 k k\ k 次操作。

2024-05-16 18:09:04 392

原创 java-网络原理—TCP/IP

由于确认应答策略,, 对每⼀个发送的数据段, 都要给⼀个ACK确认应答. 收到ACK后再发送下一个数据段. 这样做有⼀个比较大的缺点, 就是性能较差,尤其是数据往返的时间较长的时候;这个时候接收端收到了 1001 之后,再次返回的ACK就是7001了(因为2001 - 7000)接收端其实之前就已经收到了,被放到了。接收端校验不通过,则认为数据有问题,此处的检验和不光包含TCP首部,也包含TCP数据部分。在延迟应答的基础上,我们发现,很多情况下,客户端服务器在应用层也是 "⼀发⼀收" 的,那么这个时候。

2024-05-16 15:41:22 919

原创 牛客试题广场:数组中两个字符串的最小距离

从题目中可以分析出来,要求在两个字符串中的最小距离,我们很简单的办法就是暴力枚举,定义i和j指针,寻找可能的结果,但暴力枚举的时间复杂度为O(n^2),那我们能不能想出用O(n)的复杂度来解决问题呢?给定一个字符串数组strs,再给定两个字符串str1和str2,返回在strs中str1和str2的最小距离,如果str1或str2为null,或不在strs中,返回-1。

2024-05-15 13:55:28 293 1

原创 牛客NC214:分割等和子集

由于题目数据量范围比较小,所以可以暴力枚举出所有可能情况,具体看代码

2024-05-15 02:00:53 227

原创 牛客AC题:小葱的01串

从题目可以分析出来,需要一段连续区间来进行染色,并且出现了字符数量,所以我们就可以通过滑动窗口 + 哈希表来解决问题,由于题目说明是一个环形字符串,所以要进行特殊处理

2024-05-15 01:42:10 224

原创 多线程锁策略

大部分情况下,虽然当前抢锁失败,但过不了很久,锁就会被释放。给要修改的值, 引入版本号,在 CAS 比较数据当前值和旧值的同时,也要比较版本号是否符合预期。可重入互斥锁,和 synchronized 定位类似,都是用来实现互斥效果,保证线程安全。,B 比 C 先来的. 当 A 释放锁的之后, B 就能先于 C 获取到锁。2. 开始是轻量级锁实现, 如果锁被持有的时间较长, 就转换成重量级锁.1. 开始时是乐观锁, 如果锁冲突频繁, 就转换为悲观锁.,并使用 cpu 硬件提供的 lock 机制保证其原子性。

2024-05-15 01:01:07 1025

原创 java多线程案例

生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取。线程安全问题发生在首次创建实例时,如果在多个线程中同时调用 getInstance 方法, 就可能导致创建出多个实例。​ 阻塞队列的⼀个典型应用场景就是 “生产者消费者模型”. 这是⼀种非常典型的开发模型。​ 阻塞队列是⼀种特殊的队列. 也遵守 “先进先出” 的原则。​ 类加载的时候不创建实例. 第⼀次使用的时候才创建实例。

2024-05-15 00:34:38 574

原创 java_多线程安全问题

java多线程安全问题总结

2024-05-15 00:16:30 890

原创 java_多线程之创建线程的五种方法

java创建线程

2024-05-14 23:58:57 377 1

空空如也

空空如也

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

TA关注的人

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