當前位置:首頁 » 網頁前端 » javawebehcache
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

javawebehcache

發布時間: 2022-05-29 13:26:47

❶ java web項目里ehcache.xml是干什麼用的 我完全看不懂!

name:緩存名稱。
maxElementsInMemory:緩存最大個數。
eternal:對象是否永久有效,一但設置了,timeout將不起作用。
timeToIdleSeconds:設置對象在失效前的允許閑置時間(單位:秒)。僅當eternal=false對象不是永久有效時使用,可選屬性,默認值是0,也就是可閑置時間無窮大。
timeToLiveSeconds:設置對象在失效前允許存活時間(單位:秒)。最大時間介於創建時間和失效時間之間。僅當eternal=false對象不是永久有效時使用,默認是0.,也就是對象存活時間無窮大。
overflowToDisk:當內存中對象數量達到maxElementsInMemory時,Ehcache將會對象寫到磁碟中。
diskSpoolBufferSizeMB:這個參數設置DiskStore(磁碟緩存)的緩存區大小。默認是30MB。每個Cache都應該有自己的一個緩沖區。
maxElementsOnDisk:硬碟最大緩存個數。
diskPersistent:是否緩存虛擬機重啟期數據 Whether the disk store persists between restarts of the Virtual Machine. The default value is false.
:磁碟失效線程運行時間間隔,默認是120秒。
memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理內存。默認策略是LRU(最近最少使用)。你可以設置為FIFO(先進先出)或是LFU(較少使用)。
clearOnFlush:內存數量最大時是否清除。

❷ java web開發緩存方案,ehcache和redis有什麼特點

在java項目廣泛的使用。它是一個開源的、設計於提高在數據從RDBMS中取出來的高花費、高延遲採取的一種緩存方案。正因為Ehcache具有健壯性(基於java開發)、被認證(具有apache 2.0 license)、充滿特色(稍後會詳細介紹),所以被用於大型復雜分布式web application的各個節點中。

具體如下:

1. 夠快

Ehcache的發行有一段時長了,經過幾年的努力和不計其數的性能測試,Ehcache終被設計於large, high concurrency systems.

2. 夠簡單

開發者提供的介面非常簡單明了,從Ehcache的搭建到運用運行僅僅需要的是你寶貴的幾分鍾。其實很多開發者都不知道自己用在用Ehcache,Ehcache被廣泛的運用於其他的開源項目

❸ ehcache java 對象緩存怎麼實現

EhCache裡面有一個CacheManager類型,它負責管理cache。Cache裡面存儲著Element對象,Element必須是key-value對。Cache是實際物理實現的,在內存中或者磁碟。這些組件的邏輯表示就是下面即將要討論的類。他們的方法提供了可編程的訪問方式。

CacheManager
負責Cache的創建、訪問、移除。

CacheManager創建
CacheManager支持兩種創建模式:單例(Singleton mode)和實例(InstanceMode)。
在2.5之前的版本中,在同一個JVM中允許存在任意數量相同名字的CacheManager。每調用new CacheManager(...)一次,就會產生一個新的CacheManager實例,而不管已經存在多少個。調用CacheManager.create(...),則返回的是已經存在的那個配置對應的單例CacheManager,如果不存在,則創建一個。

2.5之後的版本,不允許在同一個JVM內存在多個具有相同名字的CacheManager。創建非單例實例的CacheManager()構造函數可能會打破這一規則,但是會拋出NPE異常。如果你的代碼要在同一個JVM創建多個同名的實例,請使用靜態方法CacheManager.create(),總是返回對應名的CacheManager(如果已經存在),否則創建一個

❹ java web開發緩存方案,ehcache和redis哪個更好

