自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构之队列

本文摘要: 文章系统介绍了队列和链表的数据结构原理及实现。主要内容包括:1) 队列的基本概念,说明其作为特殊线性表的特点;2) 队列的常用方法(如offer、poll等)及两种实现方式:双向链表和环形数组;3) 通过代码示例详细演示了两种队列的模拟实现过程;4) 探讨了队列与栈的相互模拟,包括用双队列实现栈和双栈实现队列的方法。文章提供了完整的Java实现代码,并分析了各种操作的时间复杂度,为理解这两种基础数据结构提供了实践指导。

2025-06-09 17:59:59 838

原创 数据结构之栈

本文系统介绍了栈的数据结构及其应用。首先讲解了栈的基本概念(LIFO)和常用方法(push/pop/peek等),并给出了基于数组的栈模拟实现代码。重点阐述了5种典型应用场景:1)递归转循环实现逆序打印;2)括号匹配验证;3)逆波兰表达式计算;4)栈序列合法性判断;5)最小栈设计。最后区分了数据结构栈、JVM虚拟机栈和栈帧的概念。全文通过代码示例展示了栈在实际开发中的灵活运用,突出了其作为基础数据结构的重要性。

2025-06-07 14:22:48 670

原创 数据结构之LinkedList

本文通过单链表的模拟实现,帮助了解单链表的底层原理,以及常见的链表的常用操作,比如反转链表,找链表的中间节点等。模拟实现双向链表,了解双向链表的底层原理,以及 ArrayList 和 LinkedList 的比较。

2025-06-06 22:05:20 1186

原创 数据结构之ArrayList

本文介绍了数据结构的前置知识和ArrayList的实现原理。主要内容包括:1. 数据结构基础概念,如时间/空间复杂度分析、包装类的自动装箱机制、泛型的使用方法;2. 顺序表的模拟实现,详细讲解了增删改查等核心操作的代码实现;3. ArrayList的源码分析,包括构造方法和1.5倍的扩容机制;4. 总结ArrayList随机访问高效(O(1))但插入删除效率较低的优缺点。文章通过代码示例和原理分析,帮助读者深入理解顺序表的数据结构和ArrayList的实现机制。

2025-06-01 22:36:48 1218

原创 Java 认识异常

本文介绍了Java异常处理机制,包含异常体系、处理流程和自定义异常三部分。Java异常以Throwable为顶层类,分为Error和Exception两类。Exception又分为编译时异常和运行时异常,可通过try-catch-finally结构处理,其中finally代码总会执行。自定义异常需继承RuntimeException(运行时异常)或Exception(编译时异常),后者需声明异常。异常处理有助于程序健壮性,printStackTrace()方法可快速定位异常位置。

2025-05-31 16:00:13 459

原创 String类中的常用方法

本文介绍了Java中String类的核心用法及特性。首先详细讲解了String的常用方法,包括构造方法、长度获取、字符串比较、查找、类型转换、替换、拆分和截取操作。其次分析了String不可变的原因,主要是由于其内部字符数组被private final修饰且类本身为final。最后对比了StringBuilder和StringBuffer的异同,指出StringBuilder非线程安全但效率更高,StringBuffer通过synchronized实现线程安全但性能略低。

2025-05-29 22:21:16 853

原创 Java面向对象 三

本文介绍了Java面向对象编程中的抽象类、接口和内部类三大核心概念。抽象类通过abstract关键字定义,要求继承子类必须实现抽象方法;接口使用interface定义,默认包含公开静态常量和抽象方法,支持default和static方法实现。内部类分为实例内部类、静态内部类、局部内部类和匿名内部类四种,分别具有不同的访问特性和使用场景,其中实例内部类依赖外部类实例,静态内部类可直接访问外部类静态成员。文章还详细说明了这些特性的语法规则和典型应用场景。

2025-05-25 18:12:57 472

原创 Java面向对象 二

