如何做网站对比网站开发与维护项目招标

web/2025/9/30 6:52:40/文章来源:
如何做网站对比,网站开发与维护项目招标,网站的建设费计入什么费用,广东企业网站制作java代理模式本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题#xff0c;包括对象创建#xff0c;并发#xff0c;序列化#xff0c;反射等。 它将指导您完成Java掌握的旅程#xff01; 在这里查看 #xff01;… java代理模式 本文是我们名为“ 高级Java ”的学院课程的一部分。 本课程旨在帮助您最有效地使用Java。 它讨论了高级主题包括对象创建并发序列化反射等。 它将指导您完成Java掌握的旅程 在这里查看 目录 1.简介 2. Java代理基础 3. Java代理和规范 4.编写您的第一个Java代理 5.运行Java代理 6.接下来 7.下载源代码 1.简介 在本教程的最后一部分中我们将讨论Java代理这对于在那里的常规Java开发人员是一个真正的魔咒。 通过执行字节码的直接修改Java代理能够“侵入”运行时在JVM上运行的Java应用程序的执行。 Java代理的功能和危险一样强大它们几乎可以执行所有操作但是如果出现问题它们很容易使JVM崩溃。 这部分的目的是通过解释Java代理如何工作如何运行它们以及展示一些简单的示例来揭开Java代理的神秘面纱Java代理显然具有优势。 2. Java代理基础 本质上Java代理是遵循一组严格约定的常规Java类。 代理类必须实现一个public static void premain(String agentArgs, Instrumentation inst)方法该方法成为代理的入口点类似于常规Java应用程序的main方法。 初始化Java虚拟机JVM后将按照在JVM启动时指定代理的顺序调用每个代理的每个此类premain(String agentArgs, Instrumentation inst)方法。 完成此初始化步骤后将调用真实的Java应用程序main方法。 但是如果该类未实现public static void premain(String agentArgs, Instrumentation inst)方法则JVM将尝试查找并调用另一个重载版本的public static void premain(String agentArgs) 。 请注意每个premain方法必须返回才能启动阶段。 最后但并非最不重要的一点是Java代理类还可以具有在JVM启动后启动代理时使用的public static void agentmain(String agentArgs, Instrumentation inst)或public static void agentmain(String agentArgs)方法。 乍看之下看起来很简单但Java代理实现还应提供其他一些内容作为其包装的一部分清单。 清单文件通常位于META-INF文件夹中名为MANIFEST.MF 包含与包分发有关的各种元数据。 我们在本教程中并未讨论清单因为大多数时候它们都不是必需的但是Java代理不是这种情况。 为打包为Java归档或简称JAR文件的Java代理定义了以下属性 清单属性 描述 初级班 在JVM启动时指定了代理时此属性定义Java代理类包含premain方法的类。 在JVM启动时指定代理时此属性是必需的。 如果该属性不存在JVM将中止。 代理级 如果实现支持在JVM启动后的某个时间启动Java代理的机制则此属性指定代理类包含agentmain方法的类。 此属性是必需的如果不存在该代理则不会启动代理。 引导类路径 引导类加载器要搜索的路径列表。 路径代表目录或库。 可以重新定义类 true或false值不区分大小写并且定义是否具有重新定义此代理所需的类的能力。 此属性是可选的默认值为false 。 可以重新转换类 true或false值不区分大小写并且定义是否具有重新转换此代理所需的类的能力。 此属性是可选的默认值为false 。 可以设置本机方法前缀 true或false值不区分大小写并且定义是否可以设置此代理所需的本机方法前缀。 此属性是可选的默认值为false 。 有关更多详细信息请随时查阅专用于Java代理和工具的官方文档 。 3. Java代理和规范 Java代理的检测功能确实是无限的。 最引人注意的包括但不限于 能够在运行时重新定义类。 重新定义可能会更改方法主体常量池和属性。 重新定义不得添加删除或重命名字段或方法更改方法的签名或更改继承。 能够在运行时重新转换类。 重新转换可能会更改方法主体常量池和属性。 重新转换不得添加删除或重命名字段或方法更改方法的签名或更改继承。 通过允许重命名使用前缀来修改本机方法解析的失败处理的能力。 请注意在应用转换或重新定义后不会检查验证和安装重新转换或重新定义的类字节码。 如果生成的字节码错误或不正确则将引发异常这可能会使JVM完全崩溃。 4.编写您的第一个Java代理 在本节中我们将通过实现我们自己的类转换器来编写一个简单的Java代理。 话虽如此使用Java代理的唯一缺点是为了完成或多或少的有用转换需要直接字节码操作技能。 而且不幸的是Java标准库没有提供任何API至少是有文档的API来使这些字节码操作成为可能。 为了填补这一空白富有创造力的Java社区提出了一些优秀的非常成熟的库例如Javassist和ASM 仅举几例。 在这两种方法中Javassist使用起来更简单这就是为什么它成为我们将要用作字节码操作解决方案的原因。 到目前为止这是我们第一次无法在Java标准库中找到合适的API除了使用社区提供的API之外别无选择。 我们将要处理的示例相当简单但它取自于实际的用例。 假设我们要捕获Java应用程序打开的每个HTTP连接的URL。 有很多方法可以通过直接修改Java源代码来做到这一点但让我们假设由于许可证策略或其他原因导致源代码不可用。 打开HTTP连接的类的典型示例如下所示 public class SampleClass {public static void main( String[] args ) throws IOException {fetch(http://www.google.com);fetch(http://www.yahoo.com);}private static void fetch(final String address) throws MalformedURLException, IOException {final URL url new URL(address); final URLConnection connection url.openConnection();try( final BufferedReader in new BufferedReader(new InputStreamReader( connection.getInputStream() ) ) ) {String inputLine null;final StringBuffer sb new StringBuffer();while ( ( inputLine in.readLine() ) ! null) {sb.append(inputLine);} System.out.println(Content size: sb.length());}} } Java代理非常适合解决此类挑战。 我们只需要定义一个转换器即可通过注入代码以将输出生成到控制台来稍微修改sun.net.www.protocol.http.HttpURLConnection构造函数。 听起来很吓人但是使用ClassFileTransformer和Javassist非常简单。 让我们看一下这样的转换器实现 public class SimpleClassTransformer implements ClassFileTransformer {Overridepublic byte[] transform( final ClassLoader loader, final String className,final Class? classBeingRedefined, final ProtectionDomain protectionDomain,final byte[] classfileBuffer ) throws IllegalClassFormatException {if (className.endsWith(sun/net/www/protocol/http/HttpURLConnection)) {try {final ClassPool classPool ClassPool.getDefault();final CtClass clazz classPool.get(sun.net.www.protocol.http.HttpURLConnection);for (final CtConstructor constructor: clazz.getConstructors()) {constructor.insertAfter(System.out.println(this.getURL()););}byte[] byteCode clazz.toBytecode();clazz.detach();return byteCode;} catch (final NotFoundException | CannotCompileException | IOException ex) {ex.printStackTrace();}}return null;} } ClassPool和所有CtXxx类 CtClass CtConstructor 都来自Javassist库。 我们所做的转换是非常幼稚的但此处仅用于演示目的。 首先由于我们仅对HTTP通信感兴趣因此sun.net.www.protocol.http.HttpURLConnection是来自标准Java库的类。 请注意而不是“。” 分隔符 className带有“ /”。 其次我们寻找HttpURLConnection类并通过注入System.out.println(this.getURL());修改其所有构造函数System.out.println(this.getURL()); 最后的声明。 最后我们返回了该类转换后的版本的新字节码因此它将由JVM使用而不是原始版本。 这样Java代理的premain方法的作用就是将SimpleClassTransformer类的实例SimpleClassTransformer到检测上下文中 public class SimpleAgent {public static void premain(String agentArgs, Instrumentation inst) {final SimpleClassTransformer transformer new SimpleClassTransformer();inst.addTransformer(transformer);} } 而已。 看起来很容易同时又有些令人恐惧。 为了完成Java代理我们必须提供适当的MANIFEST.MF以便JVM能够选择正确的类。 这是必需属性的相应最小集合有关更多详细信息请参阅Java Agent Basics部分 Manifest-Version: 1.0 Premain-Class: com.javacodegeeks.advanced.agent.SimpleAgent 这样一来首先的Java代理就准备好进行一场真正的战斗。 在本教程的下一部分中我们将介绍一种与Java应用程序一起运行Java代理的方法。 5.运行Java代理 从命令行运行时可以使用具有以下语义的-javaagent参数将Java代理传递到JVM实例 -javaagent:path-to-jar[options] 其中path-to-jar是查找Java代理JAR归档文件的路径而options包含可以通过agentArgs参数更准确地传递给Java代理的其他选项。 例如从编写您的第一个Java代理 使用Java 7版本部分运行我们的Java代理的命令行如下所示假定代理JAR文件位于当前文件夹中 java -javaagent:advanced-java-part-15-java7.agents-0.0.1-SNAPSHOT.jar 与advanced-java-part-15-java7.agents-0.0.1-SNAPSHOT.jar Java代理一起运行SampleClass类时该应用程序将在控制台上打印所有URL Google和Yahoo! 。尝试使用HTTP协议进行访问其次是Google和Yahoo!搜索主页的内容大小 http://www.google.com Content size: 20349 http://www.yahoo.com Content size: 1387 在未指定Java代理的情况下运行相同的SampleClass类将仅在控制台上输出内容大小而不输出URL请注意内容大小可能会有所不同 Content size: 20349 Content size: 1387 JVM使运行Java代理变得简单。 但是请注意任何错误或不正确的字节码生成都可能使JVM崩溃并可能丢失此时您的应用程序可能保存的重要数据。 6.接下来 到最后高级Java教程也结束了。 希望您发现它是有用实用和有趣的。 有许多主题尚未涵盖但是非常欢迎您继续深入探讨Java语言平台生态系统和不可思议的社区的奇妙世界。 祝好运 7.下载源代码 您可以在此处下载本课程的源代码 advanced-java-part-15 翻译自: https://www.javacodegeeks.com/2015/09/java-agents.htmljava代理模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84316.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

