自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

rm -rf/坏习惯

个人的一些笔记和一些技术分享,从计算机基础、编程语言、大数据,包括前端后端都会慢慢更新上的。

  • 博客(75)
  • 收藏
  • 关注

原创 蓝桥杯第十五届抱佛脚(十)贪心算法

贪心算法是一种在算法设计中常用的方法,它在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。贪心算法与枚举法的不同之处在于每个子问题都选择最优的情况,然后向下继续进行,且不能回溯。枚举法是将所有情况都考虑然后选出最优的情况。贪心算法在解决问题时,不从整体考虑,而是采用一种一眼看到局部最优解的选择方式。并且,贪心算法没有固定的模板可以遵循,每个题目都有不同的贪心策略,所以算法设计的关键在于贪心策略的选择。

2024-04-07 15:37:56 5521 3

原创 蓝桥杯第十五届抱佛脚(九)动态规划

动态规划(Dynamic Programming, DP)是一种用于解决复杂问题的优化算法设计技术。它将原问题分解为若干相互重叠的子问题,通过记录子问题的解,避免重复计算,从而大大减少了计算量。动态规划典型的应用场景包括:最优化问题:如求最短路径、最小编辑距离等。计数问题:如有多少种方式走到终点、排列组合数量等。取值问题:如背包问题、切钢条问题等。

2024-04-01 11:44:47 1396 2

原创 蓝桥杯第十五届抱佛脚(八)并查集

并查集是一种数据结构,用于管理一系列不交集的元素集合,并支持两种操作:查找(Find):查找操作用于确定某个元素属于哪个集合,这通常通过追溯元素的父节点直到找到代表元素来完成。合并(Union):合并操作用于将两个不相交的集合合并为一个。合并可以通过将一个集合的代表元素的父节点指针指向另一个集合的代表元素来完成。具体实现时,并查集通过一个数组来维护每个元素的父指针,每个集合由一个根元素代表,该根元素的父指针指向自己,表明它是集合的代表。

2024-03-31 15:03:41 1096

原创 蓝桥杯第十五届抱佛脚(七)前缀和与差分

前缀和算法主要用于处理区间和的查询问题。构建前缀和数组:对于给定的数组arr,构建一个新的数组prefixSum,其中存储了从arr[0]到arr[i]的元素之和。区间和查询:如果需要频繁查询数组的任意子数组(区间)的和,前缀和算法是一个非常有效的方法。适用于静态数据:当原数组在多次查询之间不改变时尤其有效。快速查询:查询任意区间和的时间复杂度降低到 O(1)。更新困难:如果原数组频繁变化,需要重新计算前缀和,这可能很耗时。

2024-03-31 10:30:17 1266

原创 蓝桥杯第十五届抱佛脚(六)回溯与剪枝

回溯算法是一种解决问题的算法,它尝试解决问题的一个分支,如果发现当前分支不能得到有效的完整解决方案,就会消除(回溯)所做的一系列选择,并尝试另一个可能的分支。回溯算法通常用于解决组合问题,如排列、组合、选择和分割问题,它通过逐步构建解的候选项并在每个步骤中继续或放弃继续探索的决策,实现问题的穷举搜索。

2024-03-30 13:33:17 1139

原创 蓝桥杯第十五届抱佛脚(五)DFS、BFS及IDS

DFS(Depth-First Search)即深度优先搜索,是一种用于遍历或搜索树或图的算法。它从根节点开始,尽可能沿着每一条路径直到这条路径最后一个节点被访问了,然后回退,继续访问下一条路径。它的基本思想是尽可能深地搜索树的分支,直到达到叶子节点,然后回溯到上一个分支节点继续搜索。DFS通常使用递归或栈来实现。

2024-03-29 23:32:56 1232

原创 蓝桥杯第十五届抱佛脚(四)递归与分治

递归和分治是两种常见的问题解决方法,它们是不同的概念,但它们经常在一起使用,有时甚至是互相支持的。递归是一种解决问题的方法,其中一个函数通过不断调用自身来解决更小规模的子问题,直到达到基本情况为止。递归通常用于解决具有自相似性质的问题,例如树结构、图结构等。经典的递归算法包括斐波那契数列的计算、二叉树的遍历等。分治是一种算法设计策略,它将问题分解成若干个规模较小且相互独立的子问题,然后解决这些子问题,最后将子问题的解合并起来得到原问题的解。分治算法通常用于解决可以被分割成互相独立的子问题的问题。

2024-03-27 17:26:16 807

原创 蓝桥杯第十五届抱佛脚(三)枚举法与尺取法

