自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SQL SELECT语句

SELECT语句是SQL中最核心、最常用的查询命令,用于从数据库中检索数据。无论是简单的数据提取还是复杂的分析查询,SELECT都是不可或缺的工具。在Apache Doris等现代分布式数据库中,SELECT语句功能强大且灵活,支持多种查询方式和优化手段3。

2025-08-20 13:57:04 574

原创 Cookie与Session

Cookie是存储在客户端的小型数据片段,由服务器通过HTTP响应头发送给客户端,客户端随后在每次请求中自动携带这些数据回服务器。Cookie主要用于会话管理、个性化设置和用户行为跟踪。Cookie的主要特点存储在客户端,可随意篡改,不安全有大小限制(通常为4KB有数量限制(一般一个浏览器对于一个网站只能存不超过20个Cookie)不可跨域,但一级域名和二级域名允许共享使用(靠的是domain属性)10Session是存储在服务器端的用户会话信息,用于跟踪用户状态。

2025-08-20 13:50:25 1087

原创 接口文档(前后端分离中的桥梁)

接口文档在软件开发中具有三大核心价值:准确性(接口参数、返回值与代码实现完全一致)、可读性(结构清晰、术语统一,降低理解成本)和可维护性(版本管理规范,便于迭代更新)8。在前后端分离架构中,接口文档是团队协作的“基础设施”,它不仅是开发人员对接的“契约”,更是测试、产品、运维等角色理解系统的关键8。仔细研究请求参数:注意每个参数的类型和是否必填,避免调用时因参数错误导致失败1。认证方式:说明接口的认证机制(如API密钥、OAuth令牌等)6。请求参数:详细列出每个参数的名称、类型、是否必填、描述等。

2025-08-20 13:44:44 1084

原创 K-Means颜色变卦和渐变色

对图像(或颜色集合)中的颜色进行分组,目的是提取出最具代表性的若干种颜色(聚类中心),实现颜色简化或风格化。色彩分析:快速找出图像里占比高的颜色,用于设计配色参考、图像分类(如区分风景照的 “暖色调”“冷色调” )。可视化聚类结果:用聚类得到的主色,生成从一种主色平滑过渡到另一种主色的色带,直观展示 “提取了哪些主色”。简化图像色彩:把照片的上百种颜色压缩为 5 - 10 种主色,生成类似插画、低多边形艺术的效果。:用每个聚类的中心颜色,替换该类所有像素的颜色。:把图像的每个像素(RGB 形式,如。

2025-06-06 09:24:02 543

原创 基于 Java Socket 的多线程网络聊天程序

在网络编程领域,Java Socket 编程是实现客户端与服务器端通信的重要方式。今天,我们来深入探讨一个基于 Java Socket 的多线程聊天程序,剖析其代码实现、核心机制以及测试场景。

2025-05-16 11:03:58 965

原创 《k-means 散点图可视化》实验报告

其基本原理是:首先随机选择 k 个点作为初始聚类中心,然后将数据集中的每个点分配到距离其最近的聚类中心所在的簇,接着重新计算每个簇的中心(即均值),并重复上述分配和更新中心的过程,直到聚类中心不再发生显著变化或达到最大迭代次数。散点图是呈现二维数据分布的高效手段,在k-means聚类里,可借助散点图将不同簇的数据点以不同颜色呈现,同时标注每个簇的中心位置,以此直观展现聚类结果。:采用常用的欧几里得距离作为距离度量,计算数据集中每个点到 k 个聚类中心的距离,把各点划分至距离最近的聚类中心所在簇。

2025-05-16 10:10:30 1299

原创 Maven私服架构

配置项目 pom.xml,配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库。1 hosted,宿主仓库, 部署自己的 jar 到这个类型的仓库,包括 releases 和 snapshot 两部分, Releases 公司内部发布版本仓库、 Snapshots 公司内部测试版本仓库。点击log in,进行登录。

2025-04-27 13:26:57 681

原创 maven相关概念深入介绍

比如我们在项目开发的过程中,可能多个模块独立开发,但是多个模块可能依赖相同的公共模块,比如说每个模块都需要javaseo-utils,在编译的时候,maven-compiler-plugin插件也要被引入,maven仓库地址以及发布目录都是相同的配置。我们可以使用Maven的继承功能,把公共的配置信息写到父模块中,子模块只要继承了该父模块,也会继承父模块的配置信息。Maven的生命周期是抽象的,这意味着生命周期本身不做任何实际的工作,生命周期只是定义了一系列的阶段,并确定这些阶段的执行顺序。

2025-04-27 13:12:43 1160

原创 Maven概述

• ArtifactId :用来唯一标识项目中的一个特定模块或项目本身 ,通常是项目名称或模块名称,比如 my - project - core ,它和 GroupId 一起确定项目在仓库(如 Maven 中央仓库)中的坐标。用于标识项目所属的组织或团体 ,一般采用组织的反向域名形式,比如 com.example ,其中 com是顶级域名,example 是组织名,它能确保项目在全球范围内的唯一性,方便在依赖管理等场景下定位项目。对自己开发的模块的管理,可以像引用第三方依赖包一样引用自己项目的依赖包。

2025-04-27 12:37:22 1523

原创 Spring MVC 拦截器

SpringMVC 的拦截器机制类似于 Servlet 中的 Filter 过滤器,它的主要作用是拦截用户的请求,并在请求到达目标控制器(Controller)之前或者之后进行相应的处理。例如,我们可以利用拦截器来进行用户权限验证,判断用户是否已经登录;也可以用来记录请求的相关信息,进行日志处理等。SpringMVC 拦截器采用了可插拔式的设计,这意味着如果我们需要某个功能的拦截器,只需要在配置文件中进行相应配置即可;而如果不需要,取消配置就行,非常方便灵活。

2025-03-27 18:41:53 1290

原创 SpringMVC 请求和响应

异常信息的日志记录:在自定义异常处理器中,除了将异常信息返回给用户,还可以将异常信息记录到日志文件中,以便后续排查问题。通过使用日志框架(如 Log4j 或 SLF4J),可以在方法中添加日志记录逻辑:java//...} else {exception = new SysException("系统正在维护,请联系管理员");// 记录异常信息到日志logger.error("发生异常", e);return mv;

2025-03-25 11:33:43 867

原创 SpringMVC 配置

在软件开发的广袤天地中,MVC 模式宛如一座明亮的灯塔,指引着开发者构建高效、可维护的应用程序。Spring MVC 作为基于 Spring 框架的重要 web 开发模块,更是将 MVC 模式的优势发挥得淋漓尽致,堪称 Servlet 的强力升级版。

2025-03-25 11:17:05 1162

原创 深入理解 Spring 框架中的 AOP 技术

AOP,即 Aspect Oriented Programming,面向切面编程。它是一种编程范式,属于软件工程范畴,主要指导开发者如何组织程序结构。AOP 最早由 AOP 联盟提出,并制定了一套规范。Spring 框架将 AOP 思想引入其中,遵循 AOP 联盟的规范。从技术实现角度来看,AOP 通过预编译方式或者运行期动态代理来实现程序功能的统一维护。它是 OOP(面向对象编程)的延续,在软件开发领域备受关注,也是 Spring 框架的重要组成部分,同时也是函数式编程的一种衍生范型。

2025-03-22 20:22:32 676

原创 深入理解 Spring 框架中的 IOC 容器

Spring 框架是一个轻量级的 Java 开发框架,由 Rod Johnson 在 2003 年创建。它的诞生旨在简化企业级应用开发的复杂性。Spring 框架提供了诸如 IoC(控制反转)和 AOP(面向切面编程)等核心功能,并且拥有众多的模块,能够灵活应对不同的开发场景,包括 Web 开发、数据访问、消息处理等多个方面。在企业级 Java 开发领域,Spring 框架已经成为了不可或缺的基础框架之一。Bean 管理主要涵盖两个关键操作:对象的创建和属性的注入。

2025-03-22 20:12:01 1331

原创 深入理解 SQL 事务:原理、应用与 MyBatis 配置

事务是一个完整的业务流程,是不可再分的工作单元。在 SQL 中,事务只和数据操作语言(DML)语句有关,像INSERT(插入)、UPDATE(更新)、DELETE(删除) 语句,这些操作构成了事务的具体内容。事务的边界由业务逻辑决定,不同的业务逻辑可能包含不同数量的 DML 语句,但都要作为一个整体来处理。例如在电商系统中,创建订单并扣减库存这一系列操作就可看作一个事务,其中创建订单可能是一条INSERT语句,扣减库存是一条UPDATE语句,它们必须共同成功或共同失败,以保证订单业务和库存数据的准确。

2025-03-20 20:19:22 945

原创 手写Tomcat

Servlet 容器:Servlet 是 Java 语言编写的服务器端程序,Tomcat 负责管理 Servlet 的生命周期,接收客户端的请求,将请求分发给相应的 Servlet 进行处理,并将 Servlet 处理后的结果返回给客户端。模拟 Tomcat 程序旨在接收客户端的 HTTP 请求,依据请求的 URL 找到对应的 Servlet 进行处理,并将处理结果以 HTTP 响应的形式返回给客户端。,专门用于处理 HTTP 请求。类用于封装客户端的请求信息,包括请求方法、请求路径和请求参数。

2025-03-08 17:43:38 928 4

原创 HTTP 与 HTTPS 协议:从基础到安全强化

HTTP,即超文本传输协议,它就像是互联网世界的 “快递规则”,规定了从万维网服务器传输超文本到本地浏览器的传送方式,详细定义了客户端和服务器之间数据交互的格式和规则。正是有了 HTTP 协议,我们才能顺畅地从服务器获取网页内容,让丰富多彩的网页呈现在我们眼前。HTTP,即超文本传输协议,它就像是互联网世界的 “快递规则”,规定了从万维网服务器传输超文本到本地浏览器的传送方式,详细定义了客户端和服务器之间数据交互的格式和规则。

2025-03-04 17:33:59 1163

原创 Tomcat

Servlet 是 Java 语言编写的服务器端程序,Tomcat 负责管理 Servlet 的生命周期,接收客户端的请求,将请求分发给相应的 Servlet 进行处理,并将 Servlet 处理后的结果返回给客户端。Tomcat 是一个开源的、轻量级的 Servlet 容器,也被称为 Web 服务器,由 Apache 软件基金会的 Jakarta 项目开发,在 Java Web 开发领域应用广泛。3)在conf/catlina/localhost创建任意名的xml文件,在文件中编写;

2025-02-27 19:12:55 574

原创 JAVA反射

这是因为这些方法会遍历类的继承层次结构,只获取那些可以被外部访问的公共成员,这些公共成员的信息都存储在方法区的类信息结构中。在 Java 程序运行时,类加载器会将这些字节码文件加载到 JVM 的方法区中,并在方法区创建相应的类信息结构,包括类的元数据、字段信息、方法信息等。:对象的字段值存储在堆内存中对应的对象实例里,而反射可以通过获取方法区的类信息找到字段,并对堆内存中对象的字段值进行访问和修改。对象可以获取类的各种信息,如类名、父类、实现的接口、构造方法、方法、字段等。

2025-02-19 02:24:41 827

原创 JAVA接口

当调用实现类对象中实现的接口方法时,JVM 会根据对象的实际类型找到对应的方法实现。由于接口方法的定义存储在方法区,JVM 会依据对象的类型信息在方法区中查找并执行相应的方法。实现类的对象在堆内存中创建,通过栈内存中的引用变量进行操作,在方法调用时与方法区中的接口方法定义建立关联。具体而言,接口在方法区存储的信息有。接口中所有的方法必须是抽象方法,Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

2025-02-19 01:17:57 987

原创 JAVA抽象类

7.抽象方法不能使用static, static是针对类层次,抽象方法是针对对象层次的,所以不能一起使用。接口:接口是一种特殊的抽象类型,它规定了一组方法的签名,但不包含方法的实现。抽象方法:在面向对象编程里,抽象方法是一种仅有声明而无具体实现的方法。2.abstract修饰的抽象方法,不在抽象类当中去实现,更多的作为子类必须实现的方法的定义。抽象类:抽象类是用abstract关键字修饰的类,它可以包含抽象方法,也可以包含具体方法。// 接口中的方法默认是抽象的,无需显式使用 abstract 关键字。

2025-02-18 14:06:48 414

原创 JAVA异常体系

假设有类A和B(A不是B的父类或子类),O是A的实例,那么当强制将O构造为类B的实例时抛出该异常。当应用试图根据字符串形式的类名构造类,而在遍历CLASSPAH之后找不到对应名称的class文件时,抛出该异常。如果存在finally,则其中的代码仍然被执行,但是finally之后的代码不会被执行。当一个应用试图访问、修改某个类的域(Field)或者调用其方法,但是又违反域或方法的可见性声明,则抛出该异常。当试图将一个String转换为指定的数字类型,而该字符串确不满足数字类型要求的格式时,抛出该异常。

2025-02-17 09:31:29 499

原创 Java基本知识

128 陷阱” 提醒开发者在比较包装类对象时,要注意使用==比较的是对象的引用,而不是对象的值。a1和b1是Integer对象,因为它们的值10在-128到127范围内,Java 会从缓存中获取同一个Integer对象,所以a1和b1引用的是同一个对象,==比较的是对象的引用,因此结果为true。a1和b1是Integer对象,因为它们的值10在-128到127范围内,Java 会从缓存中获取同一个Integer对象,所以a1和b1引用的是同一个对象,==比较的是对象的引用,因此结果为true。

2025-02-12 02:41:13 686

原创 JVM结构

,在准备阶段,会为num分配内存并初始化为 0(对于基本数据类型的默认值,如int为 0,boolean为false等)。垃圾回收器有多种算法,如标记 - 清除算法、标记 - 整理算法、复制算法等,不同的算法适用于不同的场景,以提高内存回收的效率和性能。例如,当一个Java对象没有任何引用指向它时,JVM的垃圾回收器会在合适的时间将其占用的内存释放。例如,类的元数据(如类的字段、方法等信息)就存储在方法区。例如,对于一些热点代码(经常被调用的方法),JIT编译器会将其编译成本地机器码,从而提高运行速度。

2025-02-11 23:09:04 1173

原创 Java类的多态

当子类继承父类后,可以对父类中已有的方法进行重写,即子类提供与父类方法签名(方法名、参数列表)相同但具体实现不同的方法。方法重载(Overload):在同一个类中,定义多个方法名相同但参数列表不同的方法,编译器会根据调用时传递的参数类型和数量来决定调用哪个方法。接口实现(运行时多态):接口是一种特殊的抽象类型,它只定义方法签名,不包含方法的具体实现。多态意味着父类型的变量可以引用子类型的对象,并且在运行时根据实际引用的对象类型来调用相应的方法,而不是根据变量的声明类型。

2025-02-11 13:41:54 349

原创 JAVA类的继承

继承是指一个类(子类)可以继承另一个类(父类)的属性和方法,从而实现代码的复用和扩展。子类可以拥有父类的所有非私有成员(包括属性和方法),并且还可以添加自己特有的属性和方法,或者重写父类的方法以实现不同的行为。多层继承:虽然 Java 不支持多继承,但支持多层继承,即一个类可以有父类,父类又可以有自己的父类,形成继承链。访问修饰符不能比父类更严格:子类方法的访问修饰符的访问权限必须大于或等于父类方法的访问权限。实现多态:通过继承,可以在不同的子类中重写父类的方法,从而实现不同的行为,体现了多态性。

2025-02-09 11:41:44 319

原创 用多线程设计模拟电影票售票大厅的工作情形。

"窗口5" : "")))));System.out.println("售票时间:" + ticket.getSellTime() + ",余票数量:" + ticketOffice.getTicketNum() + ",售票窗口:" + windowName);JLabel label1 = new JLabel("余票数量:" + ticketOffice.getTicketNum());label1.setText("余票数量:" + ticketOffice.getTicketNum());

