自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

RelFly的博客

RelFly的博客

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

原创 并发容器简述

在前不久的开发工作中接触到了并发容器中的cow并发容器,所以这里就并发容器做一个简单的总结。首先,并发容器按实现原理分为以下几种:1.copy-on-write,在需要往集合中添加元素时,首先复制一个新的集合对象,添加操作在新的集合对象上进行。在操作完成后,将原集合对象指向新的集合对象。即添加时复制。主要的类有:CopyOnWriteArrayList,CopyOnWriteArraySe...

2018-10-15 19:10:18 201 1

原创 问题总结···图片增加水印的方法

最近由于业务上的需求,需要动态的在图片模板上加上用户的姓名和日期等信息。 在一番搜索后找到了如下方法,记录一下。/** * 为图片增加水印 * * @param srcImgFile 源图片 * @param imageFile 保存的图片 * @param contentList 水印参数 * @throws IOExcep...

2018-09-04 12:36:36 777

原创 Java常用集合简析

在Java中常用到的集合如ArrayList,HashMap等,本文针对这些集合做一个简单的总结和分析。ArrayLIst:基于动态数组的集合,初始大小为10,如果添加元素时长度不够就会扩容。因为是基于数组,所以查询及顺序插入快。而指定位置的插入删除和修改则较慢,且线程不安全。 扩容代码:private void grow(int minCapacity) { // ...

2018-07-21 13:29:23 211

原创 spring boot学习记录2---springboot启动类浅析

上一节介绍了spring boot工程的新建和启动,这一节主要来看看spring boot的启动类和pom的相关配置。 首先,看一下启动类的代码:package com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigur...

2018-06-30 19:00:14 496

原创 spring boot学习记录1---新建

spring boot相比springMVC简单方便了很多,省去了很多配置工作。所以,开始学习一下这个使用起来据说很爽的框架。 首先是新建工程,spring boot的创建可以选择在这上面完成:http://start.spring.io/ 当选择所需配置后点创建工程,然后将下载的压缩包解压,将工程导入到自己的工作空间就行了。这里我选择的是maven工程,boot版本为1.5。 如果所用...

2018-06-09 15:11:01 203

原创 使用RestTemplate发起Http请求

这里主要记录一下get请求和post请求的使用。 首先,看一下啊RestTemplate的源码方法: 可以看到两种请求得方法大同小异。XXForEntity返回的是ResponseEntity类型的数据,其中包含了头信息和返回内容。而XXForObject返回的是约定好的一个类型,其中只有返回的内容信息。 postForLocation返回了一个URI对象,这个指的是新资源的地址。 下...

2018-06-04 20:06:08 895

原创 solr学习日记···函数查询

solr在搜索中还提供了很多的函数辅助查询。 solr的几种查询解析器都支持函数查询。(标准查询解析器,DisMax查询解析器,eDisMax查询解析器) 函数查询中的函数可以是常量(数值或字符串文字)、字段、另一个函数。这些函数可以用来修改用户的结果排序。 下面介绍一下函数在solr查询中使用方法: 1.在QParser中通过func,frange调用。 2.在sort参数中使用。 ...

2018-03-22 15:15:08 236

原创 solr学习日记···搜索-Query Parser(查询解析器)

前面提到,solr的查询请求在经过查询请求处理器后会经由查询解析器解析解释查询的术语和参数。这一节就来介绍一下查询解析器支持的通用查询参数和常用的查询解析器。 通用查询参数: defType:指定处理的查询解析器。如果没有指定则默认由标准查询解析器处理。 sort:指定结果集排序。如果不指定,默认按照score desc排序,也就是solr评分的倒序排序。(score为solr的默认的字...

2018-03-09 16:37:33 828

原创 solr学习日记···搜索-searchComponent(搜索组件)

在介绍solr处理搜索请求的过程时,有说到用户的请求是先由请求处理器处理后再由查询解析器接手处理。而在请求处理器中其实还有一个——搜索组件。 搜索组件是在搜索处理器的生命周期内发生的可配置的处理步骤。搜索组件能够让搜索处理器实现在一次搜索请求中实现多个搜索功能。比如高亮,面搜索等。 下面就介绍一下相关的配置 1.自定义组件:<searchComponent name="que...

2018-03-05 16:39:21 1131

原创 solr学习日记···搜索-Request Handler

上一章大致介绍了一下solr的搜索请求处理过程。这一章就先详细介绍一下Request Handler(请求处理器)。 请求处理器作为solr基本上所有的请求入口,它的作用是接受请求并做出相应的处理。除了上一节提到的搜索请求,其实solr提供了其它各种各样的请求处理器。其中除了默认的搜索处理器SearchHandler,还有处理索引更新请求的UpdateRequestHandler。 下面就从几...

2018-03-02 16:14:21 1147

原创 solr学习日记···搜索相关

在介绍了solr的索引和文本分析的内容后,接着就是solr的核心内容–搜索。 solr执行搜索的过程是怎样的?基于怎样的规则搜索?如何处理搜索结果等等。 下面就简单介绍一下solr搜索相关的一些内容。 solr执行搜索的过程(图片取自官网): Request Handler(请求处理器)作为solr的请求入口,用户的搜索请求会发送到Request Hanlder处理。 Query P...

2018-02-24 14:51:47 217

原创 问题总结···js浮点小数计算问题

今天改代码时有一处需要将整数型换成小数型。但在js中计算显示的时候发现结果的小数位数多了很多。例如1.3*3=3.90000001···类似这样的。 记得有个方法可以设置小数位数的,但记得不太清,所以把搜素的结果记录一下方便以后查看: toFixed(n) n表示要保留的小数位数。 在搜索的过程中意外还发现一种思路,感觉比较直接。就是先把小数换乘以十的倍数变成整数,然后结果再除以相应的10

2018-01-16 11:50:54 741

原创 问题总结···ajaxSubmit的data属性

在修改一处代码的时候发现了让我疑惑的地方。ajaxSubmit的data用的自定义的对象,但在执行的时候发送的参数自动包含了表单的数据。 其实这里可以理解,因为ajaxSubmit本来就是用来提交表单的。但我对这个data属性的含义有点疑惑。 经过一番百度查找,这个data的解释如下: 在表单提交时附加额外的数据 也就是说在提交的参数中加上表单之外的一些数据。那么这里又有了新的疑问,如果我添

2018-01-11 17:03:33 3312

原创 solr学习日记···文本分析-相关类梳理

solr文本分析的相关内容涉及到了许多类,这一节就来梳理一下这些类的关系,相信会对理解文本分析的配置有些帮助。首先是工厂相关类: 至于具体的工厂类就不一一列举了,它们都在包org.apache.lucene.analysis.util中。可以点击这里查看其它的方法和具体介绍。然后工厂产生的实例类: tokenizer产生的实例和filter产生的实例实际上都是token流,实际上文本分析

2018-01-10 17:31:29 196

原创 问题总结···java clone

在看solr源码的时候看到一段使用clone的代码,一时想不起来clone的相关内容。所以这里做一个记录总结。 首先,clone的作用是对复制一个对象的内容,复制的新对象相对于原对象独立。对新对象的修改理论上不会影响原对象。 然后是clone的使用方法,需要先实现Cloneable接口,相当于取得使用clone的权限。然后根据自己的需求重写clone方法就行了。 clone的使用方法比较简单

2018-01-09 17:13:04 241

原创 solr学习日记···文本分析-charfilter

前面已经介绍了tokenizer和filter。tokenizer用来产生token流,而filter负责对token流进行过滤。除了这两个外,其实还有一个charfilter。它的作用是在tokenizer之前对文本进行预处理。而且charfilter可以如同filter一样多个连接使用。 solr定义好的charfilter如下: 下面来简单介绍一下这几个charfilter: Map

2018-01-04 11:28:29 694

原创 solr学习日记···文本分析-filter

上一节简单介绍了一下tokenizer,那么接下来来了解一下filter。 tokenizer按照自定义的规则分解文本产生了token流,而filter就是对token流进行进一步的过滤,针对token流中的每一个token顺序检验,符合的保留,不符合的丢弃,然后生成新的token流。所以我们可以将多个filter连接起来使用,对token进行多重过滤。不过要注意filter的连接顺序,一般来说会

2018-01-03 16:30:26 226

原创 solr学习日记···文本分析-tokenizer

上一节配置文本分析的时候谈到了和两个标签,现在先就标签详细介绍一下。 在solr中定义了一些继承了TokenizerFactory的子类,它们就是中class属性填的值。这些子类的功能是将获得的文本,如建立索引时的字段文本或查询时的关键字文本按照各自定义的规则分解为一个token流。其中的每个token通常是原始文本的子序列。 我们可以去官方文档中看一下TokenizerFactory的介绍:

2018-01-02 16:19:51 467

原创 solr学习日记···文本分析-analyzer

solr中文本分析是很重要的一环,它发生在创建索引和搜索两个阶段。 在创建索引时,当一个字段被创建时,来自分析结果的令牌流被添加到索引中,并为该字段定义一组术语(包括位置、大小等)。 在查询时,对搜索的值进行分析,结果与存储在字段索引中的值相匹配。 文本分析的配置同样在schema配置文件中完成,它的元素标签为,属于元素的子元素。下面是它的一个普通例子:fieldTy

2017-12-28 15:59:36 288

原创 solr学习日记···索引更新

前面说到了索引的新增和schema配置文件对字段的配置。现在来了解一下索引的管理。例如,我们需要更新一下某个文档某个字段值的时候应该怎么做。 首先列举一下solr更新处理器的常见请求: 1.添加:向索引添加一个或多个文档<add> <doc> <field name="**">**</field> </doc> <doc> ````````

2017-12-26 15:35:39 2231

原创 solr学习日记···schema配置文件介绍

上一节索引中提到了字段需要在schema配置文件中进行声明配置(在5.5.5版本中,schema配置文件的名字默认为managed-schema)。本节就简单介绍schema配置文件元素信息和配置信息。 首先,在schema配置文件中有如下几种同级元素:<fields></fields>// 字段元素<types></types>// 字段类型<uniqueKey></uniqueKey>//

2017-12-16 19:06:59 605

原创 solr学习日记···索引

在solr的搜索机制中,建立索引是一个很重要的过程。过程如下: 1.将原始数据转化成solr可接受的文档:<add> <doc> <field name="id">777</field> <field name="name">MA147LL/A</field> </doc></add>add标签是向solr表示这是一个新添的文档,doc标签表示一个文档,一次可添加多个文档

2017-12-12 17:35:32 185

原创 solr学习日记···简单介绍

资料来源:《solr实战》(该书使用版本为4.7,仅有参考价值),官方文档 solr是一个构建在Lucene上的文档存储和搜索引擎,它的主要作用是针对数据的快速且精确的检索。需要掌握了解的知识点包括:内核管理,三个配置文件,索引管理,文本分析,请求处理器,搜索组件,查询解析器,分面查询,高亮显示,拼写检查及查询建议和结果分组等。 它的的下载地址:http://mirror.bit.edu.cn...

2017-12-12 10:43:02 198

原创 问题总结···整型包装类的大小比较问题

今天在项目中遇到一个问题,将两个Long类型的对象用==比较,结果一样的值返回false。后来才反应过来,感觉这是个容易忽略的问题,所以总结一下。 像Long,Integer等都是基本类型的包装类,他们既是一个对象,但又有些特殊。 首先==比较两个对象比较的是他们本身的值,也就是指向的内存地址。所以一般情况下包装类不要用==比较大小。 但是呢前面也说了,包装类和一般对象有点不同。 例如两个I

2017-11-30 10:56:56 1160

原创 从零开始···AMQ主题模式实现

上一章实现了点对点的消息模式,接下来试着实现一下主题模式。 两者代码大致相同,但却让我纠结了好久才成功。 首先要理解一下主题模式的概念: 同样是发布者和消费者,这里发布者将消息发布到一个主题下,这时,订阅了这个主题的消费者就能接收到发布的消息。 简单来说,就像是订阅杂志,从你订阅杂志开始,你就能收到接下来出的杂志,但你肯定收不到之前已经发布的杂志。 这是与队列不同的地方,队列类似把消息放到

2017-11-21 18:55:11 609

原创 从零开始···AMQ测试

想了解一下消息队列的使用,因为AMQ是使用较多的一个,所以就以AMQ为对象了解学习。 首先是去官网下载,这里要注意AMQ依赖的Java版本不一样。像我一开始下载的最新的5.15版本,但是依赖的Java版本是1.8,而测试的机器使用的是1.7。无奈在查询后又重新下载了5.14版本使用。 下载之后解压,进入bin目录下,如图: 点击win64下的activemq.bat脚本启动AMQ服务。

2017-11-21 16:04:40 1331

原创 从零开始···require.js加载css文件插件require-css

require.js因为默认加载的文件都是js文件,所以如果要加载css文件的话就得借助插件了。 这里搜索了一下,发现require-css这个插件用的最多,所以随大流看一下这个插件怎么用。 首先当然下载js文件,这个可以去github搜索项目地址下载。 将js文件放入工程目录后,接下来就是敲代码了。require.config( { paths: {

2017-11-03 22:26:55 8828

原创 从零开始···require.js

之前接触过模块化的js编程,搜索了一下,找到了require.js。 require.js简单来说就是一个js模块化加载的工具。它改变了对JS文件的加载方式,不再需要一大堆的<script></script> 也不需要再考虑JS加载的先后顺序等问题。而是使用require()的方法导入需要使用到的js文件。 下面就来试一试: 首先是下载require.js,将其放在js文件夹下,然后就是在js

2017-11-01 17:52:30 156

原创 从零开始···mybatis配置扫描补充

在配置mybatis,建了一个mapper包的接口与xml关联。这样一来发现dao层的类有点多余。想把dao层中类改为接口与xml关联,删除那个mapper包。 但在修改后发现出现了mybatis绑定的异常,就是dao层的接口与xml关联失败。经过反复实验发现是配置文件扫描设置的问题。 我开始的配置方式如图: 使用< mybatis: scan base-package=····/>配置扫

2017-10-25 22:17:30 2090

原创 从零开始···spring整合redis配置

想在spring中整合redis,首先是下载安装redis。 redis官方版本是linux环境下的,但是有一个微软维护的版本是适用于windows环境的。可以去github上下载:https://github.com/MicrosoftArchive/redis 下载压缩包后解压,然后在dos命令窗口中,在解压目录下键入redis-server.exe就可以启动redis 另启一个窗口,

2017-10-23 22:49:23 9882

原创 从零开始···druid+log4j基本配置

在配置mybatis时用到了druid这个数据连接池,后来通过了解,它还提供了其它的一些功能,其中就包括日志的配置。 druid+log4j的基本配置如下: 1.首先是导入依赖包: <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId>

2017-10-17 15:14:56 2410

原创 从零开始···整合mybatis

接下来是整合mybatis到工程中。 首先是导入需要的jar包:<dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.10.RELEASE</version></dependency> <!-- mysql --><de

2017-10-14 10:14:14 182

原创 从零开始···mysql的安装配置

工程的数据库当然是选择mysql,那么接下来记录一下mysql的安装配置。 首先mysql的版本当然是选择免费的社区版: 这里下载时需要登陆,第一次的话还要填一些下拉框,具体的就不详细记录了。 注意这里下载的是压缩包,所以解压之后还要进行一系列操作:配置文件: 首先在解压文件夹下自己建立一个.ini的配置文件 这是我操作完成后的文件目录,刚解压的时候是没有my.ini

2017-10-06 14:26:18 290

原创 从零开始···springMVC基本配置(很糙)

springMVC是现在使用比较广泛的框架,所以我也选择使用springMVC。这里记录一下它的基本配置。 一般springMVC的配置的地方有三个,一个是web.xml文件里,一个是自己建的spring-servlet.xml,最后一个也是自己建的application-spring.xml。后面两个文件的位置在web.xml中配置,名字可以修改。 web.xml配置详情: 可以看到这里

2017-09-28 16:52:29 190

原创 从零开始···修改maven本地库的位置

在配置pom.xml的依赖jar包时发现jar包默认下载在C盘的user/.m2/repository文件目录下。怎么修改maven的默认下载位置? 方法如下: 1.在官网上下载最新版本的maven 2.找到conf下的settings.xml文件 3.首先在任意位置新建一个repository文件,然后打开settings.xml修改localRepository属性为你创建文件的路径

2017-09-20 14:21:43 932

原创 从零开始···将工程上传到github

工程创建完之后,下一步是将工程上传到github方便进行管理。 方法如下: 1.登陆github网站,新建一个repository。 2.复制库的地址 3.在eclipse上复制这个库 4.右键工程名,在菜单中找到Team->share project,点开后 在Repository的下拉选项中会发现你复制的那个库,选择它,然后finish 5.在eclipse的git

2017-09-19 15:11:03 312

原创 从零开始···maven创建web项目

新建maven工程 1.File菜单项->new mavenproject 2.出现对话框 因为建的是web工程,这里注意要选择webapp GroupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。 ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。最后确认无误finish就行了新建的工程目录如下: 这

2017-09-19 11:21:52 329

魔客软件-原型设计

魔客软件,用于网页设计或移动开发的原型设计。操作简单,界面友好

2015-03-25

空空如也

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

TA关注的人

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