首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
手写java agent代码
2024-09-04
Java Agent初探——动态修改代码
用了一下午总算把java agent给跑通了,本篇文章记录一下具体的操作步骤,以免遗忘... 通过java agent可以动态修改代码(替换.修改类的定义),进行AOP. 目标: ? 1 为所有添加@ToString注解的类实现默认的toString方法 需要两个程序,一个是用来测试的程序,一个agent用于修改代码. 1. 测试程序 被测试的程序包括: - ToString.java - Foo.java - Main.java 具体代码如下: ToString.java:定义ToString
一段简单的手写Java计算器代码
import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.lang.*; public class Calculator1 extends JFrame implements ActionListener { JTextField text; static boolean isFirst = true; double number = 0.0; public static String s = "0&qu
手写JAVA虚拟机(二)——实现java命令行
查看手写JAVA虚拟机系列可以进我的博客园主页查看. 我们知道,我们编译.java并运行.class文件时,需要一些java命令,如最简单的helloworld程序. 这里的程序最好不要加包名,因为加了包名的话编译和运行需要有所改动. 看这里的命令.javac为编译命令,我们知道java的特点是一次编译,到处运行.这里的编译指的就是javac,对于java程序即.java文件,先要用javac编译成字节码.然后将字节码(.class文件)放到java虚拟机中运行,即上图中的java HelloW
手写JAVA虚拟机(三)——搜索class文件并读出内容
查看手写JAVA虚拟机系列可以进我的博客园主页查看. 前面我们介绍了准备工作以及命令行的编写.既然我们的任务实现命令行中的java命令,同时我们知道java命令是将class文件(字节码)转换成机器码,那么我们现在的任务就是读出这个class文件里面的内容. 正文: java虚拟机规范中是没有规定虚拟机该从哪里找类,也就是找class文件的,而oracle的是根据类路径,也就是classpath来搜索类的.搜索的优先级:启动类路径(bootstrap classpath)>扩展类路径(exten
6 手写Java LinkedHashMap 核心源码
概述 LinkedHashMap是Java中常用的数据结构之一,安卓中的LruCache缓存,底层使用的就是LinkedHashMap,LRU(Least Recently Used)算法,即最近最少使用算法,核心思想就是当缓存满时,会优先淘汰那些近期最少使用的缓存对象 LruCache的缓存算法 LruCache采用的缓存算法为LRU(Least Recently Used),最近最少使用算法.核心思想是当缓存满时,会首先把那些近期最少使用的缓存对象淘汰掉 LruCache的实现 LruCac
3 手写Java HashMap核心源码
手写Java HashMap核心源码 上一章手写LinkedList核心源码,本章我们来手写Java HashMap的核心源码. 我们来先了解一下HashMap的原理.HashMap 字面意思 hash + map,map是映射的意思,HashMap就是用hash进行映射的意思.不明白?没关系.我们来具体讲解一下HashMap的原理. HashMap 使用分析 //1 存 HashMap<String,String> map = new HashMap<>(); map.put(&
4.redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?
作者:中华石杉 面试题 redis 的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 面试官心理分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题: 往 redis 写入的数据怎么没了? 可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了.我的天,同学,你问这个问题就说明 redis 你就没用对啊.re
redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下LRU代码实现?
redis的过期策略都有哪些? 设置过期时间: set key 的时候,使用expire time,就是过期时间.指定这个key比如说只能存活一个小时?10分钟?指定缓存到期就会失效. redis的过期策略的话 定期删除加惰性删除 定期删除:redis默认是每隔100ms就会随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除, 假设redis里放了10万个key,都设置了过期时间,你每隔几百毫秒,就检查10万个key,那redis基本上就死了,cpu负载会很高的,消耗在你的检查过
2 手写Java LinkedList核心源码
上一章我们手写了ArrayList的核心源码,ArrayList底层是用了一个数组来保存数据,数组保存数据的优点就是查找效率高,但是删除效率特别低,最坏的情况下需要移动所有的元素.在查找需求比较重要的情况下可以用ArrayList,如果是删除操作比较多的情况下,用ArrayList就不太合适了.Java为我们提供了LinkedList,是用链接来实现的,我们今天就来手写一个QLinkedList,来提示底层是怎么做的. 如上图,底层用一个双链表,另外有两个指示器,一个指向头,一个指向尾. 链表中
1 手写Java ArrayList核心源码
手写ArrayList核心源码 ArrayList是Java中常用的数据结构,不光有ArrayList,还有LinkedList,HashMap,LinkedHashMap,HashSet,Queue,PriorityQueue等等,我们将手写这些常用的数据结构的核心源码,用尽量少的代码来揭示核心原理. 下面我们来手写ArrayList的核心源码 首先我们定义一个QArrayList,不要问为什么叫QArrayList,因为我之前写过Qt,仅此而已.源码 public class<T> QAr
阿里第二轮面试:手写Java二叉树
阿里面试 现在很多公司在招聘开发岗位的时候,都会事先在招聘信息中注明面试者应当具备的知识技能,而且在面试的过程中,有部分对于技能掌握程度有严格要求的公司还会要求面试者手写代码,这个环节很考验面试者的基础功底和实力! 这不,前些天一个朋友去阿里面试的时候,在二面过程中就被要求使用Java实现二叉树,王二Dog由于没有准备这方面的知识,没有答上来,然后就让回家等通知了. 所以有利用给王二Dog讲解二叉树的机会,我整体梳理了下二叉树常见的面试点,发出来供大家一起交流学习.希望对你的面试有所帮助. 二叉
手写算法-python代码实现KNN
原理解析 KNN-全称K-Nearest Neighbor,最近邻算法,可以做分类任务,也可以做回归任务,KNN是一种简单的机器学习方法,它没有传统意义上训练和学习过程,实现流程如下: 1.在训练数据集中,找到和需要预测样本最近邻的K个实例: 2.分别统计这K个实例所属的类别,最多的那个类别就是样本预测的类别(多数表决法): 对于回归任务而言,则是求这K个实例输出值的平均值(选择平均法): 因此,该算法的几个重点在于: 1.K值的选取,K值的不同直接会导致最终结果的不同: 选择较小的k值,就相当
面试 5:手写 Java 的 pow() 实现
我们在处理一道编程面试题的时候,通常除了注意代码规范以外,千万要记得自己心中模拟一个单元测试.主要通过三方面来处理. 功能性测试 边界值测试 负面性测试 不管如何,一定要保证自己代码考虑的全面,而不要简单地猜想用户的输入一定是正确的,只是去实现功能.通常你编写一个能接受住考验的代码,会让面试官对你刮目相看,你可以不厉害,但已经充分说明了你的靠谱. 今天我们的面试题目是: 面试题:尝试实现 Java 的 Math.pow(double base,int exponent) 函数算法,计算 base
5 手写Java Stack 核心源码
Stack是Java中常用的数据结构之一,Stack具有"后进先出(LIFO)"的性质. 只能在一端进行插入或者删除,即压栈与出栈 栈的实现比较简单,性质也简单.可以用一个数组来实现栈结构. 入栈的时候,只在数组尾部插入 出栈的时候,只在数组尾部删除** 我们来看一下Stack的用法 :如下 public static void main(String[] args){ //新建一个栈 Stack<String> stack = new Stack<>(); /
4.1 手写Java PriorityQueue 核心源码 - 原理篇
本章先讲解优先级队列和二叉堆的结构.下一篇代码实现 从一个需求开始 假设有这样一个需求:在一个子线程中,不停的从一个队列中取出一个任务,执行这个任务,直到这个任务处理完毕,再取出下一个任务,再执行. 其实和 Android 的 Handler 机制中的 Looper 不停的从 MessageQueue 中取出一个消息然后处理是一样的. 不过这个需求还有一点.需要我们的任务是有优先之分的,优先高的先执行,优先级低的后执行.比如现在队列中已经有了10个任务了,现在有一个紧急的任务需要处理,怎么办?
手写java虚拟机(一)——搭建环境
毕业设计打算做一个java虚拟机,首先要对java虚拟机有一个简单的了解(jvm).目前市面上有众多的jvm,如sun公司的HotSpot VM.Classic VM,IBM公司的J9 VM等等,这里以sun公司的HotSpot VM为蓝本实现一个java虚拟机.为什么选用hotspot呢,因为这个是目前jdk里面自带的并且是默认的jvm,也是使用最多的jvm. 虽然世面上的jvm众多,但是所有的jvm都遵循一个标准--java虚拟机规范.这里我给出JAVA7的规范,https://pan.ba
4.2 手写Java PriorityQueue 核心源码 - 实现篇
上一节介绍了PriorityQueue的原理,先来简单的回顾一下 PriorityQueue 的原理 以最大堆为例来介绍 PriorityQueue是用一棵完全二叉树实现的. 不但是棵完全二叉树,而且树中的每个根节点都比它的左右两个孩子节点元素大 PriorityQueue底层是用数组来保存这棵完全二叉树的. 如下图,是一棵最大堆. 最大堆的删除操作 删除指的是删除根元素,也就是图中的100元素 删除元素也就是 shiftDown 操作,向下翻 删除一个根元素有以下步骤: 将100元素删除,将最
手写Java的字符串简单匹配方法IndexOf()
简单的字符串模式匹配算法,可使用KMP进行优化 /** * @param s1 母串 * @param s2 子串 * @return */ public static int myIndexOf(String str1,String str2) { int pos=-1; int index=0; char [] s1= str1.toCharArray(); char [] s2= str2.toCharArray(); if(str2.length()>str1.length() || s
手写DotNet Core 认证授权代码
在普通的MVC项目中 我们普遍的使用Cookie来作为认证授权方式,使用简单.登录成功后将用户信息写入Cookie:但当我们做WebApi的时候显然Cookie这种方式就有点不适用了. 在dotnet core 中 WebApi中目前比较流行的认证授权方式是Jwt (Json Web Token) 技术.Jwt 是一种无状态的分布式身份验证方式,Jwt 是将用户登录信息加密后存放到返回的Token中 ,相当于用户信息是存储在客户端.Jwt的加密方式有两种 :对称加密与非对称加密,非对称加密即
利用Java Agent进行代码植入
利用Java Agent进行代码植入 Java Agent 又叫做 Java 探针,是在 JDK1.5 引入的一种可以动态修改 Java 字节码的技术.可以把javaagent理解成一种代码注入的方式.但是这种注入比起spring的aop更加的优美. Java agent的使用方式有两种: 实现premain方法,在JVM启动前加载. 实现agentmain方法,在JVM启动后加载. premain和agentmain函数声明如下,方法名相同情况下,拥有Instrumentation inst参
MySQL手写代码相关变量
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11777682.html 手写一些SQL代码时候需要用到的关键字. DELIMITER, BEGIN, END, DECLARE, SET, INTO, IF, THEN, LOOP, ITERATE, LEAVE, CASE, REPEAT, UNTIL, WHILE, @VALUE, IN, OUT 遇到了再记录.
热门专题
SQLserver更新所有视图
小程序调试器回调函数打印不出
hdfs ha 路径怎么写
reload 此maven项目即可
Linux cp显示略过目录
tinkphp后台密码忘记
openwrt修改hosts详细教程
excel多列添加引号
idea配置运行环境
liunx中进程调度cfs
golang mongo 封装
ubuntu 创建Pytcharm快捷方式
ABAP 获取字段的绝对类型
ubuntu 安装redis
AX BX CX DX中可用作转移操作的数据寄存器是DX
sql server 查看数据库的连接数
ifame中 使用window.location.href
phpredis在线手册
Excel ribbon动态
C 中字符和字符串类型用什么表示