問題タブ [evict]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - NHibernate Session.Evict は何をしますか?
次のコード スニペットは何をしますか? なぜ使用するのEvict
ですか?
asp.net-mvc - NHibernate キャッシングの問題 - Evict を呼び出すタイミングは?
NHibernate によって返される内容が DB の内容と一致しないという明らかなキャッシュの問題に遭遇しました。
これはレベル 2 のキャッシュ データだと思います。Evict を使用してこれを行うことができるように見えますが、実際に Evict メソッドを呼び出す必要があるのはいつですか? 私の特定のアプリケーションでは、データはユーザーに固有のものになり、提供されたデータは一度しか使用されない可能性があります*。
これらのオブジェクト セットのレベル 2 キャッシュを完全に無効にすることはできますか?
10/31更新
私のシナリオは次のとおりです。顧客がアイテムを追加および削除するショッピング カートがあります。私がやっていることは次のとおりです。カートへの更新が処理される前に、エンティティCart
とCartProduct
エンティティを削除します。これが完了したらCartProducts
、プロバイダーからリストを取得し、ビューを返します (これは .NET MVC コントローラーで発生しています)。
11/3更新
その後、ショッピング カートは終了し、同じ NHibernate の問題に関連しているように見える問題に遭遇しましたが、実際には MVC の問題でした。さらに深く掘り下げると、HTML ヘルパー拡張機能が、私が想定していた値を上書きし、Model 状態のものに置き換えていることが明らかになりました。したがって、これには二重の打撃があります。これが誰かに役立つことを願っています。
java - 不要な更新を起動する休止状態。なぜですか?
アクション、サービス、DAO レイヤーの 3 つのレイヤーがあります。ID 123 の hibernate を使用して DB からオブジェクト (Employee クラス) をロードしました。
このシナリオで、従業員オブジェクトを保存するように言わないのに、なぜ従業員オブジェクトを更新しようとしているのですか? それをセッションから切り離す方法は?休止状態で従業員オブジェクトを更新したくありません。
c - コア i7 マシンで L2 キャッシュの削除されたラインの正しいアクセス時間を見つけることができません
L1 キャッシュ サイズ 32KB、L2 キャッシュ サイズ 256KB、共有 L3 キャッシュ サイズ 8MB (4 コア間で共有) のコア i7 システムがあります。パート A、B、C を順番に実行するプログラムを作成しました。(A) L2 キャッシュの 4 倍のサイズの大きな int 配列を作成し、大きな配列の 16 番目ごとの要素 (キャッシュ ライン サイズは 64B、16*4 B=64B) にアクセスして、すべてのデータが L2 にロードされるようにします。大きな配列 (B) のすべての要素のアクセス時間を書き留めてから、clflush を使用して、clflush(&bigarray[0]) ...clflush (&bigarray[1024]) のように、データ配列の複数の場所から手動でデータを削除します。(C) (B) で手動で削除された行を含む大きな配列の 16 番目ごとの要素に再度アクセスします。
アクセス時間を見つけるために、大きな配列にアクセスしている行の前後に rdtsc() を配置しました。i3 または i7 プロセッサのこのリンク clflush()から、i3/i7 マシンでの clflush の使用を知りました。
予想通り、単一の回線の立ち退き後のアクセス時間が長くなりましたが、驚いたことに、複数の場所へのアクセス時間は増えていません。
別の方法で説明しましょう。
シナリオ1 : clflush の前後に単一の配列要素にアクセスする
- step1- (a[x]) にアクセスし、アクセス時間を見つける
- step2- clflush(&a[x]) を使用してキャッシュから削除し、アクセス時間を見つけます
シナリオ2 : clflush の前後に複数の配列要素にアクセスする
- step1- 配列の各要素 a[i] にアクセス
ステップ2-
/li>
シナリオ 1 のように期待どおりの結果が得られましたが、clflush 後に配列要素にアクセスするためのアクセス時間が長くなりません。
理由は何ですか ?立ち退き後の正しいアクセス時間を知る方法。ハードウェアとソフトウェアのプリフェッチについて聞いたことがありますが、結果に影響していますか? その影響を克服し、正しい結果を知る方法は?
java - Jboss Cache : キャッシュから削除されたオブジェクトはどうなりますか?
Joss cache
ノードからオブジェクトを削除し、同じオブジェクトが別のオブジェクトからの参照を持っているとしますobjB
。この状態は何か問題を引き起こしますか? objB
削除されたオブジェクトを操作できますか?
前もって感謝します。
spring - 春のカスタムehcacheエビクトポリシー
LRU LFU FIFO に加えてエビクト ポリシーをカスタマイズする場合、ドキュメントで推奨されている方法は、インターフェース Policy を実装してから、MemoryStoreEvictionPolicy を次のように設定することです。
しかし、春を使用した場合は、@cacheable と xml ファイルを次のように使用します
春の方法で自分のポリシーを挿入するにはどうすればよいですか?
皆さん、ありがとうございました
spring - 二次キャッシュを削除しようとしています
永続性エンティティ マネージャーで第 2 レベルのキャッシュを削除しようとしています。javax.persistence.Cache インターフェイスで定義されている次の関数を使用できるようです。
Cache オブジェクトを取得するには、javax.persistence.EntityManagerFactory インターフェイスで定義されている次の関数を使用できます。
EntityManagerFactory を次のように配線します。
次の applicationContext 構成ファイルを使用します。
オブジェクトで getCache() を呼び出すと、次の例外が発生します。
原因: java.lang.AbstractMethodError: org.hibernate.ejb.EntityManagerFactoryImpl.getCache()Ljavax/persistence/Cache; sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブ メソッド) で.invoke(Method.java:597) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.invokeProxyMethod(AbstractEntityManagerFactoryBean.java:376) at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean$ManagedEntityManagerFactoryInvocationHandler.invoke(AbstractEntityManagerFactoryBean.java:517) com.sun.proxy.$Proxy26.getCache(不明なソース) com.rbccm.gelp.server.util.PersistenceManager.getCache(PersistenceManager.
これは、getCache (インターフェースで定義されている) が、EntityManagerFactory に接続されているオブジェクトに実際には実装されていないことを示しています。そのため、setEntityManagerFactory(EntityManagerFactory emf) に breakboint を配置すると、オブジェクトの具象型が実際には org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean であることに気付きました。
このクラスのソース コードを参照すると、ここで getCache() が実装されていないことが確認できます。正しい/互換性のあるバージョンを使用していると思います:
- 休止状態 3.6.10
- 春 3.1.1
- JPA2.0
誰かが同様の問題に遭遇したか、この問題を再現できますか? これに対処するにはどうすればよいですか?そうでない場合、第 2 レベルのキャッシュからすべてのキャッシュ アイテムを削除する代替手段は何ですか?
c++ - 可変サイズのページを持つバッファー プール。受信ページが削除するページよりも大きい場合に、ページを結合する高性能な方法が必要
データベース バッファ プール (メモリ プール) の実装では、メモリ内のページで構成されるバッファがあります。
ページにはさまざまなサイズがあります (すべて 512kb の整数倍)。
エビクション ポリシーが LRU (最近使用されていない) であるとしますが、エビクトしようとしているページのサイズが、置き換える必要のあるサイズよりも小さいとします。LRU にも従いたい場合は、収まるのに必要な数の LRU ページをエビクトする必要があります。私の新しいページ。
n
最近使用したページを削除する必要があるとします。ただし、これらのページは、バッファ/メモリ プール内で必ずしも連続しているわけではありません。
私が考えた簡単な方法は、これらのn
ページを結合することです。つまり、バッファー プールを適切に並べ替える必要があります。
最も簡単な方法は、バッファー全体をコピーして永続バッファーを上書きし、データ型を適切に更新することです。ただし、これは、この操作のためにバッファ全体をコピーするのに十分な RAM があることを前提としています。バッファ全体をコピーする必要がない賢いアプローチはありますか?
ありがとう
nhibernate - NHibernate Evict - EntityKeys は読み取り専用であるため、オブジェクトは削除されません
あるベンダーが NHibernate を使用してコードを提供しました...そして私は NHibernate にまったく詳しくありません。コードのある時点で Flush() を呼び出すと、エンティティの 1 つに日付値として 1/1/0001 があるため、エラーがスローされます。それを値として持つエンティティを削除することで回避しようとしました。ただし、EntityKeys が読み取り専用に設定されているため、エビクトは機能しません。
コード:
私も試みました:
コードが実行されるたびに、エラーはスローされませんでしたが、削除もされませんでした。RemoveAt を試したところ、「コレクションは読み取り専用です」というメッセージがスローされました。エラー
それを回避する方法はありますか?