- 博客(19)
- 资源 (19)
- 收藏
- 关注
原创 1.java的协程_虚拟线程
终于盼到loom转正了,当看到jdk19预览api的时候心情那个激动。期待已久的协程终于来了,再也不羡慕别人家的go孩子,咱终于可以理直气壮的说一句:咱也有,怕啥?
2022-11-10 00:25:12
847
原创 3.BST
核心逻辑二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作.适用范围插入一
2021-06-10 17:47:01
130
原创 2.LRU
核心逻辑算法复杂度 O(1)为了实现O(1)的算法复杂度,采用双向链表,有序.最长时间未调用的数据放置在末位,超过size直接移调.插入数据直接放在头节点上面.哈希表+双向链表实现.package com.zby.calc;import com.zby.calc.A_BinaryHeap.Student;import java.util.HashMap;import java.util.Map;/** * * LRU ==> Least Recently Used 低
2021-06-10 16:03:21
144
原创 1.二叉堆---C.二叉堆的升级使用,延时队列--DelayQueue
延时队列插入时带时间,到时间可取出,比较典型的的二叉堆使用场景–每次获取只需头节点,插入波动大,无需查看排序.此处队列是线程安全的.全程覆盖读写锁.放入节点 /** * Inserts the specified element into this delay queue. * * @param e the element to add * @return {@code true} * @throws NullPointerException
2021-06-10 14:55:58
124
原创 1.二叉堆---B.java中的数据结构---PriorityQueue
上一章写了一个基础优先级队列的实现,现在看下Doug Lea大神的源码.PriorityQueue是一个无界队列,无界的实现采用数组扩张 /** * Increases the capacity of the array. * * @param minCapacity the desired minimum capacity */ private void grow(int minCapacity) { int oldCapacity
2021-06-09 19:43:26
125
原创 1.二叉堆---A.基础优先级队列
定义:二叉堆是一种特殊的堆,二叉堆是完全二元树(二叉树)或者是近似完全二元树(二叉树)。二叉堆有两种:最大堆和最小堆。最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。使用范围:读写算法复杂度都是O(logn),是一种相对平衡的数据结构,用于优先级队列,保证头结点最优,之后节点无序,每次获取之后执行树深度重排.直接上代码–二叉堆实现package com.zby.calc;import java.util.Random;/**
2021-06-09 17:59:34
100
原创 netty内存管理--分配过程
背景在网络请求操作中,涉及大量读写,背后是大量的内存申请和回收。 这部分工作通过GC来完成,会带来比较大的GC压力,频繁的申请和释放内存对GC不友好,因此Netty开发了一个内存池模块用于内存的分配和回收来降低GC压力。核心思路就是事先申请一大块内存进行分配和回收,来避免JVM的GC操作。透过测试,内存池可以有效的平稳GC抖动。netty在成功获取unsafe实例之后,进行堆外内存分配,否则进行堆内存分配。return PlatformDependent.hasUnsafe() ? this.dire
2021-04-26 17:42:35
259
原创 java中的双刃剑--unsafe
前言一直以内不能操作内存就是横在javaer心中的一根刺,都是计算机语言咋就不能访问下内存呢?但是其实java一直都是具备这个能力的,unsafe实现了c的核心库,包括申请内存,释放内存, CAS。java并发包就大量使用了unsafe类,netty的zero copy也由此而来,IO性能得以大幅提升。获取unsafetry { getUnsafe = Unsafe.class.getDeclaredField("theUnsafe"); getUnsafe.setAccessible(true)
2021-04-26 15:18:48
139
原创 3.1 dubbo SPI ServiceLoader
java ServiceLoader一个加载接口实现的加载器。针对接口的不同实现,全部加载进jvm。eg:公共接口=》animal 接口 实现类=》dog 实现类,cat 实现类。公共接口package com.test.ice;/** * * 动物类接口 * * @author zby * @time 2021/4/23 16:28 * **************************************** */public interface Animal
2021-04-25 11:40:41
150
原创 4.3 dubbo provider启动之终极之战 netty启动详解
启动过程中的‘阻碍’讲完了,该进入正题了。这里启动选择的默认dubbo协议的netty4。从看源码的角度要剔除掉很多的干扰项,dubbo为了兼容,所以扩展了很多东西,其中有大部分可能是不会使用使用,在研究的dubbo的时候一定要选择重点逻辑研究,比如像一些配置怎么在这里,这个配置从哪里来,到哪里去,可以暂缓研究,也可以不去研究,到亲手操刀写的时候,再研究配置和数据传递为何要这样写不迟,这样能以...
2019-04-25 12:10:18
1253
1
原创 4.2 dubbo provider启动之dubbo filter 详解
provider启动之前之Filter扩展。filter的概念在很多框架框架都有涉及,实现的手法也是大同小异,链式调用,一环勾着一环,有点类似栈的思想,先进后出。dubbofilter原生的filter挺多,足够常规使用,自实现后面再讲。现在由于在说provider的启动,所以先讲源码,把启动流程捋顺。dubbofilter的初始化在于ProtocolFilterWrapper这个...
2019-04-24 18:55:45
3852
原创 4.1 dubbo provider启动之Wrapper包装类 详解
在进入发布者provider初始化过程前,先说明wrapper这个关键的包装类,在各类接口分发调用的时候起至关重要的作用。承接入口调用,分发到对应的包装类的方法里面。1.初始化接口的wrapper,所有Wrapper都由getWrapper(接口类)获得,命中缓存则获取对应wrapper,未命中则构建。String[] methods = Wrapper.getWrapper(in...
2019-04-22 18:27:56
1668
原创 3 dubbo SPI
简介: 介绍完一堆API配置,终于开始核心部分了,dubbo各种插件的基础-->SPI。SPI 全称为 Service Provider Interface,是一种服务发现机制。dubbo中SPI使用较多,多采用可插拔组件形式,例如传输结构定义和序列化使用等,SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为...
2019-04-19 18:03:47
313
原创 2.5 RegistryConfig 注册中心配置
代码示例:RegistryConfig registry = new RegistryConfig();// <host:port> 注册中心服务器地址registry.setAddress("redis://*.*.*.*:6380");// 注册中心地址协议,支持dubbo, http, local三种协议,分别表示:dubbo地址、http地址、本地注册中心regi...
2019-04-19 16:58:28
4604
原创 2.4 ReferenceConfig 客户端调用配置
代码示例:ReferenceConfig<DemoService> reference = new ReferenceConfig<>();reference.setApplication(new ApplicationConfig("dubbo-demo-api-consumer"));// 注册中心reference.setRegistry(new Regi...
2019-04-19 16:57:20
4277
原创 2.3 ServiceConfig 服务配置
代码示例:ServiceConfig<DemoServiceImpl> service = new ServiceConfig<>();service.setApplication(application);// 使用指定的协议暴露服务service.setProtocol(protocol);// 注册中心,推荐alibaba最新的nacosservic...
2019-04-19 16:53:40
2045
原创 2.2 ApplicationConfig 应用配置
代码示例:// 应用配置信息ApplicationConfig application = new ApplicationConfig("dubbo-demo-api-provider");// 版本号application.setVersion("1.0.0");// 负责人application.setOwner("345000890@qq.com");// 组织名称app...
2019-04-19 16:49:48
2428
原创 2.1 ProtocolConfig dubbo协议配置
代码示例:// 服务提供者协议配置ProtocolConfig protocol = new ProtocolConfig();// 协议名称protocol.setName("dubbo");//启动dubbo server的端口protocol.setPort(20880);// 服务提供方最大可接受连接数 ,0=>不限制protocol.setAcce...
2019-04-19 16:42:00
2811
转载 1 dubbo总体框架设计
框架设计整体设计图例说明: 图中左边淡蓝背景的为服务消费方使用的接口,右边淡绿色背景的为服务提供方使用的接口,位于中轴线上的为双方都用到的接口。 图中从下至上分为十层,各层均为单向依赖,右边的黑色箭头代表层之间的依赖关系,每一层都可以剥离上层被复用,其中,Service 和 Config 层为 API,其它各层均为 SPI。 图中绿色小块的为扩展接口,蓝...
2019-04-19 16:17:38
218
Spring3.x企业应用开发实战(包括源码)绝对完整版8
2013-07-31
Spring3.x企业应用开发实战(包括源码)绝对完整版7
2013-07-31
Spring3.x企业应用开发实战(包括源码)绝对完整版6
2013-07-31
Spring3.x企业应用开发实战(包括源码)绝对完整版5
2013-07-31
Spring3.x企业应用开发实战(包括源码)绝对完整版4
2013-07-31
Spring3.x企业应用开发实战(包括源码)绝对完整版3
2013-07-31
Spring3.x企业应用开发实战(包括源码)绝对完整版2
2013-07-31
Spring3.x企业应用开发实战(包括源码)绝对完整版
2013-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人