自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 跳表DEMO

在平衡树上,我们找到指定范围的小值之后,还需要以中序遍历的顺序继续寻找其它不超过大值的节点。一般来说,平衡树每个节点包含2个指针(分别指向左右子树),而skiplist每个节点包含的指针数目平均为1/(1-p),具体取决于参数p的大小。如果像Redis里的实现一样,取p=1/4,那么平均每个节点包含1.33个指针,比平衡树更有优势。平衡树的插入和删除操作可能引发子树的调整,逻辑复杂,而skiplist的插入和删除只需要修改相邻节点的指针,操作简单又快速。

2022-12-18 10:51:21 174

原创 BloomFilter 布隆过滤器

就是空间效率很高;查询效率高。空间效率高的原因就是不需要存储真实数据,只存储对应数据的一系列hash值,而hash值存在的碰撞现象也就决定了布隆的查询会出现误识别的现象;再者就是hash散列会出现碰撞的问题,导致了布隆也是不支持删除的,不然也会加剧误识别率。

2022-12-10 16:58:24 203 1

原创 【NIO学习介绍】

首先NIO的介绍在网上有很多,有叫New I/O的,也有叫 no-block-I/O的,其实这两种叫法都可以,因为NIO是Jdk1.4之后引入的新的I/O技术,用于提升原有只能阻塞形式I/O的性能。本文主要介绍NIO的一些概念:两个核心技术I/O 多路复用和三个主要组件。......

2022-08-04 23:05:53 253

原创 ES的基础

* 数据量特别大,需要各种复杂查询(全文搜索功能、相似度搜索与比较、模糊匹配、地理位置聚合、搜索内容多语言支持与分词支持等)、聚合并尽量实时的场景。* 大量数据写入频繁,但更新较少,查询较多的情况* 数据模型后期存在大概率变动或不确定性等(改数据库结构会导致业务代码不稳定性)* 数据体量较大或者增量较快但是变更较小的情况(如海量日志数据:ELK)es中有四中节点,四种不同类型的Node是一个node.master和node.data的true/false的两两组合负责保存和更新集群的一些元数据信息,之后同步

2022-06-16 14:30:57 1162

原创 Dubbo消费端重试导致服务提供方雪崩,保护插件Demo

1.思考1.问题点由于dubbo的配置的优先级问题,导致消费方的配置会将服务提供方的配置覆盖,而在默认的容错策略下会启动fail-over策略。这就会在消费方配置重试机制不合理或者使用默认规则但是短时间流量激增并且provider应用提供的对应dubbo服务rt较长的情况下会出现服务提供方雪崩问题的出现。然后后续依赖于这个Dubbo服务的其他服务消费方也会收到波及。2.思路1.想到的解决方案1.首先针对部分配置重新加载,加载策略自定义2....

2022-05-17 19:45:34 402

原创 dubbo服务雪崩处理方案以及思考?

1.雪崩的概念?【图1】目前越来越多公司开始使用微服务的开发模式,在项目中各种rpc服务的调用也是越来越多,随着团队扩建和项目激增,很多时候我们并不能很好的把握全链路的服务抗压能力。一旦在业务链路中的某几个环节出现短暂性故障不可用,而服务请求在用户因服务不可用而重复请求,又或者是dubbo、mq等框架、中间件的重试容错机制下,就有可能导致故障节点的故障被扩散-其他服务的资源被大量用于请求故障资源,严重的将会导致全链路服务的不可用现象出现。最初出现故障的可称为故障源,直接或者间接...

2022-04-30 22:45:56 440

原创 Dubbo容错策略-超时重试(version:2.7.7)

1.设计这些机制的原因我们在的远程服务调用的时候容易出现由于某些服务调用耗时过长而导致整个服务端线程资源耗尽,最终出现服务端雪崩的情况出现,而dubbo作为一款优秀的rpc框架,针对这种情况,提供了超时的机制并且配合其重试机制来避免一些网络抖动或者服务不可用导致的服务端雪崩和服务不稳定情况。2.如何使用(这里介绍注解的方式)如下分别是服务提供方和消费方的配置。//服务提供方的配置@Service(timeout = 3000, retries=2) //dubbo服务提供方的具体d

2022-04-13 10:37:22 5035

原创 Bean生命周期

作为开发我们可能每天都是写很多的业务Bean,在使用框架给的系统功能Bean。但是很多人也会觉得这个是八股文并不重要所以我们很多时候并不是很清楚的了解一个Bean生成的过程和顺序。Spring中一个Bean的产生过程主要包括了以下四个主流程:实例化 Instantiation 属性赋值 Populate初始化 Initialization 销毁 Destruction其中每一步又涉及到很多前置、后置的一系列的扩展接口,详细不铺开了,可以借鉴一下下图。详细流程建议还是写一个Demo直接debu

2022-02-25 15:54:51 163

原创 dubbo的异步调用

不可否认dubbo是一款十分棒的架构设计,但是可能对它了解的不够,在使用过程中也是遇到了很多问题。发现时间久了之前一些遇到的问题没有落文档,慢慢也都忘了,这是一种损失我认为。所以就最近一次遇到的问题做一下笔记,如果有大佬看到有问题的地方可以指正一下。 目前的项目由于应用分的比较彻底,各应用之间的dubbo也是比较常见频繁,于是也就出现了一系列的服务治理问题,期间在服...

