自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (5)
  • 收藏
  • 关注

原创 16、过滤器Filter

1、实现com.alibaba.dubbo.rpc.Filterpublic class LogFilter implements Filter{ public Result invoke(Invoker<?> invoker, Invocation invocation) throws RpcException { System.out.println("before invoke..."); Result result = invoker.invoke(invocation);

2020-09-30 16:01:09 170

原创 15、令牌验证

令牌验证  通过令牌验证在注册中心控制权限,以决定要不要下发令牌给消费者,可以防止消费者绕过注册中心访问提供者,另外通过注册中心可灵活改变授权方式,而不需修改或升级提供者可以全局设置开启令牌验证:<!--随机token令牌,使用UUID生成--><dubbo:provider token="true" />或<!--固定token令牌,相当于密码--><dubbo:provider token="123456" />也可在服务级别设置:

2020-09-30 15:58:51 498

原创 14、并发控制和连接控制

并发控制  样例 1    限制 com.foo.BarService 的每个方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:<dubbo:service interface="com.foo.BarService" executes="10" />  样例 2    限制 com.foo.BarService 的 sayHello 方法,服务器端并发执行(或占用线程池线程数)不能超过 10 个:<dubbo:service interface="com.fo

2020-09-30 15:54:54 576

原创 13、事件通知

dubbo提供了oninvoke、onreturn、onthrow3个事件  oninvoke:调用之前执行,如果被调用的服务有参数,那么oninvoke也必要有和被调用服务一样的参数  onreturn:调用之后执行,至少有一个入参,第一个入参是返回值,其余是调用服务的参数  onthrow:抛出异常后执行,至少一个参数,类型为被抛出服务异常的父类或其本身,其余是调用服务的参数代码示例:消费端:1、定义通知接口和实现类public interface Notify { void onret

2020-09-30 15:50:30 187

原创 12、参数回调

摘要:当调用远程服务的时候,远程服务也可以调用消费者。1、编写对应的接口public interface IHelloWorld { int save(CallbackService callbackService);}public interface CallbackService { void callback();}2、实现类public class HelloWorldImpl implements IHelloWorld { public int save(CallbackS

2020-09-30 15:48:33 198

原创 11、异步调用

异步调用只能在消费端配置异步调用  基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成并行调用多个远程服务,相对多线程开销较小。1、配置xml,只需要在reference里面新增async=true即可。<dubbo:reference interface="com.hdd.api.IHelloWorld" id="helloWorld" cache="lru" timeout="5000" async="true"></dubbo:reference>2

2020-09-30 15:35:19 153

原创 10、结果缓存

缓存只作用于消费端。缓存类型  lru(least recently used): 基于最近最少使用原则删除多余缓存,保持最热的数据被缓存。  threadlocal: 当前线程缓存,比如一个页面渲染,用到很多 portal,每个 portal 都要去查用户信息,通过线程缓存,可以减少这种多余访问。  jcache 与 JSR107 集成,可以桥接各种缓存实现。示例:<dubbo:reference interface="com.hdd.api.IHelloWorld" id="hello

2020-09-30 15:30:56 77

原创 9、服务分组

当一个服务有多种实现类的时候,可以用group来区分服务:<dubbo:service group="feedback" interface="com.xxx.IndexService" /><dubbo:service group="member" interface="com.xxx.IndexService" />消费:<dubbo:reference id="feedbackIndexService" group="feedback" interface="

2020-09-30 15:28:33 213

原创 8、多注册中心配置

多注册中心注册: <dubbo:registry id="chinaRegistry" address="10.20.141.150:9090" /> <dubbo:registry id="intlRegistry" address="10.20.154.177:9010" default="false" /> <!-- 向中文站注册中心注册 --> <dubbo:service interface="com.alibaba.hello

2020-09-30 15:26:51 212

原创 7、多协议配置以及dubbo协议详解

提供者指定协议: <dubbo:protocol name="dubbo" port="20880" /> <dubbo:protocol name="rmi" port="1099" /> <!-- 使用dubbo协议暴露服务 --> <dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" protoc

2020-09-30 15:09:18 711

原创 6、直连提供者

可以绕过注册中心而直接连接指定的服务。配置方式:XML:<dubbo:registry address="zookeeper://127.0.0.1:2181" check="true" subscribe="false"></dubbo:registry><dubbo:reference id="xxxService" interface="com.alibaba.xxx.XxxService" url="dubbo://localhost:20890" />

2020-09-28 17:09:33 77

原创 5、线程模型

线程模型  如果事件处理的逻辑能迅速完成,并且不会发起新的 IO 请求,比如只是在内存中记个标识,则直接在 IO 线程上处理更快,因为减少了线程池调度。但如果事件处理逻辑较慢,或者需要发起新的 IO 请求,比如需要查询数据库,则必须派发到线程池,否则 IO 线程阻塞,将导致不能接收其它请求。如果用 IO 线程处理事件,又在事件处理过程中发起新的 IO 请求,比如在连接事件中发起登录请求,会报“可能引发死锁”异常,但不会真死锁。因此,需要通过不同的派发策略和不同的线程池配置的组合来应对不同的场景:&

2020-09-28 17:06:26 170

原创 4、负载均衡策略

dubbo的负载均衡有4种,默认的是random loadBalance。random loadbalance:按权重随机调用。如果所有的权重都一样,则随机调用。否则按照权重之和取随机数。 根据权重之和生成一个随机数,然后和具体的服务实例的权重相减做偏移量,然后取权重小于0的。 比如随机数为10,某一个服务实例的权重是12,10-12<0,那么该服务实例被调用。roundrobin LoadBalance轮询,按公约后的比例来设置轮询比例。存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,

2020-09-28 10:45:48 67

原创 3、集群容错

节点说明:  Invoker:封装了provider地址和service接口信息  Directory:相当于是Invoker的集合,它的值是可变化的,比如注册中心推送的变更数据。  Cluster:将Directory里的多个Invoker伪装成一个Invoker,伪装过程包含了容错逻辑,默认是Failover,调用失败立即调用另一个。  Router:从多个Invoker中按照路由规则选出子集,比如读写分离,应用隔离等。  LoadBalance:从多个Invoker中选出具体的一个用于本次.

2020-09-26 17:58:56 220

原创 2、dubbo简单配置

示例:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://w

2020-09-26 17:27:30 99

原创 1、dubbo简介

  dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC(remote procedure call)远程服务调用方案,以及作为SOA(service oriented architectrue)服务治理方案架构  角色简介:    Container:服务运行容器    Provider:暴露服务的服务提供方    Consumer:调用远程服务的服务消费方    Registry:服务注册和发现的注册中心。    Monitor:统计服务调用次数和调用时间的监控中心  调用

2020-09-26 16:50:57 82

原创 7、虚拟机类加载机制

类加载周期  类加载的生命周期分为加载、验证、准备、解析、初始化、使用、卸载7个阶段,其中验证、准备、解析统称为连接。    加载:      1、通过一个类的全限定名来获取定义此类的二进制字节流。      2、将这个字节流所代表的静态存储结构转换为方法区的运行时数据结构。      3、在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据访问接口。    验证:大致分为文件格式验证、元数据验证、字节码验证、符号引用验证    准备:正式为类变量分配内存

2020-09-26 16:43:17 64

原创 6、jdk命令行工具

1、jps(jvm process status tools):虚拟机进程状况工具  格式:jps [option] [hostid]    option可选值有:     -q:只输出LVMID(本地虚拟机ID),省略主类的名称      示例:       [admin@TQJSDevServer ~]$ jps -q                    32183                    23395                    29045     -m:输出

2020-09-26 16:25:36 81

原创 5、内存分配与回收策略

对象优先分配在Eden区  新生代将被划分为Eden空间和两个Survivor空间,Eden空间和Survivor空间默认比例是8:1,新生代和老年代默认比例是1:2,可以通过-XX:SurvivorRatio设置,创建一个对象,首先会被分配到Eden空间,当Eden空间不足时,会触发Minor GC,将Eden空间存活的对象移动到From Survivor空间,对象每经历过一次GC之后,GC年龄加1,当GC年龄达到指定的阈值时,会晋升到老年代。@Test public void testAlloca

2020-09-26 15:59:39 104

原创 4、垃圾收集算法和垃圾收集器

垃圾收集算法  标记清除    定义:标记需要回收的对象,在内存回收的时候,只需要回收掉已标记的对象即可。    适用场景:适用于大量对象存活的场景。    缺点:      1、如果堆中有大量对象需要回收,会导致标记和清除过程的执行效率降低。      2、内存碎片化。标记清除后会有大量的内存碎片,内存碎片太多会导致在需要分配大对象的情况下没有足够的连续内存分配。...

2020-09-26 15:33:31 139

原创 3、对象的死亡判断

如何判断一个对象是否可被回收?  引用计数法:为对象维护一个引用计数,每当对象被引用时,计数器加1,引用失效,则减1,但是引用计数法不能解决对象互相引用的情况。比如obj1.a = obj2, obj2.a = obj1,此时虽然设置了obj1=null,obj2=null,但是obj1和obj2的引用计数还在。  可达性分析算法:java虚拟机采用的就是该算法。通过一系列称为“GC Roots”的对象作为起始节点,从这些节点开始向下搜索,搜索过程所走过的路径称为引用链。当一个对象到GC Roots之间

2020-09-26 15:29:27 69

原创 2、对象的内存分配方式和内存布局

内存分配方式:  指针碰撞:基于堆内存是绝对规整的,已使用的内存放在一边,未使用的放在另一边,中间放个指针,分配内存的时候,只要把指针向空闲内存移动与对象大小相等的位置即可。  空闲列表: 基于堆不是规整的,已使用和未使用的内存交互在一起,虚拟机需要维护一个列表,记录哪些内存是可用的,分配内存的时候,需要从列表中查找出一块足够大的内存分配给对象实例,然后更新列表记录。选择哪种分配方式由java堆是否规整决定,而java堆是否规整又由所采用的垃圾收集器是否具体空间压缩整理的能力TLAB(Thread

2020-09-26 15:26:48 350

原创 1、java内存区域

运行时数据区包括程序计数器、虚拟机栈、本地方法栈、堆、方法区。**程序计数器:**线程私有的。当前线程执行字节码的行号指示器。**虚拟机栈:**线程私有的。描述的是java方法执行的线程内存模型。生命周期和线程相同,每个java方法被执行的时候,都会同步创建一个栈帧(方法运行期的基本数据结构)用来保存局部变量表、操作数栈、动态连接、方法出口等信息。每个方法被调用到执行结束的过程,就对应着一个栈帧在虚拟机栈入栈到出栈的过程。局部变量表:存放了编译期间可知的java各种基本数据类型、对象引用以及ret

2020-09-26 15:05:49 76

Redis开发与运维

由付磊、张益军编著的《Redis开发与运维》 是一本从开发、运维两个角度总结了Redis实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例与应用技巧的书籍。

2018-09-05

jqzoom2.3,另附示例代码和jqzoom2.3文档

jqzoom2.3,能让你的图片放大,本插件小巧实用,另附示例代码和jqzoom2.3文档,傻瓜式操作

2014-10-21

mybatis-3.2.2的jar包以及源代码,另外还有mybatis的PDF文档

mybatis-3.2.2的jar包以及源代码,另外还有mybatis的PDF文档

2014-10-21

贵美商城源代码(包含素材)

贵美商城源代码(包含素材)这是我们上机课做的项目,分享一下。

2013-09-17

空空如也

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

TA关注的人

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