2024-12-06 19:57:16 740

原创 数据库——利用SQL语句完成各种查询操作

(3)在右边罗列出该数据库下的所有数据表,选中某个数据表并在上面单击鼠标右键,选择“设计表”就可以修改数据表的设置。(4)选中某个数据表并在上面单击鼠标右键,选择“打开表”下的“返回所有行”就可以增、删、改表中的数据。(7)查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。(3)在弹出的界面中输入列的名称、类型等相关信息,点击“保存”并输入表的名称。(2)点开具体数据库前的“+”号,在“表”上单击鼠标右键,并选择“新建表”。

2024-12-05 21:16:17 1350

原创 算法分析与设计实验报告——回溯法

#符号三角形#N后问题

2024-12-05 20:41:54 2266

原创 算法设计与分析实验报告——贪心算法应用

正是由于这种差别,动态规划算法通常以自底向上的方式解各子问题,贪心算法则通常以自顶向下的方式进行,以迭代的方式做出相继的贪心选择,每做一次贪心选择,就将所求问题简化为规模更小的子问题。对于一个具体问题,要确定它是否具有贪心选择性质,必须证明每步所做的贪心选择最终导致问题的整体最优解,通常可以用类似于证明活动安排问题的贪心选择性质时所采用的方法来证明。贪心策略在解决问题时,通常将问题分解为一系列的子问题,然后逐个解决子问题,每一步都选择当前状态下的最优解,并期望通过这样的局部最优选择来达到全局最优解。

