IDEA的安装和破解;Maven介绍;Object类的学习

1)
IDEA:
简介:全称IntelliJ,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整
合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。
安装及破解:
(1)下载地址:https://www.jetbrains.com/idea/download/
(2)破解:因为Jetbrians系列IDE更新至2017.3版本,所以目前的那些注册码激活,都不能实现破解,当然也可能是我找不到。只找到一个在线激活的,算了一下,激活一次大概三天,
之后可以重新激活,软件不到1M,很不错。破解地址:http://www.imsxm.com/2017/12/go-active-proxy-tool.html
Maven:
简介:Maven是基于项目对象模型(POM即Project Object Model),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
所以Maven不仅仅可以管理项目的构建,而且可以根据项目源码自动生成文档,以及报告。
Maven的主要目标是为了使开发人员在最短的时间内领会项目的所有状态。为了达到这一目标,Maven考虑一下五个方面的内容:
1、使得构建过程更加容易,方便编译,打包,发布
2、为每个项目提供统一的配置
3、提供优质项目信息
4、最佳开发实践
5、安装和更新第三插件透明化
Maven主要做的是两件事:
1.统一开发规范与工具;
2.统一管理jar包;
下载需知:后缀为“tar.gz”是Linux系统上装的,后缀为“zip”的是windows系统上装的;
binary表示编译后的二进制文件,一般比较小,适合直接在项目中使用,
source表示可以查看源代码的,比binary大一些,如果你想看一下maven的源码可以下载这一类的;
一般推荐下载apache-maven-3.5.2-bin.zip这种的。
安装要求:JDK1.7(包括1.7)以上的配置
 下载地址:http://maven.apache.org/download.cgi
安装:(1)将下载压缩包解压到指定目录,注意,解压后有2层目录,所以可以删掉一层。比如我直接安装在E盘,所以bin所在路径是:E:\apache-maven-3.5.2;
 (2)配置环境变量,右击我的电脑->属性->高级系统设置->高级->环境变量->在下面的系统变量点击新建->变量名:MAVEN_HOME 变量值:E:\apache-maven-3.5.2\bin->确定->
 找到Path->编辑->在最后面加上%MAVEN_HOME%\bin(如果path最后面没有 ';' 在加%MAVEN_HOME%\bin前加上 ';' );
 新建(可选):变量名:MAVEN_OPTS 值为-Xms128m -Xmx512m;
 通常需要设置MAVEN_OPTS的值为-Xms128m -Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,
 比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,则很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。
 注意:修改完之后,一路确定出去,不然不会保存
 (3)win+R,输入cmd调出dos命令框,输入 mvn -version;如果安装成功,会出现Maven的版本信息、根目录和jdk的版本信息、根目录。
Maven仓库:Maven统一管理jar包,而这些包放在哪呢?默认地址在C:\...,这个必须要修改啊。开发项目时,项目首先从本地仓库中获取jar包,当无法获取时,
本地仓库就会从远程仓库(中央仓库)下载jar包,并放在本地仓库使用。
修改Maven本地仓库默认地址:
(1)Maven安装目录下的conf\setting.xml编辑
(2)找到下面的注释
<!-- localRepository
       | The path to the local repository maven will use to store artifacts.
       |
       | Default: ${user.home}/.m2/repository
      <localRepository>/path/to/local/repo</localRepository>
      -->,在这里添加<localRepository>D://localRepository</localRepository>
 其中D://localRepository是我设置的本地仓库地址;
(3)右击dos命令框,以管理员模式运行,输入mvn help:system;会从中央仓库下载一些文件到本地仓库。

