当前位置: 首页 > news >正文

动态代理。

无侵入式的给代码增加额外的功能

代理的作用:对象如果干的事情太繁琐,就可以通过代理来转移部分职责;也就是相当于把对象的的方法拆开一些步骤分给代理做,对象做关键的就行了;并且代理做的这些繁琐的事情的名字也要和对象做这件事情的名字一样;

对象和代理要实现同一个接口,接口中就是被代理的所有方法

对象

package com.ln1;import com.FC.Star;public class Goods implements Star {private String name;private String id;private int age;private String rightPassWord = "123456";public Goods() {}public Goods(String name, String id, int age, String rightPassWord) {this.name = name;this.id = id;this.age = age;this.rightPassWord = rightPassWord;}public Goods(String name){this.name = name;}public String sing(String Name){System.out.println(this.name + " sing " + Name);return "thanks";}public void dance(){System.out.println(this.name + "dance");}}

代理

package com.FC;import com.ln1.Goods;import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;public class ProxyUtil {public static Star createProxy(Goods goods){Star star = (Star) Proxy.newProxyInstance(ProxyUtil.class.getClassLoader(), //用于指定用哪个类加载器,去加载生成的代理类new Class[]{Star.class},//指定接口,这些接口用于指定生成的代理长什么样,也就是有哪些方法new InvocationHandler() {@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {//参数1:代理的对象//参数2:要运行的方法//参数3:调用方法时,传递的实参if("sing".equals(method.getName())){System.out.println("收钱,准备话筒");}else if("dance".equals(method.getName())){System.out.println("收钱,准备场地");}return  method.invoke(goods,args);}}//用来指定生成的代理对象要干什么事情);return star;}
}

接口

package com.FC;public interface Star {public abstract String sing(String Name);public abstract void dance();
}

运行代码

package com.FC;import com.ln1.Goods;public class Text {public static void main(String[] args) {Goods goods = new Goods("yoki");Star proxy = ProxyUtil.createProxy(goods);String result = proxy.sing("入睡");System.out.println(result);proxy.dance();}
}

相关文章:

动态代理。

无侵入式的给代码增加额外的功能 代理的作用:对象如果干的事情太繁琐,就可以通过代理来转移部分职责;也就是相当于把对象的的方法拆开一些步骤分给代理做,对象做关键的就行了;并且代理做的这些繁琐的事情的名字也要和…...

Learn Prompt-GPT-4:能力

GPT-4能力大赏​ 常识知识推理​ 一个猎人向南走了一英里,向东走了一英里,向北走了一英里,最后回到了起点。他看到了一只熊,于是开枪打了它。这只熊是什么颜色的? 答案是白色,因为这种情况只可能发生在北…...

iOS——ViewController的生命周期

ViewController ViewController的生命周期是指在应用程序运行过程中,ViewController实例从创建到销毁的整个过程。在这个过程中,ViewController会经历一系列的生命周期方法,这些方法可以帮助开发者管理ViewController及其相关的视图和逻辑。…...

SkyWalking内置参数与方法

参数 全局指标 指标指标名称all_p99所有服务响应时间的 p99 值all_p95所有服务响应时间的 p95 值all_p90所有服务响应时间的 p90 值all_p75所有服务响应时间的 p75 值all_p70所有服务响应时间的 p70 值all_heatmap所有服务响应时间的热点图 服务指标 指标指标名称service_r…...

【C++面向对象侯捷】12.虚函数与多态 | 13.委托相关设计【设计模式 经典做法,类与类之间关联起来,太妙了,不断的想,不断的写代码】

文章目录 12.虚函数与多态举例:委托 继承【观察者模式】13.委托相关设计Composite 组合模式Prototype 原型模式 12.虚函数与多态 纯虚函数 一定要 子类重新定义的 继承和复合 关系下的构造和析构 举例:委托 继承【观察者模式】 13.委托相关设计 问题…...

基于若依ruoyi-nbcio增加flowable流程待办消息的提醒,并提供右上角的红字数字提醒(五)

1、下面提供给前端待办提醒消息的接口SysNoticeController&#xff0c;增加如下&#xff1a; /*** 补充用户数据&#xff0c;并返回系统消息* return*/Log(title "系统消息")GetMapping("/listByUser")public R<Map<String, Object>> listByU…...

hive数据初始化

mysql版本&#xff1a;3.1.3 hive版本&#xff1a; 8.0.31 hive连接配置 <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://node88:3306/hive?createDatabaseIfNotExisttrue</value> </pr…...

React+Node——next.js 构建前后端项目

一、安装全局依赖 npm i -g create-next-app二、创建next项目 create-next-app react-next-demo //或 create-next-app react-next-demo --typescript三、加载mysql依赖 npm i -S mysql2四、运行项目 npm run dev五、创建db文件目录&#xff0c;目录下创建index.ts import…...

CRM系统主要包括哪些功能?

CRM系统应该要包括的功能总结为3大方向—— 核心必须要具备的功能常见尽量要有的功能可选有了自然更好的功能 以我们公司用的简道云CRM系统模板为例&#xff1a;https://www.jiandaoyun.com 01 核心必须要具备的功能 核心功能决定了系统是否能够被纳入CRM类别&#xff0c;这些…...

Nginx location 精准匹配URL = /

Location是什么&#xff1f; Location是Nginx中的块级指令(block directive)&#xff0c;通过配置Location指令块&#xff0c;可以决定客户端发过来的请求URI如何处理&#xff08;是映射到本地文件还是转发出去&#xff09;及被哪个location处理。 匹配模式 分为两种模式&…...

使用JAXB将Java对象转xml

文章目录 使用JAXB将Java对象转xml1. 要求生成的xml2. Java对象3. 封装的工具类4. 测试 使用JAXB将Java对象转xml 1. 要求生成的xml <?xml version"1.0" encoding"UTF-8" ?> <root><result status"success" msg"成功&qu…...

Atlas 200 DK开发板问题总结

1.fatal error: acl/acl.h: No such file or directory 该问题是因为在设置的DDK环境变量下找不到头文件。 解决方法&#xff1a; 1&#xff09;输入echo $DDK&#xff0c;查看当前DDK地址 2&#xff09;在src文件夹下找到CMakeLists.txt文件&#xff0c;发现该文件有一个变量名…...

uniapp——实现二维码生成+保存二维码图片——基础积累

最近在做二维码推广功能&#xff0c;自从2020年下半年到今天&#xff0c;大概有三年没有用过uniapp了&#xff0c;而且我之前用uniapp开发的程序还比较少&#xff0c;因此很多功能都浪费了很多时间去查资料&#xff0c;现在把功能记录一下。 这里写目录标题 效果图1.根据接口返…...

零基础学前端(六)重点讲解 JavaScript

1. 该篇适用于从零基础学习前端的小白&#xff0c;完全从零基础角度出发 2. 我们学习时&#xff0c;应该主动向自己提问&#xff1f;只有你能提出问题&#xff0c;你才算是在编程中学习进步了。 3. 初学者不懂得问题很多&#xff0c;在自己在不懂时&#xff0c;一定要求助有经验…...

数据库问题记录(粗略版)oracle、mysql等主流数据库通用

1. ORA-00918&#xff1a;未明确定义列 该问题情况大致为&#xff1a;select 所取列名错误、重复等问题。 2. “select * from temp where 10; ”的含义 布尔值为FALSE&#xff0c;只返回表结构&#xff0c;不返回数据。 举一反三&#xff1a; select * from temp where 1&…...

ORACLE多列中取出数据最大的一条

1.需求说明&#xff1a; 当查询出来的数据存在多条数据时&#xff0c;想按照一定条件排序取出其中一条数据。 2.使用函数&#xff1a; row_number() over( partition by 分组字段 order by 排序字段 desc&#xff09; 3.示例&#xff1a; --根据table_a中的pk_house&#x…...

Xamarin.Android实现App内版本更新

目录 1、具体的效果2、代码实现2.1 基本原理2.2 开发环境2.3 具体代码2.3.1 基本设置2.3.2 系统的权限授予2.3.3 进度条的layout文件2.3.4 核心的升级文件 3、代码下载4、知识点5、参考文献 1、具体的效果 有事需要在程序内集成自动更新的功能&#xff0c;网上找了下&#xff…...

运维工程师面经

文章目录 前言RedisMongoDBPython中的GIL&#xff08;全局解释器锁&#xff09;Python算法总结 前言 本博客仅做学习笔记&#xff0c;如有侵权&#xff0c;联系后即刻更改 科普&#xff1a; Redis 参考网址 NoSQL技术 基于内存的数据库&#xff0c;并且提供一定的持久化功能…...

stm32之智能垃圾桶实战

之前用过51做过一个垃圾桶的小项目&#xff0c;这里用32重新搞了一下。视频的效果和之前一样&#xff0c;可参考这个垃圾桶效果 。 一、项目描述&#xff08;同51&#xff09; 项目主要是模拟不用手动打开垃圾桶盖&#xff0c;而进行自动操作。自动打开的条件如下&#xff1a…...

【C++面向对象侯捷下】2.转换函数 | 3.non-explicit-one-argument ctor

文章目录 operator double() const {} 歧义了 标准库的转换函数...

2026年,你的企业为什么还不会用AI发稿?技术人深度拆解Infoseek媒体库

最近GitHub上又一个开源项目火了&#xff0c;能自动生成并发布技术博客。这让我想到&#xff0c;在我们讨论AI取代程序员的同时&#xff0c;另一个领域的“自动化”早已跑在了前面——企业的媒体内容发布。很多技术团队还在手动找渠道、求小编&#xff0c;而一些市场部同事&…...

Umami MCP服务器:连接网站分析与AI工作流的标准化桥梁

1. 项目概述&#xff1a;一个为Umami量身定制的MCP服务器如果你正在使用Umami这个开源的网站分析工具&#xff0c;并且希望它能与你日常开发工作流中的其他工具&#xff08;比如代码编辑器、CLI工具、自动化脚本&#xff09;更紧密地结合&#xff0c;那么Macawls/umami-mcp-ser…...

面试题:预训练模型详解——GPT、BERT、T5 结构与训练目标、预训练微调范式、Transformers 加载 BERT 实战全解析

1. 为什么“预训练模型”会成为 NLP 面试高频题&#xff1f;1.1 这道题表面考模型&#xff0c;实质考的是一条技术主线面试官问预训练模型&#xff0c;通常不是单纯想听你背几个模型名字&#xff0c;而是想看你是否理解&#xff1a;NLP 为什么从传统的“每个任务单独训练一个模…...

ARM GICv3中断控制器架构与ICC_CTLR_EL3寄存器解析

1. ARM GICv3中断控制器架构概述在现代处理器架构中&#xff0c;中断控制器是连接外设与CPU核心的关键枢纽。ARM的通用中断控制器(Generic Interrupt Controller, GIC)经过多代演进&#xff0c;GICv3架构在虚拟化支持、多安全域管理和扩展性方面实现了显著提升。作为GICv3的核心…...

PyTorch进阶教程:从模型部署到工程化实战全解析

1. 项目概述与核心价值最近在深度学习社区里&#xff0c;一个名为“TingsongYu/PyTorch-Tutorial-2nd”的项目引起了我的注意。作为一名在算法工程领域摸爬滚打了多年的从业者&#xff0c;我深知对于初学者和希望系统进阶的开发者来说&#xff0c;一份结构清晰、内容扎实、且能…...

如何在macOS上轻松运行Windows程序?Whisky完整指南教程

如何在macOS上轻松运行Windows程序&#xff1f;Whisky完整指南教程 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 想在macOS上运行Windows专属软件却不想安装虚拟机&#xff1f;Whi…...

NotebookLM播客化军规级配置(仅限前500名开发者获取的prompt工程模板+声学环境补偿表)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM播客化军规级配置全景导览 NotebookLM 的播客化&#xff08;Podcasting&#xff09;能力并非开箱即用&#xff0c;需通过严格配置激活其语音合成、语义分段与上下文锚定三大核心能力。以下为…...

2000-2024年上市公司产学研合作数据

产学研合作&#xff08;University-Industry Collaboration, UIC&#xff09;是衡量企业与高校及科研机构协同创新程度的核心指标。本数据集基于中国上市公司年度报告中披露的客户及合作方清单构建&#xff0c;由团队依据公开披露信息测算&#xff0c;时间覆盖20002024年。核心…...

RDP Wrapper Library技术架构深度解析

RDP Wrapper Library技术架构深度解析 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rd/rdpwrap RDP Wrapper Library是一个Windows系统服务层中间件&#xff0c;通过在服务控制管理器与终端服务之间建立拦截层&#xff0c;为…...

如何实现数字孪生在智慧建筑中的应用?

一、搭建建筑数字底座以BIM 建筑信息模型为核心&#xff0c;对楼宇结构、楼层房间、机电设备、地下管网进行1:1 三维精细化建模&#xff0c;并完成模型轻量化处理&#xff0c;构建建筑全域三维数字底盘。二、多源感知数据接入在建筑内部部署温湿度、烟感、门禁、摄像头、水电表…...