Java静态\动态代理之百炼成仙

Windows系统的Mamba环境配置详细教程(状态空间模型) causal_conv1d也是安装mamba的依赖必须库。安装完成后,通过pip list可以查看到安装的库。Triton是安装mamba的依赖,需要先安装。上述工作准备好后,按下面步骤安装。直接根据离线文件安装即可。是自己的虚拟环境名字。 阅读详情

Java代理

在代理之前,我们需要知道我们代理的东西是什么

比如说我们有一个原对象,我们不直接去访问他,我们通过代理去访问它,这么做的目的是,以后不用修改原对象,可以通过修改代理类,来实现具体的方法,来看具体例子:

首先要有一个接口

public interface IUser {
    void show();
    
    void create();

    void update();
}

接着实现一下

public class Userimpl implements IUser {
    public Userimpl(){}

    public void show(){
        System.out.println("展示");
    }
    
    public void create(){
        System.out.println("新建");
    }

    public void update(){
        System.out.println("更新");
    }
}

再来一个代理

public class UserProxy implements IUser{
    //这个属于静态代理
    IUser user;
    public UserProxy(){}

    public UserProxy(IUser user){ this.user = user; }

    @Override
    public void show() {
        user.show();
        System.out.println("调用了show");
    }
    public void create(){
        user.create();
        System.out.println("调用了新建");
    }

    public void update(){
        user.update();
        System.out.println("调用了更新");
    }
}

然后我们就可以用了

