自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

kjl536566的博客

安静~~~~

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

原创 手写深拷贝(Deep Copy)和浅拷贝(Shallow Copy)

在编程中,深拷贝(Deep Copy)和浅拷贝(Shallow Copy)是两个重要的概念,特别是在处理对象或数组时。它们的主要区别在于如何处理对象或数组中的引用类型(如对象、数组等)。

2024-07-07 10:09:56 1144

原创 Java事务(Transaction)

Java事务(Transaction)是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列组成,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。:事务中的所有操作要么全部完成,要么全部不执行,事务在执行过程中发生错误会被回滚(Rollback)到事务开始前的状态,就像这个事务从未执行过一样。:数据库系统提供一定的隔离级别,使事务在不受外部并发操作影响的“隔离”环境下运行,以防止多个事务并发执行时由于交叉执行而导致数据的不一致。一致性与原子性是密切相关的。

2024-07-07 10:04:40 292

原创 手写数组去重

这个函数有效地去除了数组中的重复元素,同时维持了元素的原始顺序。不过需要注意的是,对于大数组,排序操作可能会导致性能开销较大。如果保留原始顺序的同时追求更高的效率,可以考虑使用其他方法,如使用哈希表来记录元素出现的情况。在这个改进的版本中,我们直接将 arr 转换为 Set,这将自动去除重复项。为了提高性能,可以使用一个对象(或 Set)来跟踪已经看到的元素,从而将时间复杂度降低到 O(n)的目的是从一个数组中删除重复的元素,同时保持元素的原始顺序。还有很多其他实现方式。

2024-07-03 21:04:23 374

原创 手写reduce

-哈士君在 JavaScript 中,reduce方法用于对数组中的每个元素执行一个提供的函数,将其结果汇总为单个数值。下面是reducecallback 是一个函数,用来执行对数组中每个元素的处理,它可以接受四个参数:○accumulator:累加器,累积回调的返回值;它是上一次调用回调时返回的累积值,或者是初始值(如果有)。○currentValue:当前正在处理的数组元素。○currentIndex:当前正在处理的数组元素的索引(可选)。

2024-07-03 21:01:44 1304

原创 java-MD5加密工具类

输出:f80e9178cd46af07822b438c0d8d8e31。测试,传入明文转成密文。

2024-07-02 16:11:46 168

原创 使用lombok生成gettersetter 全参构造无参构造equals hashcode

使用lombok帮助我们生成这些内容gettersetter 全参构造无参构造equals hashcode。

2024-07-01 00:45:00 247

原创 java学习常见下载地址

-druid下载。

2024-07-01 00:15:00 122

原创 idea乱码问题解决

乱码问题产生的根本原因数据的编码和解码使用的不是同一个字符集使用了不支持某个语言文字的字符集。

2024-06-30 14:32:19 145

原创 发布/订阅模式

通过以上步骤,就可以实现一个简单的发布/订阅模式。这种设计模式可以帮助实现组件间的解耦,让代码更具扩展性和灵活性。在实际开发中,你可以根据需求对发布/订阅模式进行扩展和优化,例如添加事件类型、多重订阅、异步通知等功能。实现发布/订阅模式的基本思路是通过一个中介者(发布者)来管理订阅者(监听器),并在特定事件发生时通知所有订阅者执行相应的操作。

2024-06-30 00:30:00 297

原创 手写bind

【代码】手写bind。

2024-06-29 00:45:00 177

原创 手写call

这个手写的 myCall 方法模拟了 Function.prototype.call 的基本行为。方法内部,我们首先将 context 转化为一个对象(如果它原本不是),然后在 context 上临时添加一个唯一的函数属性,这个属性的值就是要调用的函数。在JavaScript中,call 方法是 Function 的原型方法,它允许你调用一个函数,其 this 的值被设置为你提供的第一个参数。在生产环境中,建议使用原生的 Function.prototype.call 方法。

2024-06-29 00:15:00 138

原创 手写reduce

-哈士君在 JavaScript 中,reduce方法用于对数组中的每个元素执行一个提供的函数,将其结果汇总为单个数值。下面是reducecallback 是一个函数,用来执行对数组中每个元素的处理,它可以接受四个参数:○accumulator:累加器,累积回调的返回值;它是上一次调用回调时返回的累积值,或者是初始值(如果有)。○currentValue:当前正在处理的数组元素。○currentIndex:当前正在处理的数组元素的索引(可选)。

