Final-Metaverse-Fantasy
全部标签 我想知道将私有(private)方法也声明为final是否有意义,我认为这没有意义。但我想象有一个排他的情况,并写了代码来解决它:publicclassBoom{privatevoidtouchMe(){System.out.println("super::Iamnotoverridable!");}privateclassInnerextendsBoom{privatevoidtouchMe(){super.touchMe();System.out.println("sub::Yousuck!Ioverridedyou!");}}publicstaticvoidmain(String
新引入的代码约定要求尽可能使用“final”关键字。问题是-是否有可能使用这个关键字自动生成变量?例如——我选择一个代码片段:"bla"+"bla"+"bla"然后按ctrl+alt+v-IDE会生成如下变量:StringblaString="bla"+"bla"+"bla";但我需要它是finalStringblaString="bla"+"bla"+"bla";附:我知道检查和“全部修复”的可能性,但它不能随处使用,因为有很多旧代码不应无故重构。 最佳答案 转到首选项->代码样式->代码生成并在“最终修饰符”部分启用“使生成的局
新引入的代码约定要求尽可能使用“final”关键字。问题是-是否有可能使用这个关键字自动生成变量?例如——我选择一个代码片段:"bla"+"bla"+"bla"然后按ctrl+alt+v-IDE会生成如下变量:StringblaString="bla"+"bla"+"bla";但我需要它是finalStringblaString="bla"+"bla"+"bla";附:我知道检查和“全部修复”的可能性,但它不能随处使用,因为有很多旧代码不应无故重构。 最佳答案 转到首选项->代码样式->代码生成并在“最终修饰符”部分启用“使生成的局
使用Ruby1.8.6。我正在编写一个基本服务器,它回显客户端发送的消息的加密版本,以了解Ruby中对称加密的实现。该程序旨在接受套接字连接,共享其key,然后加密接收到的数据,然后再将其发送回客户端程序。然后客户端使用共享key解密消息,显示回显消息。我遇到的问题是返回消息导致“错误的最终block长度(OpenSSL::CipherError)”。进一步检查问题,删除decrypted允许我的客户端程序解密消息,但在末尾添加额外的字符或银行空格。我知道这是因为final关键字删除了额外的填充以允许CBC模式的16位block加密/解密,但我无法弄清楚如何使工作正常。这是简化的服务器
我想知道使代码更明确是否有助于Eclipse更快地分析它。例如,如果我将一个类声明为final,理论上代码分析器在计算类型层次结构时可以跳过搜索其后代。那么,它真的能加快速度吗? 最佳答案 智能分析工具可能会利用final关键字,但我认为分析是在类层次结构中自下而上完成的,因为父类(superclass)无论如何都不需要关心子类。但是,由于利用了某些编译器优化,使用final确实会在一定程度上提高运行时性能。不过这是微观优化;虽然在适当的时候使用final是一个很好的做法,但与优化程序架构相比,性能提升不会很大。
我喜欢使用-Wsuggest-final-types编译我的代码和-Wsuggest-final-methods以便在可能使用final关键字以允许编译器更积极地优化的机会时收到警告。不过,有时这些建议是不正确的-例如,我有一个类Base和一个virtual~Base()析构函数,在另一个项目中以多态方式使用,gcc建议我可以将Base标记为final。有没有办法“干净地”告诉编译器Base是多态使用的,不应该被标记为final?我能想到的唯一方法是使用#pragma指令,但我发现它会使代码困惑且难以阅读。理想情况下,我正在寻找可以添加到类/方法声明前/后的非最终关键字或属性。
从语言的角度来看,我知道C++(自C++11起)中的final方法注释的作用。classBase{virtualvoidmethod();};classLocked:publicBase{virtualvoidmethod()final;};任何派生自Locked的类都不能再覆盖method。但是从OOP的角度来看,它对API和契约(Contract)有什么看法?正如已经要求的Java,作为Locked的类作者,关于现在整个类的设计,我必须注意什么,我promise什么?例如:我可以想象,通过使用final注释,我是在说“这个方法的行为不会改变”。但是,如果我在method()中调用其
我使用AFNetworking作为我的网络堆栈来与Web服务通信并填充本地数据存储。在同步运行期间,我有一组要运行的API端点,运行完成后,我添加了一个最终操作,该操作使用生成的JSON来填充数据库。我遇到的问题是,其中一些JSON获取操作的结果需要我调用其他端点,现在我不知道何时应该添加“最终”操作。我现在的工作方式是,我有一系列的主要操作,然后添加“最终”操作。在那段时间里,主要因素已经返回并导致我创建次要操作,如下所示:*PrimaryFetchOperationA*PrimaryFetchOperationB*FinalOperation*SecondaryFetchOpera
我有一个wordCount.java程序并修改它以支持多个映射器和缩减器,如下所示:publicclassWordCountextendsConfiguredimplementsTool{publicintrun(String[]args)throwsException{JobConfconf=newJobConf(getConf(),w1_args.class);for(inti=0;i然后我编译并运行它:hadoopjarWordCount-1.0-SNAPSHOT.jarWordCount-m3-r15inputoutput它运行良好,当我检查输出目录时:$hdfsdfs-lso
我编写了一个Spark应用程序,它读取一些CSV文件(~5-10GB),转换数据并将数据转换为HFiles。数据从HDFS读取并保存到HDFS。当我在yarn-client中运行应用程序时,一切似乎都工作正常模式。但是当我尝试以yarn-cluster运行它时应用程序,进程似乎没有运行最终saveAsNewAPIHadoopFile对我已转换并准备好保存的RDD采取行动!这是我的SparkUI的快照,您可以在其中看到所有其他作业都已处理:以及相应的阶段:这是我应用程序的最后一步,其中saveAsNewAPIHadoopFile方法被调用:JavaPairRDDcells=...try{