public class ProxyTest {
    public static void main(String[] args) {
        IUser user = new Userimpl();
//        user.show();
        //静态代理
        IUser userProxy = new UserProxy(user);//用代理类过一遍我们要用的方法,达到一个日志的效果
        userProxy.show();
        
 输出:
     展示
     调用了show

此处这个代理方法与调用本身没有什么关系,可以当成一个记录日志的行为,但是这个行为本身和我调用show方法没什么联系,但是这个日志又必须要有,但是问题就来了,如果我们要代理的东西太多,怎么办??总不能先上面我写的一样,一个方法一个日志记录格式吧,于是java官方便出了另一种代理方式,叫动态代理

这个动态代理我们可以假设一下的工作机制,无非就是为了方便点来做到调用

public class UserProxy implements IUser{

    IUser user;
    public UserProxy(){}
    public UserProxy(IUser user){ this.user = user; }
    
    IUser user = new Userimpl(); 
    Class c = user.getClass();
    //利用反射来获取方法
    Method usermethod = c.getMethod("show");
    
    public void execute(){
        System.out.println("调用了" + usermethod.getName());
		usermethod.invoke(user,args)//因为无参,这里不应该有args
    }
    
}

(上述代码我直接在md敲的,没有导入包)

但是我们发现还有一个问题就方法获取的一个问题,依然冗杂了,如果我们要的不是show,那么就要替换show,或者再来一个反射,但是不巧的是,java官方针对获取方法冗杂这个问题,来了一个很好的解决办法,也就是动态代理,来看一下

java.lang.reflect.Proxy//这里面的一个方法

public static Object newProxyInstance(ClassLoader loader,
                                          Class<?>[] interfaces,
                                          InvocationHandler h)

它的前两个参数都可以有固定写法,比较好解决

Proxy.newProxyInstance(user.getClass().getClassLoader(),
                user.getClass().getInterfaces(),
                userinvocationhandler);

但是最后一个处理器参数,我们需要关心一下

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

public class UserInvocationHandler implements InvocationHandler {
    IUser user;

    public UserInvocationHandler(){}

    public UserInvocationHandler(IUser user){
        this.user = user;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        System.out.println("调用了" + method.getName());
        method.invoke(user,args);
        return null;
    }
}

这样的话main方法就是这样

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

public class ProxyTest {
    public static void main(String[] args) {
        IUser user = new Userimpl();
        //动态代理
        //要代理的接口,要做的事情,classloader
        InvocationHandler userinvocationhandler = new UserInvocationHandler(user);
        IUser userproxyInstance = (IUser) Proxy.newProxyInstance(user.getClass().getClassLoader(),
                new Class[]{IUser.class},
                userinvocationhandler);
        userproxyInstance.update();
    }
}

而我们所选择的method的传递方式就可以是userproxyInstance.方法名了,用起来比较方便

华为OD机试真题 新系统【进制转换后自定义排序】 华为OD机试 新系统真题【进制转换后自定义排序】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【进制转换后自定义排序】多语言题解。 阅读详情

相关推荐

基于LORA的双机通信的智能农业系统

通过LoRa模块与主机进行通信,监测环境中的温度、湿度、土壤湿度和光照强度等参数,并根据预设的自动控制逻辑或者手动指令控制继电器开关,从而调节风扇、加热器、水泵、喷雾器和灯光等设备,为植物提供适宜的生长环境。使用的Lora是大夏龙雀的感觉这个是我使用过的Lora里面最好用的,因为不用设置频道就可以直接透明传输,使用起来得心应手。就像两个单片机直接串口通信一样,缺点是异步串行,不能同时进行接收和发送。继电器灯亮模拟打开对应的风扇、水泵、灯、喷雾、加热。1.使用温度传感器测当前环境的温湿度。

ssjsjss的博客 1739

Java百炼成仙1.1 他叫叶小凡

哈喽,大家好,我是剽悍一小兔~我之前写了一本《JavaScript百炼成仙》深受读者朋友们的喜爱,为了答谢各位粉丝朋友,从即日起我开始正式更新之前呼声最高的《Java百炼成仙》。故事流程上《Java百炼成仙》是之前的续集,为了弥补《JavaScript百炼成仙》故事情节不足的遗憾,《Java百炼成仙》的编写会充分考虑故事情节和代码的占比,以求达到一个平衡。本书目前在我的“java小白翻身”公众号首发,后面也会同步到优快云和各大博客平台,以及我的抖音账号,朋友们请认准我各大平台的ID是。

java小白翻身 3576

Oracle监听配置

Oracle监听配置## 标题 选择“监听程序配置”,然后下一步。 选择重新配置,然后下一步/。 不用管,按下一步。 下一步。 选择“否”,下一步。 选择"本地net服务名配置",然后下一步。 选择“重新配置”,然后下一步。 服务名 是"Oracle",然后下一步。 主机为你的IP地址,在doc系统下通过"ipconfig"获取IP地址。然后输入,然后下一步。 选择“是,进行测试...

m0_46079215的博客 806

Java百炼成仙 1.2 复活的希望

叶老也同意了叶小凡的思路,过了会又说到:“嘿嘿,如果能快点找到落叶城就好了,城边的古迹里有我当年留下的传承,如果你能获得我当年藏在里面的魔灵之杖,那么我就可以复活了。落叶城,本来是这次传送的终点,叶小凡如今已经有了大学境界,已经具备了足够的能力复活叶老的修为,但是,还缺少一件至关重要的物品。叶老,既修前端,也修后端,是一个全栈大能。叶小凡的掌尊,林元青,平时给了自己很多的照顾,也是他将叶小凡带上山的。这声音的来源就是叶老,是一具灵魂,曾经是这脚本大陆的最强者,后来遭受到陷害,不得已将灵魂封印在了戒指里。

java小白翻身 1338

LangChain4j + Milvus 从0-1实现会话管理与RAG检索的AIChat超详细教程

本教程将介绍如何使用LangChain4j和Milvus向量数据库构建一个具备流式输出、会话管理、会话隔离和基于文档RAG检索能力的AI机器人。我们将使用阿里百炼模型作为LLM后端,并通过Docker部署Milvus向量数据库。创建Assistant接口,定义聊天服务:LangChain4j 中文文档 | LangChain4j 中文文档wiringMode :这个属性一般两种,一种是自动装配,我们这里选择手动配置。

2301_80014343的博客 1434

给硬件工程师的UCIe软件配置入门:从寄存器表到实战调试,一篇讲透

本文为硬件工程师提供UCIe软件配置的全面指南,从寄存器表解析到实战调试技巧,涵盖链路训练、错误排查等关键环节。通过详细代码示例和分层诊断法,帮助工程师快速掌握UCIe寄存器访问机制,提升异构集成开发效率。

weixin_30268921的博客 312

【JAVA百炼成仙】完结篇 ——IO(字节流、字符流)

带你学会IO字节流和字符流的读写操作

4万+

【大模型】大模型知识蒸馏 综述解读(Knowledge Distillation of Large Language Models)

知识蒸馏的(论文)方法总结。归纳了通过数据(如指令、对话、多模态)和训练方法(SFT、RL、数据增强),将复杂技能(如对齐、工具使用、多模态)蒸馏到开源模型的核心框架,附典型模型示例(如Alpaca、LLaVA)。

songxia928_928的博客 4335

Java百炼成仙1.3 低调,我是java小白

因为不知道Java界域到底发生了什么,在叶老的建议下,叶小凡伪装了自己的气息,在外人看起来,他的境界只有炼气期而已。看到他这样,叶老没好气地瞪了一眼,说道:“臭小子,别得意忘形,java界域一样是卧虎藏龙,当保持谦逊态度才是!”此时的叶小凡已经伪装了气息,除非对方修为比自己高,否则很难发现他的真实修为。在Java界域,修为分为这么几个层级:炼气期,筑基期,金丹期,元婴期,化神期。“小凡,目前我也不知道Java界域到底发生了什么变故,总之还是小心一点的好。“嘿嘿,从现在开始,我就是java小白了~~”

java小白翻身 1872

【Java基础】还看不懂JDK7 HashMap环的产生原理你来打我

JDK7对旧table数据重定位到新table的函数transfer如下,其中重点关注部分以标出。 头插法正常情况下: 并发情况下 线程1只执行了Entry<K,V> next = e.next就被挂起了,而线程2正常执行完毕,结果图如下: 线程1接着下面继续执行: 通过逐步分析跟绘图可以知道红色部分会有环产生。 ...

sowhat 4244

手把手教你学simulink实例--基于Simulink的船舶动力装置性能评估与仿真

船舶动力装置是船舶运行的核心系统,其性能直接影响船舶的安全性、经济性和环保性。基于MATLAB/Simulink平台进行船舶动力装置性能评估与仿真是研究和优化船舶动力系统的重要手段。通过建模与仿真,可以分析动力装置在不同工况下的性能表现,并验证控制策略的有效性。本项目旨在构建一个完整的船舶动力装置性能评估与仿真模型,包括发动机建模、传动系统建模、负载分析以及性能评估模块,并通过仿真分析其动态响应和性能指标。

MHD0815的博客 972

【JAVA百炼成仙】筑基篇——JAVA筑基

Java基础,非常适合刚接触的朋友

4万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Java大模型 ~ 智能医疗

LangChain4j 的目标是简化将大语言模型(LLM - Large Language Model)集成到 Java 应用程序中的过程。阿里云百炼是 2023 年 10 月推出的。它集成了阿里的通义系列大模型和第三方大模型,涵盖文本、图像、音视频等不同模态。功能优势:集成超百款大模型 API,模型选择丰富;5-10 分钟就能低代码快速构建智能体,应用构建高效;提供全链路模型训练、评估工具及全套应用开发工具,模型服务多元;在线部署可按需扩缩容,新用户有千万 token 免费送,业务落地成本低。

zouyang920的博客 1000

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【JAVA百炼成仙】金丹篇——JAVA流程控制

精讲JAVA的输入输出,判断循环。

5万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

JAVA基本语法

float和double的最小值和最大值都是以科学记数法的形式输出的,结尾的“E+数字”表示E之前的数字要乘以10的多少倍。比如3.14E3就是3.14×1000=3140,3.14E-3就是3.14/1000=0.00314。

weixin_44853907的博客 165

《JavaScript百炼成仙》,简单但是挺有效的

《JavaScript百炼成仙》是一本以玄幻小说的形式,来讲述JavaScript的知识。此篇仅仅是我快速阅读《JavaScript百炼成仙》这本书的笔记,流水账笔记,望君一阅!小说的主角为叶小凡【叶小凡,这个名字有点熟悉,也就是玄幻小说中常见主角的名字】,叶小凡是乐阳村中唯一一个具备修行JavaScript的甲等资质的孩子,于是就被送到千鹤派修炼JavaScript。

读心悦 2820

关于《JavaScript百炼成仙》电子版,在线阅读地址~

首先,非常感谢各位老铁的支持,说实话这本书火了我真的挺意外的。这几天问我最多的一个问题是,哪里能看电子版? 说来也怪,我昨天看微信读书上好像有的,晚上看又没了,目前只有掌阅能看。 就是有点贵,然后我去找了出版社,得到的回复如下: 意思是过几天会上架多个平台,到时候价格就便宜下来了。 我也帮大家反应了,掌阅真的太贵了,和实体书差不多价格。 问题已经反应了,相信过几天出版社会联系第三方,多平台上架电子书的,到时候价格就便宜啦,哈哈。 ...

java小白翻身 3万+

【JAVA百炼成仙】化神篇 上——面向对象(对象、类)

什么是对象?什么是类?如何定义如何运用?

4万+

天秀!搞java的技术人写了本小说:《JavaScript百炼成仙》

前言秀第一场,叶小凡赢得非常漂亮。这难免遭到了场外一些大弟子的嫉妒。“哼,不过才赢了第一场,有什么好神气的。”“就是,就是啊。不管怎么说,运算符毕竟还是属于比较基础的功夫。我看哪,这个叶小...

独行侠梦的博客 1万+

【JAVA百炼成仙】化神篇 中——面向对象(继承、构造方法、重写、重载)

类的继承、方法重载、重写、构造方法

4万+

JAVA在线教育视频点播学习系统毕业设计 开题报告_java云课堂开题报告

一次偶然,从朋友那里得到一份“java高分面试指南”,里面涵盖了25个分类的面试题以及详细的解析:JavaOOP、Java集合/泛型、Java中的IO与NIO、Java反射、Java序列化、Java注解、多线程&并发、JVM、Mysql、Redis、Memcached、MongoDB、Spring、Spring Boot、Spring Cloud、RabbitMQ、Dubbo 、MyBatis 、ZooKeeper 、数据结构、算法、Elasticsearch 、Kafka 、微服务、Linux。

2401_84447043的博客 585

JavaScript百炼成仙自学笔记——1

JavaScript创建对象

SKL4399的博客 1449

javascript百炼成仙 第一章 掌握JavaScript基础1.5基础考核

叶小凡兴奋,那种钻研了很久之后猛地豁然开朗,感觉实在是太爽了。乘着心情大好,叶小凡继续钻研“JavaScript基础修炼要诀”,一晃半天时间过去了。叶小凡性格谨慎,也非常刻苦,有很多问题,即便弄明白了,也忍不住要举一反三。 这段时间,如果肚子饿了,叶小凡就吃身上带的干粮。这一幕幕,被青山院掌尊看在眼里,心里微微诧异,更多的是欣慰。 “此子修行端的刻苦,虽然目前只是黄衣弟子,可这种修行的忍耐力和执着,哪怕是高高在上的白衣弟子,看到了也要心惊。” 在千鹤派,弟子根据修为高低分为黄衣弟子,红衣弟子。红衣弟子之上,

java小白翻身 2万+

【JAVA百炼成仙】元婴篇——藏在游戏中的数组

天天打王者竟然还不知道数组就在游戏中?

4万+

【JAVA百炼成仙】红尘为仙 ——IO(目录操作、文件操作)

I/O操作之目录操作和文件操作

4万+

JAVA四行代码制作简单的翻译软件(傻瓜式教程)

用java编写一个简单的翻译软件只需要4行代码。 制作工具:IDEA 第一步:首先下载一个jar包组件 http://www.jsoup.org 地址放这里了,点进去可以直接下载。 下载jsoup-1.14.3.jar 将刚下载好的jar包添加 创建文件,添加如下代码。 ackage TEST; import org.jsoup.Jsoup; import javax.swing.*; import java.io.IOException; /** * */ public class Fany

4万+
上一篇: JAVA之URLDNS链再分析
Yn8rt
博客等级 码龄6年 150粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yn8rt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值