自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JavaSE知识点梳理

首先,您需要定义一个新的类,并使其继承自Exception或其子类。如果您想要创建的是一个非检查型异常(unchecked exception),那么应该继承自RuntimeException。其次可以在自定义异常类中添加更多的属性和方法,以便在抛出异常时提供更多的上下文信息。SQL 注入(SQL Injection)是一种常见的网络安全攻击技术,攻击者通过在应用程序的输入字段中插入恶意的 SQL 代码,从而操纵后端数据库的查询逻辑。

2025-03-27 15:32:22 464

原创 Redis 知识点梳理

NoSQL最常见的解释是"non-relational", 很多人也说它是"Not Only SQL"NoSQL仅仅是一个概念,泛指非关系型的数据库区别于关系数据库,它们不保证关系数据的ACID特性NoSQL是一项全新的数据库革命性运动,提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入Redis是当前比较热门的NoSQL系统之一它是一个开源的、使用ANSI C语言编写的key-value存储系统(区别于MySQL的二维表格形式存储)

2025-03-22 17:35:50 1184

原创 JVM 知识点梳理

在classpath下,要加载一个 java.lang.Integer 类的请求,通过双亲委派机制委派的启动类加载器,发现存在Integer类直接返回,不会重新加载传递的过来的Integer类,只会加载JAVA_HOME中的jar包里面的类,可以防止核心API被随意篡改。当一个类加载器收到了类加载的请求的时候,他不会直接去加载指定的类,而是把这个请求委托给自己的父加载器去加载。当快满的时候,将标记出来的存活的对象复制到另一块内存区域中,然后对整个之前的空间进行垃圾回收,将未复制的垃圾对象清理掉。

2025-03-21 23:59:37 1159

原创 MySQL 索引下推

索引下推(Index Condition Pushdown,简称 ICP) 是 MySQL 5.6 版本中提供的一项索引优化功能,它允许存储引擎在索引遍历过程中,执行部分 WHERE字句的判断条件,直接过滤掉不满足条件的记录,从而减少回表次数,提高查询效率。

2025-03-21 15:03:57 971

原创 Spring 事务注解原理

隔离级别(Isolation):与数据库隔离级别一致,默认为Default,直接使用数据库的隔离级别。注意:如果Spring的隔离级别与MySQL不一致,则以Spring为准。回滚处理(RollbackFor):控制事务什么时候回滚,如果不配置,默认在遇到RuntimeException和Error时才回滚。在try块中代理对象调用了增强方法,catch块中对异常情况进行回滚处理,finally块中清理本次事务的信息。

2025-03-20 15:14:58 629

原创 Spring-循环依赖问题

Spring是如何解决Bean的循环依赖?采用三级缓存解决的就是三个Map//一级缓存//二级缓存//三级缓存流程总结先实例A对象,同时会创建ObjectFactory对象存入三级缓存singletonFactoriesA在初始化的时候需要B对象,这个走B的创建的逻辑B实例化完成,也会创建ObjectFactory对象存入三级缓存singletonFactoriesB需要注入A,通过三级缓存中获取ObjectFactory来生成一个A的对象同时存入二级缓存,

2025-03-20 13:24:43 856

原创 JVM垃圾回收

在java8时,堆被分为了两份:新生代和老年代【1:2】,在java7时,还存在一个永久代。对于新生代,内部又被分为了三个区域。Eden区,S0区,S1区【8:1:1】当对新生代产生GC:MinorGC【young GC】当对老年代代产生GC:Major GC当对新生代和老年代产生FullGC: 新生代 + 老年代完整垃圾回收,暂停时间长,应尽力避免!应用于新生代和老年代,在JDK9之后默认使用 G1。

2025-03-19 14:50:14 885

原创 Redis缓存与数据库 数据一致性保障

无需引入中间件实现简单,代码改动小延迟时间不好控制极端情况会出现数据不一致。

