自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小电玩

在绝望中爬起,在美好生活跌入谷底,一步一步艰难前行,休想阻止我向前行

  • 博客(91)
  • 问答 (5)
  • 收藏
  • 关注

原创 23 种设计模式详解(3.7万字带你了解设计模式)

设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

2024-04-10 08:45:00 739

原创 Rust语言入门第一篇-环境搭建

希望这篇关于Rust语言的文章能帮到你

2024-04-07 09:42:25 1123 3

原创 Rust语言

Rust 是一种系统级编程语言,由 Mozilla 开发。它的设计注重安全性、并发性和性能。Rust 最初发布于 2010年,其目标是成为一种能够替代 C 和 C++ 的编程语言,同时提供更好的内存安全性和并发支持。Rust 的编译器是在 MIT License 和 Apache License 2.0 双重协议声明下的免费开源软件。截至目前( 2024 年 4 月)最新的编译器版本是 1.77.1。Rust 是一种系统级编程语言,旨在提供内存安全、并发性和高性能,同时保持高度的可控性。

2024-04-06 16:45:26 1046

原创 Java,这是一个模仿HashMap的put,get功能的自定义MyHashMap

这段代码实现了一个简化版本的 HashMap,包含了 put 和 get 方法,并使用了数组+链表的存储结构。注意,这里的红黑树部分并未实现,只使用了链表来处理冲突。由于短时间没有办法能按自己的方式写出来全部的功能和底层设计,难度还是比较大的后期我会慢慢的把存储结构改成数组+链表+红黑树的数据结构

2023-12-12 21:26:18 1213

原创 Rust语言入门第六篇-函数

在 Rust 中,函数被也可以称为方法(methods),它们是 Rust 程序中的基本构建块之一。方法是一段被命名并可重复调用的代码块,用于执行特定的任务。方法可以接受参数并返回值,它们通常用于执行特定的操作或完成特定的计算。

2024-04-16 23:23:00 1052

原创 Rust语言入门第五篇-数据类型

在Rust中,每个值都有一个明确的数据类型,这告诉Rust如何处理这个值。数据类型分为两类子集:标量(scalar)和复合(compound)。需要记住的是,Rust是一种静态类型语言,这意味着在编译时必须知道所有变量的类型。通常情况下,根据值及其使用方式,编译器可以推断出我们想要的类型。

2024-04-16 06:45:00 637

原创 Rust语言入门第四篇-变量与可变性以及隐藏(Shadowing)

在 Rust 中,尽管是强类型语言,但编译器拥有类型推断的能力。这意味着你可以在不显式指定变量类型的情况下声明变量,`编译器会根据上下文推断出变量的类型`。这样的设计在一定程度上使代码更加简洁,`但不会牺牲类型安全性。`

2024-04-13 08:00:00 663

原创 Rust语言入门第三篇-输出到命令行+占位符

在学习 Rust 语言之前,掌握如何将文字输出到命令行几乎是必不可少的。这是因为在学习阶段,向命令行输出结果几乎是唯一的方式。

2024-04-12 12:00:00 1169

原创 Rust语言入门第二篇-Cargo教程

Rust语言入门第二篇-Cargo教程本节提供对cargo命令行工具的快速了解。我们演示了它为我们生成新包的能力,它在包内编译crate的能力,以及它运行生成的程序的能力。

2024-04-12 07:00:00 795

原创 【Mybatis】Mybatis 二级缓存全详解教程

MyBatis-Plus(简称MP)是一个基于 MyBatis 的增强工具,它简化了 MyBatis 的开发,并且提供了许多便利的功能,帮助开发者更高效地进行持久层的开发。

2024-04-08 18:00:00 997

原创 Java Lambda 表达式(详细)

Java Lambda 表达式是在 Java 8 版本中引入的重要特性,它描述了一种更简洁、更灵活的方式来处理函数式编程。在 Java 8 之前,要实现函数式编程,需要通过匿名类实现接口的方式。这样的代码通常比较冗长,可读性也较差。为了改善这种情况,Java 8 引入了 Lambda 表达式。Lambda 表达式的核心思想是:将函数作为参数传递给其他方法,或者将函数作为结果返回。通过 Lambda 表达式,我们可以使用更紧凑和清晰的语法来定义匿名函数。Java 8 中首次引入了 Lambda 表达式。

