自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(296)
  • 资源 (4)
  • 收藏
  • 关注

原创 9.2-源码分析:Dubbo Remoting 层 Buffer 缓冲区

AbstractChannelBuffer 抽象类实现了 ChannelBuffer 接口的大部分方法,其核心是维护了以下四个索引。readerIndex、writerIndex(int 类型):通过 readBytes() 方法及其重载读取数据时,会后移 readerIndex 索引;通过 writeBytes() 方法及其重载写入数据的时候,会后移 writerIndex 索引。

2024-03-30 18:18:01 602

原创 9.0-源码分析:Dubbo Remoting 层核心接口分析

如上图所示,这里的 get*() 方法是获得 Endpoint 本身的一些属性,其中包括获取 Endpoint 的本地地址、关联的 URL 信息以及底层 Channel 关联的 ChannelHandler。send() 方法负责数据发送,两个重载的区别在后面介绍 Endpoint 实现的时候我们再详细说明。最后两个 close() 方法的重载以及 startClose() 方法用于关闭底层 Channel ,isClosed() 方法用于检测底层 Channel 是否已关闭。

2024-03-30 18:17:10 731

原创 currenthashmap 原理在多线程环境中如何保证线程安全性?

ConcurrentHashMap 是线程安全的,意味着它可以保证多个线程同时对它进行读写操作时,不会出现数据不一致的情况,也不会导致 JDK1.7 及之前版本的 HashMap 多线程操作导致死循环问题。但是,这并不意味着它可以保证所有的复合操作都是原子性的,一定不要搞混了!复合操作是指由多个基本操作(如put、get、remove、containsKey等)组成的操作,例如先判断某个键是否存在containsKey(key),然后根据结果进行插入或更新put(key, value)。

2024-03-28 20:50:16 491

原创 9-Dubbo源码分析之:Remoting层:Dubbo Serialize 层:多种序列化算法,总有一款适合你

在本课时,我们首先介绍了 Java 序列化的基础知识,帮助你快速了解序列化和反序列化的基本概念。然后,介绍了常见的序列化算法,例如,Arvo、Fastjson、Fst、Kryo、Hessian、Protobuf 等。最后,深入分析了 dubbo-serialization 模块对各个序列化算法的接入方式,其中重点说明了 Hessian2 序列化方式。

2024-03-28 20:48:55 622

原创 Map的putIfAbsent, compute,computeIfAbsent, computeIfPresent说明

【代码】Map的putIfAbsent, compute,computeIfAbsent, computeIfPresent说明。

2024-03-26 20:44:33 117

原创 CopyOnWriteArrayList原理

在 ArrayList 的类注释上,JDK 就提醒了我们,如果要把 ArrayList 作为共享变量的话,是线程不安全的,推荐我们自己加锁或者使用 Collections.synchronizedList 方法,其实 JDK 还提供了另外一种线程安全的 List,叫做 CopyOnWriteArrayList。

2024-03-26 20:44:02 1046

原创 2-dubbo源码 : 源码环境搭建

为便于你更好理解和学习,在开始搭建 Dubbo 源码环境之前,我们先来简单介绍一下 Dubbo 架构中的核心角色,帮助你简单回顾一下 Dubbo 的架构,也帮助不熟悉 Dubbo 的小伙伴快速了解 Dubbo。下图展示了 Dubbo 核心架构:Dubbo 核心架构图Registry:注册中心。负责服务地址的注册与查找,服务的 Provider 和 Consumer 只在启动时与注册中心交互。

2024-03-24 08:41:06 704

原创 1-dubbo源码从一个简单的服务提供者Demo开始

如果自己平时经常使用dubbo,这个对您来说是非常的简单,如果平时不怎么用,或者在公司里面有封装好的平台,自己使用的时候,只需要引入一下bean或者写一些配置就可以使用了,我建议还是看看下面的,毕竟学习还是系统的用比较好,我就是属于公司有自己的rpc框架平台,自己只需要进入sdk,稍微配置一下就可以,完全是高度封装的产品。

