JAVA及相关基础
文章平均质量分 94
JAVA及相关基础
大大应届生
这个作者很懒,什么都没留下…
展开
-
springboot篇(一)
Spring Profiles是Spring框架中的一个特性,它允许开发人员为不同的运行环境(例如开发、测试、生产等)定义不同的配置,并在运行时选择使用哪个配置。通过使用Spring Profiles,可以方便地管理不同环境下的配置,从而实现在不同环境中部署和运行应用程序。在Spring中,可以通过在配置类或配置文件上标注@Profile注解来定义不同的Profile。// 配置开发环境的相关bean// 配置生产环境的相关bean在上面的例子中,和是两个不同的配置类,分别用于开发环境和生产环境。原创 2023-07-28 11:33:42 · 374 阅读 · 1 评论 -
mybatis篇(一)
MyBatis是一种优秀的持久层框架,它是基于Java的持久化框架,用于简化数据库访问的开发。MyBatis允许开发人员使用简单的XML或注解来配置SQL映射,将Java对象与数据库中的数据进行映射,从而实现了对象关系映射(ORM)。原创 2023-07-28 11:32:59 · 208 阅读 · 1 评论 -
redis篇(一)
Cluster集群是Redis的一种高可用方案,用于将多个Redis节点组成一个分布式集群,实现数据的分片存储和负载均衡。在Cluster集群中,每个节点负责存储一部分数据,并通过哈希槽(hash slot)将数据均匀地分布到不同的节点上。这样,当有新的节点加入或者节点发生故障时,集群可以自动进行数据的迁移和重新分配,保证数据的可用性和一致性。分布式数据存储:Cluster集群将数据分片存储在多个节点上,实现数据的分布式存储和管理。自动数据迁移。原创 2023-07-28 11:33:24 · 102 阅读 · 1 评论 -
Java篇(六)
线程上下文切换(Thread Context Switching)是指在多线程环境下,操作系统将当前正在运行的线程的上下文(包括寄存器内容、程序计数器、栈指针等)保存起来,并将另一个处于等待状态的线程的上下文加载到CPU中,使其成为当前运行的线程的过程。在多线程环境中,当一个线程的时间片用完或者发生阻塞时,操作系统会进行线程上下文切换,切换到另一个就绪的线程继续执行。这个过程涉及到保存和恢复线程的上下文,包括保存线程的执行状态、寄存器值、栈指针等信息,并加载另一个线程的上下文。原创 2023-07-28 11:32:03 · 92 阅读 · 1 评论 -
Java篇(五)
在阿里巴巴Java开发手册中强制要求使用包装类型定义属性,主要是出于以下几个考虑:默认值问题:基本数据类型(如int、double、boolean等)在定义时会有默认值,例如int的默认值是0,boolean的默认值是false。在实际业务开发中,可能会遇到需要判断某个属性是否赋值的情况,此时如果使用基本数据类型,很难区分是属性未赋值还是赋值为默认值。而使用包装类型,则可以通过判断是否为null来区分属性是否赋值。数据库映射:在数据库操作中,有时会遇到将空值映射为数据库的NULL的情况。原创 2023-07-28 11:31:48 · 512 阅读 · 1 评论 -
Java篇(七)
死锁是指在多线程或多进程的并发环境中,两个或多个线程或进程因为争夺资源而发生互相等待的现象,导致它们都无法继续执行下去,进而陷入无限等待的状态,无法恢复,称为死锁。死锁通常发生在以下情况下:互斥:多个线程或进程同时拥有某个资源,并且该资源在同一时刻只能被一个线程或进程占用。请求与保持:一个线程或进程在持有某个资源的同时,又请求获取其他资源。不可剥夺:某些资源不能被其他线程或进程抢占,只能由持有它的线程或进程释放。原创 2023-07-28 11:31:29 · 60 阅读 · 1 评论 -
Java篇(四)
反射(Reflection)是Java语言的一种特性,它允许程序在运行时动态地获取类的信息(如类的属性、方法、构造函数等),并可以在运行时调用类的方法、创建对象等。反射使得程序可以在运行时操作类和对象,而不需要在编译时就确定类的信息。在Java中,反射是通过包提供的一组类和接口来实现的。主要涉及的类和接口包括Class类、Field类、Method类、类等。获取类的信息:可以获取类的属性、方法、构造函数等信息。创建对象:可以通过反射在运行时动态创建对象,而不需要在编译时确定对象的类型。原创 2023-07-27 22:26:14 · 50 阅读 · 1 评论 -
Java篇(三)
相比之下,传统的I/O(Input/Output)模型,每个连接都需要一个独立的线程来处理,当连接数增加时,线程数量也会增加,可能会导致线程资源的浪费和性能问题。假设有一个小快递员小明(Representing NIO,即New I/O)和一个大快递公司(Representing I/O,即传统的I/O)。一天,小明接到快递公司的任务,需要去派送10份快递到不同的地址。通过接口的方式,Java 实现了一种灵活的多继承机制,使得类可以在继承一个父类的同时,还能实现多个接口,从而实现了多继承的部分特性。原创 2023-07-27 22:12:37 · 50 阅读 · 1 评论 -
Java篇(二)
StringJoiner是Java 8中新增的一个用于拼接字符串的工具类。它可以方便地将多个字符串拼接成一个字符串,并且可以指定分隔符、前缀和后缀。构造方法StringJoiner(CharSequence delimiter):使用指定的分隔符创建一个StringJoiner对象,不指定前缀和后缀。原创 2023-07-27 21:57:50 · 122 阅读 · 1 评论 -
Java篇(一)
值传递和引用传递是两种参数传递方式,用于描述在函数调用时参数是如何传递给函数的。它们在编程语言中的实现方式不同,对于参数的传递和修改会产生不同的效果。值传递(Pass-by-Value)值传递是指将实际参数的值复制一份,然后传递给函数的形式参数。在函数内部,形式参数是实际参数的拷贝,对形式参数的修改不会影响到实际参数。当调用函数时,会创建一个新的变量来存储实际参数的值,并将该值传递给函数的形式参数。函数内部的操作只会对形式参数进行操作,不会对实际参数产生影响。原创 2023-07-27 18:40:43 · 85 阅读 · 1 评论 -
Mysql篇(八)
临时表是一种在数据库会话(Session)范围内存在的临时性表,它只在当前会话中可见,其他会话无法访问。临时表在数据库连接会话结束时自动销毁,不会永久保存在数据库中,因此用于临时存储和处理数据。临时表通常在以下情况下使用:复杂查询:当需要多次查询和处理数据时,可以将中间结果保存到临时表中,以便后续查询和分析。分步计算:在某些场景下,需要分步骤计算数据,临时表可以用于存储中间结果,方便逐步完成复杂的数据处理任务。原创 2023-07-27 17:39:27 · 256 阅读 · 1 评论 -
Mysql篇(七)
MySQL的GTID(Global Transaction ID)是一种用于在复制环境中唯一标识事务的方法。GTID为每个事务分配一个全局唯一的标识符,不依赖于复制环境的主机名或服务器ID,从而简化了在复制拓扑中处理数据复制和故障恢复的过程。GTID主要由以下两个部分组成:GTID域(GTID domain): GTID域是一个逻辑标识符,用于标记特定的MySQL复制拓扑。在MySQL复制拓扑中,每个MySQL实例都必须属于一个唯一的GTID域,确保全局事务ID的唯一性。原创 2023-07-27 17:27:30 · 85 阅读 · 1 评论 -
Mysql篇(六)
2 / 2在 MySQL 中,关联查询是指通过多个表之间的关联条件来联合查询数据的操作。MySQL支持多种关联查询方式,常见的有以下六种:内连接(INNER JOIN): 内连接是最常见的关联查询方式,它只返回满足连接条件的匹配行,即两个表中符合条件的交集。语法:SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;左连接(LEFT JOIN): 左连接返回左表中所有的行,以及右表中满足连接条件的匹配行。原创 2023-07-27 17:16:08 · 1922 阅读 · 1 评论 -
Mysql篇(五)
回表(Lookup)是数据库查询过程中的一种操作,当使用非聚集索引(或辅助索引)进行查询时,如果需要获取查询结果中的其他列数据时,就需要进行回表操作。回表指的是在使用索引进行查询后,数据库还需要根据索引中的指针或引用,再次访问数据表中的实际数据行,以获取其他列的数据。这是因为非聚集索引只包含部分数据的引用信息,而不是实际的数据内容。当数据库需要获取查询结果中的其他列数据时,必须通过回表操作到主表中查询对应的数据行。例如,假设有一个表user,包含列idname和age。如果在name。原创 2023-07-27 16:54:43 · 221 阅读 · 1 评论 -
Mysql篇(四)
死锁是指在多个事务并发执行的情况下,每个事务都持有其他事务需要的资源,并且都在等待其他事务释放它所需要的资源,从而导致所有事务无法继续执行,形成了一个循环等待的状态。在死锁状态下,没有任何一个事务能够继续执行,除非通过外部干预来打破死锁循环。死锁通常发生在多个事务同时持有并尝试获取其他事务所持有的资源时。当一个事务在执行过程中需要获取额外的资源,但该资源已经被其他事务锁定时,它会暂停执行,等待其他事务释放该资源。而同时,其他事务也在等待当前事务持有的资源被释放。这样就形成了一个相互等待对方资源的死锁状态。原创 2023-07-27 16:45:36 · 485 阅读 · 1 评论 -
Mysql篇(三)
分区表(Partitioned Table)是一种数据库表的组织方式,它将一个大型的数据库表按照一定的规则(如范围、哈希、列表等)分割成多个逻辑分区,每个分区实际上存储在不同的物理存储空间上。分区表的目的是提高数据库的性能和管理大量数据的效率。分区表的分区方式可以根据具体的业务需求和数据特点来选择,常见的分区方式有以下几种:范围分区(Range Partitioning): 根据某个字段的范围值将数据行分配到不同的分区。例如,可以根据时间字段将数据分区为每个月、每个季度或每年一分区。原创 2023-07-27 00:51:26 · 383 阅读 · 1 评论 -
Mysql篇(二)
最左匹配原则是指在数据库中使用复合索引时,索引可以有效支持由左至右的列顺序进行匹配查询的规则。具体来说,当一个复合索引包含多个列,并且查询条件中涉及到这些列的一个或多个时,数据库查询优化器将会利用索引中的前缀来加快查询。使用了索引的最左边的列,例如查询条件包含列 A。使用了索引的最左边的连续多个列,例如查询条件包含列 A 和 B,或者 A、B、C。但是,当查询条件没有使用索引的最左边的列,即出现跳过索引中的某些列进行匹配时,最左匹配原则将不再适用。原创 2023-07-26 17:34:32 · 73 阅读 · 0 评论 -
Mysql篇(一)
MVCC(Multi-Version Concurrency Control)是一种用于处理并发访问的数据库管理系统的技术。它主要用于支持事务并发执行,以提高数据库的性能和数据一致性。MVCC在许多现代数据库管理系统中都有广泛应用,其中包括MySQL的InnoDB存储引擎。MVCC的主要思想是在读取和写入数据时,为每个事务创建数据的多个版本,以便不同事务之间不会相互干扰或冲突。通过为每个事务提供自己的数据版本,MVCC能够实现更高的并发性能,同时保持数据的一致性和隔离性。原创 2023-07-25 21:37:39 · 100 阅读 · 1 评论 -
JVM篇(二)
在 Java 虚拟机中,不同的垃圾回收器有不同的内存分配策略。以下是三种常见的垃圾回收器的内存分配策略:Serial 收集器:Serial 收集器是一种单线程的垃圾回收器,主要用于新生代的垃圾回收。它使用复制算法来回收新生代的对象。内存分配策略为:当对象在 Eden 区分配时,Serial 收集器将对象连续分配在 Eden 区的起始地址,并且在分配完成后将 Eden 区的指针移到下一个可用空间。Parallel 收集器:Parallel 收集器是一种多线程的垃圾回收器,主要用于新生代和老年代的垃圾回收。原创 2023-07-28 11:32:37 · 37 阅读 · 1 评论 -
JVM篇(一)
JVM(Java Virtual Machine)运行时数据区是用于管理 Java 程序运行过程中的内存结构,主要包括以下几个部分:程序计数器(Program Counter Register):每个线程都有一个程序计数器,用于记录当前线程执行的字节码指令的地址。在线程切换时,程序计数器的值会被保存和恢复,用于指示线程下一条要执行的指令。Java 虚拟机栈(Java Virtual Machine Stacks):每个线程在运行时都有一个私有的 Java 虚拟机栈,用于保存方法的栈帧。原创 2023-07-28 11:32:24 · 43 阅读 · 1 评论 -
Linux篇(一)
交换空间(Swap Space)是计算机内存管理的一种机制,用于增加系统的虚拟内存。当系统的物理内存(RAM)不足时,交换空间可以充当额外的虚拟内存,以便继续运行需要更多内存的进程和应用程序。在Linux和类Unix系统中,交换空间是一个特殊的磁盘分区或者是一个专门的交换文件,用于存放被暂时不活跃的进程或内存页面。当物理内存不足时,操作系统会将一部分不经常使用的数据和进程页面从内存中移动到交换空间中,从而释放出更多的物理内存给活跃的进程使用。原创 2023-07-28 11:33:58 · 57 阅读 · 0 评论 -
springcloud篇(一)
网关(Gateway)是一个用于转发请求的服务器,它是客户端和后端服务之间的中间层。网关的主要作用是在微服务架构中统一处理请求、路由请求和协调服务。网关的作用包括:路由转发:网关根据请求的URL路径将请求转发给相应的后端服务。通过路由转发,可以实现请求的负载均衡和动态路由。服务聚合:当一个页面需要多个服务的数据时,网关可以将多个服务的请求聚合为一个请求,然后将聚合后的请求发送给后端服务,减少客户端的请求数量。原创 2023-07-28 11:34:12 · 95 阅读 · 0 评论