自学八股:分布式锁基础
前置知识分布式系统,一个后端服务会与多个客户端进行连接,所以会有负载均衡,多线程和异步这些情况由于SpringBoot项目中内置Tomcat,所以处理一般都是多线程的 主要在项目的任务领取功能的部分使用了分布式锁 在分布式系统中,分布式锁 是一种用于协调多个进程或线程对共享资源访问的机制。它主要用于解决在高并发场景下对共享资源的竞争问题,确保在任意时刻只有一个客户端可以操作共享资源。在分布式系统中,某些任务可能需要确保在任意时刻只有一个实例在运行。分布式锁可以防止多个实例同时执行相同的任务。在分布式系统中,多个客户端可能会同时对数据库或缓存进行写操作。如果没有适当的同步机制,可能会导致数据不一致。在某些场景下,需要确保在读取和写入共享资源时的原子性。分布式锁可以防止多个客户端同时进行读写操作,从而保证数据的一致性。在分布式系统中,多个客户端可能会同时对共享数据进行操作。如果没有适当的同步机制,可能会导致数据竞争,从而导致数据不一致。 这个项目为什么要使用分布式锁:防止任务超领; ps:...
自学八股:rabbitmq基础
概述通过队列功能进行消息传递,生产者将消息放到队列里,消费者可以到指定的队列去拉取消息,或者订阅对应的队列,由MQ服务端给其推送消息 核心功能1,流量削峰填谷在当前互联网的业务场景下,比如商品秒杀,在较短时间内,瞬时涌入大量请求,这个时候系统资源可能会耗尽,造成服务器瘫痪。可以使用消息队列来缓冲瞬时流量,通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去这个过程中由于消息队列限制了消息的发送频率,所以肯定会有大量的消息积压在消息队列中可能会产生消息积压的问题,这个在实际情况中需要考虑 2,应用解耦常用在微服务系统中,用于提高系统的可用性,比如在一个商城系统中,有订单服务和物流服务,从订单服务产生的请求通过消息队列发送给物流服务,如果物流服务出现了问题,消息会短时间内积压在消息队列中,直到下游服务恢复之后,会继续处理请求,在这个过程中用户是感知不到的 3,异步处理可以类比多线程优化接口的响应性能,A 调用 B 服务后,只需要监听 B 处理完成的消息,当 B 处理完成后,会发送一条消息给 MQ,MQ 会将此消息转发给 A 服务。这样 A 服务既不用循环调用 B...
自学八股:对netty的初步理解和应用
Netty 是一个基于 Java NIO...
自学八股系列:序言
...
自学八股:CAS和AQS
序言在对java并发编程的考察中CAS和AQS这两个概念的考察出现的频率是非常高的,所以本文主要通过笔者看过的文章和源码解读做一些整理和自己的思考,关于这两个概念。 面试题举例 java哪些地方使用到了CAS CAS有什么问题怎么解决 AQS独占式获取\释放锁的原理 … 前置概念1、线程同步 在多线程环境中,协调多个线程对共享资源的访问,以确保数据的一致性和完整性。在多线程程序中,多个线程可能会同时访问和修改共享资源,如果没有适当的同步机制,可能会导致数据竞争(Race Condition)、数据不一致或死锁等问题。线程同步的目的是通过控制线程的执行顺序,确保在任意时刻只有一个线程可以访问共享资源,或者多个线程可以安全地访问共享资源。 2、线程安全 在多线程环境中,一个类或代码段能够被多个线程安全地访问,而不会导致数据不一致或错误的行为。换句话说,线程安全的代码在并发执行时,能够保证数据的完整性和一致性。 实现方法: 互斥同步:synchronized,ReentrantLock 非阻塞同步:CAS,Atomic 无同步方案:栈封闭,Thread...
夜思
...
游戏客户端开发基本路线
计算机图形学(渲染方向)学习全攻略——学术科研篇_图形学blog-CSDN博客 游戏开发完整学习路线(各个版本都有) - 领悟.海洋 - 博客园 (cnblogs.com) 图形学渲染方向个人学习路线整理 - 知乎 (zhihu.com) Unity游戏开发新手入门自学与进阶学习书籍和教程推荐 - 知乎 (zhihu.com) [教程汇总+持续更新]Unity从入门到入坟——收藏这一篇就够了 - 知乎...