2024-03-24 08:37:12 862

原创 Arrays.binarySearch 详解

Arrays.binarySearch 详解Arrays类的binarySearch()方法,可以使用二分搜索法来搜索指定的数组,以获得指定对象。该方法返回要搜索元素的索引值。。binarySearch()方法提供多种重载形式,用于满足各种类型数组的查找需要。

2024-03-23 15:26:13 398

原创 dubbo 源码系列之-集群三板斧---负载均衡(二)

我们紧接上一课时介绍了 LoadBalance 接口的剩余三个实现。我们首先介绍了LeastActiveLoadBalance 实现,它使用最小活跃数负载均衡算法,选择当前请求最少的 Provider 节点处理最新的请求;接下来介绍了 RoundRobinLoadBalance 实现,它使用加权轮询负载均衡算法,弥补了单纯的轮询负载均衡算法导致的问题,同时随着 Dubbo 版本的升级,也将其自身不够平滑的问题优化掉了;

2024-03-23 15:16:24 1348

原创 dubbo 源码系列之-集群三板斧---负载均衡(-)

负载均衡集群容错服务路由这3个概念容易混淆。他们都描述了怎么从多个 Provider 中选择一个来进行调用。那他们到底有什么区别呢?下面我来举一个简单的例子,把这几个概念阐述清楚吧。有一个Dubbo的用户服务,在北京部署了10个,在上海部署了20个。根据配置的路由规则,如果杭州发起的调用,会路由到比较近的上海的20个 Provider。根据配置的随机负载均衡策略,在20个 Provider 中随机选择了一个来调用,假设随机到了第7个 Provider。

2024-03-23 15:10:33 1225

原创 使用TreeMap

TreeMap基于红黑树(Red-Black tree)实现。该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。TreeMap的基本操作 containsKey、get、put 和 remove 的时间复杂度是 log(n)。另外,TreeMap是非同步的。它的iterator 方法返回的迭代器是fail-fastl的。

2024-03-23 14:42:08 897

原创 netty基础_12.用 Netty 自己实现简单的RPC