2024-04-08 08:00:00 765

原创 Java synchronized(详细)

在Java中,`synchronized`关键字用于解决多线程并发访问共享资源时可能出现的线程安全问题。

2024-04-07 19:00:00 642

原创 error: linker `link.exe` not found

报错信息表明编译目标依赖于MSVC(Microsoft Visual C++)链接器,但系统找不到link.exe。1.第一种情况如果cmd rustc -version 显示rust版本,只需要一条命令。以及配置环境变量 参考这个教程里面有讲解配置 环境变量。2.如果没有安装则需要。

2024-04-07 10:08:06 236

原创 Spring的事务详解

Spring 事务是 Spring 框架提供的一种对事务进行管理的机制。在使用 Spring 事务时,可以通过注解或编程方式将需要进行事务管理的方法和代码块标记为事务性操作,当这些操作被执行时,Spring 会负责开启、提交或回滚数据库事务,以保证在多个操作之间的一致性。

2024-04-07 08:00:00 655

原创 MYSQL索引优化

​MySQL性能优化是一个持续的过程,需要不断尝试和调整。根据具体场景和需求,可能还会有其他针对性的优化策略。

2024-04-07 06:46:22 662

原创 MySQL索引优化

选择合适的索引类型

2024-04-06 17:00:00 896

原创 单一职责原则

单一职责原则(Single Responsibility Principle,SRP)是面向对象设计中的一个重要原则,提倡将一个类或模块只负责一个职责或功能。它最早由Robert C. Martin在其《敏捷软件开发:原则、模式与实践》一书中提出。单一职责原则的核心思想是:一个类或模块应该只有一个引起它变化的原因。也就是说,每个类或模块都应该只有一个职责或功能,并且该职责或功能应该在该类或模块内部封装起来,而不是分散到多个类或模块中。

2024-04-06 15:00:00 875

原创 Java Iterable类(详细)

Iterable是爸爸或者妈妈都行,但是它得孩子是真的不少啊ArrayList要叫Iterable老祖宗,哈哈哈开玩笑了!

2024-04-06 13:30:00 875

原创 Java Number类(详细)

`java.lang.Number` 类是抽象类,用于表示各种数值类型的对象。它是 Java 中所有数值类型的包装类的超类。

2024-04-06 11:30:00 1055

原创 Java 进程状态

线程是调度的基本单位,进程作为拥有资源的基本单位

2024-04-06 10:30:00 1111

原创 Java线程状态(超详细)

当我们在编写多线程程序时,了解线程状态是非常重要的,因为它能够帮助我们理解线程在执行过程中的行为,从而更好地控制和管理线程。

2024-04-06 09:00:00 609

原创 Java String类深入了解JDK各个版本进阶版本

在jdk11中 String value 存储字符串值 是byte[] 数组 ,String中存储字节码的是coder 也是byte类型,因此String的底层数据存储类型成为了byte类型而在jdk8中String 的String value 存储字符串值 是char[] 数组,因此 因此可以看出在jdk8中String底层数据存储类型成为了char类型。

2024-03-25 17:55:06 955

原创 Java标签提高for循环运行效率,减少资源开销

再看这段代码以及执行结果。

2024-03-25 12:34:18 498

原创 Java入门 第五篇 String,StringBuilder和StringBuffer

在Java中,String和都是用于处理字符串的类,但它们在性能和可变性方面有所不同。StringString是Java中预定义的不可变字符串类。一旦创建了一个String对象,它的值就不能被修改。任何对String对象的操作都会返回一个新的String对象。这是因为String对象在内存中是不可变的,这种设计可以提供字符串的安全性和线程安全性。在上面的例子中,将"Hello"和" World"连接起来会创建一个新的String对象,原始的str对象不会被修改。是可变的字符串类,用于处理可变的字符序列。

2023-12-13 21:42:27 826 2

原创 Java 入门第四篇 集合

