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

黄页网站推广app安阳网站设计多少钱

黄页网站推广app,安阳网站设计多少钱,做盗版网站 国外服务器吗,怎么上不到建设银行网站“看到一个沙粒中的世界”#xff0c;我们很可能会看到最简单的“ Hello World”中的世界#xff0c;所以我们开始吧#xff0c;再一次向世界问好。 我猜所有的Java课程#xff0c;教程都是从这个著名的Hello World程序开始的#xff0c;这是我可以在没有IDE的帮助下编写… “看到一个沙粒中的世界”我们很可能会看到最简单的“ Hello World”中的世界所以我们开始吧再一次向世界问好。 我猜所有的Java课程教程都是从这个著名的Hello World程序开始的这是我可以在没有IDE的帮助下编写的非常罕见的程序之一 public class HelloWorld {public static void main(String[] args) {System.out.println(Hello World);} }1.您知道这些javac选项吗 编写第一个程序后您将首先执行以下命令进行编译否则将无法运行。 javac HelloWorld.java 您可能会发现不必将文件命名为“ HelloWorld.java”“ Hello.java”也可以使用。 public class HelloWorld也可以降级为class HelloWorld 。 如果您好奇地按下javac --help 将会看到很多有关Java编译器的选项例如我们要打印中文版“ Hello World”并希望它完全适用于JDK8语言级别元数据为包含的参数名称它看起来像这样 javac -encoding UTF-8 -source 8 -target 8 -parameters Hello.java 您已经安装了JDK11但是使用上面的命令仅使用1.8功能发布了类文件。 如果您编写了一些仅可从JDK9获得的内容则会发现它无法按预期进行编译。 2.类文件的基础 关于Java虚拟机规范中的类文件格式的整章内容您是否需要对其进行一些探讨 您会看到字节码与JDK11一起编译以一个神奇的神秘的“ cafe babe”开头随后为55很多东西会伤害您的大脑。 其中“ cafe babe”是魔力指向次要版本的55分映射到JDK11。 与读取超赞的类文件格式相比您还可以使用javap检索该类文件的信息 # You would use javap -h to see how many options you have javap -p -l -c -s -constants HelloWorld 您将获得如下内容 class HelloWorld {HelloWorld(); descriptor: ()V Code: 0: aload_0 1: invokespecial #1 // Method java/lang/Object.init:()V 4: return LineNumberTable: line 1: 0 public static void main(java.lang.String[]); descriptor: ([Ljava/lang/String;)V Code: 0: getstatic #2 // Field java/lang/System.out:Ljava/io/PrintStream; 3: ldc #3 // String Hello World 5: invokevirtual #4 // Method java/io/PrintStream.println:(Ljava/lang/String;)V8: return LineNumberTable: line 4: 0 line 5: 8 } 您会发现这里的指令与源代码有些相似带有源代码的行号和指令号的映射您可能想知道我可以从这些东西中恢复源代码吗 3.反编译器 是的你可以。 反编译器有很多但是其中一些反编译器已经过时例如JD-GUI JAD等它们在使用最新JDK编译的类文件上不能很好地工作。 您仍然可以使用它们但CFR更合适。 # java -jar cfr-0.139.jar HelloWorld.class /* * Decompiled with CFR 0.139.*/ import java.io.PrintStream; class HelloWorld { HelloWorld() { } public static void main(String[] arrstring) {System.out.println(Hello World); } } 您可能已经发现源代码和反编译的代码添加了构造方法略有不同实际上您可能会惊讶地发现有时似乎对源代码进行了修改从而使您感到惊讶。 但是其中许多是通过JVM进行的优化通常可以提高性能比较它们之间的差异实际上很有趣并且可以为您提供很多见识。 4.如何再次初始化具有空值的最终变量 System.out.println(Hello World) System是一个类out是其最终属性的静态属性之一 public final static PrintStream out null; 然后问题来了为什么hack System.out.println(Hello World)不会抛出著名的NullPointerException 根据语言规范似乎最终的静态变量out不可能分配给有效值再次吧 是的在大多数情况下如果您不使用肮脏的反射技巧并且不引入native好友那是对的。 如果您只是想玩转可以这样做 Field f clazz.getDeclaredField(out); Field modifiersField Field.class.getDeclaredField(modifiers); modifiersField.setAccessible(true); modifiersField.setInt(f, f.getModifiers() ~Modifier.FINAL); 但是这对于System无效实际的秘密隐藏在System.java以下代码行中 private static native void registerNatives(); static {registerNatives(); } 按照方法上方写的注释“ VM将调用initializeSystemClass方法来完成此类的初始化”转到initializeSystemClass方法您将看到以下行 FileInputStream fdIn new FileInputStream(FileDescriptor.in); FileOutputStream fdOut new FileOutputStream(FileDescriptor.out); FileOutputStream fdErr new FileOutputStream(FileDescriptor.err); setIn0(new BufferedInputStream(fdIn)); setOut0(newPrintStream(fdOut, props.getProperty(sun.stdout.encoding))); setErr0(newPrintStream(fdErr, props.getProperty(sun.stderr.encoding))); 而且你还可以看到这3种本地方法设置in与out private static native void setIn0(InputStream in); private static native void setOut0(PrintStream out); private static native void setErr0(PrintStream err); 因此现在您知道JVM在OS级别上做了这些工作并“绕过”了final限制您可能会问JVM将适应的OS级别代码在哪里被破解 所以这里是System.c JDK11版本 。 JNIEXPORT void JNICALL Java_java_lang_System_registerNatives(JNIEnv *env, jclass cls) {(*env)-RegisterNatives(env, cls,methods, sizeof(methods)/sizeof(methods[0])); } /** The following three functions implement setter methods for* java.lang.System.{in, out, err}. They are natively implemented* because they violate the semantics of the language (i.e. set final* variable).*/ JNIEXPORT void JNICALL Java_java_lang_System_setIn0(JNIEnv *env, jclass cla, jobject stream) {jfieldID fid (*env)-GetStaticFieldID(env,cla,in,Ljava/io/InputStream;);if (fid 0)return;(*env)-SetStaticObjectField(env,cla,fid,stream); } 在这里您可以在注释中找到后门 “它们是本机实现的因为它们违反了语言的语义即设置最终变量” 。 然后您会发现这是一条漫长的道路。 旅程将永远不会停止。 结束停一会儿 “用沙粒看世界 还有野花中的天堂 将Infinity握在手中 一小时的永恒” 如果最简单的HelloWorld只是一片沙粒那么里面肯定有一个世界也许您对它说过很多次“ Hello”但这并不意味着您已经探索了一点世界也许现在时间和探索世界虽然沙子会使您的手变脏但花朵却不会。 翻译自: https://www.javacodegeeks.com/2019/02/world-grain-sand-world.html
http://www.pierceye.com/news/778360/

