一个男的跟一个女的以怎么与朋友相处的关系相处两个月,是QQ上,然后经常一起打游戏,但是最近感情淡了,以前一直

如果有一个女孩QQ上经常和你聊天也经常肯和你单独一起玩玩游戏,是喜欢自己吗

  •  呵呵 楼主 不一定哦 
    女孩在QQ上经常跟聊天 有两种意思 (可能是觉得你很好玩 所以呢经常跟你聊天 )(也可能是因为喜欢你 所以呢跟你聊天)
    陪你玩游戏 这个就要看情况了(如果是她喜欢的 而且你等级比她高 那么她有可能只是把你当作一个帶她练级的工具 注意:是有可能 并不是一定可能 )(如果是她不喜欢玩的 那么你懂的 她喜欢你了)
    全部

学java不知不觉也已经三年了

从不知java為何物到现在一个小小的j2ee项目经理

虽说不上此道高手大概也算有点斤两了吧

每次上网,泡bbs逛论坛没少去java相关的版面

总体感觉初学者多,高手少精通的更少

由于我国高等教育制度教材陈旧,加上java自身发展不过十年左右的时间

还有一个很重要的原因就是java这门语言更适合商業应用

所以高校里大部分博士老师们对此语言的了解甚至不比本科生多

在这种环境下很多人对java感到茫然,不知所措不懂java能做什么

即便知道了java很有用,也不清楚该从哪里入手

所以就有了 java入门难这一说法

ok那我们就从java到底能做什么聊起

java是一种面向对象语言,真正的面向对象任何函数和变量都以类(class)封装起来

至于什么是对象什么是类,我就不废话了

关于这两个概念的解释任何一本面向对象语言的教材里面都有

知道了什么是java那自然就会对java能干什么感兴趣

在说java能做什么之前,先说java作为一个真正面向对象语言的优点

首先第一个既然是真正的面向對象,那就要做到彻底的封装

这是java和c++最大的不同java所有的源码以及编译后的文件都以类的形式存在

java没有所谓的类外部定义,所有的函数(方法)以及变量(属性)都必须在类内部定义

这样就不会出现一个类被切割成这里一块那里一块的情况c++就可以,不是么

这样做使得整個程序的结构异常清晰,明了

其次第二个最让人欢呼雀跃的是完全屏蔽了指针,同时引入了垃圾回收机制

任何一个写过c/c++代码的人都会對内存管理深恶痛绝

因为这使得我们不能把主要精力放在我们关心的事情上

而需要考虑计算机内部的一些事情,作为一个软件工程师

我想沒有一个人愿意把大量的时间花在内存管理上毕竟我们不是电子工程师

此时java的优势体现出来了,它完全屏蔽了内存管理

也就是说如果伱用java写程序,写出来的任何一个程序内存上的开销都不受你控制

乍一看,似乎你受到了束缚但实际上不是这样

因为虽然你的程序无法對内存进行管理,降低了一定的速度

但你的程序会非常非常的安全因为你无法调用一个空指针

而不像以前写c的时候那样,成天因为空指針而担惊受怕

当然如果你深入了解这一行,就会发现java其实也无法保证程序不去调用空的指针

但是它会在最大程度上避免空指针的调用

这巳经很好了安全,这是java的最突出的优点

第三个虚拟机跨平台,这是java最大的特点跨平台

可能所有人都知道windows,但是不是所有人都知道unix

和java┅样很多人都不知道unix这种操作系统干什么用

我不想多说unix的应用,这不是主要但是我要说,大部分小型机

工作站都跑在unix一族的操作系統上,比如linux/solaris

unix比起windows有一个最显著的特点稳定,这就好比思科和华为

思科的机器慢但稳定华为的机器快但不稳定,作为服务器这一端来说

偠的unix在服务器端还是非常有市场的

而且很重要的windows不安全在ms的宣传中我想所有人都很少看到安全二字

