08 Java实战技巧
文章
01 Java模板变量替换
1 org.apache.commons.text变量默认前缀是${,后缀是} 12345<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version></dependency> 1234567Map valuesMap = new HashMap();valuesMap.put("code", 1234);String templateString = "验证码:${code},您正在登录管理后台,5分钟内输入有效。";StringSubstitutor sub = new StringSubstitutor(valuesMap);String content= sub.replace(templateString);...
02 Java的三种变量
概述三种变量 VM options是JVM变量 Programp arguments是程序变量 Environment variables是环境变量 JVM变量是什么 所谓的JVM变量和平时见到的不太一样,比如-Xmx1024m这样的,这里说的JVM变量更确切的说是java命令中的一个选项,我们前边在idea中进行配置的时候,使用的也是“-D”这个选项,在服务启动的时候会设置一个key-value的属性。并且从上面的注释也可以看到对“-D”的解释是“设置系统属性” 怎么用 需要注意一点这里的配置除了JVM已经定义好的,其他的自定义配置请使用前面说到的“-D”的形式,多个配置使用空格隔开 JVM启动参数 获取JVM变量Syst...
03 javax postconstrct
1、@PostConstruct注解好多人以为是Spring提供的。其实是Java自己的注解。Java中该注解的说明:@PostConstruct该注解被用来修饰一个非静态的void()方法。被@PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器执行一次。PostConstruct在构造函数之后执行,init()方法之前执行。2、通常我们会是在Spring框架中使用到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序:Constructor(构造方法) -> @Autowired(依赖注入)/@Value -> @PostConstruct(注释的方法)3、应用:在静态方法中调用依赖注入的Bean中的方法
04 3.自定义请求和搭建集群
4 自定义Jmeter采样器 步骤 动作 1 创建一个Java类并继承AbstractJavaSamplerClient 2 实现setupTest方法,用于初始化 3 实现runTest方法,用于执行具体的请求 4 实现teardownTest方法,用于清理资源 5 编译并将生成的jar文件放入JMeter的lib/ext目录下 6 在JMeter中创建一个新的线程组 7 添加一个Java Request到线程组中,并设置相应的参数 8 运行测试,查看结果 步骤 1: 创建一个Java类并继承 AbstractJavaSamplerClient引入对应的依赖 1234567891011<dependency> <groupId>org.apache.jmeter</groupId> <artifactId>ApacheJMeter_core</artifactId> <version>4.0</version></depen...
05 静态方法和单例模式
静态方法和非静态方法 静态方法和非静态方法,他们都是在第一次加载后就常驻内存,所以方法本身在内存里,没有什么区别 在内存中的区别是,非静态方法在创建实例对象时,因为属性的值对于每个对象都各不相同,因此在new一个实例时,会把这个实例属性在GC Heap里拷贝一份,同时这个new出来的对象放在堆栈上,堆栈指针指向了刚才拷贝的那一份实例的内存地址上。而静态方法则不需要,因为静态方法里面的静态 为什么要有非静态方法? 早期的结构化编程,几乎所有的方法都是“静态方法”,引入实例化方法概念是面向对象概念出现以后的事情了,区分静态方法和实例化方法不能单单从性能上去理解,创建c++,java,c#这样面向对象语言的大师引入实例化方法一定不是要解决什么性能、内存的问题,而是为了让开发更加模式化、面向对象化。这样说的话,静态方法和实例化方式的区分是为了解决模式的问题。 接下来继续思考,如果我们全部用静态方法,不用非静态方法,不是一样能实现功能吗?是的,没错,但是你的代码是基于对象,而不是面向对象的,因为面向对象的继承和多态,都是非静态方法。 第二个原因是为什么不建议都用静态方法,我们如果多线程的...
06 协变返回类型
Java 协变返回类型是指在子类中重写一个方法时,该方法的返回类型可以是父类中该方法返回类型的子类。这意味着子类可以返回更具体的类型,而无需强制转换为父类类型。 例如,假设有一个父类 Animal 和一个子类 Dog,它们都有一个返回类型为 Animal 的方法 getAnimal。在 Dog 类中重写该方法时,可以将返回类型更改为 Dog,因为 Dog 是 Animal 的子类。这样一来,当调用 Dog 的 getAnimal 方法时,会返回一个 Dog 对象而不是 Animal 对象。 导出类(子类)覆盖(即重写)基类(父类)方法时,返回的类型可以是基类方法返回类型的子类。 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package com.evada.de;/** * @Author 云析学院 * Created by Ay on 2016/12/4. */public class Ay {...
07 内省
在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型的一种能力,通常也可以称作运行时类型检查。不应该将内省和反射混淆。相对于内省,反射更进一步,是指计算机程序在运行时(Run time)可以访问、检测和修改它本身状态或行为的一种能力。 内省(Introspector)是Java语言对Bean类属性、事件的一种缺省处理方法。例如A类中有属性name,那么我们可以通过getName和setName来得到当前值或设置新的值。通过getName/setName来访问name属性,这就是默认规则。 https://blog.csdn.net/weixin_43726137/article/details/122924821
11 Rest接口
1 概述基本概念JSR(Java Specification Request)-Java规范提案 jax-rs对应JSR370。jax-rs全称Java API for RESTful Services。 java.ws.rs是jax-rs规范中定义的包名。 jax-rs中定义了 一组启动方式 (以jee作为http容器 还是配合servlet作为http容器) 一组注解@GET, @POST, @DELETE, @PUT, @Consumes … 通过 POJO Resource类 提供Rest服务 实现框架 Apache CXF开源的Web服务框架 Jersey 由Sun提供的JAX-RS的参考实现 RESTEasy JBoss的实现 Restlet 由Jerome Louvel和Dave Pawson开发 是最早的REST框架 先于JAX-RS出现 Apache Wink 一个Apache软件基金会孵化器中的项目 其服务模块实现JAX-RS规范 JSR2 注解@Path注解位置 类注解 方法注解 标注class时 表明该类是个资源类 凡是资源类必须使用该注解 标注me...
12 transient关键字
序列化对序列化的理解 JAVA序列化是指把JAVA对象转换为字节序列的过程。JAVA反序列化是吧字节恢复为JAVA对象。 应用:当两个进程进行远程通信时,可以相互发送各种类型的数据。包括文本、图片、音频、视频,这些数据都是以二进制序列的形式在网络上传送。 两个JAVA进程通信的时候,也可以传送对象,将JAVA序列化为字节序列,装载为字节流,然后进行传送。.接收端将字节流反序列化为JAVA对象。 作用:实现了数据的持久化,通过序列化,能够将数据永久的保存到硬盘上。利用序列化可以实现数据流的输入输出和远程通信。 实现方法: java.io.ObjectOuptutStream:对象输出流writeObject() java.io.ObjectInputStream:对象输入流readObject() 对象能被序列化的要求 implement了Serializable接口,通过默认的方法进行序列化 implement了Serializable接口,并且实现了相应的方法,然后通过自己的方式进行序列化和反序列化 序列化的步骤: 步骤一:创建一个对象输出流,它可以包装一个其它类型的目标输出流...
13 DAO模式的理解
DAO模式的原理说明DAO(Data Access Object)是一个数据访问接口,数据访问:顾名思义就是与数据库打交道,夹在业务逻辑与数据库资源中间。 在核心J2EE模式中DAO的定义是:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。 DAO层本质上就是MVC中的Model部分的具体实现。相当于整个工程的javabean,实现了对数据库的增删查改。  DAO模式的具体实现 VO类:提供javabean,表示数据库中的一条记录,主要有getter和setter方法 DAO类:提供了DAOmodel的接口,供控制...














