zoukankan      html  css  js  c++  java
  • 20155214曾士轩 2016-2017-2 《Java程序设计》第1周学习总结

    20155214曾士轩 2006-2007-2 《Java程序设计》第1周学习总结

    教材学习内容总结

    浏览教材,根据自己的理解每章提出一个问题

    • 1.标准API的架构指的是什么?
    • 2.一个项目良好的文件管理分支应该是怎么样的(怎样管理package,src,classes等)?
    • 3.Java语言和C语言有哪些语法差别?
    • 4.新建对象分配的内存空间和对应类中属性类型有什么联系呢?什么叫做编译程序蜜糖?
    • 5.装箱动作对方法的影响?
    • 6.多态的接口和JAVA中的interface有哪些差别?次态多态指的是什么?
    • 7.两个接口定义了相同的方法是否表示相同的行为?
    • 8.异常处理时是如何将错误包装成对象的?
    • 9.对象的索引是什么?是将索引储存在队列中来读取对象吗?
    • 10.JAVA的输入输出串流和C的文件操作有什么异同吗?
    • 11.如何理解“撰写类操作java.lang.Runnable接口,流程的进入点实操作在run()方法中(而不是main()方法)”?
    • 12.如何理解“同样的Lambda表达式,可以用来表示不同目标类型的对象操作”?
    • 13.为什么要划分机器时间和人类时间?
    • 14.使用队列、栈等不同的结构对衔接NIO衔接数据节点有什么差别呢?
    • 15.一个Logger类应该具有那些属性?
    • 16.通过java.sql.DataSource获得数据来源后,如何将部分数据存储下来?
    • 17.类加载器的功能是继承自java.lang.ClassLoader,那么它的初始搜索路径设置的是在哪?
    • 18.动态代理技术和自定义注释之间存在什么关系?

    教材学习中的问题和解决过程

    了解JAVA的历史

    • 为什么需要Java程序设计语言?

    • 1.Java 是由 Sun Microsystems 在 1995 年首先发布的编程语言和计算平台。
    • 2.IEEE评出的2016年五月语言排行,JAVA稳坐第一。
    • 3.“Java的设计思想保守,他不愿意为增加新特性而增加新问题,也不愿意让某些功能吓跑一线的蓝领工作者。虽然缓慢,但是Java却在不断地前进和变化着。”——《进击的Java》/李盼
    • 4.有许多应用程序和 Web 站点只有在安装 Java 后才能正常工作,而且这样的应用程序和 Web 站点日益增多。Java 快速、安全、可靠。从笔记本电脑到数据中心,从游戏控制台到科学超级计算机,从手机到互联网,Java 无处不在!(https://www.java.com/zh_CN/download/faq/whatis_java.xml)
    • Java解决了什么问题

    • 1."Java就是一种蓝领语言,它的设计是为了让工作中的程序员解决真正的问题。Java是实用的语言,它解决的是真实世界的业务。"——Ben Evans
    • 2.James解释他设计Java但初衷时说:当我在设计的时候,我知道人们想要自动内存管理,人们想要强型式,但是这些功能会吓跑蓝领工人。比如说Smalltalk这是一门很优秀的语言,但是它太先进了,它和现实中开发者们在构建应用时的思维脱离开了。所以Java继承了其中一些理念,并将其简化,把这些理念放入一种语言和格式中。这些事解释了这门语言设计的基本动机。
    • 3.一次编译,到处运行,开源社区活跃。
    • 4.Java本身会见到许多为了节省资源而作的设计,Java一开始就是为了消费性数字产品而设计,而这类小型装置通常有着有限内存与运算资源。

    了解JVM、JRE与JDK,并下载、安装、测试JDK

    • JVM

    • JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

    • JRE

    • JRE为Java Runtime Environment的简称,Java Runtime Environment(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。JavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。

    • JDK

    • JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境,JAVA工具和JAVA基础的类库。

    • Oracle JDK与OpenJDK的关系
    • OpenJDK是Sun在2006年末把Java开源而形成的项目,Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。
      (http://www.cnblogs.com/zengkefu/p/5633342.html)

    • 授权协议的不同:

    • 1.openjdk采用GPL V2协议放出,而JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。

    • 2.OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在Openjdk中是找不到的。

    • 3.OpenJDK源代码不完整:这个很容易想到,在采用GPL协议的Openjdk中,sun jdk的一部分源代码因为产权的问题无法开放openjdk使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。

    • 4.部分源代码用开源代码替换:由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。

    • 5.openjdk只包含最精简的JDK:OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

    • 6.不能使用Java商标
      (http://blog.csdn.net/kiyoki/article/details/8777744)

    学习Java API的重要性

    • 1.Java最重要的就是提供庞大且强大的标准API,提供字符串处理、数据输入/输出、网络套件、用户窗口接口等功能,可以使用这些API作为基础来进行程序开发,无需重复开发功能相同的组件。
    • 2.事实上,在熟悉Java语言之后,更多的时候,都是在学习如何使用Java SE提供但API来组成应用程序。

    了解JCP与JSR、RI、TCK的关系

    • JCP(Java Community Process)成立于1998年,是使有兴趣的各方参与定义Java的特征和未来版本的正式过程
    • JCP使用JSR(Java规范请求,Java Specification Requests)作为正式规范文档,描述被提议加入到Java体系中的的规范和技术。 JSR变为final状态前需要正式的公开审查,并由JCP Executive Committee投票决定。最终的JSR会提供一个参考实现,它是免费而且公开源代码的;还有一个验证是否符合API规范的TCK(Technology Compatibility Kit)
    • RI(reference implementation)是根据JSR成果作出免费且开发原始码的参考实现

    了解Java的学习路径

    了解PATH、CLASSPATH、SOURCEPATH的作用并会设置

    使用sudo vim /etc/profile打开profile 在最后加入PATH、CLASSPATH

    • path 路径,操作系统会依照PATH环境变量中设定的路径顺序,依次寻找各路经下是否有需要的指令。
    • classpath 类的路径,虚拟操作系统需要寻找文档时,通过CLASSPATH指定其可执行文件的路径信息。
    • sourcepath 是程序代码调用类时,编译程序寻找类原始码的文档存放位置。

    理解封装、继承、多态

    • 封装 目前理解,将数据与操作数据的源代码进行有机的结合,形成类的方法。其中数据和函数都是类的成员。
    • 继承 目前理解,子类可以调用、重写父类的属性。
    • 多态 目前理解,多态是允许你将父类设置成子类相等的技术,赋值之后,父类就可以根据当前赋值给它的子类的特性以不同的方式运作。

    Java SE API架构

    • 目前还不太理解,尚未学习。

    容器

    • 容器从操作层面来说,就是执行与JVM上的Java应用程序;从抽象层面来说就是你的应用程序沟通、协调相关资源的系统
    • Java应用程序客户端执行于应用程序客户端容器中。

    这一节的标题是「Java不只是语言」,学完这节内容后你认为Java还是什么?

    • Java首先是一种语言,它预见了时代商业和科技的潮流,逐渐制定出了适应潮流的标准,在标准的基础上满足“跨平台”等特性使得Java成为了蓝领趋势。

    深入理解JVM/JRE/JDK

    JVM

    • JVM是Java程序唯一认识的操作系统,其可执行文件为.class的位码文档。
    • JVM将位码文档翻译为相依于平台的机器码,这是Java“一次编译,到处运行”的关键。

    JRE

    • JRE是Java执行环境,包括Java SE API与JVM。
    • JRE中的Java SE API可以直接提供链接库

    JDK

    • JDK提供像编译程序这样的工具。
    • JDK本身也包括了JRE。
    • 撰写Java程序才需要JDK,执行程序只需要JRE。 <- 思考题:只执行Java程序,不下载JDK可以吗?

    安装JDK,理解「Public JRE」和「Private JRE」的用途

    • 1.安装JDK
      (学习娄老师的JDK安装教程:http://www.cnblogs.com/rocedu/p/6371315.html#SECJDK)

    • 2.public JRE
      公共JRE在安装过程中可以选择为别的位置。它包括各种浏览器的插件,以便于能够在浏览器中执行JAVA小应用程序(Applet)。运行Java虚拟机,Java虚拟机会自动加载公共JRE下面的一个rt.jar包,它是Java核心类库所在。

    • 3.private JRE
      在jdk目录下面有一个子目录jre,这就是private JRE所在的目录。所谓私有JRE,即JDK中的工具包需要用到的JRE。这个jre目录名称是固定的,不能更改。

    代码调试中的问题和解决过程

    初步使用IDE(推荐IDEA),会编译、运行、调试简单的Java程序

    问题:

    • 1.Invalid method declaration

    • 2.Method 'main()' is never used

    • 3.Cannot resolve symbol 'string'

    解决方案:

    • main()方法一定得是 public static void main(String [] args)
    • main()方法是public成员;static表示JVM不用生成类实例就能调用; main()不用传回值;String[] args可以取得用户指定的命令行自变量;

    代码托管

    (前期git本地设置参照卢肖明学长博客 http://www.cnblogs.com/lxm20145215----/p/5905765.html)

    • 代码提交过程截图:

      tree命令可以查看当前目录下的项目分支


    git init命令可以在项目文件下创建一个库
    git add . -A命令可以将当前目录下所有文件上传到库
    git commit -m "撰写注释"命令可以撰写本次上传代码的注释
    git log命令可以查看git上传日志
    git remote add origin git@git.oschina.net:git帐号/项目名.git命令可以链接远程github项目
    git push -u origin master命令可以将本地项目更新到github项目上

    • 托管链接

    http://git.oschina.net/besti155214/myHello

    • 代码量截图:

    上周考试错题总结

    • 本周考试取消了,我对命令行重新做了总结,并复习了上节课的笔记。

    其他(感悟、思考等,可选)

    经过一周目的学习,我发现要从一开始入门时使用搜索引擎发现某个命令,某个软件,某种功能,到能熟练掌握它还有一段不小的距离。
    即使在段时间内进行了突击性学习,没有反复的拿出来练习还是会遗忘。应该将自己学习过的技能多拿出来实战,并且思考一下运用心得。

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 10/10 1/1 15/21 对java学习流程有了一个大致的概念
  • 相关阅读:
    通过WebService跨平台上传大文件到服务器
    C# 委托、Lambda表达式和事件——学习总结
    WIN8、WIN7访问Windows Server 2003服务器的数据库速度很慢、远程速度很慢的解决方法
    C#中接口与抽象类的区别
    DataGridView重查后,返回原来所在行
    需要开拓的领域
    FTP使用心得
    VS的几个实用快捷键
    C#中窗体、MDI的使用心得
    水晶报表使用心得
  • 原文地址:https://www.cnblogs.com/besti155214/p/6420914.html
Copyright © 2011-2022 走看看