首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏码匠的流水账

    聊聊httpclient的evict操作

    序本文主要研究一下httpclient的evict操作evictExpiredConnectionsorg/apache/http/impl/client/HttpClientBuilder.javapublic HttpClientBuilder {private boolean evictExpiredConnections;/** * Makes this instance of HttpClient proactively evict maxIdleTime; private TimeUnit maxIdleTimeUnit; /** * Makes this instance of HttpClient proactively evict

    78340编辑于 2023-10-06
  • 来自专栏码匠的流水账

    聊聊httpclient的evict操作

    序 本文主要研究一下httpclient的evict操作 evictExpiredConnections org/apache/http/impl/client/HttpClientBuilder.java private boolean evictExpiredConnections; /** * Makes this instance of HttpClient proactively evict private TimeUnit maxIdleTimeUnit; /** * Makes this instance of HttpClient proactively evict

    48830编辑于 2023-10-06
  • 来自专栏XINDOO的专栏

    Redis源码剖析之内存淘汰策略(Evict)

    Redis作为一个成熟的数据存储中间件,它提供了完善的数据管理功能,比如之前我们提到过的数据过期和今天我们要讲的数据淘汰(evict)策略。 evict执行过程 evict何时执行 在Redis每次处理命令的时候,都会检查内存空间,并尝试去执行evict,因为有些情况下不需要执行evict,这个可以从isSafeToPerformEvictions evict代码都在evict.c中。 里面包含了每次evict的执行过程。 int performEvictions(void) { if (! EVICT_RUNNING : EVICT_OK; cant_free: if (result == EVICT_FAIL) { /* At this point, we have

    36910编辑于 2024-08-07
  • 来自专栏XINDOO的专栏

    Redis源码剖析之内存淘汰策略(Evict)

    Redis作为一个成熟的数据存储中间件,它提供了完善的数据管理功能,比如之前我们提到过的数据过期和今天我们要讲的数据淘汰(evict)策略。 evict执行过程 evict何时执行 在Redis每次处理命令的时候,都会检查内存空间,并尝试去执行evict,因为有些情况下不需要执行evict,这个可以从isSafeToPerformEvictions evict代码都在evict.c中。 里面包含了每次evict的执行过程。 int performEvictions(void) {     if (! EVICT_RUNNING : EVICT_OK; cant_free:     if (result == EVICT_FAIL) {         /* At this point, we have

    51200发布于 2021-02-28
  • 来自专栏码匠的流水账

    聊聊hikari连接池的maxLifetime属性及evict操作

    序 本文主要研究一下hikari连接池的maxLifetime属性及evict操作 maxLifetime属性及evict操作 maxLifetime 用来设置一个connection在连接池中的存活时间 evict 用来标记连接池中的连接不可用,这样在borrow连接的时候,如果是标记evict的,则会继续获取连接 /** * Get a connection from the pool, /com/zaxxer/hikari/pool/HikariPool.java /** * Evict a Connection from the pool. * * @param connection the Connection to evict (actually a {@link ProxyConnection}) */ 除了这个延时任务,用户也可以主动去调用evict标记连接为evict。 触发时间距离maxlifetime的差值是根据 maxLifetime > 10_000 ?

    7K20发布于 2018-09-17
  • 来自专栏chenssy

    【追光者系列】HikariCP源码分析之evict、时钟回拨、连接创建生命周期

    摘自【工匠小猪猪的技术世界】 概念 evict定义在com.zaxxer.hikari.pool.PoolEntry中,evict的汉语意思是驱逐、逐出,用来标记连接池中的连接不可用。 private volatile boolean evict;boolean isMarkedEvicted() { return evict; } void markEvicted( ) { this.evict = true; } getConnection 在每次getConnection的时候,borrow连接(PoolEntry)的时候,如果是标记evict的, /** * Evict a Connection from the pool ; } void markEvicted() { this.evict = true; } void evict(final String closureReason) {

    3.1K41发布于 2018-07-24
  • 来自专栏芋道源码1024

    【追光者系列】HikariCP 源码分析之 evict、时钟回拨、连接创建生命周期

    poolEntry.getPoolName(), delegate); leakTask.cancel(); poolEntry.evict delegate, sqlState, nse.getErrorCode(), nse); leakTask.cancel(); poolEntry.evict } return sqle; } 在com.zaxxer.hikari.pool.HikariPool的evictConnection中,也会关闭任务 /** * Evict * * @param connection the Connection to evict (actually a {@link ProxyConnection}) */

    1.4K20发布于 2019-10-29
  • 来自专栏爱可生开源社区

    技术分享 | 客户说 insert 慢,我该怎么办

    08-30T00:05:56.685140+08:00 0 [Note] [MY-011953] [InnoDB] Page cleaner took 5301ms to flush 121 and evict 08-30T00:27:37.800463+08:00 0 [Note] [MY-011953] [InnoDB] Page cleaner took 4028ms to flush 120 and evict -08-30T00:49:22.874045+08:00 0 [Note] [MY-011953] [InnoDB] Page cleaner took 4992ms to flush 24 and evict -08-30T01:11:04.900200+08:00 0 [Note] [MY-011953] [InnoDB] Page cleaner took 4947ms to flush 16 and evict 08-30T01:32:50.117427+08:00 0 [Note] [MY-011953] [InnoDB] Page cleaner took 6136ms to flush 112 and evict

    99930编辑于 2022-09-20
  • 来自专栏码匠的流水账

    聊聊jedis的testWhileIdle

    testWhileIdletestWhileIdleorg/apache/commons/pool2/impl/GenericObjectPool.java @Override public void evict boolean evict; try { evict = evictionPolicy.evict(evictionConfig on error conditions evict = false; } if 方法在idleObjects不为空的时候会执行evict逻辑,它先通过getNumTests获取每次要对多少个idleObject进行验证,之后循环处理,首先通过evictionPolicy.evict 判断是否需要evict,如果是则执行evict逻辑,即destroy方法,否则走testWhileIdle的逻辑。

    42230编辑于 2023-09-23
  • 来自专栏迈向架构师

    设计模式 | 行为型 | 策略模式

    void evict(); } 策略实现 public class StrategyFIFO implements Strategy { // 将算法逐一抽取到各自的类中,它们都必须实现策略接口 @Override public void evict() { System.out.println("使用【先进先出】策略进行丢弃"); } } public class StrategyLRU implements Strategy { @Override public void evict() { System.out.println () { evictionStrategy.evict(); } public void add(String value) { // ... (); cache.evict(); cache.setEvictionStrategy(new StrategyLRU()); cache.evict

    47120编辑于 2023-02-25
  • 来自专栏码匠的流水账

    聊聊jedis的testWhileIdle

    testWhileIdle testWhileIdle org/apache/commons/pool2/impl/GenericObjectPool.java @Override public void evict boolean evict; try { evict = evictionPolicy.evict(evictionConfig if (evict) { destroy(underTest, DestroyMode.NORMAL); 方法在idleObjects不为空的时候会执行evict逻辑,它先通过getNumTests获取每次要对多少个idleObject进行验证,之后循环处理,首先通过evictionPolicy.evict 判断是否需要evict,如果是则执行evict逻辑,即destroy方法,否则走testWhileIdle的逻辑。

    38910编辑于 2023-09-25
  • 来自专栏行者常至

    Hibernate获取当前Session,Hibernate清空当前Session的缓存

    sessionFactory.getCurrentSession() sessionFactory.getCurrentSession().evict(object) 其中,sqlSessionFactory 我的做法是,在joinPoint.proceed()之前,运用方法的反射查询下数据库得到objectNew,因为此时对model的修改,已经跟进到了持久化状态;然后执行evict()方法,将objectNew 转换到游离状态;然后再运用方法反射查询下数据库得到objectOld,再执行evict()将objectOld转换到游离状态。 ---- sessionFactory.getCurrentSession().evict(object)

    2.7K10发布于 2018-09-19
  • 来自专栏码匠的流水账

    聊聊flink的Evictors

    doEvictAfter) { evict(elements, size, ctx); } } @Override public void Object>> elements, int size, W window, EvictorContext ctx) { if (doEvictAfter) { evict doEvictAfter) { evict(elements, size, ctx); } } @Override public void (elements, size, ctx); } } private void evict(Iterable<TimestampedValue<T>> elements doEvictAfter) { evict(elements, size, ctx); } } @Override public void

    44010发布于 2019-01-23
  • 来自专栏与神兽党一起成长

    Java 8 HashMap中的TreeNode.putTreeVal方法分析

    是逐出的意思,如果基于LinkedHashMap实现LRU缓存的话,这个evict参数正好就用上了。 /** * Implements Map.putAll and Map constructor * * @param m the map * @param evict extends V> m, boolean evict) { int s = m.size(); if (s > 0) { if (table = ); } 展开putVal(hash(key), key, value, false, evict); /** * Implements Map.put and value the value to put * @param onlyIfAbsent if true, don't change existing value * @param evict

    1.3K20发布于 2018-10-22
  • 来自专栏码匠的流水账

    聊聊JedisFactory

    *

    */ @Override public void evict() throws Exception { assertOpen(); boolean evict; try { evict = evictionPolicy.evict(evictionConfig on error conditions evict = false; } = null && ac.getRemoveAbandonedOnMaintenance()) { removeAbandoned(ac); } } evict 方法在evict为false且testWhileIdle为true的时候,会执行activateObject方法,然后再执行validateObject方法 doc 一次访问Redis延时高问题排查与总结

    39930编辑于 2023-09-22
  • 来自专栏码匠的流水账

    聊聊jedis连接池参数配置

    idleSoftEvictDuration : MAX_DURATION; this.minIdle = minIdle; } //...... } evict compareTo(underTest.getIdleDuration()) < 0; // @formatter:on } } DefaultEvictionPolicy的evict durationBetweenEvictionRuns 30秒 -1 evictor线程运行间隔,-1为不运行 evict minEvictableIdleDuration 60秒 30分钟 连接空闲的最小时间 evict softMinEvictableIdleDuration -1 -1 -1即Long.MAX_VALUE,它与idleCount>minIdle条件一起考虑 evict numTestsPerEvictionRun 判断是否需要evict的PolicyClass evict evictorShutdownTimeoutDuration 10s 10s 关闭evictor线程池的等待时间 jmx jmxEnabled

    1K10编辑于 2023-09-25
  • 来自专栏allsmallpi博客

    redis的过期策略和内存淘汰机制

    没搞明白为什么不是百分比) 策略有如下几种:(LRU的意思是:Least Recently Used最近最少使用的,LFU的意思是:Least Frequently Used最不常用的) volatile-lru -> Evict (推荐) allkeys-lru -> Evict any key using approximated LRU.                     在所有的键中选择最近最少使用的。 (不区分是否携带过期时间)(一般推荐) volatile-lfu -> Evict using approximated LFU among the keys with an expire set. allkeys-lfu -> Evict any key using approximated LFU.                     在所有的键中选择最不常用的。 noeviction -> Don't evict anything, just return an error on write operations.                     

    61410发布于 2021-02-25
  • 来自专栏码匠的流水账

    聊聊jedis连接池参数配置

    idleSoftEvictDuration : MAX_DURATION; this.minIdle = minIdle; } //...... } evict .compareTo(underTest.getIdleDuration()) < 0; // @formatter:on } } DefaultEvictionPolicy的evict durationBetweenEvictionRuns 30秒 -1 evictor线程运行间隔,-1为不运行 evict minEvictableIdleDuration 60秒 30分钟 连接空闲的最小时间 evict softMinEvictableIdleDuration -1 -1 -1即Long.MAX_VALUE,它与idleCount>minIdle条件一起考虑 evict numTestsPerEvictionRun 判断是否需要evict的PolicyClass evict evictorShutdownTimeoutDuration 10s 10s 关闭evictor线程池的等待时间 jmx jmxEnabled

    1K20编辑于 2023-09-24
  • 来自专栏码匠的流水账

    聊聊JedisFactory

    *

    */ @Override public void evict() throws Exception { assertOpen(); boolean evict; try { evict = evictionPolicy.evict(evictionConfig on error conditions evict = false; } if = null && ac.getRemoveAbandonedOnMaintenance()) { removeAbandoned(ac); } }evict方法在 方法在evict为false且testWhileIdle为true的时候,会执行activateObject方法,然后再执行validateObject方法doc一次访问Redis延时高问题排查与总结实战总结

    40920编辑于 2023-09-18
  • 来自专栏码匠的流水账

    聊聊flink的Evictors

    doEvictAfter) { evict(elements, size, ctx); } } ​ @Override public void Object>> elements, int size, W window, EvictorContext ctx) { if (doEvictAfter) { evict doEvictAfter) { evict(elements, size, ctx); } } ​ @Override public void (elements, size, ctx); } } ​ private void evict(Iterable<TimestampedValue<T>> elements doEvictAfter) { evict(elements, size, ctx); } } ​ @Override public void

    88560发布于 2019-01-07
领券