Coder Social home page Coder Social logo

blog's Introduction

GitHub博客

本博客的实现根据后面这篇文章而搭建:传送门

GitHub使用心得

新手入门看这篇。传送门

blog's People

Contributors

johnhoowong avatar

Stargazers

 avatar

blog's Issues

7个程序员接活平台

一、程序员客栈:程序员的经纪人 www.proginn.com

二、快码众包-让互联网产品开发更快速 www.kuai.ma

三、Coding 码市 - 基于云技术的软件外包服务平台 codemart.com

四、开源**众包平台 oschina众包 zb.oschina.net

五、码易-高质量软件众包交付服务平台 www.mayigeek.com

六、人人开发 - 集可视化开发,应用市场,威客众包 www.rrkf.com/

七、开发邦-专业互联网软件技术开发与咨询服务 www.kaifabang.com

Lombok使用心得

背景

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

引入相应的maven包

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>x.x.x</version><!--1.16.18-->
  <scope>provided</scope>
</dependency>

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

IDEA中引入Lombok支持

  • 点击File-- Settings-- Plugins插件界面,搜索安装Lombok插件:
    lombok Plugin
  • 点击File-- Settings-- Build,Execution, Deployment-- Compiler-- Annotation Procressors界面,开启Annocation Processors
    lombok annotation

Lombok注解的使用

POJO常用注解:

  • @Getter/@Setter: 作用类上,生成所有成员变量的getter/setter方法;作用于成员变量上,生成该成员变量的getter/setter方法。可以设定访问权限及是否懒加载等。
  • @tostring:作用于类,覆盖默认的toString()方法,可以通过of属性限定显示某些字段,通过exclude属性排除某些字段。
  • @EqualsAndHashCode:作用于类,覆盖默认的equals和hashCode
  • @nonnull:主要作用于成员变量和参数中,标识不能为空,否则抛出空指针异常。
  • @NoArgsConstructor:作用于类上,用于生成构造函数。有staticName、access等属性。
    staticName属性一旦设定,将采用静态方法的方式生成实例,access属性可以限定访问权限。
  • @NoArgsConstructor:生成无参构造器;
  • @requiredargsconstructor:生成包含final和@nonnull注解的成员变量的构造器;
  • @AllArgsConstructor:生成全参构造器。
  • @DaTa:作用于类上,是以下注解的集合:@tostring @EqualsAndHashCode @getter @Setter @requiredargsconstructor
  • @builder:作用于类上,将类转变为建造者模式
  • @log:作用于类上,生成日志变量。针对不同的日志实现产品,有不同的注解:

其他重要注解:

  • @cleanup:自动关闭资源,针对实现了java.io.Closeable接口的对象有效,如:典型的IO流对象
  • @synchronized:作用于方法级别,可以替换synchronize关键字或lock锁,用处不大。

冒泡排序(Java版)

定义(从小到大排序):

通过相邻两个元素的比较,把大的数放到后面,一轮过后最大的数“浮”到最后面。这样“浮”到最后的元素就是已经排好序的。然后通过每一轮把剩余的序列“浮”出最大的数到最后面,最终得到排好的序列。

排序步骤:

  1. 将序列中所有的元素进行两两比较,将最大的元素放在最后面。
  2. 将剩余的序列中所有元素进行两两比较,将最大的元素放在最后面。
  3. 重复第二步,直到只剩下一个数。

如何写成代码:

  1. 设置循环次数;
  2. 设置开始比较的位数,和结束的位数;
  3. 两两比较,将较大的数放到后面去;
  4. 重复2、3步,直到循环次数完毕。

代码实现:

void bubbleSort(int[] a){
    int length = a.length;
    int temp;
    int flag;    //交换标志(0代表没有交换过,1代表交换过)
    for(int i = 0; i < length; i++){    //外层循环控制轮数,总轮数为length
        flag = 0;    //置为0
        for(int j = 0; j < length - i - 1; j++){    //内层循环为当前第i轮数所需要比较的次数。为什么-1:每多一轮则减少一次比较次数。
            if(a[j] > a[j+1]){
                temp = a[j];
                a[j] = a[j+1];
                a[j+1] = temp;
                flag = 1;    //置为1
            }
            if(flag == 0)    //如果没有交换过,则代表序列已经有序,不必再比较。
                break;
        }
    }

时间复杂度:

最好的情况:当序列是顺序序列时,元素不需要移动,所以最好的时间复杂度为O(n);
最坏的情况:当序列是逆序序列时,元素每比较一次都需要移动一次,最坏的时间复杂度为O(n²);
所以平均时间复杂度为O(n²)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.