2024-12-05 20:34:34 2688

原创 算法设计与分析实验报告——​​动态规划策略应用基础

因此,总的递归深度是 log n,每一层递归中的操作是线性的。自底向上的动态规划方法和自顶向下的备忘录方法都是求解这类问题的有效手段,它们通过避免重复计算和利用子问题的最优解来显著提高算法的效率。同时,函数还计算跨越中点的最大子数组和,这是通过从左向右遍历计算左半部分的最大后缀和,以及从右向左遍历计算右半部分的最大前缀和来实现的。对于某些问题,自底向上的动态规划可能更容易实现,并且可能具有更好的性能,因为它避免了递归调用的开销,并且按照子问题的自然顺序进行计算,可以更好地利用缓存和内存局部性。

2024-12-05 20:27:00 748

原创 算法设计与分析实验报告————分治策略实例

由于此时已知道子数组a[p:i]中元素均小于要找的第k小元素,因此要找的a[p:r]中第k小元素是a[i+1:r]中的第k-j小元素。因此,递归的深度是k(对于2^k × 2^k的棋盘)在每一层递归中,都有四个子棋盘被递归处理,但由于每个子棋盘的大小减半,所以总的递归调用次数会少于4^k。是快速选择算法的一种实现,它使用分治策略在未排序的数组中找到第 k 小的元素。:一个数组 nums,数组的起始索引 low,数组的结束索引 high,以及要找的元素的排名 k(即第 k 小的元素)。

