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

    每日一库之 go-cache 单机缓存

    go-cache 是一个 golang 的缓存库, 用于缓存 k, v 对, 缓存时间过期后存储的值会失效, 底层是一个 map, 过期后内部 Item 是不会自动清除, 需要手动调用DeleteExpired 方法清除过期项 安装 go get github.com/patrickmn/go-cache 使用方法 // 创建Cache对象, 第一个参数为缓存时间, 第二个参数为清理缓存项的时间间隔 // 底层是一个 map, 键是 string, 值是 Item mu是互斥锁, 用于保护items的并发访问 onEvicted是删除缓存项时的回调函数, 当缓存项过期时, 会调用该函数 janitor是清理缓存项的定时器 c.mu.Unlock() } 设置写锁,防止多个 goroutine 同时修改一个 item, 然后设置过期时间 这就是 go-cache 库, 主要用于单机缓存,底层是一个 map, 使用RWMutex 锁控制读写和time.Now().Add(d).UnixNano()设置过期时间, 基于本地内存 , 如果需要分布式缓存, 可以考虑使用 redis 等其他缓存

    42811编辑于 2025-07-04
  • 来自专栏全栈程序员必看

    代码缓存3

    2、CodeBuffer CodeBuffer类似于IO里面的BufferedReader等用来临时缓存生成的汇编代码,CodeBuffer用来缓存汇编代码的内存通常是BufferBlob中content CodeCache就是用于缓存不同类型的生成的汇编代码,如热点方法编译后的代码,各种运行时的调用入口Stub等,所有的汇编代码在CodeCache中都是以CodeBlob及其子类的形式存在的。 _limit) pointer refers to the first unused (resp. unallocated) byte. 3、CodeCache::initialize() 在CodeCache :设置代码缓存的大小; -XX:+UseCodeCacheFlushing:当代码缓存满了的时候,让JVM换出一部分缓存以容纳新编译的代码。 这意味着,在代码缓存满了的时候,JVM会切换到纯解释器模式,这对于性能来说,可以说是毁灭性的影响; -XX:NmethodSweepCheckInterval:设置清理缓存的时间间隔; -XX:+DontCompileHugeMethods

    68220发布于 2021-04-07
  • 来自专栏人人都是架构师

    Go每日一库之81:go-cache(单机缓存库)

    go-cache https://github.com/patrickmn/go-cache 一句话描述 基于内存的 K/V 存储/缓存 : (类似于Memcached),适用于单机应用程序 简介 go-cache 基于内存的 K/V 存储/缓存 : (类似于Memcached),适用于单机应用程序 ,支持删除,过期,默认Cache共享锁, 大量key的情况下会造成锁竞争严重 为什么选择go-cache? 可以存储任何对象(在给定的持续时间内或永久存储),并且可以由多个goroutine安全地使用缓存。 int64 // 过期时间:设置时间+缓存时长 } // Cache 整体缓存 type Cache struct { *cache } // cache 整体缓存 type cache struct } // janitor 定时清空缓存的结构 type janitor struct { Interval time.Duration // 多长时间扫描一次缓存 stop chan

    5.6K40编辑于 2023-09-30
  • 来自专栏JavaEdge

    大道缓存1 缓存特征2 缓存介质3 缓存分类和应用场景缓存实战

    3 缓存分类和应用场景 根据缓存与应用的藕合度,分为local cache(本地缓存)和remote cache(分布式缓存) 本地缓存:指的是在应用中的缓存组件,其最大的优点是应用和cache是在同一个进程内部 主要满足单机场景下的小数据量缓存需求,同时对缓存数据的变更无需太敏感感知,如上一般配置管理、基础静态数据等场景。 ,如图3的左侧部分描述。 简单,很小的jar包,简单配置就可直接使用,单机场景下无需过多的其他服务依赖。 支持多种的缓存策略,灵活。 域已发生更新,自动影响cache1、cache2、cache3等处的缓存数据。

    1K21发布于 2018-09-20
  • 来自专栏全栈程序员必看

    3. java缓存-线程内缓存guava cache

    guava cache的缓存结构 常用的guava cache缓存 根据上图中的缓存框架,我们常用的一些缓存实例有:LocalManualCache和LocalLoadingCache,两者唯一的区别就是 范例 手动加载缓存 手动加载缓存:需要提前把数据put,当数据不存在返回null public class MyCache { private static Cache<String,Object //手动加载数据 cache.put("1","name11"); cache.put("2","name12"); cache.put("3" 自动加载缓存 自动加载缓存:不需要提前加载数据,当get时,不存在数据,会自动根据CacheLoader加载数据。 // expireAfterWrite 缓存加载指定时间后,自动失效 // maximumSize 缓存数量超出指定数量后,加载新的缓存,会根据指定策略淘汰老的缓存 //

    1.2K50编辑于 2022-11-09
  • 来自专栏python3

    ASP.NET 缓存(3)

    有2种方式来实现缓存部分页。 片段缓存:这种情况下,你把确定要缓存的内容,包裹在一个专用的用户控件里,然后只需要对这个控件做输出缓存就行。 这两种方式,片段缓存实现起来是最简单。然而,使用哪种方式取决于你要缓存的内容的数量。如果你有个小的区域要缓存,片段缓存很合适。 最灵活的实现部分缓存的方法是,不用输出缓存,而是使用数据缓存在代码中程序化的处理缓存。 实现片段缓存,你只需要创建一个用户控件,设置这个用户控件的OutputCache 指令,就可以了。 这样的话,整个页面不会被缓存,但是这个用户控件会被缓存。片段缓存在概念上和页面缓存一样的。 当asp.net页面框架收到一个缓存的页面,它会自动的触发你的回掉方法来获取动态内容。然后将你的内容插入到缓存的html页面中。

    98320发布于 2020-01-14
  • 来自专栏Web技术布道师

    推荐3-nginx单机1w并发优化

    性能统计工具 安装统计模块http_stub_status_module,便于观察nginx的状态 1.进入之前nginx的安装包目录,查找是否有统计模块可以安装 选出所有可以安装的包 root@STUDY3 HTTP_UPSTREAM_LEAST_CONN=YES HTTP_UPSTREAM_KEEPALIVE=YES HTTP_UPSTREAM_ZONE=YES MAIL_POP3= /configure --prefix=/usr/local/nginx/ --with-http_stub_status_module 3.查看模块是否安装成功 [root@STUDY3 nginx- sys/net/core/somaxconn 总结 在做服务器部署的时候,首先必须要了解服务器的配置和服务器所能够处理的极限,最先测试的时候可以先从nginx的只跑html静态页面测试开始,不连数据库不做缓存 大家知道如果加入php,连接了数据库,做了数据库缓存做了图片cdn并发会有有影响,那之后的事情也是一样逐个调试压榨服务器的最大性能,有针对性的优化才是正确的。

    97820发布于 2019-09-02
  • 来自专栏小工匠聊架构

    Kafak - 单机集群快速安装指北(3.x版本)

    broker.id=102 #处理网络请求的线程数量 num.network.threads=3 #用来处理磁盘IO的线程数量 num.io.threads=8 #发送套接字的缓冲区大小 socket.send.buffer.bytes ]# cd /root/kafka/ [root@localhost kafka]# cd kafka [root@localhost kafka]# ll total 68 drwxr-xr-x. 3 root root 4096 Sep 29 13:00 bin drwxr-xr-x. 3 root root 4096 Oct 25 11:27 config drwxr-xr-x. 2 root

    61520编辑于 2023-10-27
  • 来自专栏ZooKeeper原理和源码

    zk源码—3.单机和集群通信原理一

    大纲1.单机版的zk服务端的启动过程(1)预启动阶段(2)初始化阶段2.集群版的zk服务端的启动过程(1)预启动阶段(2)初始化阶段(3)Leader选举阶段(4)Leader和Follower启动阶段 .启动网络连接工厂实例的线程七.恢复单机版服务器实例的本地数据八.创建并启动服务器实例的会话管理器九.初始化单机版服务器实例的请求处理链十.注册单机版服务器实例到网络连接工厂实例单机版服务器实例:ZooKeeperServer 三.根据两个工具实例创建单机版服务器实例ZooKeeperServer是单机版服务端的核心实体类。 单机版服务器的请求处理链包括3个请求处理器:第一个请求处理器是:PrepRequestProcessor第二个请求处理器是:SyncRequestProcessor第三个请求处理器是:FinalRequestProcessorzk 服务端会严格按照顺序分别调用这3个请求处理器处理客户端的请求,其中PrepRequestProcessor和SyncRequestProcessor其实也是一个线程。

    17900编辑于 2025-07-04
  • 来自专栏ZooKeeper原理和源码

    zk源码—3.单机和集群通信原理二

    大纲1.单机版的zk服务端的启动过程(1)预启动阶段(2)初始化阶段2.集群版的zk服务端的启动过程(1)预启动阶段(2)初始化阶段(3)Leader选举阶段(4)Leader和Follower启动阶段 initializeAndRun()方法中创建和启动历史文件清理器,以及根据配置文件和启动参数,即args参数和config.isDistributed()方法,来判断zk服务端的启动方式是集群模式还是单机模式 ZooKeeperServer是单机版服务端的核心实体类。QuorumPeer是集群版服务端的核心实体类。可以将每个QuorumPeer类实例看作是集群中的一台服务器。 这些核心工具类也是单机版服务端运行时需要的,比如:数据持久化类FileTxnSnapLog、NIO工厂类ServerCnxnFactory等。 一.初始化Leader选举(初始化当前投票 + 监听选举端口 + 启动选举守护线程)Leader选举是集群版的zk服务端和单机版的zk服务端的最大不同点。

    20500编辑于 2025-07-04
  • 来自专栏修己xj

    使用 Docker Compose 部署单机版 Redis:简单高效的数据缓存与存储

    今天我们来介绍如何使用 docker-compose 部署单机版 Redis,这是一个简单高效的数据缓存与存储解决方案,广泛应用于Web应用、移动应用以及各类数据处理场景。 Redis(Remote Dictionary Server的缩写)是一个开源的内存数据存储系统,它可以用作数据库、缓存和消息中间件。 分布式:虽然本文介绍的是单机版 Redis,但 Redis 本身支持分布式部署,能够满足大规模应用的需求。 现在你已经成功地使用 Docker Compose 部署了单机版 Redis。你可以使用 Redis 的各种命令来进行数据的读写、存储、删除等操作。比如: 存储数据: set xj "修己!" Redis 作为一个简单高效的数据缓存与存储解决方案,适用于各种不同规模的应用场景。 希望本文对你理解并使用 Redis 与 Docker Compose 有所帮助。

    9.5K40编辑于 2023-08-25
  • 来自专栏For XX - 专注于技术本身

    TiDB单机、集群环境安装,单机急速体验

    TiDB分布式关系型数据库单机安装,急速体验,只适合测试环境 简介 TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytical 官网:https://pingcap.com/docs-cn/ 单机环境安装 wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz

    1.4K10编辑于 2022-06-09
  • 来自专栏trick时间

    单机事务(-)

    【给点个赞如果觉得有帮助,我会做的更好】 最近想梳理下基础知识,又回顾了下单机事务内容。大家可作为一个参考。 写-》读-》写-》写:事务单元1 读-》读-》写-》写:事务单元2/事务单元3 共享资源A 3.继续优化对存在共享同一资源的对列,引入读锁,读并行。 引入读锁,提高并发,合并读,但会阻塞写。 读-》写-》写:事务单元2/事务单元3 共享资源A 读 4.继续提高并发,因为之前读会阻塞写,那么引入写锁,读写并行。 写-》读-》写-》写:事务单元2/事务单元3 共享资源A 读 当需要写的时候会把读锁升级为写锁。 写-》写-》写:事务单元1 读 读-》写-》写:事务单元2/事务单元3 共享资源A 读 读 6.继续提高并发,写写并行 悲观锁和乐观锁的机制来提高写写并行。

    67340发布于 2020-02-21
  • 来自专栏Java极客技术

    3分钟带你掌握缓存穿透、缓存雪崩、缓存击穿,以及应对方案!

    一、介绍 每场后端面试,似乎都少不了关于 redis 的话题,比如项目使用过哪些分布式缓存服务,为什么要使用 redis,有没有碰到过缓存失效、缓存穿透、缓存雪崩等问题。 对于既有数据库写入又有缓存操作的接口,一般分为两种情况执行。 1.先写入数据库,再操作缓存。这种情况下如果数据库操作成功,缓存操作失败就会导致缓存和数据库不一致 2.先操作缓存,再写入数据库。 将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力 3.对空结果进行缓存。 比如缓存 A 和缓存 B,A 设置超时时间,B 不设值超时时间,先从 A 读缓存,A 没有读 B,当缓存 A 发生变化的时候,同时更新缓存 B 3.计算数据缓存节点的时候采用一致性 hash 算法,这样在节点数量发生改变时不会存在大量的缓存数据需要迁移的情况发生 3.使用类似SQL的乐观锁机制:在并发写入Redis缓存时,把要写入数据的版本号和时间戳与Redis中的数据进行对比,如果写入的数据时间戳或者版本号 比Redis高,则写入;否则就不写入 三、小结 本文主要围绕

    47110编辑于 2023-02-23
  • 来自专栏Java架构学习路线

    3步轻松搞定Spring Boot缓存

    在Spring Boot应用程序中,我们可以通过Spring Caching来快速搞定数据缓存。 接下来我们将介绍如何在三步之内搞定 Spring Boot 缓存。 1. > <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w<em>3</em>.org/2001/XMLSchema-instance ehcache提供了Ehcache的<em>缓存</em>实现 cache-api 提供了基于JSR-107的<em>缓存</em>规范 2. /v<em>3</em>/jsr107" xsi:schemaLocation=" http://www.ehcache.org/v<em>3</em> http://www.ehcache.org /schema/ehcache-core-3.0.xsd http://www.ehcache.org/v<em>3</em>/jsr107 http://www.ehcache.org/schema

    66000发布于 2019-09-06
  • 来自专栏从零开始的linux

    storm单机安装

    下载 wget https://archive.apache.org/dist/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz 配置 tar xf apache-storm-1.1.0.tar.gz cd apache-storm-1.1.0 vim conf/storm.yaml storm.zookeeper.servers: - "alex" nimbus.seeds: ["alex"] supervisor.slots.ports:

    1K50发布于 2018-04-25
  • 来自专栏运维学习交流

    RabbitMQ单机安装

    2.Centos7上安装RabbitMQ(单机) 官方文档: https://www.rabbitmq.com/install-rpm.html 2.1 安装erlang [root@linux- erlang (https://packagecloud.io/docs#gpg_signing) <support@packagecloud.io>" 指纹 : 2ebd e413 d3ce | 267 kB 00:00:00 (3/3): yum-utils-1.1.31-54.el7_8.noarch.rpm 2/3 验证中 : python-chardet-2.2.1-3.el7.noarch 3/3 已安装: yum-utils.noarch 0:1.1.31-54.el7_8 作为依赖被安装: python-chardet.noarch 0:2.2.1-3.el7

    2.3K10发布于 2020-11-24
  • 来自专栏DevOps

    Spark 单机部署

    https://www.scala-lang.org/download/2.11.8.html vi /etc/profile export SCALA_HOME=/home/hadoop3/ :${JAVA_HOME}/bin: ${SCALA_HOME}/bin:$PATH 3. spark_home 配置 vi /etc/profile # Spark Eenvironment Variables

    40910编辑于 2024-03-29
  • 来自专栏山海散人技术

    ElasticSearch 单机部署

    /elasticsearch-7.8.1.tar.gz 3. 修改 Linux 系统限制配置,将文件创建数修改为65536个。 1. 修改系统中允许应用最多创建多少文件等的限制权限。

    1.2K20发布于 2021-03-03
  • 来自专栏小手冰凉

    Kafka单机部署

    3、Topic和Partition的区别 一个topic可以认为一个一类消息,每个topic将被分成多个partition,每个partition在存储层面是append log文件。 二、部署单机kafka 1、部署kafka kafka服务依赖于JAVA环境,如果没有,自行安装 [root@kafka ~]# wget https://archive.apache.org/dist 192.168.171.134:9092 192.168.171.134:44388 ESTABLISHED 43326/java 由于kafka是通过zookeeper来调度的,所以,即使是单机

    5.2K31发布于 2020-05-08
领券