Ehcache
在java項目廣泛的使用。它是一個開源的、設計於提高在數據從RDBMS中取出來的高花費、高延遲採取的一種緩存方案。正因為Ehcache具有健壯性(基於java開發)、被認證(具有apache 2.0 license)、充滿特色(稍後會詳細介紹),所以被用於大型復雜分布式web application的各個節點中。
1. 夠快
Ehcache的發行有一段時長了,經過幾年的努力和不計其數的性能測試,Ehcache終被設計於large, high concurrency systems.
2. 夠簡單
開發者提供的介面非常簡單明了,從Ehcache的搭建到運用運行僅僅需要的是你寶貴的幾分鍾。其實很多開發者都不知道自己用在用Ehcache,Ehcache被廣泛的運用於其他的開源項目
比如:hibernate
3.夠袖珍
關於這點的特性,官方給了一個很可愛的名字small foot print ,一般Ehcache的發布版本不會到2M,V 2.2.3 才 668KB。
4. 夠輕量
核心程序僅僅依賴slf4j這一個包,沒有之一!
5.好擴展
Ehcache提供了對大數據的內存和硬碟的存儲,最近版本允許多實例、保存對象高靈活性、提供LRU、LFU、FIFO淘汰演算法,基礎屬性支持熱配置、支持的插件多
6.監聽器
緩存管理器監聽器 (CacheManagerListener)和 緩存監聽器(CacheEvenListener),做一些統計或數據一致性廣播挺好用的
如何使用?
夠簡單就是Ehcache的一大特色,自然用起來just so easy!

redis
redis是在memcache之後編寫的,大家經常把這兩者做比較,如果說它是個key-value store 的話但是它具有豐富的數據類型,我想暫時把它叫做緩存數據流中心,就像現在物流中心那樣,order、package、store、classification、distribute、end。現在還很流行的LAMP PHP架構 不知道和 redis+mysql 或者 redis + mongodb的性能比較(聽群里的人說mongodb分片不穩定)。
先說說reidis的特性

1. 支持持久化
redis的本地持久化支持兩種方式:RDB和AOF。RDB 在redis.conf配置文件里配置持久化觸發器,AOF指的是redis沒增加一條記錄都會保存到持久化文件中(保存的是這條記錄的生成命令),如果不是用redis做DB用的話還會不要開AOF ,數據太龐大了,重啟恢復的時候是一個巨大的工程!
2.豐富的數據類型
redis 支持 String 、Lists、sets、sorted sets、hashes 多種數據類型,新浪微博會使用redis做nosql主要也是它具有這些類型,時間排序、職能排序、我的微博、發給我的這些功能List 和 sorted set 的強大操作功能息息相關
3.高性能
這點跟memcache很想像,內存操作的級別是毫秒級的比硬碟操作秒級操作自然高效不少,較少了磁頭尋道、數據讀取、頁面交換這些高開銷的操作!這也是NOSQL冒出來的原因吧,應該是高性能
是基於RDBMS的衍生產品,雖然RDBMS也具有緩存結構,但是始終在app層面不是我們想要的那麼操控的。
4.replication
redis提供主從復制方案,跟mysql一樣增量復制而且復制的實現都很相似,這個復制跟AOF有點類似復制的是新增記錄命令,主庫新增記錄將新增腳本發送給從庫,從庫根據腳本生成記錄,這個過程非常快,就看網路了,一般主從都是在同一個區域網,所以可以說redis的主從近似及時同步,同事它還支持一主多從,動態添加從庫,從庫數量沒有限制。 主從庫搭建,我覺得還是採用網狀模式,如果使用鏈式(master-slave-slave-slave-slave·····)如果第一個slave出現宕機重啟,首先從master 接收 數據恢復腳本,這個是阻塞的,如果主庫數據幾TB的情況恢復過程得花上一段時間,在這個過程中其他的slave就無法和主庫同步了。

5.更新快
這點好像從我接觸到redis到目前為止 已經發了大版本就4個,小版本沒算過。redis作者是個非常積極的人,無論是郵件提問還是論壇發帖,他都能及時耐心的為你解答,維護度很高。有人維護的話,讓我們用的也省心和放心。目前作者對redis 的主導開發方向是redis的集群方向。

所以如果希望簡單就用ehcache,如果開發任務比較復雜,希望得到比較多的支持什麼的就redis

