许晨的博客

现居西安,软件工程师

  • 博客(25)
  • 资源 (1)
  • 收藏
  • 关注

原创 ElasticSearch使用总结(十)

ElasticSearch 支持Java正则表达式查询,但是,在对大段的文本(Text Block)进行挖掘之前,必须了解正则表达式查询的特殊之处。由于分析器会对文本字段进行分词,移除停用词,小写转换等操作,最终存储在倒转索引中的是小写的标记流(Token Stream),默认情况下,每一个标记是一个分词(Term),这无法满足正则表达式查询的一般要求,这就是说,正则表达式查询的是原始文本,需要注...

2018-04-22 17:21:57 2105

原创 ElasticSearch使用总结(九)

在ElasticSearch中文档存储的介质分为内存和硬盘:内存速度快,但是容量有限;硬盘速度较慢,但是容量很大。同时,ElasticSearch进程自身的运行也需要内存空间,必须保证ElasticSearch进程有充足的运行时内存。为了使ElasticSearch引擎达到最佳性能,必须合理分配有限的内存和硬盘资源。 一.倒排索引(Inverted Index) ElasticSearch引擎...

2018-04-22 13:44:17 1984

原创 ElasticSearch使用总结(八)

Elasticsearch中,内置了很多分词器(analyzers)。下面来进行比较下系统默认分词器和常用的中文分词器之间的区别。系统默认分词器:1、standard 分词器 英文的处理能力同于StopAnalyzer.支持中文采用的方法为单字切分。他会将词汇单元转换成小写形式,并去除停用词和标点符号。/**StandardAnalyzer分析器*/ public v...

2018-04-22 09:49:01 2735

原创 ElasticSearch使用总结(七)

