- 博客(101)
- 收藏
- 关注
原创 【IDEA插件开发】快速入门系列01 开发一个简单的Idea插件
英文好的建议阅读官方文档IDEA插件开发官方文档:https://plugins.jetbrains.com/docs/intellij/welcome.html。
2023-05-29 21:24:15 3163 1
原创 【Javassist】快速入门系列14 使用Javassist导入包路径
上一章我们介绍了使用Javassist获取注解,本章主要介绍使用Javassist导入包路径。本篇文章介绍了如何使用Javassist导入包路径。了解了除java.lang包外,Javassist的源代码中的所有类名必须是完全限定名(它们必须包括包名)。
2023-01-02 20:00:17 2019 1
原创 【Javassist】快速入门系列13 使用Javassist获取注解
上一章我们介绍了当检测到catch语句时在catch前插入代码,学习了 method.instrument的用法。以及参数为Handler的重载方法edit的含义。本章主要介绍使用Javassist获取注解。本篇文章介绍了如何使用Javassist获取注解。是除了反射获取注解外的另一种方式。
2023-01-02 19:15:38 941
原创 【Javassist】快速入门系列12 当检测到catch语句时在catch前插入代码
上一章我们介绍了当检测到显示类型转换时用代码块替换,学习了 method.instrument的用法。以及参数为Cast的重载方法edit的含义。本章主要介绍当检测到catch语句时在catch前插入代码。本篇文章介绍了使用Javassist当检测到catch语句时在catch前插入代码,学习了 method.instrument的用法。以及参数为Handler的重载方法edit的含义。
2022-12-30 19:09:00 992
原创 【Javassist】快速入门系列11 当检测到显示类型转换时用代码块替换
上一章我们介绍了当检测到instanceof表达式时用代码块替换,学习了 method.instrument的用法。以及参数为Instanceof 的重载方法edit的含义。本章主要介绍当检测到显示类型转换时用代码块替换。本篇文章介绍了使用Javassist当检测到显示类型转换时用代码块替换,学习了 method.instrument的用法。以及参数为Cast 的重载方法edit的含义。
2022-12-29 20:59:17 560
原创 【Javassist】快速入门系列10 当检测到instanceof表达式时用代码块替换
上一章我们介绍了当检测到数组创建时用代码块替换,学习了 method.instrument的用法。以及参数为NewArray 的重载方法edit的含义。本章主要介绍当检测到instanceof表达式时用代码块替换。本篇文章介绍了使用Javassist当检测到instanceof表达式时用代码块替换,学习了 method.instrument的用法。以及参数为Instanceof的重载方法edit的含义。
2022-12-28 21:31:38 794
原创 【Javassist】快速入门系列09 当检测到数组创建时用代码块替换
上一章我们介绍了当检测到对象(不包括数组)创建时用代码块替换,学习了 method.instrument的用法。以及参数为NewExpr 的重载方法edit的含义。本章主要介绍当检测到数组创建时用代码块替换。本篇文章介绍了使用Javassist当检测到数组创建时用代码块替换,学习了 method.instrument的用法。以及参数为NewArray的重载方法edit的含义。
2022-12-27 22:48:20 452
原创 【Javassist】快速入门系列08 当检测到对象(不包括数组)创建时用代码块替换
上一章我们介绍了当检测到字段被访问时使用语句块替换访问,学习了 method.instrument的用法。以及参数为FieldAccess的重载方法edit的含义。本章主要介绍当检测到对象(不包括数组)创建时用代码块替换。本篇文章介绍了使用Javassist当检测到对象(不包括数组)创建时用代码块替换,学习了 method.instrument的用法。以及参数为NewExpr 的重载方法edit的含义。
2022-12-26 22:04:43 621
原创 【Javassist】快速入门系列07 当检测到字段被访问时使用语句块替换访问
上一章我们介绍了当构造方法调用时替换方法调用的内容,学习了 method.instrument的用法。以及参数为ConstructorCall的重载方法的含义。本章主要介绍当检测到字段被访问时使用语句块替换访问。本篇文章介绍了使用Javassist当检测到字段被访问时使用语句块替换访问,学习了 method.instrument的用法。以及参数为FieldAccess 的重载方法edit的含义。
2022-12-25 21:15:18 558
原创 【Javassist】快速入门系列06 当检测到构造方法调用时替换方法调用的内容
上一章我们介绍了当有指定方法调用时替换方法调用的内容,学习了 method.instrument的用法。以及参数为MethodCall 的重载方法的含义。本章主要介绍当检测到构造方法调用时替换方法调用的内容。本篇文章介绍了使用Javassist当检测到构造方法调用时替换方法调用的内容,学习了 method.instrument的用法。以及参数为ConstructorCall的重载方法的含义。
2022-12-24 23:34:41 968
原创 【Javassist】快速入门系列05 当有指定方法调用时替换方法调用的内容
上一章我们介绍了使用Javassist更改整个方法体,学会了Javassist的setBody()方法使用。本章主要介绍当检测到指定方法调用时替换方法调用的内容,method.instrument方法的使用。本篇文章介绍了使用Javassist当有指定方法调用时替换方法调用的内容,学习了 method.instrument的用法。以及参数为MethodCall 的重载方法的含义。
2022-12-22 14:35:38 756
原创 【Javassist】快速入门系列04 使用Javassist更改整个方法体
上一章我们介绍了使用Javassist实现方法异常处理,学会了Javassist的addCatch()方法使用。本章主要介绍使用Javassist更改整个方法体,setBoday方法的使用。本篇文章介绍了使用Javassist更改整个方法体,学习了Javassist的setBody语句的用法。通过调用CtMethod的setBody方法可以替换整个方法体。
2022-12-21 17:56:57 1683
原创 【Javassist】快速入门系列03 使用Javassist实现方法异常处理
上一章我们介绍了使用使用Javassist实现了对方法执行时间的统计,学会了Javassist在方法体前后插入代码和为类新增字段。本章主要介绍使用Javassist为方法实现异常处理。本篇文章介绍了使用Javassist实现方法异常处理,学习了Javassist的addCatch语句的用法。通过调用CtMethod的addCatch方法可以拦截特定类型的异常并对其进行处理。
2022-12-20 13:27:04 1076
原创 【Javassist】快速入门系列02 使用Javassist实现方法执行时间统计
上一章我们介绍了使用Javassist实现一个简单的Hello World程序,学会了Javassist创建类和新增方法。本章主要介绍如何使用Javassist实现一个无侵入的方法执行时间统计本篇文章介绍了使用Javassist实现方法执行时间统计,同时学习了使用Javassist在方法体的开头/结尾插入代码和为类添加字段。Javassist可以在无侵入的前提下在方法体前后加入内容,非常的方便。
2022-12-19 18:19:06 594
原创 【Javassist】快速入门系列01 使用Javassist实现Hello World
本篇文章为Javassist入门系列文章,适合了解Java基础语法的人零基础学会使用Javassist实现一个Hello World程序。本篇文章介绍了使用Javassist创建一个Hello类,并在屏幕输出Hello World。同时也简单介绍了Javassist如何创建类和添加方法。
2022-12-19 00:11:32 720
原创 【Javassist官方文档翻译】第5-10章
在上一章我们介绍了Javassist的常见标识符、更改方法体以及新增或删除方法和字段等。本篇文章将介绍Javassist官方文档的最后五个章节的内容。本篇文章介绍了Javassist的字节码级的api,以及javassist的一些其他特性。至此2022年12月18日,Javassist官网教程已翻译完成。Javassist中文技术资料过于匮乏,所以博主才有了翻译Javassist官方教程的想法。后续会准备一些Javassist在实际项目中使用案例。进一步了解Javassist框架。
2022-12-18 20:49:16 747
原创 【Javassist官方文档翻译】第四章 内省和定制
在上一章我们介绍了Javassist类加载器相关的知识,本章我们会介绍Javassist中的反思和定制。本篇文章介绍了Javassist的常见标识符、更改方法体以及新增或删除方法和字段等。
2022-12-17 23:20:37 787
原创 【Javassist官方文档翻译】第三章类加载器
在上一章我们介绍了Javassist类池相关的一些操作,本章我们会介绍Javassist中的类加载器。本篇文章介绍了Javassist的CttoClass方法 、Java类加载、如何编写类加载器、修改系统类以及运行时重新加载类。
2022-11-23 01:01:43 808
原创 【Javassist官方文档翻译】第二章 类池
系列文章目录第一章 读写字节码第二章 类池文章目录系列文章目录[第一章 读写字节码](https://editor.csdn.net/md/?articleId=123900632)第二章 类池前言类池避免内存溢出总结说明前言在上一章我们介绍了Javassist读取字节码的一些操作,本章我们会介绍Javassist中的ClassPool。类池ClassPool对象是由许多个CtClass对象构成的容器。一旦一个CtClass对象被创建出来,它就会被永远地记录在某个ClassPool中。这
2022-04-29 20:34:02 594
原创 【Javassist官方文档翻译】第一章 读写字节码
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 读写字节码文章目录系列文章目录` 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加`例如:第一章 读写字节码前言一、读写字节码二、使用步骤1.引入库2.读入数据总结说明前言要想在JAVA程序运行时对原有的类进行增强或生成新类,就不得不说大名鼎鼎的动态代理技术。目前JAVA流行的动态代理框架主要有asm和Javassist两个。asm在性能上比Javassist要好。但Javassist操作
2022-04-19 17:35:04 865
原创 Jdk8的安装
第1章 JAVA环境安装1.1 win10安装JDK1.1.1 下载JDK8JDK8下载网址:https://www.oracle.com/java/technologies/javase-downloads.html#JDK81.1.2 配置环境变量1.安装完JDK后配置环境变量 计算机(此电脑→更多)→属性→高级系统设置→高级→环境变量→系统变量→新建 JAVA_HOME 变量 。变量值填写jdk的安装目录2.双击Path→新建→输入%JAVA_HOME%\bin,自从JDK5之后不用设置
2021-02-19 20:57:15 186
原创 互联网春招和秋招的区别
大家好,我是王同学。。。一个喜欢整天宅在家里看小说,打游戏的精致的猪猪男孩。又是新的一年马上要进入二月份了哈。每年的二三月份,各个互联网大厂争先恐后的开启了春季校园招聘。但是呢有许多消息闭塞的同学还在家里吃鸡和王者荣耀,看小说,刷剧。等他们看见身边的同学都已经找到工作了的时候才发现,许多公司的招聘已经结束了。然后有些学校会为了就业率逼着那些找不到工作的同学随便找一家公司签三方。许多同学稀里糊涂的就签了一家自己不是特别满意的工作。今天呢主要给大家介绍最好找工作的两个时间,也就是秋招和春招以及他们之
2021-01-28 14:58:11 3337
原创 二本计算机专业 秋招0Offer 补招上岸京东Java开发经验 附Java学习路线
作者:精致的王同学链接:https://www.nowcoder.com/discuss/591972?source_id=profile_create_nctrack&channel=-1来源:牛客网先交代背景:本科双非 算法只刷了100道左右 ????故事得从今年7月份开始说起,本菜鸡正窝在家里学Java呢,和我玩的很好的一个小伙伴突然给我发wx说,“x哥”我进百度了! ????看到了小伙伴发的消息我顿时虎躯一震,什么?天天和我一起玩的小伙伴假期居然偷偷学习背着我进大厂了,而我连一份小
2021-01-27 23:57:11 873 3
原创 25 图解剑指Offer 复杂链表的复制 Java题解
25 图解剑指Offer 复杂链表的复制 Java题解25 图解剑指Offer 复杂链表的复制 Java题解题目链接题目描述题解:图解:代码:复杂度25 图解剑指Offer 复杂链表的复制 Java题解题目链接题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)题解:(1)如果链表为null,则返回null
2020-09-12 22:56:02 224
原创 24 图解剑指Offer 二叉树中和为某一值的路径 Java题解
24 图解剑指Offer 二叉树中和为某一值的路径 Java题解24 图解剑指Offer 二叉树中和为某一值的路径 Java题解题目链接题目描述题解:图解:代码:复杂度24 图解剑指Offer 二叉树中和为某一值的路径 Java题解题目链接题目描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。题解:(1)用ArrayList装二叉树节点的值,ArrayList<ArrayList&
2020-09-11 10:17:47 133
原创 计算机网络 自顶向下方法 第 1 章 笔记
第 1章 计算机网络和因特网1.1 什么是因特网1.1.1 具体构成描述1.1.2 服务描述1.1.3 什么是协议1.2 网络边缘1.2.1 接入网1.2.2 物理媒体1.3 网络核心1.3.1 分组交换1.3.2 电路交换1.3.3 网络的网络1.4 分组交换网络中的时延、丢包和吞吐量1.4.1 分组交换网络中时延概述1.4.2 排队时延和丢包1.4.4 计算机网络中的吞吐量1.5 协议层次及服务模型1.5.1 分层的体系结构1.5.2 封装1.6 面对攻击的网络1
2020-07-19 22:52:45 252
原创 计算机网络 自顶向下方法 第七版中文 读书笔记 目录
计算机网络 自顶向下方法 第七版中文 读书笔记 目录计算机网络 自顶向下方法 第七版中文 读书笔记 目录第 1 章 计算机网络和因特网第 2 章 应用层第 3 章 运输层第 4 章 网络层 : 数据平面第 5 章 网络层: 控制平面第 6 章 链路层和局域网第 7 章 无线网络和局域网络第 8 章 计算机网络中的安全第 9 章 多媒体网络计算机网络 自顶向下方法 第七版中文 读书笔记 目录书和pdf请加qq群:1143721941第 1 章 计算机网络和因特网第 2 章 应用层第 3 章 运输层
2020-07-19 22:38:05 3778 1
原创 IDEA 导入的spring boot项目 不能启动, XxxApplication也没图标显示
IDEA 导入的spring boot项目 不能启动, XxxApplication也没图标显示IDEA 导入的spring boot项目 不能启动, XxxApplication也没图标显示IDEA 导入的spring boot项目 不能启动, XxxApplication也没图标显示在pom文件上右键 add to maven projects...
2020-07-16 10:36:56 1146 1
原创 23 图解剑指Offer 二叉搜索树的后序遍历序列 Java题解
23 图解剑指Offer 二叉搜索树的后序遍历序列 Java题解23 图解剑指Offer 二叉搜索树的后序遍历序列 Java题解题目链接题目描述题解:图解:代码:复杂度23 图解剑指Offer 二叉搜索树的后序遍历序列 Java题解题目链接题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。题解:(1)已知二叉搜索树的后序遍历序列,由于二叉搜索树left<root<right, 所以 int
2020-06-29 17:46:30 3838
原创 22 图解剑指Offer 从上往下打印二叉树 Java题解
22 图解剑指Offer 从上往下打印二叉树 Java题解22 图解剑指Offer 从上往下打印二叉树 Java题解题目链接题目描述题解:图解:代码:复杂度22 图解剑指Offer 从上往下打印二叉树 Java题解题目链接题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。题解:思路:二叉树层序遍历,队列先入先出。1.创建一个ArrayList类型的list,创建一个队列queue->LinkedList。2.当根节点为null,直接返回list2.根节点入队。3.whi
2020-06-28 22:01:24 332
原创 21 图解剑指Offer 栈的压入、弹出序列 Java题解
21 图解剑指Offer 栈的压入、弹出序列 Java题解21 图解剑指Offer 栈的压入、弹出序列 Java题解题目链接题目描述题解:图解:代码:复杂度21 图解剑指Offer 栈的压入、弹出序列 Java题解题目链接题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意
2020-06-28 20:18:05 336
原创 20 图解剑指Offer 包含min函数的栈 Java题解
20 图解剑指Offer 包含min函数的栈 Java题解20 图解剑指Offer 包含min函数的栈 Java题解题目链接题目描述题解:图解:代码:复杂度20 图解剑指Offer 包含min函数的栈 Java题解题目链接题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。题解:1.主要实现push方法,stack1用来正常push元素,stack2
2020-06-27 21:46:48 236
原创 19 图解剑指Offer 顺时针打印矩阵 Java题解
19 图解剑指Offer 顺时针打印矩阵 Java题解19 图解剑指Offer 顺时针打印矩阵 Java题解题目链接题目描述题解:图解:代码:复杂度19 图解剑指Offer 顺时针打印矩阵 Java题解题目链接题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.题解:1.首
2020-06-27 21:20:06 325
原创 18 图解剑指Offer 二叉树的镜像 Java题解
18 图解剑指Offer 二叉树的镜像 Java题解18 图解剑指Offer 二叉树的镜像 Java题解题目链接题目描述题解:图解:代码:复杂度18 图解剑指Offer 二叉树的镜像 Java题解题目链接题目描述操作给定的二叉树,将其变换为源二叉树的镜像。题解:1.当二叉树根节点为null,或没有叶子节点的时候直接return;2. 创建一个temp临时节点,二叉树左右节点交换。3.如果root.left != null root.left = Mirror(root.left)4.如果
2020-06-27 19:37:03 356 3
原创 17 图解剑指Offer 树的子结构 Java题解
17 图解剑指Offer 树的子结构 Java题解17 图解剑指Offer 树的子结构 Java题解题目链接题目描述题解:图解:代码:复杂度17 图解剑指Offer 树的子结构 Java题解题目链接题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)题解:1.判断root1和root2是否为null 如果为null 返回 false。2. 返回 check(root1, root2) || HasSubtree(root1.left, root2)
2020-06-27 18:04:16 336
原创 16 图解剑指Offer 合并两个排序的链表 Java题解
16 图解剑指Offer 合并两个排序的链表 Java题解16 图解剑指Offer 合并两个排序的链表 Java题解题目链接题目描述题解:图解:代码:复杂度16 图解剑指Offer 合并两个排序的链表 Java题解题目链接题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。题解:1.if判断list1是否为null,如果为null 直接返回list2。1.else if判断list2是否为null,如果为null 直接返回list1。每次递归找
2020-06-27 15:41:22 316
原创 15 图解剑指Offer 反转链表 Java题解
15 图解剑指Offer 反转链表 Java题解15 图解剑指Offer 反转链表 Java题解题目链接题目描述题解:图解:代码:复杂度15 图解剑指Offer 反转链表 Java题解题目链接题目描述输入一个链表,反转链表后,输出新链表的表头。题解:1.首先判断头节点是否为null ,如果为null,则返回null2.如果只有一个节点,返回head。3.创建三个指针 pre cur temp,当cur不为null时,temp用来存放cur.next,然后再把cur.next指向pre,最后p
2020-06-26 23:16:44 345
原创 14 图解剑指Offer 链表中倒数第k个节点 Java题解
14 图解剑指Offer 链表中倒数第k个节点 Java题解14 图解剑指Offer 链表中倒数第k个节点 Java题解题目链接题目描述题解:图解:代码:复杂度14 图解剑指Offer 链表中倒数第k个节点 Java题解题目链接题目描述输入一个链表,输出该链表中倒数第k个结点。题解:1.首先要判断头节点是否为null,如果为null,直接返回null。2.在遍历节点算出链表长度len,判断k是否大于len,如果大于len或k = 0返回null3. 设定两个指针 pre after ,pre
2020-06-26 22:20:01 190
原创 13 图解剑指Offer 调整数值顺序使奇数位于偶数前面 Java题解
13 图解剑指Offer 调整数值顺序使奇数位于偶数前面 Java题解13 图解剑指Offer 调整数值顺序使奇数位于偶数前面 Java题解题目链接题目描述题解:图解:代码:复杂度13 图解剑指Offer 调整数值顺序使奇数位于偶数前面 Java题解题目链接题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。题解:1.创建两个ArrayList,一个放奇数,一个放偶数。2
2020-06-26 21:30:37 150
原创 12 图解剑指Offer 数值的整数次方 Java题解
12 图解剑指Offer 二进制中1的个数 Java题解12 图解剑指Offer 二进制中1的个数 Java题解题目链接题目描述题解:图解:代码:复杂度12 图解剑指Offer 二进制中1的个数 Java题解题目链接题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0题解:快速幂1.如果base 等于0,则返回0.2.如果exponent < 0,让 base = 1 / bas
2020-06-26 20:42:22 192
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人