自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 正则表达式

在python语言中\也是转义符,为了防止\在re处理前被python处理,所以得再多加一个\;数量范围贪婪符,指定左边原子的数量范围,有{n},{n,},{,m},{n,m}四种写法,其中n与m必须是非负整数。PatternSyntaxException 是一个非强制异常类,它指示一个正则表达式模式中的语法错误。java.util.regex 包是 Java 标准库中用于支持正则表达式操作的包。重复默认为贪婪匹配,可以通过在重复符右边加一个?匹配一个中括号中出现的任意原子符号。[^\d],包括空格。

2025-09-10 16:45:18 1123

原创 LinkedList与链表

方法解释尾插元素e将element插入到指定index位置尾插集合c中的所有元素删除指定下标index位置的元素删除遇到的第一个o获取下标index位置的元素将下标index位置元素设置为element清空列表判断o是否在线性表中返回第一个o所在下标返回最后一个o的下标截取从fromIndex到toIndex之间的子列表// add(elem): 表示尾插// 在起始位置插入0// add(index, elem): 在index位置插入元素elem。

2025-09-08 15:28:02 1053

原创 ArrayList与顺序表

4种花色各13张牌(1-13)共52张牌,将52张牌洗一下,找3个人,每个人轮流揭5次牌。把这15张打印出来,再把剩下的打印出来。ArrayList虽然提供的方法比较多,但是常用方法如下所示,需要用到其他方法时,自行查看ArrayList的帮助文档。顺序表可以简单地认为就是一个数组,数组本身就是一段连续的内存,操作顺序表就是对数组进行增删查改。线性表是一种在实际中广泛使用的数据结构,是线性结构,也就说是连续的一条直线。依次存储数据元素的线性结构,一般情况下采用。在数组上完成数据的增删查改。

2025-09-05 15:53:12 762

原创 包装类与泛型