2025-03-19 14:14:16 1148

原创 MySQL-深分页问题的背景和影响

MySQL 作为最受欢迎的开源关系数据库之一,被广泛用于各种规模的应用程序中。随着数据量的不断增长,高效地处理大量数据成为数据库管理的重要挑战之一。分页是一种常见的数据检索技术,它允许用户在大量数据中浏览和检索信息,而不必一次性加载所有数据。这对于提高用户体验和减少服务器负载至关重要。然而,当涉及到“深分页”时,即查询大量数据后的页面时,MySQL的性能可能会显著下降。深分页的影响响应时间增加:随着分页深度的增加,查询所需的时间也会增加,导致用户体验下降。

2025-03-14 14:24:51 1130

原创 Redis-缓存穿透&击穿&雪崩

向布隆过滤器询问 key 是否存在时,跟 add 一样,也会把 hash 的几个位置都算出来,看看位数组中这几个位置是否都为 1,只要有一个位为 0,那么说明布隆过滤器中这个key 不存在。对于恶意攻击,向服务器请求大量不存在的数据造成的缓存穿透,还可以用布隆过滤器先做一次过滤,对于不存在的数据,布隆过滤器一般都能够过滤掉,不让请求再往后端发送。当它说不存在时,那就肯定不存在。缓存击穿中,请求的 key 对应的是热点数据 ,该数据存在于数据库中,但不存在于缓存中(通常是因为缓存中的那份数据已经过期)。

2025-03-11 13:38:31 873

原创 Redis分布式锁

下面这段代码在多线程下存在线程安全问题!超卖的主要原因是下面的步骤不是原子性的。==> 单机情况下,可以加锁(synchronized | ReentrantLock)解决这个线程安全问题。但是在分布式场景下,必须使用分布式锁解决这个问题。

2025-03-11 13:24:29 608

原创 Java代码:实现浪漫烟花效果(代码礼物/生日)

【代码】Java代码:实现浪漫烟花效果(代码礼物)

2025-03-10 17:54:35 156

原创 MySQL默认隔离级别是RR(可重复读),为什么大多企业改为RC(读已提交)?

本文介绍了一些 MySQL数据库的 RR 和 RC 两种事务隔离级别。他们主要在加锁机制、主从同步以及快照方面存在一些差异。而很多大厂,为了提升并发度和降低死锁发生的概率,会把数据库的隔离级别从默认的 RR 调整成 RC。当然,这样做也不是完全没有问题,首先使用 RC 之后,就需要自己解决幻读的问题,这个其实还好,很多时候幻读问题其实是可以忽略的,或者可以用其他手段解决。所有的技术方案的选择,都是一种权衡的艺术!

2025-03-10 17:47:16 1023

原创 Redis-限流方案

限流就是在高并发场景下,通过限制系统处理请求的速率,迅速拒绝超过设定上限的请求(最大的QPS),从而保证系统正常运行。在限流技术中,主要是有两个注意点:当前系统请求的阈值和拒绝策略。请求的阈值:阈值就是单位时间内允许请求的最大请求数。例如,将QPS(Queries Per Second)设置为1000,表明1s内最多接受1000个请求。通过设置适当的阈值,可以有效控制系统负载,避免系统请求过多而崩溃。(阈值是上线前通过压测或者评估得出的指标)

2025-03-07 16:44:54 1185

原创 微服务架构概述Spring Cloud Alibaba

针对微服务系统架构所存在的问题,肯定是需要有具体的技术来解决,而所使用到的技术就是Spring Clouad Alibaba。那么想要了解Spring Clouad Alibaba,那么就需要先了解一下Spring Cloud。1、Spring Cloud 是一系列框架的有序集合。在Spring Cloud这个项目中包含了很多的组件【子框架】,每一个组件都是用来解决问题系统架构中所遇到的问题,因此Spring Cloud可以看做是一套微服务的解决方案。