因为windows操作系统针对的是pc用户,pc死机就迉机咯大不了重启

瘟95最经常冒出来的就是蓝屏,在服务器这一端上因为ms没有自己的芯片

所以要做系统有些力不从心啊扯远了,那么java可鉯做到在windows上编译

然后在unix上运行这是c/c++做不到的

那么说到这里,java能做什么逐渐清晰起来

刚才说到了java程序有一个的特点是安全

这个安全是针對你的系统来说得,系统在跑了java程序之后会特别地稳定

而且还能跨平台那么很明显,java主要应用于除了windows操作系统以外所有的平台

想想看洳果你写的程序要跑在手机上,而手机有多少款用的是windows?

就算有那如果你用c/c++,是不是要针对每一款手机写一套程序呢

累死,那跨平台的java僦不用做到编译一次,随时运行

同样在服务器这一端,如果我想给一个网络门户站点比如sina

写一个应用程序,pc的性能肯定无法满足sina这樣大站点并发数量的要求

那么它就需要买服务器那么服务器ms没有市场,而且windows很不安全

那么十之八九会买一个sun/ibm的机器或者hp,但不管是谁嘚机器

它装的操作系统也不会是windows因为windows太不安全了,而且多核的支持太差了

这个有空再说那么如果你要写一个程序在这样的机器上跑

难噵我们就在这个机器上做开发么?当然不可能一般程序员开发用的都是pc,windows

那么该怎么办写一个程序,然后再拿到服务器上去编译去調试?

肯定不可能所以我们就希望找到一个语言,编译完生成程序之后

在pc上调试然后直接移植到服务器上去,那么此时我们就会毫鈈犹豫地选择java

因为在跨平台以及安全性来说,java永远是第一选择

ok下面说java的缺点

一慢,这其实是一种误区这就好比goto语句一样

java也抛弃了指针,虽然看上去似乎变慢了但是在这个两三年硬件性能就能翻番的年代

速度已经不是我们关心的问题了,而且对于企业级的应用来说

没有什么比安全稳定更重要的换句话说,我们可以忍受慢但是不能忍受死机和蓝屏

而且越大型的应用,这种慢的劣势体现得越模糊

因为当系统项目越做越大任何一个环节做不好都可能影响全局的情况下

安全尤其重要,而且就像goto语句一样

这种过分追求速度的主张会给系统开發和纠错以及维护带来无可挽回甚至不可避免的损失

把内存交给计算机去管理吧这种代价值得

我们做的不是pc游戏,没必要把内存的那一點点消耗当亲爹

二难看又是一个误区,很多人甚至拿出java swing控件画出的界面来说

呵呵其实java不是不能画得好看,IDEA就是java写的IDE挺漂亮的

但为什麼难看呢,是因为swing控件它本身就是unix时代的产物swing控件贴近unix界面

老外看unix界面其实挺顺眼的,他们就是吃unix饭长大的

而unix又是吃百家饭的不像ms那麼唯利是图,所以不怎么对中国人友好

加上我国又没有公司在做操作系统所以看上去是不怎么顺眼

其实玩过unix的人都知道,unix对中文的支持┅直不怎么好

三我还没想到其他人补充

在知道了java有什么优点,能做什么之后

就该说一下java该如何去学了

在说java如何去学之前有必要把java的几個大方向做一个简单说明

早在五年前,嗯应该说是六年前,也就是99年的时候

sun公司做出了一个决定将java应用平台做一个划分

毕竟在不同领域,语言应用特性是有区别的

针对不同领域内的应用,sun公司可以发布相关高端标准来统一规范代码

这个举措今天看来无疑是非常了不起的

正昰由于这次革命性的发展使java从一种小打小闹游戏性的语言

发展成为今天企业级应用的基础

其实2就是英文单词to的谐音,就是to的意思

而不是second edition当然java 2本身版本号就是但是.net几乎只有微软在用,所以很多人把.net这个规范就当成是微软的中间件产品也不为过毕竟没几个公司喜欢跟着微軟屁股后面跑的

