Eung-ju,

> 1. ( null == map.get( key ) ) != ( map.containsKey( key ) )
> 
> do not use null == map.get( key ) for cache item existence check.
> DefaultCache.containsKey is misimplemented.
I'm not sure what this is in reference to...

> 2. Why use ( size() > m_capacity )?
> It is commented "cache full?"
> isFull() is defined in AbstractCache like below
Fixed - this was legacy code left over from a previous effort.

> 3. How about FlipSpacesStore for its name?
Done.

Also, my reference to a 2 Data Spaces pattern refers to an algorthm
typically used in garbage collection that is also known as Two Space Copy
and Stop and Copy Garbage Collection - the following link is an interesting
read:
http://www.cs.brown.edu/courses/cs173/2000/Lectures/2000-11-20.pdf

enjoy.

Larry

> -----Original Message-----
> From: Eung-ju Park [mailto:[EMAIL PROTECTED]]
> Sent: Tuesday, January 08, 2002 7:25 AM
> To: Avalon Developers List
> Subject: Re: excalibur.cache.LRUCachePolicy
> 
> 
> I see the source.
> 
> 1. ( null == map.get( key ) ) != ( map.containsKey( key ) )
> 
> do not use null == map.get( key ) for cache item existence check.
> DefaultCache.containsKey is misimplemented.
> 
> I will write more documentation. sorry.
> 
> 2. Why use ( size() > m_capacity )?
> It is commented "cache full?"
> isFull() is defined in AbstractCache like below
> 
> public boolean isFull()
> {
>     return size() >= capacity();
> }
> 
> remove "cache full" comment if " (size() > m_capacity) "
> 
> 3. How about FlipSpacesStore for its name?
> 
> 
> 
> ----- Original Message -----
> From: "MCCAY,LARRY (HP-NewJersey,ex2)" <[EMAIL PROTECTED]>
> To: "'Avalon Developers List'" <[EMAIL PROTECTED]>
> Sent: Tuesday, January 08, 2002 2:35 AM
> Subject: RE: excalibur.cache.LRUCachePolicy
> 
> 
> > Eung-Ju,
> >
> > Attached is an implementation of a CacheStore that you may find
> interesting.
> >
> >
> > It does not, however, require a CachePolicy.
> >
> > It is based on the 2 Data Spaces pattern for LRU caching.
> >
> > I modified the LRUCacheTestCase just to test it before 
> sending it - I'll
> let
> > you determine if you actually roll it in.
> >
> > enjoy.
> >
> > Larry
> >
> > > -----Original Message-----
> > > From: Eung-ju Park [mailto:[EMAIL PROTECTED]]
> > > Sent: Monday, January 07, 2002 2:03 AM
> > > To: Avalon Developers List
> > > Subject: Re: excalibur.cache.LRUCachePolicy
> > >
> > >
> > > Hi.
> > >
> > > ----- Original Message -----
> > > From: "Alexis Agahi" <[EMAIL PROTECTED]>
> > > To: "'Avalon Developers List'" <[EMAIL PROTECTED]>
> > > Sent: Monday, January 07, 2002 8:17 AM
> > > Subject: excalibur.cache.LRUCachePolicy
> > >
> > >
> > > > Hi,
> > > >
> > > > I've checked the cache implementation from excalibur scratchpad
> > > > and notice that LRUCachePolicy use the ListCachePolicy 
> LinkedList
> > > > to perform the LRU mecanism.
> > > >
> > > > To have a LRU 'hit' effect, it removes the object from the list
> > > > and put it at the top.
> > > > What if the list is really huge? I mean, to perform the 
> remove it
> > >
> > > It is not a Cache if it is really huge. ;-) Just kidding.
> > >
> > > > has to scan the whole list, since it doesn't have an index (or
> > > > I'm wrong)?
> > > >
> > > > I would suggest having another approach using a logical clock
> > > > value and 'time' hashmap.
> > > >
> > > > Something like:
> > > > When a 'hit' is called, it gets the current object and set its
> > > > 'value' to the current logical time.
> > > > To remove the oldest, it gets the oldest value in the time map.
> > > >
> > > > To be really honest, this approach is not necessarily the best:
> > > > the remove case is slower that the linked list one, but 
> the 'hit'
> > > > could be faster. Now it depends on the hit/remove ratio. But I
> > > > guess in an LRU cache, you should have a maximum of 'hit' call.
> > >
> > > Yes. If you want that kind of ReplacementPolicy. Just
> > > implement it. and use
> > > like bellow.
> > >
> > > final Cache cache = new DefaultCache( new TimeMapLRUCachePolicy(),
> > > MemoryCacheStore( 1000000000 ) );
> > >
> > > and test it.
> > > and send to this list.
> > >
> > > Thanks.
> > >
> > > >
> > > >
> > > > Regards
> > > >
> > > > --
> > > > mailto:[EMAIL PROTECTED] -
> > > > http://sourceforge.net/projects/jabaserver
> > > >
> > > > --
> > > > To unsubscribe, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > > For additional commands, e-mail:
> > > <mailto:[EMAIL PROTECTED]>
> > > >
> > > >
> > >
> > >
> > > --
> > > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> >
> >
> 
> 
> --------------------------------------------------------------
> --------------
> ----
> 
> 
> > --
> > To unsubscribe, e-mail:
> <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> <mailto:[EMAIL PROTECTED]>
> 
> 
> --
> To unsubscribe, e-mail:   
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Attachment: FlipSpacesStore.java
Description: Binary data

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to