自定义博客皮肤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)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java常见注解及其使用汇总

SpringBootApplication 注解是SpringBoot最核心的注解,用于SpringBoot的主类,标识这是一个 SpringBoot 应用,用来开启 Spring Boot 的各项能力。是 @SpringBootConfiguration,@EnableAutoConfiguration,@ComponentScan三个注解的组合。由于这些注解一般一起使用,所以干脆整合成了一个统一的注解@SpringBootApplication。

2024-07-09 17:53:41 961

原创 Git 常用命令及其作用

Git 是一个分布式版本控制系统,用于跟踪代码变更。

2024-07-02 16:39:43 560

原创 7.基于SpringBoot的SSMP整合案例-表现层开发

设计统一的返回值结果类型便于前端开发读取数据;返回值结果类型可以根据需求自行设定,没有固定格式;返回值结果模型类用于后端与前端进行数据格式统一,也称为前后端数据协议

2024-07-01 17:29:54 500

原创 6.基于SpringBoot的SSMP整合案例-业务层开发

创建BookService接口文件,如下图所示:创建BookService实现类文件,如下图所示:@Service@Autowired@Override@Override@Override@Override@Override@Override创建BookServiceTestCase测试类文件,如下图所示:@Autowired@Test@Testbook.setType("历史");

2024-07-01 12:06:35 677

原创 5.基于SpringBoot的SSMP整合案例-数据层开发

在1. 新建项目的时候,已经在pom.xml中导入MyBatisPlus与Druid对应的starter坐标,这时只需要在application.yml配置中 增加相应的配置就可以了。分页操作是在MyBatisP1us的常规操作基础上增强得到,内部是动态的拼写SQL语句,因此需要增强对应的功能,使用MyBatisPlus拦截器实现。在测试保存数据功能时,要在application.yml内加一行id-type: auto ,不然系统会默认assign_id,运行会报错。

2024-07-01 12:06:12 775

原创 4.整合第三方技术【整合JUnit】

JUnit是Java中广泛使用的测试框架,通过添加依赖、编写测试类、使用断言和集成第三方技术,可以有效地进行单元测试和集成测试。测试类中使用@Test注解标记测试方法,@Mock或@MockBean注解模拟依赖,JUnit的断言方法验证预期结果。构建工具或IDE支持运行测试,确保代码质量和功能正确性。

2024-06-26 15:15:50 922

原创 3.基础配置

如果以上三种配置文件都存在,application.properties(最高) > application.yml > application.yaml (最低)1. 使用@Value读取单个数据,如果数据存在多层级,依次书写层级名称即可,属性名引用方式:${一级属性名,二级属性名....}。SpringBoot提供了多种属性配置方式,以修改服务器端口为例,举例说明以下三种属性配置方式的不同。数组表示方式:在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔。

2024-06-26 15:14:16 1136

原创 2.java pom.xml 添加配置说明

pom.xml是 Maven 项目的核心配置文件,它包含了项目的构建配置、依赖信息、插件和其他设置。以下是一些常见的配置说明,以及如何在pom.xml。

2024-06-20 15:07:06 932

原创 1.搭建SpringBoot项目三种方式

1.8.3 如下图所示,如果经过1.8.2的步骤pom.xml依然出现红色的感叹号,说明你的pom.xml有语法错误或者有些依赖没有加载出来,鼠标移动到红色错误处,java编辑器会自动把详情错误信息显示出来,如下图所示,如果没有加载出来,这里可以更换版本【例如此处把3.3.1换成3.2.6或者其他版本】,或者查看你的电脑是否联网。IDE会自动识别项目结构,并加载所需的依赖。1.8.2 如果你本地没有安装 此版本的springboot,一般打开项目,会出现右下角所示的提示,这时点击。

2024-06-20 15:07:03 912

原创 [排序算法]选择排序法

选择排序的一个优点是它不涉及复杂的递归调用,因此对于小型数据集或者对于递归深度有限制的环境,它可能是一个不错的选择。然而,对于大型数据集,由于其时间复杂度较高,通常不推荐使用选择排序。

2024-05-11 16:13:04 414 1

原创 多线程和异步协程的联系

总的来说,多线程和异步协程都是为了提高程序的并发性能,但它们在实现机制、资源消耗、适用场景等方面有所不同。在实际应用中,可以根据任务的特点和资源约束,选择合适的并发模型。对于I/O密集型任务,异步协程通常是更好的选择;而对于计算密集型任务,多线程可以更好地利用多核CPU的能力。在一些高级语言中,多线程和异步协程也可以结合使用,如在Python中,可以在多线程中运行协程,以实现更高效的并发模型。

2024-05-11 16:11:27 270

原创 [排序算法]基数排序

