JAVA
着急的蜗牛
前进茫然
展开
-
Dubbo源码介绍
Dubbo是阿里的一个分布式服务框架介绍 Dubbo通过Zookeeper注册服务及获取服务注册信息,并使用JAVA spi机制生成服务,使用RPC协议远程调用服务,具体实现使用了Netty调用服务,这样Dubbo本身是无法使用全局事务,需要借助额外TCC事务。 生成 Dubbo服务可以在服务端注册后,调用端引用服务端的API,并连接到注册中心。就可以获取服务端注册的服务类相关信息,调用端面需原创 2017-08-20 16:30:25 · 263 阅读 · 0 评论 -
阅读TOMCAT 8源码(一)
阅读TOMCAT 8源码(一)了解TOMCAT工作主体流程 :启动监听端口创建线程 tomcat 是通过socket服务及多线程来构建容器的,并通过java的nio来获取请求数据并写回返回数据1、启动 启动是在网上阅读其它前辈的笔记的,目前学习源码感觉找源头比较痛苦,TOMCAT还好,有一个统计一的源码入口,其它的框架类感觉不太好找,有好的方法同学请不吝赐教 TOMCAT的原创 2017-08-07 11:07:33 · 447 阅读 · 0 评论 -
Eclipse 在线安装SVN的(SVN CONNECTOR按官方指引不成功)
使用的当前最新的Eclipse 4.7 版本安装安装方式是使用在线安装:在INSTALL NEW SOFTWAR中输入地址:http://download.eclipse.org/releases/juno,在加载出来的插件列表中,输入SUB来过滤出SVN插件。接下来都按提示来操作安装完SVN后,还需要安装SVN CONNECTOR,通过WINDOWS-PREFERENS-TEAM-S原创 2017-08-28 18:04:52 · 9499 阅读 · 0 评论 -
JVM(一)
JVM(一) JVM JAVA的虚拟机,包含PC寄存器、本地方法栈、JAVA栈,JAVA堆、方法区,常量池,JAV之所以能跨平台、跨系统无障碍运行,是因为JAVA虚拟机将JAVA的字节码翻译成机器识别的机器码。包含PC寄存器本地方法栈JAVA栈*JAVA堆方法区常量池PC寄存器 PC寄存器保存正在执行的方法对应的字节码地址,每个线程都有一个PC寄存器JAVA虚拟机支付多个线程同原创 2017-10-05 15:08:42 · 335 阅读 · 0 评论 -
JVM(二)
JAVA虚拟机执行JVM的执行都是通过字节码指令来执行。如两个int类型数据相加通过iadd指令,所以JAVA文件经过编译后,可能形成的是各种指令。同步的实现JAVA的同步使用两个指令来实现monitorenter,monitorexit,同步块是使用这两个指令显示的达到锁的效果,当monitorenter进入后,线程就是持这个块的锁,阻塞了其它的访问,直到monitorexit指令被调用 ,同步方原创 2017-10-07 19:31:40 · 265 阅读 · 0 评论 -
ECLIPSE 使用MAT分析堆栈
ECLIPSE 使用MAT分析堆栈1、使用JPS -v查看当前运行的JAVA进程ID 2、使用jmap -dump:format=b,file=d:/heap/heap.bin 进程ID,打印堆栈 3、在eclipse中直接打开该堆栈文件 4、通过Historgram显示堆栈的大对象。也可以直接在首页中的Tab content显示Accumulated Objects by Class in原创 2017-10-30 16:27:20 · 4248 阅读 · 0 评论 -
Hystrix(豪猪)的原理探索(一)
在使用SpringBoot过程中,对于一些有瞬时高并发的项目中,存在被竞争对手刷接口的风险,导致单个模块或接口请求量持续高,继而导致后端服务处理不过来,持续的过程中接口就会发生线程阻塞,接着就会由单个模块引起雪崩导致整个应用宕机,这个时候就需要个在单个模块或接口在线程阻塞时,阻止雪崩效应产生(熔断),将阻塞控制在单个模块工或接口内。Hystrix就是这样的一个框架.。Hystrix可以...原创 2019-03-30 10:52:27 · 2371 阅读 · 0 评论 -
警惕static与volatile使用
在后端服务中,如果使用static做flag控制或做数据共享时,在高并发中有可能会遇到在A线程已经变更但在B线程中读到的还是脏数据,这是因为JAVA中每个线程都有一个私有线程,会复制主内存中变量做副本到私有线程中,当A线程更新静态变量时,先更新的是本地私有内存中的副本变量,然后再同步到主内存中,如:private static boolean stopRequested; pub...原创 2019-04-01 18:07:54 · 4582 阅读 · 1 评论