公司网站开发费用放在什么科目免费注册企业

作业题目: 作业- IT 行业博客网站分析和创新同学们交上来的作业: 6个组作业的地址公布如下: 刘爽组这次把三个博客(CSDN,博客园,ITEYE)三个博客统一用同样的博客名称:amazingidiot 博客链接:htt…

网站网页制作图片素材建网站的电脑可以换位置吗

安卓手机APP开发者的第一件事:安装安卓工作台 安装安卓工作台仅需要一些点击。首先检查软件对系统需求。 然后下载最新版本的安卓工作台。 在windows系统下的安装 需求项 最低配置 推荐配置 操作系统 64位的windows8 最新版本的64位的windows 内存 8GB …

百度网站排名突然消失青海省教育厅门户网站学籍查询

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 【Linux】Docker 安装部署 Nacos docker搜索na…

网站打开很慢怎么回事啊电脑网站编程

目录 一、LMDB文件二、准备训练集三、安装basicsr包四、LMDB文件制作4.1 参数修改4.2 其它格式图片修改4.3 代码4.4 转换结果4.4.1 data.mdb文件4.4.2 lock.mdb文件4.4.3 meta_info.txt文件 五、总结 一、LMDB文件 在训练的时候使用LMDB 存储形式可以加快IO 和CPU 解压缩的速度…