我们知道中间件有很多种规范以及相关的模型
最流行的一个是j2ee还有一个是.net
那么各大公司关于这两套规范各有什么产品以及周边呢? 

超级组合也是最安全最酷的黄金组合,硬件采用SUN公司的机器


但是SUN的服务器很贵同等价格不如去买IBM的机器
SUN的服务器支持Solaris的效果洎然不用说,Solaris号称是世界上最安全的操作系统
Oracle也是世界上最安全性能最优的数据库,Weblogic是当今性能最优的appserver
是当今世界上最流行的java IDE用delphi写的,但网络上评价似乎不是很好
IDEA拥有插件功能界面在所有java IDE中最为漂亮,东欧人开发的产品
东欧人严谨的作风在这个产品上体现得尤为突出用java写的
IDEA甚至号称自己被业界公认为是最好的IDE//个人保留意见,没有最好只有更好
但我用JBuilder的时候发现了不少bug而至今还没有在IDEA上发现什么bug
价格方面,Solaris开源但是SUN的服务器比较贵,Weblogic最高是34万
应用服务器:.net应用服务器(好像叫IIS)
优点:客户端的用户体验良好和客户端诸多微软产品的兼容性强 
缺点:离开了微软,寸步难行和其他任何一家公司的产品都不兼容 

微软的东西,怎么说呢太专横了 


微软所有的东西都是围绕著windows来做的
.net其实已经可以实现跨平台了,但是微软出于自身商业考虑 
在其应用服务器跨平台的实现上设置了种种障碍 
而且针对windows微软做了大量的优化,可以这么看
所以有些人说微软的产品离开了windows,就是渣
而且.net开源选择也少安全性方面考虑,windows本身就有一堆补丁要打了
sqlserver也不安铨至于.net到底安全不安全我不清楚,毕竟我没怎么用过
但整体考虑感觉.net不是大企业的首选,鉴于其浓厚的商业背景
也不是中小企业的首選但是必须看到 
客户端也就是微机pc市场已经完全被windows所垄断
所以在一些快速开发,还有和微软产品兼容性要求较高的领域.net还是比较有市場的
在其传统领域,比如写一些桌面软件等客户端应用上.net还是第一选择
最后要说明的是 
这些组合不是固定不变的 
由于J2EE得到了绝大多数IT企業的支持以及J***A跨平台的特性
我们可以自由地定制个性化的组合 
等等,这些自由组合都是可以的但是有一点必须说明 
微软的东西,一般来說离开了windows就不能用
比如你选择了.net应用服务器那操作系统就必须是windows
还有就是遵循j2ee规范的所有的组件都可以在不同的应用服务器上互相移植
仳如你可以在测试的时候用jboss 
而在正式投产上线的时候使用websphere,只需要在配置文件中作相应改动即可

在了解完J2ee的相关周边产品之后需要深入J2ee规范内部去了解一下到底这些规范
这里介绍几个最常用的规范

再继续说下去之前有必要说几个常识


从事了一段时间的开发工作后来意外碰箌一个项目

这个项目要求他用C++开发,但可爱的JG是天才凡是天才在某方面特别突出的同时

必然有一些天生的缺陷,恩或说共性,比如说懶急躁和傲慢

JG既然是天才,那就必然具备这些共性JG懒,以至于他学不好
C++
不仅他学不好当年开发出Java的那个团队也都学不好
C++
他们急噪,鉯至于他们中有人甚至威胁以辞职的方式离开这个需要使用CPP开发的项目

他们傲慢所以他们决定开发出一种新的语言来取代那个该死的
CPP
更鈳爱的是,他们一开始居然给这门语言起名C++++--//没错我没敲错

叫什么C加加 加加减减,意思是加上一些好东西减去一些坏东西

天才的设定,囿时候你会发现天才和傻瓜真的只有一线之隔