Elasticsearch提供了多种聚合方式,能帮助用户快速的进行信息统计与分类,本篇主要讲解下如何使用Range区间聚合。最简单的例子,想要统计一个班级考试60分以下、60到80分、80到100分,在ES中只要一个命令就可以轻松统计…. 聚合例子{ "aggs":{ "grade_ranges":{ "range":{ ...

2018-04-22 06:47:36 2218

原创 ElasticSearch使用总结(六)

之前总结过metric聚合的内容,本篇来说一下bucket聚合的知识。Bucket可以理解为一个桶,他会遍历文档中的内容,凡是符合要求的就放入按照要求创建的桶中。 本篇着重讲解的terms聚合,它是按照某个字段中的值来分类: 比如性别有男、女,就会创建两个桶,分别存放男女的信息。默认会搜集doc_count的信息,即记录有多少男生,有多少女生,然后返回给客户端,这样就完成了一个terms得统计...

2018-04-21 14:35:18 2803

原创 ElasticSearch使用总结系列

《ElasticSearch使用总结》系列:Elasticsearch使用已经近一年时间了,现特将Elasticsearch相关核心知识、原理从初学者认知、学习的角度,企业实际开发的角度进行详细梳理。欢迎讨论。 以下文章已经收录到本人专栏:Elasticsearch从入门到开发之路ElasticSearch使用总结(一):索引的创建ElasticSearch使用总结(二):CRUD操...

2018-04-21 13:08:15 4321

原创 ElasticSearch使用总结(五)

Elasticsearch是一款提供检索以及相关度排序的开源框架,同时,也支持对存储的文档进行复杂的统计——聚合。 ES中的聚合被分为两大类:Metric度量和bucket桶(原谅我英语差,找不到合适的词语…..就用单词来说吧!)。说的通俗点,metric很像SQL中的avg、max、min等方法,而bucket就有点类似group by了。 本篇就简单的介绍一下metric聚合的用法。 m...

2018-04-21 12:31:51 2287

原创 ElasticSearch使用总结(四)

分页查询按照一般的查询流程来说,如果我想查询前10条数据:1 客户端请求发给某个节点 2 节点转发给个个分片,查询每个分片上的前10条 3 结果返回给节点,整合数据,提取前10条 4 返回给请求客户端 那么当我想要查询第10条到第20条的数据该怎么办呢?这个时候就用到分页查询了。from-size”浅”分页” 浅”分页的概念是我自己定义的,可以理解为简单意义上的分页。它的原理...

2018-04-20 22:22:33 2556

原创 ElasticSearch使用总结(三)

高级查询有多好,就是有多么匹配。 全文本查询分为模糊查询,习语匹配,以及多个字段的查询。 模糊查询 习语匹配 多个字段查询 语法查询 结构化数据查询 term查询具体项 范围查询 range范围,gte大于等于,lte小于等于 子条件查询 子条件查询要结合bool,filter就是来做数据过滤的,而且es会对他的数据进行缓存。所...

2018-04-20 16:07:59 2671

原创 ElasticSearch使用总结(二)

可视化工具postman数据的crud操作 新增数据people是索引,man是类型,1是指定的id 可以修改put为post,不指定id,es自动为我们编写id,插入数据 修改文档数据a)直接修改文档数据 b)通过脚本修改 要修改的文本定义在关键词doc后面 es支持多种脚本语音,自带painless,支持js,python等,这里用自带的painless ...

2018-04-19 23:26:35 1913

原创 ElasticSearch使用总结(一)

1.什么是ElasticSearchElasticSearch是一个基于Apache Lucene的分布式多用户能力的全文搜索引擎Elasticsearch是用Java开发的,提供简单易用的RESTful web API。轻松的横向扩展,支持PB级的结构化数据或者非结构化数据处理。 2.索引创建 es是以restful风格来命名自己的api的,动作是以http方法来决定的 创建...

2018-04-11 11:37:29 6228 2

原创 实战Spring Boot租房网(一)

ElasticSearch&&MySql实现站内搜索引擎使用过MySql的开发人员都明白,用MySql做一些搜索的时候,会非常的困难,因为你要写非常复杂的Sql语句,去建立非常复杂的表结构,才能实现搜索引擎,那么为什么还要用MySql呢?这里主要是利用MySql的事物特性做稳定的数据存储,很多时候,我们必须依赖事物特性来保证数据的完整性,这时候我们必须选用一款有事物特性的数据库...

2018-04-11 10:31:58 1525

原创 入门Spring Boot(一)

从今天起,我们使用SpringBoot进行Web开发。1、简介 使用SpringBoot;1)、创建SpringBoot应用,选中我们需要的模块;2)、SpringBoot已经默认将这些场景配置好了,只需要在配置文件中指定少量配置就可以运行起来3)、自己编写业务代码;自动配置原理?这个场景SpringBoot帮我们配置了什么?能不能修改?能修改哪些配置?能不能扩展?xxx...

2018-04-10 14:27:58 2734

原创 初识Spring Boot(六)

1、日志框架   小张要开发一个大型系统,每次为了调试方便他喜欢在控制台打印关键数据,突然有一天,项目开发完了,老板跑过来说,小张,你这代码里System.out.println("")有点多了,你把它去掉好吗?于是有了以下需求。​ 1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件?​ 2、框架来记录系统的一些运行时信息;日志框架 ;  zhangl...

2018-04-10 09:51:05 3261

原创 初识Spring Boot(五)

自动配置原理1)、SpringBoot启动的时候加载主配置类,开启了自动配置功能 ==@EnableAutoConfiguration==@EnableAutoConfiguration 作用:-  利用EnableAutoConfigurationImportSelector给容器中导入一些组件- 导入那些组件可以查看selectImports()方法的内容;- List<String&g...

2018-04-08 19:17:05 2707

原创 初识Spring Boot(四)

Spring Boot配置传统的xml配置文件配置端口号<server> <port>8081</port></server>这种写法,大量的数据都浪费在了标签的开闭上。yaml配置文件配置端口号server:  port: 8081这种写法,非常简洁。k:(空格)v:表示一对键值对(空格必须有);以*空格*的缩进来控制层级关系;只要是左对齐的一列数...