普法网站建设方案平台运营是做什么的

1. rule.xml分片规则配置文件 rule.xml中配置的主要就是拆分表的规则,rule.xml中主要包含两类标签 tableRule 和Function。 tableRule标签里面主要配置我们的分片规则,Function里面涉及的是分片规则里面所涉及的java类,都是在function中配置…

腾讯云学生机做网站用cms建网站

您好,感谢您在我们论坛发帖。首先,按照您的描述,正常情况下,您的客户端可以远程连接您的服务器,输入IP和端口之后,会弹出验证框,输入账户密码之后即可进入服务器的桌面。当出现问题时&#xff0…

律师事务所网站建设重要性姜堰网站制作

目录 1、什么是Doxygen?. 3 2、撰写正确格式的批注... 4 2.1常用指令介绍... 4 2.2简述与详述的方式... 6 2.3文件头注释... 6 2.4版权注释... 6 2.5模块定义(单独显示一页)... 7 2.6分组定义(在一页内分组显示)... 8 2.7变量、宏…

红铃铛网站建设上海外贸仓库

JetBrains最近推出的Rust集成开发工具——RustRover已经发布,官方网站:RustRover: Rust IDE by JetBrains JetBrains出品过很受欢迎的开发工具IntelliJ IDEA、PyCharm等。 RustRover优势 Rust集成环境,根据向导可自动下载安装rust开发环境提…

