自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 “滑动窗口”算法专项训练

在找到超过反转个数的right位置时,left不用走一步就更新一次,因为在刚找到的那个位置的长度一定比left往后面一步一步走的长度长(例1比例2长)巧妙转化:遇难则反,将问题转化为求数组总和减去目标数的窗口的最长长度,数组总长度减去最长长度即可得到最小操作数。

2023-10-18 21:35:59 188

原创 MySQL数据库索引

然而,对于大型磁盘表,B树索引更常见,因为它支持更多类型的查询。B树是MySQL最常用的索引结构,用于实现大多数索引类型,包括普通索引、唯一索引和主键索引。:哈希索引将索引字段的值通过哈希函数映射为索引的键值,因此可以实现非常快速的等值查找。:B树是一种平衡树结构,它确保了所有叶子节点到根节点的深度相同,从而保持了查询效率。:B树的叶子节点按键值的大小有序排列,这使得范围查询、排序和分组等操作非常高效。:哈希索引不支持范围查询、排序等操作,因为它不是按键值排序的。

2023-10-18 11:04:44 140 1

原创 最高频的五个面试题

它是一种高效的数据结构,通常用于需要快速查找、插入和删除数据的应用程序中,例如字典、集合、数据库索引等。哈希表需要一种方法来解决冲突,常见的方法包括链地址法(使用链表或其他数据结构来存储相同索引上的多个键-值对)和开放地址法(寻找下一个可用的索引位置)。- 数组:在已知索引的情况下,插入和删除操作也是O(1),但在数组的中间插入或删除元素时,可能需要移动其他元素,导致O(n)的复杂度。:服务器接收到客户端的请求后,会发送一个带有SYN和ACK(确认)标志的报文段,表示接受连接请求,并分配自己的初始序列号。

2023-10-18 08:44:08 460 2

原创 网络原理之TCP_IP

那网络传输是怎样具体展开的呢~举个例子(发送方“封装”)(接收方要“分用”)下面我们就来学习各个层的重点协议~~

2023-10-09 21:55:07 389

原创 Java基础面试题精选:深入探讨哈希表、链表和接口等

🔨ArrayList的内部实现是基于基础的对象数组的,因此,它使用get方法访问列表中的任意一个元素时,它的速度要比LinkedList快。:当容量不足时,ArrayList会增加50%的容量,而Vector会将容量翻倍,在添加大量元素时,ArrayList需要频繁的扩容操作,🔨当一个元素被加到ArrayList的最开端时,所有已经存在的元素都会后移,这就意味着数据移动和复制上的开销。ArrayList和Vector都是List接口的实现类,它们都是动态数组的实现,具有相同的方法(增删改查)

2023-09-22 11:42:59 374 3

原创 MySQL索引、事务与隔离级别探究

在 MySQL 中,索引是一种数据结构,它可以加速对表中数据的检索操作。索引的工作原理类似于书籍的目录,它提供了一种快速查找数据的方式,而不必扫描整个表格。事务是一组数据库操作,它们要么全部成功执行,要么全部失败,没有中间状态。在 MySQL 中,事务是用来确保数据库的一致性和完整性的关键机制。隔离级别定义了在一个事务中所做的更改对其他事务的可见性程度。MySQL 提供了四个隔离级别,分别是 READ UNCOMMITTED(读未提交)(读已提交)(可重复读)和 SERIALIZABLE(可重复读)。

2023-09-18 09:08:51 132 1

原创 MySQL 约束与复杂查询

当涉及到数据库管理系统(DBMS)的高级主题时,包括数据库的约束、表的设计以及各种类型的查询,特别是聚合查询、联合查询和合并查询,是非常重要的。这些主题可以帮助我们更好地理解数据库的内部工作机制以及如何有效地操作数据。在这篇博客中,我们将深入探讨这些主题~~

2023-09-16 15:08:37 181 1

原创 MySQL入门指南:数据库操作的基础知识

当谈到关系型数据库管理系统(RDBMS)时,MySQL无疑是最常见和广泛使用的一个。它是一个强大的工具,用于存储、管理和检索数据。在这篇博客中,我们将介绍MySQL的基本知识,包括数据库的操作、数据表的操作以及数据的增删改查~~

2023-09-15 19:08:01 661 2

原创 Linux操作系统基础知识

Linux 是一种开源的操作系统内核,它的主要特点是免费、可定制和高度可配置。它是一个类 Unix 的操作系统,最早由芬兰的程序员 Linus Torvalds 在1991年开始开发,并迅速发展成为一个庞大的开源社区项目。