在Java中,集合(Collection)是一种用于存储和操作一组对象的容器类。它提供了一系列的方法和功能,用于方便地管理和操作对象的集合。集合框架是Java中非常重要和常用的一部分,它包含了多个接口和类,如List、Set、Map等。集合的作用有以下几个方面:动态存储:集合可以动态地存储和管理对象,不需要事先指定容量大小。与数组相比,集合可以根据需要自动扩展和缩小。灵活的操作:集合提供了丰富的方法和功能,可以方便地进行添加、删除、查找、排序等操作。

2023-12-13 21:31:14 1022

原创 Java 入门第三篇,程序+输出+基础类型+循环+选择+判断语法等

在Java中,类(Class)是一种面向对象编程的基本概念。类是用于创建对象的模板,它定义了对象的属性(成员变量)和行为(方法)。可以将类看作是一种自定义的数据类型,它封装了数据和操作数据的方法。类的定义通常包括以下几个部分:类名:类的名称用于标识该类,在Java中,类名的首字母通常大写。成员变量:也称为属性或实例变量,用于存储对象的状态信息。成员变量定义了对象的特征和属性。方法:也称为函数,用于定义对象的行为和操作。方法包含一系列的语句,用于执行特定的任务。

2023-12-13 21:09:48 983

原创 Java 入门第二篇,Java发展史

Java的诞生可以追溯到20世纪90年代初。以下是Java诞生的背景和过程:背景:在上世纪80年代和90年代初,计算机领域存在着多样化的硬件和操作系统,开发者需要为不同的平台编写不同的程序。这给软件开发和应用部署带来了很大的挑战。绿色计划:为了解决这个问题,Sun Microsystems公司于1991年启动了一个名为“绿色计划”(Green Project)的项目。詹姆斯·高斯林(James Gosling)和他的团队负责这个项目,目标是开发一种能够在多个平台上运行的新编程语言。

2023-12-12 22:12:58 996

原创 Java 入门第一篇,什么是程序

举个例子在没有计算机程序之前,人们进行大规模数据集的统计分析通常需要手动计算和处理。这可能包括繁琐的数据整理、复杂的数学运算和统计方法的应用。这种手动处理数据的方式不仅费时费力,还容易出错。然而,当有了计算机程序之后,人们可以使用专门设计的统计分析软件或编程语言来处理大规模数据集。这些程序提供了各种统计函数和算法,使得数据处理和分析变得更加快速和准确。举个例子,假设有一个大型销售数据集,包含了数以万计的销售记录。在没有程序的情况下,人们可能需要手动计算总销售额、平均销售额、最大最小值等统计指标。

2023-12-12 21:51:07 780

原创 Java 手写设计HashMap源码,让面试官膜拜

这是一个简单的自定义哈希映射(HashMap)的实现。功能不太完善,代码不太优雅,细节不够好,没有源码的那么好。后面我会慢慢进行优化。

2023-12-10 17:34:48 646 3

原创 主流MQ [Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ]

下面是关于主流的 Kafka、RabbitMQ、ZeroMQ、RocketMQ 和 ActiveMQ 的一些介绍:Kafka 是一个分布式流处理平台,设计用于处理高吞吐量的实时数据流。它具有高可靠性、可扩展性和持久性,适用于构建实时数据管道和流式处理应用程序。Kafka 使用发布-订阅模型,消息以主题(topic)的形式进行发布和订阅。RabbitMQ 是一个功能丰富且易于使用的开源消息队列系统,实现了高级消息队列协议(AMQP)。

2023-12-10 16:54:42 1192

原创 spring bean的生命周期

1. 实例化阶段(Instantiation):这个阶段,Spring容器根据Bean定义创建Bean的实例。2. 属性赋值阶段(Population):这个阶段,Spring容器将通过依赖注入或其他方式将属性值赋给Bean。3. 初始化阶段(Initialization):这个阶段,Spring容器会调用Bean的初始化方法,例如实现了InitializingBean接口的afterPropertiesSet()方法或自定义的init-method。

2023-12-10 16:04:17 956

原创 Java红黑树保姆级带你了解,让面试官哑口无言

