- 博客(28)
- 资源 (1)
- 收藏
- 关注
原创 Spring Boot与logback总结
我们都知道,Spring Boot默认是用logback做为日志系统,同时在logback的基础之上增加了很多Spring特色的feature。在这里将结合实际使用系统地总结一下Spring Boot与logback间千丝万缕的联系。一、默认配置同其他Spring Boot支持的组件一样,Spring Boot支持对日志在application.yml或bootstrap.yml进行配置。这里推荐...
2018-03-23 16:46:22
2703
1
原创 Spring Cloud Feign绑定枚举类型参数
在之前的文章《Spring Boot绑定枚举类型参数》中,我们讨论了Spring中的Converter和ConverterFactory,以及如何与Spring Boot整合以使得WebMVC能够接收枚举类型的参数。现在Spring Cloud已经逐渐流行了起来,其中最流行的要数Spring Cloud Netflix系列了。Netflix有个很重要的服务治理中间件Eureka,Feign...
2018-02-28 12:23:23
8344
5
原创 巧用Reflections库实现包扫描(扫描某个包中某个接口实现、注解等)
许久不更新博客了。最近在做项目时遇到了一个需要扫描某个包中的某个接口的实现类的需求,在网上搜了一下,发现了一些还不错的实现,但是有句话说得好:“不要重复发明轮子。”像这样的需求肯定是有很多现成的解决方案的。在github和stackoverflow上找了之后发现Reflections库可以完美地实现上述需求,现分享给大家。Reflections库的依赖:Gradle:compile
2018-01-11 16:44:32
14781
6
原创 一种相对优雅的Spring下logback多profile配置解决方案
上篇文章(http://blog.youkuaiyun.com/u014527058/article/details/76682378)介绍了一种Spring下的logback多profile配置方案,但是这种方法过于粗暴,由于是直接拉取JVM参数获得当前profile的值,而在激活profile时,JVM却只是其中一种方式,假如profile是使用其他方法配置的,这样做就行不通了。擅长刨根问底的我自然是很不
2017-08-07 13:07:11
13559
1
原创 一种Spring下的logback多profile配置的暴力流解决方案
我们知道,logback是Spring Boot自带的日志库,可以说Spring Boot对logback有着非常完美的支持,而且logback可以在Spring Boot通过配置不同的profile来满足不同环境下日志输出的需求。然而,假如我们并没有使用Spring Boot,只是用Spring与logback集成,该如何实现多profile支持呢?首先,我们需要依赖包支持。(gradle环
2017-08-04 14:55:07
5113
2
原创 HikariCP的编码设置
HikariCP可以说是目前速度最快的数据源了。然而该数据源不像之前的数据源(如Druid或者C3P0)那样默认无需设置编码,因此需要额外针对编码做一些设置,否则就会出现乱码问题。方法一:在对数据源进行初始化时进行设置。清单1.传统方式初始化数据源HikariDataSource dataSource = new HikariDataSource();dataSource.setDr
2017-08-03 11:50:45
2161
原创 Spring+MyBatis纯注解零XML整合
不得不说,利用XML作为配置文件是一个非常好的想法,它可以轻松地实现配置集中化,而且修改之后无需再次编译。然而,由于大多数情况下开发者基本都会拿到程序的源码,加之对于各种XML配置文件一般情况下也只有开发者会去动,可以说XML在一定程度上也相当于程序代码,只是不用编译而已。因此很多人并不是很喜欢XML这种东西。早在Spring 2.5之前就有很多人对满天飞的XML配置叫苦不迭。从Spring 3开
2017-07-25 21:28:33
8687
1
原创 Logstash通过TCP获取log4j日志
Logstash的Input中有一个tcp插件,可以通过监听某一个主机上的特定端口来获取日志。大部分的日志库(logback,log4j,commons-logging乃至java自带的java.util.Logging)都支持将日志通过Socket方式输出。对于log4j,可以通过SocketAppender来实现将日志以Socket方式输出。但是这样会有一个问题,log4j的SocketA
2017-06-12 16:34:22
10418
1
原创 Spring Boot与Logstash整合
ELK可以说是当前对分布式服务器集群日志做汇总、分析、统计和检索操作的很好的一套系统了。而Spring Boot作为一套为微服务而生的框架,自然也免不了处理分布式日志的问题,通过ELK日志系统来处理日志还是很有意义的。在这套系统中,E即为ElasticSearch,负责日志存储;L为LogStash,负责日志收集,并将日志信息写入ElasticSearch,K则为Kibana,负责将Elastic
2017-04-23 14:17:47
27633
5
原创 Spring Boot绑定枚举类型参数
一、概述在利用Spring进行Web后台开发时,经常会遇到枚举类型的绑定问题。一般情况下,如果Spring接收到的参数值为字符串类型,Spring会根据枚举的值与传入的字符串进行对应。假设有如下枚举public enum Gender { MALE, FEMALE;}那么,只要客户端在发送请求时,将参数的值设为MALE或FEMALE即可。请求类似如下形式:http://loca
2017-03-17 15:25:03
51923
12
原创 solr排序过滤score过低的结果
在solr搜索中,我们免不了要将搜索的结果按照一定的规则排序。然而,在排序的过程中我们经常会用到Analyzer,这会使得排序的结果中出现相关度并不高的结果,特别是可能会出现排名靠前然而相关度并不高,甚至风马牛不相及的结果,实在是蛋疼无比,大大降低用户体验。那么有什么办法可以在排序时过滤掉这些结果呢?我们知道,在排序的时候,我们可以在sort参数中利用score这个属性来根据每条记录的
2017-02-10 15:44:55
6839
2
原创 solr5使用suggest模块实现搜索联想
一、概述Solr从1.4开始便提供了检查建议,检索建议目前是各大搜索的标配应用,主要作用是避免用户输入错误的搜索词,同时将用户引导到相应的关键词搜索上。通常,我们将其称为搜索联想。其效果如图所示。在Solr中,实现该功能的模块叫做suggest。二、solr配置首先,加上用以联想的字段,这里假设我们对name字段进行联想,配置如下(managed-schema文件):
2017-02-08 11:42:29
5441
1
转载 solr的原子更新/局部更新
solr支持三种类型的原子更新:set - to set a field.add - to add to a multi-valued field.inc - to increment a field.其中set可以是单值的也可以是multifiled, add 针对multi-field ,inc 对应数值类型 使用solrj进行原子更新 Stri
2016-12-11 15:41:38
3360
原创 Spring MVC无法接收PUT类请求参数的解决方案
在REST请求中,可能会用到PUT类请求用来处理幂等类的更新,但是Spring MVC默认是无法解析PUT请求的参数的,拿到的参数值全部是null。那么如何令Spring MVC能够解析PUT请求的参数呢?方案一:直接把参数放在URL中。Spring MVC是可以解析把参数放在URL的PUT请求的,但是通常情况下,PUT请求都会把内容放在body中,这样做的感觉很奇怪,而且不符合标准,不推荐使
2016-11-09 14:32:31
3947
转载 什么是工程师文化?
(转自CoolShell.cn,作者:陈皓)四年前,我在QCon上演讲了一个《建一支强大的小团队》(整理后的PPT分享于这里)提到了工程师文化,今天,我想在这里再写一篇关于工程师文化的文章,一方面是因为我又有了一些想法和体会,另一方面,因为我也正走在创业的道路,毫无疑问,要建一个有浓重的工程师文化的团队或公司,所以有必要把自己的相关想法形有成白底黑字的“字据”,以供打自己的脸——“要是未来
2016-10-24 14:40:41
661
原创 浅谈在Java开发中的枚举的作用和用法
枚举(enum),是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。Java从JDK5开始,引入了对枚举的支持。在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量。例如:package com.fhp.enume
2016-10-07 20:02:40
70986
37
原创 Java加解密——Base64与DES
一、BASE64这里选用Java自带的BASE64Encoder和BASE64Decoder进行BASE64编码,除此之外,可以选择commons-codec.jar等第三方jar包进行实现。BASE64Encoder和BASE64Decoder为实现BASE64的API,为了解决高并发问题,提高运行效率,本例将encoder和decoder作为全局静态属性,并通过ThreadLocal进
2016-08-25 11:33:36
1264
原创 Java中的instanceof,isInstance和isAssignableFrom
在Java中,这三个方式都是作为类型判断用的,但是这三个东西各有千秋,非常容易引起混淆,下面总结一下这三个方式的异同点,并通过具体示例说明。 instanceofisInstanceisAssignableFrom表现形式关键字方法方法使用方法obj instanceof TypeClass.isInstanc
2016-04-25 15:50:39
1112
原创 Java多线程——java.util.concurrent库中的CyclicBarrier和CountDownLatch工具
在Java的并发库中,有两个并不是经常使用但却非常好用的线程同步工具,分别为CyclicBarrier和CountDownLatch。下面分别对这两个工具进行介绍:CyclicBarrierCyclicBarrier允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrie...
2016-04-14 15:28:21
460
原创 Spring MVC让Web容器启动时自动执行代码
在web.xml中,对于每一个servlet都有一个load-on-startup属性,其值为一个整数。若该值为0或正整数,则当Web容器启动时,该servlet会自动加载,并调用其中的init()方法,整数值越小,加载的优先级越高;若值为负数或未指定,则该servlet只有被选择时才会被加载。因此,可以考虑通过Servlet进行实现。并配置web.xml文件,令应用容器在启动时就自动加载
2016-04-12 16:53:09
6490
转载 Java多线程——EXECUTORSERVICE线程池讲解(主要是四种自带线程池的区别)
ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者int
2016-04-05 19:49:12
1898
原创 Java多线程——寺庙问题
问题简述:某寺庙有老和尚、小和尚若干。庙内有一水缸,由小和尚提水入缸,供老和尚饮用。水缸可容纳30桶水,每次入水、取水仅为一桶,不可同时进行。水取自同一井中,井口狭窄,每次只能容纳一个水桶取水。设有5只水桶,老和尚与小和尚共用。通过Java给出老和尚和小和尚的活动。代码实现:采用Java的synchronized关键字和线程池技术来进行实现。
2016-03-29 17:02:56
750
原创 如何让Maven生成JAR包时打包资源文件
针对maven不打包资源文件的解决方案,通过修改maven项目的pom.xml文件下的build节点解决。
2016-03-17 14:44:23
9143
原创 让Maven项目使用Nexus作为远程仓库的settings.xml配置
让maven项目使用nexus作为远程仓库有两种方式,第一种是在项目的pom.xml中进行更改,让单个项目使用nexus仓库;另一种是通过修改maven的配置文件settings.xml进行更改,让所有项目都使用nexus仓库。一、修改settings.xml文件进入maven安装目录的conf文件夹打开,修改settings.xml文件。1.服务器
2016-03-16 16:38:55
23347
原创 Ubuntu系统下Nexus安装
1.下载nexus:http://www.sonatype.org/nexus/go可选择下载tgz包或者zip包,这里选择tgz包。2.将下载包解压tar -zxvf nexus-2.12.1-01-bundle.tar.gz3.移动压缩包sudo mv nexus-2.12.1-01 /usr/local/nexus4.配置vim /usr/local/nexus/
2016-03-15 14:55:46
3104
转载 千万不要把 bool 当成函数参数
作者:陈皓 | 来自:酷壳 - CoolShell.cn我们有很多Coding Style 或 代码规范。但这一条可能会经常被我们所遗忘,就是我们经常会在函数的参数里使用bool参数,这会大大地降低代码的可读性。不信?我们先来看看下面的代码。当你读到下面的代码,你会觉得这个代码是什么意思?widget->repaint(false);是不要repaint吗?还是别的
2016-03-08 09:33:55
2233
转载 java.util.Collections方法大全
字段摘要static ListEMPTY_LIST 空的列表(不可变的)。static MapEMPTY_MAP 空的映射(不可变的)。static SetEMPTY_SET 空的 set(不可变的)。方法摘要static
2016-03-07 16:43:13
2149
原创 Apache POI读写Excel文档入门(支持XLS和XLSX格式)
Apache POI是可用于Java程序,用于对Microsoft Office文档进行读写的API。本文通过一个简单的小例子,简要介绍通过Apache POI对Excel文档进行读写的方法。
2016-03-07 12:31:24
10782
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人