远程过程调用,是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程两个或多个应用程序都分布在不同的服务器上,它们之间的调用都像是本地方法调用一样(如图)过程:调用者(Caller),调用远程API(Remote API调用远程API会通过一个RPC代理(RpcProxyRPC代理再去调用RpcInvoker(这个是PRC的调用者)RpcInvoker通过RPC连接器(RPC连接器用两台机器规定好的PRC协议()把数据进行编码。

2024-03-20 23:00:00 964

原创 Registry dubbo的注册中心

在 Dubbo 中,一般使用 Node 这个接口来抽象节点的概念。Node不仅可以表示 Provider 和 Consumer 节点,还可以表示注册中心节点。Node 接口中定义了三个非常基础的方法(如下图所示):getUrl() 方法返回表示当前节点的 URL;isAvailable() 检测当前节点是否可用;destroy() 方法负责销毁当前节点并释放底层资源。AbstractRegistry 本地缓存:降低 ZooKeeper 压力的一个常用手段。

2024-03-16 16:52:04 919

原创 8.2-简易版 RPC 框架实现 2.0 -netty实现

当前已经有很多成熟的协议了,例如 HTTP、HTTPS 等,那为什么我们还要自定义 RPC 协议呢?从功能角度考虑,HTTP 协议在 1.X 时代,只支持半双工传输模式,虽然支持长连接,但是不支持服务端主动推送数据。从效率角度来看,在一次简单的远程调用中,只需要传递方法名和加个简单的参数,此时,HTTP 请求中大部分数据都被 HTTP Header 占据,真正的有效负载非常少,效率就比较低。

2024-03-16 16:02:43 1185

原创 8-简易版 RPC 框架实现 1.0 -http实现

其实这个在一定意义上算不上rpc 框架, 只能说是帮我们简单的理解rpc工作的流程,比只看概念具体一点,方便理解。

2024-03-16 14:51:51 1236

原创 3-dubbo源码 : Dubbo 的配置总线:抓住 URL,就理解了半个 Dubbo

在本课时,我们重点介绍了 Dubbo 对 URL 的封装以及相关的工具类,然后说明了统一契约的好处,当然也是 Dubbo 使用 URL 作为统一配置总线的好处,最后我们还介绍了 Dubbo SPI、Provider 注册、Consumer 订阅等场景中与 URL 相关的实现,这些都可以帮助你更好地感受 URL 在其中发挥的作用。这里你可以想一下,在其他框架或是实际工作中,有没有类似 Dubbo URL 这种统一的契约?欢迎你在留言区分享你的想法。高版本的Url已经做了一定的改造,后面再做一个记录。

2024-03-16 14:24:27 814

原创 Zookeeper 作为Dubbo端注册中心基础知识

ZooKeeper 集群中三种角色的节点(Leader、Follower 和 Observer)都可以处理 Client 的读请求,因为每个节点都保存了相同的数据副本,直接进行读取即可返回给 Client。对于写请求,如果 Client 连接的是 Follower 节点(或 Observer 节点),则在 Follower 节点(或 Observer 节点)收到写请求将会被转发到 Leader 节点。

2024-03-16 11:26:13 1037

原创 zookeeper基础学习之六: zookeeper java客户端curator

Curator是Netflix公司开源的一套zookeeper客户端框架,解决了很多Zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册Watcher和NodeExistsException异常等等。Patrixck Hunt(Zookeeper)以一句“Guava is to Java that Curator to Zookeeper”给Curator予高度评价。Curator的maven依赖。

2024-03-16 10:44:13 1086 1

原创 Java实体和JSON之间的相互转换

(1)、JSON.toJSONString(user),会丢掉值为空的字段。(2)、JSON.toJSONString(user, SerializerFeature.WriteMapNullValue),保留值为空的字段,并初始化为null。(3)、JSON.toJSONString(user, SerializerFeature.WriteNonStringValueAsString),会将非空的字段值加上"“,并丢掉没有初始化的字段。

2024-03-06 14:47:26 948

原创 Hive / Presto 行转列 列转行

array_agg转为数组,array_distinct去重,array_join将数组用逗号间隔连接成字符串。collect_set转为数组并去重,concat_ws将数组用逗号间隔连接成字符串。###炸裂 + map。

2024-01-20 10:48:10 524

原创 jvm_下篇_补充_MAT从入门到精通

尽管JVM提供了自动内存管理的机制,试图降低程序员的开发门槛,确实也实现了这一目标,在日常开发中,我们一般都不需要关心对象的内存释放。JVM大部分都是使用trace算法来判断一个对象是否该被回收,那么JVM只能回收那些从gc roots不可达的对象。如果我们在使用某些大的对象、集合对象或者一些三方包里的资源,忘记及时释放资源的话,还是会造成JVM的内存泄漏或内存浪费的问题。

2023-12-25 07:48:48 902

原创 jvm_下篇_补充:使用 OQL 语言查询对象信息

同步更新:https://gitee.com/vectorx/NOTE_JVM。

2023-12-25 07:47:50 1056

原创 jvm_下篇_补充:浅堆深堆与内存泄露

同步更新:https://gitee.com/vectorx/NOTE_JVM。

2023-12-25 07:47:13 1216

原创 JVM_下篇_第五章:GC日志分析

[GC (Allocation Failure) [PSYoungGen: 2047K->504K(2560K)] 2047K->868K(9728K), 0.0068657 secs] [Times: user=0.02 sys=0.00, real=0.01 secs] GC:表明进行了一次垃圾回收,前面没有Full修饰,表明这是一次Minor GC ,注意它不表示只GC新生代,并且现有的不管是新生代还是老年代都会STW。Allocation Failure:表明本次引起GC的原.

2023-12-25 07:46:23 882 1

原创 jvm_下篇_第四章:JVM 运行时参数

Java 提供了 java.lang.management 包用于监视和管理 Java 虚拟机和 Java 运行时中的其他组件,它允许本地或远程监控和管理运行的 Java 虚拟机。通过使用这些 api,可以监控应用服务器的堆内存使用情况,设置一些阈值进行报警等处理。Hotspot JVM 有两种模式,分别是 server 和 client,分别通过-server 和-client 模式设置。同样地,通过 java -version 命令:可以看到 mixed mode 字样,代表当前系统使用的是混合模式。

2023-12-25 07:45:59 858

原创 jvm_下篇_第三章:JVM 监控及诊断工具-GUI 篇

1.无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等(这对定位应用性能瓶颈至关重要)。2.要求用户登录到目标 Java 应用所在的宿主机上,使用起来不是很方便。3.分析数据通过终端输出,结果展示不够直观。为此,JDK 提供了一些内存泄漏的分析工具,如 jconsole,jvisualvm 等,用于辅助开发人员定位问题,但是这些工具很多时候并不足以满足快速定位的需求。所以这里我们介绍的工具相对多一些、丰富一些。JDK 自带的工具。

2023-12-25 07:45:21 896

原创 jvm_下篇_第二章:JVM 监控及诊断工具-命令行篇

性能诊断是软件工程师在日常工作中需要经常面对和解决的问题,在用户体验至上的今天,解决好应用的性能问题能带来非常大的收益。Java 作为最流行的编程语言之一,其应用性能诊断一直受到业界广泛关注。可能造成 Java 应用出现性能问题的因素非常多,例如线程控制、磁盘读写、数据库访问、网络 I/O、垃圾收集等。想要定位这些问题,一款优秀的性能诊断工具必不可少。体会 1:使用数据说明问题,使用知识分析问题,使用工具处理问题。体会 2:无监控、不调优!简单命令行工具。

2023-12-25 07:44:51 1041

原创 jvm_下篇_第一章:概述篇

支付宝三面:JVM 性能调优都做了什么?有做过 JVM 内存优化吗?从 SQL、JVM、架构、数据库四个方面讲讲优化思路JVM 的编译优化jvm 性能调优都做了什么JVM 诊断调优工具用过哪些?二面:jvm 怎样调优,堆内存、栈空间设置多少合适三面:JVM 相关的分析工具使用过的有哪些?具体的性能调优步骤如何如何进行 JVM 调优?有哪些方法?如何理解内存泄漏问题?有哪些情况会导致内存泄漏?如何解决?三面:JVM 如何调优、参数怎么调?从 SQL、JVM、架构、数据库四个方面讲讲优化思路。

2023-12-25 07:44:08 743

原创 07_ElasticSearch:倒排序索引与分词Analysis

首先,字符串按顺序通过每个字符过滤器。他们的任务是在分词前整理字符串。一个字符过滤器可以用来去掉HTML,或者将 & 转化成 and。#1、定义名为“custom_analyzer”的自定义分析器:大写转为小写},# 2、该字段my_text使用custom_analyzer分析器"_doc": {

2023-09-23 19:41:53 333

原创 06_ElasticSearch:索引和文档的CURD

注:dynamic:是动态映射的开关,有3种状态:true 动态添加新的字段–缺省;推荐使用)false 忽略新的字段,不会添加字段映射,但是会存在于_source中;1、若索引“tehero_test1”不存在,则创建一个名为“tehero_test1”的 index,同时若id = 1 的文档存在,则更新;ES提供了一系列对index修改的语句,包括副本数量的修改、新增字段、refresh_interval值的修改、索引分析器的修改(后面重点讲解)、别名的修改。3、插入 id=3 的文档;

2023-09-23 19:41:24 253

原创 spring工具-StopWatch使用介绍

StopWatch是Spring核心包中的一个工具类,它是一个简单的秒表工具,可以计时指定代码段的运行时间以及汇总这个运行时间,使用它可以隐藏使用 System.currentTimeMillis() ,提高应用程序代码的可读性并减少计算错误的可能性。StopWatch对象不是设计为线程安全的,并且不使用同步。一般是在开发过程中验证性能,而不是作为生产应用程序的一部分。

2023-09-21 07:36:55 216

原创 04_kibana 安装和配置指南

这个是干啥的呢?目前我理解就是数据的展示我们安装的目的是 请求访问ES, 如果没有安装完全可以使用postman代替不过这个调试的时候有提示比较好, 所以我就安装了。

2023-09-16 16:00:39 161

原创 03_ElasticSearch下载安装

ElasticSearch是java开发的,jdk环境是必不可少的,至少有jre环境。

2023-09-16 15:59:19 2209

原创 02_elasticsearch 核心概念

集群中的一个节点,节点也有一个名称(默认是随机分配的),节点名称很重要(在执行运维管理操作的时候),默认节点会去加入一个名称为“elasticsearch”的集群,如果直接启动一堆节点,那么它们会自动组成一个elasticsearch集群,当然一个节点也可以组成一个elasticsearch集群。es中的最小数据单元,一个document可以是一条客户数据,一条商品分类数据,一条订单数据,通常用JSON数据结构表示,每个index下的type中,都可以去存储多个document。

2023-09-16 15:59:00 344

原创 01_Elasticsearch入门介绍

百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)百度!= 搜索,这是不对的垂直搜索(站内搜索)互联网的搜索:电商网站,招聘网站,新闻网站,各种appIT系统的搜索:OA软件,办公自动化软件,会议管理,日程管理,项目管理,员工管理,搜索“张三”,“张三儿”,“张小三”;有个电商网站,卖家,后台管理系统,搜索“牙膏”,订单,“牙膏相关的订单”

2023-09-16 15:58:39 282

原创 mac根目录下创建文件不能问题

原因mac os引入了系统完整性保护(SIP)机制,无法在/、/usr目录下新建文件解决办法1:打开终端,输入显示enabled表示启用了SIP,接下来需要禁用SIP;重启mac,按住command+R,进入恢复模式;点击屏幕左上角实用工具第四栏:终端,打开终端,输入csrutil disable,重启;重新挂载后即可新建文件夹了,但此次挂载会在电脑重启后失效,即重启后又重新恢复为Read-only file system;

2023-09-12 06:52:20 919

原创 springboot 与 Redis整合

SpringBoot 操作数据:Spring-data jpa jdbc mongodb redis!SpringData 也是和SpringBoot 齐名的项目!说明:在SpringBoot2.X 之后,原来使用的jedis被替换成了lettucejedis: 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool 连接池,更新BIO模式lettuce: 采用netty ,实例可以在多个线程中进行共享,不存在线程不安全的情况,可以减少线程数据,更想NIO模式整合

2023-09-02 21:32:17 190 1

原创 springboot web开发登录拦截器

多大的

2023-09-02 21:30:53 1105 1

原创 springboot web开发springmvc自动配置原理

前言我们也知道springboot启用springmvc基本不用做什么配置可以很方便就使用了但是不了解原理,开发过程中遇到点问题估计就比较头疼,不管了解的深不深入,先巴拉一番再说…下面我们先看看官网…我的版本是2.3.2版本,发现官网改动也比较大…不同版本自己巴拉下吧,结构虽然变化了,但是内容变的不是很多…有变动的 都标有: covered later in this documentspringmvc 自动配置原理官网上说明自动配置在Spring的默认设置之上添加了以下功能Content

2023-09-02 21:29:50 1090 1

golang 入门级 保姆教程

golang 入门级 保姆教程

2023-10-23

01-es安装和入门体验

01-es安装和入门体验

2023-08-30

Srping启动流程涉及的资源初始化过程.svg

Srping启动流程涉及的资源初始化过程.svg

2021-11-06

笔记spring启动过程代码级别描述.txt

spring启动过程代码级别描述,.......上传为了方便自己日后复习

2021-11-06

Spring boot 配置参数一览.pdf

spring boot配置参数详细说明,方便在csdn看到我博客的同学获取到这一份资料,值得下载

2020-05-22

高效人士的七个习惯

这是一个很好的电子书,值的我们深深的思考,我看完感觉很好就上传了!

2013-08-06

空空如也

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

TA关注的人

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