java学习阶段性总结

1 篇文章 0 订阅

废话

最近一直在忙着写一个项目,比较忙,所以最近一直没有来得及写博客,但是这个所谓的一直,我自己都记不清楚是多久了。

在以前我是不喜欢写博客的,觉得太麻烦,还有就是自己的写作能力太差,虽然脑袋里面有很多的想法,但是确实由于表达能力和协作能力太差而不能成文,不能将自己的想法以及见解固化下来,俗话说好记性不如烂笔头还是有一定的道理的。

在写博客的这段时间,还有一个感想就是,写作有时候也能帮助我们自己理清楚思路,在没有写的时候我们总是觉得自己的某个想法已经非常的清晰、很有条理了,但是当我们真正开始用文字将我们的想法记录下来的时候就会感觉脑袋里面的东西还是一团,但是文字表达是需要条理清晰,所以这个时候我们就会发觉我们脑袋里面是装有东西的,但是一旦要用文字将我们脑袋里面的东西导出来,就特别困难。在这种情况下必须要我们自己将我们脑袋里面的想法反复的咀嚼、分解、消化、内化,最终变成我们自己的想法,然后对我们自己的想法进行整理、归档,最终才能通过文字表达出来。

不能用文字很好的表达我们的想法,有时候也是由于我们大脑和手的不协调,就是说我们大脑是运转的非常快的,但是我们的手的速度是比较慢的,当我们的大脑思维太快的时候,我们的手的速度跟不上,就会导致我们写着写着就发觉不知道该怎么写了,要解决这个问题没有速成的办法,就是多表达、多写作,让我们的大脑和我们的手口相协调。

上面是关于写作的一点点心得,因为我原来就是一个特别不爱写作的人,当然我也是个不爱表达的的,也是一个不太会表达的人。但是我决定改变我自己,所以我就坚持写作,从最开始的写一句话到写一段话到写一篇短文…….,不断的训练自己。最开始的时候是最痛苦的时候,老是憋了半天写不了几十个字,到最后干脆把写的全部都删了,最终的感觉是白浪费了半天的功夫,慢慢的慢慢的就感觉比较好了。

java语言的理解

在最开始的学习编程的时候,就只知道调用几个api,但是对语言这个完全没有什么概念,也很少去想为什么我调用了这几个api了之后就能实现我想要完成的功能。当然也没有深入的去想过什么是计算机语言,什么是java语言。

伴随着后面专业课的深入的学习,尤其是编译原理的学习、高级系统结构等课程的学习,让我对编程语言从此有了一个完整的了解,从而也对java语言有了一个完整的了解

要理解编程语言,要理解一个概念就是机器语言,机器语言顾名思义是计算机能理解的语言,那就是01的代码,01代码最终会被转换成为脉冲,因为机器是由电驱动的,并不能理解01是什么意思,只能对电压敏感,所以01代表的就是高电平和低电平……后面的就太深入了,就不在这里详解,具体去看计算机组成原理等相关书籍。

我们假设机器能读懂01的代码了,但是我们用01编写太慢,所以就出现了更高级的语言了,如C、C++。大家会觉得奇怪了,为什么你不说java呢,java相对与C、C++来是有很大区别的。C、C++程序翻译成为的可执行文件可以直接在操作系统上运行,但是java程序翻译后却不能直接在操作系统上运行,需要一个虚拟机。所以翻译后java程序最终还是由虚拟机来执行的。所有java的虚拟机才是能直接运行在操作系统上的可执行文件。

java虚拟机本身就是一个虚拟的计算机,它有自己的指令集,有自己的寄存器等(当然这些都是通过软件模拟的,并不是真实的),基于java具有一个独立的虚拟运行环境的特点,所有java语言才有别与其他的高级语言,相对于其他的高级语言java具有跨平台的有点,当然由于需要翻译执行,所有运行性能相对于其他没有虚拟机的语言稍微要差那么一点。大家平时经常看到的class文件就是java程序文件翻译之后的可以在java虚拟机上执行的可执行文件,所谓的class文件就是java虚拟机的指令集的组合。

所以总结出java运行的流程如下

java程序文件——(javac编译器翻译)——》class文件——(java虚拟机翻译、或者直接运行)——》本地的可执行文件——》执行

jar文件的理解

在上面的话题中讲了什么是java语言,接下来讲的是jar文件,其中是有一个先后关系的,当然这个先后关系看似很明了,但是仍然需要我们去理解。

有了更高级的编程语言了之后,我们发觉确实比用机器语言编写更快了,而且java语言的出现,由于java虚拟机具有的自动管理内存的特点,极大的解放了程序员手动管理内存的辛苦。所以java语言出现了之后,有很大一批程序工作者转向了java语言。

有了效率更高,指令集更人性化的java语言之后,就开始项目的开发了,随着java语言的普遍使用,有经验的程序员发现在自己的着手开发的多个项目中有很多代码是可以重复使用的,如果能将这些代码提取出来做成一个公共的模块,那不是可以节省很多的开发时间,这些被提取出来的公共的模块就是所以的jar文件,当然在sun公司推出的jdk中,已经封装了一些使用比较频繁的代码。这些就包括使用的最多的rt.jar,这个就包含了我们javaSE程序中使用的大部分的api的实现如下图所示
这里写图片描述

终极总结

最后跟大家分享一下我自己通过做项目、看源码之后对java的总结。

用java写程序最最应该注意的就是多线程安全问题,还有就是空对象、数组越界、继承等

java设计模式在jdk自带的jar中还是用的比较多的,在看设计模式的时候,我个人特别推荐你配合jdk中的源码看,这样印象更深刻,一个是方便你了解什么是设计模式,另外一个能让你更好的理解jdk中的代码的组织结构,能让你更有信心的调用jdk中的api,举个例子:比如说观察者模式,在jdk中就有相应的实现,那就事件监听器的实现,具体的实现去看源码。

关于java中大家都很关心的多线程安全问题,据我了解的有以下几种方式:
1. 对于需要修改的全局变量,需要采用同步方式,或者说原子操作,或者说使用局部变量。
2. 还有就是使用ThreadLocal来解决多线程的问题,关于ThreadLocal怎么使用以及使用ThreadLocal解决了什么样的实际问题,可以自己到网上去看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值