2018-04-08 17:21:24 2517 3

原创 初识SpringBoot(三)

使用Spring Initializer快速创建Spring Boot项目1、IDEA:使用 Spring Initializer快速创建项目IDE都支持使用Spring的项目创建向导快速创建一个Spring Boot项目;选择我们需要的模块;向导会联网创建Spring Boot项目;默认生成的Spring Boot项目;- 主程序已经生成好了,我们只需要我们自己的逻辑、- resources文件...

2018-04-08 09:54:24 2403

原创 初识Spring Boot(二)

01.主入口类/** *  @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用 */@SpringBootApplicationpublic class HelloWorldMainApplication {    public static void main(String[] args) {        // Spring应用启动起来  ...

2018-04-07 18:58:17 3296

原创 Java 异常处理

Java 异常处理异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。异常发生的原因有很多,通常包含以下几大类:用户输...

2018-04-05 09:03:00 2898

转载 MVC的理解

V 是皮肉,是看到的东西M 是骨骼,是里面真实的东西C 就是连接皮肉和骨骼的筋对于界面设计可变性的需求,MVC把交互系统的组成分解成模型、视图、控制三种部件。模型部件是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,他独立于具体的界面表达和I/O操作。视图部件把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对...

2018-04-05 00:44:51 2473

原创 Spring单例模式与线程安全

Spring框架里的bean,或者说组件,获取实例的时候都是默认的单例模式,这是在多线程开发的时候要尤其注意的地方。 单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。当多用户同时请求一个服务时,容器会给每一个请求分配一个线程,这是多个线程会并发执行该请求多对应的业务逻辑(成员方法),此时就要注意了,如果该处理逻辑中有对该单...

2018-04-03 14:17:36 4358

原创 Servlet 单例多线程

Servlet如何处理多个请求访问?Servlet容器默认是采用单实例多线程的方式处理多个请求的:1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在一个Servlet实例);2.容器初始化化Servlet主要就是读取配置文件(例如tomcat,可以通过servlet.xml的<Connector>设置线程池中线程数目,初始化线程池...

2018-04-03 13:53:16 5185

原创 JSP 9 大内置对象详解

内置对象特点:1.            由JSP规范提供,不用编写者实例化。2.            通过Web容器实现和管理3.            所有JSP页面均可使用4.            只有在脚本元素的表达式或代码段中才可使用(<%=使用内置对象%>或<%使用内置对象%>) 常用内置对象:1.            输出输入对象:request对象、r...

2018-04-03 13:39:56 5919

原创 Java虚拟机面试总结

1.JVM内存分哪几个区,每个区的作用是什么?java虚拟机主要分为以下一个区:方法区:1. 有时候也成为永久代,在该区内很少发生垃圾回收,但是并不代表不发生GC,在这里进行的GC主要是对方法区里的常量池和对类型的卸载2. 方法区主要用来存储已被虚拟机加载的类的信息、常量、静态变量和即时编译器编译后的代码等数据。3. 该区域是被线程共享的。4. 方法区里有一个运行时常量池,用于存放静态编译产生的字...

2018-04-02 12:30:20 5542 1

原创 分布式Session面试总结

分布式Session的几种实现方式Java主要面向Web端,因此Web的一些问题也是必问的。面试过程中问到的·热点问题之一就是:分布式Session如何实现。1.基于数据库的Session共享2.基于NFS共享文件系统3.基于memcached 的session,如何保证 memcached 本身的高可用性?4. 基于resin/tomcat web容器本身的session复制机制5. 基于TT/...

2018-04-02 11:50:24 6825

腾讯公司面试题库

javaee开发必备面试题库。 你可以把这些内容写到你的简历中,当然更需要的是你在面试的时候向面试官展示这些专业技能。相信此文对正在寻觅Java程序员(Java工程师)职位的freshman以及希望成为中高级Java开发者的junior都会有所帮助。

2018-02-27

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除