本文介绍了Java面向对象编程的基础内容,主要包括继承、多态等核心概念。在继承方面,详细讲解了父类和子类成员的访问方式、构造方法调用规则、this和super关键字的异同、初始化顺序以及final关键字的使用。在多态方面,重点阐述了多态的实现条件、向上转型与向下转型、方法重写与动态绑定机制,以及重写和重载的区别。文章还分析了多态的思想本质,即通过父类引用调用子类重写方法实现不同行为。这些基础知识为理解Java面向对象编程提供了系统性的框架。

2025-05-25 12:53:03 980

原创 Java面向对象 一

本文介绍了Java面向对象编程的基础知识。主要内容包括:1)类和对象的概念及其构成(属性和方法);2)对象的实例化、初始化和this引用的使用;3)构造方法的作用、重载和调用方式;4)封装的三大特征、权限关键字和包的概念;5)static修饰成员变量和方法的特点及初始化方式;6)代码块的分类和执行顺序(静态代码块、实例代码块、构造方法)。文章系统讲解了Java面向对象编程的核心概念和基础语法,为初学者提供了完整的学习框架。

2025-05-24 22:39:35 699

原创 初识 java

本文简要介绍了JDK、JRE和JVM之间的关系,以及JVM的内存划分。JDK是Java开发工具集,包含JRE;JRE是Java运行时环境,包含JVM和基础类库;JVM是Java虚拟机。JVM内存按功能划分为虚拟机栈、堆、方法区、本地方法栈和程序计数器。其中,方法区和堆为所有线程共享,其余为线程隔离。这些内存区域分别负责存储方法调用信息、对象实例、类信息、本地方法变量和指令地址,共同支持Java程序的运行。

2025-05-19 21:29:56 465

原创 常见dp问题的状态表示

解决 dp 问题的关键首先是确定状态表示,确定正确的状态表示,才能结合题目要求顺利推导出状态转移方程。但状态表示往往是根据经验定义的,下面介绍常见类型题目的状态表示。一、动态规划核心五步1. 确定状态表示 - 根据 题目要求,结合经验(往往定义以 i,j 位置为结尾/开始......),有时也根据发现重复子问题 确定状态表示;2. 推导状态转移方程: 即 dp[i] =?

2025-05-07 14:28:38 774

原创 数据库中敏感信息的加密方法

数据库中通常保存着用户的敏感信息,例如账户密码,身份证号,手机号等。如果被黑客入侵,就会造成用户信息泄露的严重后果。因此为了保护用户信息,需要对敏感信息加密,以保证数据的安全性。提示:以下是本篇文章正文内容,下面案例可供参考虽然用户的敏感信息(如密码),可能是个简单的数字(如123456),但是黑客攻破数据库拿到的信息是一个 盐值 + 密文 组合的字符串,黑客并不知道我们的加密方式,因此不能破解得到用户的敏感信息,起到了保护用户敏感信息的作用。

2025-04-17 14:00:25 630

原创 Spring事务系列 三

当多个事务存在调用关系,事务在这些方法间是如何传播的?本文介绍Spring事务的传播机制。提示:以下是本篇文章正文内容,下面案例可供参考本文介绍了Spring事务的传播机制。

2025-04-10 22:30:53 805

原创 Spring事务系列 二

MySQL事务支持4种隔离级别,Spring中同样也都支持。本文简单介绍事务隔离级别。提示:以下是本篇文章正文内容,下面案例可供参考。本文简单介绍了MySQL和Spring中的事务的隔离级别。

2025-04-08 16:29:36 404

原创 Spring事务系列 一

MySQL中有事务的概念,关于事务,Spring也进行了实现,以下是Spring声明式事务实现方式的简介。提示:以下是本篇文章正文内容,下面案例可供参考以上就是Spring声明式事务的实现以及演示。

2025-04-08 13:13:10 1192

原创 SpringMVC中的常用注解和用法

SpringMVC中的常用注解和用法

2025-03-03 22:09:19 702

原创 HTTPS的加密流程

1.使用对称密钥对业务数据进行加密;2.使用非对称密钥加密对称密钥;3.使用第三方公证机构的数字证书,校验服务器公钥,避免中间人攻击;结合上述三个机制确保HTTPS协议的安全性。

