小白学习Java反射与动态代理 编程技术

小白学习Java反射与动态代理

一、反射介绍 1.0 动态语言和静态语言 动态语言 是一类在运行是可以改变其结构的语言:例如新的函数,对象,甚至代码可以被引进,已有的函数可以被删除或者是其他结构上的变化。通俗点就是说可以在运行时代码可以根据某些条件改变自身结构 主要动态语言:Object-C、JavaScript、PHP、Python等 静态语言 ...
阅读全文
JVM系列之:String.intern和stringTable Java

JVM系列之:String.intern和stringTable

StringTable是什么?它和String.intern有什么关系呢?在字符串对象的创建过程中,StringTable有起到了什么作用呢? 一切的答案都在本文中,快来看看吧。 intern简介 intern是String类中的一个native方法,所以它底层是用c++来实现的。感兴趣的同学可以去查看下JVM的源码了解更多的内容。 这里我们主要谈一下intern的作用。 in...
阅读全文
聊聊dubbo-go的DubboInvoker Java

聊聊dubbo-go的DubboInvoker

序 本文主要研究一下dubbo-go的DubboInvoker Invoker dubbo-go-v1.4.2/protocol/invoker.go // Extension - Invoker type Invoker interface { common.Node Invoke(context.Context, Invocation) Result } //////...
阅读全文
Java垃圾回收详解 Java

Java垃圾回收详解

1.GC介绍 什么是垃圾回收(GC)? 垃圾回收,顾名思义,便是将已经分配出去的,但却不再使用的内存回收回来,以便能够再次分配。 在 Java 虚拟机的语境下, 垃圾 指的是死亡的对象所占据的堆空间。 Java 虚拟机中的垃圾回收器采用 可达性分析 来探索所有存活的对象。它从一系列 GC Roots 出发,边标记边探索所有被引用的对象。 为了防止在标记过程中堆栈...
阅读全文
JVM-运行时数据区—方法区 Java

JVM-运行时数据区—方法区

在jdk7及以前,习惯上把方法区称为永久代。jdk8开始,使用元空间取代了永久代。 本质上,方法区和永久代并不等价。仅是对hotSpot而言的。《java虚拟机规范》对如何实现方法区,不做统一要求。例如:BEA JRockit/IBM J9中不存在永久代的概念。 现在看来,当年使用永久代,不是好的idea。导致Java程序更容易OOM(超过-XX:MaxPermSize上限)。 ...
阅读全文
手工编写简化版CommonsCollections6,带你实现Java8全版本反序列化利用 Java

手工编写简化版CommonsCollections6,带你实现Java8全版本反序列化利用

这是代码审计知识星球中《Java安全漫谈》的第十二篇文章。 本文带大家编写一个简化版的CommonsCollections6利用链,代码量相比于ysoserial减少50%,能够让大家更好理解。 上一篇文章我们详细分析了CommonsCollections1这个利用链和其中的LazyMap原理。但是我们说到,在Java 8u71以后,这个利用链不能再利用了,主要原因是 ...
阅读全文
看了这篇你就会手写RPC框架了 编程技术

看了这篇你就会手写RPC框架了

一、学习本文你能学到什么? RPC的概念及运作流程 RPC协议及RPC框架的概念 Netty的基本使用 Java序列化及反序列化技术 Zookeeper的基本使用(注册中心) 自定义注解实现特殊业务逻辑 Java的动态代理 自定义Spring Boot Starter 这里只是列出了你能从RPC框架源码中能学到的东西,本文并不会每个知...
阅读全文
Loading...