精华内容
下载资源
问答
  • 前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。在此,建议大家为本公众号加“星标”。如文章写得好,望大家阅读后在右下边“在看”处点个赞...I/O流的关闭操作等等,这些样板代码既没有技术含量,...

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。在此,建议大家为本公众号加“星标”。如文章写得好,望大家阅读后在右下边“在看”处点个赞,以示鼓励!

    84704c05e0c905d650a13edc6db1e8ef.png

    作者:LiWenD  来源:http://t.cn/EXhxRzV

    以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。

    任何技术的出现都是为了解决某一类问题,如果在此基础上再建立奇技淫巧,不如回归Java本身,应该保持合理使用而不滥用。

    Lombok的使用非常简单。

    1)引入相应的maven包

    <dependency>  <groupId>org.projectlombokgroupId>  <artifactId>lombokartifactId>  <version>1.16.18version>  <scope>providedscope>dependency>

    Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

    2)添加IDE工具对Lombok的支持

    IDEA中引入Lombok支持如下:点击File-- Settings设置界面,安装Lombok插件。

    f34d9c79be5531df20f4b6dbf6cb4ec8.png

    点击File-- Settings设置界面,开启 AnnocationProcessors。

    10813afa42fa4dcec04a921df659b556.png

    开启该项是为了让Lombok注解在编译阶段起到作用。

    Eclipse的Lombok插件安装可以自行百度,也比较简单,值得一提的是,由于Eclipse内置的编译器不是Oracle javac,而是eclipse自己实现的Eclipse Compiler for Java (ECJ).要让ECJ支持Lombok,需要在eclipse.ini配置文件中添加如下两项内容:

    -Xbootclasspath/a:[lombok.jar所在路径]-javaagent:[lombok.jar所在路径]

    3)Lombok实现原理

    自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。

    Lombok就是一个实现了"JSR 269 API"的程序。在使用javac的过程中,它产生作用的具体流程如下:

    1. javac对源代码进行分析,生成一棵抽象语法树(AST)

    2. javac编译过程中调用实现了JSR 269的Lombok程序

    3. 此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树(AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点

    4. javac使用修改后的抽象语法树(AST)生成字节码文件

    4) Lombok注解的使用

    POJO类常用注解:@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。

    package com.trace;import lombok.AccessLevel;import lombok.Getter;import lombok.Setter;/** * Created by Trace on 2018/5/19. * DESC: 测试类 */@SuppressWarnings("unused")public class TestClass {    public static void main(String[] args) {    }    @Getter(value = AccessLevel.PUBLIC)    @Setter(value = AccessLevel.PUBLIC)    public static class Person {        private String name;        private int age;        private boolean friendly;    }    public static class Animal {        private String name;        private int age;        @Getter @Setter private boolean funny;    }    }

    在Structure视图中,可以看到已经生成了getter/setter等方法。

    3a7bd147e3adac0e0bd0149c7ef38c78.png

    编译后的代码如下:这也是传统Java编程需要编写的样板代码。

    //// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package com.trace;public class TestClass {    public TestClass() {    }    public static void main(String[] args) {    }    public static class Animal {        private String name;        private int age;        private boolean funny;        public Animal() {        }        public boolean isFunny() {            return this.funny;        }        public void setFunny(boolean funny) {            this.funny = funny;        }    }    public static class Person {        private String name;        private int age;        private boolean friendly;        public Person() {        }        public String getName() {            return this.name;        }        public int getAge() {            return this.age;        }        public boolean isFriendly() {            return this.friendly;        }        public void setName(String name) {            this.name = name;        }        public void setAge(int age) {            this.age = age;        }        public void setFriendly(boolean friendly) {            this.friendly = friendly;        }    }}

    @ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。

    dc8fa481d82982211bd9eff147f4ab78.png

    @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode

    @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。

    7eed19f1803646d4185bbb635be4bc64.png

    @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。

    staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。

    @NoArgsConstructor:生成无参构造器;

    @RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器;

    @AllArgsConstructor:生成全参构造器。

    57620b659f7fb0ad80b5fc36a3aa23a2.png

    编译后结果:

    public static class Person {    @NonNull    private String name;    private int age;    private boolean friendly;    public String toString() {        return "TestClass.Person(name=" + this.getName() + ", age=" + this.getAge() + ")";    }    @NonNull    public String getName() {        return this.name;    }    public int getAge() {        return this.age;    }    public boolean isFriendly() {        return this.friendly;    }    public void setName(@NonNull String name) {        if(name == null) {            throw new NullPointerException("name");        } else {            this.name = name;        }    }    public void setAge(int age) {        this.age = age;    }    public void setFriendly(boolean friendly) {        this.friendly = friendly;    }    private Person() {    }    private static TestClass.Person of() {        return new TestClass.Person();    }    @ConstructorProperties({"name"})    Person(@NonNull String name) {        if(name == null) {            throw new NullPointerException("name");        } else {            this.name = name;        }    }    @ConstructorProperties({"name", "age", "friendly"})    public Person(@NonNull String name, int age, boolean friendly) {        if(name == null) {            throw new NullPointerException("name");        } else {            this.name = name;            this.age = age;            this.friendly = friendly;        }    }}

    @Data:作用于类上,是以下注解的集合:

    @ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor

    @Builder:作用于类上,将类转变为建造者模式

    @Log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:

    2d94e2851fae10f40387adc0525d2a1e.png

    其他重要注解:

    @Cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象。

    0a5983d1ab51cdedee6c34a23a6aa4e2.png

    编译后结果如下:

    7784908ae449a8c94b084c494ec3d27a.png

    是不是简洁了太多。

    @SneakyThrows:可以对受检异常进行捕捉并抛出,可以改写上述的main方法如下。

    a3c902f8d9ac713eb1b2837ed13518e4.png

    @Synchronized:作用于方法级别,可以替换synchronize关键字或lock锁,用处不大。


    最后,也欢迎各位读者入群来交流切磋技术,戳这里:咱们来一起抱团取暖,好吗?

    ---END---

    1b478647c7d32da8715885f83fc5eb23.png

    热文推荐

    用 IDEA 跟踪 Java 源码的技巧 | 内部资料

    面试官:站点遇到攻击且无明显攻击特征,造成站点访问慢,nginx不断返回502等错误,你能给我分析一下吗?

    面试题:jdk那些类的底层实现使用过位运算,并且给你印象最深?

    给个在看

    人气满满

    04f04f8204e89ed31f545206194919a2.gif

    展开全文
  • 前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。在此,建议大家为本公众号加“星标”。如文章写得好,望大家阅读后在右下边“在看”处点个赞...I/O流的关闭操作等等,这些样板代码既没有技术含量,...

    前语:不要为了读文章而读文章,一定要带着问题来读文章,勤思考。在此,建议大家为本公众号加“星标”。如文章写得好,望大家阅读后在右下边“在看”处点个赞,以示鼓励!

    2f738134607f721453d0c87a65f02136.png

    作者:LiWenD  来源:http://t.cn/EXhxRzV

    以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I/O流的关闭操作等等,这些样板代码既没有技术含量,又影响着代码的美观,Lombok应运而生。

    任何技术的出现都是为了解决某一类问题,如果在此基础上再建立奇技淫巧,不如回归Java本身,应该保持合理使用而不滥用。

    Lombok的使用非常简单。

    1)引入相应的maven包

    <dependency>  <groupId>org.projectlombokgroupId>  <artifactId>lombokartifactId>  <version>1.16.18version>  <scope>providedscope>dependency>

    Lombok的scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

    2)添加IDE工具对Lombok的支持

    IDEA中引入Lombok支持如下:点击File-- Settings设置界面,安装Lombok插件。

    3e1d08c68f50f00ce9ae6f0088726283.png

    点击File-- Settings设置界面,开启 AnnocationProcessors。

    5cb48cc409f764bc574731a05e530062.png

    开启该项是为了让Lombok注解在编译阶段起到作用。

    Eclipse的Lombok插件安装可以自行百度,也比较简单,值得一提的是,由于Eclipse内置的编译器不是Oracle javac,而是eclipse自己实现的Eclipse Compiler for Java (ECJ).要让ECJ支持Lombok,需要在eclipse.ini配置文件中添加如下两项内容:

    -Xbootclasspath/a:[lombok.jar所在路径]-javaagent:[lombok.jar所在路径]

    3)Lombok实现原理

    自从Java 6起,javac就支持“JSR 269 Pluggable Annotation Processing API”规范,只要程序实现了该API,就能在javac运行的时候得到调用。

    Lombok就是一个实现了"JSR 269 API"的程序。在使用javac的过程中,它产生作用的具体流程如下:

    1. javac对源代码进行分析,生成一棵抽象语法树(AST)

    2. javac编译过程中调用实现了JSR 269的Lombok程序

    3. 此时Lombok就对第一步骤得到的AST进行处理,找到Lombok注解所在类对应的语法树(AST),然后修改该语法树(AST),增加Lombok注解定义的相应树节点

    4. javac使用修改后的抽象语法树(AST)生成字节码文件

    4) Lombok注解的使用

    POJO类常用注解:@Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。

    package com.trace;import lombok.AccessLevel;import lombok.Getter;import lombok.Setter;/** * Created by Trace on 2018/5/19. * DESC: 测试类 */@SuppressWarnings("unused")public class TestClass {    public static void main(String[] args) {    }    @Getter(value = AccessLevel.PUBLIC)    @Setter(value = AccessLevel.PUBLIC)    public static class Person {        private String name;        private int age;        private boolean friendly;    }    public static class Animal {        private String name;        private int age;        @Getter @Setter private boolean funny;    }    }

    在Structure视图中,可以看到已经生成了getter/setter等方法。

    6c331aa99bd6e4b14f3085ada81034d8.png

    编译后的代码如下:这也是传统Java编程需要编写的样板代码。

    //// Source code recreated from a .class file by IntelliJ IDEA// (powered by Fernflower decompiler)//package com.trace;public class TestClass {    public TestClass() {    }    public static void main(String[] args) {    }    public static class Animal {        private String name;        private int age;        private boolean funny;        public Animal() {        }        public boolean isFunny() {            return this.funny;        }        public void setFunny(boolean funny) {            this.funny = funny;        }    }    public static class Person {        private String name;        private int age;        private boolean friendly;        public Person() {        }        public String getName() {            return this.name;        }        public int getAge() {            return this.age;        }        public boolean isFriendly() {            return this.friendly;        }        public void setName(String name) {            this.name = name;        }        public void setAge(int age) {            this.age = age;        }        public void setFriendly(boolean friendly) {            this.friendly = friendly;        }    }}

    @ToString:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。

    263b2c4a16911c4445a56bc15d7c063c.png

    @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode

    @NonNull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。

    d42dea8669cf15b12eb8fe6df0ba9e3f.png

    @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。

    staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。

    @NoArgsConstructor:生成无参构造器;

    @RequiredArgsConstructor:生成包含final和@NonNull注解的成员变量的构造器;

    @AllArgsConstructor:生成全参构造器。

    4383c3c23c1292d329b75a824b6d53cc.png

    编译后结果:

    public static class Person {    @NonNull    private String name;    private int age;    private boolean friendly;    public String toString() {        return "TestClass.Person(name=" + this.getName() + ", age=" + this.getAge() + ")";    }    @NonNull    public String getName() {        return this.name;    }    public int getAge() {        return this.age;    }    public boolean isFriendly() {        return this.friendly;    }    public void setName(@NonNull String name) {        if(name == null) {            throw new NullPointerException("name");        } else {            this.name = name;        }    }    public void setAge(int age) {        this.age = age;    }    public void setFriendly(boolean friendly) {        this.friendly = friendly;    }    private Person() {    }    private static TestClass.Person of() {        return new TestClass.Person();    }    @ConstructorProperties({"name"})    Person(@NonNull String name) {        if(name == null) {            throw new NullPointerException("name");        } else {            this.name = name;        }    }    @ConstructorProperties({"name", "age", "friendly"})    public Person(@NonNull String name, int age, boolean friendly) {        if(name == null) {            throw new NullPointerException("name");        } else {            this.name = name;            this.age = age;            this.friendly = friendly;        }    }}

    @Data:作用于类上,是以下注解的集合:

    @ToString @EqualsAndHashCode @Getter @Setter @RequiredArgsConstructor

    @Builder:作用于类上,将类转变为建造者模式

    @Log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:

    43e77493c6a9786893bb552b9ebf202d.png

    其他重要注解:

    @Cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象。

    0efc94d06b7c01dde4ca96f24f1489ae.png

    编译后结果如下:

    a4b24cd03bd17e2f8c6361eeae2fd730.png

    是不是简洁了太多。

    @SneakyThrows:可以对受检异常进行捕捉并抛出,可以改写上述的main方法如下。

    8f4fc7ac90c76dad32428072823751c3.png

    @Synchronized:作用于方法级别,可以替换synchronize关键字或lock锁,用处不大。


    最后,也欢迎各位读者入群来交流切磋技术,戳这里:咱们来一起抱团取暖,好吗?

    ---END---

    90a64db975012e4e5b7daa8767ada931.png

    热文推荐

    用 IDEA 跟踪 Java 源码的技巧 | 内部资料

    面试官:站点遇到攻击且无明显攻击特征,造成站点访问慢,nginx不断返回502等错误,你能给我分析一下吗?

    面试题:jdk那些类的底层实现使用过位运算,并且给你印象最深?

    给个在看

    人气满满

    6a97cf0cfa9e23466db7c24233f68c15.gif

    展开全文
  • 在我们打包之后,有很多模块导出的代码,我们可能根本没有用到过,这些冗余代码也跟着一起打包,这不是赤裸裸的浪费带宽嘛。还有我们使用的框架,里面所有的模块我们都用到了?不见得吧。现在,又出现了tree-

    我们知道,前端页面越来越多,导致我们的js,css文件越来越多。

    在请求的时候,就会占有很多带宽。

    前端er们就发明了打包工具。

    把所有的js文件打包成一个文件,这样减少了http的请求数。

    但是,协作开发模式。在我们打包之后,有很多模块导出的代码,我们可能根本没有用到过,这些冗余代码也跟着一起打包,这不是赤裸裸的浪费带宽嘛。

    还有我们使用的框架,里面所有的模块我们都用到了?不见得吧。

    现在,又出现了tree-shaking技术。

    在打包之前,消除没有被调用过的冗余代码。

    前端开发再也不用会臃肿喽。

    1.rollup.js

    这只框架就可以做到。
    详细了解点这里吧:
    http://www.cnblogs.com/vajoy/p/5518442.html

    2.HTTP/2 vs 打包

    http/1 每个请求占用1个tcp连接。

    http/2 所有请求一起占一个连接,完全多路复用。大家并行一起下载,还不用产生多余的tcp连接,是不是就不需要打包了?加载多个模块不再是一个严重的性能问题。一些人认为模块打包不再需要了。这当然是有可能的。

    展开全文
  • Lombok是一款小巧的代码生成工具。Lombok优点:注解驱动,在编译时自动为属性生成构造器getter/setter、equals、hashcode、toString,...让代码变得简洁,减少大量冗余代码;修改属性对应方法自动调整,提高开发效率;

    目录

    Lombok介绍

    安装插件

    IntelliJ IDEA

    Eclipse

    Maven工程

    使用lombok前

    使用lombok后

    常用注解


    Lombok介绍

    Lombok是一款小巧的代码生成工具。官方网址:http://projectlombok.org/ 

    Lombok类似于一种IDE插件,在使用时Eclipse或IntelliJ IDEA都需要安装相应的插件,在编译器编译时通过操作AST改变字节码生成。它不像spring的依赖注入或者mybatis的ORM一样是运行时的特性,而是编译时的特性。

    Lombok本质上是一个实现了“JSR 269 API”的程序。在使用javac的过程中,它产生作用的流程如下:

    • javac对源代码进行分析,生成了一棵抽象语法树(AST)
    • 运行过程中调用实现了“JSR 269 API”的Lombok程序
    • 此时Lombok就对第一步骤得到的AST进行处理,找到@Data注解所在类对应的语法树(AST),然后修改该语法树(AST),增加getter和setter方法定义的相应树节点
    • javac使用修改后的抽象语法树(AST)生成字节码文件,即给class增加新的节点(代码块)

    Lombok优点

    • 注解驱动,在编译时自动为属性生成构造器getter/setter、equals、hashcode、toString,Constructor等方法代码;
    • 让代码变得简洁,减少大量冗余代码;
    • 修改属性对应方法自动调整,提高开发效率;

    Lombok缺点

    • 降低了源代码的完整性;

    安装插件

    IntelliJ IDEA

    查找插件 lombok plugin 安装即可。

    Eclipse

    java -jar lombok-1.16.20.jar
    弹窗弹窗点击Specify location 选中eclipse安装路径 点击Install:

     

    Maven工程

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.20</version>
        <scope>provided</scope>
    </dependency>
    

    使用lombok前

    public class Order {
    	
        private String payId;
        private String orderId;
        private int payType;
    
        public Order(String payId, String orderId, int payType) {
            this.payId = payId;
            this.orderId = orderId;
            this.payType = payType;
        }
    
        public String getPayId() {
            return payId;
        }
    
        public void setPayId(String payId) {
            this.payId = payId;
        }
    
        public String getOrderId() {
            return orderId;
        }
    
        public void setOrderId(String orderId) {
            this.orderId = orderId;
        }
    
        public int getPayType() {
            return payType;
        }
    
        public void setPayType(int payType) {
            this.payType = payType;
        }
        
    }

    使用lombok后

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Order {
    	
        private String payId;
        private String orderId;
        private int payType;
        
    }

     

    常用注解

    @Getter 生成成员变量的getter方法
    @Setter 生成成员变量的getter方法
    @NoArgsConstructor 生成无参构造器
    @RequiredArgsConstructor 生成包含final和@NonNull注解的成员变量的构造器
    @EqualsAndHashCode 生成覆盖默认的equals和hashCode
    @ToString 生成覆盖默认的toString()方法
    @Data 以上注解的集合:@ToString @EqualsAndHashCode @Getter @Setter @NoArgsConstructor
    @AllArgsConstructor 生成全参构造器
    @Log4j 生成log4j日志变量
    @NonNull 作用于成员变量和参数中,标识不能为空,否则抛出空指针异常
    @Cleanup 自动关闭资源
    @SneakyThrows 检异常进行捕捉并抛出
    @Synchronized 替换synchronize关键字或lock锁

     

    展开全文
  • 之前翻译过一篇文章,介绍了通过 ES2015 的解构赋值语法引入模块,可以让打包工具(browserify)最终编译出来的代码量最小化。 殊不知在 webpack 1.X 版本是无法利用该特性来避免引入冗余模块代码的,导致打出来的 ...
  • 代码精简工具lombok

    2018-05-10 15:42:00
    Lombok是一种通过注解的方式减少JAVA实体类中大量冗余代码,诸如get、set以及构造方法等的Java库 一、安装Lombok 步骤一 项目引入lombok插件 1 - 非maven依赖托管项目再lib文件夹中添加lombok.jar包2 - maven项目...
  • Lombok他是一个通过注解方式来减少你的POJO类的getter和setter等方法的一个工具,我这里演示的在Android Studio中的使用方式,当然如果你使用的是idea那么这方法也通用
  • 代码语法错误分析工具pclint8.0

    热门讨论 2010-06-29 07:00:09
    它进行程序的全局分析,能识别没有被适当检验的数组下标,报告未被初始化的变量,警告使用空指针,冗余代码,等等。软件除错是软件项目开发成本和延误的主要因素。PClint能够帮你在程序动态测试之前发现编码错误。...
  • 大量减少代码量-如果您需要使用AST对代码进行升级,改造,分析,快用gogoAST帮你扩展繁琐冗余代码,专注于你的核心逻辑。不需要遍历,像剥洋葱一样一层一层的对比,操作,构造ast异步。 降低理解成本-甚至不需要...
  • APP开发实战165-利用工具减少APP大小

    千次阅读 2017-04-05 21:36:52
    26.1.4 利用工具减少APP大小 1 使用Lint扫描可以发现冗余代码和资源文件,然后手动删除。 2 在APP的build.gradle文件中,进行以下设置: buildTypes {  release {  //开启混淆功能  minifyEnabled true  /...
  • iOS使用OCLint做静态代码分析 为什么要做代码检查?...减少代码冗余 初识OCLint OCLint是一种静态代码分析工具,用于通过检查C,C ++和Objective-C代码并查找潜在问题来提高质量并减少缺陷。...
  • 优化代码结构,减少冗余代码;提高测试质量,提升整体软件质量;提高测试人员测试分析能力,提高测试设计质量;Cobertura 是一种开源测试工具,它通过检测基本的代码,并观察在测试包运行时执行了哪些代码以及哪些...
  • JDBC工具类——JdbcUtils

    2020-11-27 20:41:22
    我的web一、最终工具类的组成1、类加载时加载驱动2、dbcp连接池:dbcp.properties3、ThreadLocal控制事务4、连接池提高资源利用率5、rowmapper封装减少代码冗余6、template封装减少dao层代码冗余二、JDBC工具类的...
  • 常用的Java Util工具

    2019-09-05 22:47:43
    常用的Java Util工具类 #java.common.util-api-1.8 业界有句话:不重复造轮子。 使用工具类可以减少日常繁琐的编码,减少...作为程序员,应该多善于利用工具减少代码冗余,美化自己的代码。 git地址:https:...
  • 简介 什么是代码审查 代码审查是一个检查代码是否符合编程规范...对样式进行审查的原因有很多,比如它可以维护代码的一致性,解析代码中的错误,减少冗余代码等等。 下面让我们看几个示例: .no-space-after-c...
  • 本期内容分为五个部分,阅读时长预估7分钟: 使用背景 ...编写整洁优雅的代码,减轻CodeReview工作量,减少后续不断重构糟糕冗余代码,自动化代码规范的检查过程? 它就是CheckStyle! 什么是CheckSty
  • jdbc自建工具

    2020-07-29 23:53:03
    白话文,就是把一些常用的代码进行封装,无论是调用也好,还是修改也好都方便,提高代码复用性的同时,减少代码代码冗余 冗rǒng。这个字是这样读的,我说咋打不出来勒。 本次,只介绍前两部分 二、如何自建...
  • 数据库工具

    2019-07-09 16:32:33
    通过工具类的编写,减少jdbc的代码量,减少数据的冗余 jdbc.properties driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/test?useSSL=false user=root pwd=li1234 DBUtils.java public class ...
  • lombok 是一个第三方工具,提供了一些注解功能,可以帮助我们消除冗余、臃肿的 Java 代码,比如 POJO 的 getter/setter 方法、构造方法、hashcode 方法等。lombok 在编译时根据注解生成具体的代码,在虚拟机中运行时...
  • JDBCUtils工具类编写

    2020-10-05 20:37:40
    提示: 大佬可以自动略过哦 文章目录一、JDBCUtils是什么?... 连接数据库,对代码的封装减少代码冗余 二、使用步骤 1.jdbc.properties编写 提示:导入jar包(mysql-connector-java-5.xxxx-bin.jar) 代码如下(示
  • java时间工具

    2019-01-19 23:14:00
    一个良好的工具类不仅可以减少代码冗余,还能促进业务处理,加快进度。 /** * @author: lxw * @Date: 2018/12/25 14:36 * @Description: 时间工具类 */ public class DateUtils { /** * ...
  • 不用每次都调用那么多代码减少冗余,可以自己定义一个工具类来多次调用即可。ImageLoader工具类public class ImageLoaderUtils { private static Builder icf; private static ImageLoader imageloader; //I
  • 封装BaseDao工具

    2019-02-26 19:49:05
    使用BaseDao可以将重复的操作整合,如对数据的增删改查,减少代码冗余。 增删改封装一为个方法,查询封装一个方法,查询个数封装一个方法(方便实现分页查询功能)。 可以使其它Dao继承BaseDao而使用。 代码: ...
  • 一、为什么要封装Jdbc工具类 使用Jdbc连接数据库时,总会有一些代码是必不可少的,如加载驱动、获取连接、释放资源等。为了提高重用性,可以将他们封装在一个工具类中。...5:rowmapper封装 减少代码冗余...
  • 好处:利用java反射机制,一定程度上减少代码冗余量。 代码讲解: java操作Excel数据是为了将Excel表的数据与我们的javabean一一对应起来,hutool这个工具包确实为我们提供了解决方案: excelReader.addHead....
  • 代码徳开发过程中使用封装工具类,可以明显减少代码徳数量,避免代码冗余; 下面是我的一个例子: 使用简单的封装类:JDBCUtils package com.alex.util; import java.io.FileInputStream; import java.sql....

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 280
精华内容 112
关键字:

代码减少冗余工具