- 博客(126)
- 收藏
- 关注
原创 拦截器与过滤器的区别
在Java Web开发中,拦截器和过滤器是常用的两种预处理和后处理请求的方式。本文将详细介绍拦截器和过滤器的区别,以及它们在实际项目中的应用场景
2024-03-22 09:21:21
2541
原创 Edge好用的插件
1. 拦截所有广告,包括:- 视频广告(还包括 Youtube 视频广告~)- 各种媒体广告,例如视频广告,插播广告和浮动广告!- 令人讨厌的弹窗广告。- 横幅广告和文字广告(包括 Facebook 广告~)2. 加速页面载入,节省带宽,屏蔽广告和弹窗!wow3. 拦截各种间谍软件,广告软件和拨号安装程序(可选)4. 通过拦截常见第三方跟踪系统保护您的隐私(可选)5. 保护您对抗恶意和钓鱼攻击(可选)速度控制。
2024-03-09 16:02:46
3332
原创 二分查找算法
二分查找算法,也称为折半查找算法,是一种在有序数据集合中查找目标值的算法。它通过将目标值与数据集合的中间元素进行比较,从而将搜索范围缩小一半。如果目标值等于中间元素,则找到了目标;如果目标值小于中间元素,则在左半部分继续查找;如果目标值大于中间元素,则在右半部分继续查找。通过重复这个过程,最终可以找到目标值或确定目标值不存在于数据集合中。二分查找算法是一种高效且常用的搜索算法,适用于有序数据集合中的搜索操作。它通过每次将搜索范围缩小一半,快速逼近目标值,具有较低的时间复杂度和简单的实现方式。
2024-03-09 15:40:00
2862
原创 深入理解并发编程:解锁现代软件性能的关键
在单核处理器中,这些任务并不是真正同时执行,而是通过操作系统的任务调度机制快速切换,给人一种同时进行的错觉。互联网服务的高并发需求以及多核处理器的普及使得并发编程成为了现代软件工程的一个核心组成部分。通过允许任务交错执行,甚至在多核CPU上同时执行,并发编程显著提高了程序的执行效率。尽管并发编程具有巨大的潜力,但它也带来了一系列的挑战,包括数据竞争、死锁和资源竞争等问题。总的来说,并发是一种逻辑上的同时发生,依赖于操作系统的任务调度能力,而并行则是物理上的多个处理器或多核处理器同时执行多个任务。
2024-03-08 20:51:32
2680
原创 Python的http模块requests
Python的requests模块是一个用于发送HTTP请求的库,它简化了与Web服务交互的过程。在本篇博客中,我们将介绍如何使用requests模块发送HTTP请求,以及如何处理响应。
2024-03-08 20:24:58
2941
原创 2024 年 AI 辅助研发趋势
随着人工智能技术的持续发展与突破,2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计,从软件开发到材料科学,AI正逐渐渗透到研发的各个环节,变革着传统的研发模式。在这一背景下,AI辅助研发不仅提升了研发效率,降低了成本,更在某种程度上解决了复杂问题,推动了科技进步。2024年,随着AI技术的进一步成熟,AI辅助研发的趋势将更加明显,其潜力也将得到更广泛的挖掘和应用。
2024-03-07 16:32:10
3059
原创 Java中的String不可变性
Java中String类的不可变性是通过在底层实现中使用final关键字来实现的。这种设计带来了诸多优点,如线程安全性、安全性和缓存利用等。合理利用String不可变性可以提高程序的性能和安全性,是Java编程中的重要技术之一。通过本文的介绍,读者可以更加深入地了解Java中String不可变性的底层实现原理,并在实际开发中充分利用这一特性来编写高效、安全的Java程序。
2024-03-07 16:11:35
3159
原创 Linux命令之top命令
Linux是一个在 Linux 和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时视图,显示系统的整体性能信息以及正在运行的进程的相关信息。使用权限:所有使用者。
2024-03-06 19:31:36
3135
原创 什么是线程池以及七大配置参数
使用线程池的好处是可以控制并发线程的数量,避免因为大量创建和销毁线程而造成的性能问题。在这个示例中,我们创建了一个具有5个核心线程、10个最大线程、60秒空闲时间的线程池。(最大线程数):这是线程池中允许的最大线程数量。如果队列已满且当前线程数量小于最大线程数,则线程池会创建新的线程来处理任务。(核心线程数):这是线程池中的基本线程数量。(线程空闲时间):当线程池中的线程数量超过核心线程数时,多余的空闲线程在终止前等待新任务的最长时间。接口来自定义线程的创建方式,例如设置线程的名称、优先级等。
2024-03-05 19:50:09
2745
原创 Java中Sleep和Wait的区别
虽然Java中的Sleep和Wait方法都可以实现线程的暂停,但它们在所属类、作用、使用场景和异常处理方面存在明显的区别。在实际开发中,我们需要根据具体的需求和场景选择合适的方法来控制线程的暂停和执行。
2024-03-05 18:05:19
2676
原创 Spring循环依赖:原因与解决方法
Spring循环依赖指的是两个或多个Bean之间相互依赖,形成一个环状依赖的情况。简单来说,就是A依赖B,B依赖C,C依赖A,这样就形成了一个循环依赖的环。Spring循环依赖通常会导致Bean无法正确地被实例化,从而导致应用程序无法正常启动或者出现异常。因此,Spring循环依赖是一种需要尽量避免的情况。Spring循环依赖是在应用中常见的问题,但通过合适的解决方法,我们可以避免出现这种情况,确保应用的正常运行。在实际开发中,根据具体情况选择合适的解决方案是十分重要的。
2024-03-04 16:36:50
3469
原创 Java和JavaScript之间的主要区别与联系
Java和JavaScript是两种不同的编程语言,它们在语法、结构、运行环境和应用领域等方面有很大的区别。然而,它们之间也存在一定的联系,如支持函数式编程和共享类似的语法元素。了解这两种语言之间的区别和联系,有助于我们更好地选择和使用它们进行软件开发。
2024-03-03 10:16:24
3214
原创 Spring注解之全局处理 Controller 层异常
介绍一下我们 Spring 项目必备的全局处理 Controller 层异常。如果方法参数不对的话就会抛出。:注解定义全局异常处理类。:注解声明异常处理方法。,我们来处理这个异常。
2024-03-01 11:45:40
2715
原创 Spring注解之参数校验
是一套 JavaBean 参数校验的标准,它定义了很多常用的校验注解,我们可以直接将这些注解加在我们 JavaBean 的属性上面,这样就可以在需要校验的时候进行校验了,非常方便!校验的时候我们实际用的是框架。
2024-02-29 14:21:56
3798
原创 Spring之读取配置信息
你可以像使用普通的 Spring bean 一样,将其注入到类中使用。读取指定 properties 文件。读取配置信息并与 bean 绑定。
2024-02-28 06:45:00
3033
原创 Spring注解之前后端传值
用于读取 Request 请求(可能是 POST,PUT,DELETE,GET 请求)的 body 部分并且。格式的数据,接收到数据之后会自动将数据绑定到 Java 对象上去。将请求的 body 中的 json 字符串转换为 java 对象。这样我们的后端就可以直接把 json 格式的数据映射到我们的。来接受数据的话,大概率是你的数据库设计或者系统设计出问题了!我用一个简单的例子来给演示一下基本使用!那么我们服务获取到的数据就是:c。如果你的方法必须要用两个。
2024-02-28 03:00:00
2912
原创 Spring注解之处理常见的 HTTP 请求
5 种常见的请求类型:GET :请求从服务器获取特定资源。举个例子:GET /users(获取所有学生)POST :在服务器上创建一个新的资源。举个例子:POST /users(创建学生)PUT :更新服务器上的资源(客户端提供更新后的整个资源)。举个例子:PUT /users/12(更新编号为 12 的学生)DELETE :从服务器删除特定的资源。举个例子:DELETE /users/12(删除编号为 12 的学生)PATCH :更新服务器上的资源(客户端提供更改的属性,可以看做作是部分更新),
2024-02-27 18:19:57
3327
原创 Spring Bean 相关注解
单独使用 @Controller 不加 @ResponseBody的话一般使用在要返回一个视图的情况,这种情况属于比较传统的 Spring MVC 的应用,对应于前后端不分离的情况。@RestController注解是@Controller和@ResponseBody的合集,表示这是个控制器 bean,并且是将函数的返回值直 接填入 HTTP 响应体中,是 REST 风格的控制器。一般用来声明配置类,可以使用 @Component注解替代,不过使用@Configuration注解声明配置类更加语义化。
2024-02-26 18:25:37
3623
原创 @SpringBootApplication
表示当前类是Spring Boot的配置类。:开启Spring Boot的自动配置功能。:扫描并加载符合条件的组件(如@Controller、@Service等)。@Inherited......通过使用,我们可以简化Spring Boot项目的配置,让开发变得更加高效。虽然注解已经包含了很多默认的配置,但有时候我们可能需要对其进行一些定制。这时,我们可以在注解中添加其他注解来实现自定义配置。在这个示例中,我们在注解中添加了属性,指定了组件扫描的包路径。
2024-02-26 17:41:51
3178
原创 JSON:简介与基本使用
作为数据交换的首选格式,JSON以其简洁、易读、易于编写和解析的特点,成为了Web开发工作中不可或缺的工具。无论是在客户端的JavaScript代码中,还是在服务端的各种编程语言中,JSON都展现出了其卓越的通用性和便利性。掌握JSON的使用,对于任何希望在Web开发领域深入发展的开发者来说,都是一项必备的技能。
2024-02-25 18:22:45
3214
原创 sql语句创建数据库
在软件开发过程中,数据库是至关重要的一环。它不仅存储了应用程序的数据,还负责数据的管理和处理。创建数据库是开发过程中的首要步骤之一,而SQL(Structured Query Language)是用于管理数据库的标准语言。本篇博客将带您深入了解如何使用SQL语句创建数据库,从基础到实践,一步步指导您完成这一过程。
2024-02-25 17:11:34
3188
原创 主流开发语言和开发环境:探索编程世界的基础
选择正确的编程语言和开发环境对于项目的成功至关重要。了解各种语言的优势和局限,以及熟悉不同的开发环境,可以帮助开发者更高效地工作,并最终创造出更加强大、可靠的软件产品。无论你是初学者还是经验丰富的开发者,掌握这些基础知识都是进入编程世界的关键。
2024-02-23 22:11:18
3380
原创 数据库:存储、管理和检索数据的关键技术
一、数据库简介 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的API用于创建、访问、管理、搜索和复制所保存的数据。本文将介绍数据库的基本概念、分类、作用和特点,帮助大家更好地了解和运用数据库。总结 数据库作为存储、管理和检索数据的关键技术,已经成为企业和组织的核心竞争力之一。了解数据库的基本概念、分类、作用和特点,有助于我们更好地利用数据库技术,提高数据处理效率,为企业和组织的发展提供有力支持。数据库:存储、管理和检索数据的关键技术。
2024-02-23 21:55:02
3543
原创 RabbitMQ入门
RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol,高级消息队列协议)的消息中间件,它最初起源于金融系统,用于在分布式系统中存储转发消息。RabbitMQ 发展到今天,被越来越多的人认可,这和它在易用性、扩展性、可靠性和高可用性等方面的卓著表现是分不开的。RabbitMQ使用一些机制来保证消息的可靠性,如持久化、传输确认及发布确认等。在消息进入队列之前,通过交换器来路由消息。
2024-02-22 19:25:17
3330
原创 使用两个队列实现栈
在计算机科学中,栈是一种数据结构,它遵循后进先出(LIFO)的原则。这意味着最后一个被添加到栈的元素将是第一个被移除的元素。然而,Java的标准库并没有提供栈的实现,但我们可以使用两个队列来模拟一个栈的行为。首先,我们需要创建一个名为MyStackqueue1和queue2。这两个栈将用于实现队列的功能。接下来,我们需要实现队列的基本操作,包括pushpoppeek和empty。首先,我们需要创建一个栈类。
2024-02-22 16:56:07
3341
原创 TCP 三次握手和四次挥手
当另一方也没有数据再发送的时候,则发出连接释放通知,对方确认后就完全关闭了TCP连接。第三次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:自己发送、接收正常,对方发送、接收正常。第二次握手:Client 确认了:自己发送、接收正常,对方发送、接收正常;Server 确认了:对方发送正常,自己接收正常。服务器-收到这个 FIN,它发回一 个 ACK,确认序号为收到的序号加1。Server 确认了对方发送正常,自己接收正常。(图片来源:《图解HTTP》)。
2024-02-21 19:25:28
5683
原创 使用两个栈实现队列
在计算机科学中,队列是一种具有先进先出(FIFO)特性的数据结构。在本篇博客中,我们将介绍如何使用两个栈来实现一个队列。这种方法的核心思想是利用栈的特性,即后进先出(LIFO),来模拟队列的先进先出特性。首先,我们需要创建一个名为MyQueuestack1和stack2。这两个栈将用于实现队列的功能。接下来,我们需要实现队列的基本操作,包括pushpoppeek和empty。首先,我们需要创建一个队列类。
2024-02-21 17:10:17
3208
原创 Python操作MySQL数据库
在Python中,我们可以使用pymysql库来操作MySQL数据库。pymysql是一个纯Python实现的MySQL客户端,它允许我们连接到MySQL服务器并执行SQL语句。本文将介绍如何使用pymysql库进行基本的数据库操作。
2024-02-20 19:44:54
3189
原创 Java实现一个队列
目录概念与结构实现一个队列创建一个队列类 实现队列的基本操作测试队列类表示队列的最大容量,表示队头的位置,表示队尾的位置,是一个整数数组,用于存储队列中的元素。实现队列的基本操作包括入队(enqueue)、出队(dequeue)和查看队头元素(peek)。测试队列类
2024-02-20 15:59:23
3027
原创 Java实现一个栈
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。包括入栈(push)、出栈(pop)和查看栈顶元素(peek)。LIFO(Last In First Out)的原则。压栈:栈的插入操作叫做进栈/压栈/入栈,入数据在。出栈:栈的删除操作叫做出栈。
2024-02-19 16:12:06
3043
原创 final,static,this,super 关键字
说明:使用final方法的原因有两个。静态内部类与非静态内部类之间存在一个最大的区别: 非静态内部类在编译完成之后会隐含地保存着一个引用,该引用是指向创建它的外围类,但是静态内部类却没有。被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用。被 static 修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享。这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法。
2024-02-05 11:35:26
3963
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人