Tag: transient

我应该将变量保留为瞬态变量吗?

我一直在试验Apache Spark试图解决一些查询,如top-k,skyline等。 我创建了一个包装SparkConf和名为SparkContext的包装器。 这个类也实现了serializable,但由于SparkConf和JavaSparkContext不是可序列化的,所以类也不是。 我有一个类解决名为TopK的topK查询,该类实现了serializable,但该类还有一个不可序列化的SparkContext成员变量(由于上述原因)。 因此,每当我尝试从RDD中的.reduce()函数中执行TopK方法时,我都会收到exception。 我发现的解决方案是使SparkContext瞬态化。 我的问题是:我应该将SparkContext变量保持为瞬态还是我犯了一个大错误? SparkContext类: import java.io.Serializable; import org.apache.spark.SparkConf; import org.apache.spark.api.java.*; public class SparkContext implements Serializable { private final SparkConf sparConf; // this is not serializable private final JavaSparkContext sparkContext; // this is not either protected SparkContext(String appName, String master) { this.sparConf = new SparkConf(); this.sparConf.setAppName(appName); this.sparConf.setMaster(master); this.sparkContext = new JavaSparkContext(sparConf); […]

瞬态关键字可以标记方法吗?

在java类java.util.Locale中,我发现关键字transient标记了一个方法。 public final class Locale implements Cloneable, Serializable { private static class LocaleNameGetter implements sun.util.LocaleServiceProviderPool.LocalizedObjectGetter { public transient String getObject(LocaleNameProvider localenameprovider, Locale locale, String s, Object aobj[]) { if(!$assertionsDisabled && aobj.length != 2) throw new AssertionError(); int i = ((Integer)aobj[0]).intValue(); String s1 = (String)aobj[1]; switch(i) { case 0: // ‘\0’ return localenameprovider.getDisplayLanguage(s1, locale); case 1: […]

@Transient不在hibernate中工作

我正在使用hibernate 4.1.9。 我的代码是 @Transient private String ldapIdTemp; 包是 import javax.persistence.Transient; 仍然在hibernate查询中,它不起作用并将该属性放在查询中。 查询片段的一部分(assetasset0_.ldapIdTemp为ldapIdTemp16_0_,) 我不确定我做错了什么。

为什么ArrayList使用瞬态存储?

我正在阅读Java的ArrayList的源代码,我遇到了它的支持数组声明: private transient Object[] elementData; 为什么这需要是暂时的? 为什么不能将这个类序列化? 谢谢您的帮助!

为什么在java中使用`transient`关键字?

我在java中的private修饰符之前有一个与transient关键字的使用相关的问题。 变量声明: transient private ResourceBundle pageResourceBundle; 当我用谷歌搜索它时,我在下面找到了这些文档,但它们正在谈论序列化。 实际上我的class级没有实现任何序列化。 欲了解更多信息: http://java91.blogspot.in/2017/01/why-does-java-have-transient-fields.html 我的class级看起来像这样: public class LoginViewModel extends AbstractViewModel { transient private ResourceBundle pageResourceBundle; @AfterCompose public void afterCompose(@ContextParam(ContextType.VIEW) Component view) { initializeLoginValues(); boolean timeout = BooleanUtils.toBoolean(getHttpServletRequest().getParameter(“timeout”)); if (timeout) { Messagebox.show(pageResourceBundle.getText(“MSG_SESSION_HAS_EXPIRED_PLEASE_LOGIN”), pageResourceBundle.getText(“LABEL_ALERT”), Messagebox.OK, Messagebox.ERROR); } view.getPage().setTitle(CsdcLicence.get().getApplicationName()); } 我有一些疑问。 1.为什么在私有变量之前使用transient关键字? 2.使用此关键字的目的是什么?