自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Vue3项目Failed to resolve component: router-view

在对应的路由配置文件中,看是否加了export default router,将router暴露出来即可。

2024-06-14 13:59:05 239

原创 RPC和HTTP的区别

在微服务架构里,我们去实现微服务之间的通信时,可以直接使用RPC框架,也可以直接去使用基于HTTP协议的Restful接口;HTTP底层采用的是TCP协议传输,而在TCP上自己定义了通信报文的规范,我们可以用HTTP协议来实现跨网络节点的数据传输;RPC协议并不是一个通信协议,HTTP才是通信协议,而RPC定义的是一个远程过程调用协议,他要依赖于一些成熟的通信协议,RPC和HTTP不是一个维度上的协议,两者没什么可比性。

2023-08-21 12:08:37 83

原创 String

String不是基本数据类型,是引用类型,一旦被赋值不能被修改,由final关键字修饰;基本数据类型的值直接存储在内存中,引用类型需要在内存中分配一块空间,并存储一个指向对象的指针。

2023-08-21 11:57:11 69

原创 Mybatis的一级缓存和二级缓存

二级缓存:需要在XML映射文件中添加标签来开启二级缓存,并且指定缓存的实现类(这个实现类需要实现serializable接口)一级缓存:在同一个SqlSession中,同样的SQL只查询一次,并把查询结果缓存到SqlSession的内置hashMap中;

2023-08-21 11:45:10 72

原创 J V M

要注意的是,不可达对象不等价于可回收对象,不可达对象变为可回收对象至少要经过两次标记过程。JVM是可运行java代码的假想机,包括一套字节码指令集,一组寄存器,一个栈,一个垃圾回收,堆和一个存储方法域,JVM是直接运行在操作系统上的,与硬件没有直接关系。标记清除算法:最基础的垃圾回收算法,分为两个阶段,标注和清除。标记阶段标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间。一个对象如果没有任何与之关联的引用,即他们的引用计数都不为 0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。

2023-08-10 12:37:04 53

原创 java中的幂等性

幂等一般指的是方法被多次重复执行的时候,所产生的影响和第一次执行的影响效果相同。

2023-08-10 11:50:06 174

原创 Nacos

启动nacos服务,启动成功之后,再启动微服务的时候,微服务会向nacos服务建立连接,并且发送心跳请求,nacos会记录发送心跳的时间,然后微服务会向nacos进行服务注册。当nacos背后的系统时间减去最新一次的心跳时间大于30s,nacos会任务这个服务下线了,直接把他下线。:nacos采用分级存储结构,最外层是一个namespace来隔离环境,然后是Group用来服务分组,接下来就是服务了,一个服务对应多个实例,但是可能存在不同机房,因此service下有多个集群,集群下又是不同实例。

2023-08-03 12:49:05 270

原创 synchronized

ReetrantLock是类,synchronized是个关键字,都是再JVM层面实现互斥锁,如果锁竞争比较激烈时,推荐使用ReetrantLock因为不存在锁升级;ReetrantLock基于AQS实现,synchronized是基于ObjectMonitor实现的,ReetrantLock支持公平锁和非公平锁;synchronized只支持非公平锁。:基于对象实现,对象会在内存中开辟一片空间来存储对象头,对象头中存储着MarkWord,而MarkWord里又标记了各个锁在不同状态下要存储的信息;

2023-08-03 12:21:51 29

原创 synchronized在jdk1.6后的优化

如果一个循环中,频繁的获取和释放锁资源,这样会带来很大的资源,锁膨胀就是将锁的范围扩大,避免频繁的竞争和释放锁资源带来不必要的消耗,例如当一个synchronized锁放在for循环中时,可以将synchronized的代码块抽取出来,放到for循环体外面,这样就避免了每次循环都要去竞争和释放锁资源;:在synchronized修饰的代码中,如果存在临界资源的情况下,即使写了synchronized也无效,不会触发;

