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学习流程有了一个大致的概念

20155214曾士轩 2016-2017-2 《Java程序设计》第1周学习总结的更多相关文章

  1. 20155206 2016-2017-2 《JAVA程序设计》 第二周学习总结

    20155206 2016-2017-2<JAVA程序设计>第二周学习总结 教材学习内容总结 类型 整数 字节 浮点数 字符 布尔 变量 变量在命名时,不可以使用数字或一些特殊字符:*.& ...

  2. 20155305乔磊2016-2017-2《Java程序设计》第二周学习总结

    20155305乔磊 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 第三章学习了基本类型 整数(short.int.long) 字节(byte) 浮点数(f ...

  3. 20155313 2016-2017-2 《Java程序设计》第一周学习总结

    20155313 2016-2017-2 <Java程序设计>第一周学习总结 教材学习内容总结 本周的Java学习进入了一个全新的阶段,对于我这样的并没有每天花费时间钻研的同学来说,最后几 ...

  4. # 20155337 2016-2017-2 《Java程序设计》第九周学习总结

    20155337 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 JDBC(Java DataBase Connectivity)即java数据库连 ...

  5. 20145213《Java程序设计》第九周学习总结

    20145213<Java程序设计>第九周学习总结 教材学习总结 "五一"假期过得太快,就像龙卷风.没有一点点防备,就与Java博客撞个满怀.在这个普天同庆的节日里,根 ...

  6. 20145213《Java程序设计》第二周学习总结

    20145213<Java程序设计>第二周学习总结 教材学习内容总结 本周娄老师给的任务是学习教材的第三章--基础语法.其实我觉得还蛮轻松的,因为在翻开厚重的书本,一股熟悉的气息扑面而来, ...

  7. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  8. 21045308刘昊阳 《Java程序设计》第九周学习总结

    21045308刘昊阳 <Java程序设计>第九周学习总结 教材学习内容总结 第16章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 数据库本身是个独立运行的应用程序 撰 ...

  9. 20145330孙文馨 《Java程序设计》第一周学习总结

    20145330孙文馨 <Java程序设计>第一周学习总结 教材学习内容总结 刚开始拿到这么厚一本书说没有压力是不可能的,开始从头看觉得很陌生进入不了状态,就稍微会有一点焦虑的感觉.于是就 ...

随机推荐

  1. [BZOJ 4573][ZJOI 2016]大森林

    [LOJ 2092][BZOJ 4573][UOJ 195][ZJOI 2016]大森林 题意 给定一个树序列, 初始时所有树都只有一个点, 要求支持三种操作: 区间种树(在某个特定点上长出一个子结点 ...

  2. c++我在努力----第三次作业体会

    [github地址](https://github.com/kobe96/object-oriented) 这次作业的三大难点 1.类的应用 从我们并没有接触过c++,到掌握如何写一个程序,多个类的引 ...

  3. 捡了一个非常淫荡的PHP后门,给跪了

    <?php unlink($_SERVER['SCRIPT_FILENAME']); ignore_user_abort(true); set_time_limit(0); $remote_fi ...

  4. 041队列queue(重要,多线程使用)

    内容:队列类型.方法.使用 ###############queue定义了3种信息列队模式类Queue([maxsize]):FIFO列队模式LifoQueue([maxsize]):LIFO列队模式 ...

  5. [零基础学JAVA]Java SE面向对象部分.面向对象基础(03)

     1.静态变量的使用 2.单例模式的使用. 3.构造方法的私有化. 4.string的使用,两种构造的不同. 小的记忆错误: · 数组的长度:数组名称.length     这个没()哈~~ · 字符 ...

  6. 【jQuery】动画小练习

    1.jQuery部分代码如下 <script type="text/javascript"> $(function(){ var page = 1; var i = 4 ...

  7. 【ES6】最常用的es6特性(二)

    1.for of 值遍历 for in 循环用于遍历数组,类数组或对象,ES6中新引入的for of循环功能相似,不同的是每次循环它提供的不是序号而是值. var someArray = [ &quo ...

  8. 【node】安装

    参考链接: http://www.runoob.com/nodejs/nodejs-install-setup.html http://blog.csdn.net/u010255310/article ...

  9. 1、Spring Cloud - 微服务简介

    前言: 业界大牛马丁.福勒(Martin Fowler) 这样描述微服务: 论文网址:https://martinfowler.com/articles/microservices.html 就目前而 ...

  10. xgboost和gbdt区别

    1. xgboost在目标函数中加入了正则化项,当正则化项为0时与传统的GDBT的目标函数相同2. xgboost在迭代优化的时候使用了目标函数的泰勒展开的二阶近似,paper中说能加快优化的过程!! ...