Java
ytao.top
一个技术人的成长过程中技术,观点,生活分享。
专注但不限于java相关技术。
个人博客:https://ytao.top
公众号:ytao
展开
-
Dubbo 负载均衡的实现
前言负载均衡是指在集群中,将多个数据请求分散在不同单元上进行执行,主要为了提高系统容错能力和加强系统对数据的处理能力。在 Dubbo 中,一次服务的调用就是对所有实体域 Invoker 的一次筛选过滤,最终选定具体调用的 Invoker。首先在 Directory 中获取全部 Invoker 列表,通过路由筛选出符合规则的 Invoker,最后再经过负载均衡选出具体的 Invoker。所以 Dubbo 负载均衡机制是决定一次服务调用使用哪个提供者的服务。整体结构Dubbo 负载均衡的分析入口是.原创 2020-05-10 10:33:47 · 348 阅读 · 0 评论 -
Java 线程基础,从这篇开始
线程作为操作系统中最少调度单位,在当前系统的运行环境中,一般都拥有多核处理器,为了更好的充分利用 CPU,掌握其正确使用方式,能更高效的使程序运行。同时,在 Java 面试中,也是极其重要的一个模块。线程简介一个独立运行的程序是一个进程,一个进程中可以包含一个或多个线程,每个线程都有属于自己的一些属性,如堆栈,计数器等等。同时,一个线程在一个时间点上只能运行在一个 CPU 处理器核心上,...原创 2020-04-21 09:02:58 · 198 阅读 · 0 评论 -
Dubbo 路由机制的实现
Dubbo 路由机制是在服务间的调用时,通过将服务提供者按照设定的路由规则来决定调用哪一个具体的服务。路由服务结构Dubbo 实现路由都是通过实现 RouterFactory 接口。当前版本 dubbo-2.7.5 实现该接口类如下:路由实现工厂类是在 router 包下由于 RouterFactory 是 SPI 接口,同时在获取路由 RouterFactory#getRouter...原创 2020-04-15 13:44:49 · 200 阅读 · 0 评论 -
你必须会的 JDK 动态代理和 CGLIB 动态代理
我们在阅读一些 Java 框架的源码时,基本上常会看到使用动态代理机制,它可以无感的对既有代码进行方法的增强,使得代码拥有更好的拓展性。通过从静态代理、JDK 动态代理、CGLIB 动态代理来进行本文的分析。静态代理静态代理就是在程序运行之前,代理类字节码.class就已编译好,通常一个静态代理类也只代理一个目标类,代理类和目标类都实现相同的接口。接下来就先通过 demo 进行分析什么是...原创 2020-04-06 15:38:34 · 340 阅读 · 0 评论 -
Netty中粘包/拆包处理
TCP 是基于流传输的协议,请求数据在其传输的过程中是没有界限区分,所以我们在读取请求的时候,不一定能获取到一个完整的数据包。如果一个包较大时,可能会切分成多个包进行多次传输。同时,如果存在多个小包时,可能会将其整合成一个大包进行传输。这就是 TCP 协议的粘包/拆包概念。本文基于 Netty5 进行分析粘包/拆包描述假设当前有123和abc两个数据包,那么他们传输情况示意图如下:...原创 2019-12-08 12:16:35 · 1031 阅读 · 0 评论 -
Scrapy爬虫及案例剖析
由于互联网的极速发展,所有现在的信息处于大量堆积的状态,我们既要向外界获取大量数据,又要在大量数据中过滤无用的数据。针对我们有益的数据需要我们进行指定抓取,从而出现了现在的爬虫技术,通过爬虫技术我们可以快速获取我们需要的数据。但是在这爬虫过程中,信息拥有方会对爬虫进行反爬处理,我们就需要对这些困难进行逐个击破。刚好前段时间做了爬虫相关的工作,这里就记录下一些相关的心得。本文案例代码地...原创 2019-12-05 09:07:07 · 1411 阅读 · 0 评论 -
初探Tomcat的架构设计
Tomcat 作为 servlet 容器实现,它是基于 Java 语言开发的轻量级应用服务器。因为 Tomcat 作为应用服务器,它有着完全开源,轻量,性能稳定,部署成本低等优点,所以它成为目前 Java 开发应用部署的首选,几乎每个Java Web开发者都有使用过,但是,你对 Tomcat 的整体设计有进行过了解和思考吗?本文将基于 Tomcat8 进行分析,具体版本为 Tomcat...原创 2019-11-25 20:23:35 · 947 阅读 · 0 评论 -
WebSocket实现Web端即时通信
前言WebSocket 是HTML5开始提供的一种在浏览器和服务器间进行全双工通信的协议。目前很多没有使用WebSocket进行客户端服务端实时通信的web应用,大多使用设置规则时间的轮询,或者使用长轮询较多来处理消息的实时推送。这样势必会较大程度浪费服务器和带宽资源,而我们现在要讲的WebSocket正是来解决该问题而出现,使得B/S架构的应用拥有C/S架构一样的实时通信能力。H...原创 2019-11-18 20:16:18 · 1290 阅读 · 0 评论 -
爱恨交织的红黑树
虐你千万遍,还要待她如初恋的红黑树,是否对她既欢喜又畏惧。别担心,通过本文讲解,希望你能有前所未有的感动。红黑树也是二叉查找树,但比普通的二叉查找树多一些特性条件限制,每个结点上都存储有红色或黑色的标记。因为是二叉查找树,所以他拥有二叉查找树的所有特性。红黑树是一种自平衡二叉查找树,在极端数据条件插入时(正序或倒叙)不会退化成类链状数据,可以更高效的在O(log(n))时间内完成查找,插入,...原创 2019-11-13 12:59:44 · 914 阅读 · 0 评论 -
二叉查找树的解读和实现
二叉查找树是将一组无序的数据构建成一颗有序数据的树,其设计思想与二分法类似。很好的提高了海量数据查找效率,使得由从头遍历到尾的方式转为二分查找的方式,时间复杂度从O(n)降低为O(log(n))。概念结点:树上的每个元素。根结点:没有父结点的结点。父结点:结点的上一级结点。子结点:结点的下一级结点。叶子结点:没有子结点的结点。兄弟结点:拥有同一父结点的相邻结点。结点的度...原创 2019-11-03 23:15:26 · 982 阅读 · 0 评论 -
Java诊断利器Arthas优雅排查生产环境
前言Arthas 是Alibaba开源的Java诊断工具。在线排查问题,无需重启;动态跟踪Java代码;实时监控JVM状态。对分秒必争的线上异常,Arthas可帮助我们快速诊断相关问题。下载安装下载Arthas的arthas-boot.jarwget https://alibaba.github.io/arthas/arthas-boot.jar下载arthas之后,先来了解...原创 2019-11-01 19:44:19 · 1635 阅读 · 0 评论 -
MyBatis启动之XMLConfigBuilder解析配置文件(二)
前言XMLConfigBuilder 是BaseBuilder(解析中会涉及到讲解)的其中一个子类,它的作用是把MyBatis的XML及相关配置解析出来,然后保存到Configuration中。本文就解析过程按照执行顺序进行分析,掌握常用配置的解析原理。使用调用XMLConfigBuilder进行解析,要进行两步操作,上篇文章中【MyBatis之启动分析(一)】有提到。实例化...原创 2019-11-01 13:08:07 · 583 阅读 · 0 评论 -
MyBatis之启动分析(一)
前言MyBatis 作为目前最常用的持久层框架之一,分析其源码,对我们的使用过程中可更好的运用它。本系列基于mybatis-3.4.6进行分析。MyBatis 的初始化工作就是解析主配置文件,映射配置文件以及注解信息。然后保存在org.apache.ibatis.session.Configuration,供后期执行数据请求的相关调用。Configuration 里有大量配置信息,在后面每涉及...原创 2019-10-28 23:59:55 · 375 阅读 · 0 评论