很多人将蓝桥杯戏称为“暴力杯”,因为蓝桥杯采用了OI的赛制。在这种赛制下,即使对于某些大题答案不清楚的情况下,也可以通过暴力方法获得部分分数。一提到暴力,人们往往首先想到的是枚举。然而,实际上,枚举是一门需要技巧的技术,确保能够穷尽所有可能情况并不容易。因此,在本文中,我将详细介绍,以确保能够完整地列举出所有情况,不漏掉任何一种可能性。

2024-03-25 15:58:11 993

原创 蓝桥杯第十五届抱佛脚(二)竞赛中的数据结构

在算法竞赛中,有一些常用的数据结构非常重要,熟练掌握它们有助于解决很多算法问题。以下是一些常见的数据结构:数组(Array)和链表(Linked List)基本的线性数据结构,支持随机访问(数组)和动态内存分配(链表)栈(Stack)和队列(Queue)基于先进后出(LIFO)和先进先出(FIFO)原理的线性数据结构集合(Set)无重复元素的集合,HashSet和TreeSet是常用实现掌握这些数据结构的实现原理、时间/空间复杂度、使用场景对于算法竞赛至关重要。

2024-03-24 13:47:47 1876 1

原创 蓝桥杯第十五届抱佛脚(一)手算和思维题

知识点梳理思维题(杂题):不需要算法和数据结构,只需要逻辑、推理的题目,难度可难可易。考察思维能力和编码能力,只能通过大量做题来提高。BFS 搜索和 DFS 搜索:也就是暴力搜索。这是非常基本的算法,是基础中的基础。动态规划:线性 DP,以及一些 DP 应用,例如状态压缩 DP、树形 DP 等。简单数学和简单数论。简单的字符串处理、输入输出,简单图论。基本算法:例如排序、排列、二分、倍增、差分、贪心。基本数据结构:队列、栈、链表、二叉树等。

2024-03-22 15:09:24 1490 3

原创 TypeScript面向对象

面向对象是程序中一个非常重要的思想,它被很多同学理解成了一个比较难,比较深奥的问题,其实不然。面向对象很简单,简而言之就是程序之中所有的操作都需要通过对象来完成。一切操作都要通过对象,也就是所谓的面向对象,那么对象到底是什么呢?这就要先说到程序是什么,计算机程序的本质就是对现实事物的抽象,抽象的反义词是具体,比如:照片是对一个具体的人的抽象,汽车模型是对具体汽车的抽象等等。程序也是对事物的抽象,在程序中我们可以表示一个人、一条狗、一把枪、一颗子弹等等所有的事物。一个事物到了程序中就变成了一个对象。

2023-12-31 20:29:34 1045

原创 TypeScript快速入门

TypeScript是JavaScript的超集。它对JS进行了扩展,向JS中引入了类型的概念,并添加了许多新的特性。TS代码需要通过编译器编译为JS,然后再交由JS解析器执行。TS完全兼容JS,换言之,任何的JS代码都可以直接当成JS使用。相较于JS而言,TS拥有了静态类型,更加严格的语法,更强大的功能。TS可以在代码执行前就完成代码的检查,减小了运行时异常的出现的几率。TS代码可以编译为任意版本的JS代码,可有效解决不同JS运行环境的兼容问题。

2023-12-31 20:19:30 1074

原创 SpringMVC程序开发

Spring MVC(Model-View-Controller)是一种用于构建基于Java的Web应用程序的框架。它是Spring Framework的一部分,是一个经典的MVC设计模式的实现,旨在帮助开发人员更轻松地构建可维护和可扩展的Web应用程序。模型代表应用程序的数据和业务逻辑。它负责管理数据的状态和处理数据操作。通常,模型对象是用于封装和表示应用程序数据的Java类。视图负责显示模型的数据给用户。它们负责将数据以用户友好的方式呈现出来,通常是通过HTML模板或其他前端技术来实现的。

2023-10-24 23:51:23 199 1

原创 软件生命周期过程

按承担软件开发工作的主体,将软件生命周期过程分为三类: 1. 基本过程 是指哪些域软件生产直接相关的活动集2. 支持过程 是有关各方按其目标所从事的一系列支持活动集3. 组织过程 是指那些与软件生产组织有关的活动集

2023-10-11 11:44:36 324 2

原创 软件工程概论

软件工程时期可以追溯到上世纪80年代末至今。在这个时期,对软件开发过程进行了深入的研究和发展,出现了更多的开发方法和最佳实践。软件工程强调了系统化的方法,包括需求分析、系统设计、编码、测试、维护等方面的严格流程。这一时期还引入了面向对象编程、设计模式和软件开发生命周期等概念,旨在提高软件质量、可维护性和可重用性。软件工程方法也导致了更多的工程化和团队合作。