2024-06-28 10:06:51 593

原创 手写apply

当调用 greet.myApply(person, ['Hello']) 时,greet 函数内部的 this 被绑定到了 person 对象,并且用 ['Hello'] 作为参数列表来调用这个函数,因此输出了 "Hello, Alice!模拟 JavaScript 原生 Function.prototype.apply 方法。

2024-06-28 00:15:00 223

原创 jetbrains的goland、IDEA、pycharm等软件授权失败

这是一个修改过的HOSTS文件,用于Windows系统上的TCP/IP。HOSTS文件通常用于将IP地址映射到主机名,以便在不需要DNS解析的情况下快速解析域名。这个文件里的每一行通常包含一个IP地址和一个或多个主机名,两者之间用空格分隔。这个文件可能是一个用户或管理员为了特定的目的(如阻止某些网站或增强Docker容器的网络访问)而定制的。然而,由于多次重复相同的条目,可能存在一些冗余或配置错误,可能需要进一步审查和优化。符号开头的行是注释,它们不会被系统当作IP地址和主机名的映射来处理。

2024-06-27 17:41:14 460

原创 云原生概念

总之,云原生是一种将应用程序与云计算环境紧密结合的技术体系和方法论,它通过微服务、容器化、DevOps等技术手段来充分利用云计算的优势,提高应用程序的弹性、可伸缩性、可靠性和效率。云原生是一种新型的技术体系和方法论,旨在充分利用云计算环境的优势,使应用程序更具有弹性、可伸缩性、可靠性和效率。

2024-06-27 16:16:57 505

原创 jar|war区别

JAR包:是一种用于打包和分发Java类、资源文件和库的标准格式。WAR包:是一种用于打包和部署Web应用程序的格式。Maven Web 程序的文件结构。

2024-06-27 00:15:00 173

原创 冒泡排序

在上面的代码中,我们定义了一个名为bubbleSort的函数,它接受一个数组作为参数。我们使用两个嵌套的for循环来遍历数组。外层循环负责控制排序的轮数,内层循环则负责在每一轮中进行相邻元素的比较和可能的交换。如果前一个元素大于后一个元素,则交换它们的位置。通过这个过程,每一轮都会将当前未排序部分的最大值“冒泡”到其最终的位置。最终,数组将被完全排序。其他(以后再研究补充)是的,除了冒泡排序之外,还有多种排序算法。

2024-06-26 07:00:00 392

原创 实现异步操作sleep

这两个函数sleep和delay都是使用 JavaScript 的 Promise 和setTimeout来实现异步操作的。sleep。

2024-06-26 00:45:00 618

原创 手写原生Ajax

之前检查响应内容是否为空或不是有效的JSON格式,以避免运行时错误。此外,如果是跨域请求,还需确保服务器支持CORS(跨源资源共享)。以上代码是一个典型的AJAX GET请求的实现,用于向服务器请求数据并在客户端处理这些数据。属性表示请求的不同阶段(0到4),其中4表示请求已完成且响应已就绪。:在实际应用中,你可能还需要考虑错误处理,以及确保在调用。当请求的状态改变时,这个函数会被调用。属性是HTTP状态码,200表示请求成功。方法初始化一个请求。

2024-06-25 10:48:13 546

原创 java中的循环

循环不提供对元素索引的直接访问,也不允许在循环过程中修改集合的结构(如添加或删除元素)。如果你需要这些功能,你可能需要使用传统的。循环更简洁,并且减少了出错的可能性,因为你不需要手动管理索引或迭代器的状态。不过,请注意,增强的。循环(也称为 "for-each" 循环),它用于遍历数组或实现了。是循环变量,它会在每次迭代中自动被赋值为。集合中的下一个元素。在这个特定的例子中,

2024-06-25 00:30:00 280

原创 java类和接口的区别

Java中的类和接口是面向对象编程的两个核心概念,它们之间有一些明显的区别。

2024-06-24 15:33:13 364

原创 java中常见数据结构

