当前位置: 首页 > news >正文

可以做推广的门户网站wordpress适合中国的小插件介绍

可以做推广的门户网站,wordpress适合中国的小插件介绍,wordpress eclipse,专业网站建设制文章目录 引言详解缓存的设计和演进基于缓存存储运算结果锁分段散列减小锁粒度异步化提升处理效率原子化避免重复运算小结参考引言 本文将基于并发编程和算法中经典的哈希取模、锁分段、 异步化、原子化。这几个核心设计理念编写逐步推演出一个相对高效的缓存工具,希望对你有…

文章目录

    • 引言
    • 详解缓存的设计和演进
      • 基于缓存存储运算结果
      • 锁分段散列减小锁粒度
      • 异步化提升处理效率
      • 原子化避免重复运算
    • 小结
    • 参考

引言

本文将基于并发编程和算法中经典的哈希取模、锁分段、 异步化、原子化。这几个核心设计理念编写逐步推演出一个相对高效的缓存工具,希望对你有所启发。

我是 SharkChili ,Java 开发者,Java Guide 开源项目维护者。欢迎关注我的公众号:写代码的SharkChili,也欢迎您了解我的开源项目 mini-redis:https://github.com/shark-ctrl/mini-redis。

为方便与读者交流,现已创建读者群。关注上方公众号获取我的联系方式,添加时备注加群即可加入。

详解缓存的设计和演进

基于缓存存储运算结果

我们有一批数据需要通过运算才能获得结果,而每一次运算大约耗时是500ms,所以为了避免重复运算导致的等待,我们希望对应数据第一次运算的结果直接缓存到容器中,后续线程可直接通过容器获得结果:

在这里插入图片描述

于是我们就有了第一个版本,利用缓存避免非必要的重复计算,从而提升程序在单位时间内的吞吐量

public class ComputeCache {public final Map<Integer, Integer> cache = new HashMap<>();public synchronized int compute(int arg) {if (cache.containsKey(arg)) {//若存在直接返回结果return cache.get(arg);} else {//若不存在则计算后缓存并返回int result = doCompute(arg);cache.put(arg, result);return result;}}//模拟耗时的计算private int doCompute(int key) {ThreadUtil.sleep(500);return key << 1;}public synchronized int size() {return cache.size();}}

我们利用下面这段单元测试来验证缓存的性能和正确性,这里笔者也简单介绍一下几个比较核心的点:

  1. 声明本机CPU核心数+1的线程数执行并发运算
  2. 利用倒计时门闩控制线程并发流程起止,保证准确感知所有运算任务结束后,执行耗时统计
  3. 利用容器中最直观且容易检查出错误的属性size进行比对判断我们的缓存是否正确

最终在笔者的机器下5000并发的耗时大约是26765ms,整体还是不太符合我们的预期:

//初始化缓存工具<
http://www.dtcms.com/a/605095.html

相关文章:

  • Dubbo服务治理全解析:从零搭建高可用微服务架构
  • java List怎么转换为Vector
  • 2023年辽宁省数学建模竞赛-B题 数据驱动的水下导航适配区分类预测-基于支持向量机对水下导航适配区分类的研究
  • 机器学习--KNN算法中的距离、范数、正则化
  • openGauss向量数据库功能实操测评:轻量部署下的高维检索能力
  • php做网站还是linuxseo服务外包费用
  • 《算法通关指南:算法基础篇 ---- 二维前缀和 — 1. 【模板】二维度前缀和,2.激光炸弹》
  • SpringBoot+openGauss DataVec构建高效RAG知识库实践
  • JVM 垃圾回收算法的详细介绍
  • 生成式引擎优化(GEO)实用指南(三):结构化内容与AI优化策略
  • 114啦怎么建设网站怎么样推广自己的公司
  • 可视化图标开发“懂一点”|数据可视化术语表
  • SpringMVC(1)学习
  • 高频Linux 面试题
  • 芜湖效能建设网站重庆发布公众号
  • Spring Boot 多环境配置详解:Maven Profile vs 启动参数注入
  • 《Chart.js 饼图:高效与灵活的数据可视化工具详解》
  • 力扣每日刷题251113
  • erp网站开发网站后台管理系统源码下载
  • Spring IOC核心原理与实战技巧
  • 计算中央子午线(Excel版)
  • HarmonyOS Menu组件深度自定义:突破系统默认样式的创新实践
  • 【Rust】从0到1开发和运行Web相关功能,并简单实现数据库连接和查询
  • AI与SEO策略结合下的关键词优化新发现
  • git仓库中的.git目录 , .gitattributes、.gitignore、.gitmodules、.modules文件作用与讲解
  • Win键失效解决方法
  • 酷秒神马 9.0:轻量架构 + 安全防护
  • 编译器用什么语言开发 | 深入分析编译器开发语言及其选择
  • 二手书网站建设报告网站建设的目的与意义
  • 宁波建网站报价客户制作网站时的问题