2023-10-09 16:01:59 1227 2

原创 Spring Boot的Lombok详解

Lombok是一个Java库,旨在通过自动生成样板代码来减少开发人员需要编写的冗余代码,从而提高代码的可读性和简洁性。它通过注解的方式,让开发人员能够在编写代码时自动产生一些常见的方法和字段,如getter、setter、构造函数、equalshashCode等,从而简化了Java类的创建和维护。Lombok使得你可以在代码中专注于核心逻辑,而不必担心冗长的样板代码。Lombok大大简化了Java开发过程中的样板代码编写,使开发人员能够专注于核心逻辑,提高代码的可维护性和可读性。

2023-08-21 08:56:25 702

原创 SpringBoot ⽇志⽂件

在Spring Boot中,你可以通过自定义日志配置来定制日志的打印方式。通常,你可以通过创建一个日志配置文件(如或log4j2.xml)并在其中定义自定义的日志输出格式、日志级别、输出位置等来实现这一目标。下面是一个示例,展示如何自定义Logback日志的输出格式:在目录下创建一个文件(如果你使用Logback作为日志框架)。在文件中添加自定义的日志配置。

2023-08-21 06:59:56 161

原创 Spring Boot配置文件

当使用 Spring Boot 进行应用程序开发时,配置文件是至关重要的,它可以影响应用程序的行为、功能和性能。和.yml(YAML)。文件是基于键值对的简单格式,.yml文件是基于缩进和冒号的层级结构格式。默认情况下,Spring Boot 会自动加载名为或的配置文件。这些文件用于存放通用的配置项,适用于所有环境。为不同的环境(如开发、测试、生产)创建特定的配置文件,命名规则为或。通过属性来激活特定环境的配置。使用逗号分隔的方式,可以同时激活多个环境,根据需要加载多个配置文件。

2023-08-21 00:24:16 983

原创 SpringBoot创建和使用

Spring Boot是一个用于简化Spring应用程序开发的框架。它通过提供一系列默认配置和预置的模板,使得构建、部署和运行基于Spring的应用程序变得更加容易。Spring Boot旨在减少开发人员在配置方面的繁琐工作,同时提供了快速开发应用程序的能力。

2023-08-20 10:54:41 256

原创 Bean 作用域、生命周期和Spring执行流程

限定程序中变量的可⽤范围叫做作⽤域,或者说在源代码中定义变量的某个区域就叫做作⽤域。⽽ Bean 的作⽤域是指 Bean 在 Spring 整个框架中的某种⾏为模式,⽐如 singleton 单例作⽤域,就表示 Bean 在整个 Spring 中只有⼀份,它是全局共享的,那么当其他⼈修改了这个值之后,那么另⼀个⼈读取到的就是被修改的值。

2023-08-19 05:26:01 199

原创 Spring依赖注入、对象装配

在这篇博客中,我们学习到了spring依赖注入的三种常见的方式,并且了解了它们的优缺点,还了解了依赖注入的两个重要的关键字:@Autowired、@Resource,并了解了两者的区别。还知道了如何解决同一类型Bean注入的报错问题和了解了软件设计中的单一设计原则。

2023-08-11 02:06:39 314 2

原创 Spring 使用注解储存对象

通过在 spring-config 中添加bean的注册内容,我们已经可以实现基本的Spring读取和存储对象的操作了,但在操作中我们发现读取和存储并没有那么简单,接下来我们来学习更加简单的操作Bean对象的方法。在Spring中想要更简单的存储和读取对象的核心是使用注解,接下来我们来了解一下Spring中的相关注解,来存储对象。

2023-08-10 03:45:18 717

原创 Spring 创建和使用

Spring 是一个广泛用于构建企业级 Java 应用程序的开源框架。它提供了许多功能和组件,用于简化开发、测试和部署过程。本文是一个简单的步骤指南,介绍如何创建和使用 Spring 框架。

2023-08-09 05:28:20 657 3

原创 SpringBoot 热部署

在日常开发中,我们需要经常修改 Java 代码,手动重启项目,查看修改后的效果。如果项目还比较小,重启速度比较快,等待的时间是较短的。但是随着项目逐渐变大,重启的速度变慢,等待时间越来越长,我们的效率就很低下。Spring Framework 提供了热部署(Hot Reload)功能,允许在开发过程中无需重启应用程序就能实时地修改代码并看到更改效果。这对于提高开发效率非常有帮助。以下是常见的几种热部署方式:

2023-08-08 22:26:10 1569

原创 Spring核心与设计思想

Spring是一个用于构建企业级应用程序的开源框架,它为Java开发者提供了一种简化和加速应用程序开发的方式。Spring框架提供了大量的功能和工具,使开发人员能够更轻松地创建各种类型的应用程序,包括Web应用程序、RESTful服务、批处理作业、消息驱动的应用程序等。

2023-08-08 21:30:06 235

原创 深入理解CSS选择器:选择正确的方式掌控样式与布局

在网页开发中,CSS选择器是塑造页面外观和交互的关键工具。然而,选择器的威力和权重的影响常常在样式冲突时变得复杂。本篇博客将带您深入了解不同类型的CSS选择器,探讨它们的用途和如何合理运用。我们还将解析CSS权重的计算方法,从内联样式到类、ID和伪类选择器,一一剖析权重如何影响样式的优先级。通过这篇博客,您将获得精确的选择器技能,轻松解决样式冲突,确保您的页面呈现出预期的外观和布局。让我们一起揭开CSS选择器和权重的神秘面纱,助力您的网页设计和开发之旅。

2023-08-07 20:57:50 328 7

原创 GO语言基础语法探究:简洁高效的编程之道

GO语言是由Google开发的一门开源编程语言,它的设计目标是简洁高效。GO语言作为一门静态类型、编译型语言,兼具了高效的执行速度和易于开发维护的特性。在本篇博客中,我们将深入探讨GO语言的基础语法,重点突出其独特之处以及如何利用这些特性编写优雅的代码。

2023-08-06 02:16:00 691

原创 Go语言入门:从零开始的快速指南

Go语言(也称为Golang)是一种开源的、静态类型的编程语言,由Google开发。它的设计目标是简单、高效、安全、并且易于学习和使用。Go语言的特点包括并发支持、垃圾回收、快速编译、强大的标准库等,使其在云计算、网络服务、大数据处理等领域广受欢迎。本篇博客将带您从零开始,快速创建Go语言的第一个项目。

2023-08-01 01:31:33 551 1

原创 Java面向对象编程实战详解(图书管理系统示例)

Java面向对象编程(Object-Oriented Programming,OOP)是Java语言的核心特性之一,它提供了一种组织代码的方法,将现实世界中的事物抽象为对象,并通过对象之间的交互来构建程序。这个简单的图书管理系统演示了Java面向对象编程的各个概念的应用。实际的项目中,面向对象编程将更复杂和丰富,但这个示例可以帮助你理解如何在实际项目中应用面向对象编程的概念。

2023-07-30 03:14:09 1335 11

原创 一遍过JavaSE基础知识

📢 探索JavaSE基础知识,开启编程之旅!🚀如果你对Java编程语言感兴趣,或者想成为一名优秀的Java开发者,那么这篇博客绝对不容错过!📚🔍 在这篇JavaSE基础知识的博客中,你将发现:🌟 JavaSE的核心概念:深入解析Java的数据类型、变量、逻辑控制等基本要素,为你打下坚实的编程基础。🌟 异常处理:了解如何在程序中处理错误和异常情况,让你的程序更加健壮和可靠。🌟 数组与多维数组:掌握数组的创建、访问和遍历技巧,以及如何应用于多维数据结构。

2023-07-26 12:06:44 189 3

原创 HTML :深入了解超文本标记语言

HTML(超文本标记语言)是用于创建网页结构的标记语言。在HTML中,我们使用各种标签和属性来定义和组织网页内容。基本结构: HTML文档的基本结构包括声明、根元素、头部和主体。文本标记: 使用标签如-定义标题,定义段落,强调文本,斜体文本等。链接和图像: 使用标签创建超链接,标签嵌入图像,中的href属性指定链接目标

2023-07-20 15:12:33 507 10

原创 TCP首部格式【TCP原理(笔记五)】

TCP首部格式源端口号(Source Port)目标端口号(Destination Port)序列号(Sequence Number)确认应答号(Acknowledgement Number)数据偏移(Data Offset)保留(Reserved)控制位(Control Flag)窗口大小(Window Size)校验和(Checksum)紧急指针(Urgent Pointer)选项(Options)

2023-07-20 00:03:14 914 2

原创 TCP的拥塞控制、提高网络利用率的方法【TCP原理(笔记四)】