2025-02-25 19:48:21 946

原创 HTTP协议的基本格式和fiddler的用法

fidller的基本用法和http协议的基本格式

2025-02-20 16:07:38 612

原创 简单介绍输入URL到展出页面的过程

URL的简单介绍

2025-02-17 11:40:48 352

原创 简单了解数据链路层相关知识

传输层关注的是起点和终点,网络层关注的是中间的路径规划。那么A发送给B的时候,源Mac就是A,目标Mac就是B,源IP是A,目标IP是C;B发送给C的时候,源Mac是B,目标Mac是C,源IP是A,目标IP还是C。如果协商的最大长度大于MTU,就会被分成多个IP数据包,数据报丢失会触发TCP的超时重传,因此数据包不会丢失。对于UDP协议,当UDP数据包超过1480字节,就会被分成多个IP数据报,一旦有一个IP数据包丢失,接收端就会重组失败,也就意味着,UDP在网络层被分片,会导致数据丢失的概率增加。

2025-01-03 15:22:05 334

原创 简单了解IP协议的相关特性

简单了解IP协议,关于IP地址不够用的问题

2025-01-03 14:10:52 604

原创 TCP协议的特性

TCP协议主要机制的介绍

2024-12-25 14:35:41 1262

原创 UDP的报文结构和特点

UDP协议的格式,特点和应用场景

2024-12-23 14:05:52 517

原创 网络中的基本概念

网络中的基本概念

2024-12-23 11:40:38 401

原创 File类和InputStream,OutputStream的用法

File类和Input Stream,OutputStream的用法

2024-12-14 12:22:08 693

原创 Hashtable、HashMap以及ConcurrentHashMap之间的区别

ConcurrentHashMap与Hashtable,HashMap之间的区别

2024-12-10 16:07:00 363

原创 synchronized锁总结

介绍synchronized的特性,使用,和锁机制,介绍各种类型的锁,死锁问题即如何解决。

2024-12-08 12:51:50 1100

原创 Java线程池

Java的标准库中提供了类ThreadPoolExecutor,这个类就是我们常说的线程池。线程池类给我们提供了4个构造方法,如下:通过观察可以发现,虽然ThreadPoolExecutor给我们提供了4个构造方法,但是前3个构造方法的参数都包含在第4个构造方法中,因此掌握第4个方法的参数,对理解ThreadPoolExecutor的4个构造方法非常有帮助。corePoolSize 和 maximumPoolSize:线程池中的线程可以分为两种,一种是核心线程,另外一种为非核心线程。

2024-12-05 21:09:29 679

原创 线程安全问题

当一个线程里的代码块执行的时候,另外一个线程里的必须要等待前一个线程里的代码块执行完毕,执行完毕之后解锁,第二个线程才能加锁,执行代码块里的内容。使用这个关键字修饰的代码块或者方法,就具备原子性,在执行该代码块或者方法时,就会将其视为一个不可分割的整体,只有将代码块或者方法执行完毕后,另外的线程才能再执行这个代码块或者方法。如上述代码中,两个线程t1,t2,都同时针对变量count进行修改,每个线程将count自增10000次,按照正常的预期,那么两个线程自增完成后,count的值应该为20000;

2024-11-24 21:10:22 910

原创 Java线程的状态

Thread类中,提供了getState()方法获取线程的状态。2.线程状态的含义及演示。3.状态之间的切换条件。

2024-11-23 17:29:57 177

原创 Thread类的基本用法

3.线程等待线程等待的目的是确定线程结束的顺序,但操作系统对线程的执行是“随机调度,抢占式执行”。这时候要让需要先结束的线程阻塞,等待需要后结束的线程,来保证线程结束的顺序,通常使用join()方法来实现,如下:运行结果:假如t线程先结束,那主线程也不用等待了,就更好了。如果t线程比主线程先结束,使用上面的方法也能确保t线程先结束。上面的t.join()表示让主线程一直等待,直到t线程运行结束,如果t线程死循环了,那就不能一直等待了,所以join()