>用来标识当前类是一个泛型类class 泛型类名称<类型形参列表> {// 这里可以使用类型参数class 泛型类名称<类型形参列表> extends 继承类/* 这里可以使用类型参数 */ {// 这里可以使用类型参数// 可以只使用部分类型参数//1//2//3//4代码解释:1.类名后的 <T> 代表占位符,表示当前类是一个泛型类E 表示 ElementK 表示 KeyV 表示 ValueN 表示 NumberT 表示 Type。

2025-09-03 14:55:14 983

原创 时间和空间复杂度

它定量描述了该算法的运行时间。一个算法执行所耗费的时间,从理论上说,是不能算出来的,只有你把你的程序放在机器上跑起来,才能知道。没加优化的时候,最优与最差:(n-1)+(n-2)+(n-3)+(n-4)+...+1 -> O(n^2)通过上面我们会发现大O的渐进表示法去掉了那些对结果影响不大的项,简洁明了的表示出了执行次数。在实际中一般情况关注的是算法的最坏运行情况,所以数组中搜索数据时间复杂度为O(N)递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。动态开辟了N个空间,空间复杂度为 O(N)

2025-09-01 17:30:42 606

原创 文件操作和IO

属性修饰符及类型属性说明依赖于系统的路径分隔符,String类型的表示依赖于系统的路径分隔符,char类型的表示windows 路径分隔符为:\linux 路径分隔符为:/构造方法签名说明根据父目录 + 子文件路径,创建一个新的File实例根据文件路径创建一个新的File实例,路径可以是绝对路径或者相对路径。使用相对路径时需要明确基准目录是啥,取决于运行程序的方式。如果在IDEA中运行,此时的基准路径就是该项目所在的目录。

2025-08-28 11:36:43 891

原创 认识异常

可以基于已有的异常类进行扩展(继承),创建和我们业务相关的异常类。自定义异常类,然后继承自Exception 或者 RunTimeException。继承Exception即为编译时异常,继承RunTimeException即为运行时异常。实现一个带有String类型参数的构造方法,参数含义:出现异常的原因if (!throw new UserNameException("用户名错误!");if (!throw new PasswordException("用户名错误!");

2025-08-23 16:35:17 631

原创 String类

由于String的不可更改特性,为了方便字符串的修改,Java中又提供StringBuilder和StringBuffer类。这两个类大部分功能是相同的,这里介绍 StringBuilder常用的一些方法。尽量避免直接对String类型对象进行修改,因为String类是不能修改的,所有的修改都会创建新对象,效率非常低下。这种说法是错误的,不是因为String类自身,或者其内部value被final修饰而不能被修改。注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串。

2025-08-22 19:43:12 912

原创 抽象类和接口

答:当不能描述一个具体的对象的时候。

2025-08-21 19:50:10 960

原创 继承和多态

父子父子肯定是先有父再有子,所以在构造子类对象时候 ,先要调用基类的构造方法,将从基类继承下来的成员构造完整,然后再调用子类自己的构造方法,将子类自己新增加的成员初始化完整。如果父类没有任何构造方法,则有一个默认的不带参数的构造方法,此时子类没有参数的构造方法会自动调用那个构造方法,只不过看不到,这个过程是java自己做的。就是同一件事情,发生在不同对象身上,就会产生不同的结果。在子类构造方法中,并没有写任何关于基类构造的代码,但是在构造子类对象时,先执行基类的构造方法,然后执行子类的构造方法。

2025-08-20 12:13:34 1309

原创 类和对象

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。用面向对象的思想来涉及程序,更符合人们对事物的认知,对于大型程序的设计、扩展以及维护都非常友好。类是用来对一个实体(对象)来进行描述的。在java中定义类时需要用到class关键字,具体语法如下:// 创建类field;// 字段(属性) 或者 成员变量method;// 行为 或者 成员方法。

2025-08-18 19:32:59 884

原创 数组的定义与使用

数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。数组中存放的元素其类型相同数组的空间是连在一起的每个空间有自己的编号,其实位置的编号为0,即数组的下标。

2025-08-15 16:01:17 1247

原创 方法的使用

方法就是一个代码片段,类似于 C 语言中的 "函数"。是能够模块化的组织代码(当代码规模比较复杂的时候)。做到代码被重复使用,一份代码可以在多个位置使用。让代码更好理解更简单。直接调用现有方法开发,不必重复造轮子。方法语法格式修饰符 返回值类型 方法名称([参数类型 形参 ...]){方法体代码;[return 返回值];// 方法定义}else{【注意事项】修饰符:现阶段直接使用public static 固定搭配。

2025-08-14 16:18:21 690

原创 逻辑控制

/ 输出一个字符串, 不带换行。// 输出一个字符串, 带换行。顺序结构即为按照代码书写的顺序一行一行执行。代码示例: 根据 day 的值输出星期。【注意事项】 (和while循环类似)}while(循环条件);

2025-08-14 11:02:33 1014

原创 运算符

在一条表达式中,各个运算符可以混合起来进行运算,但是运算符的优先级不同,比如:* 和 / 的优先级要高于 +和 - ,有些情况下稍不注意,可能就会造成很大的麻烦。上述表达式中,由于 + 的优先级要高于 >> ,因此a先和b-a的结果做加法,整体为20,最后再进行右移,因此结果为10。如果混合使用,【前置++】先+1,然后使用变量+1之后的值,【后置++】先使用变量原来的值,表达式结束时给变量+1。移位运算符有三个: << >> >>> ,都是二元运算符,且都是按照二进制比特位来运算的。具体的规则不必记忆。

2025-08-13 15:44:04 671

原创 数据类型与变量

原因是,虽然 a 和 b 都是 byte,但是计算 a + b 会先将 a和 b 都提升成 int,再进行计算,得到的结果也是 int,这是赋给 c,就会出现上述错误。在程序中,除了有始终不变的常量外,有些内容可能会经常改变,比如:人的年龄、身高、成绩分数、数学函数的计算结果等,对于这些经常改变的内容,在Java程序中,称为变量。计算机使用二进制表示数据。自动类型转换即:代码不需要经过任何处理,在代码编译时,编译器会自动进行处理。强制类型转换:当进行操作时,代码需要经过一定的格式处理,不能自动完成。

2025-08-13 13:58:21 774

原创 Spring事务和事务传播机制

事务是⼀组操作的集合,是一个不可分割的操作。事务会把所有的操作作为⼀个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。事务传播机制就是: 多个事务方法存在调用关系时,事务是如何在这些方法间进行传播的。比有两个方法A,B都被 @Transactional 修饰,A方法调用B方法A方法运行时,会开启⼀个事务。当A调用B时,B方法本身也有事务,此时B方法运行时,是加入A的事务,还是创建⼀个新的事务呢?取决于事物的传播机制如何设置。这个就涉及到了事务的传播机制。

2025-08-12 20:13:47 1538

原创 SpringBoot项目配置

【代码】SpringBoot项目配置。

2025-08-12 10:56:23 239

原创 初识Java

Java是一种优秀的程序设计语言,它具有令人赏心悦目的语法和易于理解的语义。不仅如此,Java还是一个有一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企业服务器、大型机等各种场合。

2025-08-09 18:47:27 870

原创 MyBatis-Plus

MyBatis-Plus(简称 MP) 是⼀个 MyBatis 的增强工具,MyBatis是基于jdbc的封装,MyBatis-Plus在 MyBatis 的基础上只做增强不做改变,为简化开发,提高效率而生。润物无声: 只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。效率至上: 只需简单配置,即可快速进行单表 CRUD 操作,从而节省大量时间。丰富功能: 代码生成、自动分页、逻辑删除、自动填充、拦截器等功能⼀应俱全。

2025-08-09 18:33:58 4193

原创 MyBatis 操作数据库

MyBatis是⼀款优秀的 持久层 框架,用于简化JDBC的开发。MyBatis本是 Apache的⼀个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。在上面提到⼀个词“持久层”,指的就是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的。

2025-08-07 18:59:51 928

原创 SpringBoot 日志

日志对我们来说并不陌生,从JavaSE部分,我们就在使用 System.out.print 来打印日志了。通过打印日志来发现和定位问题, 或者根据日志来分析程序的运行过程。在Spring的学习中,也经常根据控制台的日志来分析和定位问题。随着项目的复杂度提升,我们对日志的打印也有了更高的需求,而不仅仅是定位排查问题。比如需要记录⼀些用户的操作记录(一些审计公司会要求), 也可能需要使用日志来记录用户的⼀些喜好,把日志持久化,后续进行数据分析等。

2025-08-02 12:05:21 1360

原创 SpringBoot 配置文件

计算机上有数以千计的配置文件,我们使用的绝大多数软件,比如浏览器,微信,Idea,甚至电脑,手机,都离不开配置文件。我们可能永远不会直接与其中的大部分文件打交道,但它们确实以不同的形式散落在我们的计算机上,比如C:\Users,C:\Windows文件夹,以及各种 *.config, *.xml 文件。3. 支持更多的编程语言,不止是Java中可以使用,在Golang,Python,Ruby,JavaScript中也可以使用。2. 支持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态。

2025-08-02 12:05:08 915

原创 Spring IoC&DI

在类上面添加@RestController和@Controller等注解,就是把这个对象交给Spring管理,Spring 框架启动时就会加载该类。把对象交给Spring管理,就是IoC思想。IoC: Inversion of Control (控制反转), 也就是说 Spring 是⼀个"控制反转"的容器。Control即为控制权,这里指的是bean的控制权。传统开发模式中是使用方去创建(new)对象,对象的使用权在对象的使用方手里。

2025-08-01 20:12:54 827

原创 应用分层

3.Spring Boot: Spring Boot是对Spring的⼀个封装, 为了简化Spring应用的开发而出现的,中小型企业,没有成本研究自己的框架,使用Spring Boot 可以更加快速的搭建框架,降级开发成本,让开发⼈员更加专注于Spring应用的开发,而无需过多关注XML的配置和⼀些底层的实现。目前现在更主流的开发方式是 "前后端分离" 的方式,后端开发工程师不再需要关注前端的实现,所以对于Java后端开发者,又有了⼀种新的分层架构: 把整体架构分为表现层、业务逻辑层和数据层。

2025-08-01 20:10:30 823

原创 SpringMVC——响应

执行了业务逻辑逻辑之后,要把程序执行的结果返回给用户,也就是响应。

2025-07-31 15:13:36 387

原创 (请求)获取 Cookie/Session 以及 Header

Cookie是客户端(也可以伪造)Session是服务端(校验)会话就是对话,一段时间内的话cookie中存有sessionID,访问流程第二步中:第三步中:不管请求什么,会把带上。

2025-07-31 15:01:55 571

原创 SpringMVC——请求

本质上是jackson-databind提供的功能, Spring MVC框架中已经把该工具包引入了进来, 直接使用即可, 如果脱离Spring MVC使用, 需要引入相关依赖。:@RequestParam(前端参数名),使用了这个参数前端必须传这个参数,不然后端返回的信息是报错信息,除非把required的值改为false返回的不是报错信息而是null。Spring MVC 会根据方法的参数名, 找到对应的参数, 赋值给方法,所以后端程序和浏览器的参数的名字需要一样。表示一个对象或数组的信息,因此。

2025-07-26 18:54:36 911

原创 SpringMVC——建立连接

Spring MVC通过注解实现URL路由映射,核心是@RestController和@RequestMapping。@RestController标记控制器类,@RequestMapping定义URL路径映射,支持类路径+方法路径的多级结构(如/user/sayHi)。该注解默认支持GET/POST请求,也可通过method属性显式指定请求类型。此外,还有专用的@GetMapping和@PostMapping分别处理GET/POST请求。注意:URL路径斜杠可省略(Spring会自动补全),但建议规范添加

2025-07-26 18:39:32 394

原创 HTTPS协议

HTTPS是HTTP的安全版本,通过加密层保护数据传输安全。它采用对称加密传输业务数据,通过非对称加密保护密钥交换,并引入数字证书机制防止中间人攻击。证书由权威机构签发,包含网站信息和数字签名,客户端通过内置公钥验证证书合法性。相比HTTP明文传输,HTTPS能有效防止数据被窃取或篡改,如运营商劫持等问题。虽然HTTPS增加了握手过程和计算开销,但显著提升了网络通信的安全性。

2025-07-26 16:22:59 603

原创 HTTP协议

本文介绍了HTTP协议的基本概念和应用场景。HTTP作为最广泛使用的应用层协议,采用"一问一答"模式传输超文本(文本、图片、视频等)。文章详细讲解了HTTP报文格式,包括请求和响应的基本结构(请求行/状态行、头部、空行、正文),并介绍了GET与POST方法的区别。此外还说明了HTTPS是HTTP的安全版本,增加了加密层。文章还介绍了Fiddler抓包工具的工作原理和使用方法,包括其作为正向代理的功能,以及如何通过它分析HTTP/HTTPS流量。最后解释了常见的HTTP头部字段(如Cont

2025-07-26 16:18:03 1124

原创 数据结构——数组

同一行的非零元通过 right 域链接成一个 线性链表,同--列的非零元通过 down 域链接成一个线性链表,每个非零元既是某个行链表中的一个结点,又是某个列链表中的一个结点,整个矩阵构成了一个十字交叉的链表, 故称这样的存储结构为十字链表。因此,在对稀疏矩阵进行运算时,应免去这种无 效操作,换句话说,为求Q的值,只需在M.data和N.data中找到相应的各对元素(即M. data中的j值和N.data中的i值相等的各对元素)相乘即可。为此,对这种类型的矩阵,采用链式存储结构表示三元组的线性表更为恰当。

2024-12-22 19:59:08 1231

原创 数据结构——串

目录一、串的基本概念二、串的抽象数据类型定义三、串的存储结构3.1 定长顺序存储表示3.2 堆分配存储表示3.3 串的块存储表示四、串的基本操作实现五、串的模式匹配算法KMP算法注:空格也是串的字符集合的一个元素!ADT String { 数据对象:D={ai|ai∈CharacterSet,i=1,2,...,n,n≥0 } 数据关系:R={< ai-1,ai;>|ai-1,ai∈D,i=2,...,n} 基本操作: StrA

2024-12-18 18:49:56 762

原创 数据结构——队列

一般情况下,删除队列头元素时仅需修改头结点中的指针,但当队列中最后一个元素被删后,队列尾指针也丢失了,因此需对队尾指针重新赋值(指向头结点)。这意味着当队尾指针指向数组的最后一个位置时,队头指针指向数组的第一个位置,即队列中占用了M大小的数组占用了M-1个位置,留下一个空位以区分队列为满和队列为空的状态。出队操作时,就是头结点的后继结点出队,将头结点的后继改为它后面的结点,若链表除头结点外只剩一个元素时,则需将rear指向头结点。方法一:修改队满条件,浪费一个元素空间,队满时数组中还有一个空闲单元;

2024-12-04 19:28:25 831

原创 数据结构——栈

栈(stack)又称堆栈,是一种运算受限的线性表。栈的限制是仅允许在表的一端进行插入和删除操作,被允许操作的一端被称为栈顶,另一端则被称为栈底,如图下图所示。向一个栈中,它把新元素放到栈顶元素的上面,使之成为新的栈顶元素。从一个中,它把栈顶元素删除,使其相邻的元素成为新的栈顶元素。由于堆栈只允许在一端进行操作,所以遵循后进先出(Last In First Out,LIFO)的操作原则。栈的操作:初始化栈入栈出栈返回栈顶元素(但不弹出)判断栈是否为空栈的大小。

2024-12-03 16:37:14 1091

原创 数据结构——线性表

线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列,其中n为表长,当n=0时线性表是一个空表。若用L命名线性表,则其一般表示为几个概念:是线性表中的“第i个”元素线性表中的位序是表头元素;是表尾元素除第一个元素外,每个元素有且仅有一个直接前驱;除最后一个元素外,每个元素有且仅有一个直接后继注:相同数据类型表明每个数据元素所占用的空间一样大。线性表是一个序列,数据元素之间有顺序。ADT List {数据对象:D={I;

2024-12-01 17:50:33 1248

原创 数据结构——算法

算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中的每条指令表示一个或多个操作。可理解为求解问题的步骤。类比: 食材好比数据结构,步骤即为算法描述了计算机如何处理这个食材,最后的整个程序就是做番茄炒蛋。有穷性:一个算法必须总在执行有穷步之后结束,且每一步都可在有穷时间内完成。注:算法必须是有穷的(用有限步骤解决某个问题),而程序可以是无穷的。(如微信是程序不是算法)确定性:算法中每条指令必须有确切的含义,对于相同的输入只能得出相同的输出。可行性:算法中描述的操

2024-11-27 12:51:02 1032

原创 数据结构——绪论

数据对象是具有相同性质的数据元素的集合,是数据的一个子集。1.3.2 什么是数据结构数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

2024-11-18 20:02:29 1080

原创 数据结构基础——结构体

student:结构体类型名int num;char sex;int age;int main()通过结构体变量名.成员名来访问结构体成员。

2024-11-17 20:41:44 421 1

原创 数据结构基础——指针

内存区的每一个字节有一个编号,这就是“地址”。如果在程序中定义了一个变量,在对程序进行编译时,系统就会给这个变量分配内存单元。按变量地址存取变量值的方式称为“直接访问”方式。另一种存取变量值的方式称为“间接访问”的方式。即,将变量i的地址存放在另一个变量中。在C语言中,指针变量是一种特殊的变量,它是存放地址的。定义一个指针变量 :基类型* 指针变量名;指针的本质是“间接访问”

2024-11-17 20:40:50 977

空空如也

空空如也

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

TA关注的人

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