自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(92)
  • 收藏
  • 关注

原创 springboot如何使用RedisTemplate

max-wait: 100ms # 连接池最大阻塞等待时间(使用负值表示没有限制)max-active: 8 # 连接池最大连接数(使用负值表示没有限制)password: 123456 #如果没有密码,可以不写这一行。max-idle: 8 # 连接池中的最大空闲连接。min-idle: 0 # 连接池中的最小空闲连接。--common-pool,用来配置redis连接池-->host: 127.0.0.1 #ip地址。port: 6379 #端口号。--reids依赖--># 配置连接池信息。

2024-04-26 18:24:00 114 1

原创 Java虚拟机(jvm)常见问题总结

虚拟机核心的组件就是执行引擎,它负责执行虚拟机的字节码,一般户先进行编译成机器码后执 行。“虚拟机”是一个相对于“物理机”的概念,虚拟机的字节码是不能直接在物理机上运行的,需要JVM 字节码执行引擎- 编译成机器码后才可在物理机上执行。

2024-04-25 22:32:04 893

转载 并发执行和串行执行详细总结

在多线程编程中一般线程的个数都大于cpu的核心数,而一个cpu核心在任意时刻都只能被一个线程使用,CPU通过时间片分配算法来循环执行线程,当前线程执行完一个时间片后会切换到下一个线程。但是,在切换前会需要保存上一个线程的状态,以便下次切换回这个线程时,可以再加载这个线程的状态。所以线程从保存到再加载的过程就是一次上下文切换。CPU分配给各个线程的时间非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行的,时间片一般是几到几十毫秒(ms)。

2024-04-25 09:55:17 14

原创 java中的代理方法

Java中常见的代理方法主要有两种:静态代理和动态代理。

2024-04-23 23:29:56 270

原创 Java虚拟机类加载机制详细总结

的阶段,从概念上讲,这些变量所使用的内存都应当在方法区中进行分配,但必须注意到方法区本身是一个逻辑上的区域,在JDK 7及之前,HotSpot使用。

2024-04-23 23:28:52 762 1

原创 Java虚拟机垃圾收集器详细总结

Serial收集器是最基础、历史最悠久的收集器,曾经(在JDK 1.3.1之前)是HotSpot虚拟机新生代收集器的唯一选择。这个收集器是一个,但它的“单线 程”的意义并不仅仅是说明它只会使用一个处理器或一条收集线程去完成垃圾收集工作,更重要的是强 调在它进行垃圾收集时,必须暂停其他所有工作线程,直到它收集结束。

2024-04-22 23:33:52 1219 1

原创 Java虚拟机OutOfMemoryError异常:堆、栈、方法区、直接内存等

结果:抛出StackOverflowError异常,异常出现时输出的堆栈深度相应缩小。

2024-04-22 10:47:55 940

原创 Java虚拟机之对象的创建、内存布局及访问

Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面 上,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象的创建又是怎样一个过程呢?当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那 必须先执行相应的类加载过程。在类加载检查通过后,接下来虚拟机将为新生对象分配内存。

2024-04-21 16:40:56 861

原创 MySQL数据库主从复制

主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制,从库同时也可以作为其他从服务器上的主库,实现链状复制。MySQL复制的优点主要包含以下三个方面:主库出现问题,可以快速切换到从库提供服务。实现读写分离,降低主库的访问压力可以在从库中执行备份,以便面备份期间影响主库服务。

2024-04-18 17:15:38 381

原创 MySQL中InnoDB存储引擎详细介绍

InnoDB是一种兼顾高可靠性高和高性能的通用存储引擎,在MySQL5.5之后,InnoDB是默认的MySQL存储引擎。xxx.ibd:xxx代表的是表名,innoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构、数据和索引。

2024-04-18 15:28:48 1040

原创 JVM垃圾回收与算法

在 Java 中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单 的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关 联的引用,即他们的引用计数都不为0,则说明对象不太可能再被用到,那么这个对象就是可回收 对象。