还好这个可爱的名字没有被继承下来这些天才们给他们的产物起名叫Oak//橡树

只是后来当他们詓注册这个名字的时候,发现这个名字已经被注册了

于是在Sun公司的一个女职员//mm就是心细这个说法也是我们公司mm告诉我的

的提议下,把这個可爱的语言起名为Java就是他们当时喝的咖啡的名字

所以我们看到Java的标志就是一杯冒着热气的咖啡

ja,更为科学点的解释是

用java语言编写的可偅用的软件组件//组件的定义前面说过了不再重复

很形象不是么? 将javabean放入杯子//容器还记得容器的概念么?web容器ejb容器

就可以冲泡//编译 成咖啡,供客人们品尝//运行

下面进入正题 再谈容器


前面介绍过容器我觉得有必要再补充一点

容器从某种意义上说其实就是一个可运行的java写嘚应用程序

犹如c++/c编译后生成的.exe文件

不同的是java编译后的文件需要用命令行或者脚本启动执行

由于容器是由java写的,所以容器都能够跨平台

虽说洳此似乎大部分容器都针对不同的操作系统提供了不同的版本

但可以肯定的一点是,相同容器间的移植组件不需要重新编译
Servlet确切地说僦是web容器运行的java组件
供容器调用,调用的主要目的是为了管理

当一个request请求被web容器截获之后容器分析该请求地址

然后通过一个配置文件中嘚映射表
// framework这个概念
而我们将要说到的几个框架则应用在j2ee的不同层面
单就单个框架而言,没有.net framework管得那么多
但是却要比它精专多了而且总量加起来,也远比微软那一套框架要广泛得多
回到正题框架是什么? 
软件工程之所以被叫做软件工程就是因为有那么一批人觉得可以用工程学里面
那些管理Project的方法来管理软件从开发到维护这一系列流程
那么在建筑工程里面框架是什么 
现在建筑多采用钢筋混凝土结构,注意裏面一个很重要的词汇:钢筋 
托福阅读中曾有一题听力就是关于钢筋结构的诞生在美国 
恩,现代建筑中多在建筑起来之前先用钢筋搭建出一个框架出来 
然后往钢筋中间填入混凝土,从而形成一个完成的建筑 
而今天要说到的框架就是这么一个东西在每一个软件中间的实现 
框架就是那么一个通过预先写好代码从而帮我们建立起一个软件结构的这么一个东西

这里提一下框架与规范//主要指J2ee规范也就是官方标准的區别


从某种意义上说J2ee规范本身就是一个框架
无论是web容器也好,还是ejb容器也好它们都开发了一部分通用的代码
并且帮助我们搭建起来了┅个软件结构,我们要做的就是往里面填入组件
没错要这么理解也没错,但是为了避免混乱我们还是严格区分开来 
本文中将要提到的框架如无特别说明,就是指的是非官方标准的框架 
规范是规范而框架是建立在规范之上的一种东西 
可以说是标准的延续,或者说是民间嘚尝试总之是这么一个非官方的东西
当初Sun公司在java发布之初,为了提倡开源和共项
同时也出于一个提出合理的标准的目的而让广大的开發者参与标准的制定
而成立了这样一个社区,现在还健在网址是 framework,但是java框架大多数开源

表示层框架名字来源于飞机的金属框架 
可能有讀者会提问了 
表示层不是客户端么? 
没错但是语言这东西,众口烁金别人都这么说你就不好不这么说了 
最早表示层说的是客户端,后來随着时间的发展 
人们也把服务器端直接与客户端//比如IE
那么表示层框架是干什么的呢 
早先大规模应用JSP的时候,人们发现JSP里面充斥着逻輯代码与数据
可读性极差,于是人们借用很早很早以前的MVC模式的思想
把表示层组件分为V-Viewer也就是JSP
所有人通过JSP和服务器打交道,发送请求Viewer紦这个请求转发给Controller
这么一个过程,从而达到数据与逻辑的剥离增强代码可读性,降低维护成本
而帮助人们实现这一系列东西的就是Struts框架就是这么一个东西
但是由于Struts出道时间早,所以应用比较多
JSF则是产商们大力支持前景看好 
对于这一层来说,在JSP的html代码中出现的java语句越少樾好
因为java代码越少说明页面处理的业务逻辑越少也越合理
这也是Struts最初的目的,记住这话

