Loading

随笔分类 -  Java

摘要:Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行Debug。 前一篇文章已经介绍了反射调用的底层原理,其实在实际中对大多数Java使用者来说更关系的是如何 阅读全文
posted @ 2020-02-07 11:04 throwable 阅读(4267) 评论(0) 推荐(0) 编辑
摘要:前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行Debug。 本文主要介绍反射调用的底层实现,当然还没有能力分析JVM的实现,这里只分析到最终Nat 阅读全文
posted @ 2020-02-07 11:02 throwable 阅读(1902) 评论(0) 推荐(0) 编辑
摘要:前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行Debug。 本文主要介绍一个使用反射一定会遇到的问题-反射调用异常处理。 反射调用异常处理 反射调 阅读全文
posted @ 2020-02-07 11:01 throwable 阅读(5356) 评论(0) 推荐(1) 编辑
摘要:前提 其实在前面写过的《深入分析Java反射(一)-核心类库和方法》已经介绍过通过类名或者java.lang.Class实例去实例化一个对象,在《浅析Java中的资源加载》中也比较详细地介绍过类加载过程中的双亲委派模型,这篇文章主要是加深一些对类实例化和类加载的认识。 类实例化 在反射类库中,用于实 阅读全文
posted @ 2020-02-07 11:00 throwable 阅读(1813) 评论(0) 推荐(0) 编辑
摘要:动态代理的简介 Java动态代理机制的出现,使得Java开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。Java 阅读全文
posted @ 2020-02-07 10:58 throwable 阅读(1279) 评论(0) 推荐(0) 编辑
摘要:前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行Debug。 本文主要介绍反射中可能用到的两个比较特殊的类型,数组和枚举,分别对应java.lang 阅读全文
posted @ 2020-02-07 10:53 throwable 阅读(1466) 评论(0) 推荐(0) 编辑
摘要:前提 Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行Debug。 本文主要介绍反射的基本概念以及核心类Class、Constructor、Method、 阅读全文
posted @ 2020-02-07 10:50 throwable 阅读(1509) 评论(0) 推荐(0) 编辑
摘要:前提 这篇文章主要基于JDK11的源码和最近翻看的《深入理解Java虚拟机-2nd》一书的部分内容,对JDK11中的Reference(引用)做一些总结。值得注意的是,通过笔者对比一下JDK11和JDK8对于java.lang.ref包的相关实现,发现代码变化比较大,因此本文的源码分析可能并不适合于 阅读全文
posted @ 2020-02-07 00:10 throwable 阅读(3435) 评论(1) 推荐(5) 编辑
摘要:前提 分布式事务是微服务实践中一个比较棘手的问题,在笔者所实施的微服务实践方案中,都采用了折中或者规避强一致性的方案。参考Ebay多年前提出的本地消息表方案,基于RabbitMQ和MySQL(JDBC)做了轻量级的封装,实现了低入侵性的事务消息模块。本文的内容就是详细分析整个方案的设计思路和实施。环 阅读全文
posted @ 2020-02-05 21:43 throwable 阅读(5282) 评论(6) 推荐(5) 编辑
摘要:前提 最近一直在看Netty相关的内容,也在编写一个轻量级的RPC框架来练手,途中发现了Netty的源码有很多亮点,某些实现甚至可以用苛刻来形容。另外,Netty提供的工具类也是相当优秀,可以开箱即用。这里分析一下个人比较喜欢的领域,并发方面的一个Netty工具模块 - Promise。 环境版本: 阅读全文
posted @ 2020-01-24 10:05 throwable 阅读(1655) 评论(0) 推荐(0) 编辑
摘要:前提 今天(2020-01-18)在编写Netty相关代码的时候,从Netty源码中的ThreadDeathWatcher和GlobalEventExecutor追溯到两个和线程上下文类加载器ContextClassLoader内存泄漏相关的Issue: ThreadDeathWatcher cau 阅读全文
posted @ 2020-01-20 08:37 throwable 阅读(2035) 评论(0) 推荐(0) 编辑
摘要:前提 前置文章: 《基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇》 《基于Netty和SpringBoot实现一个轻量级RPC框架-Server篇》 《基于Netty和SpringBoot实现一个轻量级RPC框架-Client篇》 前一篇文章简单介绍了通过动态代理完成了Cli 阅读全文
posted @ 2020-01-18 14:59 throwable 阅读(1589) 评论(0) 推荐(0) 编辑
摘要:前提 前置文章: 《基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇》 《基于Netty和SpringBoot实现一个轻量级RPC框架-Server篇》 前一篇文章相对简略地介绍了RPC服务端的编写,而这篇博文最要介绍客户端(Client)的实现。RPC调用一般是面向契约编程的, 阅读全文
posted @ 2020-01-16 23:00 throwable 阅读(1205) 评论(0) 推荐(0) 编辑
摘要:前提 前置文章: Github Page:《基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇》 Coding Page:《基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇》 在前置的《基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇》一文中 阅读全文
posted @ 2020-01-15 00:16 throwable 阅读(1542) 评论(0) 推荐(0) 编辑
摘要:基于Netty和SpringBoot实现一个轻量级RPC框架-协议篇 前提 最近对网络编程方面比较有兴趣,在微服务实践上也用到了相对主流的RPC框架如Spring Cloud Gateway底层也切换为Reactor-Netty,像Redisson底层也是使用Netty封装通讯协议,最近调研和准备使 阅读全文
posted @ 2020-01-12 22:52 throwable 阅读(2016) 评论(0) 推荐(1) 编辑
摘要:前提 最近由于业务发展,需要调研一套完善和主流的基础架构,进行中台化(微服务)的实施,考虑到技术栈切换到SOFAStack。既然整个体系都切换到蚂蚁金服的技术栈,那么自然考虑一些基础组件如服务注册发现、配置管理等都切换为阿里的技术栈。考虑到目前比较热的服务发现组件是Nacos,需要调研SpringB 阅读全文
posted @ 2020-01-02 17:48 throwable 阅读(31169) 评论(4) 推荐(3) 编辑
摘要:前提 最近在做创业项目的时候因为有比较多的新需求,需要频繁基于DDL生成Mybatis适合的实体、Mapper接口和映射文件。其中,代码生成器是MyBatis Generator(MBG),用到了Mybatis-Generator-Core相关依赖,这里通过一篇文章详细地分析这个代码生成器的使用方式 阅读全文
posted @ 2019-12-16 01:11 throwable 阅读(55585) 评论(7) 推荐(13) 编辑
摘要:前提 当我们在生产环境部署了SpringBoot应用的时候,虽然可以通过Jenkins的构建状态和Linux的ps命令去感知应用是否在新的一次发布中部署和启动成功,但是这种监控手段是运维层面的。那么,可以提供一种手段能够在应用层面感知服务在新的一次发布中的构建部署和启动是否成功吗?这个问题笔者花了一 阅读全文
posted @ 2019-12-10 08:18 throwable 阅读(1043) 评论(0) 推荐(0) 编辑
摘要:前提 Hystrix在2018年11月20日之后已经停止维护,最后一个提交记录是:Latest commit 3cb2158 on 20 Nov 2018,最后一个正式版本为1.5.18。鉴于目前所在公司的技术栈是Spring Cloud,熔断和降级组件主要用的还是Hystrix,这里就Hystri 阅读全文
posted @ 2019-11-29 23:59 throwable 阅读(13313) 评论(0) 推荐(3) 编辑
摘要:前提 最近忙于业务开发、交接和游戏,加上碰上了不定时出现的犹豫期和困惑期,荒废学业了一段时间。天冷了,要重新拾起开始下阶段的学习了。之前接触到的一些数据搜索项目,涉及到请求模拟,基于反爬需要使用随机的User Agent,于是使用Redis实现了一个十分简易的UA池。 背景 最近的一个需求,有模拟请 阅读全文
posted @ 2019-11-29 01:12 throwable 阅读(644) 评论(0) 推荐(1) 编辑