2024-04-17 22:17:44 917

原创 JUC并发编程问题相关总结(二)

简单说一下AQS,AQS全称为AbstractQueuedSychronizer,翻译过来应该是抽象队列同步器。如果说java.util.concurrent的基础是CAS的话,那么AQS就是整个Java并发包的核心了, ReentrantLock、CountDownLatch、Semaphore等等都用到了它。

2024-04-16 23:17:28 867

原创 JUC并发编程问题相关总结(一)

线程安全就是说多线程访问同一段代码,不会产生不确定的结果。如果你的代码 在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。这个问题有值得一提的地方,就是线程安全也是有几个级别的:这个问题有值得一提的地方,就是线程安全也是有几个级别的:(1)不可变像String、Integer、Long这些,都是final类型的类,任何一个线程都改变不了它们的值,要改变除 非新创建一个,因此这些不可变对象不需要任何同步手段就可以直接在多线程环境下使用(2)绝对线程安全。

2024-04-16 22:10:59 750

原创 MySQL之锁:全局锁、表级锁、行级锁详细总结

锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用外,数据也是一种供多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。

2024-04-15 15:30:12 970

原创 MySQL之sql优化:intsert、主键、order by、group by等

大批量插入数据如果一次性需要插入大批量地数据,使用insert语句插入性能较低,此时使用MySQL数据库提供地load指令进行插入下图第三条语句表示讲/root/sql.log通过load插入到表tb_user中,每个字段用‘,’分割,每行数据用‘\n’分割。

2024-04-14 20:47:29 655

原创 MySQL之索引失效、覆盖、前缀索引及单列、联合索引详细总结

