技术博客

Java 8新特性 - (10)并行数组排序

javajava 8排序

在Java 7中已经有了Arrays.sort()方法可对对象进行排序,而在Java 8中,引入了新的并行排序,它比前者的排序速度更快,且遵循了Java 7引入的Fork/Join框架,可以把排序任务分配给线程池中可用的多个线程。 Java 8在java.util.Arrays类中新增了并行排序功能,能够更充分地利用多线程机制,最重要的方法是parallelSort(),可以显著加快多核机器上的数组排序

更多 →

June 1, 2021

Java 8新特性 - (9)DateTime API

javajava 8

相关背景 Java对日期、日历及时间的处理一直以来都饱受诟病: java.util.Date和java.util.Calendar类易用性差,不支持时区,非线程安全 用于格式化日期的类DateFormat被放在java.text包中,它是一个抽象类,所以我们需要实例化一个SimpleDateFormat对象来处理日期格式化,并且DateFormat也是非线程安全,这意味着如果你在多线程程序中调用同一个DateFormat对象,会得到意想不到的结果。 对日期的计算方式繁琐,而且容易出错,因为月份是从0开始的,从Calendar中获取的月份需要加一才能表示当前月份。 由于以上这些问题,出现了一些三方的日期处理框架,例 …

更多 →

June 1, 2021

Java 8新特性 - (8)方法参数反射

javajava 8

方法的参数名,在很多时候我们是需要反射得到的。但是在java8之前,代码编译为class文件后,方法参数的类型是固定的,但参数名称却丢失了,这和动态语言严重依赖参数名称形成了鲜明对比。(java是静态语言,所以入参名称叫什么其实无所谓的)。虽然名称无所谓,但很多时候,我们需要此名称来做更好的安排.

更多 →

May 28, 2021

Java 8新特性 - (7)泛型的类型推断

javajava 8

泛型简介 泛型由Java 1.5引入,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。通俗点将就是“类型的变量”。这种类型变量可以用在类、接口和方法的创建中。理解Java泛型最简单的方法是把它看成一种便捷语法,能节省某些Java类型转换(casting)上的操作.

更多 →

May 28, 2021

Java 8新特性 - (6)类型注解

javajava 8

什么是类型注解 在java 8之前,注解只能是在声明的地方所使用,比如类,方法,属性;从java 8开始,注解可以应用在任何地方。但是需要注意的是,类型注解只是语法而不是语义,并不会影响java的编译时间,加载时间,以及运行时间,也就是说,编译成class文件的时候并不包含类型注解。换句话说,仅提供定义这些类型的注释的功能,然后由框架和工具开发者来实际上使用它们。

更多 →

May 28, 2021

Java 8新特性 - (5)重复注解

javajava 8

在JDK8之前,不能使用重复注解的,即某个位置相同注解只能出现一次。 如果想编写一个定时任务的注解,使用者可以配置在每天哪一小时触发,而且允许用户配置多个时间。传统做法是:

更多 →

May 27, 2021

Java 8新特性 - (4)默认方法

javajava 8

什么是默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法。只需在方法名前面加个default关键字即可。

更多 →

May 26, 2021

Java 8新特性 - (3)方法引用

javajava 8

方法引用(Method references)。方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,可以使语言的构造更紧凑简洁,减少冗余代码。

更多 →

April 7, 2021

在Fiddler中使用脚本来修改Response数据

fiddler

使用Fiddler抓包工具,通过修改CustomRules.js脚本达到修改Http请求的Response中Body信息(如JSON串)。 常用于在Server开发未完全Ready而前端或客户端开发需要Server数据时,修改请求的返回数据,达到Debug和测试的目的,较添加BreakPoint的方法更加便捷。

更多 →

March 30, 2021

CXF记录WebService的soap日志

jettysession

cxf本身就支持日志功能,能打印传入传出的soap报文,但是需要配置一下。 这里配置的是cxf结合spring做的WebService,配置步骤如下:

更多 →

March 29, 2021

设置周日为一个星期的第一天

jettysession

用 “locale”命令检查当前的区域,例如我的机器运行结果是: ls@ls-laptop:~$ locale LANG=zh_CN.UTF-8 LANGUAGE=zh_CN.UTF-8 LC_CTYPE="zh_CN.UTF-8" LC_NUMERIC="zh_CN.UTF-8" LC_TIME="zh_CN.UTF-8" LC_COLLATE="zh_CN.UTF-8" LC_MONETARY="zh_CN.UTF-8" LC_MESSAGES="zh_CN.UTF-8" LC_PAPER="zh_CN.UTF-8" LC_NAME="zh_CN.UTF-8" LC_ADDRESS="zh_CN.UTF-8" …

更多 →

March 29, 2021

删除Jetty中session ID的node名称

jettysession

jetty 9.4 版本对session id的生成做了升级. 他会自动在session id后面加个节点的名字(workName配置项). jetty 9.3 以及之前的版本没有这个问题.

更多 →

March 29, 2021

配置Nginx支持长轮询

nginx长轮询

某些web应用需要使用到长轮询,在Nginx中需要添加配置来支持。比如说vaadin界面,如果没有做一些额外的配置,使用nginx做反向代理,会出现页面一直在加载的问题

更多 →

March 25, 2021

基于alpine构建docker镜像修改时区

dockeralpine

默认apline镜像没有安装时区, 即使把宿主机的/etc/localtime 挂在到镜像中也无法把时区改成 GMT+8的. 这个就只能在构建镜像的时候,安装并设置一下时区

更多 →

March 25, 2021

Manjaro升级后打印服务不可用

manjaro打印机

Manjaro升级到某个版本后,在系统设置中,查看打印机,显示“打印机服务不可用,错误的文件描述符“。 其中一个原因是CUPS(Common UNIX Printing System)打印管理服务未启动。可以用下面的方法来解决:

更多 →

March 16, 2021

Java 8新特性 - (2)Stream API

javajava 8

什么是Stream API Stream API让开发者能够以一种声明的方式处理数据源(集合、数组等),它专注于对数据源进行各种高效的聚合操作(aggregate operation)和大批量数据操作 (bulk data operation)。

更多 →

March 5, 2021