参考文献:https://www.cnblogs.com/wangshouchang/p/6187436.html
Tomcat:
这个就不多说了,好久前就用了。只是强烈介意用安装版,好卸载,并且不会留下残余。如果是解压版的话,删除步骤不正确,就会留下残余,
虽然不会影响什么,但是看着不舒服。我开始用的解压版就因为删除步骤不对,留下一个服务放在那,各种方法都删不了,难受。而且安装版不需要配置环境变量,很方便。
2) Object类的学习
object类是所有类的父类,每个类都使用object作为超类。所有对象(包括数组)都实现这个类的方法。从jdk1.0就存在。有九大方法,如下:
(1)clone();返回一个Object对象的复制。这个复制方法返回的是一个新对象而不是一个引用。这个方法是为了解决从一个已有对象A创建另外一个与A具有相同状态的对象B,并且对B
的修改不会影响A的状态。例如,Prototype(原型)模式中,就需要clone一个对象实例。要知道java在处理基本数据类型时都是采用值传递(传递的是一个输入参数的复制)的方式
执行,此外其他类型都是按引用传递(传递的对象是一个引用)的方式执行。对象除了在函数调用时时引用传递,在使用"="时也采用对象传递。所以clone()方法是必要的。
System.out.println(x.clone() != x); ===> true
system.out.println(x.clone().getClass() == x.getClass()); ==>true
浅复制和深复制:
浅复制:被复制对象的所有变量都含有与原来对象相同的值,而所有其他对象的引用仍然指向原来对象。也就是说,浅复制知识考虑复制对象,不复制引用对象。
深复制:在浅复制的基础上,那些引用对象的变量将指向被复制的新对象。即深复制吧复制对象所引用的对象都复制了一遍。
一般情况下直接调用clone()进行复制就行了,当然也可以重写clone()方法,然后自己写方法体
Object o = super.clone();//浅复制
o.att = this.getAtt().clone();//深复制,注意att是另一个对象,比如:Date att = new Date();
(2)equals(Object obj);用来比较其他某个对象是否与此对象“相等”.
这个方法比较清楚明了,只要清楚是比较hashcode值和内容相等才会返回true就行。
对于任何非空引用值 x,x.equals(null) 都应返回 false。
注意:当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode 方法的常规协定,该协定声明相等对象必须具有相等的哈希码。 
(3)hashCode();返回该对象的哈希码值。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。 
由 Object 类定义的 hashCode 方法确实会针对不同的对象返回不同的整数。
(4)toString();返回该对象的字符串表示;返回结果应是一个简明但易于读懂的信息表达式。建议所有子类都重写此方法。当然重写的方法可以自己通过StringBuffer或
StringBuild定义想要返回的格式,最后再return 自定义.toString();就可以了。
(5)getClass();返回此 Object 的运行时类。返回的 Class 对象是由所表示类的 static synchronized 方法锁定的对象。
一般通过 实例.getClass().getName();得到该对象的类名
(6)wait();在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0) 调用一样。 
当前线程必须拥有此对象监视器。该线程发布对此监视器的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 
方法通知在此对象的监视器上等待的线程醒来。然后该线程将等到重新获得对监视器的所有权后才能继续执行。 
(7)notify();唤醒在此对象监视器上等待的单个线程。如果所有线程都在此对象上等待,则会选择唤醒其中一个线程。
选择是任意性的,并在对实现做出决定时发生。线程通过调用其中一个 wait 方法,在对象的监视器上等待。 
    直到当前线程放弃此对象上的锁定,才能继续执行被唤醒的线程。被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争;例如,唤醒的线程在作为锁定此对象的
下一个线程方面没有可靠的特权或劣势。
(8)notifyAll();唤醒在此对象监视器上等待的所有线程。线程通过调用其中一个 wait 方法,在对象的监视器上等待。 
直到当前线程放弃此对象上的锁定,才能继续执行被唤醒的线程。被唤醒的线程将以常规方式与在该对象上主动同步的其他所有线程进行竞争;例如,唤醒的线程在作为锁定此对象的
下一个线程方面没有可靠的特权或劣势。 
(9)finalize();当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。子类重写 finalize 方法,以配置系统资源或执行其他清除。
此方法是虚拟机默认调用的,所以一般不建议调用它,或者对其重写。

猜你喜欢

转载自blog.csdn.net/x_i_xw/article/details/78987019