面试 — 进行时 — 代理那些事

AI替代不是威胁,而是业务模型重构的进行时 生成式AI正从‘辅助工具’跃迁为生产力底层基础设施,其核心影响不在于取代岗位,而在于驱动业务模型重构、加速知识平权、引发组织中间层坍塌。当AI能完成任务执行、知识调用与初步决策时,人类价值重心已转向意图定义、语境判断与体验校准——这正是当前职场人亟需理解的‘替代发生学’逻辑。本文基于麦当劳数字化转型、Claude行业决策实验、Zillow房产AI代理等真实案例,解析AI如何重写招聘、分析、法律、教育等知识密集型工作的价值链条,并提供可落地的风险评估、知识资产化与人机协作飞轮方法论,助力教师、分析师、法务、产 阅读详情

好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受.

java 中代理的事项方式主要有:1. 静态代理;2. JDK 动态代理;3. CGLIB 动态代理;4.Spring AOP,现在做一个综合的整理和总结,详细如下:

1. 静态代理

设计思路

在编译时就确定了代理类和被代理类的关系,代理类和被代理类实现相同的接口或继承相同的父类,通过在代理类中调用被代理类的方法来实现间接访问。

源码实现

基于接口方式实现:

interface IUserDao{
    void insert();
}

class UserDaoImpl implements IUserDao{
    @Override
    public void insert() {
        System.out.println("这里执行了insert方法......");
    }
}

class UserDaoImplProxy implements IUserDao{
    private IUserDao userDao;
    public UserDaoImplProxy(IUserDao userDao){
        this.userDao = userDao;
    }

    @Override
    public void insert() {
        System.out.println("代理执行方法前.....");
        userDao.insert();
        System.out.println("代理执行方法后.....");
    }
}

public class StaticProxyWithInterfaceDemo {
    public static void main(String[] args) {
        IUserDao userDao = new UserDaoImpl();
        IUserDao userDaoProxy = new UserDaoImplProxy(userDao);
        userDaoProxy.insert();
    }
}
优缺点
  • 优点:可以代理所有实现接口的类,代理类在编译时就确定,运行时效率高。

  • 缺点:灵活性差,被代理的类必须实现接口,且每个被代理类都需要对应一个代理类,代码重复度高,维护成本高。

使用场景

适用于接口明确且稳定,且代理逻辑相对简单固定的场景,如对一组实现了相同接口的类进行统一的日志记录、权限验证等操作。

2. JDK 动态代理

设计思路

基于 Java 内置的反射机制,在运行时动态生成代理类。需要被代理的目标类必须实现一个或多个接口,代理类通过实现InvocationHandler接口来定义代理行为,然后通过Proxy.newProxyInstance()方法生成代理对象,该方法会根据指定的类加载器、接口列表和调用处理器(InvocationHandler实现类)动态生成代理类的字节码并加载到 JVM 中,代理对象会拦截对目标对象接口方法的调用,并将这些调用转发给InvocationHandler的invoke()方法处理。

源码实现

interface IStudentDao{
    void insert();
}

class StudentDaoImpl implements IStudentDao{
    @Override
    public void insert() {
        System.out.println("执行了insert方法......");
    }
}

class ProxyInvoke implements InvocationHandler{
    Object target;
    public ProxyInvoke(Object target){
        this.target = target;
    }
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("代理执行方法前......");
        method.invoke(target,args);
        System.out.println("代理执行方法后......");
        return null;
    }
}
public class DynamicProxyWithJDKDemo {
    public static void main(String[] args) {
        IStudentDao studentDao = new StudentDaoImpl();
        IStudentDao studentDaoProxy = (IStudentDao) Proxy.newProxyInstance(studentDao.getClass().getClassLoader(),studentDao.getClass().getInterfaces(),new ProxyInvoke(studentDao));
        studentDaoProxy.insert();
    }
}
优缺点
  • 优点:简单易用,无需额外依赖,与 Java 语言高度集成,对接口方法的代理灵活性高,可动态切换代理逻辑,在不修改目标类代码的情况下,能够灵活地为多个不同的目标对象提供统一的代理逻辑。

  • 缺点:只能代理实现了接口的类,无法对没有实现接口的类进行代理,且性能相对 CGLIB 动态代理稍低。

使用场景

适用于目标类已经实现了明确的接口,且需要在运行时动态地为多个目标对象添加通用的代理逻辑的场景,如 AOP 中的切面功能实现、RPC 框架中客户端对服务端接口的远程调用代理等。

3. CGLIB 动态代理

设计思路