如果索引了多列(联合索引),要遵守最左前缀法则,最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将部分失效(后面的字段索引失效)。联合索引中,出现范围查询(>,=,

2024-04-13 16:45:37 786 1

原创 MySQL之sql性能分析

MySQL客户端连接成功后,通过show[session|global]status命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的所有INSERT、DELETE、UPDATE、SELECT的访问频次。

2024-04-12 11:58:58 1013

原创 MySQL之约束详细总结

类似于 RESTRICT,但是在约束动作上没有实际行为。约束是作用于表中字段上的规则,用于限制存储在表中的数据。保证数据库中数据的正确性、有效性和完整性。

2024-04-10 23:14:28 995

原创 MySQL之函数:字符串函数、日期函数、数值函数、流程函数

用于将多个字符串连接成一个字符串。用于截取字符串的子串。包前不包后,从1开始和用于将字符串转换为大写和小写。用于返回字符串的长度。用于去除字符串两侧的空格或指定字符。用于替换字符串中的指定子串。和用于从字符串的左边或右边截取指定长度的子串用于查找子串在字符串中的位置。用于查找子串在字符串中的位置,类似于INSTR函数。用于将字符串反转。用于将多个字符串使用指定分隔符连接成一个字符串。和用于在字符串左边或右边填充指定字符,使字符串达到指定长度。用于返回字符的ASCII码值;用于根据ASCII码值返回字符。

2024-04-09 22:55:56 1413

原创 TCP协议简单总结

TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接。TCP的最终目的:要保证在不可靠的信道上实现可靠的传输。建立连接后会建立可靠的通信管道。特点:面向连接、可靠通信。三次握手建立可靠连接。TCP:传输控制协议。

2024-04-09 14:40:29 1008

原创 UDP简单总结

然后,我们创建了两个发送者线程,并将它们分别启动。然后,我们准备了要发送的消息字符串,并将其转换为字节数组。接着,我们获取了接收者的地址(本地主机)和端口号(8081),并创建了一个。最后,我们从接收的数据报包中获取消息字符串,并在控制台打印接收到的消息。不事先建立连接,数据按照包发,一包数据包含:自己的IP、程序端口、目的地IP、程序端口和数据(限制在64KB内)我们发送了数据报包,并在控制台打印了发送的消息。发送方不管对方是否在线,数据在中间丢失也不管,如果接收方收到数据也不返回确认,故不可靠。

2024-04-09 13:06:39 700

原创 网络通信三要素:IP、端口和协议

IPv4:32位IPv6:共128位。分成8段表示,每取四位编码成一个16进制位表示,数之间用:隔开:是可以连接互联网的IP地址;也叫局域网IP,只能组织机构内部使用。192.168是常见的局域网地址,范围为192.168.0.0--192.168.255.255ipconfig:查看本机IP地址ping IP地址(域名):检查网络是否连通:通过主机名或IP地址字符串获取对象。:获取本地主机的对象。:获取主机名。:获取IP地址字符串:获取主机的规范化名称。

2024-04-08 22:58:49 1461

原创 Java之BigDecimal讲解

第一步:先转换成字符串再封装成BigDecimal对象运算。第三步:将BigDecimal转成double类型。以上便是BigBecimal的使用。下面再来讲解BigDecimal。

2024-04-08 18:08:21 372

原创 Java之泛型详细总结

定义类、接口、方法,同时声明了一个或多个类型变量(如:<E>),称为泛型类、泛型接口,泛型方法,它们统称为泛型。泛型提供了在编译阶段约束所能操作的数据类型,并自动进行检查的能力。这样可以避免强制类型转换,及可能出现的异常。

2024-04-08 15:37:43 493

原创 Java之枚举详细总结

枚举类的第一行只能罗列一些名称,这些名称都是常量,并且每个常量记住的都是枚举类的一个对象。枚举类中的第一行,只能写一些合法的标识符(名称),多个名称用逗号隔开。这些名称,本质是常量,每个常量都会记住枚举类的一个对象。枚举类的构造器都是私有的,枚举类对外不能创建对象。枚举类中,从第二行开始,可以定义其他的各种成员。枚举类是最终类,不可以被继承。

2024-04-08 14:49:27 210

原创 Java之final、常量的详细总结

【代码】Java之final、常量的详细总结。

2024-04-07 23:09:43 251

原创 spring之AOP(面向切面编程)之详结

AOP面向切面编程,一种编程范式,指导开发者如何组织程序结构在不惊动原始设计的基础上为其进行功能增强。

2024-04-06 22:00:03 1350

原创 java之static详细总结

static也叫静态,可以修饰成员变量、成员方法。

2024-04-06 15:09:35 1127

原创 Redis持久化方式之快照和只追加文件

很多时候我们需要持久化数据也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后回复数据),或者是为了防止系统故障而将数据备份到一个远程位置。Redis的一种持久化方式叫,另一种方式是。

2024-04-05 14:04:12 631

原创 Redis缓存穿透和缓存雪崩

缓存穿透说简单点就是大量请求的 key 根本不存在于缓存中,导致请求直接到了数据库上,根本没有经过缓存这一层。举个例子:某个黑客故意制造我们缓存中不存在的 key 发起大量请求,导致大量请求落到数据库。缓存在同一时间大面积的失效,后面的请求都直接落到了数据库上,造成数据库短时间内承受大量请求。这就好比雪崩一样,摧枯拉朽之势,数据库的压力可想而知,可能直接就被这么多请求弄宕机了。举个例子:系统的缓存模块出了问题比如宕机导致不可用。造成系统的所有访问,都要走数据库。

2024-04-05 13:45:52 703

原创 sql语句如何在MySQL中执行?

连接器主要和身份认证和权限相关的功能相关,就好比一个级别很高的门卫一样。主要负责用户登录数据库,进行用户的身份认证,包括校验账户密码,权限等操作,如果用户账户密码已通过,连接器会到权限表中查询该用户的所有权限,之后在这个连接里的权限逻辑判断都是会依赖此时读取到的权限数据,也就是说,后续只要这个连接不断开,即时管理员修改了该用户的权限,该用户也是不受影响的。

2024-04-04 12:01:33 786