2023-09-08 16:15:03 620 11

原创 Java虚拟机(JVM)解析:内存区域、类加载、垃圾回收和选型考虑

假设用户在自己的代码中,写了个java.lang.String这个类,按照上面的加载流程,此时JVM加载的是标准库中的类,不会加载自己写的类。举个简单的例子:当你在家电脑打游戏时,突然你妈妈过来扫地,那你就只能挂机,站起来等你妈妈扫完这个地方,才继续~~另一方面,GC可能会涉及一些锁操作,导致业务没办法正常执行,这样的卡顿,可能会持续几十毫秒或者上百毫秒~~如果有时候,内存的垃圾已经非常多了,此时触发一次GC机制,开销会非常大,大到可能把系统资源吃了很多~~本地方法栈:给JVM内部的方法准备的栈空间。

2023-09-07 16:20:36 805 10

原创 双指针:三数之和+四数之和

如果a大于0,那么之后的数相加不可能为0(因为前面已经排序了),所以如果a大于0就可以直接break。找到一个符合的结果后,left和right指针要跳过重复的元素。找到一个符合的结果后,left和right指针要跳过重复的元素。找到一种结果后,不要“停”,要缩小区间,继续往下寻找。找到一种结果后,不要“停”,要缩小区间,继续往下寻找。当使用完一次双指针算法后,a也需要跳过重复的元素。当使用完一次双指针算法后,a也需要跳过重复的元素。当使用完一次双指针算法后,b也需要跳过重复的元素。本文内容到此结束了,

2023-09-03 20:03:51 37

原创 深入理解Spring AOP:面向切面编程的魔力解析

面向切面编程(AOP)是一种编程范式,它允许您模块化地处理应用程序中的交叉关注点。这些交叉关注点通常跨越应用程序的多个模块和组件,例如日志记录、性能监控、事务管理、安全性和异常处理。AOP的主要目标是将这些关注点从主要的业务逻辑中分离出来,以提高代码的可维护性和重用性。Aop由切面、切点、连接点、通知组成。本文深入探讨了Spring AOP(面向切面编程)的核心概念、用途和示例。AOP是一种用于处理应用程序中横切关注点的编程范式。它包括切面、连接点、通知和切点等核心概念。

2023-09-02 21:29:21 56

原创 项目介绍:“SEED“ 网页聊天室

目录引言技术栈主要功能特点1. 用户认证和注册2. 实时聊天3. 群聊4. 好友管理5. 消息通知结语展望随着数字技术的迅猛发展,人们之间的沟通方式也在不断演进。传统的面对面交流已经逐渐被网络聊天所替代,而基于网络的聊天工具也在不断涌现。在这个背景下,我们推出了 SEED 网页聊天室,这是一个基于 Spring Boot、MyBatis 和 WebSocket 技术的项目。本项目旨在提供一个功能强大、用户友好且安全可靠的在线聊天平台,满足各种社交和工作需求。SEED 聊天室支持用户认证和注册功能。用户可以创

2023-09-02 17:21:07 209 1

原创 “SEED“实时网页聊天室的软件测试与评估报告

自动化测试在测试效率和一致性方面取得了显著的成果,确保了"SEED"的网页聊天室软件在各个功能方面的稳定性。(5)删除好友功能:删除好友功能在测试中表现良好,成功移除了双方的好友信息。自动化测试的目标是提高测试效率、减少人工测试工作,并确保软件在各个方面的质量。在自动化测试中,所有测试脚本均在指定环境下运行,并且通过了预先设定的断言。(4)删除会话功能:功能在测试中表现良好,会话被成功删除且会话列表中不再显示已删除的会话。(3)聊天发送与接收功能:消息发送和接收的测试均通过,消息在聊天室内正确显示。

2023-08-24 14:37:04 77

原创 Spring MVC 程序开发

MVC 是 Model View Controller 的缩写,它是软件工程中的⼀种软件架构模式,它把软件系统分 为模型、视图和控制器三个基本部分@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之⼀,它是用来注册接口的路由映射的。所谓的路由映射指的是,当用户访问⼀个 url 时,将用户的请求对应到程序中某个类 的某个方法的过程就叫路由映射。@RequestMapping 即可修饰类,也可以修饰方法,当修饰类和方法时,访问的地址是类 + 方 法。

2023-06-29 17:33:24 131

原创 Spring Boot 日志文件

Spring Boot 日志文件

2023-06-27 20:51:37 114

原创 Spring Boot 配置文件