相关文章:

  • 网站开发 mvc有孩子做的网站
  • 自己做的网站如何推广wordpress 主题页脚
  • 数据库型网站怎么把电脑当服务器做网站
  • 东莞网站建设品牌公司如何做电子书网站
  • 免费学做美食视频网站有哪些百度是国企还是央企
  • wordpress 网站关键词设置wordpress 上传主机
  • h5电子商务网站如何查询关键词的搜索量
  • 网站导航栏兼容性网站建设的主要技术指什么软件
  • 如何抄袭网站400靓号手机网站建设
  • 大兴网站建设价格怎样建设好网站
  • 三维家是在网站上做还是在app上国内新闻最新5条
  • 呼伦贝尔网站设计wordpress如何关闭主题
  • 苏州网站制作网站建设淮安住房和城乡建设厅网站
  • 房产中介网站wordpress模板mip
  • 汽车租赁网站怎么做沈阳网站开发程序员工资
  • 网站建设教程搭建汽岁湖南岚鸿专注交城有做网站的吗
  • 网站开发怎么连接sqlserver建设网站怎么收费标准
  • 万网网站模板购买北京南站核酸检测地点
  • 南京城乡建设网站公司做网站哪个好
  • 有没有学做衣服的网站广告设计公司有什么岗位
  • 什么网站做免单衣服厦门设计师网站
  • 深圳网站建设 龙华信科易乐自助建站
  • 徐老师在那个网站做发视频搜索引擎优化特点
  • 工信部网站备案批准文件重庆装修网站建设
  • 网站被攻击了怎么办网站优化 价格查询
  • 北京网站建设公司怎么样怎么做qq盗号网站
  • 中企动力网站建设合同中天建设招标网站
  • 湖南手机版建站系统开发wordpress获取用户角色
  • 南皮网站建设价格泰安房产信息网官网首页
  • 网页制作与网站建设实战大全重庆房产信息网官网