2024-11-23 15:27:55 660

原创 进程与线程

线程是系统调度执行的基本单位,每个线程都可以独立到CPU上执行。进程是系统资源分配的基本单位,进程创建时,系统会分配资源(内存,硬盘等),同时也会创建一个或者多个线程(至少创建一个),共用一份资源。多进程编程,每次创建和销毁进程都需要申请和释放资源,包括内存资源和硬盘资源,当进程创建和销毁的比较频繁时,时间和空间的开销都比较大,效率不够高。一旦进程创建,再创建第二个第三个线程时,就不需要额外申请资源,因此省去了分配资源的过程,线程销毁时,也省去了释放资源的过程。多进程编程和多线程编程,都属于并发编程。

2024-11-21 20:53:03 194

原创 操作系统进程调度的基本过程

如果进程处于就绪状态,高优先级的进程会被操作系统优先调度,并且调度该进程的时间多,频率高;进程调度时,操作系统会切换进程,会出现操作系统将进程从CPU上调度走的情况,因此调度走之前会保存本次进程执行的上下文(通常为CPU寄存器的值),下次再调度该进程时,需要按照这次的上下文,继续执行。以Linux系统为例,创建进程就是创建一个PCB结构体并在链表中插入,销毁进程就是在链表上把PCB删除,并且释放PCB,修改进程就是修改链表中的PCB内部的信息,浏览进程就是遍历链表的每一个节点,依次显示信息。

2024-11-20 19:57:41 387

原创 Java中的String常用方法

从fromIndex位置开始找,从后往前找str第一次出现的位置,没有返 回-1。从fromIndex位置开始找,从后往前找ch第一次出现的位置,没有返 回-1。从fromIndex位置开始找str第一次出现的位置,没有返回-1。从fromIndex位置开始找ch第一次出现的位置,没有返回-1。从后往前找,返回str第一次出现的位置,没有返回-1。从后往前找,返回ch第一次出现的位置,没有返回-1。数字转字符串:String.valueOf()数组转字符串:new String();

2024-10-04 17:20:08 1687

原创 Java中的类和对象(4)

完成某个行为时,不同的对象去完成就会产生不同的状态,就叫做多态。概念比较抽象,举个例子,动物都有吃饭的行为,但是猫咪完成吃饭的动作,就会表现为吃猫粮的状态,小狗完成吃饭的行为,就会表现为吃狗粮的状态,大熊猫完成吃饭的动作就会表现为吃竹子的状态。同样都是吃饭的动作,不同动物吃饭,表现出来的状态是不一样的,这就是多态。

2024-10-01 11:39:13 1530

原创 Java中的类和对象(3)

对于小狗小鸟两个类来说,它们拥有两个共同的实例成员属性和一个共同的实例成员方法,代码按照上图这样写,语法是没问题的,但是相同的实例成员属性和方法写了两份,这样的代码复用性是不高的。实际中不会这样写,这时候我们会使用继承的概念,将两个类的共性进行抽取,形成一个新的父类,以简化代码,提高代码的复用性。尽管我们穿参数的时候仍然是给的“土豆”的名字,但是,由于我们使用super调用的是父类的实例成员方法,因此使用的还是父类的成员属性,所以结果是“可乐正在吃东西”。那么子类继承了父类,子类应该怎么访问父类的成员呢?

2024-09-30 21:38:33 1670

原创 Java中的类和对象(2)

将数据和操作数据的方法进行有机结合,隐藏对象的实现属性和细节,仍公开接口来和对象进行交互。

2024-09-29 21:57:52 528

原创 Java中的类和对象(1)

类和对象的知识点,主要介绍this引用和构造方法

2024-09-29 13:49:08 724

原创 从车辆测试到编程之路

大家好,我是一名车辆测试工程师,在工作过程中,我深刻体会到编程能力对于提高测试效率和数据分析的重要性。为了在专业领域更上一层楼,我决定在未来的时间利用业余时间深入学习编程,成长为一名测试开发工程师。

2024-09-21 10:31:17 352

空空如也

空空如也

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

TA关注的人

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