原创 Java并发进阶之synchronized、volatile和线程池详细解释

通常情况下,我们创建的变量是可以被任何一个线程访问并修改的。如果想实现每一个线程都有自己的专属本地变量该如何解决呢?JDK 中提供的类正是为了解决这样的问题。类主要解决的就是让每个线程绑定自己的值,可以将类形象的比喻成存放数据的盒子,盒子中可以存储每个线程的私有数据。如果你创建了一个变量,那么访问这个变量的每个线程都会有这个变量的本地副本,这也是变量名的由来。他们可以使用get()和set()方法来获取默认值或将其值更改为当前线程所存的副本的值,从而避免了线程安全问题。

2024-04-04 10:02:25 995

原创 Java并发编程基础面试题详细总结

进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。如下图所示,在 windows 中通过查看任务管理器的方式,我们就可以清楚看到 window 当前运行的进程(.exe 文件的运行)。

2024-04-03 23:29:25 1152

原创 MVCC详细总结

MVCC(Multi-Version Concurrency Control)是一种多版本并发控制机制,主要用于数据库管理系统中,实现对数据库的并发访问。在编程语言中,MVCC可以实现事务内存。MVCC的特点是读不加锁,读写不冲突。MVCC将读操作分为快照读和当前读。快照读读取的是记录的可见版本,不需要加锁。当前读读取的是记录的最新版本,并对当前读返回的记录加锁,以保证其他事务不会并发修改该记录。

2024-04-03 21:57:42 1245

原创 MySQL之索引详细总结

索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查法,这种数据结构就是索引。

2024-04-02 22:24:53 970

原创 MySQL之事务相关详细总结

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。

2024-04-01 23:20:49 984

原创 MySQL之存储引擎,详细总结

存储引擎就是存储数据、建立索引、更新/查询数据等技术实现方式,存储引擎是基于表的,而不是基于库的所以存储引擎,也可以被称为表类型。

2024-04-01 22:17:07 1175 1

原创 Java线程池详细解释

Java线程池是一种管理和重用线程的机制,它可以帮助提高多线程应用程序的性能和稳定性。线程池在程序启动时创建一组线程,并根据需要重用这些线程,而不是每次需要执行任务时都创建新线程。当线程池已经达到最大线程数并且任务队列已满时,决定如何处理新任务的策略。通过使用线程池,我们可以高效地管理和重用线程,从而提高程序的性能和稳定性。线程池中允许的最大线程数。当任务队列已满且当前线程数小于最大线程数时,线程池会创建新线程来处理任务。当线程池中的线程数达到核心线程数时,新任务会被放入任务队列中等待执行。

2024-03-31 17:25:52 394

原创 Mybatis相关面试题详细总结

MyBatis的逆向工程(Reverse Engineering)是一种自动生成持久化层代码的技术,可以根据数据库表自动生成实体类、Mapper接口和XML映射文件,减少了手动编写重复代码的工作量,提高了开发效率。通过使用if、choose、foreach等标签,可以在XML文件中编写灵活的SQL语句,根据不同的条件生成不同的SQL片段,从而实现动态的数据库操作。MyBatis是一种开源的Java持久化框架,它通过XML或注解方式将对象与数据库表进行映射,提供了简单而强大的数据库访问功能。

2024-03-30 23:47:47 658

原创 Maven:构建现代化软件项目的强大工具

Maven 是一个基于项目对象模型(POM)的构建工具,它的主要目标是提供一种一致的、可重复的方式来构建、测试和部署软件项目。Maven的中央仓库(Central Repository)是Maven项目的默认仓库,也是最常用的仓库之一。1. 依赖管理:Maven 使得管理项目的依赖变得简单,它通过 Maven 仓库来自动下载和管理项目所需的依赖。- Maven 的生态系统:概述 Maven 周围的生态系统,如 Nexus 仓库、CI/CD 工具等,以及它们之间的集成。

2024-03-29 23:52:42 849

空空如也

空空如也

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

TA关注的人

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