2024-12-05 20:18:59 1538

原创 算法设计与分析实验报告——二分搜索算法

if (n>0 && x>=a[0]) 这个条件可能不正确,因为只有当数组不为空并且目标值不小于数组的第一个元素时,才应该进行搜索,这个条件可能排除了目标值在数组开始部分的情况,while (left < right) 这个循环条件可能导致当 left 和 right 相等时,循环不会执行最后一次比较,这可能导致错过找到目标元素的机会,删除 if (n>0 && x>=a[0]) 这个条件,因为二分搜索可以应用于整个数组,而不仅仅是大于或等于数组第一个元素的部分。在合并阶段,将子问题的解合并为原问题的解。

2024-12-05 20:15:18 380

原创 数据结构——插入排序

假设数组的前部分元素已经是有序的,现在要将一个新元素插入到这个有序部分中,使得插入新元素后这部分仍然是有序的。从第二个元素开始,依次将每个元素插入到前面已排序的子数组中的合适位置。重复步骤 3,直到找到已排序的元素小于或者等于新元素的位置。如果该元素(已排序)大于新元素,将该元素移到下一位置。重复步骤 2 - 5,直到所有元素都插入到有序序列中。取出下一个元素,在已经排序的元素序列中从后向前扫描。从第一个元素开始,该元素可以认为已经被排序。将新元素插入到该位置。

2024-12-05 20:03:17 233

原创 数据结构(一)基础知识

top=s带头结点,在栈顶指针为 top 的链栈中插入一个s所指结点时:p->next=top->next,top->next=p链栈的出栈操作为 top->next=top->next->next。n个结点的完全二叉树的深度k为:k= log, n + 1,最少有:n=2个结点,n为偶数则度为0的结点(叶子结点)数为_n/2_个,n为奇数则为(n+1)/2_个。在头指针为 L的循环链表中,结点的指针为 P,P 所指的结点为尾结点的条件是 p->next==L链表适合_顺序_存取,顺序表适合_随机_存取。

2024-11-01 11:26:45 653

空空如也

空空如也

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

TA关注的人

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