首先,红黑树是一种自平衡的二叉搜索树,它通过颜色标记和旋转操作来维持树的平衡。红黑树将节点分为红色和黑色两种颜色,其中红色表示当前节点,而黑色表示子节点。在下面图片中,我们可以使用以下代码来描述一个红黑树的基本结构:表示了一个红黑树的根节点A,以及其左右子节点B和C。每个节点都可能拥有一个或两个子节点。对于每个节点,我们可以根据其颜色将其标记为红色或黑色。在Mermaid格式中,我们可以通过在节点标签中添加颜色后缀来表示节点的颜色。例如,红色节点可以表示为,而黑色节点可以表示为。

2023-12-08 06:45:00 949

原创 Spring AOP带你了解整个流程,让面试官只能仰望

提示:解析在Spring配置中,启用AspectJ自动代理功能。这是一个注解,可以轻松地启用AOP功能。Spring AOP注册一个AnnotationAwareAspectJAutoProxyCreator bean,它负责根据切点表达式自动为符合条件的bean创建代理。**C --> D[“BeanPostProcessor”]:**在Spring AOP中,BeanPostProcessor接口用于自定义在实例化、配置、初始化等阶段对bean的处理逻辑。

2023-12-07 21:46:07 877

原创 Spring IOC,DI原理保姆级带你了解如,让面试官感到你的魅力

Spring DI容器:Spring提供的用于管理Bean的容器。它可以通过名称来获取或注入Bean实例。容器可以自动管理Bean的生命周期,包括实例化、初始化、使用和销毁等。加载配置文件:从文件系统中加载配置文件,如XML或Java配置文件。还可以通过其他方式加载配置文件,如通过注解或使用编程方式等。解析配置文件:解析配置文件中的信息,将其转换为内部的数据结构,以便后续的处理。解析器会根据配置文件的类型不同而有所不同,如XML配置文件使用XML解析器,Java配置文件使用Java解析器等。

2023-12-07 20:26:24 903

原创 Spring如何处理线程并发问题,保姆级带你认识,让面试管对你刮目相看

Spring框架需要处理线程并发问题,主要是因为并发是现代应用程序和系统的一个关键特性。在多线程环境下,应用程序同时处理多个任务,而这些任务可能同时访问和修改共享资源。如果不加以控制,这Spring作为一个流行的Java开发框架,旨在帮助开发者构建高质量的、可扩展的应用程序。在处理并发问题方面,Spring提供了多种工具和机制,以帮助开发者更好地管理和控制线程并发。通过使用Spring的线程池、异步任务执行、事务管理等功能,开发者可以更轻松地处理多线程环境下的并发问题,提高应用程序的性能和可靠性。

2023-12-06 18:00:00 1246

原创 SringBoot的启动原理,保姆级带你认识,让面试管对你刮目相看

当我们启动 Spring Boot 应用程序时,Spring Boot 会按照一定的顺序执行一系列的操作,以完成应用程序的初始化和启动。下面是 Spring Boot 启动原理的详细步骤:启动类中调用方法,启动 Spring Boot 应用程序。创建实例,对应用程序做一些初始化工作。这包括设置应用程序的类加载器、初始化默认的异常处理器等。初始化应用上下文,即创建对象。应用上下文是 Spring 框架的核心容器,负责管理和组织 Bean 对象。通过调用的。

2023-12-05 21:50:19 830

原创 Spring 保姆级带你认识,让你如何轻松应对面试官

AOP是一种编程范式,它能够在程序运行期间动态地将代码切入到原有代码的流程中,从而实现横向关注点的处理,如日志记录、事务管理和安全检查等。在Spring中,AOP是通过代理模式来实现的,在创建Bean时为Bean生成一个代理对象,代理对象能够拦截指定方法的调用,并在执行前或执行后执行特定操作。aop通常成为面向切面编程,就是把一些与业务无关的代码进行抽离封装起来,另外就是一些代码中大量重复的代码可以使用aop,达到重复复用的效果大大提高代码的可读性以及代码的健壮性,降低代码的耦合度。

2023-12-05 21:00:40 955 1

原创 SpringBootApplication注解保姆级带你如何应对面试官

在Java Spring Boot框架中,@SpringBootApplication注解是一个组合注解,它由以下三个注解组成:@SpringBootConfiguration,@EnableAutoConfiguration和@ComponentScan。这三个注解的加载顺序如下:@SpringBootConfiguration:这个注解用于标识该类是Spring Boot应用的配置类,它会被自动扫描并加载。通常,这个注解会放在主类上(即包含main方法的类)。

