服务端
文章平均质量分 79
xidianhuihui
这个作者很懒,什么都没留下…
展开
-
记一次dubbo provider获取不到dubbo.tag问题排查
项目里通过dubbo.tag=gray传递灰度标,但是上游consumer已经在attachment里面设置dubbo.gray了,下游却拿不到。原创 2024-03-29 15:52:34 · 312 阅读 · 0 评论 -
算法学习总结
滑动窗口算法3 最长子串https://leetcode-solution-leetcode-pp.gitbook.io/leetcode-solution/thinkings/linked-listjava方法使用降序排序Integer[] arr={9,8,7,6,5,4,3,2,1}; Arrays.sort(arr,Collections.reverseOrder());参考资料很棒,一定要看的github leetcode算法分类学习githu..原创 2021-08-09 14:20:53 · 81 阅读 · 0 评论 -
并发关键字
summaryAQS:reentrantLock、Semaphore、CountDownLatch、CyclicBarrierArrayBlockingQueue、linkedBlockingQueue、PriorityBlockingQueue、ConcurrentLinkedQueueUnsafeUnsafe类对于并发编程来说是个很重要的类,如果稍微看过J.U.C里的源码,会发现到处充斥着这个类的方法调用。这个类的最大的特点在于,它提供了硬件级别的CAS原子操作volatile作用保证原创 2021-06-16 11:57:56 · 134 阅读 · 0 评论 -
tcp如何保证可靠性
TCP协议传输的特点主要就是面向字节流、传输可靠、面向连接(字靠连)数据分割-编号(确认应答与序列号)序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。确认应答:TCP传输的过程中,每次接收方收到数据后,都会对传输方进行确认应答。也就是发送ACK报文。这个ACK报文当中带有对应的确认序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。序列号的作用不仅仅是应答的作用,有了序列号能够将接收到的数据根据序列号排序,并且去掉重复序列号的数据。这也是TCP传输可靠性的保证之一校验和计转载 2021-06-16 11:54:39 · 81 阅读 · 0 评论 -
springBoot自动装配原理
summarydetail传统的Spring项目会有很多的配置文件,比如我们要使用Redis,一般除了对应的依赖的jar包我们还需要在application.xml里面配置JedisConnectionFactory、JedisPoolConfig、RedisTemplate。但是如果使用SpringBoot的话,系统会根据pom.xml里面的jar包,自动生成这些类并且注入到IOC容器当中。传统Spring项目中需要配置<bean id="jedisConnectionFactory"原创 2021-06-02 15:19:27 · 168 阅读 · 1 评论 -
消息中间件
summary消息中间件作用:-消息幂等性 -三高一(高可用、高性能、高并发、一致性)rabbitMQ:主从模式下,使用镜像复制,让每个节点都有全量数据kafka:副本,ack如何保证消息有序如何保证消息不丢不乱不重不堆积,丢乱重堆队列分类 -不同消息中间件优缺点 消息中间件作用-解耦削峰异步通信冗余(存储)扩展性可恢复性顺序保证缓冲消息幂等性 -对于确保消息在生产者和消费者之间进行传输而言一般有三种传输保障(delivery转载 2021-05-28 15:55:58 · 88 阅读 · 0 评论 -
java知识整理
1-java基础jdk 1.7 hashMap多线程下循环引用问题java类加载机制hashMap原理1-1操作系统基础1-2网络基础2-JVMJVM内存结构3-并发4-spring如何解决循环依赖5-中间件框架5-1 redisredis渐进式hash5-2 消息中间件5-3 rpc框架5-4 zookeeper5-5 限降熔6-分布式7-数据库数据库一致性10-系统架构设计solid设计原则秒杀系统设计11-开放性问题12-设原创 2021-05-28 15:51:34 · 406 阅读 · 0 评论 -
JVM内存结构
局操常返附局操常返附堆就是一个主要用于存放对象的内存区域,线程共享的一块区域,堆允许程序在运行时动态地申请某个大小的内存空间堆中有一个不得不提的事 — 垃圾回收(GC),详细见垃圾回收篇虚拟机栈也就是我们常说的线程方法栈。大致符合所了解的先入后出的栈结构特性,其出入栈的数据结构称为栈帧,也就是调用某个方法A时,则会入栈一个栈帧,这个栈帧结构包括了方法A中的局部变量区、操作数据栈,动态链接、方法的返回地址等。在JVM栈这个数据区可能会发生抛出两种错误。1. StackOverflowEr.原创 2021-03-29 17:17:44 · 75 阅读 · 0 评论 -
Redis---渐进式哈希
Redis支持的数据结构有很多,其中dict的使用非常频繁,其实Redis的每一个数据库结构都是一个dict。dict使用哈希表实现,这也是Redis性能十分强悍的原因之一,增删改查的时间复杂度为O(1).上图是我根据Redis源码中定义的数据结构及网上资料参考画的参考图。随着Redis的操作越来越多,dict中保存的数据量也会动态变化,当数据量增加或者减少到一定的程度,为了让负载因子维持在一个合理的范围内,Redis就会对dict的大小进行相应的扩容或者收缩。而这一过程正是通过渐进式哈希(rehas转载 2021-03-21 10:11:50 · 510 阅读 · 0 评论 -
SOLID六大设计原则
六大设计原则SOLID单一职责原则:Single Responsibility Principle开闭原则:Open Closed Principle里氏替换原则:Liskov Substitution Principle迪米特法则:Law of Demeter接口隔离原则:Interface Segregation Principle依赖倒置原则:Dependence Inversion Principle单一职责原则:Single Responsibility Principle一个类只原创 2021-03-15 21:04:12 · 122 阅读 · 0 评论 -
阿里JVM SANDBOX原理
一、前言在开始之前,我们先来模拟一下以下的场景:小李:“小明,你的接口没有返回数据,麻烦帮忙看一下?”小明:“我这边的数据也是从别人的服务器中拿到的,但是我不确定是因为逻辑处理有问题导致没有结果,还是因为我依赖的服务有问题而没有返回结果,我需要确认一下。”小明:“哎呀,线上没有日志,我需要加个日志上个线。”30 分钟之后……小明:“不好意思,日志加错地方了……稍等……”接来下隆重登场的就是本文的主角 JVM SandBox 了。基于 JVM SandBox,我们可以很容易地做到在不重新部署应用转载 2021-03-11 23:06:02 · 1239 阅读 · 0 评论 -
jdk 1.7 hashMap多线程下循环引用问题
问题的症状从前我们的Java代码因为一些原因使用了HashMap这个东西,但是当时的程序是单线程的,一切都没有问题。后来,我们的程序性能有问题,所以需要变成多线程的,于是,变成多线程后到了线上,发现程序经常占了100%的CPU,查看堆栈,你会发现程序都Hang在了HashMap.get()这个方法上了,重启程序后问题消失。但是过段时间又会来。而且,这个问题在测试环境里可能很难重现。我们简单的看一下我们自己的代码,我们就知道HashMap被多个线程操作。而Java的文档说HashMap是非线程安全的,应该转载 2021-03-10 21:31:55 · 411 阅读 · 0 评论 -
数据库一致性
数据库一致性特性ACIDACID是事务的四个特性,指的是atomicity,原子性;consistency,一致性;isolation,隔离性;durability,持久性A:atomicity,原子性C:consistency, 一致性I: isolation,隔离性D:durability,持久性内部不一致性情况: 丢失修改\脏读\幻读\不可重复读导致数据不一致原因修改丢失、脏读、幻读、不可重复读提交读、串行化隔离这些概念是什么修改丢失修改丢失是事务A和B先后更改数据数据x(原创 2021-03-08 16:42:32 · 2840 阅读 · 3 评论 -
B+树、B树、红黑树等各种树的关系
二叉树二叉树又名二叉排序树,亦称二叉搜索树、二叉查找树。是每个结点最多有两个子树的树结构。通常子树被称作“左子树”和“右子树”。定义若左子树不空,则左子树上所有节点的值均小于它的根节点的值;若右子树不空,则右子树上所有节点的值均大于它的根节点的值;左、右子树也分别为二叉排序树;没有键值相等的节点。平衡二叉树平衡二叉树是基于二叉查找树优化而来的。定义非叶子结点最多只能有两个子结点,且左边子结点点小于当前结点值,右边子结点大于当前结点树,并且为保证查询性能增增删结点时要保证左右两边结点层级相原创 2021-03-07 10:38:19 · 190 阅读 · 0 评论 -
java类加载机制
java类加载机制参考资料:java类加载机制[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bX7ZG3sG-1614827353041)(https://pics0.baidu.com/feed/37d12f2eb9389b50828b0dfd61271ed9e6116ec5.jpeg?token=d636526e80bfc081f77f2572a772fe0f&s=B1B25D32819E4DCA56C9C0CE020090B2)]各个区域作用参考原创 2021-03-04 11:09:21 · 98 阅读 · 1 评论 -
java类加载机制
java类加载机制参考资料:java类加载机制[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-emugNfh6-1614761394684)(https://pics0.baidu.com/feed/37d12f2eb9389b50828b0dfd61271ed9e6116ec5.jpeg?token=d636526e80bfc081f77f2572a772fe0f&s=B1B25D32819E4DCA56C9C0CE020090B2)]各个区域作用原创 2021-03-03 16:50:11 · 68 阅读 · 1 评论 -
hashMap原理
各种集合类继承关系hashMap put原理首先写个测试方法, 初始化size为2,put几个值,再get查询,debug看方法里执行了什么HashMap<Integer, String> hashMap = new HashMap<>(2);hashMap.put(1, "aaaPh1");hashMap.put(2, "aaaPh2");hashMap.put(3, "aaaPh3");hashMap.put(4, "aaaPh4");hashMa.原创 2021-02-26 14:13:54 · 82 阅读 · 0 评论 -
spring怎么解决循环依赖
1. 过程演示关于Spring bean的创建,其本质上还是一个对象的创建,既然是对象,一定要明白一点就是,一个完整的对象包含两部分:当前对象实例化和对象属性的实例化。在Spring中,对象的实例化是通过反射实现的,而对象的属性则是在对象实例化之后通过一定的方式设置的。理解这一个点之后,对于循环依赖的理解就已经帮助一大步了,我们这里以两个类A和B为例进行讲解,如下是A和B的声明:@Componentpublic class A { private B b; public void setB原创 2021-02-24 16:01:16 · 79 阅读 · 0 评论