基数排序适用于位数较少的整数排序,对于位数较多的情况,效率可能不如其他排序算法。

2024-05-07 10:38:30 411

原创 C#[数据结构]之数组

数组是由相同类型的元素按顺序存储在一段连续的内存空间中而构成的数据结构。数组的长度是固定的,一旦定义后,其长度通常不可改变。数组是一种线性数据结构,元素通过索引(index)访问,索引通常从 0 开始递增。

2024-05-07 10:35:38 1031 2

原创 [排序算法]堆排序

堆排序是一种高效的排序算法,尤其适用于需要稳定时间复杂度的情况下。

2024-05-06 09:43:55 447 2

原创 java 继承和静态属性或方法

在Java中,继承和静态属性或方法是面向对象编程中的两个重要概念。它们在类设计和使用中扮演着不同的角色。

2024-05-06 09:28:09 508

原创 [排序算法]插入排序法

尽管插入排序在最坏情况下效率不高,但它对于小型数据集或基本有序的数据集非常有效。稳定性:可以保证相等的元素在排序后保持原来的相对顺序。原地排序:不需要额外的存储空间。简单性:算法实现简单,易于理解和编程。插入排序通常用作其他更高级排序算法(如归并排序和快速排序)的辅助方法,尤其是在处理小型数组或数组的子部分时。

2024-04-30 09:12:53 297

原创 C# 继承和静态属性或方法

在C#中,继承(inheritance)和静态属性或方法的概念与Java类似。

2024-04-30 09:11:57 631

原创 C# 异步协程

C# 异步协程的引入大大简化了异步编程的复杂性,使得开发者可以专注于业务逻辑,而不用担心底层的线程管理和同步问题。这种编程模型已经成为 C# 中处理异步操作的首选方法。

2024-04-17 17:15:21 1027

原创 Java自定义属性更改监听器

在Java中,可以使用PropertyChangeListener接口和PropertyChangeSupport类来实现属性更改监听器。下面是一个示例代码,演示如何创建一个自定义的MyPropertyChangeListener类来监听属性变化:1.:自定义属性更改监听器类,实现PropertyChangeListener接口。

2024-04-17 09:59:26 265

原创 [排序算法]冒泡排序法

虽然冒泡排序在效率上不如一些更高级的排序算法(如快速排序、归并排序等),但由于其实现简单,对于一些小规模数据的排序或者学习排序算法的基本概念时,冒泡排序仍然是一个很好的选择。此外,冒泡排序的一个优点是它能够在发现数组已经排序好的情况下提前结束排序过程,尽管这种情况在最坏的情况下不会减少比较次数,但在最佳情况下(即数组已经是排序状态)可以达到 O(n) 的时间复杂度。

2024-04-10 18:18:57 298

原创 C#List<object>和object[]的区别

在选择使用List还是object[]时,需要考虑你的具体需求,包括集合的大小是否需要改变、是否需要集合提供的方法、性能要求等因素。如果你需要一个灵活的、可扩展的集合,并且可能会使用到集合的API,那么List可能是更好的选择。如果你需要一个固定大小的集合,并且对性能有较高的要求,那么object[]可能更适合你的需求。

2024-04-10 17:58:13 525

原创 C#基本数据的类型转换

自动类型转换是指将一个数据类型的值直接赋给另一个兼容的数据类型,而不需要显式地进行类型转换。C#支持自动类型转换的类型如下所示,左边的数值类型可以自动类型转换成箭头右边的数值类型 : byte ->short->int->long->float->double。类型用于表示 Unicode 字符,其取值范围是从 U+0000 到 U+FFFF(包括 0 到 65535 之间的整数)。当目标类型的取值范围小于源类型时,或者需要将一种类型转换为另一种类型时,需要使用显式强制类型转换。它是基本数据类型,对应。

2024-03-27 17:21:37 871

原创 Java基本数据的类型转换

当进行强制类型转换时,类似于把一个大瓶子里面的水倒入一个小瓶子,如果大瓶子里面的水不多还好,如果大瓶子里面的水很多,将会引起溢出,从而造成数据丢失。注意:当试图强制把表数范围大的类型转换为表示范围小的类型时,必须格外小心,因为非常容易引起信息丢失。如果希望上面自动转换中,箭头右边的类型转换成左边的类型,则必须进行强制类型转换。Java支持自动类型转换的类型如下所示,左边的数值类型可以自动类型转换成箭头右边的数值类型。1)所有的byte类型 ,short类型和char类型将被提升到int类型。

2024-03-27 15:19:24 800

原创 C#[数据结构]之堆(Heap)栈(Stack)

