Arganzheng's Blog

stay hungry, stay foolish

MySQL用户授权

MySQL的用户创建和授权基本是通过一个命令解决: GRANT privileges ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION  要使用该语句,你需要填写下列部分: 1、privileges : 授予用户的权限,下表列出可用于GRANT语句的权限指定符: Alter 修改表和索引 Create 创建数据库和表 Delete 删除表中已有的记录 Drop 抛弃(删除)数据库和表 INDEX 创建或抛弃索引 Insert 向表中插入新行 REFERENCE 未用 Select 检索表中的记录 Update 修改现存表记录 FILE 读或写服务...

如何构建maven私有仓库

私有仓库,也称之为私服,它是一种特殊的远程仓库。它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的maven用户使用。当Maven需要下载构建的时候,它从私服请求,如果私服不存在该构件,则会从外部的远程仓库下载,缓存在私服上之后,再为maven的下载请求提供服务。此外,一些无法从远程仓库下载到的构件也能从本地上传到私服上供大家使用。 通过建立自己的私服,就可以带来如下几个好处: 加速Maven构建 节省外网带宽 部署第三方构件 节省中央maven仓库的负担 提高稳定性,增强控制 使用Nexus搭建私服 Sonatype Nexus是当前最流行的Maven仓库管理软件。具体搭建非常简单,网上资料很多,这里不赘述了...

实时消息系统设计与实现

特点 实时性 支持群聊与广播 多媒体:text, image, vioce or video 难点 顺序 丢包 重复 设计 client server 会话/群聊 协议 登陆,身份验证 连接 发起会话 退出会话(退群) 消息接收设置 心跳 长连接 终端 接入层: ConnectSvr 逻辑层: SenderSvr, PushSvr, ReceiveSvr 存储层: MsgStore 设计权衡 聊天记录要不要保存?保存多久?客户端保存还是服务器保存? 要不要使用系统推送...

nginx重定向问题

背景 经常有这样的需求,对于没有登陆的用户如果访问了某个需求登陆才能访问的链接,系统需要自动将其重定向到登陆页面。登陆成功之后再跳回原来请求的链接。 实现 Java中实现重定向非常简单,HttpServletResponse.sendRedirect就可以了: try { response.sendRedirect(HttpServletRequestTool.getLoginUrl(request)); } catch (IOException e) { log.error("Error redirecting user to login.", ex); } 关键是拿到登陆的URL和returnUrl: import javax.servlet....

Reading搜索

需求 用户可以根据 isbn、作者和书名进行搜索。 相关搜索:相关搜索关键词 根据时间进行排序? 根据状态进行排序? 相似书籍(more like this) 智能提示 suggesters auto-complete completion suggester spell correction term suggester phrase suggster 2. 用户可以根据分类(tag)进行浏览,其实就是根据tag进行搜索 ...

ElasticSearch学习

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

ElasticSearch的mappings

在ES中,每个文档都会归属到一个类型下(type,事实上是index下。ES6.0之后废除type的概念)。这个类型相当于关系型数据库中的表结构。所以每个类型有类似于DB一样的schema定义,称之为mapping。mapping定义了type中的fields信息: datatype for each field,具体参见前面的文章ElasticSearch的数据类型。 how the field should be handled by ES 大部分情况下,我们是不需要对type进行自定义mapping的,但是在某些情况下我们需要自定义mapping: distinguish between full text string fields ...

ElasticSearch字段排序

需求 如果我们需要根据一个字段进行排序,如何支持呢? 像日期、价格这些数值型的(日期底层其实是转换为数值),排序其实是很自然也是很简单的。但是如果是字符串类型的字段呢?有几个问题需要考虑: 分词对排序的影响 大小写、单复数之类区别 字符串类型的字段一般都需要进行搜索的,那么需要对其进行Analyzed。但是Analyzed的结果就是将该字符串解析为分散的token(term)。这样子,ES就不知道到底是根据那个term来排序,事实上根据哪一个都是错的,应该是整个字符串。所以为了对字符串类型字段进行排序,需要保存整个字符串为一个term——也就是说保存一个not_analyzed string。同时为了保证该字段能够被搜索,还要保存该字符串anal...

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 ES对于没有定义mapping的未知字段会采用dynamic mapping进行类型猜测,并且将其加入到type mapping中。这个行为可以通过 dynamic 配置项进行控制。 true: Add new fields dynamically — the def...

ElasticSearch的Analyzer

Analyzer在构建索引的时候,还有分析查询字符串(query string)时候会用到。 Lucene的Analyzer是一个pineline的机制,由一个 Tokenizer + N个 TokenFilter 构成,N>=0。Tokenizer之前还可以配置N个 CharFilter。 其中各个部件的职责如下: character filters Character filters are used to preprocess the string of characters before it is passed to the tokenizer. A character filter may be used to strip out HTML...

×