
Java
Jicky-17
这个作者很懒,什么都没留下…
展开
-
Java多线程——寺庙问题
问题简述:某寺庙有老和尚、小和尚若干。庙内有一水缸,由小和尚提水入缸,供老和尚饮用。水缸可容纳30桶水,每次入水、取水仅为一桶,不可同时进行。水取自同一井中,井口狭窄,每次只能容纳一个水桶取水。设有5只水桶,老和尚与小和尚共用。通过Java给出老和尚和小和尚的活动。代码实现:采用Java的synchronized关键字和线程池技术来进行实现。原创 2016-03-29 17:02:56 · 750 阅读 · 0 评论 -
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 · 8348 阅读 · 5 评论 -
Java多线程——java.util.concurrent库中的CyclicBarrier和CountDownLatch工具
在Java的并发库中,有两个并不是经常使用但却非常好用的线程同步工具,分别为CyclicBarrier和CountDownLatch。下面分别对这两个工具进行介绍:CyclicBarrierCyclicBarrier允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrie...原创 2016-04-14 15:28:21 · 460 阅读 · 0 评论 -
浅谈在Java开发中的枚举的作用和用法
枚举(enum),是指一个经过排序的、被打包成一个单一实体的项列表。一个枚举的实例可以使用枚举项列表中任意单一项的值。枚举在各个语言当中都有着广泛的应用,通常用来表示诸如颜色、方式、类别、状态等等数目有限、形式离散、表达又极为明确的量。Java从JDK5开始,引入了对枚举的支持。在枚举出现之前,如果想要表示一组特定的离散值,往往使用一些常量。例如:package com.fhp.enume原创 2016-10-07 20:02:40 · 70992 阅读 · 37 评论 -
Spring+MyBatis纯注解零XML整合
不得不说,利用XML作为配置文件是一个非常好的想法,它可以轻松地实现配置集中化,而且修改之后无需再次编译。然而,由于大多数情况下开发者基本都会拿到程序的源码,加之对于各种XML配置文件一般情况下也只有开发者会去动,可以说XML在一定程度上也相当于程序代码,只是不用编译而已。因此很多人并不是很喜欢XML这种东西。早在Spring 2.5之前就有很多人对满天飞的XML配置叫苦不迭。从Spring 3开原创 2017-07-25 21:28:33 · 8687 阅读 · 3 评论 -
巧用Reflections库实现包扫描(扫描某个包中某个接口实现、注解等)
许久不更新博客了。最近在做项目时遇到了一个需要扫描某个包中的某个接口的实现类的需求,在网上搜了一下,发现了一些还不错的实现,但是有句话说得好:“不要重复发明轮子。”像这样的需求肯定是有很多现成的解决方案的。在github和stackoverflow上找了之后发现Reflections库可以完美地实现上述需求,现分享给大家。Reflections库的依赖:Gradle:compile原创 2018-01-11 16:44:32 · 14784 阅读 · 10 评论 -
一种相对优雅的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 · 13564 阅读 · 2 评论 -
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 · 10421 阅读 · 4 评论 -
Spring Boot与Logstash整合
ELK可以说是当前对分布式服务器集群日志做汇总、分析、统计和检索操作的很好的一套系统了。而Spring Boot作为一套为微服务而生的框架,自然也免不了处理分布式日志的问题,通过ELK日志系统来处理日志还是很有意义的。在这套系统中,E即为ElasticSearch,负责日志存储;L为LogStash,负责日志收集,并将日志信息写入ElasticSearch,K则为Kibana,负责将Elastic原创 2017-04-23 14:17:47 · 27634 阅读 · 5 评论 -
solr排序过滤score过低的结果
在solr搜索中,我们免不了要将搜索的结果按照一定的规则排序。然而,在排序的过程中我们经常会用到Analyzer,这会使得排序的结果中出现相关度并不高的结果,特别是可能会出现排名靠前然而相关度并不高,甚至风马牛不相及的结果,实在是蛋疼无比,大大降低用户体验。那么有什么办法可以在排序时过滤掉这些结果呢?我们知道,在排序的时候,我们可以在sort参数中利用score这个属性来根据每条记录的原创 2017-02-10 15:44:55 · 6841 阅读 · 2 评论 -
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 · 1265 阅读 · 0 评论 -
Java中的instanceof,isInstance和isAssignableFrom
在Java中,这三个方式都是作为类型判断用的,但是这三个东西各有千秋,非常容易引起混淆,下面总结一下这三个方式的异同点,并通过具体示例说明。 instanceofisInstanceisAssignableFrom表现形式关键字方法方法使用方法obj instanceof TypeClass.isInstanc原创 2016-04-25 15:50:39 · 1114 阅读 · 0 评论 -
Java多线程——EXECUTORSERVICE线程池讲解(主要是四种自带线程池的区别)
ExecutorService 建立多线程的步骤:1。定义线程类class Handler implements Runnable{}2。建立ExecutorService线程池ExecutorService executorService = Executors.newCachedThreadPool();或者int转载 2016-04-05 19:49:12 · 1902 阅读 · 0 评论 -
java.util.Collections方法大全
字段摘要static ListEMPTY_LIST 空的列表(不可变的)。static MapEMPTY_MAP 空的映射(不可变的)。static SetEMPTY_SET 空的 set(不可变的)。方法摘要static转载 2016-03-07 16:43:13 · 2149 阅读 · 0 评论 -
Apache POI读写Excel文档入门(支持XLS和XLSX格式)
Apache POI是可用于Java程序,用于对Microsoft Office文档进行读写的API。本文通过一个简单的小例子,简要介绍通过Apache POI对Excel文档进行读写的方法。原创 2016-03-07 12:31:24 · 10790 阅读 · 0 评论 -
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 · 2705 阅读 · 1 评论