捉虫大师 捉虫大师
3年前
这个Dubbo注册中心扩展,有点意思!
今天想和大家聊聊Dubbo源码中实现的一个注册中心扩展。它很特殊,也帮我解决了一个困扰已久的问题,刚刚在生产中用了,效果很好,迫不及待想分享给大家。Dubbo的扩展性非常灵活,可以无侵入源码加载自定义扩展。能扩展协议、序列化方式、注册中心、线程池、过滤器、负载均衡策略、路由策略、动态代理等等,甚至「扩展本身」也可以扩展。在介绍今天的这个注册中心扩展之前,先抛
Wesley13 Wesley13
4年前
java高并发设计(十一)
一直在写java高并发的博客,突然想起自己刚开始学习相关技术开发的境况,一切都只是理论,案例是最能讲解的地方,后面的章节将从采用netty通信实现rpc的服务调用,采用hession序列化来设计netty的编码解码操作。该项目将涉及到单例设计,回调设计,数据安全设计,数据加载设计,面向接口设计。会涉及java自身的线程池,多线程执行,高并发数据安全,同时也出
Wesley13 Wesley13
4年前
Java中对于位运算的优化以及运用与思考
引言随着JDK的发展以及JIT的不断优化,我们很多时候都可以写读起来易读但是看上去性能不高的代码了,编译器会帮我们优化代码。之前大学里面学单片机的时候,由于内存以及处理器性能都极其有限(可能很多时候考虑内存的限制优先于处理器),所以很多时候,利用位运算来节约空间或者提高性能,那么这些优秀的思想,放到目前的Java中,是否还有必要这么做呢?我们逐一思
Wesley13 Wesley13
4年前
Java 并发编程:任务执行器 Executor 接口
任务执行器(Executor)是一个接口,位于java.util.concurrent包下,它的作用主要是为我们提供任务与执行机制(包括线程使用和调度细节)之间的解耦。比如我们定义了一个任务,我们是通过线程池来执行该任务,还是直接创线程来执行该任务呢?通过Executor就能为任务提供不同的执行机制。执行器的实现方式各种各样,常见的包括同步执行器、一对一执行
Wesley13 Wesley13
4年前
Java并发基础
一、多线程基础知识1.进程和线程进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统运行程序的基本单位;系统运行一个程序即是一个进程从创建、运行到消亡的过程。线程:进程内部的一个独立执行单元;一个进程可以同时并发的运行多个线程,
Stella981 Stella981
4年前
JVM系列【6】GC与调优6
JVM系列笔记目录虚拟机的基础概念class文件结构class文件加载过程jvm内存模型JVM常用指令GC与调优GC常用参数\XmnXmsXmxXss年轻代最小堆最大堆栈空间\XX:UseTLAB使用
可莉 可莉
4年前
2200 Star!功能强大的 Java 字节码编辑器!
【导语】:Recaf是一款功能十分强大的Java字节码编辑器,基于objectweb的ASM构建,可以更好地显示文件的属性,并为字节码编辑提供方便。简介Recaf是一个易于使用的现代的Java字节码编辑器,它抽象了Java程序的复杂性,自动处理栈帧和常量池的生成,它是一种辅助编辑工具,提供修改字节码的界面,可以提高工作效率。当然,使用这个工具
Wesley13 Wesley13
4年前
Java 源码 —— ConcurrentHashMap 读为什么不加锁
最近在复习准备一些面试,偶尔会抽些零碎时间逛一下之前关注的公众号,看看有没有哪些被自己遗漏的地方,或者是一些能补充知识的文章,比如前几天看到一篇讲MySQL插入100W条数据要花多久的文章,点进去看到了久违的PreparedStatement,顺便复习了一下,原来数据库不仅能识别纯的SQL还可以识别执行计划,PreparedStatement利用了连接池
Stella981 Stella981
4年前
SpringBoot 2,用200行代码完成一个一二级分布式缓存
缓存系统的用来代替直接访问数据库,用来提升系统性能,减小数据库负载。早期缓存跟系统在一个虚拟机里,这样内存访问,速度最快。后来应用系统水平扩展,缓存作为一个独立系统存在,如redis,但是每次从缓存获取数据,都还是要通过网络访问才能获取,效率相对于早先从内存里获取,还是不够逆天快。如果一个应用,比如传统的企业应用,一次页面显示,要访问数次redis,那效果
Wesley13 Wesley13
4年前
Java动态追踪技术探究
引子在遥远的希艾斯星球爪哇国塞沃城中,两名年轻的程序员正在为一件事情苦恼,程序出问题了,一时看不出问题出在哪里,于是有了以下对话:“Debug一下吧。”“线上机器,没开Debug端口。”“看日志,看看请求值和返回值分别是什么?”“那段代码没打印日志。”“改代码,加日志,重新发布一次。”“怀疑是线程池的问题,重启会破坏现场。”