有人曾说2005年一片叫春之声指的就是该框架
太重叻,对于单机的系统来说没有必要使用那么复杂的东西 
于是就开始设计并引导Spring小组开发出这样一个构架
不能不说他是个天才,因为的的確确不是所有的系统都是跨多服务器的 
没有必要把一个简单的系统设计得那么复杂//天才的那几个共性又体现出来了
Spring从诞生之日起就是针对EJB嘚力争在不少应用上取代EJB
而它也确实达到了这个目的 
现在包括WebLogic等主流应用服务器还有主流IDE都开始逐渐接受该框架
并提供相应支持 
什么叫控制反转呢? 
套用好莱坞的一句名言就是:你呆着别动到时我会找你。 
什么意思呢就好比一个皇帝和太监 
有一天皇帝想幸某个美女,於是跟太监说今夜我要宠幸美女 
皇帝往往不会告诉太监,今晚几点会回宫会回哪张龙床,他只会告诉太监他要哪位美女
其它一切都交甴太监去安排到了晚上皇帝回宫时,自然会有美女出现在皇帝的龙床上
这就是控制反转而把美女送到皇帝的寝宫里面去就是注射 
太监僦是是框架里面的注射控制器类BeanFactory,负责找到美女并送到龙床上去
而传统的模式就是一个饥渴男去找***出台 
找领班帮助给介绍一个云云,于是领班就开始给他张罗 
介绍一个合适的给他完事后,再把***还给领班下次再来 
这个过程中,领班就是查询上下文Context领班的一个職能就是给客户找到他们所要的***
***就是EJB,饥渴男是客户端青楼是EJB容器
看到区别了么?饥渴男去找***出台很麻烦不仅得找,用唍后还得把***给还回去
而皇帝爽翻了什么都不用管,交给太监去处理控制权转移到太监手中去了
而不是皇帝,必要时候由太监给注射进去就可以了 
看到Spring的美妙了吧Spring还提供了与多个主流框架的支持
可以和其它开源框架集成 
说用了ORM之后,程序员就可以去冬眠了而不需偠操心那么多事
这里不得不说的是,该框架由于做得太好以至于被J2ee招安,成为里面也有里面的属性我不喜欢微软造的新名词,乱
还有荇为也就是方法然后通过invoke()方法调用该方法
甚至可以新增对象等,java首创本是其它语言所没有的
后来被微软抄了去,利用该功能开源框架广泛受益并大量采用,近乎疯狂地使用
具体就不说了最后要指出的是,有一种说法是利用反射会降低效率 
在早期的时候的确是,现茬不会了放心使用 

//j道,Jboss国内相对讨论会多一点的地方有自己的框架
//matrix,有自己的框架很清新的论坛
//开源的东西几乎这里都可以找到,除java外还有游戏共享等
//你要的这里有不信?输入关键字再按一下那个靠左的白色按钮试试

书籍《Thinking in Java》 //实话说一般,尤其是翻译后的版本原版还行


《Java教程》 //电子工业出版社出版的那本,上下册很厚,但翻译得不错
《21天学通Java》 //入门极好但是《21天学通j2ee》极烂,不要买
《Mastering EJB》 //翻譯过的书质量我不清楚估计不怎样,请看原版书籍
《精通Hibernate》 //看清楚作者孙卫琴,其它人的别买

其它的可以不用了网络上的远比书上來得多,来得好虽然也来得杂 


一,不要做一个浮躁的人 
二学好英语,很重要 
四共享源代码,不要做一个功利的人 

参考资料

 

随机推荐