Metaq理解 1. Metaq是什么?MetaQ是一款分布式、队列模型的消息中间件分为Topic与Queue两种模式,Push和Pull两种方式消费支持严格的消息顺序,亿级别的堆积能力,支持消息回溯和多个维度的消息查询。...
Sentinel 学习 整理自:【尚硅谷】Sentinel视频教程丨Alibaba流量控制组件sentinel_哔哩哔哩_bilibili分布式防控场景-流量控制Sentinel的核心骨架是ProcessSlotChain,将不同的Slot按照顺序串在一起(责任链模式),从而实现各个功能(系统保护、流量控制、熔断降级)NodeSelectorSlot:收集资源路径,以树状存储,用于根据调用路径来进行限流ClusterBuilderSlot: 用于存储资源统计信息以及调用者信息,例如资源RT、QPS、Thr
Netty简单理解 【转】 转:彻底理解Netty,这一篇文章就够了 - 掘金1. 从HTTP说起有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy服务器等等。 我们回顾一下传统的HTTP服务器的原理1、创建一个ServerSocket,监听并绑定一个端口2、一系列客户端来请求这个端口3、服务器使用Accept,获得一个来自客户端的Socket连接对象4、启动一个新线程处理连接...
分布式事务 1. 分布式事务如何理解?分为两个阶段【二阶段提交 Alibaba组件 Smeta就是这种方式】1. 事务协调者,向各个服务发起数据操作的请求,每一个服务进行独立的处理 ,但是数据不提交2.事务协调者收到各个服务完成的报告后,再次下达命令来完成事物提交,于是数据才会发生真正的变更2. Smata的三个重要角色?其中:这里有用到@Transactional 是Spring中的声明事物注解。同时smata对其进行了扩展,也支持了远程分布式事务...
Java CountDownLatch和Semaphore 1. 怎么理解CountDownLatch?【内部也是AQS】参照如上:线程1调用await阻塞。直到调用若干次的countDown后(具体次数,初始化的时候已经指定),才会唤醒继续2. 如果多个线程前置调用await呢?多次await,那么多个线程会进行排队 【唤醒的话,会依次唤醒】。也就是所有的阻塞都会被执行注意:ReentrantLock,不管是否是公平锁,都会唤醒第一个【具体是第二个结点】public class CountDownLatchDemo {.
Java ReentrantLock 1. 锁的意义——线程同步2. 案例——基于ReentrantLock来实现同步public class A { public static ReentrantLock reentrantLock = new ReentrantLock(); public static void main(String[] args) { new Thread(() -> { testSync(); }, "t1").start()
Java AQS 1. 是什么?AQS是抽象队列同步器,是JUC包的核心,也是并发编程的核心2. 哪里使用到AQSReentrantLock的底层就是AQSReentrantLock lock = new ReentrantLock();然后可以执行lock的lock()方法当前锁场景:分为公平锁和非公平锁,默认是非公平如下:会创建出公平锁ReentrantLock lock = new ReentrantLock(true);思想很重要啊!...
Java Synchronized 转:阿里面试题深度解析:Synchronized(obj){...}是锁对象还是代码块?Why?_哔哩哔哩_bilibiliCAS是乐观锁的实现,synchronized就是悲观锁了1.
GO 协程、Channel 整理自:Golang通道Channel详解 - 掘金1. 协程:协程本质上是一种用户态线程,不需要操作系统来进行抢占式调度,并且在真正的实现中寄存于线程中,因此系统开销极小,可以有效的提高线程任务的并发性,而避免多线程的缺点2. 轻量:协程的最大优势在于其“轻量级”,可以轻松创建上百万个而不会导致系统资源衰竭,而线程和进程通常最多也不能超过1万个。这也是协程也叫轻量级线程的原因。3. Go 语言在语言级别支持轻量级线程,叫goroutine。Go 语言标准库提供的所有系统调用操作(当然也包括
Spring 循环依赖 整理自:阿里面试题深度解析:Sping Bean循环依赖问题该如何解决?_哔哩哔哩_bilibili1. 类的实例化?所有的类,在Spring框架启动过程中,都会被扫描到,并且是按顺序有序的实例化2. 如何解决循环依赖?...
Java 四种引用【转】 整理自:马士兵老师详解:Java的四种引用类型(对象的强、软、弱和虚引用)_哔哩哔哩_bilibili1. Java有哪些引用类型强软弱虚2. 什么是强引用?如上:M类重写了一个finalize 方法。正常不建议重写,重写的目的是为了跟踪M产生的对象被gc垃圾回收的过程。finalize在对象被回收的时候,会被调用到,所以:当看到打印finalize,就知道 对象被回收3. 软引用当空间不够了,软引用的对象会被回收可以通过-Xmx20M设置1. 问题来.
redis的过期策略【转】 转:Redis的过期策略以及内存淘汰机制_Felix-CSDN博客_redis过期策略和内存淘汰机制我们知道,redis中缓存的数据是有过期时间的,当缓存数据失效时,redis会删除过期数据以节省内存,那redis是怎样删除过期数据的?删除过期数据的策略是什么?这就是我们今天要讨论的第一个问题:Redis过期策略。redis为什么这么快,原因之一就是Redis操作都是基于内存的,既然是基于内存的,而内存的大小是有限的,当内存不足或占用过高时,怎么办?这就是我们今天要讨论的第二个问题:Redis的.
异步MQ的选型? 核心问题?如何进行消息队列的技术选型?1. 你问什么要使用消息队列?公司有一个**的业务场景,这个业务场景有个**技术挑战,如果不用mq会很麻烦,但是用了mq之后带给了项目很多好处。2. 消息队列有哪些优点和缺点?任何技术一定是一把双刃剑,一定有很多好处,但是也会有一些坏处3. kafka、activemq、rocketmq、rabbitmq有什么区别,以及适合哪些场景?4. 相关mq了解activemq了解?ActiveMQ是...
GC 理解? 1. 对象什么时候会变成垃圾?当前对象,使用任何方式都不能访问它,那么此刻它就是一个垃圾2. GC root3. 古典的垃圾回收算法4. GC的分代假设年轻代:用于存储刚创建出来的对象老年代:年轻代数据经过清理后的提升5. GC 的古典时代Serial:用一个线程回收年轻代SerialOld:用一个线程回收老年代对于Serial而言:停止用户线程,然后使用一个线程近线回收但是有一个问题...
ThreadLocal 理解Ing 1. ThreadLocal是什么?当某些数据是以线程为作用域并且不同线程有不同数据副本时,考虑ThreadLocal。一句话理解ThreadLocal,向ThreadLocal里面存东西就是向它里面的Map存东西的,然后ThreadLocal把这个Map挂到当前的线程底下,这样Map就只属于这个线程了。2.ThreadLocal的简单使用public class ThreadLocaDemo { private static ThreadLocal<Str.
彩虹表(rainbow table)【转】 https://www.jianshu.com/p/732d9d9604111. 什么样子存储密码才是安全的呢?直接存储密码明文m 存储密码明文的哈希值hash(m) 存储密码明文的加盐哈希 hash(m+salt),这里的salt可以是用户名,手机号等,但必须保证每个用户的salt都不一样才是安全的。如果数据库被入侵。第一方式,明文存储,无安全性可言。第二种方式,虽然是入侵者得到的是hash值,但由于彩虹表的存在,也很容易批量还原出密码明文来。只有第三种方式才是相对安全的。.
算法-开放性题 甲乙丙(或ABC),3个人轮流掷(6面)骰子,先掷出6的人获胜,甲获胜的概率是多少?甲先扔开放性问题,不限制解法;精确到小数点 3 位计算复杂部分建议用编程计算public class Solution { public static void main(String[] args) { Solution solution = new Solution(); Double[] doubles = new Double[101]; ..