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

    Pool:小对象缓存or复用

    对象复用 使用链表作为pool来保存要复用的对象。

    77770发布于 2018-01-08
  • 来自专栏更流畅、简洁的软件开发方式

    js的动态加载、缓存、更新以及复用(三)

    总体思路 1、  建立一个js服务,该服务实现通用js文件的加载、依赖、缓存、更新以及复用。 2、  各个项目如果使用通用js,可(bi)以(xu)使用js服务实现加载。 因为Js服务会把各种通用js文件一次性的加载到top页面,然后利用“复用”的方式,让其他页面可以直接使用。 4、  如果没有缓存信息,说明这是top页面,需要加载另一个js(bootLoad.js)。这个是真正干活的文件。这里放在配置信息和加载css、加载js的函数。然后开始各种加载。    4、 适配是啥意思?     在子页里虽然可以访问top页里的函数,比如top.$。但是访问的时候要加上top.这个就比较麻烦了。 10、  看你写了好几次复用,到底是啥?     就是让子页用top页里加载好的js。 11、  如何避免各个文件里的函数名称冲突?     

    7.1K90发布于 2018-02-08
  • 来自专栏更流畅、简洁的软件开发方式

    js的动态加载、缓存、更新以及复用(四)

    4、如果是top页面,则调用bootLoad.js里的Nature.Top.topLoad(loads, kind); ;如果是子页面则调用 top.Nature.Top.sonLoad(loads, 6、sonLoad()则会加载Nature.Adapter.js,实现复用,就是让子页面可以调用top页面里的js。   简单的说呢就是这样。详细说的话还有很多细节。目前boot.js基本稳定。 4 5 by 金色海洋 2013-7-11 6 7 */ 8 9 //1毫秒后开始加载 js文件 10 window.setTimeout(function() { 11 12 //判断有无配置信息————没有的话,加载且缓存 13 //判断有无js文件版本号——没有的话,加载且缓存 14 //加载Nature.LoadJs.js,开始加载其他js 15 因为涉及到复用,所以要new一下。 23 24 if (typeof top.Nature == "undefined") { 25 //没有配置信息,加载。

    7.5K80发布于 2018-02-08
  • 来自专栏DeepHub IMBA

    LMCache:基于KV缓存复用的LLM推理优化方案

    LMCache针对TTFT提出了一套KV缓存持久化与复用的方案。项目开源,目前已经和vLLM深度集成。 原理 大模型推理有个特点:每次处理输入文本都要重新计算KV缓存。 KV缓存可以理解为模型"阅读"文本时产生的中间状态,类似于做的笔记。 问题在于传统方案不复用这些"笔记"。同样的文本再来一遍,整个KV缓存从头算。 LMCache的做法是把KV缓存存下来——不光存GPU显存里,还能存到CPU内存、磁盘上。下次遇到相同文本(注意不只是前缀匹配,是任意位置的文本复用),直接取缓存,省掉重复计算。 LMCache和vLLM v1集成得比较深,支持跨设备共享KV缓存、跨节点传递等特性。生产环境里可以配合llm-d、KServe这些工具用。 小结 KV缓存复用这个思路已经是基本操作了,但LMCache把它做得比较完整:多级存储、任意位置匹配、和vLLM的原生集成,这些组合起来确实能解决实际问题。

    70510编辑于 2025-12-24
  • 来自专栏不温卜火

    Flume快速入门系列(4) | 多路复用

      此篇博文讲的是Flume的多路复用。 单Source多Channel、Sink如下图所示。 ? 1. 100 # Bind the source and sink to the channel a2.sources.r1.channels = c1 a2.sinks.k1.channel = c1 4.

    92520发布于 2020-10-28
  • 来自专栏AI前沿技术

    SGLang 用基数树复用 KV 缓存

    SGLang使用程序化的语言模型技术,并利用基数树和压缩有限状态机很好的解决了KV缓存复用和结构化输出问题,本文主要围绕KV缓存复用讨论以下问题: 1)语言模型程序的定义和特点 2)结合持续批处理,如何使用基数树复用 1)少样本学习中的示例,2)自洽问答中的问题3)多轮对话中的历史记录,4)思考树的搜索历史。 此时的重点是复用了上轮历史对话的KV缓存,减少了计算量。第四时刻(4)新一轮对话开始,称之为R2,只用系统的提示词可以共用,在b结点处生出新的分支d,用户新输入作为边。 优势: • 实时性与复用率平衡:持续批处理保证新请求及时入队、完成请求及时出队,而基数树的实时查询确保每次重组 batch 时,优先选择能复用最多连续缓存的请求; • 避免缓存碎片化:通过基数树的路径管理 ,KV 缓存始终以连续前缀块的形式被复用,减少碎片化缓存导致的内存浪费; 总结: SGLang 的缓存感知调度策略核心目标是通过最大化 KV 缓存复用率,降低内存读写开销,从而提升大模型推理的吞吐量与响应速度

    36910编辑于 2026-01-13
  • 来自专栏NetCore 从壹开始

    【BlogBook书】4、Cache:缓存

    框架已经将缓存集成到了官方的IDistributedCache分布式缓存接口,可以直接使用内存缓存和分布式缓存。 默认使用内存缓存,开启Redis开关以后,使用分布式缓存。 一、相关的依赖注入配置 builder.Services.AddCacheSetup(); 相关参数设置 "Redis": { "Enable": false,//是否开启redis缓存 "ConnectionString": "127.0.0.1:6379",//可以配置密码 "InstanceName": "" //前缀 }, 两种缓存机制统一封装,并二次封装到了ICache ///

    /// 统一注册缓存 /// /// <param name="services"></param> public static void AddCacheSetup caching; public CacheManageController(ICaching caching) { _caching = caching; } /// /// 获取全部缓存

    43310编辑于 2024-01-15
  • 来自专栏存储公众号:王知鱼

    AI大模型推理优化:KV缓存的“组合式复用

    现状: 目前行业内主流的KV缓存复用技术是“基于前缀的复用”(Prefix-Based Reuse)。 因此,它只需要在KV缓存的末尾追加新内容即可,复用 Prefix 的KV缓存,节约计算资源。 引出问题: 在这些场景下,传统“基于前缀”的KV缓存复用方法失效了(因为前缀不再固定不变,即“单体式KV缓存复用无法保证”)。 这使得上一张PPT提到的“单体式/整体式KV缓存复用”(即简单的基于前缀的复用)变得无效。 展示巨大收益: 该范式能将缓存命中率从60%提高到90%,并带来4倍的TTFT(首个Token时间)降低。

    61810编辑于 2025-11-20
  • 来自专栏漫漫架构路

    MyBatis设计思想(4)——缓存模块

    MyBatis设计思想(4)——缓存模块 一. 缓存概述 相信大家对于缓存都不陌生,MyBatis也提供了缓存的功能,在执行查询语句时首先尝试从缓存获取,避免频繁与数据库交互,大大提升了查询效率。 MyBatis有所谓的一级缓存和二级缓存,这个会在后面的核心流程中详细阐述,这里仅讨论缓存的内部实现。 void clear(); //获取缓存大小 int getSize(); } 我们知道,缓存的本质其实就是一个Map,MyBatis的缓存最基础的实现PerpetualCache,也是使用了一个 512,淘汰策略是LRU,每60s清空,且缓存为空时通过阻塞式从DB中查询数据,避免大量缓存击穿。 CacheKey的设计 既然说到了缓存,就不得不提缓存Key的设计问题。

    81920发布于 2020-09-03
  • 来自专栏张善友的专栏

    Enterprise Library 4 缓存快速入门

    this.primitivesCache = CacheFactory.GetCacheManager(); 4. 创建要添加到缓存中的条目。下列代码创建了一个 Product 类型的条目。 主动加载缓存 可以主动缓存数据以获取应用程序和进程所需要的所有状态,通常在应用程序或者进程启动时,可以在应用程序或者进程的整个生命周期内缓存数据。  主动加载缓存 1. cache = CacheFactory.GetCacheManager("Loading Scenario Cache Manager"); 4. 从 XML 文件中加载完整的数据集到缓存中。 cache = CacheFactory.GetCacheManager("Loading Scenario Cache Manager"); 4. 如果在主数据修改之前条目已经在缓存中,并在修改后从缓存中获取它,从缓存中获取的数据将与主数据源中的数据不匹配。

    1.4K90发布于 2018-01-19
  • 来自专栏更流畅、简洁的软件开发方式

    js的动态加载、缓存、更新以及复用(二)恼人的命名冲突

    由这个服务实现加载js、更新js、加载顺序(依赖),还有复用。   如果我们要做五个项目,每个项目都是一个独立的站点,那么对于共用的js文件是怎么处理的呢?1、每个项目站点都放一份,引用自己站点里的。

    2.5K80发布于 2018-02-08
  • 复用

    一、代码复用的意义 代码复用是面向对象编程(OOP)的魅力之一。 二、Java 中代码复用的两种方式 组合(Composition) 方式:在新类中创建现有类的对象。 特点:通过这种方式复用的是现有代码的功能,而不是其形式。 ,是代码复用的一种方式。 功能复用 Computer的showConfig()方法通过调用motherboard.getInfo()和cpu.getInfo(),复用了主板和 CPU 类的功能,而无需关心它们的内部实现。 4.派生类非静态成员初始化 执行派生类的非静态字段赋值和非静态代码块。 5.派生类构造函数执行 执行派生类构造函数中的代码,完成对象的最终初始化(如参数赋值、方法调用等)。

    36700编辑于 2025-06-24
  • 来自专栏李家杂货铺zi

    频分复用、时分复用、码分复用和空分复用的区别

    此文的4复用,均涉及到这4种资源。 频分复用复用的是时隙、空间和码,划分的是载波带宽(频率上区分信道),即在同一时隙、同一空间、同一个正交码的情况下,将一个载波带宽划分为相互区别的、多个不同频点的子信道,分别传送不同的信号。 时分复用复用的是频率、空间和码,划分的是时间(时间上区分信道),即在同一频率、同一空间和同一正交码的情况下,按照时间划分不同的子信道,分别传送不同的信号。 码分复用复用的是频率、空间和时隙,划分的是正交码(根据码区分信道),即在同一频率、同一空间和同一时隙的情况下,按照正交码划分不同的子信道(正交码可以区分出不同的信道),分别传送不同的信号。 图 1‑5 复用通路

    1.8K20编辑于 2023-03-21
  • 来自专栏IMWeb前端团队

    Webpack 4 如何优雅打包缓存文件

    本文作者:IMWeb 结一 原文出处:IMWeb社区 未经同意,禁止转载 一般来说,对于静态资源,我们都希望浏览器能够进行缓存,那样以后进入页面就可以直接使用缓存资源,页面直接直逼火箭速度打开 当然浏览器缓存方法有很多种,这里只简单讨论下 webpack 利用 hash 方式修改文件名,以达到缓存目的。 实战 hash 基础的配置文件如下(基于webpack 4,入口文件分别为 index 和 detail,其中每个文件中引入了一个图片): module.exports = { mode: 'none 为了解决这个不稳定的因素,webpack 4 提供了一个配置可以直接把 boilerplate 给单独抽离出来,配置如下: optimization: { runtimeChunk: 'single 于是我们也需要把数字改掉就好,webpack 4 在 optimization 新增了一个 namedChunks 配置,该配置开发环境为 true,生产环境为 false,所以在生产环境的时候我们为了构建稳定的

    1.3K10发布于 2019-12-03
  • 来自专栏猿计划

    频分复用、时分复用、码分复用的基本原理

    (1)频分复用 把一个物理信道划分为多个逻辑信道,各个逻辑信道占用互不重叠的频带,相邻信道之间用“警戒频带”隔离,以便将不同路的信号调制(滤波)分别限制在不同的频带内,在接收端再用滤波将它们分离。 (2)时分复用 按时间划分不同的信道,每一个时分复用的用户在每一个TDM帧中占用固定序列号间隙,复用的所有用户是在不同时间占用同样的频带宽度。 (3)码分复用 每一个用户可以在同样的时间使用同样的频带进行通信,由于各用户使用经过特殊挑选的不同码型,因此各用户之间不会造成干扰。

    4.3K10发布于 2020-07-29
  • 来自专栏全栈程序员必看

    多路复用_java多路复用

    目录 1、说明 1.1、多路复用的几种机制 2、函数简介 2.1、select 2.2、poll 2.3、epoll 2.3.1、epoll_create 2.3.2、epoll_ctl 2.3.3 针对这种情况,就需要采用多路复用机制,所谓多路复用,就是一个进程见识多个socket描述符,一旦某个socket描述符就绪(可读写或者异常)了,就会通知应用程序,进行相应的处理。 1.1、多路复用的几种机制 目前的多路复用机制有三种,select、poll 和 epoll。 函数返回后,需要便利fd_set来找到就绪的描述符 参数说明: nfds: 需要监听的描述符的范围,一般是最大描述符+1,比如,现在需要监听 0/1/2/3/4/5 这几个描述符,则参数设置为6,在linux

    89420编辑于 2022-09-21
  • 来自专栏用户9379088的专栏

    如果不知道这4缓存模式,敢说懂缓存吗?

    在这里,为大家系统地讲解4缓存模式以及它们的使用场景、流程以及优缺点。缓存策略的选择本质上来讲,缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。例如:系统是写多读少的吗? Write Behind Pattern:又叫Write Back,异步缓存写入模式上述缓存策略的划分是基于对数据的读写流程来区分的,有的缓存策略下是应用程序仅和缓存交互,有的缓存策略下应用程序同时与缓存和数据库进行交互 也就是说,当应用从缓存中查询某条数据时,如果数据不存在则由缓存来完成数据的加载,最后再由缓存返回数据结果给应用程序。 因为程序只和缓存交互,编码会变得更加简单和整洁,当需要在多处复用相同逻辑时这点就变得格外明显。当使用Write-Through时,一般都配合使用Read-Through来使用。 甚至有效的缓存数据被无效的缓存数据给清除掉。Write-BehindWrite-Behind和Write-Through在”程序只和缓存交互且只能通过缓存写数据“这方面很相似。

    1.7K20编辑于 2023-04-25
  • 来自专栏丑胖侠

    如果不知道这4缓存模式,敢说懂缓存吗?

    在这里,为大家系统地讲解4缓存模式以及它们的使用场景、流程以及优缺点。 缓存策略的选择 本质上来讲,缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。 例如: 系统是写多读少的吗? ,有的缓存策略下应用程序同时与缓存和数据库进行交互。 而缓存中的数据从哪里来是由缓存决定的。 Cache Aside是由调用方负责把数据加载入缓存,而Read Through则用缓存服务自己来加载,从而对应用方是透明的。 也就是说,当应用从缓存中查询某条数据时,如果数据不存在则由缓存来完成数据的加载,最后再由缓存返回数据结果给应用程序。 因为程序只和缓存交互,编码会变得更加简单和整洁,当需要在多处复用相同逻辑时这点就变得格外明显。 当使用Write-Through时,一般都配合使用Read-Through来使用。

    95220编辑于 2022-07-29
  • 来自专栏用户9378866的专栏

    如果不知道这4缓存模式,敢说懂缓存吗?

    在这里,为大家系统地讲解4缓存模式以及它们的使用场景、流程以及优缺点。缓存策略的选择本质上来讲,缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。例如:系统是写多读少的吗? Write Behind Pattern:又叫Write Back,异步缓存写入模式上述缓存策略的划分是基于对数据的读写流程来区分的,有的缓存策略下是应用程序仅和缓存交互,有的缓存策略下应用程序同时与缓存和数据库进行交互 也就是说,当应用从缓存中查询某条数据时,如果数据不存在则由缓存来完成数据的加载,最后再由缓存返回数据结果给应用程序。 因为程序只和缓存交互,编码会变得更加简单和整洁,当需要在多处复用相同逻辑时这点就变得格外明显。当使用Write-Through时,一般都配合使用Read-Through来使用。 甚至有效的缓存数据被无效的缓存数据给清除掉。Write-BehindWrite-Behind和Write-Through在”程序只和缓存交互且只能通过缓存写数据“这方面很相似。

    45910编辑于 2023-05-24
  • 来自专栏国产程序员

    面向对象的7种设计原则(4)-合成聚合复用原则

    合成复用原则 在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。 为什么使用合成/聚合复用,而不使用继承复用? 在面向对象的设计里,有两种基本的方法可以在不同的环境中复用已有的设计和实现,即通过合成/聚合复用和通过继承复用。两者的特点和区别,优点和缺点如下。 这种复用是黑箱复用,因为成分对象的内部细节是新对象看不见的。 这种复用支持包装。 这种复用所需的依赖较少。 每一个新的类可以将焦点集中到一个任务上。 继承复用 继承复用通过扩展一个已有对象的实现来得到新的功能,基类明显的捕获共同的属性和方法,而子类通过增加新的属性和方法来扩展超类的实现。继承是类型的复用。 因为超类的内部细节常常对子类是透明的,因此这种复用是透明的复用,又叫“白箱”复用。 如果超类的实现改变了,那么子类的实现也不得不发生改变。

    1.6K40发布于 2020-07-28
领券