2023-12-04 18:03:18 1400 2

原创 HTTP1.1升级HTTP2.0

HTTP2.0相比于HTTP1.x有以下几个优点:二进制分帧:HTTP2.0将所有传输的信息分割为更小的消息和帧,并采用二进制格式对它们进行编码,这样可以更好地对数据进行压缩和解压缩,提高传输效率。多路复用:HTTP2.0可以在一个连接上同时传输多个请求和响应,而HTTP1.x需要多个连接才能实现并发传输,这样可以减少TCP连接的数量,提高性能。首部压缩:HTTP2.0使用HPACK算法对首部进行压缩,减少了首部的大小,提高了传输效率。

2023-11-20 10:44:03 385

原创 @Autowired和@Resource的区别

Autowired是Spring框架中的注解之一,用于自动装配(Autowired)依赖关系。在Java中,类与类之间常常存在依赖关系,而这些依赖关系需要通过实例化对象来进行连接。传统的方式是在代码中手动创建对象并进行依赖注入,但这种方式繁琐且容易出错。而使用@Autowired注解,可以由Spring框架自动扫描和装配相应的依赖关系,使得开发者无需手动管理对象的创建和注入。

2023-10-28 01:11:47 281

MySQL索引面试题+索引优化+索引失效

MySQL索引是数据库中用于提高查询效率的重要组成部分。在面试过程中,常常会涉及到MySQL索引的相关问题,包括索引的原理、优化技巧以及索引失效的原因等。 首先,MySQL索引是一种数据结构,用于快速定位和访问数据库中的数据。它通过创建索引列和索引对象来实现,可以加快WHERE子句中涉及索引的查询速度。 在进行索引优化时,有几个关键点需要注意。首先是选择合适的索引列,通常选择经常用于查询的列作为索引列,尽量避免使用长文本或二进制类型的列作为索引列。其次是合理设置索引的顺序,根据查询的频率和字段选择合适的索引顺序。此外,还可以考虑使用覆盖索引,即索引包含了查询所需的所有列,避免了回表操作。 索引失效可能是由于多种原因造成的。其中一个常见的原因是使用了函数或者表达式对索引列进行操作,例如使用了字符串函数或者使用了算术运算。此外,对索引列进行了隐式转换也可能导致索引失效。另外,索引失效还可能与查询的条件有关,例如在进行范围查询时,MySQL可能无法使用索引。 针对这些问题,可以通过优化查询语句来解决。避免对索引列进行函数操作或者表达式计算,尽量保持查询条件与索引列的数据类型一致。同时

2023-10-21

设计模式:单例设计模式(全部实现方式)工厂设计模式,抽象工厂模式

单例设计模式、工厂设计模式和抽象工厂模式是常见的软件开发设计模式。这些设计模式提供了一些有用的思想和实现方式,可以帮助开发人员在设计和实现复杂的软件系统时,更加灵活和高效地进行编程。 单例设计模式是一种创建型设计模式,它的主要目标是确保一个类在任何情况下都只有一个实例,并且提供全局访问点。这种模式在一些需要共享状态的场景下非常有用,比如数据库连接池等。单例模式有多种实现方式,其中比较常见的有饿汉式、懒汉式、双重检查锁定等。 工厂设计模式是一种创建型设计模式,它的主要目标是将对象的创建和使用分离,使得代码更具有可维护性和可扩展性。该模式通常会定义一个工厂接口或抽象类,由具体的工厂类实现该接口或抽象类来创建相应的产品。工厂模式的常见实现方式包括简单工厂、工厂方法、抽象工厂等。 抽象工厂模式是一种创建型设计模式,它的主要目标是提供一个接口或抽象类,用于创建一系列相关或依赖的对象。该模式的主要优点在于,它可以为客户端代码提供一个统一的接口,使得客户端无需关心具体实现细节。抽象工厂模式常用于开发复杂的软件系统,比如操作系统、数据库管理系统等。 总之,单例设计模式、工厂设计模式和抽象工厂模

2023-10-18

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

TA关注的人

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