CGLIB(Code Generation Library)是一个第三方代码生成类库,它通过字节码技术在运行时动态生成目标类的子类来实现代理。当使用 CGLIB 代理时,它会对目标类的字节码进行增强,生成一个继承自目标类的代理类,在代理类的方法中,可以在执行目标方法前后添加自定义的逻辑。CGLIB 主要依赖Enhancer类和MethodInterceptor接口来实现动态代理功能。

源码实现

<dependency>
     <groupId>cglib</groupId>
     <artifactId>cglib</artifactId>
     <version>3.2.12</version>
 </dependency>

class TeacherDao{
    public void insert(){
        System.out.println("执行了insert方法");
    }
}

public class DynamicProxyWithCgLibDemo {
    public static void main(String[] args) {
        TeacherDao teacherDao = new TeacherDao();
        TeacherDao teacherProxy = (TeacherDao) Enhancer.create(teacherDao.getClass(), new MethodInterceptor() {
            @Override
            public Object intercept(Object obj, Method method, Object[] args, MethodProxy proxy) throws Throwable {
                System.out.println("执行方法之前");
                proxy.invokeSuper(obj,args);
                System.out.println("执行方法之后");
                return null;
            }
        });
        teacherProxy.insert();
    }
}
优缺点
  • 优点:可以代理没有实现接口的类,灵活性强,性能较高,能高效地对类的方法进行拦截和增强,适用于对类的行为进行精细控制的场景。

  • 缺点:基于继承的代理方式可能带来问题,如无法代理final类和final方法,可能会破坏被代理类的封装性,且生成的字节码文件较多,可能会影响类加载器的性能。

使用场景

当需要代理的类没有实现任何接口,或者需要对类本身的某些特定行为进行增强时,CGLIB 动态代理是较好的选择。例如,在一些 ORM 框架中,对实体类的持久化操作进行代理增强;在性能敏感的场景中,对一些频繁调用的无接口类的方法进行性能监控等。

综上所述,这三种代理方式各有特点和适用场景,开发人员可以根据实际需求灵活选择合适的代理方式来实现代码的增强和解耦等功能。

码字不易,不迷路
 

【系统设计】系统设计相关课题的速成“葵花宝典”! 推荐超级课程:这是一门关于系统设计面试概念的完全速成讲解,这些概念是您在实战或者面试系统设计师工作前需要了解的。 系统设计面试与编码无关,人们不想看到您编写实际代码,而是想看到您如何将整个系统组合在一起, 这正是我们将在本教程中涵盖的内容,我们将讨论所有您设计大规模分布式系统之前需要了解的概念。要了解个人计算机的高级架构,在计算机上不同部件如何共同执行我们的代码,计算机通过分层系统运行,每一层针对不同任务进行优化。 计算机只能理解二进制的0和1,这些被表示为比特,一位比特是计算中最小的数据单位, 可以是0 阅读详情

相关推荐

SAP-MM-PR分配货源并转PO

SAP-MM-PR分配货源并转PO

yanzibing99的博客 5472

面试 — 进行时 —jdk 代理

java JDK 那些实现的代理实现

草原孤狼的专栏 824

Windows10内核逆向-2-KiSystemCall64的调用流程剖析

本文深入剖析了Windows 10 x64系统中KiSystemCall64函数的完整调用流程。从用户态触发syscall指令开始,详细讲解了如何通过swapgs切换内核栈、构建KTRAP_FRAME陷阱帧、进行SMAP/CFG等安全检查,到最终通过SSDT寻址并执行目标系统服务的全过程,揭示了系统调用从Ring 3到Ring 0切换的核心机制与安全设计。

weixin_29209805的博客 81

面试 — 进行时 — CGLIB代理实现

Cglib 代理

草原孤狼的专栏 1145

基于FFmpeg与Nginx的大华摄像头实时视频Web接入方案

本文详细介绍了一种基于FFmpeg与Nginx的大华摄像头实时视频Web接入方案。该方案通过FFmpeg将摄像头RTSP协议流转换为浏览器友好的HLS格式,并利用Nginx进行高效分发,最终结合Video.js构建前端播放页面,实现无需插件的跨平台实时监控。方案具有免费、轻量、稳定、易于部署的特点,适合中小企业、个人开发者快速搭建内部监控或展示系统。

weixin_28040125的博客 343

资金穿透分析

我们把准备好的银行数据导入到软件中,导入具体步骤这里不做详解,大家可以通过“清林情报分析师”公众号,查看操作视频第二节

清林情报分析师 3489

面试 — 进行时 — Spring AOP

spring aop 相关知识普及

草原孤狼的专栏 1551

使用buildroot系统的qmake编译QT出现Unknown module(s) in QT: xxxx 的错误解决方法