❺ java ehcache怎麼實現分布式

java web開發緩存方案,ehcache和redis各有優劣勢,對比如下: 1、適合使用ehcache的場景: 選用Ehcache作為數據存儲伺服器,Ehcache也是基於內存存儲,支持定時持久化功能,非常適合存儲像計數器這種小數據類型。處理Http請求使用Tomcat容器

❻ java web,哪些東西要存到ehcache裡面啊

是目前最流行的JAVA後台緩存 大部分用來做分布式緩存,存儲一些進程 數據,方便於程序快速啟動 多進程訪問時能保證一致性 提高性能
具體還有很多,建議你到

http://raychase.iteye.com/blog/1545906
詳細查看

❼ java web緩存方案 ehcache

性能恐怕還不如你現在用靜態map的方案。因為正如你所說,你現在數據量不大,不經常改變,結構也很簡單,既然如此又何必用第三方緩存框架呢。二者本質上沒有什麼不同,都是從內存訪問數據而已,框架可能能設置緩存有效期,更新策略,層級結構等東西,但你目前的需求用不到這些啊。

❽ javaweb啟動時,ehcache載入字典

你可以在初始化系統的時候執行初始化ehcahe的方法

❾ javaweb項目s2sh框架怎麼提高hibernate的運行效率 (大數據量)怎麼配置緩存,急求。謝謝。

你好
Hibernate的緩存分為:
一級緩存:在Session級別的,在Session關閉的時候,一級緩存就失效了。
二級緩存:在SessionFactory級別的,它可以使用不同的緩存實現,如EhCache、JBossCache、OsCache等。
緩存的注釋寫法如下,加在Entity的java類上:
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
緩存的方式有四種,分別為:
CacheConcurrencyStrategy.NONE
CacheConcurrencyStrategy.READ_ONLY,只讀模式,在此模式下,如果對數據進行更新操作,會有異常;
CacheConcurrencyStrategy.READ_WRITE,讀寫模式在更新緩存的時候會把緩存裡面的數據換成一個鎖,其它事務如果去取相應的緩存數據,發現被鎖了,直接就去資料庫查詢;
CacheConcurrencyStrategy.NONSTRICT_READ_WRITE,不嚴格的讀寫模式則不會的緩存數據加鎖;
CacheConcurrencyStrategy.TRANSACTIONAL,事務模式指緩存支持事務,當事務回滾時,緩存也能回滾,只支持JTA環境。
另外還有如下注意事項:
1、查詢緩存需要在Query的相應方法執行前加上這么一句:
query.setCacheable(true);
在使用Hibernate時,獲得的query有setCacheable方法,可以設置使用緩存,但當使用JPA時,javax.persistence.Query並沒有setCacheable方法,此時如果JPA的實現是Hibernate時,可以將其進行如下轉化,再調用setCacheable方法(如果JPA的實現是其它ORMAP框架,就不知道怎麼做了)。
if (query instanceof org.hibernate.ejb.QueryImpl) {
((org.hibernate.ejb.QueryImpl) query).getHibernateQuery().setCacheable(true);
}
2、還有就是查詢緩存的查詢執行後,會將查詢結果放入二級緩存中,但是放入的形式是以ID為Key,實例作為一個Value。
3、hibernate的配置文件中需加入如下信息:

<property name="hibernate.cache.provider_class" value="org.hibernate.cache.EhCacheProvider" />
<property name="hibernate.cache.use_second_level_cache" value="true" />
<property name="hibernate.cache.use_query_cache" value="true" />

希望對你有幫助

❿ Java Web的一些面試問題求解答