2023-08-03 11:57:24 176

原创 创建线程有几种方式?

第三种实现Callable时需要搭配futureTask来使用,实现Callable时,需要将Callable的实现扔到futureTask中,把futureTask放到Thread的有参构造中,futureTask实现了RunnableFutrue,这个RunnableFutrue又继承了Runnable接口,执行的也是run方法;第四种基于线程池每次构造线程都是Worker类,Worker类又实现了Runnable接口,执行run方法,所以说追其底层其实就是一种方法。4.根据线程池来构建线程。

2023-08-02 17:24:41 30

原创 @Autowired和@Reasource

Reasource是java提供的,有名称和类型两种装配方式,默认为按照名称byName装配,有两个重要属性,name和type,如果使用type属性就根据类型byType来装配对象,如果既不指定name也不指定type的话,会根据反射机制使用byName来装配。不同点:@Autowired是spring提供的,通过类型byType来装配对象,如果要是想要按照名称byName进行装配的话,需要搭配@Qualifier注解进行使用;

2023-08-02 17:14:51 76

原创 服务熔断和服务降级

服务降级:当服务器压力剧增时,根据当前业务和流量对一些非核心业务进行策略的停服,缓解服务器资源的压力,以保证核心业务的正常运行。自动降级:超时,失败次数过多,故障等引发的自动降级;服务熔断:一般是某个服务突然故障或异常引起的,当某个异常条件被触发时,为了防止服务雪崩,直接熔断服务,而不是一直等到此服务超时。相同点:熔断和降级都是从可用性和可靠性出发,为了防止系统崩溃,最终让用户体验的是某些功能暂时不能用。不同点:熔断一般是下游服务故障导致的,降级一般是从整体系统负荷考虑,由调控方控制。

2023-08-01 11:52:24 155 1

原创 Dubbo

使用dubbo可以将核心服务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,可用于提高业务复用灵活性扩展 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需要加单的配置,没有任何API侵入 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点 服务自动注册及发现,不需要在写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑的添加或删除服务提供者 推荐使用dubbo://协议 dubbo基于TCP,将一个接口定义为一个服务 内置了Sprin

2023-08-01 11:45:41 79 1

原创 Redis事务

不过与关系型数据库不一致的是,Redis事务没有回滚机制,如果事务中的某个命令执行失败,其他命令依旧会继续执行,为了弥补不回滚的问题,Redis在入队时加入检查命令,如果检查命令失败的话,整个事务就会被丢弃。标识),服务器会遍历客户端的事务队列,然 后执行事务队列中的所有命令,最后将返回结果全部返回给客户端;中的一个,立即执行这个命令,否则将命令放入一个事务队列里面,然后向客户端返回 QUEUED。如果客户端发送的是四个命令以外的其他命令,那么服务器并不立即执行这个命令。命令的执行,标识着一个事务的开始。

2023-07-31 11:58:12 29 1

原创 Redis持久化

数据安全,AOF持久化记录了每个写操作的历史记录,可以确保数据不会因为意外断电或系统崩溃而丢失。:在指定时间间隔内将内存中的数据集快照写入磁盘,实际操作是fork一个子进程,先将数据集写入临时文件,写入成功后,在替换之前的文件,再用二进制压缩。:数据安全性低,RDB是间隔一段时间进行持久化,如果持久化之间Redis发生故障,会发生数据丢失,所以RDB更适合数据要求不严谨的情况。:以日志的形式记录服务器的每个写、删操作,查操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

2023-07-31 11:45:30 27 1

原创 Redis过期键的删除策略

Redis是采用惰性删除和定期删除相结合的,但是他俩不能保证所有过期的key都能被删除,随着越来越多的过期key未被删除,可能会导致内存溢出,当内存不足时,Redis会做内存回收,内存回收采用LRU策略,就是将最近最少引用的key删除。惰性删除:当访问key时,才会判断这个key是否过期,过期则删除,该策略可以最大化的节省CPU资源,但是对内存不友好,当出现大量key过期却没有被访问到,就不会被删除,从而占用大量内存。Redis过期删除策略:Redis的过期策略就是指当Redis缓存中key过期。