可以看到,我这里使用的是 qt5base-5.15.2 目录下的qmake,这个qmake只包含了基础的qt模块,而额外添加的qt模块没有包含进去,需要使用。可以看到我这里是有的,如果你跟我一样,模块存在,但是还是报找不到对应模块的错误的话,大概率是跟我一样,用错qmake了,看第二点。在包含 qt5base 目录下查看,是否有对应模块的目录,如果没有的话,需要通过make menuconfig 添加一下。目录下的qmake才可以。

T541132的博客 2489

代理进行时:前端开发中的Proxy实践与案例

🤍 前端开发工程师、技术日更博主、已过CET6🍨、23年度博客之星前端领域TOP1🕠高级专题作者、打造专栏🍚签约作者、上架课程💬 前些天发现了一个巨牛的,通俗易懂,风趣幽默,忍不住分享一下给大家。。

你若盛开,清风自来 1159

TI 实时操作系统SYS/BIOS使用总结

1:概述: SYS/BIOS 是一个可扩展的实时的操作系统。具有非常快速的响应时间(在中断和任务切换时达到较短的延迟),响应时间的确定性,强壮的抢占系统,优化的内存分配和堆栈管理(尽量少的消耗和碎片)。能够实现系统的模块化并可裁剪。 最大的特点就是:实时。 2:XDCtools: XDCtools 是SYS/BIOS引用的一种实时的软件组件技术(RTSC),它包括一些有用的工具,标准的AP

带头奋青的博客 5万+

【OpenCV实战】简洁易懂的车牌号识别Python+OpenCV实现“超详解”(含代码)

简洁易懂的车牌号识别Python实现(含代码)1、整体思路2、代码详解 1、整体思路 2、代码详解

qq_40784418的博客 9万+

【面试进行时】大厂常考面试题一览(一)

这几天在整理之前的面试资料,又偶在在群里和各位同学一起探讨些奇妙的问题,心有所感,便准备将这些题目整理起来,一来是分析给大家,二来也以备日后之需。 一面二面主要是基础面,问的都是一些基础知识,难度不是很高,这里我就简单的分享一下我所遇到的题目。 一、面试者你好,我们开门见山,能跟我介绍一下spring的核心特征吗?包括Spring bean的生命周期也可以讲一下。 对于java工程师来说,几乎没...

南橘Home 574

基于YOLOv26的智能农业无人机巡检系统

本文提出了一种基于YOLOv26的智能农业无人机巡检系统。系统采用模块化设计,包含数据采集、预处理、目标检测、图像拼接、分析决策和部署控制六大核心模块。无人机搭载多光谱相机、RGB相机和热红外相机进行农田数据采集,通过YOLOv26实现作物病虫害、杂草及灌溉设备的检测。系统采用PyTorch、OpenCV等技术栈,支持无人机自动路径规划和多传感器数据采集,并包含数据增强和预处理功能。该系统可有效提升农业巡检效率,为精准农业提供智能化解决方案。

一键难忘的博客 807

iOS 面试进行时

1. C语言里的数组与OC数组的区别 OC 数组是一个对象,有大量的方法,c 没有都需要自己写C 数组删除是需要后面往前移动,oc 数组自动处理  2.tcp 是顺序的,可靠的,面向连接的,   udp 是无序的,不可靠的,无连接的,吞吐量达的 7. 常见的点击手势有哪几种 UIPinchGuesture, UITapGuesture, UISwipGuesture,

liyonghuaxin的专栏 2464

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

腾讯安卓面试题,万字攻略,写给1-3年Android程序员的几点建议

今天关于面试的分享就到这里,还是那句话,有些东西你不仅要懂,而且要能够很好地表达出来,能够让面试官认可你的理解,例如Handler机制,这个是面试必问之题。有些晦涩的点,或许它只活在面试当中,实际工作当中你压根不会用到它,但是你要知道它是什么东西。最后在这里小编分享一份自己收录整理上述技术体系图相关的几十套腾讯、头条、阿里、美团等公司的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。还有。

2401_84023482的博客 739

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Java面试备战全攻略:AI时代下如何高效准备与争取高薪

在Java开发领域,掌握核心原理与系统设计能力是构建技术竞争力的关键。从Java基础、并发编程到JVM调优和MySQL优化,深入理解其底层机制与设计思想,能够帮助开发者应对复杂场景下的性能与稳定性挑战。随着AI工具的普及,面试考察重点正从语法记忆转向原理理解与设计权衡,这要求开发者不仅会使用技术,更要懂得其背后的技术价值与应用场景。例如,在应对高并发场景时,需结合JUC工具包和MySQL锁机制进行系统化设计;在系统优化中,需串联JVM性能监控与数据库索引原理进行综合排查。本文将探讨如何将这些核心知识融入实战

