java编程思想(随笔)

       一直都有听说这本书,朋友也都建议去认真看一看,可每次看到那么厚的一本书,就又随手丢到了一边。一转眼就来到了2018年,兜兜转转又捡起了这本书,想要突破现状,唯有一睹。。。

       初读此书,或有所获。趁着这段假期,计划好好的阅读一下,顺便在此留下自己的一些感悟和总结,记录是一个好的习惯,它会记录我们的生活,成为人生的一个印记!对于书中的内容我不会总结的很详细,只是对一些自己之前不是很熟悉或者很重要的内容做一下总结。


初读,略有所获

java.lang 是一个特定类,它会自动被导入到每一个java文件中。

equals()方法:如果在自己编写的类中,使用equals()方法对类进行比较时,需要使这个类覆盖equals()方法;

                             否则,equals()方法默认比较的是对象的引用。

java解释器运行过程:

  1. 找出环境变量CLASSPAT
  2. CLASSPAT用作查找.class文件的根目录
  3. 解释器获取包的名称并将每个句点替换成反斜杠,以从CLASSPAT根中产生一个路径名称(例如:package   foo.bar.baz变成foo\bar\baz或foo/bar/baz或其他,这一切取决于操作系统)
  4. 得到的路径会与CLASSPAT中各个不同的项进行连接,解释器就在这些目录中查找与你所要创建的类名称相关的.class文件

访问权限控制:

访问控制符同一个类同一个包不同包中的子类不同包中的非子类
public(公共的)truetruetruetrue
protected(受保护的)truetruetrue\
无访问控制符(默认的)truetrue\\
private(私有的)true\\\

多态

       作用:消除类型之间的耦合关系

       java中的所有方法都是通过动态绑定实现多态的,static方法和final方法(private方法属于final方法)除外,只有普通方法的调用才可以是多态的。构造器并不具有多态性(它们实际上是static方法,只不过该static声明是隐式的)。

class  StaticSuper{
    public static String staticGet(){
        return "Base staticGet()";
    }
    public String dynamicGet(){
        return "Base dynamicGet()";
    }
}

class  StaticSub extends StaticSuper{
    public static String staticGet(){
        return "Derived staticGet()";
    }
    public String dynamicGet(){
        return "Derived dynamicGet()";
    }
}

public class StaticPolymorphism{
    public static void mian(String[] args){
        StaticSuper sup = new StaticSub();
        System.out.println(sup.staticGet());
        System.out.println(sup.dynamicGet());

    }
}

答案:
    Base staticGet()
    Derived dynamicGet()

复杂对象调用构造器的顺序

  1. 调用基类构造器。这个步骤会不断地反复递归下去,首先是构造这种层次的根,然后是下一层导出类,等等,直到最底层的导出类;
  2. 按声明顺序调用成员的初始化方法;
  3. 调用导出类构造器的主体。
class Meal{
    Meal(){
        print("Meal()");
    }
}

class Bread{
    Bread(){
        print("Bread()");
    }
}

class Cheese{
    Cheese(){
        print("Cheese()");
    }
}

class Lettuce{
    Lettuce(){
        print("Lettuce()");
    }
}

class Lunch extends Meal{
    Lunch(){
        print("Lunch()");
    }
}

class PortableLunch extends Lunch{
    PortableLunch(){
        print("PortableLunch()");
    }
}

public class Sandwich extends PortableLunch{
    priate Bread b = new Bread();
    priate Cheese b = new Cheese();
    priate Lettuce b = new Lettuce();
    public Sandwich(){
        print("Sandwich()");
    }
    public static void main(String[] args){
        new Sandwich();
    }
}

答案:
    Meal()
    Lunch()
    PortableLunch()
    Bread()
    Cheese()
    Lettuce()
    Sandwich()

享元设计模式

  1. 核心概念:若一个系统里要多次调用一个创建复杂的对象,那么就共享一个拷贝的对象,而不必每次都去创建一个新对象。这样既节省了内存,又减小了JVM的压力。
  2. 目的:能够提高系统的性能。
  3. 角色:抽象享元—主要用于定义共享对象的业务需求;具体享元—具体的实现;享元工厂—用于创建具体的享元,维护相同的享元对象,维护一个列表。
资源下载链接为: https://pan.quark.cn/s/22ca96b7bd39 在当今的软件开发领域,自动化构建与发布是提升开发效率和项目质量的关键环节。Jenkins Pipeline作为一种强大的自动化工具,能够有效助力Java项目的快速构建、测试及部署。本文将详细介绍如何利用Jenkins Pipeline实现Java项目的自动化构建与发布。 Jenkins Pipeline简介 Jenkins Pipeline是运行在Jenkins上的一套工作流框架,它将原本分散在单个或多个节点上独立运行的任务串联起来,实现复杂流程的编排与可视化。它是Jenkins 2.X的核心特性之一,推动了Jenkins从持续集成(CI)向持续交付(CD)及DevOps的转变。 创建Pipeline项目 要使用Jenkins Pipeline自动化构建发布Java项目,首先需要创建Pipeline项目。具体步骤如下: 登录Jenkins,点击“新建项”,选择“Pipeline”。 输入项目名称和描述,点击“确定”。 在Pipeline脚本中定义项目字典、发版脚本和预发布脚本。 编写Pipeline脚本 Pipeline脚本是Jenkins Pipeline的核心,用于定义自动化构建和发布的流程。以下是一个简单的Pipeline脚本示例: 在上述脚本中,定义了四个阶段:Checkout、Build、Push package和Deploy/Rollback。每个阶段都可以根据实际需求进行配置和调整。 通过Jenkins Pipeline自动化构建发布Java项目,可以显著提升开发效率和项目质量。借助Pipeline,我们能够轻松实现自动化构建、测试和部署,从而提高项目的整体质量和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值