C# 程序在 CLR(Common Language Runtime)上运行时,内存被逻辑地划分为两个主要部分:栈和堆。除了栈和堆之外,CLR 还维护了其他一些内存区域,例如静态存储区域(Static Storage Area)、常量存储区域(Constant Storage Area)等。这些内存区域都有各自的特点和用途,可以帮助我们更好地管理程序内存和资源的使用。在 C# 程序运行时,栈和堆是其基本元素,它们组成了程序的运行环境,对程序的性能和稳定性有着重要的影响。

2023-07-24 18:02:19 2826

原创 [数据结构]链表之循环链表

需要注意的是,在循环链表中,插入和删除操作需要额外考虑最后一个节点的next指针和第一个节点的prev指针的修改。总之,循环链表是一种特殊的链表结构,在实现各种操作时需要注意其连续性和有序性,并针对特殊情况进行相应的处理。需要注意的是,在进行各种操作时,需要保证循环链表的连续性和有序性,以避免数据不一致等问题的发生。需要注意的是,在进行各种操作时,需要保证循环链表的连续性和有序性,即每个节点的next指针都指向下一个节点,并且最后一个节点的next指针指向头节点。但是,其实现简单,无需处理哈希冲突等问题。

2023-07-17 16:59:20 2230 2

原创 [数据结构]线性表之顺序表

顺序表是一种通过数组来实现的数据结构,其中的元素在内存中是连续存储的,每个元素占用固定大小的空间。总之,顺序表是一种常见的数据结构,具有优异的随机访问效率,但在插入、删除和搜索等操作上效率较低,使用时需要根据具体需求和应用场景进行选择。其操作的时间复杂度主要取决于元素的插入、删除和查找等操作,在实际应用中需要根据具体情况选择合适的算法和数据结构,并进行权衡和折衷。总之,顺序表是一种常见的数据结构,在需要随机访问和修改元素的场景中具有优异的性能表现。顺序表的空间复杂度为O(n),即需要存储n个元素的空间。

2023-07-04 16:32:05 227

原创 [数据结构]链表之双链表

双向链表(Doubly Linked List)是一种常见的数据结构,与单链表相比,它增加了一个指向前驱节点的指针,因此每个节点除了有指向后继节点的指针外,还有一个指向前驱节点的指针。双向链表是一种常见的数据结构,与单向链表相比,它增加了一个指向前驱节点的指针,因此每个节点除了有指向后继节点的指针外,还有一个指向前驱节点的指针。与栈比较:双向链表和栈都可以实现FILO(先进后出)的数据结构,但是双向链表相比栈更加灵活,可以支持在任意位置插入和删除节点,而栈只能在栈顶插入和删除元素。时间复杂度为O(n)。

2023-06-29 17:39:02 872

原创 [数据结构]链表之单链表

单链表是一种常见的线性数据结构,由若干个节点组成,每个节点包含两部分:数据元素和指向下一个节点的指针。每个节点只有一个指针,通常称为 next 指针,它指向该节点的后继节点。头节点是第一个节点前面额外添加的一个节点,它不包含数据元素,但是包含对第一个节点的指针。单链表可以表示任意长度的序列,可以动态地插入、删除节点,使其具有灵活性和高效性。但由于每个节点只有一个指针,因此单链表只能从前往后遍历,不能反向遍历。以下是单链表常用的操作:创建链表:创建一个空链表,可选是否带有头节点。

2023-06-16 18:13:07 612

原创 深度优先搜索(DFS)算法

深度优先搜索算法(DFS)是一种用于遍历图形结构的算法,它从一个起始顶点开始,沿着一条路径尽可能深入地访问图中的所有顶点,直到不能继续为止,然后返回并探索其他路径。DFS算法使用栈数据结构来实现,在访问完一个顶点后,将其未被访问的邻居压入栈中,并标记为已访问,然后从栈中取出下一个未被访问的顶点,继续进行同样的操作,直到栈为空为止。DFS算法可以用于解决图中的许多问题,例如找出两个顶点之间的最短路径、判断图是否为连通图等。DFS算法的时间复杂度为O(V+E),其中V为顶点数,E为边数。DFS算法相比BFS算法

2023-06-07 17:08:11 5995

原创 广度优先搜索(BFS)算法

广度优先搜索算法(BFS)是一种用于遍历图形结构的算法,它从一个起始顶点开始,先依次访问这个顶点的所有邻居顶点,然后再按照距离逐层遍历图中的所有顶点。BFS算法使用队列数据结构来实现,在访问完一个顶点后,将其未被访问的邻居加入队列中,并标记为已访问,然后从队列中取出下一个未被访问的顶点,重复以上过程,直到队列为空为止。BFS算法可以用于解决图中的许多问题,例如找出两个顶点之间的最短路径、判断图是否为二分图等。BFS算法的时间复杂度为O(V+E),其中V为顶点数,E为边数。

2023-06-07 15:48:02 3506

原创 C#执行某对象的某个方法

