自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(152)
  • 资源 (1)
  • 收藏
  • 关注

原创 A 产品基础知识 mrd & crd

产品原型图线框图高保真原型图需求文档1、写前准备(信息结构图):2、梳理需求(产品结构图和用户流程图):3、原型设计(手绘原型,灰模原型,交互原型):4、撰写文档(PRD文档):5、用例文档(UML用例图、流程图):原型图线框图制作快速,低成本的描述,容易误解高保真原型图制作好,还原度高,保证设计效果,但是慢​需求文档(PRD/MRD):更多的业务逻辑说明PRD是产品需求文档。MRD时长需求文档BRD商业需求文档1、写前准备(信息结构图):参考​在写PRD文档之前,我们需

2020-06-03 00:03:58 876

原创 bytebuddy之advice详解 & 注解详解

注解列表一、 注解列表二、 demo 解析一、 注解列表注解值@OnMethodEnter表示这个方法会在,进入目标方法时调用,这个注解声明的方法必须是static。当目标的方法是constructor构造器时,@This只能写field,不能读field,或者调用方法skipOn()跳过一些方法prependLineNumber()如果为true,会改目标方法的行号inline()标识方法应该被内联到目标的方法中去suppress()忽

2020-07-21 12:24:35 9206 1

原创 plantUml 中文指南 plus

用简单语言绘制有用的umlplantuml1. 时序图* 基础概念* 元素速查表1.1 简单示例1.2 声明参与者1.3 在参与者中使用非字母符号1.4 给自己发消息1.5 修改箭头样式1.6 修改箭头颜色1.7 对消息序列编号1.8 Page Title, Header and Footer1.9 分割示意图 (可分多个图)1.10 组合消息1.11 给消息添加注释1.12 其他的注释1.13 改变备注框的形状1.14 Creole 和 HTML1.15 分隔符1.16 引用1.17 延迟1.18

2020-07-19 12:34:56 5407

原创 bytebuddy agentBuilder实用手册

