文档章节

读书笔记(七)--Struts技术内幕-深入解析Struts架构设计与实现原理

jtn
 jtn
发布于 2015/04/13 15:09
字数 1556
阅读 2
收藏 0
读书笔记--第7篇--《Struts技术内幕-深入解析Struts架构设计与实现原理
 

0.Java不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范形成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛用于嵌入式系统、移动终端、企业服务器和大型机等各种场合。

1.Java的技术体系主要由5部分构成。

  a.Java程序设计语言;

  b.各种硬件平台上的Java虚拟机;

  c.Class文件格式;

  d.Java API类库;

  e.来自商业机构和开源社区的第三方Java类库。

 
2.Java技术的一个重要优点就是,在虚拟机层面隐藏了底层技术的复杂性以及机器与操作系统的差异性

3.一般情况下,一个程序员只要了解了必要的Java APIJava语法并学习适当的第三方框架,就已经能满足日常开发的需要了,虚拟机会在用户不知不觉中完成对硬件平台和兼容以及内存等资源的管理工作。

4.Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。

5.Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器(对于多核来说是一个内核)只会执行一条线程中的指令。

6.垃圾收集(Garbage Collection,GC)的历史远远比Java久远,1960年诞生于MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成的三件事:

  a.哪些内存需要回收?

  b.什么时候回收?

  c.如何回收?

7.理论总是作为指导实践的工具,能把知识投入到实际工作中才是我们的最终目的。

8.给一个系统定位问题的时候,知识和经验是关键基础,数据是依据,工具是运用知识处理数据的手段。

9.工具永远都是知识技能的一层包装,没有什么工具是“秘密武器”,学会了就能解决所有的问题。

10.代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。

11.一次编写,处处运行(Write Once,Run Anywhere),这句话充分表达了软件开发人员对冲破平台界限的渴求。在无时无刻不充满竞争的IT领域,不可能只有Wintel存在,我们也不希望只有Wintel存在,各种不同的硬件体系结构和不同的操作系统定将会长期并存发展。

12.类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足Java Applet的需求而被开发出来的。如今Java Applet技术基本上已经死掉,但类加载器却在类层次划分、OSGi、热部署、代码加密等领域大放异彩,成为了Java技术体系中一块重要的基石,真可谓是失之东隅,收之桑榆

13.“虚拟机”是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集与执行引擎和结构体系,并且能够执行那些不被硬件直接支持的指令集格式。

14.从外观上来看,所有的Java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。

15.基于栈的指令集和基于寄存器的指令集是同时并存和发展的,两者各有优势,如果有一套指令集全面优于另外一套的话,就不存在选择的问题

    基于栈的指令集最主要的优点就是可移植性。寄存器由硬件直接提供,程序直接依赖这些硬件寄存器则不可避免地要受到硬件的约束。基于栈的指令集最主要的缺点就是执行速度相对来说稍慢一些。所有主流物理机的指令集都是寄存器架构也从侧面印证了这一点。

16.从计算机程序出现的第一天起,对效率的追逐就是程序天生的信仰。

17.Java技术的未来

a.模块化。模块化是解决应用系统与技术平台越来越复杂、越来越庞大而产生
的一系列问题的一个重要途径。

b.混合语言。当单一的Java语言已经无法满足当前软件的复杂需求时,越来越多基于Java虚拟机的语言被应用到软件项目中。Java平台上的多语言混合编程正成为主流,各种语言都可以针对自己擅长的方面更好地解决问题。

  通过特定领域的语言去解决特定领域的问题是当前软件开发应对日趋复杂的项目需求的一个方向。

c.多核并行

  CPU硬件的发展方向已经从高频率转变为多核心,随着多核时代的来临,软件开发越来越多关注并行编程的领域。

d.进一步丰富语法,提高编程效率。

e.64位虚拟机

© 著作权归作者所有

jtn

jtn

粉丝 12
博文 879
码字总数 879609
作品 0
武汉
程序员
私信 提问
使用 Spring 更好地处理 Struts 动作

Struts Recipes 的合著者 George Franciscus 将介绍另一个重大的 Struts 整合窍门 —— 这次是将 Struts 应用程序导入 Spring 框架。请跟随 George,他将向您展示如何改变 Struts 动作,使得...

SeanCai
2010/08/29
194
0
Struts 2再曝远程代码执行漏洞S2-037

导读 今年4月份,Apache Stuts 2之上发现的S2-033远程代码执行漏洞,以迅雷不及掩耳之势席卷而来。其利用代码很快就在短时间内迅速传播。而且官方针对这个高危漏洞的修复方案还是无效的。 悲...

linuxprobe
2016/06/22
0
0
进一步提升 Struts 2 对 Velocity 的支持力度

本文主要介绍如何解决 Struts 2 和最新版本的 Velocity 结合的问题以及进一步提升 Struts 2 对 Velocity 的支持力度。 Struts 2 是 Struts 框架的一个全新版本,它废弃了原有 Struts 1.x 的框...

红薯
2008/10/05
1K
0
weblogic下的jar包冲突问题

最近工作上遇到一个奇怪的技术问题,记录下。 我们服务器是多节点部署的,一共是4台服务器,是通过apache转发到每台服务器的(负载均衡),每台服务器的架构都是一样的,都是用weblogic作为服...

六六木木
2013/09/09
3.3K
0
Struts 源码学习之ActionServlet ( 一)

Struts 源码最新版本为 struts-1.3.8-src.zip ( 12-Mar-2007 00:06 ) 学习笔记使用struts-1.3.5-src.zip 的源码, 下载地址:http://archive.apache.org/dist/struts/source/ 1. 在web.x......

xiahuawuyu
2012/05/17
137
0

没有更多内容

加载失败,请刷新页面

加载更多

Android Binder机制 - interface_cast和asBinder讲解

研究Android底层代码时,尤其是Binder跨进程通信时,经常会发现interface_cast和asBinder,很容易被这两个函数绕晕,下面来讲解一下: interface_cast 下面根据下述ICameraClient例子进行分析...

天王盖地虎626
昨天
5
0
计算机实现原理专题--存储器的实现(二)

计算机实现原理专题--存储器的实现(一)中描述了一种可以记住输入端变化的装置。现需要对其功能进行扩充,我们将上面的开关定义为置位,下面的开关定义为复位,然后需要增加一个保持位,当保...

FAT_mt
昨天
3
0
集合--Collection与迭代

1.1Collection 集合 集合:集合是Java提供的一种容器技术,可以用来存储多个数据 集合与数组的区别: 数组的长度是固定的,集合的长度是可变的 数组中存储的是同类型的元素,存储基本数据类型...

Firefly-
昨天
10
0
聊聊rocketmq的consumeTimeout

序 本文主要研究一下rocketmq的consumeTimeout consumeTimeout rocketmq-client-4.5.2-sources.jar!/org/apache/rocketmq/client/consumer/DefaultMQPushConsumer.java public class Defaul......

go4it
昨天
2
0
JAVA--高级基础开发

Day13[Map集合练习题] 练习一:Map接口的特点 请简述Map 的特点: Map集合中存放的数据都是键值对,并且键不能相同,值可以相同。 Map集合中的Key是根据Set集合来存放的。 Map集合可以使用n...

李文杰-yaya
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部