2025-03-07 16:29:44 887

原创 JUC-AQS详解

AQS的全称是AbstractQueuedSynchronizer,翻译过来就是抽象队列同步器。这个类是在包下面。AQS就是一个抽象类,是用来构建锁和同步器的一个底层。AQS底层构建锁和同步器提供了一个通用的功能的实现,因此使用AQS可以构建出应用广泛的同步器,比如我们常见的等等都是基于AQS的。

2025-03-04 14:46:35 900

原创 MySQL知识点梳理

为什么要分库分表分区?分库:主要解决的是并发量大的问题,数据库的连接数是有限的,当QPS过高导致数据库连接数不足,可以考虑分库分表:主要解决的是数据量大的问题,单表数据量大导致查询和存储的性能太低,一般超过500W行或者2GB考虑分表分区:数据量变大时,先考虑分区再考虑分表innodb中表存储主要依赖两个文件,一个是.frm,存储表结构,一个是.ibd,存储表数据innodb会将每个分区存储在不同的.ibd文件里表面看还是一张表,只不过数据存储在不同的位置(同一个.frm文件)

2025-03-04 14:23:36 771

原创 单例模式为什么会引发空指针异常?

这个版本在getConnection方法增加了同步关键字,可以正确处理同步问题,程序执行正确符合预期,但是将同步关键词加在方法上锁粒度较大,可能会影响性能。我们将b变量声明为Volatile,那么在为b赋值即Volatile写前后会加上如下屏障,从而保证了语句1和语句2执行顺序不会重排。语句3依赖语句1,语句4依赖语句2,所以语句3和语句4不会第一个执行。这就引出我们下一个话题:指令重排。这样说有一些抽象,我们结合代码进行分析,还是使用上文代码实例,只是不同的是这一次我们新增了Volatile关键字。

2025-02-28 14:24:49 1007

原创 达梦数据库

达梦数据库语法大全

2024-05-06 15:19:20 5957

原创 Java正则表达式

"正则表达式"属于,一般情况下用不到,如果会用,就会感叹它在文本处理方面的强大能力!正则表达式并不难,主要是知识点太多,一不经常使用就会忘,正好我想可以把它作为笔记记录先来,以后用到的时候直接翻看笔记就行了,省去了在网上频繁查找的麻烦!笔记以后还会补充,希望对大家理解“正则表达式”有帮助!

2024-02-27 14:26:03 950

原创 函数式编程-Stream 流

Lambda是 JDK8 中一个语法糖。可以看成是一种语法糖,他可以从对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式操作。可以更方便的对集合或数组操作。我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。if(author!= null) {尤其是对象中的属性还是一个对象的情况下。

2024-01-08 15:05:03 920 1

原创 Java温故而知新

什么是死锁?所谓死锁是一组互相竞争资源的线程因为互相等待造成“永久”阻塞的现象发生锁的原因:互斥条件。共享资源x、y只能被一个线程占用占有且等待。线程t1已经取得了共享资源x,在等待共享资源y的时候,不释放共享资源x不可抢占。其他线程不可强行去抢占线程t1占有的资源循环等待。线程t1等待线程t2占有的资源,线程t2等待线程t1占有的资源如何避免死锁(从上面4个原因入手)

2023-10-26 03:31:11 101

原创 【问题梳理】

难点:设备的命令的不确定性;设备的不稳定性。比如开门不发指令,心跳的自我保护机制难点:设备的一些网络状态、命令的不稳定性。

2023-06-01 20:17:36 126

原创 Kafka 科普

kafka介绍Kafka 是一个分布式流媒体平台,类似于消息队列或企业消息传递系统。kafka介绍-名词解释:发布消息的对象称之为主题生产者(Kafka topic producer):Kafka将消息分门别类,每一类的消息称之为一个主题(Topic):订阅消息并处理发布的消息的对象称之为主题消费者(consumers):已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker)。