properties 是以 key=value 的形式配置的键值类型的配置文件,而 yml 使用的是类似 json 格式的 树形配置方式进行配置的,yml 层级之间使用换行缩进的方式配置,key 和 value 之间使用“: ”英文冒号加空格的方式设置,并且空格不可省略。properties 为早期并且默认的配置文件格式,但其配置存在⼀定的冗余数据,使用 yml 可以很好的 解决数据冗余的问题。

2023-06-26 22:10:48 107

原创 Spring Boot创建和使用

Spring Boot是一个快速开发和使用spring的脚手架。

2023-06-26 16:44:34 27

原创 Spring 更简单的读取和存储对象

之前存储Bean,需要在spring-config 中添加一行bean 注册内容Spring有更简单的读取和存储对象方法。

2023-06-25 21:02:56 26

原创 Java进阶——Spring

我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽ 庞⼤的社区,这就是它之所以能⻓久不衰的原因。Spring ⽀持⼴泛的应⽤场景,它可以让 Java 企业级 的应⽤程序开发起来更简单。用一句话概括:Spring是包含众多工具方法的IoC容器容器是用来容纳某种物品的(基本)装置。List/Map -> 数据存储容器 Tomcat -> Web 容器IoC = Inversion of Control 翻译成中⽂是“

2023-06-17 14:51:13 173

原创 自动化测试selenium

自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最 后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。

2023-06-09 11:30:23 55

原创 网络编程套接字

是由系统提供用于网络通信的技术,是基于TCP/IP协议的网络通信的基本操作单元。基于Socket套接字的网络程序开发就是网络编程程序员编写代码,主要编写的是应用层的代码,真正要发数据,需要上层协议调用下层协议,即应用层要调用传输层socket api:传输层给应用层提供的一组api。

2023-05-11 17:18:42 65

原创 HTML基础

第三集第一集第二集

2023-05-10 11:23:31 38

原创 软件测试进阶

但是灵活性的设计要把握好度, 不然可能由于太多的用户状态和方式的选择,增加了软件设计的复杂性,和程序实现的难度。定义:界面测试(简称UI测试),指按照界面的需求(一般是UI设计稿)和界面的设计规则,对我们软件界面所 展示的全部内容进行测试和检查。测试的场所不同:Alpha测试是指把用户请到开发方的场所来测试,beta测试是指在一个或多个用户的场 所进行的测试。定义:内存泄露是会累积的,只要执行的次数足够多,最终会耗尽所有可用内 存,使软件的执行越来越慢,最后停止响应。直观性要求软件功能特性易懂,清晰。

2023-05-08 11:26:20 48

原创 软件测试用例

SQL注入:利用SQL代码恶意的一个查询语句,把这个代码输入到参数当中或者是页面的请 求的链接里面,然后进行解析和查询,得到数据库的一些其他信息。错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针 对性地设计测试用例的方法。假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优 惠”。:操作系统(Windows,Linux,Mac)设备(电脑,手机,pad)

2023-05-08 10:14:20 64

原创 软件测试基础

验证软件产品特性是否满足用户的需求。

2023-04-20 17:10:00 76

原创 网络的初识

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。定义:通过路由器将多个局域网连接起来,组成更大的网络,就形成了广域网。格式:端口号是0-65535范围的数据,在网络通信中,进程可以绑定一个端口号,来发送和接受网络数据。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,两个不同进程不能绑定同一个端口号,但一个进程可以绑定不同的端口号。对于一台主机,它的操作系统内核实现了从传输层到物理层的内容。2. 源端口号:标识源主机中该次通信发送数据的进程。

2023-04-18 11:27:44 36

原创 文件操作和IO

文件

2023-04-14 14:18:02 21

原创 多线程——创建线程

1.是否后台线程(isDaemon()):true表示后台线程,后台线程不阻止Java进程结束,后台线程没结束,Java线程该结束还是会结束;false为前台线程,前台线程会阻止Java进程结束,要前台线程全部执行完,进程才结束。创建的线程默认是前台线程。线程创建、销毁、调度比进程快,因为进程包括线程,进程只有创建第一个线程才需要申请资源,进程里面可以有多个线程(可以把进程看作工厂,线程是流水线)4.进程之间是相互独立的,一个进程挂了,不影响其他进程,同一个进程的一个线程挂了,可能会影响其他线程。

2023-04-07 14:23:42 50

原创 多线程——线程池

创建/销毁线程的开销!!从线程池中取线程,是属于纯用户操作,不涉及内核的交涉。

2023-03-30 20:27:55 22

原创 多线程——进阶

