什么是 SPU?

SPU(Standard Product Unit):标准化产品单元,是商品信息聚合的最小单位。是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。

通俗点讲,属性值、特性相同的商品就可以称为一个SPU。

SPU 解析优化

不兼容,但是可以互转
业务转架构难,架构转业务容易

SPU

比如我要查“黑鸭”关键字,条件是score>0.2,我要你返回它的id,我们要实现它。
你需要设计一个倒排索引就可以了。

设计

  • json文件
  • TextReader: 读取 json,解析json,提取关键字
  • KeywordStore: 存储关键字
  • service: 对接 service 接口

key 是可以重复的,如果 key 不能重复,要倒排索引有何用…

SpuBean.java

KeyWordStore.java (interface)


ConditionBean.java


多个条件查询

score>0.1 and (opt=0 or xx=1) // 类似于这种的多条件查询


写一个测试应该好懂一些:将两个and关系拼在一起作为一个List,包在ConditionBean里面。

前端解析之后,给我的就应该已经是这样的一个参数了。

ITextReader.java

作用:读取 json,解析json,提取关键字

  • 一行一行读就行
  • 返回json字符串

写框架标准模版:init,close,start



测试用例(先跑过测试用例,再提交代码)

优化:增加缓冲区大小
弊端:内存消耗大,增加gc次数

为什么需要缓冲区?

FileTextReader.java,读文件

使用 FileChannel 优化

上面图中的readline()方法代码如下:


优化之后,读文件的时间从 28s 优化成 1s,那他为什么会变快呢?

优化前,使用buffered,需要经过各种copy

优化后


em…

IJSONParser.java


IKeyWordStore.java


KeywordEngine.java


优化:添加线程池


计时器 StopWatch.java

优化

SPU解析优化:模块设计与实现,SKU优化相关推荐

  1. 深入解析 Raft 模块在 KaiwuDB 中的优化改造(下)

    导读 KaiwuDB 是由浪潮开源的一款 NewSQL 分布式数据库,具备 HTAP 特性,拥有强一致.高可用的分布式架构.其中,KaiwuDB 各方面的强一致性都依靠 Raft 算法实现.我们在上一 ...

  2. 如何为MAXM22511隔离式RS-485收发器模块设计和布局EMI优化的PCB

    简介 本文介绍了MAXM22511隔离式RS-485/RS-422,全双工收发器模块,为数据和电源通道提供完整的隔离解决方案,提供2500V有效值(60s)电缆侧(RS-485/RS-422驱动器/接 ...

  3. ensp大型网络环境设计与实现_mongodb内核源码设计实现、性能优化、最佳运维系列-网络传输层模块源码实现三...

    1. 说明 在之前的<<Mongodb网络传输处理源码实现及性能调优-体验内核性能极致设计>>和<<mongodb内核源码设计实现.性能优化.最佳运维系列-tran ...

  4. linux内核设计与实现 epub_mongodb内核源码设计实现、性能优化、最佳运维系列-网络传输层模块源码实现四...

    1. 说明 本文分析网络传输层模块中的最后一个子模块:service_executor服务运行子模块,即线程模型子模块.在阅读该文章前,请提前阅读下<<Mongodb网络传输处理源码实现及 ...

  5. sku设计mysql_商品SKU功能设计与优化

    原来的商品SKU设计存在着两个问题,一个是SKU表设计上面比较固化,无法扩展.另一个是当修改了商品信息之后,商品SKU的ID会发生变化,由于购物车表和订单商品表都关联了商品SKU的ID,这样就会导致匹 ...

  6. Tomcat 架构原理解析到架构设计借鉴

    ‍ 点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 Tomcat 架构原理解析到架构设计借鉴 Tomcat 发展这 ...

  7. 腾讯云低延时直播系统架构设计与弱网优化实践

    "直播带货"可能是2020年最具代表性的词汇之一,那么传统电商该如何融合直播系统,直播过程如何保障用户的最佳观看体验?本文由腾讯云资深架构师何书照在LiveVideoStack线上 ...

  8. C++ 开发者怒了:这个无用的模块设计最终会害死 C++!

    2018 年年底,C++ 标准委员会历史上规模最大的一次会议在美国 San Diego 召开,讨论了哪些特性要加入到 C++20 中.其中,Modules 便是可能进入 C++ 20 的一大重要特性: ...

  9. jQuery技术内幕:深入解析jQuery架构设计与实现原理1

    jQuery技术内幕:深入解析jQuery架构设计与实现原理 高 云 著 图书在版编目(CIP)数据 jQuery技术内幕:深入解析jQuery架构设计与实现原理 / 高云著. -北京:机械工业出版社 ...

最新文章

  1. python 实现结构树模式显示目录下文件
  2. jquery easyui datagrid 显示外键/子属性/二层属性的值的方法
  3. 使用countup.js使数字动态叠加
  4. [翻译]编写高性能 .NET 代码 第一章:性能测试与工具 -- 平均值 vs 百分比
  5. Expression Template(表达式模板,ET)
  6. JavaScript对象中的this属性
  7. 测量仪图片_介绍一款电线电缆检测智能影像测量仪
  8. ArcGIS Pro地理配准
  9. python设置散点图点的大小_python_matplotlib分别使用plot()和scatter()画散点图,以及如何改变点的大小...
  10. MOS管的finger和multiplier
  11. ZYNQ PS GPIO MIO 基础知识
  12. 量子计算数学基础,pauli 矩阵
  13. html中怎样变单独英文月份,【Web前端问题】js中,如何将日期中的月份转化为英文显示?...
  14. 智慧书-永恒的处世经典格言:241-280
  15. git merge\git merge --no-commit\git merge --squash区别
  16. postman 设置请求编码_Postman教程——细说请求
  17. 所有努力让生活变得更好的路,没有一步是白走的
  18. i7 7700hq安装Linux,翻出了自己吃灰的IfunkS i7-7700HQ笔记本 装了个ubuntu跑个分
  19. win7安装IIS教程 win7安装IIS 教程win7 安装IIS教程
  20. 右键文件夹用某个软件打开

热门文章

  1. 蓝桥杯 - 翻硬币(贪心)
  2. HDU - 5017 Ellipsoid(三分套三分/模拟退火)
  3. vb编程软件_原创经验,如何安装vb编程软件
  4. edit plus 中文插件_iMindMap手绘思维导图软件中文版
  5. linux基础命令chown,Linux常用命令及组件:chown和chmod
  6. 逆向工程核心原理读书笔记-API钩取之隐藏进程(二)
  7. 《openssl 编程》之文本数据库
  8. Windows 平台编译 WebRTC
  9. C语言程序设计 | 整型、浮点型在内存中的存储方式
  10. 斐波那契数拓展问题:leetcode-70 爬楼梯问题 leetcode-1137 泰波那契数问题解法