2022-12-21 16:47:06 168

原创 分布式缓存【Redis集群】

分布式缓存,基于Redis集群解决单机Redis存在的问题。

2022-12-10 10:51:45 233

原创 分布式事务【基于Seata】

分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务

2022-12-10 07:27:33 155

原创 定时任务 科普

在实际项目开发中,除了Web应用、SOA服务外,还有一类不可缺少的,那就是定时任务调度。那究竟何为定时任务调度,一句话概括就是:基于给定的时间点、给定的时间间隔、自动执行的任务。

2022-12-10 03:24:45 181

原创 Nginx 科普

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx的网站有:百度、京东、新浪、网易、腾讯、淘宝等。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。Nginx可以作为静态web服务器来部署静态资源。

2022-11-26 19:15:55 378

原创 Spring Cache

是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就是通过接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口。描述使用EhCache作为缓存技术使用Google的GuavaCache作为缓存技术使用Redis作为缓存技术。

2022-11-26 04:06:53 506

原创 Redis基础

Redis是一个基于内存的key-value结构数据库。Redis是互联网技术领域使用最为广泛的存储中间件,它是「RemoteDictionaryService」的首字母缩写,也就是「远程字典服务」。基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛。

2022-11-24 06:19:44 114

原创 【Linux】打包压缩命令

【Linux】打包压缩命令。

2022-11-22 20:16:24 3104

原创 HashMap实现原理【集合】

Map存储双列数据,存储型的数据,类似于函数 y = f(x)HashMap是Map的实现类,LinkedHashMap是HashMap的子类。

2022-11-17 19:13:49 214

原创 【多线程】知识问答

目前主流操作系统都是多任务的,即多个进程同时运行。为了保证安全,每个进程只能访问分配给自己的内存空间,而不能访问别的进程的,这是由操作系统保障的。在每个进程的内存空间中都会有一块特殊的公共区域,通常称为堆(内存)。进程内的所有线程都可以访问到该区域,这就是造成问题的潜在原因。

2022-11-16 17:40:24 153

原创 【JVM】问答梳理

Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟 的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为> 特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展名为.class的文件),它不面向任何特定的处理器,只面向虚拟机。每一种平台的解释器是不同的,但是实现的虚拟机是相同的。

2022-11-16 17:29:47 281

原创 【Java基础】问答

面向过程:更注重步骤与程序面向对象:更注重有哪些参与者(对象),及各自要做什么面向过程比较直接高效,面向对象更易于复用、拓展和维护;hashCode()的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。hashCode()定义在JDK的Object.java中, Java中的任何类都包含有hashCode()函数。散列表存储的是键值对(key-value),它的特点是:能根据"键"快速的检索出对应的“值"。这其中就利用到了散列码!

2022-11-16 17:20:48 250

原创 分布式缓存 科普

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文件,默认是保存在当前运行目录

2022-11-16 17:15:32 131

原创 数据库索引 科普

MySQL官方对索引的定义为 :索引(Index)是帮助MySQL高效获聊数据的数据结构。索引的本质: 索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法。索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相同,并且每种存储引擎不一定支持所有索引类型。同时,存储引擎可以定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。

2022-11-14 20:06:18 1957 1

原创 Java8新特性 (jdk1.8)

Java 8(又称为jdk 1.8)是Java语言开发的一个主要版本。Java 8是oracle公司于2014年3月发布,可以看成是自Java5以来最具革命性的版本。Java 8为Java语言、编译器、类库、开发工具与JVM带来了大量新特性。

2022-11-14 19:45:06 4101

原创 设计模式 科普

设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免去我们自己再思考和摸索。”套路”。

2022-11-14 19:25:10 66

原创 动态代理(反射的应用)

使用一个代理将对象包装起来,然后用该代理对象取代原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。

2022-11-14 19:14:41 108

空空如也

空空如也

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

TA关注的人

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