eg:synchronized既是悲观锁也是乐观锁,既是轻量级锁也是 重量级锁,是互斥锁,是可重入锁,非公平锁(加锁的时候会判断一下,当前申请锁的线程是不是锁的拥有者,是就放行。偏向锁:线程针对锁做个标记,如果没有遇到别的线程跟我竞争,那就不用真加锁,如果有竞争,立即升级为轻量级锁,别的线程要阻塞等待。自旋锁是轻量级锁的一种典型表现,一直等到有资源为止,消耗cpu,但是一旦锁被释放,就能第一时间拿到锁,速度很快。锁竞争不激烈的时候, 使用 synchronized, 效率更高, 自动释放更方便.

2023-03-30 17:02:21 20

原创 多线程——定时器

类似于一个闹钟,达到设定的时间之后,就会执行某个指定的代码。

2023-03-27 16:28:08 26

原创 多线程——单例模式

3.使用volatile禁止指令重排序(未装修的毛坯房),保证后续线程拿到的是完整对象。保证一个类在程序中只存在唯一实例,分为“饿汉”和“懒汉”两种实现方式。2.加锁,把if和new变成原子(不可拆分)操作。1.双重if,减少不必要的加锁操作。只是读操作,本身就线程安全。有读有写,线程是不安全的。

2023-03-24 09:30:42 27

原创 多线程——阻塞式队列

应用:生产者消费者模型(通过一个容器来解决生产者和消费者的强耦合问题。)(对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高)当队列空的时候,继续出队列会阻塞,直到其他线程从队列中插入元素。定义:阻塞队列是一种特殊的队列,也遵循“先进先出”的原则,是一种线性安全的数据结构。特性:当队列满的时候,继续入队列会阻塞,直到其他线程从队列中取走元素。作用:队列和业务无关,代码不太会变化,更稳定。

2023-03-23 17:33:34 83

原创 总结:链表

val:存储数据next:存储下一个节点的地址*链表物理上不一定连续的,逻辑上是连续的,顺序表物理上和逻辑上都是连续的

2022-12-08 19:58:16 215

原创 总结:List接口

*List 是接口,继承至Collection接口(Collection接口下还有个Queue接口,有PriorityQueue类);*List下有ArrayList,Vector,LinkedList类;*在第一次add的时候才会为ArrayList底层的elementDate分配内存,且大小为10; *List和ArrayList的区别: 在java中List list=new List();会导致编译出错,这是因为List是一个接口,接口不能被实例化。虽然List不能直接被实例化,

2022-12-04 15:45:47 290

原创 总结:装箱、拆箱与泛型

3.Integer.valueOf(int i)方法中,i只有-128至127之间才会返回。*顺序表就相当于一个数组,在进行add等操作时要判断pos的合法性。*泛型在存取数据的时候,可以帮我们进行自动的类型检查。泛型在获取元素的时候,可以帮我们进行类型转换。*在编译完成后,泛型类型擦除为Object。*装箱:基本数据类型->引用数据类型。*拆箱:引用数据类型->基本数据类型。*不能new泛型类型的数组。

2022-11-26 23:33:52 128

原创 时间复杂度和空间复杂度

四.复杂度由低到高:O(1) O(N) O(logN) O(NlogN) O(N^2)3.如果最高阶项存在且不是1,则除去与这个项目相乘的常数,得到的结果就是大O阶。计算binarySearch(二分查找)的时间复杂度。2.在修改后的运行次数函数中,只保留最高阶项。1.用常数1取代运行时间中的所有加法常数。二.在一个长度为N的数组中搜索一个数据x。斐波那契的时间复杂度: O(2^N)一.大O渐进法(表示为O())阶乘递归的时间复杂度:O(N)计算func的时间复杂度。平均情况:N/2次找到。

2022-11-25 21:40:03 40

原创 总结:异常

执行顺序:会先执行try中的代码,如果出现异常,就会看catch中的异常是否匹配,如果匹配就执行catch中的代码,如果不匹配,就会将异常向上传递到调用者,如果调用者也没有处理异常,就会继续传递,一直到main方法也没有处理,就交给JVM处理。*可以写多个catch,但是Exception作为所有异常的父类能捕获所有的异常,如果把它放在catch的第一个,那么后面的异常就没有任何作用了。*当我们没有解决异常,就交给JVM,一旦交给JVM程序就会奔溃。*异常一旦抛出,后面的代码不会执行。

2022-11-24 16:29:11 40

原创 总结:接口和抽象类

接口

2022-11-22 21:48:24 64 1

空空如也

空空如也

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

TA关注的人

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