实用手册1. 类加载池的策略(PoolStrategy)1.1 PoolStrategy.Default 懒加载策略1.2 PoolStrategy.Eager 积极加载策略1.3 PoolStrategy.ClassLoading 多层加载策略1.4 WithTypePoolCache 带缓存的加载策略1. 类加载池的策略(PoolStrategy)可以创建一个TypePool对象,TypePool负责对加载类的管理。TypePool typePool(ClassFileLocator clas

2020-07-17 17:27:16 2265

原创 bytebuddy实现原理分析 &源码分析 (三)- advice 详解

advice详解八、advice8.1 AsmVisitorWrapper8.1.1 ForDeclareFields8.1.1.1 Entry8.1.1.2 DispatchingVisitor8.1.1.3 ForDeclaredField 的内部实现8.1.4 看一个子类的实现8.1.2 ForDeclaredMethods8.1.3 Compound8.2 AsmVisitorWrapper 的实现类8.3 Advice :最核心的类8.3.1 ArgumentHandler8.3.1.1 For

2020-07-15 10:04:22 2106

原创 bytebuddy实现原理分析 &源码分析 (二)

bytebuddy实现原理分析 &源码分析四、字节码的操作(implementation ) pkg4.1 bytecode :pkg4.1.1 StackManipulation :cls4.1.1.1 StackManipulation的子类实现4.1.2 assign :pkg4.1.2.1 Assigner : cls1 Typing: in & cls2 核心方法: in3 EqualTypesOnly : in & impl4 Refusing : in & im

2020-07-13 20:52:09 2548

原创 opentracing的java-api详解

java-api详解一、opentracing的概念与术语二、opentracing 的规范2.1 模糊定义的部分2.2 清晰定义的部分2.2.1 tags & logs 表 (耳机标签)2.2.2 解释1 描述特殊模型的变量,比如rpc2 HTTP Server Tags3 Captured errors4 描述database5 Message Bus 信息交换三、opentracing 代码结构3.1 代码结构3.2 核心组件概念介绍TracerScopeManagerSpan1 生成一个新的

2020-07-10 12:20:12 3111 9

原创 bytebuddy实现原理分析 &源码分析 (一)

本文介绍byte buddy的源码。byte buddy 是 新一代用于动态修改字节码的工具。官方文档过于老旧和简陋,想要更好的使用 byte buddy 需要阅读源码。dep 是byte buddy的开发包,实现都在里面。码非常复杂。源码的编写是递进的,从对java的类型进行封装,到类的动态定义,运行时的加载,以及如何匹配修改字节码。但是作者明显是对jvm的知识非常了解,作者很清楚字节码在jvm的加载原理 & 很清楚添加或减少类的成员,到底应该对字节码做些什么,所以很难要从这个角度去分析源码。

2020-07-07 11:19:44 5345

原创 java 注解(Annotations)的字节码详解

注解一 、描述1.1 methods 方法表2.2 annotations的数据结构2.2.1 RuntimeVisibleAnnotations2.2.1.1 annotation的结构二、字节码2.1 源码2.2 编译后的bytecode注解可以标注在class、field、method上,同时又可以分为编译期的注解,运行期的注解。这篇文章会结合jvm规范3.1.5说明注解在字节码中的位置。一 、描述注解可以标注在class、interface、fileds、method、method para

2020-07-04 14:52:50 1691

翻译 bytebuddy的开发指南-翻译

bytebuddy的开发指南-翻译入门架构概览编码约定贡献路线图类型推断原文链接翻译这个的目的是,简述了源码的结构入门首先,您需要在本地计算机上创建Byte Buddy的副本。克隆存储库后,您可以使用Maven构建项目 。你的shell命令,这可能看起来像这样:git clone https://github.com/raphw/byte-buddy.gitcd byte-buddymvn package在开始编码之前,请确保所有测试用例都能成功运行。Byte Buddy的maste

2020-07-02 19:30:17 1875 1

原创 maven 导入asm的依赖 、 简单入门

asm项目结构1. 项目结构1.1. asm的仓库1.2 核心项目1.2.1 org.objectweb.asm 和 org.objectweb.asm.signature1.2.2 org.objectweb.asm.util1.2.3 org.objectweb.asm.commons1.2.4 org.objectweb.asm.tree1.2.5 org.objectweb.asm.tree.analysis1.3 其他项目1.3.1 asm-all和asm-parent1.4 maven依赖2.

2020-06-30 16:57:17 9724 4

原创 asm使用指南中文-md版&快速入门&详解

ASM使用指南中文版1. 介绍1.1 动机1.2 概述1.2.1 范围1.2.2 模型1.2.3 体系结构1.3。组织1.4。致谢2.班级2.1。结构体2.1.1。概述2.1.2。内部名称2.1.3。类型描述符2.1.4。方法描述符2.2。接口和组件2.2.1。介绍2.2.2。解析类2.2.3。生成类2.2.4。改变类2.2.5。删除班级成员2.2.6。添加班级成员2.2.7。转化链2.3。工具2.3.1。输入2.3.2 TraceClassVisitor2.3.3。CheckClassAdapter2.3

2020-06-22 12:13:13 8638 3

原创 b idea 的 uml类图

文章目录UML不陌生,在IDEA是如何展现的呢typesubtypeexampleextends 继承interface extends interfacepublic interface Aunt extends GrandFather, GrandMotherclass extendsabstract classpublic class Cousin extends Uncleclass extends classpublic class Son

2020-06-19 14:43:45 142

原创 b bytebuddy 之agentbuilder 的使用&API详解

Agentbuilder入门+API详解一、使用范式:创建一个agent二、 类结构2.1 嵌套的内部类2.2 方法使用中发现源码中的高阶用法根本看不懂,狠下心来试着结合文档和源码看下Agentbuilder。这篇文档会忽略java agent的基础知识,请自行百度。对过于繁琐的代码,会说明意图,细节等。首先会介绍用法的模板,涉及bytebuddy的各个类的作用,请参考bytebuddy简单入门然后是按照类的结构来介绍Agentbuilder的功能。希望我能写完吧,太难了。一、使用范式

2020-06-18 17:14:14 7749

原创 b Spring MVC 如何内嵌 tomcat & 流程分析

文章目录一、基本机制1.1 starter 的结构1.2 `autoconfigure` 自动装配模块1.3 `dependency` 依赖模块二 、Spring MVC装配tomcat 分析2.1 pom 分析2.2.1 jar包的依赖2.2.1 自动装配逻辑2.2 tomcat 的自动装配&mvc自动装配2.2.1 tomcat的装配逻辑: `TomcatWebServerFactoryCustomizer`2.2.2 回调函数加载 tomcat :`WebServerFactoryCustom

2020-06-17 18:43:18 1272

原创 b java 之 serviceLoader详解 & serviceLoader.load(XXX.class)

—> go to 总目录文章目录一、JNDI与ServiceLoder1.1 JNDI1.2 ServiceLoder二、ServiceLoder的SPI2.1 SPI的基本流程2.2 使用示例三、源码解析3.1 Iterable 接口3.2 内部类provider3.3 核心方法Load3.3.1 static ServiceLoader load(Class service, ClassLoader loader, Module callerModule)3.3.2 static Servi

2020-06-10 20:18:47 7603 3

原创 JVM(四):虚拟机性能监控与故障处理工具

给一个系统定位问题的时候,知识、经验是关键基础,数据是依据,工具是运用知识处理数据的手段数据 运行日志、异常堆栈、GC日志、线程快照(threaddump/javacore文件)、堆转储快照(heapdump/hprof文件)等。JDK命令行位置bin下的程序特点27KB 是jdk/lib/tools.jar的封装,核心实现再tools.jar中,tool.jar只支持hotpotjpsJVM Process Status Tool 显示指定系统内所有的HotSpot虚

2020-06-09 15:40:16 226

原创 JVM(三):GC回收

GC设计出发点:那些内存需要回收?什么时候需要回收?如何回收?应用:目前内存的动态分配与内存回收技术已经相当成熟,一切看起来都进入了“自动化”时代,那为什么我们还要去了解GC和内存分配呢?答案很简单:当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集成为系统达到更高并发量的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节程序基数器、虚拟机栈、本地方法栈、随着线程的生命周期,分配和xiao销毁确定。但是heap堆的很多内存运行时才能确定,所以本节聚焦于heap堆##对象是否

2020-06-09 15:34:42 234

原创 JVM(二):运行时数据区

本节会介绍jvm的内存设计,并通过制造error,来体验内存溢出,辅助理解。这张图是java虚机规范(SE7)描述的。对于各种不同的虚拟机,只要在逻辑上遵从这样的设计即可,比如将虚拟机栈和本地方法栈合并,但是可以被抽象两个区的功能可。灰色块是所有线程共享,白色是线程独享。##功能介绍具体请参考**《深入理解java虚拟机》** 这里的描述。这里仅概要记录自己理解的梳理。####程序计数器 Program Counter Register一块小的内存,每个线程都有独立的。一个f.

2020-06-09 15:28:20 136

原创 JVM(一):java技术体系与编译openjdk

利用java虚机的语言,和程序都属于java技术体系的中的一员。模块languagejvm虚机class文件格式javaAPI类库第三方java类库JDKlanguagejvm虚机javaAPI类库平台java Cardjava MEjava SEjava EE重要JVMSun HotSpot VMKVM 轻量但慢BEA JRockitIBMJ9 VM未来模块化混.

2020-06-09 15:26:34 273

原创 cpu架构体系 简单总结

文章目录两种指令集四大CPU体系1.ARM2.x86系列/Atom(安腾)3.MIPS系列4.PowerPC系列x86与ARM区别(冯诺依曼和arm)两种指令集originCISC 复杂指令集计算机RISC 精简指令集计算机Arm与x86 基础概念四大CPU体系ARM/MIPS/PowerPC均是基于精简指令集机器处理器的架构;X86则是基于复杂指令集的架构,Atom是x86或者是x86指令集的精简版1.ARMARM架构,过去称作进阶精简指令集机器(Advanced RISC Mach

2020-06-09 15:23:58 1437

原创 vmware:linux与宿主机windows共享文件

概要:利用vmware安装虚拟机,客户机(custom)经常需要和宿主机(host)进行文件共享,除了利用vmwaretool之外还可以利用硬盘挂载来实现文件共享。缺点是新添加文件时要开关机,fat32不能处理大于4G的大文件,作为没有U盘和vmwaretool的额外方法##环境host win10custom centos7software vmware workstation 15###新建分区windows与linux共同识别的文件系统(Filesystem) fat32,利用未.

2020-06-09 15:21:51 1156

原创 b java nio包的源码解析(完成部分)

文章目录一、Buffers1.1 Buffer.class1.2 ByteBuffer1.2.1 HeapByteBuffer1.2.2 MappedByteBufferDirectByteBuffer二、CharsetsCharsetCharsetDecoder和 CharsetEncoder三、Channels3.1 channel接口3.2 抽象接口3.3 实现类3.3.1 同步FileChannelDatagramChannelSocketChanel 和ServerScoketChannel3.3

2020-06-09 13:30:43 206

原创 b java 的线程模型介绍

文章目录基本概念什么是线程为什么要使用多线程线程java的优先级线程的状态Daemon 守护线程java 线程的运行线程的中断优雅的停止线程线程间的通信volatile和synchronized关键字等待/通知机制等待/通知的经典范式管道输入/输出流Thread.jion()使用ThreadLocal的使用**普通变量对象变量经典应用:超时等待基本概念什么是线程可以参考《现代操作系统》经典的unix具有强进程观念,后续的linux弱化了线程与进程的隔阂。进程是内核的概念,而线程的实现可以是内核+应用

2020-06-09 13:13:14 136

原创 b JMM java 内存模型

文章目录一、JMM内存模型运行过程描述二、详细介绍2.1 程序计数器2.2 虚拟机栈2.3 本地方法栈2.4 堆2.5 方法区三、直接内存和HEAP四、常见错误OOM 内存溢出内存泄露五、引用一、JMM内存模型运行过程描述该过程会串联启内存模型的各个功能便于理解JVM的行为,和JMM的作用java文件被编译成class文件。class包含常量信息,栈信息方法,和字节码指令,类的继承和依赖关系信息。jvm启动时,根据启动参数申请内存创建JVM实例,包括方法区,堆,虚机栈,本地方法栈,

2020-06-09 13:09:44 397

原创 b java 之字节码详解

文章目录一、Demo1.1 Demo.java1.2 反编译的真实java文件1.3 Demo.class1.4 javap -verbose1.5 字节码解析1.6 字节码结构(速查)1.7 常用表(速查)1.7.1 常量类型表`基本概念`正式表(14个)1.7.2 类访问权限控制表(修饰符)1.7.3(field)字段表访问权限控制(修饰符)字段表结构1.7.4 方法访问权限(修饰符)方法表结构1.7.5 属性表属性表的结构jvm预定义的属性表举例 code属性表LineNumberTable属性表结构

2020-06-09 12:46:12 585

原创 b java gc 收集器的组合介绍

文章目录一、GC机制二、 hotspot 垃圾收集gc组合说明 JDK gc(hotpot)-XX:+UseConcMarkSweepGC-XX:+UseG1GC-XX:+UseParallelGC-XX:+UseSerialGC-XX:+UseParNewGCMXBean二、堆内存gc组合三 gc算法一、GC机制二、 hotspot 垃圾收集新生代回收器:Serial、ParNew、Parallel Scavenge老年代回收器:Serial Old、Parallel Old、CMS整堆回收

2020-06-09 12:41:35 364

原创 b java 实用获取classpath的方式

文章目录常用获取类的相对path获取类的全path获取jar包中类的pathjava classpath的定义和常用函数。classpath类路径,启动java程序是,默认的classpath是jar包或者class的root路径常用获取类的相对path String classResourcePath =User2.class.getName().replaceAll("\\.", "/") + ".class"; System.out.println(classReso

2020-06-09 12:36:34 282

原创 b java 之 classloader介绍 &常用函数 Enumeration getResources(String name)

文章目录一 、概述1.1 jvm的生命周期1.2 JVM体系结构1.3 类加载过程(生命周期)1.4 类的加载过程1、Bootstrap ClassLoader-Xbootclasspath参数2、Extension ClassLoader3、System ClassLoader4、User-Defined ClassLoader1.5 双亲委派模型1.6 服务动态发现 serviceLoaderload(Class service, ClassLoader loader)二、源码分析一 、概述1.1

2020-06-09 12:34:26 455

原创 java 之 反射reflection源码分析

文章目录一、Class1.1 class定义继承和实现AnnotatedElementType 接口成员二、MemberAccessibleObjectModifier 对权限修饰符编解码2.1 Fields2.2 methods2.3 Constructors三、Array and Enum一、Class1.1 class定义继承和实现AnnotatedElement注解信息类的分类ANNOTATION 注解ENUM 枚举SYNTHETIC 编译器生成的类,比如内部类Typ

2020-06-09 12:28:08 1450 3

原创 b java 之JNDI介绍--- SPI机制 & Java.Util.serviceLoader

文章目录一、描述1.1 详细描述1.2 简要描述1.3 术语二、API和SPI规范三、教程(3.6 最重要)3.1 Naming and Directory 的概念3.1.2 Naming的概念1 命名系统(naming system)的概念2 binding ,References and Addresses3 Context4 命名系统和空间3.1.2 目录的概念3.2 JNDI 的总览3.2.1 Naming Package1 Context2 The Initial Context3.2.2 Di

2020-06-09 12:21:32 976

原创 java 的 JNI介绍

文章目录一、概述二、整体设计三、编译、加载和链接`System.loadLibrary()`四、本地方法名称的解析规则五、引用java对象六、异常的处理机制内容源于JDK API文档JNI脑图会列出JNI的功能框架。JNI技术不做深入,本篇文档描述JNI的使用场景、整体设计、和一个简单用例。方便记忆和理解JNI。一、概述提供调用第三方类库,和本地方式的方式。使用场景java的类库不支持运行平台的特性调用其他语言的库比如C要求函数的执行效率要高,封装成本地方法,被java调用JNI的功

2020-06-09 12:16:31 678

原创 b java I/O 类源码分析

文章目录一、目录1.1 I/O StreamsByte Streams 处理raw数据Character Streams 自动转化成本地字符集,字符对象的处理Buffered Streams 带缓存以减少native方法Scanning and Formatting 允许从不同格式文件读取I/O from the Command Line 从标准输入和控制台对象读入Data Streams 从私有的Data对象(比如zip等)和String值Object Streams 从对象中读写1.2 File I/O

2020-06-09 09:02:45 230

原创 b java.net包源码详解

文章目录一、Addresses1.1 InetAddressImpl1.2 InetAddress类1.3 SocketAddress二、SOCKET 套接字2.1 tcp socketScoket 类ServerSocket 类2.2 udp socketDatagramPacketDatagramSocketMulticastSocket2.3 SocketOptionsSocketImpl--TCP类AbstractPlainSocketPlainSocketImplHttpConnectSocket

2020-06-09 08:50:16 886

原创 b java注解 Annotation介绍

文章目录概述基础使用Annotation定义Annotation内置Annotation类型作用在代码上元注解:源码解析用途参考最准确的解释是官方文档,最容易接受的解释是第三方作者翻译,最彻底的理解是撸源码概述Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留

2020-06-09 08:38:53 160

原创 b log4j2 & logback &sl4g

文章目录一、日志框架描述Log4j2: java的日志工具 apache的一个组件Logback: 是log4j2作者的新作,用来取代log4j2,也是日志工具,更高效slfg: 一套抽象的日志接口,实现了日志工具的一些通用API,是一个抽象的日志框架。可以对接log4j2和logback所以logback 和 log4j2是两个不通的日志工具用于产生日志,而slfj是一套接口框架,提供通用的日志行为。slfj和logback等工具混合使用。性能比较二、log4j2【教程】ht

2020-06-09 08:36:35 274

原创 b java DateTime 简单介绍(待完善)

描述java 8 提供一系列新的 java时间ZoneDateTime和 LocalDateTimeZoneDateTime的格式是2019-12-25T19:08:19.120+08:00带有时区LocalDateTime的格式是2019-12-25T11:08:19.120不带时区还体现在 两个类使用toInstant转化为时间点时,由于localDateTime不带Zone时域,梭鱼需要ZoneOffset,而ZoneDateTime不需要ZoneDateTime解析textISO_

2020-06-09 08:32:23 146

原创 b jackson教程

文章目录描述JackSON 项目设计模块教程使用方式MAVEN依赖DEMOgenerator`方式1` Java2Json_ObjectMapper.java`方式2` Java2Json_TreeModel.java`方式3` Java2Json_Streaming.javaprase`方式1` Java2Json_ObjectMapper.java`方式2` Java2Json_TreeModel.java`方式3` Json2Java_Streaming.java注解官网:https://githu

2020-06-09 08:30:15 231

原创 b jdk 介绍--oraclejdk & openjdk

文章目录一、介绍1.1 oracleJDK版本发布开源情况开发厂商1.2 openJDK版本发布开源情况开发厂商2020年jvm生态报告jdk主流分为两个版本openJDK和oracleJDK,两个JDK占90%,oracleJDK更多一点。很好的java学习网站一、介绍1.1 oracleJDK版本发布开源情况开发厂商1.2 openJDK版本发布开源情况开发厂商...

2020-06-09 08:24:50 402

原创 A JAVA 相关知识笔记

JAVA 相关知识笔记一、Language1.1、 序列化1.1.1、序列化1.1.2、 编码1.1.2.1、 Protobuffer1.1.2.2、 Jackson1.2、 Time1.2.1、 jdk:Date&Time1.2.2、 JodaTime标准的时间库1.2.3、 ISO 86011.3、 Log1.4、 注解Annotation1.5、 Url1.6、 DataSource包1.7、 泛型1.8、java.lang.instrument(javaagent)1.8.1、 Java .

2020-06-09 08:17:46 559 1

plantuml.jar

plantuml 官网的jar包 2020.7.16 下载。 plantuml是一块可以用代码绘制uml得工具。非常好用

2020-07-17

空空如也

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

TA关注的人

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