网站建设的公司怎么收费自己做的网站怎么链接火车头采集

oppo人岗匹配测评我们被迫在测试代码中写太多断言行的日子已经一去不复返了。 镇上有一个新的警长:assertThat和他的代理人:匹配者。 好吧,这不是什么新东西,但是无论如何,我想向您介绍匹配器的使用方式,然…

网络优化seo招聘优化搜索引擎

在《asp.net core认证与授权》中讲解了固定和自定义角色授权系统权限,其实我们还可以通过其他方式来授权,比如可以通过角色组,用户名,生日等,但这些主要取决于ClaimTypes,其实我们也可以自定义键值来授权&a…

贵金属企业网站源码宣传网站开发

一、函数指针 1、定义 顾名思义,函数指针就是函数的指针。它是一个指针,属于一个数据类型,其指向一个函数。如定义一个函数,其入口地址就是这个函数的指针,是个常量,可以用该常量给函数指针类型的变量赋值&…

网站开发语言识别北京优秀的网站建设公司

python缓冲区When people who speak different languages get together and talk, they try to use a language that everyone in the group understands. 当说不同语言的人聚在一起聊天时,他们会尝试使用小组中每个人都能理解的语言。 To achieve this, everyone …

合肥网站设计公司怎样让百度搜不到自己的网站

一、NLP是什么 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向,也就是人们常说的「自然语言处理」,就是研究如何让计算机读懂人类语言,即将人的自然语言转换为计算机可以阅读的指令。它研…

盐城集团网站建设南通网站排名优化

大模型背后的范式 整个预训练语言模型的使用范式: 对于预训练模型,最核心的要素是从无标注的数据中去学习,通过自监督的一些任务去做预训练,得到丰富的知识。在具体的应用中,会引入一些任务相关的数据,去调…

米各庄网站建设遂宁模板建站公司

maven:编译出现Process terminated解决方法(超全) 一. 情况一:配置文件 settings. xml 出错(解决方法1)1.1 项目编译报错如下:1.2 点击【项目名】提示找到出错文件1.3 点击查看出错文件1.4 原因及解决办法 …

制作网页的网站有哪些建设银行网站连不上

今天又学会了一个知识,加油! 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

大学网页制作与网站建设开通网站需要什么手续

文章首发地址 为了解决在云原生环境中,Java应用启动慢的问题,出现了很多派系,如拯救派,让应用在原有基础上启动更快(一般都是用资源换时间),还有就是革命派,Java向Golang学习&#x…

三亚网站建设公司移动网站建设是什么意思

安卓工具箱专业版是款集所有功能于一身的工具箱!包括硬件和软件和工具,您的手机使用的信息。非常容易使用,具有非常用户友好的用户界面。 主要功能: 1。硬件信息:CPU核心,CPU类型,内存信息&…

胡芦娃app软件下载网站前端开发工具哪个好

Linux——权限的理解 文章目录 Linux——权限的理解一、shell命令以及运行原理二、Linux权限的概念切换用户对指令提权 三、Linux权限管理1. 文件访问者的分类(人)2. 文件类型和访问权限(事物属性)文件类型基本权限文件权限值的表…

手机网站开发步骤网站建设的基本技术

泛型 基本概念为什么我们需要泛型泛型类型泛型类简单泛型类多元泛型类 泛型接口泛型方法为什么要使用泛型方法呢?使用方法 泛型的上下限上限下限加点难度的例子例子一例子二例子三 泛型数组深入理解泛型什么是泛型擦除后保留的原始类型泛型类型擦除原则如何进行擦除的?怎么证…