是 Java 集合框架(Java Collections Framework)中的一个重要类,它实现了。通常使用 for-each 循环(也称为增强型 for 循环)或迭代器(是类型参数,表示列表中元素的类型。在实际使用中,你需要用具体的类型(如。接口,并提供了动态数组的功能。

2024-06-24 15:31:03 275

原创 java重载和重写的区别

在Java中,重载(Overloading)和重写(Overriding)是两个重要的概念,它们在面向对象编程中扮演着不同的角色。

2024-06-24 10:32:44 410

原创 node esm模块没有__dirname, 运行pnpm run dev报错 __dirname is not defined in ES module scope

【代码】 node esm模块没有__dirname, 运行pnpm run dev报错 __dirname is not defined in ES module scope。

2024-06-15 15:57:04 100

原创 Java中jar包和war包

它包含了构成Web应用的所有组件,如Servlet类、JSP页面、图片资源、HTML文件、以及WEB-INF目录下的web.xml配置文件和其他class文件和库。:主要用于打包Java类文件、库、资源(如图像、配置文件等),或者作为一个独立的应用程序(包含main方法的可执行jar)。同:WAR(Web Application Archive)包和JAR(Java ARchive)包都是Java平台上的归档文件格式,主要用于打包Java应用程序。本文由博客一文多发平台。

2024-06-14 14:23:28 370

原创 maven工程结构搭建

【代码】maven工程结构搭建。

2024-06-11 15:18:43 277

原创 Java常见概念

JavaSE、JavaEE和JavaME是Java技术的三个主要版本,它们各自具有不同的特性和应用场景。

2024-06-11 11:42:56 454

原创 pom.xml中配置dependency时scope属性是可选的,可以指定依赖生效范围!(三)

【代码】pom.xml中配置dependency时scope属性是可选的,可以指定依赖生效范围!(三)

2024-06-10 21:36:14 100

原创 js中-null不是基本类型

在JavaScript中,`null` 也不是基本类型(也称作原始类型或简单数据类型),但它被归类为一种特殊的对象类型。这是一个历史遗留问题,也是JavaScript语言设计上的一些独特之处。在早期版本的ECMAScript规范中,typeof 操作符对 `null` 返回 `"object"`,这导致很多人误以为 `null` 是一种对象类型。但实际上,`null` 应该被视为原始值的一种,它表示一个空对象指针,用来表示一个变量有意不指向任何对象。

2024-06-09 01:45:00 494

原创 基本类型值,是按值复制的,而不是按引用复制的。(深浅拷贝)

的每个元素复制到新数组中。但是,由于数组元素本身(在这个例子中是数字)是基本类型值,它们是按值复制的,而不是按引用复制的。这是因为数组在JavaScript中是一种特殊的对象,其元素存储在索引属性中。执行的是浅拷贝的事实,只是在这个特定的例子中,浅拷贝和深拷贝在行为上没有区别。并未受到影响,因为您没有修改任何对象的引用,只是修改了新数组。对这些对象的修改将会影响两个数组。包含的是对象引用(而不是基本类型值),那么。方法创建了一个新的数组实例,并将原数组。中的对象引用将指向与原数组。在您的例子中,由于数组。

2024-06-09 00:15:00 298

原创 实现异步操作

这两个函数sleep和delay都是使用 JavaScript 的 Promise 和setTimeout来实现异步操作的。sleep。

2024-06-08 14:29:28 540

原创 模块间通信

在 Node.js 中,全局对象并不是window,因为 Node.js 运行在服务器端,而不是浏览器环境中。在 Node.js 中,全局对象可以通过多种方式访问,但最常见的是使用global关键字。global是 Node.js 中的全局命名空间对象。它类似于浏览器环境中的window对象,但它是 Node.js 特有的。你可以通过global对象来访问所有全局定义的变量和函数。下面是一个简单的示例,展示了如何在 Node.js 中使用global然而,尽管global。

2024-06-08 10:52:58 520

原创 Gradle和Maven都是广泛使用的项目自动化构建工具(二)

Gradle和Maven在构建脚本语言、构建性能、插件生态系统和灵活性、项目结构和依赖管理以及跨平台支持等方面存在差异。开发者在选择构建工具时需要根据具体项目的需求和特点进行综合考虑。对于大型项目和复杂的构建逻辑,Gradle可能更适合;而对于中小型项目和简单的构建需求,Maven则可能是一个更好的选择。Gradle和Maven都是广泛使用的项目自动化构建工具,但它们在多个方面存在差异。

2024-06-06 22:23:36 621

原创 java环境配置(一)

由于您提到的 Maven 路径是在 IntelliJ IDEA 2023.1 的插件中,所以请确保您的 IntelliJ IDEA 也配置了正确的 JDK 路径。如果您看到 Maven 输出信息中的 Java 版本是您预期的版本,那么您不需要担心 Maven 使用的 JDK。但是,如果您想更改 Maven 使用的 JDK,您可以在 Maven 的。环境变量可能已经正确设置,或者 Maven 正在使用其内置的 JDK 配置(这在某些 IDE 插件中是常见的)。文件中设置项目的编码,或者在命令行中使用。

2024-06-06 17:17:39 481

原创 源代码先转字节码,再转机器码的过程

是的,对于某些编程语言(如Java、C#等)和它们的运行时环境(如Java虚拟机JVM、Common Language Runtime CLR等),程序的源代码首先会被编译成字节码(Bytecode),然后在运行时,这些字节码再由相应的虚拟机或即时编译器(Just-In-Time, JIT Compiler)转换成特定平台的机器码来执行。但值得注意的是,现代的 JavaScript 引擎为了提高性能,通常会使用一些优化技术,如即时编译(JIT)和热点分析,将频繁执行的代码片段转换成机器码以提高执行效率。

2024-06-04 11:07:42 1277 2

原创 手写节流throttle

在这个例子中,handleScroll是节流后的函数,它被用作scroll事件的处理程序。无论用户如何频繁地滚动页面,handleScroll函数都只会每200毫秒执行一次,从而有效地减少了不必要的计算和DOM操作,提高了页面的性能。它使用了闭包和setTimeout来确保函数fn在指定的delay时间内只被调用一次,即使它被频繁触发。节流throttle指定的delay时间内只被调用一次,即使它被频繁触发;防抖debounce,只要触发,就重新计算delay;有很多其他的实现方式....比对时间戳。

2024-06-03 19:41:26 345

原创 手写防抖debounce

这段代码定义了一个名为。

2024-06-03 18:30:05 497

原创 Spring Boot 官方不再支持 Spring Boot 的 2.x 版本!新idea如何创建java8项目

但从Java 5(即JDK 1.5)开始,尽管内部版本命名依然沿用了1.5、1.6这样的数字,但在市场推广和用户交流中,逐渐采用了更为简洁的整数命名方式,即Java 5、Java 6等。虽然理论上JDK的某些后续版本(如JDK 11、JDK 17)在向后兼容的原则下也能编译和运行Java 8的代码,但直接选择JDK 8可以确保最佳的兼容性,避免因新版本可能带来的行为差异或对旧代码的不完全兼容问题。如果你的项目是基于Java 8的,你应该选择JDK 8或更高版本中兼容Java 8的版本来进行开发。

2024-06-01 10:47:49 481

原创 IDE集成开发环境

定义IDE是用于提供程序开发环境的应用程序,它集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。组成部分IDE通常包括代码编辑器、编译器、调试器和图形用户界面等工具,以及版本控制、构建自动化和代码分析工具等。优势:IDE将程序设计的各个阶段(如编辑、编译、调试等)集成在一个桌面环境中,大大方便了用户,减少了在多个软件间来回切换的麻烦。发展历程从开始在主机或终端机开发程序,IDE才渐渐的成为必要的工具。

2024-06-01 01:00:00 1569

原创 vite为什么速度快

在非阻塞I/O中,当程序发起一个I/O请求(如读取文件、发送网络请求等)时,如果I/O操作不能立即完成(例如,数据还没有准备好),程序不会阻塞等待,而是立即返回并继续执行其他任务。当I/O操作完成时,程序会收到一个通知(通常是通过回调函数或事件的方式),然后可以处理I/O操作的结果。事件循环(Event Loop)和非阻塞 I/O(Non-blocking I/O)是现代异步编程模型中的两个核心概念,特别是在处理高并发或I/O密集型任务时。与传统的阻塞I/O相比,非阻塞I/O可以提高程序的并发性和响应性。

2024-05-31 15:41:37 933

空空如也

空空如也

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

TA关注的人

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