草庐IT

finalizer

全部标签

java - JVM 同步 Finally block

查看JavaVirtualMachineSpecification编译后的代码告诉我们如何"synchronized"block是用java实现的。以下代码:publicvoidtestSync(){Objectobj=getSomeObject();synchronized(obj){doSomething();}}...大致相当于这个伪代码:publicvoidtestSync(){Objectobj=getSomeObject();Object__temp=obj;monitorenter__temp;try{doSomething();}finally{monitorexit_

java - 将事物声明为 final 会加速 Eclipse 代码分析和编译吗?

我想知道使代码更明确是否有助于Eclipse更快地分析它。例如,如果我将一个类声明为final,理论上代码分析器在计算类型层次结构时可以跳过搜索其后代。那么,它真的能加快速度吗? 最佳答案 智能分析工具可能会利用final关键字,但我认为分析是在类层次结构中自下而上完成的,因为父类(superclass)无论如何都不需要关心子类。但是,由于利用了某些编译器优化,使用final确实会在一定程度上提高运行时性能。不过这是微观优化;虽然在适当的时候使用final是一个很好的做法,但与优化程序架构相比,性能提升不会很大。

c++ - 干净地抑制 gcc 的 `final` 建议警告 (`-Wsuggest-final-types` 和 `-Wsuggest-final-methods` )

我喜欢使用-Wsuggest-final-types编译我的代码和-Wsuggest-final-methods以便在可能使用final关键字以允许编译器更积极地优化的机会时收到警告。不过,有时这些建议是不正确的-例如,我有一个类Base和一个virtual~Base()析构函数,在另一个项目中以多态方式使用,gcc建议我可以将Base标记为final。有没有办法“干净地”告诉编译器Base是多态使用的,不应该被标记为final?我能想到的唯一方法是使用#pragma指令,但我发现它会使代码困惑且难以阅读。理想情况下,我正在寻找可以添加到类/方法声明前/后的非最终关键字或属性。

c++ - C++ 'final' 方法注释对类设计有何 promise ?

从语言的角度来看,我知道C++(自C++11起)中的final方法注释的作用。classBase{virtualvoidmethod();};classLocked:publicBase{virtualvoidmethod()final;};任何派生自Locked的类都不能再覆盖method。但是从OOP的角度来看,它对API和契约(Contract)有什么看法?正如已经要求的Java,作为Locked的类作者,关于现在整个类的设计,我必须注意什么,我promise什么?例如:我可以想象,通过使用final注释,我是在说“这个方法的行为不会改变”。但是,如果我在method()中调用其

ios - 将 "Final"NSOperation 添加到具有未确定操作数的队列

我使用AFNetworking作为我的网络堆栈来与Web服务通信并填充本地数据存储。在同步运行期间,我有一组要运行的API端点,运行完成后,我添加了一个最终操作,该操作使用生成的JSON来填充数据库。我遇到的问题是,其中一些JSON获取操作的结果需要我调用其他端点,现在我不知道何时应该添加“最终”操作。我现在的工作方式是,我有一系列的主要操作,然后添加“最终”操作。在那段时间里,主要因素已经返回并导致我创建次要操作,如下所示:*PrimaryFetchOperationA*PrimaryFetchOperationB*FinalOperation*SecondaryFetchOpera

sql - 我不完全理解 sqlite3_finalize

我不完全理解sqlite3_finalize。我的初始代码。while(j我添加了sqlite3_finalize函数。请检查我。while(j 最佳答案 sqlite3_finalize与sqlite3_prepare_v2相反。所以你的代码应该是这样的:sqlite3_prepare_v2(...);while(){sqlite3_reset(...);sqlite3_bind_int(...);sqlite3_step(...);}sqlite3_finalize(...);你不想准备不必要的陈述。

java - hadoop mapreduce : where's the final hdfs result file when I speficify multiple reducers?

我有一个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

hadoop - Spark 不会在 yarn-cluster 模式下运行 final `saveAsNewAPIHadoopFile` 方法

我编写了一个Spark应用程序,它读取一些CSV文件(~5-10GB),转换数据并将数据转换为HFiles。数据从HDFS读取并保存到HDFS。当我在yarn-client中运行应用程序时,一切似乎都工作正常模式。但是当我尝试以yarn-cluster运行它时应用程序,进程似乎没有运行最终saveAsNewAPIHadoopFile对我已转换并准备好保存的RDD采取行动!这是我的SparkUI的快照,您可以在其中看到所有其他作业都已处理:以及相应的阶段:这是我应用程序的最后一步,其中saveAsNewAPIHadoopFile方法被调用:JavaPairRDDcells=...try{

PHP : Add Comma after every Word (Except Final)

我有一个字符串(不是数组,它是存储在一个字符串中的大量单词),我想在每个单词后放一个逗号,但不是在最后一个单词后放一个逗号。我有;echostr_replace('',',',$stilltodo);但是出于某种原因,在逗号之前添加了一个空格(在逗号之后也添加了一个空格,但那是对的),并且在末尾也添加了一个空格。我怎样才能改变它以按照我想要的方式工作。“基本”字符串的示例FrenchHistoryMathsPhysicsSpanishChemistryBiologyEnglishDTMathsHistoryDTSpanishEnglishFrenchRS使用上述代码的当前输出示例Fre

java - 为什么标记为 final 的对象可以在 Java 中被修改并调用非 final 方法?

我是Java新手,有C++背景。我认为Java中的final就像C++中的const一样,但我猜不是。对象在C++中初始化为const,只能调用const方法,不能改变对象中的字段。但是在我下面的代码中,我可以在pet中赋值。即pet.id=newObjectId(newPetId);。privatevoidaddPet(){progressBar.setVisibility(View.VISIBLE);finalPetpet;try{//Locallyaddandsavepet.pet=getPetFromUserInput();}catch(InvalidInputExceptio