1、一般封閉到框架中,自動提交false——調用action(資料庫操作)——提交事務—關閉connection
2、重載:方法名相同,參數(個數或類型)不同(稱之為簽名不同)
3、要看代碼,經驗多的人寫的代碼邏輯性強,bug會比較少,速度快,考慮得比較周全
4、頁面就jsp動態頁面,一般由美工做好,需運態的地方從後台獲取數據,運態顯示,運行的時候會先轉為servlet實際為servlet+html
5、記錄在日誌,如果方法由上級調用,往上拋
6、Junit在一個方法中就可以運行,運行你寫的代碼,和有沒資料庫沒關系
7、不用框架的話就注意sql注入問題,框架的話hibernate要注意級聯操作,ibatis注意假分頁,一般做一個分頁攔截器
8、測試的話要看要做哪些測試,還要看功能,寫測試報告的話下個模版比較快兩天
9、各種各樣的問題,與需求不符,邏輯性錯誤,用戶體驗度方面的……
10、小了一個小組一周,中等的,一個小組三四個月,大的一個小組做一年多
11、做下一個項目,項目維護,部署方面一般由組長及領導負責
12、後台將信息反回前台,前台接收判斷,提示錯誤信息
13、弄斷點一般是為了找錯,根據代碼打,你想在哪一步暫停,查看,就在哪一步打,一般手動
14、異常要麼try catch要麼就往上拋
15、沒寫過
16、很少很eclipse,用myeclipse 5.5
17、用get方法
18、ssi是struts,spring,ibatis框架,C:controller/action ;M:實體類User;V:struts中xml映射的jsp頁面
19、取出來equals比較下
20、如果是像new int[10]的話就有10個元素否則用A.length來看
21、不知道
22、用來記錄日誌,一般每天一個日誌
23、編碼?一般utf-8/gbk在eclipse設置整個項目格式
24、hibernate映射文件可以反轉自動生成.hbm.xml文件,和spring整合的話.cfg.xml就不需要了配置在spring的配置文件里:
<bean id="mydataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/zhang?useUnicode=true&characterEncoding=utf8" />
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<bean id="mysessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="mydataSource"></property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<!-- 開啟二級緩存 -->
<prop key="jobernate.cache.use_second_level_cache">true</prop>
<prop key="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</prop>
<prop key="hibernate.cache.use_query_cache">true</prop>
</props>
</property>
<property name="mappingResources">
<list>

<value>com/entity/User.hbm.xml</value>
<value>com/entity/Proct.hbm.xml</value>
<value>com/entity/Item.hbm.xml</value>
<value>com/entity/Category.hbm.xml</value>
<value>com/entity/Address.hbm.xml</value>
<value>com/entity/Order.hbm.xml</value>

</list>
</property>
</bean>
25、依情況而定
26、比如學生表t_stu和得分表t_score,t_score中的stuid對應t_stu中的主鍵id,那麼stuid就是t_stu的外鍵,主鍵與外鍵關系為1對1或者1對多
27、#表示傳進來的傳數為一個字元串(如果字元串已有引號則不再加引號,如果沒有引號則加上引號,為了防止sql注入),$表示按傳入進來的字元串,不再進行判斷
28、spring+hibernate中事物配置:
<!-- 定義事務管理 -->
<bean id="txtManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="mysessionFactory"></property>
</bean>
<!-- 定義一個通知,管理規則 -->
<tx:advice id="txtAdvice" transaction-manager="txtManager">
<tx:attributes>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="find*" propagation="NOT_SUPPORTED"/>
<tx:method name="get*" propagation="NOT_SUPPORTED"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut expression="within(com.tarena.dang..impl.*)" id="servicePointcut"/>
<!-- 將txtAdvice和切入點相結合 -->
<aop:advisor advice-ref="txtAdvice" pointcut-ref="servicePointcut"/>
</aop:config>
sprint+mybatis配置:
<!-- 事務 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 配置事務的傳播特性 -->
<bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="edit*">PROPAGATION_REQUIRED</prop>
<prop key="remove*">PROPAGATION_REQUIRED</prop>
<prop key="insert*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="del*">PROPAGATION_REQUIRED</prop>
<prop key="cancel*">PROPAGATION_REQUIRED</prop>
<prop key="*">readOnly</prop>
</props>
</property>
</bean>
29、用框架一般不會有sql注入,框架都有考慮到的,jdbc的話用PreparedStatement