架构 | 京东商品搜索架构设计
摘要:电商搜索系统存在以下特点:数据量庞大。(上亿级别)高并发。(日均pv过亿、数十亿)一条商品数据由商品基本信息、价格、库存、促销、评价等组成,这些数据存储在各自业务系统当中。(多数据源导致构建索引比较麻烦)召回率要求高。(哪个商家发现搜不到自家的商品肯定要抓狂,哪怕有一个搜不到。)时效性要求高,价格变
阅读全文
详谈京东的商品搜索系统架构设计
摘要:京东商品搜索引擎是搜索推荐部自主研发的商品搜索引擎,主要功能是为海量京东用户提供精准、快速的购物体验。虽然只有短短几年的时间,我们的搜索引擎已经经过了多次618店庆和双11的考验,目前已经能够与人们日常使用的如谷歌、百度等全文搜索引擎相比,我们的产品与其有相通之处,比如涵盖亿级别商品的海量数据、支持
阅读全文
求求你,别再用wait和notify了
摘要:Condition 是 JDK 1.5 中提供的用来替代 wait 和 notify 的线程通讯方法,那么一定会有人问:为什么不能用 wait 和 notify 了? 哥们我用的好好的。老弟别着急,听我给你细说... 之所以推荐使用 Condition 而非 Object 中的 wait 和 not
阅读全文
文件写入的6种方法,这种方法性能最好
摘要:在 Java 中操作文件的方法本质上只有两种:字符流和字节流,而字节流和字符流的实现类又有很多,因此在文件写入时我们就可以选择各种各样的类来实现。我们本文就来盘点一下这些方法,顺便测试一下它们性能,以便为我们选出最优的写入方法。 在正式开始之前,我们先来了解几个基本的概念:流、字节流和字符流的定义与
阅读全文
【Mysql优化】聚簇索引与非聚簇索引概念
摘要:必须为主键字段创建一个索引,这个索引就是所谓的"主索引"。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE。 首先明白两句话: innodb的次索引指向对主键的引用 (聚簇索引) myisam的次索引和主索引 都指向物理行 (非聚簇索引) 聚簇索引是对磁盘上实
阅读全文
Mysql索引原理与优化
摘要:如何查询数据? 在没有索引的情况下,如果执行select * from t where age = 22,那么要找到age = 22的数据,则是从上往下一个一个比较,直到第6行才能找到,并且数据库的文件是存在磁盘上的文件中,所以每次比较都算做一次IO操作,也就是6次IO操作,如果数据量大,可以想象查
阅读全文
Mysql全文索引的使用
摘要:前言 在MySQL 5.6版本以前,只有MyISAM存储引擎支持全文引擎.在5.6版本中,InnoDB加入了对全文索引的支持,但是不支持中文全文索引.在5.7.6版本,MySQL内置了ngram全文解析器,用来支持亚洲语种的分词. 在学习之前,请确认自己的MySQL版本大于5.7.6.我的版本为5.
阅读全文
索引的优缺点,如何创建索引
摘要:优点:1、加快数据检索速度,提高对数据访问效率 2、提高数据查询性能 缺点:1、占用大量硬盘空间 2、数据的增删改等更新操作,需要维护索引时间,降低更新速度 使用场合: 1、主键列中创建索引 2、多表连接时连接列创建索引 3、where子句查询的列 4、需要经常GROUP BY和ORDER BY的列
阅读全文
MySQL索引失效的几种情况详析
摘要:1.前导模糊查询不能利用索引(like '%XX'或者like '%XX%') 假如有这样一列code的值为'AAA','AAB','BAA','BAB' ,如果where code like '%AB'条件,由于前面是 模糊的,所以不能利用索引的顺序,必须一个个去找,看是否满足条件。这样会导致全索
阅读全文
MySQL索引失效的几种情况
摘要:一,使用Like关键字查询语句 首先看下我的测试表的行数: select count(0) from tb_user 结果如下: 一共16行。 使用like '% ': explain select * from tb_user where username like '%si' 分析结果: 发现查
阅读全文
Java多线程分批发送消息的小例子
摘要:需求: 假设有10万个用户,现在节假日做活动,需要给每个用户发送一条活动短信,为了提高程序的效率,建议使用多线程分批发送. 这里值得注意的是: 每开一个线程都会占用CPU的资源,所以线程根据所需要的条数来决定就好,避免浪费,我们用的是一个小例子,只是说明了多线程处理提高了效率,实际的大规模场景中不建
阅读全文
工作中遇到的java 内存溢出,问题排查
摘要:工作中遇到的java 内存溢出,问题排查 一、服务器配置及jvm运行参数 CentOS release 6.4 (Final) MemTotal: 16333916 kB Intel(R) Xeon(R) CPU E7-4860 v2 @ 2.60GHz 8C -Xmx4096m -Xms4096m
阅读全文
java线上内存溢出问题排查步骤
摘要:一般线上遇到比较头疼的就是OOM内存溢出问题,我们都会先看错误日志,如果错误日志能够定位出哪个类对象导致内存溢出,那么我们只需要针对问题修改bug就好。但是很多时候我们单凭日志无法定位出内存溢出问题,那么我们这时候就需要以下操作来定位问题。 1、top下对当前服务器内存有个大致了解 top后 shi
阅读全文
性能测试-java内存溢出问题排查
摘要:背景: 最近测试一个智能呼叫系统,就是AI代替人工客服批量给客户打电话作推广活动,在测试的过程中,应用服务器和数据库服务器资源使用都挺正常的,但是长久不重启应用,过个2-3天,执行个几次同时呼叫600个电话拨打任务后,就可能存在: org.springframework.web.util.Neste
阅读全文