可能重复:
为什么Java有瞬态变量?
transient关键字将用于防止特定变量的序列化.但为什么我们不应该序列化数据呢?有内在安全吗?
我有两个类:A和B这样B扩展A.使用hibernate,A是一个普通的具体实体,有一个关联的表,一切都很好.
定义B使得它扩展A,A和B是Serializable,并且有2个额外的成员,我有@Transient注释.我不希望将这些保存在数据库中,对于我所关心的所有内容,对我来说,该表中的所有行都只是A的实例,持久化.目标是偶尔在会话中保存B实例.但是在某些时候我需要在DB中保存B对象(就好像它是A).我没有或不需要DiscriminatorColumn或类似的东西.
我尝试过这样的事情:
session.saveOrUpdate((A) b);
Run Code Online (Sandbox Code Playgroud)
...用b实例B.这失败了.
任何人都知道如何解决这个问题?
我们将 Azure Service Fabric 与可靠服务和参与者、IoTHub 和 Web API 一起使用,目前正在集成“瞬态故障处理”(TFH)来处理服务(远程)通信期间的错误。
对于 Azure 存储和 SQL,它已经实现,我们为此使用内置的重试策略,它工作正常。
但是 Service Fabric 内部通信呢?还有一些服务,通过远程机制进行通信。
以下是我的问题:
我已经收集的其他信息:
这篇关于服务间通信的文章描述了服务间通信的典型故障处理重试模式。但是,我们使用服务远程处理而不是 ICommunicationClientFactory 和 ICommunicationClient。我不知道如何使用服务远程处理这种典型的故障处理。
我想编写更新查询来过期瞬态。我将在 wordpress 选项表中将他们的时间更新为 1。
我有以名称开头的瞬态,re_compare
并在参数更改后休息。
我的更新查询是
$wpdb->update(
'options',
array(
'option_value' => '1', // string
),
array( 'option_name' => '%re_compare%' )
);
Run Code Online (Sandbox Code Playgroud)
它不工作。基本上我想删除/过期已经存在的瞬变。
但是如果我从选项表中删除瞬态,它们仍然显示在瞬态管理器插件中。所以想将它们的过期时间设置为 1 秒。
我有一个包含这些字段的类:
private transient List<Peer> peers;
private final String name;
private final int points;
private final int size;
Run Code Online (Sandbox Code Playgroud)
使用Gson我想反序列化这个 JSON String 请求:
{
"name": "game1",
"points": "11",
"size": "10",
"peers": [
{
"address": "localhost",
"port": 1234,
"fullAddress": "localhost:1234"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我的问题是该Peer
对象不会反序列化到peers
List 中,除非我不将该字段声明为瞬态。
有没有办法使用 Gson 只在序列化期间而不是在反序列化期间有一些场瞬态?
我使用db4o作为DBMS,我有一个问题:
有没有办法指定我不想在数据库中存储模型类中的字段?
@Transient
使用关系数据库时类似于注释的东西?
我正在使用每个域类的瞬态属性.他们中的一些人超过10人.
我正在经历一个非常缓慢的应用程序.我开始用tc服务器分析它.加载时间的大部分时间是通过渲染gsp文件来消耗的.
是否有任何关于瞬态值的已知问题,它们消耗更多内存或减慢整个应用程序?我是否必须通过普通属性替换它们并更新插入/更新上的值?
我一直在尝试制作一个自定义的推特小部件,它显示来自多个提要的最后几条推文.每个Feed都会创建以下类的实例:
<?php
class Foo{
protected $name = '';
//opts
protected $numTweets = 3;
protected $transName = ''; // Name of value in database.
protected $backupName = '';
protected $cacheTime = 5; // Time in minutes between updates.
protected $exclude_replies = true; // Leave out @replies?
public function __construct( $username ){
$this->name = $username;
$this->transName = 'jctft3' . $username;
$this->backupName = 'jctfb3' . $username;
}
public function get_feed(){
$feed = get_transient( $this->transName );
// Do we already have saved tweet data? …
Run Code Online (Sandbox Code Playgroud) 我正在学习Clojure,并在此过程中从O'Reilly的书"Clojure Programming"中看到了这个例子:
(let [tm (transient {})]
(doseq [x (range 100)]
(assoc! tm x 0))
(persistent! tm))
Run Code Online (Sandbox Code Playgroud)
它给出了结果{0 0, 1 0, 2 0, 3 0, 4 0, 5 0, 6 0, 7 0}
.
也:
(let [tm (transient {})]
(assoc! tm 0 0)
(assoc! tm 1 0)
(assoc! tm 2 0)
(assoc! tm 3 0)
(assoc! tm 4 0)
(assoc! tm 5 0)
(assoc! tm 6 0)
(assoc! tm 7 0)
(assoc! tm 8 0)
(persistent! tm)
)
Run Code Online (Sandbox Code Playgroud)
给出相同的结果:{0 …
我有一个看起来像这样的ajax请求:
$('#clear_cache').click(function (event) {
event.preventDefault();
var ajaxurl = "clearcache.php";
$.post(ajaxurl, function () {
$('<p>The cache was cleared successfully.</p>').insertAfter('#clear_cache');
});
});
Run Code Online (Sandbox Code Playgroud)
clearcache.php文件如下所示:
do_action( 'clear_terms', 'clear_transients' );
function clear_transients() {
global $wpdb;
$sql = "delete from {$wpdb->options}
where option_name like '_transient_cc%'";
return $wpdb->query($sql);
}
Run Code Online (Sandbox Code Playgroud)
我知道ajax请求正在链接ok到php文件,因为当我清除php文件并单击我的按钮时,请求就完成了.我觉得我的PHP文件有问题,比如函数设置不正确或者我的请求类型错误.然而,当我在与我的按钮所在的文件相同的文件中测试出这个PHP代码时,它工作正常(但这是使用查询字符串方法).非常感谢您的帮助.
在以下对象中:
class Foo implements Serializable {
transient String bar;
String baz;
}
Run Code Online (Sandbox Code Playgroud)
JAX-RS 将忽略瞬态关键字并仍然bar
在响应中进行序列化。在这种情况下,要阻止它被序列化,您需要使用注释(即@XmlTransient
)。这个要求背后的原因是什么?从表面上看。似乎只有关键字就足够了。
在哪些用例中关键字可能不足/不正确并且需要注释?
我目前正在使用 JAVA 的内置序列化器java.io.Serializable
,似乎无法让它反序列化并将我的字段设置为其默认值。我什至尝试使用readObject
来初始化字段,但它不起作用。
这是我的代码:
public abstract class BossQuest implements Quest,
Listenable { //Quest(interface) extends Serializable
private transient Status status = Status.IDLE; //This does not work
private String name;
public BossQuest(String name) {
this.name = name;
initialize();
}
//This also does not work
public BossQuest() {
this.status = Status.IDLE;
}
//This was my hacky attempt to forcefully set default values (Does not work)
public void initialize() {
status = Status.IDLE;
}
private void readObject(ObjectInputStream ois) throws ClassNotFoundException, …
Run Code Online (Sandbox Code Playgroud) 所以我有一个场景,我必须并行执行多个任务,我有一个具有继承自 a 的泛型类型的类,它将负责执行单个任务。对于每个任务,我想要一个新实例来执行给定的任务。目标是拥有一批工人。
Worker<T>:BackgroundService
Run Code Online (Sandbox Code Playgroud)
在启动中我添加如下:
services.AddTransient(typeof(Worker<>));
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我向 ServiceProvider 请求新实例时,返回的实例总是不同的?
transient ×13
java ×6
wordpress ×3
.net-core ×1
ajax ×1
appfabric ×1
asp.net-core ×1
azure ×1
c# ×1
caching ×1
clojure ×1
database ×1
db4o ×1
grails ×1
gson ×1
hibernate ×1
inheritance ×1
jax-rs ×1
jquery ×1
json ×1
memory ×1
performance ×1
persistent ×1
php ×1
plugins ×1
save ×1
service ×1
tcserver ×1
widget ×1