Java11 部分新特性一览

月26日,Java 11(LTS 长期支持版)如期而至,虽然短期很难投入生产使用(毕竟现在还在用jdk7呢,哈哈哈哈)但是还是非常有必要了解一下相关的特性的。 jshell 使用jshell可以像python交互模式那样直接运行代码 编译 && 运行 简化了javac & java命令 javac Test.java java Test #### jdk 11 java Test.java 局部类型……

阅读全文

当当网Dubbox框架使用示例

Dubbox是当当网基于阿里巴巴dubbo衍生出来的一个新版本,以下是在官网摘抄的相关特性: 支持REST风格远程调用(HTTP + JSON/XML) 支持基于Jackson的JSON序列化 支持基于嵌入式Tomcat的HTTP remoting体系 升级ZooKeeper客户端:将dubbo中的zooke……

阅读全文

使用Selenium-Java实现自动化UI测试

安装ChromeDriver https://npm.taobao.org/mirrors/chromedriver/ 下载指定版本的 chromedriver 后,放入 PATH 中。 添加Maven依赖 <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.5.3</version> </dependency> <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>6.14.3</version> </dependency> 使用案例:自动登录 package com.wuwenze.test; import lombok.extern.java.Log; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.Assert; import org.testng.annotations.AfterClass; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.util.List; import java.util.concurrent.TimeUnit; @Log public class TestNgSelenium { private String baseUrl = "http://xxx.com"; private ChromeDriver webDriver = null; @BeforeClass public void before() { webDriver = new ChromeDriver(); webDriver.manage().window().fullscreen(); webDriver.manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS); webDriver.get(baseUrl); } @Test public void login() throws InterruptedException { // 进入登录页面 webDriver.findElementByClassName("btn-login").click(); Thread.sleep(1000); // 输入用户名密码 List<WebElement> elements = webDriver.findElements(By.tagName("input")); Assert.assertNotNull(elements); Assert.assertEquals(elements.size(), 3);……

阅读全文

Spring @Cacheable 注解相关说明

关于@Cacheable注解的作用不做过多说明,文本主要针对该注解的key自定义策略规则提供一些示例。 @Cacheable 属性名 必填? 描述 value 必填 缓存的命名空间 key 可选 指定一个唯一的key(在缓存命名空间中),使用SpEL表达式 condition 可选 限定条件,哪种情况使用缓存,使用SpEL表达式 unless 可选 限定条件,哪种情……

阅读全文

Java代码精简神器Lombok的使用

Java 代码中有很多冗余、臃肿的代码(如:Getter/Setter、构造方法、hashCode 方法等)lombok 是一款 IDE 插件,其专注于消除此类代码,以达到代码简洁高效的目的。它同时提供了 IDEA 以及 Eclipse 相关的插件,本文以 IDEA 为例,做一些相关的示例 准备工作 1)IDEA 中安装相关的插件,如图: 2……

阅读全文

使用Maven打包可执行JAR包

SpringBoot工程 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <mainClass>com.wuwneze.springbootexample.SpringbootExampleApplication</mainClass> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin> 普通Java工程 <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>com.wuwenze.Main</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> 使用该插件生成的jar包,带jar-with-dependencies后缀的jar文件,可以直接运行。 如何打包 mvn clean install package 题外话:如何让linux命令保持后台运行? nohup java -jar test-0.0.1-SNAPSHOT-jar-with-dependencies.jar……

阅读全文

使用JMeter录制性能测试脚本

JMeter是一个开源的基于Java的性能测试工具,使用起来真的是即"方便"又"强大" 新建线程组 用于存放录制结果 新建代理服务器 测试计划->新建非测试原件->HTTP代理服务器 TestPlan Creation 将目标控制器设置为:测试计划>线程组 (录制后……

阅读全文

微信小程序模板消息推送实现案例

模板消息是基于微信的通知渠道,为开发者提供了可以高效触达用户的模板消息能力,以便实现服务的闭环并提供更佳的体验。 想推送模板消息,得满足一些前提条件: 用户在小程序中完成支付后,小程序可以向用户发送模板消息。 用户在小程序中有提交表单的行为,小程序可以向用户发送模板消息。 例如: 3. 用户在……

阅读全文

使用MockMvc在SpringBoot中进行单元测试

在开发好常规的RESTful接口后,难免会依次进行单元测试,一般来说使用Postman即可, 但是依然是不太方便,有没有更方便,更优雅的方式呢? MockMvc org.springframework.test.web.servlet.MockMvc MockMvc是由Spring提供的,作用是在单元测试代码中,伪造一套MVC环境,常见的方法如下: Method Remark perform 执行一个RequestBuil……

阅读全文

Java8 Stream Api使用详解

jdk8发布至今已有几年有余,是一个影响深远且具有革命意义的版本,目前jdk版本已直奔v11.0, 发展之迅速让人始料未及。本文在假设已有 java8 lambda 语法的基础下,通过几个示例,快速上手Stream 流处理相关的 API 使用。 什么是流操作 流操作就是一条流水线,将元素放在流水线上一个个地进行处理: List<User>……

阅读全文