Arganzheng's Blog

stay hungry, stay foolish

实时消息系统设计与实现

特点 实时性 支持群聊与广播 多媒体:text, image, vioce or video 难点 顺序 丢包 重复 设计 client server 会话/群聊 协议 登陆,身份验证 连接 发起会话 退出会话(退群) 消息接收设置 心跳 ...

nginx重定向问题

背景 经常有这样的需求,对于没有登陆的用户如果访问了某个需求登陆才能访问的链接,系统需要自动将其重定向到登陆页面。登陆成功之后再跳回原来请求的链接。 实现 Java中实现重定向非常简单,HttpServletResponse.sendRedirect就可以了: try { response.sendRedirect(HttpServletRequestTool.getLoginUr...

Reading搜索

需求 用户可以根据 isbn、作者和书名进行搜索。 相关搜索:相关搜索关键词 根据时间进行排序? 根据状态进行排序? 相似书籍(more like this) 智能提示 suggesters auto-complete completion suggester ...

ElasticSearch学习

业界流行的开源搜索框架 Lucene: Java. Just a library Sphinx: C++ Solr/SolrCloud: Java, uses Lucene internally for all its indexing and search. Netfix Digg ElasticSearch: Java...

ElasticSearch的mappings

在ES中,每个文档都会归属到一个类型下(type,事实上是index下。ES6.0之后废除type的概念)。这个类型相当于关系型数据库中的表结构。所以每个类型有类似于DB一样的schema定义,称之为mapping。mapping定义了type中的fields信息: datatype for each field,具体参见前面的文章ElasticSearch的数据类型。 how ...

ElasticSearch字段排序

需求 如果我们需要根据一个字段进行排序,如何支持呢? 像日期、价格这些数值型的(日期底层其实是转换为数值),排序其实是很自然也是很简单的。但是如果是字符串类型的字段呢?有几个问题需要考虑: 分词对排序的影响 大小写、单复数之类区别 字符串类型的字段一般都需要进行搜索的,那么需要对其进行Analyzed。但是Analyzed的结果就是将该字符串解析为分散的token(ter...

ElasticSearch的数据类型

ES使用JSON作为数据交互格式,所以简单来说,JSON支持的数据类型,ES都支持。 1. core simple field types String: string Whole number: byte, short, integer, long Floating point: float, double Boolean: boolean Date: date ...

ElasticSearch的Analyzer

Analyzer在构建索引的时候,还有分析查询字符串(query string)时候会用到。 Lucene的Analyzer是一个pineline的机制,由一个 Tokenizer + N个 TokenFilter 构成,N>=0。Tokenizer之前还可以配置N个 CharFilter。 其中各个部件的职责如下: character filters Character fi...

如何提高服务器并发处理能力

说明 以下内容为入门级介绍,意在对老技术作较全的总结而不是较深的研究。主要参考《构建高性能Web站点》一书。 目录 什么是服务器并发处理能力 怎样衡量服务器并发处理能力 吞吐率 压力测试 怎么提高服务器的并发处理能力 提高CPU并发计算能力 多进程 & 多...

select、poll和epoll简介

说明:本篇文章是网上各种资料杂烩而成。如有雷同,纯属自然。 select select功能介绍 select系统调用的功能是对多个文件描述符进行监视,当有文件描述符的文件读写操作完成,发生异常或者超时,该调用会返回这些文件描述符。 int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds,stru...