Java
54powerman
Program Only
展开
-
Java 11 新特性
java 11 是继 java8 之后的第一个LTS版本。因此有必要针对它进行一些深入的学习,虽然短时间内java8 还是主流版本。当然,如果从java8基础上升级,几乎可以确定目标就是java11。同时也要明确一个问题,现在java的版本升级周期与前些年相比速度快了太多,对于应用开发者来说没必要每一个小版本都去花时间研究,比如这些过渡版本:java9、java10、java12、java13(...原创 2019-10-21 10:46:31 · 1766 阅读 · 1 评论 -
lambda方法引用总结——烧脑吃透
lambda是java8的新特性,基本使用比较容易理解,但有一个环节遇到了坎儿,那就是方法引用,尤其是类的实例方法引用,烧脑之后总结一下。在需要函数参数的方法中,我们可以把另一个同类型的方法直接传入,这称为方法引用的绑定。类似于C语言中的函数指针。lambda表达式可以替代方法引用;或者说方法引用是lambda的一种特例,方法引用不可以控制传递参数。4.1) 构造器引用private Person原创 2017-06-08 15:49:37 · 8057 阅读 · 5 评论 -
lombok系列3:lombok的实验类特性
lombok除了已经推荐使用的基本功能,还维护了一个创新型的注解,有些功能有违常规对java认知,或者只支持eclipse,其他IDE支持有问题,甚至某些环境完全不可用。因此没有正式使用。但是的确很有创意,这些注解已经在jar中提供,只不过它是归在”lombok.experimental.” 包中;而基本功能在”lombok.” 包中。@Accessors定制流畅的访问器。@Accessors(ch原创 2017-05-19 09:18:55 · 7033 阅读 · 3 评论 -
lombok系列2:lombok注解详解
开篇看到第一篇《初识lombok》你可能意犹未尽,本文我们按照场景来介绍一下常用的注解。未特别说明,均标注在类级别。lombok.Data最常用的注解,编译时自动添加Setter、Getter、toString()、equals()和hashCode()。package com.pollyduan;import java.util.Date;import lombok.Data;@Datapubl原创 2017-05-22 11:34:17 · 16532 阅读 · 0 评论 -
lombok系列1:初识lombok
初识lombok官网:https://projectlombok.org/什么是lombok连官网都懒得废话,只给出了一句广告词:给你的java加点料(spice up your java)。我们自己来总结一下:lombok是一个ide插件,它可以让我们写更少的代码,而编译出更多的字节码。也就是说,我们可以让我们编译出一个复杂的.class文件,而我们的.java文件很干净清爽。为什么要使用lomb原创 2017-05-22 11:31:28 · 1867 阅读 · 0 评论 -
java泛型总结
什么是泛型泛型是jdk5引入的类型机制,就是将类型参数化,它是早在1999年就制定的jsr14的实现。泛型机制将类型转换时的类型检查从运行时提前到了编译时,使用泛型编写的代码比杂乱的使用object并在需要时再强制类型转换的机制具有更好的可读性和安全性。泛型程序设计意味着程序可以被不同类型的对象重用,类似c++的模版。泛型对于集合类尤其有用,如ArrayList。这里可能有疑问,既然泛型为了适应不同原创 2017-04-13 15:53:51 · 2909 阅读 · 2 评论 -
eclipse使用maven时共享Nexus仓库index缓存的解决办法
不完全解决,但相对有效。背景如我现有一个常用的项目工作空间目录为:/Users/pollyduan/Documents/workspace工作目录中的仓库index缓存保存在哪里呢?${basedir}/.metadata/.plugin/org.eclipse.m2e.core/在使用一段时间以后,该目录会膨胀的很严重,比如我现在该目录的大小是1.8G。如果我再创建一个工作空间,如:/Users/原创 2017-04-18 17:16:00 · 2141 阅读 · 0 评论 -
linux下使用update-alternatives切换java版本的正确姿势
关于update-alternatives命令的使用,请见: http://blog.csdn.net/54powerman/article/details/54572195之前的文章说明了使用文件夹管理来代替原来的当个命令配置的方式,不过这个是属于个人使用的方式,并不是规范的通用的方式。按照默认的方式,每一个软件包对应的命令都是分别设置的,这样的好处是,可以不同的命令使用不同的版本。如java使用原创 2017-04-27 10:38:45 · 9450 阅读 · 0 评论 -
一段java代码带你认识锟斤拷
@Testpublic void testKunJinKao(){ String str="我不是锟斤拷"; try { byte[] buff=null; //让我们先看看几种错误的转换,let's go //1. 正常的GBK字节流,你以为是UTF-8,所以用UTF-8去解码... buff=str.getBytes("GBK");//这里只要不抛异常,数据原创 2017-05-02 10:12:05 · 21414 阅读 · 0 评论 -
eclipse使用maven创建web3.0项目
挺别扭的,eclipse和maven发展了这么久,二者都没有很好的解决这个问题。默认情况下,使用maven骨架撞见的webapp只支持servlet2.3,eclipse又不允许随便修改为3.0。网上流传最多的版本可能是修改项目目录中.settings/org.eclipse.wst.common.project.facet.core.xml文件,然后还要注意一堆东西。我梳理了一种办法,感觉处理起来原创 2017-04-18 15:13:08 · 1238 阅读 · 0 评论 -
java对象拷贝
java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:@Testpublic void testassign(){ Person p1=new Person(); p1.setAge(31); p1.setName("Peter"); Person p2=p1; System.out.println(p1==p2);//true}如果创建一个原创 2017-03-22 15:49:59 · 13745 阅读 · 5 评论 -
java中参数传递方式话题终结实例
java新手入门面临的一个经典的话题,本文意在终结这个话题,java中有说法:Java里面参数传递都是按值传递,怎么理解这句话?用文字说明恐怕不容易说明白,说明白恐怕也难以想明白。前提先明确一下,按值还是按引用的概念,它是来自c++语言,引用不是汉语词典中的一个词,而是c++的概念——“&”这个符号还记得吧?为什么有这个话题呢?其一,是对按引用传递理解不透彻;其二,诸多java书籍及讨论论点并没有切原创 2017-03-22 10:58:50 · 2723 阅读 · 5 评论 -
Hibernate Session和Jpa EntityManager
本文主要比较一下二者操作实体类的方法的关系和区别。本文适用 Hibernate:4.3.11.Final 和 spring-data-jpa:1.10.4.RELEASE 。创建方式Session:Configuration configuration=new Configuration().configuration();ServiceRegistry serviceRegistry=new Se原创 2017-03-10 13:58:01 · 10033 阅读 · 0 评论 -
maven依赖的版本管理
使用变量进行管理定义一个版本号的变量<properties> <spring-framework-version>4.3.7.REALEASE</spring-framework-version></properties>所有spring的jar版本都使用变量来定义版本:<dependency> <groupId>org.springframework</groupId> <art原创 2017-03-09 11:21:38 · 4533 阅读 · 0 评论 -
吐槽java时间那点事儿 Joda Time
官网:http://www.joda.org/joda-time/pom<dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> <version>2.9.7</version></dependency>为什么要用joda?创建对象构建指定日期的时间(2018-02-21)://Calend原创 2017-02-21 18:57:31 · 5353 阅读 · 2 评论 -
tomcat下数据库连接池的配置
tomcat数据库连接池配置在server.xml中添加到中 maxWait 10000 maxActive 100 pass转载 2004-11-18 14:30:00 · 1588 阅读 · 0 评论 -
谈谈Java:Checked Exception与Runtime Exception 的区别
Java里有个很重要的特色是Exception ,也就是说允许程序产生例外状况。而在学Java 的时候,我们也只知道Exception 的写法,却未必真能了解不同种类的Exception 的区别。 首先,您应该知道的是Java 提供了两种Exception 的模式,一种是执行的时候所产生的Exception (Runtime Exception),另外一种则是受控制的Exception转载 2004-12-16 18:01:00 · 2273 阅读 · 0 评论 -
排列组合的递归算法
import java.util.*;public class PermutationAndCombination{ /** * author:54powerman@163.com * blog:http://blog.sina.com.cn/m/54powerman **/ public static void main(String[] args) { l原创 2006-04-10 08:58:00 · 4325 阅读 · 0 评论 -
java8新特性整理
java9快来了,必须得梳理一下java8了。官方文档:http://docs.oracle.com/javase/specs/jls/se8/html/index.html一、接口的默认方法和静态方法接口里也可以写方法体了,实现该接口的类不再强制实现该方法,只需要在方法签名增加default签名并实现方法体,如:接口:public interface Compute { default I原创 2017-06-13 17:39:06 · 7855 阅读 · 2 评论 -
使用springloaded进行java应用热部署
试了下不错,不像JRebel那样收费,这个开源的,感觉很好用。首先下载springloaded.jarhttps://github.com/spring-projects/spring-loaded也可以使用maven拉取:<dependency> <groupId>org.springframework</groupId> <artifactId>springloaded</artifac原创 2017-06-05 16:16:40 · 17294 阅读 · 2 评论 -
Spring Boot集成JPA的Column注解命名字段无效的问题
偶然发现,Spring Boot集成jpa编写实体类的时候,默认使用的命名策略是下划线分隔的字段命名。Spring Boot版本:1.5.4.release数据表:id int,userName varchar(50)那么如下的映射:@Data@Entity@Table(name="t_users")@NoArgsConstructor@AllArgsConstructor@Access原创 2017-07-27 10:37:02 · 25541 阅读 · 6 评论 -
使用lombok编写优雅的Bean对象
使用java编写代码,十之八九都是在写java类,从而构建java对象。lombok之前也说了不少,但使用了这么多年,感觉还是有很多技巧可以使用的。毫无疑问,使用lombok,编写的java代码很优雅,而使用起来和普通的java编码方式创建的类毫无二致。不过,这样就满足了吗?实际上lombok很多注解,让这个java类在使用的时候,也可以更优雅。本文就从ORM实体类、Builder模式工具类...原创 2019-04-22 22:23:21 · 1178 阅读 · 1 评论 -
start.spring.io 访问不了怎么办?
start.spring.io 访问不了怎么办?这个问题坑过我很多次,抽时间把start 官网的项目做了一个包装,增加了一个默认配置,以及定期更新的机制。移驾:https://gitee.com/pollyduan/spring-boot-initializrUI基于官方 0.4.0.release 目前官方UI已经更新,直接试了下不能平滑升级。抽时间再搞一下吧。目前就是旧版本的UI,使用...原创 2019-03-27 19:54:24 · 6762 阅读 · 0 评论 -
有意思的TimeUnit
java.util.concurrent.TimeUnit 这个类,相信童鞋们都不陌生。它是一个enum:public enum TimeUnit好吧,我一直把它当做一个枚举类来用。偶然看到还有别的用法,大吃一斤,原来 TimeUnit 并不是一个简单的枚举类。时间单位换算//小时转换为秒long sec = TimeUnit.HOURS.toSeconds(1);// 另一种形式...原创 2019-03-04 17:19:26 · 502 阅读 · 0 评论 -
三句话捋清楚java垃圾收集器
无论 -XX:+UseParallelGC 还是 -XX:+UseParallelOldGC ,新生代都是 ParallelGC,即 Parallel Scavenge,区别在于年老代,前者是串行,后者是并行。无论 -XX:+UseConcMarkSweepGC 还是 -XX:+UseParNewGC ,新生代都是ParNew,区别在于年老代,前者是CMS(当然,他失败了就会执行seri...原创 2019-03-04 17:17:48 · 610 阅读 · 0 评论 -
RabbitMQ 延迟队列
rabbitmq 本身不支持延迟队列,但提供了实现延迟队列的必备条件。原理queue可以通过 x-message-ttl 参数设置过期时间,到了过期时间的消息就会被标记为 dead letter 状态。过期的消息可以通过 x-dead-letter-exchange 和 x-dead-letter-routing-key 参数转发到另一个 exchange 中去。在managemen...原创 2019-03-04 17:16:09 · 648 阅读 · 0 评论 -
SpringBoot 去除"No MyBatis mapper was found in '[com.pollyduan.cms]' package. " 警告
springboot项目,集成了mybatis。偶然发现,项目每次启动都警告:No MyBatis mapper was found in '[com.pollyduan.cms]' package. Please check your configuration.我在 com.pollyduan.cms.CmsApplication 主类上使用 @MapperScan(baseP...原创 2018-03-28 22:59:09 · 12325 阅读 · 1 评论 -
使用git仓库创建Maven私服
自己编写的jar,想要通过maven方式进行分发必须发布到maven仓库。如果没有自己的私服,我们可以使用折中的办法来实现。maven客户端从maven仓库拉取构件时,实际上就是通过http协议去拉取对应仓库地址上的,对应目录中的metadata文件,查询需要的版本,就可以找到jar文件,下载到本机仓库。从而完成了依赖构件的拉取。就是说,我们可以使用任何http服务器,按照一定的目录结构部...原创 2018-03-22 18:33:33 · 1934 阅读 · 0 评论 -
使用FeignClient调用远程服务时整合本地方法
背景尝试将本地方法加入Feign接口尝试通过实现两个接口IS -> HAS背景包装一个用户服务,一部分功能需要调用远程服务,而另一部分功能调用本地方法,如:@FeignClient(value="USER-SERVICE")public interface RemoteUserService{ @GetMapping("getUserByU...原创 2018-03-17 15:30:06 · 5087 阅读 · 0 评论 -
SpringCloud的版本
Spring Cloud 项目目前仍然是快速迭代期,版本变化很快。这里整理一下版本相关的东西,备忘一下。大版本版本号规则Spring Cloud并没有熟悉的数字版本号,而是对应一个开发代号。 Cloud代号 Boot版本(train) Boot版本(tested) lifecycle Angle 1.2.x incompatible w原创 2018-01-25 16:23:41 · 24835 阅读 · 3 评论 -
eclipse开发springboot配置文件没有语法提示了
eclipse开发springboot项目,打开 application.properties 和 application.yml,正常情况下,输入:port 会提示可选配置项:选择 server.port= 输入端口号即可。无法提示的问题配置文件前天突然发现,没有语法提示了。回想最近几天做了什么?重装了jdk9.0.1; 在jdk1.8.144基础上安装了1.8.1原创 2018-01-16 14:43:28 · 5772 阅读 · 0 评论 -
java9导出运行springboot的精简版jre
基本导出命令查找某个类在哪个mod中最终结果测试启动为了分发一个springboot项目,在不考虑目标机器是否有jre的情况下,携带一个jre环境是一个选择。本文就尝试从原生的jdk 9.0.1 精简一个jre供分发。实际情况可能略有不同,比如目标机器不同,jre是否兼容,未测试。使用基本的eureka-server项目测试可运行。其他项目可能根据依赖的基础模块进行相应调整。基本导出命令以下原创 2017-12-27 13:53:20 · 1935 阅读 · 0 评论 -
java8的日期API总结(JSR310)
java8 datetime api有什么LocalDateLocalDate 与 Date 转换LocalTimeLocalDateTimeLocalDateTime 与 DateInstantZoneId日期计算Java的日期时间API,一直有一些令人头疼的问题。有了 java.util.Date 又搞出个java.sql.Date,改个名字不行?好好的new Date(yea原创 2017-11-17 23:48:31 · 1731 阅读 · 1 评论 -
再再谈java乱码:GBK和UTF-8互转尾部乱码问题分析(续)
GBK字节码用UTF-8解码UTF-8 的编码规则转码实例解决问题小结参考在《再谈java乱码:GBK和UTF-8互转尾部乱码问题分析》我们分析了,如果从一个UTF-8 的字节序列,经过 new String(b,"GBK") 的操作,”可能”(与总字节数有关)会破坏数据。结果可能是,损失最后一个”字”。反过来呢?可能会很惨,大范围溃散。。。同时,可参考:一段java代码带你认识锟斤拷G原创 2017-10-25 10:24:33 · 1550 阅读 · 0 评论 -
Java9新特性——module模块系统
官方文档:https://docs.oracle.com/javase/9/index.html关于 java9的新特性,官方原文:https://docs.oracle.com/javase/9/whatsnew/toc.htm这玩意就是一个列表,具体的技术细节需要根据官方文档挖一挖。modular-模块系统java9的模块化,从一个独立的开源项目而来,名为Jigsaw。项目官网:http://o原创 2017-09-26 09:51:15 · 19832 阅读 · 9 评论 -
Spring Boot 在localhost域奇怪的404问题(Mac book pro)
在mac系统中,明明url是对的,浏览器也可以打开,一个简单的代码调用就是404,你有没有遇到过?情景再现普通的一个controller,返回一个常量。@GetMapping("/project_metadata/spring-boot")public String getMetadata(){ return "{\"data\":1234}";//这个不重要}调用接口的方式:content原创 2017-08-31 16:30:05 · 4990 阅读 · 1 评论 -
使用Spring Boot Cli快速启动web服务
安装spring boot clisdk install springboot编写脚本文件@RestControllerpublic class SpringBootDemo12345 { @RequestMapping("/") public String home() { return "Hello World!"; }}类名不一定和文件名一样。启动服务s原创 2017-07-27 18:12:23 · 729 阅读 · 1 评论 -
Eclipse配置JNDI连接池
之前用Eclipse JEE开发web工程,按照网上的一些说法,配置,发现很麻烦。而且每次project重新remove再加载,配置就丢失了。 根据tomcat使用的经验,尝试如下方法,就可以解决一次配置,所有同workspace的project都可以随时使用jdni了。 确保Eclipse中配置了tomcat runtime的情况下,在Eclipse中创建第一个web工程的时候,原创 2010-04-27 13:50:00 · 7660 阅读 · 4 评论 -
使用JavaService让java程序加载为winNT系统服务
54powermanhttp://54powerman.blog.sohu.com1 下载javaServicehttp://javaservice.objectweb.org/获得windows的zip压缩版,文件名形如:JavaService-x.x.xx.zip,其中x.x.xx为版本号,当前版本为JavaService-2.0.10.zip,请使用最新版。2 安装将JavaServ原创 2007-03-01 13:55:00 · 7078 阅读 · 3 评论 -
GCJ让java程序脱离jre执行
一 首先,下载如下软件:1 http://sourceforge.net/projects/mingw/MinGW-5.1.3.exe2 http://sourceforge.net/projects/gnuwin32/libiconv-1.9.2-1-bin.ziplibiconv-1.9.2-1-lib.zip以上只是当时的最新版,随着版本更新,请选择最新版下载。二 安装1 安装m原创 2007-02-13 11:23:00 · 5628 阅读 · 2 评论