为了在发送端调节所要发送数据的量,定义了一个叫做“拥塞窗口”的概念。于是在慢启动的时候,将这个拥塞窗口的大小设置为1个数据段(1MSS)(连接建立以后即刻从1MSS开始进行慢启动的话,通过卫星通信等手段提高通信吞吐量所耗的时间会比较长。为此,有时也会将慢启动的初始值设置大于1MSS的值。具体来说,MSS的值小于1095字节时最大为4MSS,小于2190字节时最大为4390字节,超过2190字节时最大值大于2MSS。以太网的标准MSS值为1460字节,因此慢启动的初始值从4380字节(3MSS)开始就可以。)

2023-07-19 23:40:49 402

原创 TCP的窗口控制和重发控制【TCP原理(笔记三)】

TCP中的窗口控制机制可以使得即便某些确认应答丢失,发送方无需重发对应的数据。这是通过TCP的选择确认机制(Selective Acknowledgment,SACK)来实现的。使用了SACK选项后,接收方可以在ACK中指明哪些数据段已经成功接收,同时也指明哪些数据段还未接收到。这样,发送方就知道了具体哪些数据段需要进行重传,而不必等待超时,提高了传输效率。SACK选项提供了更精确的信息,使得发送方能够快速重传仅丢失的数据段,而不必重传已经成功接收的数据段。这样可以避免不必要的重传,提高整体速度。

2023-07-17 15:58:53 1466

原创 TCP的三次握手以及以段为单位发送数据【TCP原理(笔记二)】

TCP会在数据通信之前,通过TCP首部发送一个SYN包作为建立连接的请求等待确认应答(TCP中发送第一个SYN包的一方叫做客户端,接收这个的一方叫做服务端。) 。如果对端发来确认应答,则认为可以进行数据通信。如果对端的确认应答未能到达,就不会进行数据通信。此外,在通信结束时会进行断开连接的处理(FIN包)。

2023-07-17 01:11:01 467

原创 确认应答机制与超时重发机制【TCP原理(笔记一)】

确认应答机制的基本原理发送方将数据分割成称为TCP段(TCP segment)的较小单元,并为每个段分配一个唯一的序列号。发送方将这些TCP段发送给接收方,并启动一个定时器来跟踪每个已发送段的确认。接收方收到TCP段后,将按序将它们重新组装成完整的数据流,并发送一个确认(ACK)给发送方。确认中包含接收到的最高序列号,表示该序列号之前的所有数据都已正确接收。发送方在接收到确认后,会停止相应定时器,并继续发送下一个序列号的TCP段。如果发送方在定时器超时之前未收到确认,它将重新发送未确认的TCP段

2023-07-17 00:10:44 1405 1

原创 猜数字小游戏但多语言版本(C、Java、Golang、python、JavaScript)

猜数字小游戏的多个语言版本实现,对比了五个主流编程语言的应用领域和语法风格。C语言和Java版本只有一个主函数,全都写在一起了适合刚接触编程没几个小时的初学者代码简单易懂;go语言和python用了函数封装,逻辑更加清楚,适合学到了函数思想的,并且可以加强函数的应用;JavaScript版本用html还写了一个页面,也是一个前端初学者练习的一个小小项目。

2023-07-14 22:04:52 476 1

原创 两种传输层协议TCP和UDP【图解TCP/IP(笔记十二)】

UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收到的那一刻,立即按照原样发送到网络上的一种机制。为了通过IP数据报实现可靠性传输,需要考虑很多事情,例如数据的破坏、丢包、重复以及分片顺序混乱等问题。如不能解决这些问题,也就无从谈起可靠传输。TCP通过检验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

2023-07-12 16:45:07 874

原创 什么是端口号【图解TCP/IP(笔记十一)】

数据链路和IP中的地址,分别指的是MAC地址和IP地址。前者用来识别同一链路中不同的计算机,后者用来识别TCP/IP网络中互连的主机和路由器。在传输层中也有这种类似于地址的概念,那就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序。因此,它也被称为程序地址。

2023-07-12 16:29:16 2275 2

原创 IP地址【图解TCP/IP(笔记十)】

IP地址(IPv4地址)由32位正整数来表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制(二进制是指用0、1表示数字的方法。) 方式被处理。然而,由于人类社会并不习惯于采用二进制方式,需要采用一种特殊的标记方式。那就是将32位的IP地址以每8位为一组,分成4组,每组以“.”隔开,再将每组数转换为十进制数(这种方法也叫做“十进制点符号”(Dot-decimal notation)。) 。

2023-07-11 23:00:01 3583 1

Java面向对象编程实战详解(图书管理系统示例源码+文档)

这个简单的图书管理系统演示了Java面向对象编程的各个概念的应用。能够系统的学习并实践面向对象的思想。

2023-07-30

空空如也

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

TA关注的人

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