• java入门笔记二(面向对象及maven)


    安装了eclipse,镜像选择中国的下载比较快。

    1 继承可以使用 extends 和 implements.方法调用时super调用父类方法,this调用当前类方法.

    2 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。

    如果父类的构造器带有参数,则必须在子类的构造器中显式地通过 super 关键字调用父类的构造器并配以适当的参数列表。

    如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

    3 抽象类

    • 1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

    • 2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

    • 3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

    • 4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

    • 5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

    4 Java Iterator(迭代器)不是一个集合,它是一种用于访问集合的方法,可用于迭代 ArrayList 和 HashSet 等集合。和go语言类似。

    5 Object wait() 方法让当前线程进入等待状态。直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法

    6 Object clone() 方法用于创建并返回一个对象的拷贝(浅拷贝)

    7 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。

    8 HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值。HashSet 是无序的,即不会记录插入的顺序。

    HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。

    HashSet 实现了 Set 接口。

    9 套接字使用TCP提供了两台计算机之间的通信机制。 客户端程序创建一个套接字,并尝试连接服务器的套接字。

    当连接建立时,服务器会创建一个 Socket 对象。客户端和服务器现在可以通过对 Socket 对象的写入和读取来进行通信。

    java.net.Socket 类代表一个套接字,并且 java.net.ServerSocket 类为服务器程序提供了一种来监听客户端,并与他们建立连接的机制。

    以下步骤在两台计算机之间使用套接字建立TCP连接时会出现:

    • 服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。

    • 服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。

    • 服务器正在等待时,一个客户端实例化一个 Socket 对象,指定服务器名称和端口号来请求连接。

    • Socket 类的构造函数试图将客户端连接到指定的服务器和端口号。如果通信被建立,则在客户端创建一个 Socket 对象能够与服务器进行通信。

    • 在服务器端,accept() 方法返回服务器上一个新的 socket 引用,该 socket 连接到客户端的 socket。

    连接建立后,通过使用 I/O 流在进行通信,每一个socket都有一个输出流和一个输入流,客户端的输出流连接到服务器端的输入流,

    而客户端的输入流连接到服务器端的输出流。TCP 是一个双向的通信协议,因此数据可以通过两个数据流在同一时间发送。

    maven是java生态下类似于js的npm或者php的composer的管理工具,看起来功能更复杂。

    mac安装

    1 下载http://maven.apache.org/download.cgi 选择第一个Binary tar.gz archive下载,解压。

    移动一下位置 mv -i /workspace/apache-maven-3.6.3/ /usr/local/

    2 vi ~/.bash_profile 加上

    export M2_HOME=/usr/local/apache-maven-3.6.3

    export PATH=$M2_HOME/bin:$PATH

    保存source .bash_profile之后mvn -v发现有报错

    The JAVA_HOME environment variable is not defined correctly
    This environment variable is needed to run this program
    NB: JAVA_HOME should point to a JDK not a JRE
    

      

    改正方法为注释掉原来的#export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home 

    加一行JAVA_HOME=$(/usr/libexec/java_home) 即可

    /usr/libexec/java_home 这个文件是一个 link 文件, 指向 /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java_home ,
    这个 java_home 是一个可执行的文件, 它会输出当前 JAVA_HOME , 你可以在终端中执行 /usr/libexec/java_home
    或者查看该执行文件的指向 ls -l /usr/libexec/ | grep java;

     

  • 相关阅读:
    sqlplus登录用户hang住
    ORACLE_19c用户密码登录失败的问题以及ORA-28040
    索引瘦身_oracle_11g
    Linux内存大页设置
    C++ 总体内容(2)
    C++ 总体内容(1)
    vector中erase的用法
    NGUI中的Tween的委托使用
    IOS Android支持中文与本地文件的读取写入
    Unity人工智能学习—确定性AI算法之追踪算法二
  • 原文地址:https://www.cnblogs.com/mengsx/p/14375692.html
Copyright © 2020-2023  润新知