3.委托调用方法:在C#中,可以使用委托调用方法。委托是一种类型,它封装了一个或多个方法,并允许将这些方法作为参数传递给其他方法或存储在变量中。需要注意的是,使用反射调用方法可能会降低程序的性能,因为它需要在运行时进行类型信息的获取和方法调用的解析。需要注意的是,委托类型必须与要封装的方法具有相同的签名,即参数列表和返回类型都必须匹配。1.直接调用方法:如果我们有一个对象,并且知道它的方法名称和参数列表,那么可以直接调用该方法。,它封装了一个方法,该方法接受一个字符串类型的参数并返回void。

2023-06-06 15:42:27 467

原创 C# 读取Excel的几种常见方式及实现步骤

读取Excel的几种常见方式为:使用 Microsoft Office Interop Excel 库,使用 OLEDB 数据库连接方式,使用 EPPlus 库三种方式,在以上三种方法中,第一种和第二种方法需要安装额外的依赖库,并且性能较低;而第三种方法虽然需要引入 EPPlus 依赖库,但性能较高且使用方便。具体选择哪种方式可以根据自己的实际情况来考虑。

2023-05-11 17:05:53 9770

转载 一文搞懂HTTP,TCP,UDP,Socket,WebSocket

转载:一文搞懂HTTP,TCP,UDP,Socket,WebSocket-技术教程-图南导航一、这一大堆关键词之间到底有啥区别?有名字就有定义,理解的前提从来都是对定义有所了解。就好比现在让你形容一下梯形的定义,如果你不知道定义,你就可能把平行四边形当做特殊的梯形处理,也就有可能把TCP和Socket搞混,更加会纠结TCP连接与Socket连接以及HTTP的长/短连接之间到底有啥区别。其实有了区别才好理解。但在这之前首先得理清一个概念,那就是OSI七层模型,以及所谓的五层模型,四层模型到底是什么

2023-05-11 16:51:31 343

原创 最短路径查找-迪杰斯特拉算法

迪杰斯特拉算法(Dijkstra's algorithm)是一种用于解决带权有向图(weighted directed graph)中单源最短路径问题的算法。它以一个节点作为起点,计算该节点到其它所有节点的最短路径。迪杰斯特拉算法的基本思想是从起点开始,逐步扩展出新的节点,并尝试通过这些节点更新已经扩展过的节点到起点的距离。在每次扩展时,选择当前距离起点最近的未扩展节点进行扩展,并使用该节点到起点的距离更新已经扩展过的节点到起点的距离。重复执行这个过程,直到所有节点都被扩展过为止。

2023-05-11 16:49:09 219

原创 C# 常用Excel导出的几种常见方式及实现步骤

在C#中,常用的Excel 文件导出方式包括:使用 Microsoft Office Interop Excel 组件,使用 NPOI 组件导出 Excel 文件,使用 EPPlus 组件导出Excel文件,使用 ClosedXML 组件导出 Excel 文件四种常用方式,以下仅根据这四种Excel导出方式展开介绍其实现步骤,并列举出示例代码,仅供大家学习参考,欢迎大家留言

2023-05-11 16:16:52 6658 1

转载 彻底理解 cookie、session、token

1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。2、但是随着交互式Web应用的兴起,像在线购物网站,需要登录的网站等等,马上就面临一个问题,那就是要管理会话,必须记住哪些人登录系统, 哪些人往自己的购物车中放商品, 也就是说我必须把每个人区分开,这就是一个不小的挑战,因为HTTP请求是无状态的

2022-06-29 11:17:21 87 1

原创 TortoiseSVN新人使用指南

此篇文章比较适合初入职场的程序员小白,版本管理工具已经成为程序猿必须掌握的一项技能,相对于git,SVN更容易和操作和掌握,所以谨以此篇献给那些刚开始接触SVN的小白们。

2022-06-07 10:11:56 2447

原创 php计算两个坐标(经度,纬度)之间的方位角

【代码】php计算两个坐标(经度,纬度)之间的方位角。

2021-12-22 10:51:23 745 1

原创 php计算两个坐标(经度,纬度)之间距离

php计算两个坐标(经度,纬度)之间距离

2021-11-23 10:16:02 1018 1

原创 Docker部署PHP+Nginx+MySQL

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为7.4-fpm的镜像。从上图中nginx TAG标签 可以看到我们已经安装了最新版本(latest)的 nginx 镜像。我们还是用 docker search nginx 命令来查看可用版本。用 docker search php 命令来查看可用版本。这里我们拉取官方的镜像,标签为7.4-fpm。这里我们拉取最新版的 Nginx 镜像。创建php容器,设置端口映射、目录映射。

2021-11-10 13:54:36 3234 1

空空如也

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

TA关注的人

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