- 博客(122)
- 收藏
- 关注
原创 Eureka入门
文章目录Eureka 简介Eureka 相关概念Eureka 基础架构Eureka 集群架构Eureka 自我保护eureka高可用原理分析Eureka 简介和Zookeeper 类似,Eureka 是一个服务注册和发现的组件,最开始主要应用于亚马逊公司的云计算服务平台AWS,Eureka 分为 Eureka Server 和 Eureka Client,Eureka Server 为Eureka 服务注册中心,Eureka Client 为 Eureka 客户端。服务注册是指:各个微服务启动时,将自
2022-05-23 11:16:45
602
原创 并发编程API解析与对比
文章目录需要在synchronized中使用——wait()和notify()wait()与sleep()【不需要前提条件就可以使用】的区别需要Lock才能使用——await()与signal()不需要前提条件就可以使用——park()与unpark()线程运行状态图解interrupt()需要在synchronized中使用——wait()和notify()java中当调用一个锁对象的wait或notify方法时,如当前锁的状态是偏向锁或轻量级锁则会先膨胀成重量级锁。JDK在Object对象中提供
2022-05-10 15:00:44
445
1
原创 Kafka入门
文章目录基础架构工作流程文件存储生产者生产者分区策略producer ack何时发送ack?生产者ACK策略数据一致性问题基础架构Producer : 消息生产者,就是向 Kafka broker 发送消息的客户端;Consumer : 消息消费者,向 Kafka broker 取消息的客户端;Consumer Group (CG): 消费者组,由多个 consumer 组成。 消费者组内每个消费者负责消费不同分区的数据,一个分区只能由一个组内消费者消费;消费者组之间互不影响。 所有的消费者都属
2022-04-25 08:13:14
5498
1
原创 动态代理原理
文章目录动态代理是什么?JDK动态代理实现JDK动态代理源码解析动态代理是什么?动态代理是在程序运行的过程中动态生成代理类的字节码文件,然后把字节码文件加载到方法区,生成一个具体的class对象,然后反射拿到构造方法进行实例化,获取代理类JDK动态代理实现首先需要一个接口public interface MyCalculator { void sout();}然后写一个普通类实现接口public class Calculator implements MyCalculator {
2022-04-21 20:49:56
741
转载 BlockingQueue常用方法add、off、put、take、poll使用说明
文章目录import java.util.Collection;import java.util.Queue;import java.util.concurrent.TimeUnit;public interface BlockingQueue<E> extends Queue<E> { /** * 1.在不违反容量限制的情况下将指定元素插入队列,成功则立即返回true。 * 2.如果没有空间则抛出IllegalStateException异常
2022-03-30 10:44:15
821
原创 对跨域理解
文章目录一、什么是源和跨域二、什么是同源策略?解决方法:一、什么是源和跨域源(origin)就是协议、域名和端口号。URL由协议、域名、端口和路径组成,如果两个URL的协议、域名和端口全部相同,则表示他们同源。否则,只要协议、域名、端口有任何一个不同,就是跨域。二、什么是同源策略?同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种
2022-03-29 17:04:59
1359
原创 线程池源码解析
ThreadPoolExecutor.execute()public void execute(Runnable command) { //如果任务等于null就抛出异常 if (command == null) throw new NullPointerException(); //获取ctl线程池状态跟活跃线程数 int c = ctl.get(); //比对活跃线程数跟核心线程数的大小
2022-03-25 10:42:02
562
原创 redis使用@Cacheable等注解为接口添加缓存
redis使用@Cacheable等注解为接口添加缓存https://blog.51cto.com/jeecg/3191575
2022-03-22 19:59:51
980
原创 volatile原理
文章目录原理可见性有序性存在的问题双重锁单例模式并发编程中的三个概念1. 原子性2.有序性3.可见性synchronized 关键字和 volatile 关键字的区别原理可见性有序性存在的问题只能保证本线程之内的代码不重排双重锁单例模式存在的问题:可能t1线程在 new对象的时候发生了指令重排序,先给实例赋值之后再创建的如果2和3进行了重排序的话,线程B进行判断if(instance==null)时就会为true,而实际上这个instance并没有初始化成功,显而易见对
2022-03-20 11:07:20
285
原创 AQS原理解析+ReenTrantLock实现原理
文章目录概述ReentrantLock原理非公平锁实现原理概述Monitor是C++实现的,AQS纯java实现的简单的不可重入锁的实现:测试:ReentrantLock原理非公平锁实现原理
2022-03-19 11:01:42
371
原创 ConcurrentHashMap简介
文章目录为什么要用ConcurrentHashMapConcurrentHashMap的构成ConcurrentHashMap并发读写情形1.不同Segment的并发写入2.同一Segment的一写一读3.同一Segment的并发写入ConcurrentHashMap的优势Put()方法与Get()方法解析size()方法解析为什么要用ConcurrentHashMapHashMap是线程不安全的,JDK1.7并发操作可能会出现死链,JDK1.8可能会丢失数据。避免HashMap的线程安全问题有很多办
2022-03-16 14:21:46
1711
原创 CAS原理
CAS指令在Intel CPU上称为CMPXCHG指令,它的作用是将指定内存地址的内容与所给的某个值相比,如果相等,则将其内容替换为指令中提供的新值,如果不相等,则更新失败。这一比较并交换的操作是原子的,不可以被中断。初一看,CAS也包含了读取、比较 (这也是种操作)和写入这三个操作,和之前的i++并没有太大区别,是的,的确在操作上没有区别,但CAS是通过硬件命令保证了原子性,而i++没有,且硬件级别的原子性比i++这样高级语言的软件级别的运行速度要快地多。从内存领域来说这是乐观锁,因为它在对共享变量更新
2022-03-16 07:31:13
414
原创 HashMap原理
文章目录散列表哈希碰撞与下标冲突扩容与负载因子引入红黑树HashMap 简介散列表HashMap中的数据结构为散列表,又名哈希表。数组:数组删除、插入性能不佳,寻址性能极优链表:链表查询性能不佳,删除、插入性能极优区别详解:https://blog.youkuaiyun.com/Jasminexjf/article/details/88847127数组和链表的优缺点取决于他们各自在内存中存储的模式,也就是直接使用顺序存储(连续空间)或链式存储(非连续空间)导致的。无论是数组还是链表,都有明显的缺点。而在实
2022-03-15 14:55:52
273
原创 RocketMQ的重复消费、死信队列、乱序问题
文章目录为什么会重复消费如何解决重复消费消息重试、延时消息、死信队列消息乱序为什么会重复消费比如生产者发送消息的时候使用了重试机制,发送消息后由于网络原因没有收到MQ的响应信息,报了个超时异常,然后又去重新发送了一次消息。但其实MQ已经接到了消息,并返回了响应,只是因为网络原因超时了。这种情况下,一条消息就会被发送两次。在消费者处理了一条消息后会返回一个offset给MQ,证明这条消息被处理过了。但是,假如这条消息已经处理过了,在返回offset给MQ的时候服务宕机了,MQ就没有接收到这条of
2022-03-14 20:31:00
1487
原创 如何保证 RocketMQ 不丢失消息?
文章目录生产阶段消息丢失Broker 存储阶段消息丢失消费阶段消息丢失一条消息从生产到被消费,将会经历三个阶段:1.生产阶段,Producer 新建消息,然后通过网络将消息投递给 MQ Broker2.存储阶段,消息将会存储在 Broker 端磁盘中3.消息阶段, Consumer 将会从 Broker 拉取消息以上任一阶段都可能会丢失消息,我们只要找到这三个阶段丢失消息原因,采用合理的办法避免丢失,就可以彻底解决消息丢失的问题。生产阶段消息丢失生产者(Producer) 通过网络发送消息
2022-03-14 16:33:07
491
原创 RocketMQ简介与使用
文章目录mq的特点与作用应用解耦削峰数据分发mq的优点和缺点角色介绍集群消息发送样例1.发送同步消息2.发送异步消息3.发送单项消息消息消费样例1.负载均衡模式2.广播模式顺序消息延迟消息发送批量消息过滤消息事务消息mq的特点与作用应用解耦削峰数据分发mq的优点和缺点角色介绍NameServer,很多时候称为命名发现服务,其在RocketMQ中起着中转承接的作用,是一个无状态的服务,多个NameServer之间不通信。任何Producer,Consumer,Broker与所
2022-03-13 20:10:11
1438
原创 MySQL事务原理
锁[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y3YRCxOE-1646487889341)(在这里插入图片描述)]](https://img-blog.csdnimg.cn/29450de7143543d8aba91e885eef1548.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBARlJFRV9HSUZUX-eZvee7meaAqg==,size_12,co.
2022-03-06 16:43:38
443
转载 ThreadLocal原理与内存泄露的原因
set源码get 源码https://blog.youkuaiyun.com/CPrimer0/article/details/115252789?spm=1001.2014.3001.5501https://zhuanlan.zhihu.com/p/158033837https://blog.youkuaiyun.com/qq_43578385/article/details/111879678
2022-03-03 11:16:38
206
转载 ArrayList源码&扩容机制分析
这里补充一点比较重要,但是容易被忽视掉的知识点:1.java 中的 length属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了 length 这个属性.2.java 中的 length() 方法是针对字符串说的,如果想看这个字符串的长度则用到 length() 这个方法.3.java 中的 size() 方法是针对泛型集合说的,如果想看这个泛型有多少个元素,就调用此方法来查看! /** * 保存ArrayList数据的数组 */ trans
2022-03-01 17:33:18
91
转载 Java垃圾回收
文章目录什么是垃圾为什么需要GC垃圾回收的主要区域垃圾回收相关的算法垃圾标记阶段引用计数算法可达性分析算法(根搜索算法、追踪性垃圾手机)finalization机制什么是垃圾为什么需要GC垃圾回收的主要区域垃圾回收相关的算法垃圾标记阶段引用计数算法可达性分析算法(根搜索算法、追踪性垃圾手机)finalization机制...
2022-02-22 16:13:08
100
原创 为什么接口中的常量必须使用public static final修饰
public: 使接口的实现类可以使用这个常量 static: static修饰就表示它属于类的,随的类的加载而存在的,如果是非static的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以接口的常量必须定义为static final:final修饰就是保证接口定义的常量不能被实现类去修改,如果没有final的话,由子类随意去修改的话,接口建立这个常量就没有意义了。...
2022-02-15 14:52:24
868
原创 Java序列化
文章目录一、序列化的含义、意义及使用场景二、Java序列化的几种方式三、springboot序列化一、序列化的含义、意义及使用场景序列化:将对象写入到IO流中反序列化:从IO流中恢复对象意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的
2022-02-14 19:49:04
430
原创 线程用户态与内核态介绍
区分内核空间和用户空间原因其实早期操作系统是不区分内核空间和用户空间的,但是应用程序能访问任意内存空间,如果程序不稳定常常把系统搞崩溃,比如清除操作系统的内存数据。后来觉得让应用程序随便访问内存太危险了,就按照CPU 指令的重要程度对指令进行了分级,指令分为四个级别:Ring0~Ring3 (和电影分级有点像),linux 只使用了 Ring0 和 Ring3 两个运行级别,进程运行在 Ring3 级别时运行在用户态,指令只访问用户空间,而运行在 Ring0 级别时被称为运行在内核态,可以访问任意内存空间
2022-02-14 14:14:55
1563
原创 零拷贝技术
参考:https://zhuanlan.zhihu.com/p/258513662https://mp.weixin.qq.com/s/thaNfAUY_1e_WMILuqfF-g
2022-02-11 20:08:54
211
原创 网络编程的IO模型
文章目录一、同步阻塞IO二、同步非阻塞IO三、IO多路复用(同步阻塞)四、异步IO服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也
2022-02-11 18:17:26
300
原创 jvm梳理
文章目录JVM整体结构java语言的跨平台性java代码执行流程JVM的架构模型JVM整体结构java语言的跨平台性java代码执行流程JVM的架构模型
2022-01-24 14:49:04
176
原创 redis介绍
文件事件处理器Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。Redis 6.0 多线程的实现机制...
2022-01-12 16:57:55
202
原创 linux 硬连接与软连接与java的强软弱虚
linux 硬连接与软连接java的强软弱虚一、引用强度排序强引用>软引用>弱引用>虚引用二、强引用:正常创建的对象,只要引用存在,永远不会被GC回收,即使OOMObject obj = new Object();如果要中断强引用和某个对象的关联,为其赋值null,这样GC就会在合适的时候回收对象Vector类的clear()方法就是通过赋值null进行清除三、软引用内存溢出之前进行回收,GC时内存不足时回收,如果内存足够就不回收使用场景:在
2022-01-12 08:05:04
334
原创 mysql 关于时间的查询
查询前一天内的数据 INTERVAL 1 DAY 表示几天前select * from orders where DATE_FORMAT(paytime,’%Y-%m-%d’) = DATE_SUB(CURDATE(),INTERVAL 1 DAY)查询30天之前的数据SELECT * FROM company WHERE DATEDIFF(NOW(), updatedate) = 30;
2021-12-01 15:08:58
290
转载 CAP与BASE理论详解
文章目录1.CAP 到底是什么2.1. C:数据一致性2.2. A:可用性2.3. P:分区容忍性3. CAP 怎么选择4. 对 CAP 的常见误解5. CAP 理论的一些疑问7. 引申出来的 BASE8. BASE理论简介9. BASE理论的内容9.1. 基本可用9.2. 软状态9.3. 最终一致性1.CAP 到底是什么CAP 定理表达了一个分布式系统里不可能同时满足以下的三个特性:2.1. C:数据一致性数据发生变化是否一致是需要经过读请求来做检验的。那么读请求判断的依据是什么呢?假设,我们的
2021-11-04 14:58:13
344
转载 拦截器与过滤器的理解
一、二者理解过滤器(Filter)过滤器,是在java web中将你传入的request、response提前过滤掉一些信息,或者提前设置一些参数。然后再传入Servlet或Struts2的 action进行业务逻辑处理。比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入Servlet或Struts2的action前统一设置字符集,或者去除掉一些非法字符。拦截器(Interceptor)拦截器,是面向切面编程(AOP,Aspect Oriented Prog
2021-11-01 07:34:04
219
原创 nacos部署阿里云之后,本地应用连接不上报 Server check fail, please check server 139.xxx.195.xxx,,port 9848 is availabl
部署nacos单机成功,端口9848 9849 也在启动参数里开放docker run --env MODE=standalone --name nacos -d -p 8848:8848 -p 9848:9848 -p 9849:9849 -v nacos/conf/application.properties:/home/nacos/conf/application.properties -v nacos/logs:/home/nacos/logs nacos/nacos-server:2.0.3
2021-10-26 08:04:16
6113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人