JAVA
文章平均质量分 82
fan儿
这个作者很懒,什么都没留下…
展开
-
如何在MAC M1上同时安装JDK8和JDK17
笔者原先就在电脑上安装了JDK8,由于需要用到MAT,MAT支持MAC m1的只兼容JDK17及以上的版本,故需安装JDK17,特此记录。接下来,打开终端,输入。原创 2023-04-03 22:52:58 · 4219 阅读 · 2 评论 -
IO模型详解
文章目录聊聊阻塞与非阻塞、同步和异步IO模型实验BIO概述特点优点缺点NIO概述特点IO多路复用selectepoll边缘触发和水平触发AIO概述总结聊聊阻塞与非阻塞、同步和异步在讲IO模型之前,我们先来聊聊什么是阻塞和非阻塞,同步和异步。因为我发现这两个概念非常容易混起来,好像阻塞就是同步,非阻塞就是异步。但是请注意:我们说的同步和异步描述的是顺序关系,而阻塞和非阻塞描述的是一种是否等待的行为,不能划上等于号举个例子:我们去食堂吃饭的时候,经常会有两种,一种是需要自己排队打饭,另一种是商家叫原创 2022-05-10 22:42:17 · 521 阅读 · 0 评论 -
详解零拷贝
零拷贝文章目录零拷贝前言IO基本原理内核态与用户态系统调用缓冲区进程缓冲区和内核缓冲区DMA技术零拷贝read+writemmap+writesendfile()sendfile()+SG-DMA总结前言零拷贝在很多地方都有用到,比如netty、kafka、rabbitMQ中,那为什么会需要用到零拷贝呢?我们今天来看一下原因。IO基本原理内核态与用户态现代操作系统中,由于系统资源(CPU、内存、硬盘)可能同时被多个应用程序访问,如果不加保护,那各个应用程序之间可能会产生冲突,对于恶意应用程序更可原创 2022-04-09 17:59:15 · 723 阅读 · 0 评论 -
zookeeper入门概述
文章目录简介数据结构节点类型持久(Persistent)持久化目录节点持久化顺序编号目录节点短暂(Ephemeral)临时目录节点临时顺序编号目录节点应用场景特点选举机制理解几个概念选举状态什么时候会进行选举?第一次启动非第一次启动Leader在集群中存在Leader不在集群中监听器原理监听器原理详解:常见的监听:注意写数据原理向Leader节点发送写数据的请求向Follower节点发送写数据的请求分布式锁分布式锁的由来什么是分布式锁?分布式锁的特点zookeeper分布式锁原理:简介ZooKeepe原创 2022-03-26 16:39:43 · 2732 阅读 · 0 评论 -
SQLException:no opration allowed after statement closed问题排查
SQLException:no opration allowed after statement closed问题排查文章目录SQLException:no opration allowed after statement closed问题排查问题深入Druid探索原由概念介绍大体流程:PS初始化和close过程prepareStatement():初始化PScloseStatement():关闭Statement根据代码与实践总结druid 1.0.29中是如何修复的?总结问题前几天,我负责的一个应原创 2022-03-20 15:40:30 · 15827 阅读 · 0 评论 -
Guava限流
Guava限流文章目录Guava限流为什么要做限流原理漏桶算法令牌桶算法实战为什么要做限流通常我们的应用在部署之前都会先进行评估,有多少的调用量,需要多少台机器,能承受多大的流量;但是难免会有流量突然增大的时候,比如某时段某个接口突然遭受攻击,这时候某些机器可能会承受不了这个压力,导致崩溃,从而导致整个系统不可用。其实就像我们生活中,电闸的保险丝一样,突然使用了大功率的电器,导致保险丝就会烧断以保护各个电器不被强电流给烧坏;而在我们的系统中,就是设置一定的阈值,保护我们的系统能正常运行。通常我们流量原创 2022-03-19 13:46:59 · 4354 阅读 · 0 评论 -
Dubbo服务引用
Dubbo服务引用文章目录Dubbo服务引用概念服务引用的方式服务引用时机服务引用源码解析配置解析服务引用大致流程服务引用入口ref判空导致无法初始化BUG修复createProxy()——服务引用的开始RegistryProtocol.Refer()——消费者端的注册与订阅DubboProtocol.refer()——创建服务代理InvokergetSharedClient(url) ——获取共享客户端initClient(url) 初始化Netty客户端DubboProtocol.refer()流程图原创 2021-09-25 16:00:59 · 153 阅读 · 0 评论 -
dubbo服务暴露与注册
dubbo服务暴露与注册文章目录dubbo服务暴露与注册配置解析大致流程图服务暴露SPI机制本地暴露本地暴露作用远程暴露服务暴露:服务注册远程暴露流程图总结参考配置解析本文Dubbo源码版本为2.8.4。我们先从dubbo的配置讲起,主要是Spring的原理:我们一般通过XML或者annotation的方式,对dubbo进行配置。我们下面来讲一下XML的配置解析:上面这要用到了Spring的自定义标签功能,这个配置文件中,主要定义了一个dubbo的命名空间,编写了对应的xsd文档,用于约束 X原创 2021-08-13 17:42:38 · 659 阅读 · 0 评论 -
Dubbo优雅上下线详解
Dubbo优雅上下线文章目录Dubbo优雅上下线什么是Dubbo优雅上下线?为什么要Dubbo优雅上下线?为什么要优雅上线(延迟发布)?为什么要优雅下线?优雅上下线原理优雅上线原理优雅停机原理Dubbo延迟发布源码解读大致流程图:入口实现Dubbo优雅停机源码解读大致流程图停机入口注册中心注销注销协议Spring下的Dubbo优雅停机缺点解决总结参考什么是Dubbo优雅上下线?首先让我们来解释一下看一下优雅的意思:指人行为举止优美,自然且高雅。而在程序员眼中的优雅呢?代码具有以下特点:良原创 2021-07-05 11:02:28 · 1001 阅读 · 1 评论 -
Dubbo接口测试
Dubbo接口测试文章目录Dubbo接口测试如何在本机上进行Dubbo的接口测试如何在本机上进行Dubbo的接口测试首先,打开本机的设备终端。接下来,连接到本机的Dubbo端口:telnet localhost 20880然后,ls -l自己要测试的Dubbo接口类:ls -l XXService最后,Invoke 自己要测试的接口,如果要传的参数为一个对象的话,用JSON;如果为一个字符串,直接输入就可以了:invoke service路径.XXService.testUser({原创 2021-06-25 11:27:55 · 236 阅读 · 0 评论 -
Dubbo过滤器
Dubbo过滤器的使用文章目录Dubbo过滤器的使用如何使用?源码解析如何使用?通过实现Dubbo的Filter,重写里面的Invoke方法就可以了,在Invoke方法中写自己的要做的逻辑。@Componentpublic class XXFilter implements Filter { @Resource private XXService xxService; //如果在@Resource时出现注入的service为空,则加上这个 public void原创 2021-06-25 11:00:04 · 947 阅读 · 1 评论 -
什么是消息队列?
什么是消息队列?把要传的数据放到队列中,往队列中送消息的为生产者,往队列取数据的为消费者。其实消息队列就像是个房产中介,生产者给中介提供房源,消费者从中介买房。发布订阅模型大家都知道队列是先进先出的。但是如果此时出现多个消费者的时候,此时有一个消费者取了信息,取到之后,队列中就没有这个消息了,那其他消费者就没有办法再消费这个消息了。如果消费者中有些不需要消费这个消息怎么办?为了解决这些问题就有了一种新的模型:发布-订阅模式发布-订阅模式:这个模型中,将消息队列换成了主题,就是生产者发原创 2021-04-28 17:01:14 · 135 阅读 · 0 评论 -
详解HashMap与源码
源码系列ArrayList源码目录源码系列一.什么是HashMap?二、HashMap特点1.底层结构2.索引的计算3.哈希冲突4.为什么扩容是2的幂次方5.为什么hashmap可以存储null,而hashtable不可以?6.快速失败与安全失败7.线程安全8.hashmap到底是先扩容再加载还是先加载再扩容?二、源码分析1.常量2.构造方法3.Hash方法4.getNode5.put(篇幅较长,核心方法在红黑树前的部分)6.reSize(索引位置的计算最好自己动手计算一下会好理解)7.remove总原创 2020-11-13 17:14:58 · 176 阅读 · 0 评论 -
ArrayList重点方法源码分析
目录ArrayList底层结构可随机访问扩容机制使用快速失败机制线程不安全内存占用空间情况重点方法分析定义的常量及变量和数组构造方法扩容机制克隆toArray()get、set、remove、addforEachIteratorArrayList底层结构Object[]数组,可动态变化大小可随机访问实现了RandomAccess接口(一个标识接口,标识实现这个类的接口具有随机访问功能),底层是因为数组存储方法时连续储存的扩容机制oldCapacity+oldCapacity>>1=原创 2020-11-09 15:46:00 · 421 阅读 · 0 评论 -
快速搞懂值传递与引用传递
传递与引用传递值传递引用传递注意雷区值传递基本数据类型作为参数的方法调用实参给形参传递数据的方式,直接将值复制一份给形参,实参和形参在内存上两个方法中的 互相独立的局部变量 不涉及到引用对内存中的数据,修改形参不会影响实参示例:public class test { public static void change(int x){ x=100; } public static void main(String[] args) { i原创 2020-10-31 19:14:50 · 371 阅读 · 0 评论 -
大数(JAVA)
概念:用于处理包含任意长度数字序列的数值。作用:**当基本的整数和浮点数精度不能满足需求,就可以使用java.math中两个很有用的类:(1)BigInteger:实现任意精度的整数运算(2)BigDecimal:实现任意精度的浮点数运算方法:1、使用静态的ValueOf方法可以将普通的数值转换为大数 : BigInteger a=BigInteger.ValueOf(100)2...原创 2020-05-06 22:39:10 · 155 阅读 · 0 评论 -
Map集合的使用
Map集合:定义了双列集合的规范,每次存储一对元素。格式:Map<K,V> K:表示键的类型 V:表示值类型定义格式:Map<数据类型,数据类型> 对象名=new HashMap<>();例:Map<String,Integer> map=new HashMap<>();为什么可以通过键找到对应的值?1、键唯一(值可...原创 2020-02-24 21:41:39 · 492 阅读 · 0 评论