1. stream + lambda 操作集合数据
Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。
前往 demo文件
1.1. 概念1.1.1. Stream的运作流程
stream不会改变原有数据,而是创建一条新的数据。
案例:
1List<Integer> datas = Lists.newArrayList(1, 2, 3);List<Integer> nums = datas.stream().filter(a -> a == 2).collect(Collectors.toList());
datas.stream() –> 将集合datas转换为stream类型。
.filter() –> 过滤不需要的数据。
.collect() –> 构建出新结构的数据。
1.2. 初始化1// array转streamint[] num = {1};IntStream arrayStream = Arrays.stream(num);// 自定义赋值转stream ...
Jar/class 反编译工具。
1. Idea 下载反编译插件插件名称:Java Bytecode Decompiler或Java Decompiler。
2. 运行插件下载成功后,找到对应的插件Jar包。
Mac系统的插件地址:/Applications/IntelliJ\ IDEA.app/Contents/plugins/java-decompiler/lib
2.1. 命令运行1java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true rt.jar rt
2.2. 命令描述/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar : 反编 ...
编程分享
未读1. spel 表达式 介绍
Spring Expression Language(简称 SpEL)是一种功能强大的表达式语言,支持运行时查询和操作对象图 。表达式语言一般是用最简单的形式完成最主要的工作,以此减少工作量。
Java 有许多可用的表达式语言,例如 JSP EL,OGNL,MVEL 和 JBoss EL,SpEL 语法类似于 JSP EL,功能类似于 Struts2 中的 OGNL,能在运行时构建复杂表达式、存取对象图属性、调用对象方法等,并且能与 Spring 功能完美整合,如 SpEL 可以用来配置 Bean 定义。
SpEL 并不与 Spring 直接相关,可以被独立使用。SpEL 表达式的创建是为了向 Spring 社区提供一种受良好支持的表达式语言,该语言适用于 Spring 家族中的所有产品。也就是说,SpEL 是一种与技术无关的 API,可以集成其它表达式语言。
SpEL 提供了以下接口和类:
Expression interface:该接口负责评估表达式字符串
ExpressionParser interface:该接口负责解析字符串
Evaluatio ...
编程分享
未读java 关键字 - transient
Java中transient关键字的作用,简单地说,就是让某些被修饰的成员属性变量不被序列化。
1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问。
2)transient关键字只能修饰变量,而不能修饰方法和类。注意,本地变量是不能被transient关键字修饰的。变量如果是用户自定义类变量,则该类需要实现Serializable接口。
3)被transient关键字修饰的变量不再能被序列化,一个静态变量不管是否被transient修饰,均不能被序列化。
1public static void main(String[] args) { @Data class AA implements Serializable { transient String a; String b; } AA aa = new AA(); aa.setA("a"); aa.setB("b"); String s = JS ...
1. 概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。
什么是泛型?为什么要使用泛型?
泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?
顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),
然后在使用/调用时传入具体的类型(类型实参)。
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,
操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。
2. 一个栗子一个被举了无数次的例子:
1List arrayList = new ArrayList();arrayList.add("aaaa");arrayList.add(100);for(int i = 0; i< arrayList.size();i++){ String it ...
在 JDK 1.4之前,开发人员经常使用注释来记录关于程序正确性的假设。然而,注释作为测试和调试假设的机制是无用的。编译器忽略注释,因此无法使用它们进行 bug 检测。开发人员在更改代码时也经常不更新注释。
在 JDK 1.4中,断言被引入作为测试和调试代码假设的新机制。实质上,断言是在运行时执行的可编译实体,假设你已经为程序测试启用了它们。可以通过编写断言来通知 bug 发生的地方,这样可以大大减少调试失败程序的时间。
1. 编写断言的表达式1assert BooleanExpr;
如果 BooleanExpr 的计算结果为 true,则不会发生任何事情,并继续执行。但是,如果表达式计算结果为 false,那么将抛出 AssertionError
1.1. 举个例子1public static void main(String[] args) { int a = 10; assert a>100;//false}
2. 运行后没有反应??有的小伙伴发现自己的IDE并没有抛出Error 这是因为没有显示开启,启用断言 开启方法: vm option ...
应用在执行业务逻辑之前,必须通过校验保证接受到的输入数据是合法正确的,但很多时候同样的校验出现了多次,在不同的层,不同的方法上,导致代码冗余,浪费时间,违反DRY原则。
每一个控制器都要校验
过多的校验参数会导致代码太长
代码的复用率太差,同样的代码如果出现多次,在业务越来越复杂的情况下,维护成本呈指数上升。
可以考虑把校验的代码封装起来,来解决出现的这些问题。
@Validated和@Valid搭配使用,@Validated用来标注让Spring扫描,@Valid用来标注需要验证的对象。
1. 用法实例maven
12345<dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.4.Final</version></dependency>
1.1. 校验对象
编写校验对象
1public class User ...
编程分享
未读一、什么是JVMJVM是Java Virtual Machine(Java 虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
Java语言的一个非常重要的特点就是平台无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。
二、JVM总体概述JVM总体上是由类装载子系统(ClassLoader)、运行时数据区、执行引擎、垃圾收集这四个部分组成。其中我们最为关注的运行时数据区,也就是JVM的内存部分则是由方法区(Method Area)、JAVA堆(Java Heap)、虚拟机栈(JVM S ...
翻译自Apache JmeterTM官网https://jmeter.apache.org/index.html
推特 GitHub
优质文章:https://www.cnblogs.com/daydayup-lin/p/16000045.html
Apache JMeterTM应用程序是开源软件,是一个100%纯Java应用程序,旨在加载测试功能行为并衡量性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试功能。
我能用它做什么?Apache JMeter可用于测试静态和动态资源Web动态应用程序的性能。它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。
Apache JMeter的功能包括:
能够加载和性能测试许多不同的应用程序/服务器/协议类型:
Web - HTTP,HTTPS(Java,NodeJS,PHP,ASP.NET,…)
SOAP / REST Webservices
FTP
通过JDBC数据库
LDAP
通过JMS面向消息的中间件(MOM)
邮件 - SMTP(S)、POP ...