2023-07-31 11:26:42 55 1

原创 RabbitMQ消息消费

1.给每一条消息都加一个唯一id,在本地记录消息表及消息状态,处理消息时基于数据库表的id唯一性来做判断。2.消息记录表中,利用消息状态字段基于乐观锁的判断,实现幂等性。保证消息处理的幂等性可以确保RabbitMQ消息不被重复消费。3.基于业务本身的幂等性。

2023-07-17 22:19:32 245 1

原创 Spring AOP注解

AfterReturning 标注当前方法为返回后的通知。@AfterThrowing 标注当前方法为异常后通知。@Pointcut 使用当前方法名作切入点引用名称。@Before 标注当前方法作为前置通知。@After 标注当前方法作为后置通知。@Around 标注当前方法为环绕通知。

2023-07-17 22:04:25 46 1

原创 三种限流算法

想象有一个虚拟的桶,桶里面放有一定数量的Token,请求访问资源之前,需要从桶里拿到令牌,拿不到令牌的请求会被拒绝掉,这就是令牌桶的思想。漏桶算法的算法原理是,设置一个漏桶,每次请求都将请求放入到漏桶当中,若漏桶已满则拒绝请求,漏桶按照一定速率将已放入漏桶的请求流出,流出的请求将被正常处理。它将单位时间周期分为n个小周期,分别记录每个小周期内接口的访问次数,并且根据时间滑动删除过期的小周期。指在一定的时间内,维护一个访问总量的数值,当其超过阈值时,拒绝后续所有的请求,直到进入下一个时间窗口。

2023-07-10 23:18:52 60 1

原创 Redis信号量

Redis计数信号量_redis_米斯特胖墩-华为云开发者联盟。

2023-07-10 23:11:25 150 1

原创 后端--缓存架构

1.通读缓存:如果数据存在通读缓存里,就直接获取,不存在将数据存到通读缓存中,下次可以直接获取,常见的为CDN和反向代理,CDN称为内容分发网络,就近原则。缓存通常会记录计算结果,如果缓存命中直接返回,否则需要进行大量的运算,所以缓存也减少了CPU的计算小号,加快处理速度。2.旁路缓存:应用程序需要自己从数据源获取数据,然后存放到旁路缓存,下次读取时就可以通过旁路缓存获取。注意:缓存的数据来自缓存,如果源数据被修改了,缓存数据可能会成为脏数据。应用程序在更新数据源的时候,通知清除缓存中的数据。

2023-03-30 16:17:18 152

原创 JAVA多线程

创建一个类并继承Thread类,重写run()方法,创建线程对象,调用start()方法启动线程。创建一个类实现Runnable接口,实现run()方法,创建线程对象,调用start()方法。new Thread(创建的实现类对象).start()

2023-01-07 23:06:02 43

原创 ArrayList和LinkedList区别

ArrayList LinkedList

2022-06-23 15:28:16 337

原创 数据库特性 ACID

数据库特性

2022-06-21 15:55:10 125

原创 如何减少 GC 的次数

GC

2022-06-21 09:48:53 900

原创 死锁以及产生的必要条件

死锁

2022-06-20 17:18:12 1085

原创 接口和抽象类

接口抽象类

2022-06-19 21:57:31 261

原创 I/O 模型

I/O 模型

2022-06-19 16:41:15 39

原创 PriorityQueue

PriorityQueue

2022-06-18 20:51:14 172

原创 数据库三范式

三范式

2022-06-13 17:35:08 101

原创 Redis

redis雪崩、击穿、穿透

2022-06-13 10:26:54 68

空空如也

空空如也

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

TA关注的人

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