2020-03-24 23:29:16 617

原创 并发编程整理总结

并发编程总结1.线程1.1线程的实现这里展示最常见的两个(看代码吧),其实继承Thread这种如果看过源码的话你会发现也是去实现了Runnable接口。这里不做展开,感兴趣的可以自己跟一下源码。/** * @author XUWEIJIE * @since 2019/3/28 */public class T...

2019-03-28 22:31:19 283

原创 jvm参数和工具整理

打印垃圾回收时的配置:-verbose:gc -XX:+PrintGCDetials启用特定GC:-XX:+UseSerialGC指定堆内存大小: 最小:-Xms10M 最大:-Xmx20M指定新生代内存:-Xmn10M(这里是eden和两个Survivor的总大小,一般不去改动,对系统性能影响较大)指定eden大小:-XX:SurvivorRatio=8指定大对象标准...

2019-03-07 15:43:43 430

原创 Java类加载整理总结

1.概述一个Java文件从编写到最后地执行其实总结起来就是两步:1.编译;2.运行。编译,即把我们写好的java文件,通过javac命令编译成字节码,也就是我们常说的.class文件。运行,则是把编译生成的.class文件交给Java虚拟机(JVM)执行。而虚拟机把描述类的数据从Class文件加载到内存中,并对数据进行验证,准备,解析,初始化,最终生成虚拟机可以直接使用的java类型,这个过程...

2019-02-27 14:20:39 226

原创 redis学习总结

一.什么是redis二.redis支持的数据结构以及对应的适应场景三.为什么要用redis(redis的优点)四.redis使用中的一些问题和处理方案一.什么是redis?Redis 是一个高性能的key-value(存储系统)内存数据库,和memcached类似。 二.redis支持的数据结构以及对应的适应场景?redis支持的数据结构有如下5种:Stri...

2019-02-25 13:27:04 159

原创 探索SpringBoot启动源码

一. 启动原理分析@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}  这是一个标准的springboot启动项目...

2019-02-23 17:20:49 234

原创 数据库索引

     数据库的索引,使用比较多了,但是对于原理一直懵懂,今天来彻底整理一下。索引的2种数据结构:  1.平衡树(非二叉;主流的关系型数据库一般都默认用它,MySQL里常用的索引数据结构有B+树索引和哈希索引两种)  2.哈希桶备注:先说下,在MySQL文档里,实际上是把B+树索引写成了BTREE。一.平衡树     首先这里只b+tree,关于B树概念,可自行百度。通过...

2019-02-21 16:03:55 361

转载 数据库事务、隔离级别、传播行为介绍

事务的基本要素(ACID)的定义:          1.原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。   2.一致性(Consistency):事务开始前和结束后,数据库的完整性约束...

2019-02-21 12:16:10 203

翻译 浅谈JVM内存模型

分析一下JVM的以下模块:1.程序计数器2.java虚拟机栈3.本地方法栈4.堆5.方法区6.直接内存1.首先是程序计数器 java程序的运行过程中java编译器先将java文件编译成字节码文件,然后JVM把每一条要执行的字节码交给解释器,翻译成对应的机器码,然后由解释器执行。JVM解释执行字节码文件就是JVM操作Java解释器进行解释执行字节码文...

2018-09-01 12:14:48 211

原创 浅谈CountDownLatch

# CountDownLatch         最近复习线程池相关内容整理了一些资料:新手可以参考一下,大佬如果觉得有误也请指出。        CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,可以把它看成是一个计数器,其内部维护着一个count计数,只不过对这个计数器的操作都是原子操作,同时只能有一个线程去操作这个计数器(类似于),...

2018-08-27 21:18:28 211

翻译 zookeeper一些配置随笔杂记

# ZooKeeper      是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现。在实际开发中分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协 调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列 等功能。本人接触zookeeper时间不久,而由于项目技术栈限制目前只...

2018-08-20 21:23:13 187

转载 java代理随笔杂记

正向代理: 1.通过一个代理去访问一些原本无访问到的网络资源。2.例如防火墙(VPN加速器):一些情况下由于访问一些网站会带来不可预料的危险, 但是我们又不得不访问时就可以使用正向代理,在正向代理配置中设置 影藏自身的一些基本信息,达到安全访问的目的。 反向代理: 一般用于分流用户请求到多个真实服务器上使用,均衡负载:1. 用户在实际使用中其实访问的负载均衡的ip而不是实际的服务器...

2018-08-20 21:16:15 168

原创 线程池使用:CPU密集型和IO密集型

#1 cpu密集型: cpu使用率较高(也就是一些复杂运算,逻辑处理),所以线程数一般只需要cpu核数的线程就可以了。 这一类型的在开发中多出现的一些业务复杂计算和逻辑处理过程中。#1 I/O密集型: cpu使用率较低,程序中会存在大量I/O操作占据时间,导致线程空余时间出来,所以通常就需要开cpu核数的两倍的线程, 当线程进行I/O操作cpu空暇时启用其他线程继续使...

2018-08-19 11:05:35 25217 5

原创 初识docker和jenkins

      Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。而Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,无论用的是什么平台。这是一个免费的源代码,可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术。Jenkins是一种软件允许持续集成。  初期在本机安装了一个centos7,然后在虚拟机中安装了d...

2018-08-19 10:38:15 4961

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除