weixin_34082854的博客 357

人生面试官:你今天学习了吗

这段时间正逢疫情蔓延全国,有些人在家办公,有些人延缓上班,却有那么一群人在一线与疫情战斗,成为最美丽的逆行者。

徐福记456 4万+

面试速记之操作系统

目录进程调度算法先来先服务短进程优先高响应比优先时间片轮转法优先级调度多级反馈队列 进程调度算法 先来先服务 根据到达先后顺序,考虑等待时间 非抢占式 优点:公平、简单、不会饥饿 缺点:对短进程不利 短进程优先 短进程优先得到服务,考虑运行时间 包括非抢占式和抢占式(最短剩余时间优先) 缺点:不公平,对长进程不利,可能产生饥饿 高响应比优先 根据响应比从高到低进行调度,兼顾了等待和运行时间 响应比 = (等待时间 + 要求服务时间) / 要求服务时间 非抢占式 不会饥饿 时间片轮转法 公平、轮流地为各个进程

技术宇宙 388

持续更新大厂面试笔试题,Android茫茫半年求职路,大厂程序员35岁后的职业出路在哪

都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 PDF(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。Java语言与原理;大厂,小厂。Android面试先看你熟不熟悉Java语言高级UI与自定义view。

2401_84102892的博客 411

java框架常见的面试题整理

最近本人要出去找工作了,来过一过学过的框架,嘿嘿~ 根据招聘需求,捋一捋框架,嘿嘿~ 注:此为本人整理,整理的不规范,尽请谅解 一. SSH (了解) 设为了解,没使用过,但招聘需求包含,咱得了解了解 基于MVC开发,分为表现层、业务逻辑层、数据访问层、模块层。用于短期环境搭建结构,web应用程序开源框架,市场上流行的框架有主要有SSH和SSM,相比较于SSH,SSM现在使用更多,但例如JSP,S...

weixin_42865375的博客 678

好工作还是好套路?

作者分享了自己遭遇的求职套路经历。在收到招聘短信后,被诱导下载可疑APP进行"线上试岗",前期通过简单任务获取信任,后期以"数据分析"名义要求向私人账户转账充值,承诺高额回报。虽然前期小额提现成功,但发现诸多可疑点:公司信息不实、高薪无责任底薪、单轮面试等,最终识破骗局。文章列举了类似骗局的新闻报道,提醒求职者警惕此类"馅饼"招聘,避免上当受骗。

诗酒年华 1522

面试Spring技术

1、Spring的工作原理及使用场景 什么是AOP AOP(Aspect-OrientedProgramming,面向方面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。也就是说,OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能。日志代码往往水平地散布在所有对象层次中,而与

千城墨白 507

「面试必背」Nginx\_BIO\_NIO\_AIO面试题(收藏)

前言 在所有互联网公司中,Nginx 作为最常用的 7 层负载均衡代理层,每个后端开发人员和运维人员都应该对其有较为深入的理解。 1. 什么是IO 2. 在了解不同的IO之前先了解:同步与异步,阻塞与非阻塞的区别 同步,一个任务的完成之前不能做其他操作,必须等待(等于在打电话) 异步,一个任务的完成之前,可以进行其他操作(等于在聊QQ) 阻塞,是相对于CPU来说的, 挂起当前线程,不能做其他操作只能等待 非阻塞,,无须挂起当前线程,可以去执行其他操作 3. 什么是BIO BIO:同步

a6636656的博客 343

Android茫茫半年求职路,终于斩获三个大厂offer(1)

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。不断奔跑,你就知道学习的意义所在!

2401_84121827的博客 1083

Java面试之数据库篇

java面试之数据库

weixin_43397326的博客 1224

log4j-slf4j-impl cannot be present with log4j-to-slf4j

好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受. 目录 一、日志冲突 二、问题描述 三、解决方案 一、日志冲突 日志在平时的开发中,扮演着十分重要的角色,可以很方便的帮助我们快速定位问题,查找原因,进而解决问题。但是有的时候,总是会遇到各种各样很奇葩的问题,如: 二、问题描述 项目背景:项目中引入了第三方的组件,组件选取的日志框架是 log4j2,但是在将第三方组件引入到springboot(默认日志框架logback实现)工程时候,就出现如上日志报错。

草原孤狼的专栏 3万+
上一篇: 面试 — 进行时 — Spring AOP
下一篇: 你必须知道的那些经典的设计模式
supingemail
博客等级 码龄18年 1235粉丝 320原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值