- 博客(91)
- 问答 (5)
- 收藏
- 关注
原创 23 种设计模式详解(3.7万字带你了解设计模式)
设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
2024-04-10 08:45:00 739
原创 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
原创 单一职责原则
单一职责原则(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 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入门 第五篇 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索引面试题+索引优化+索引失效
2023-10-21
设计模式:单例设计模式(全部实现方式)工厂设计模式,抽象工厂模式
2023-10-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人