第一篇:学习JAVA之前有必要学习C++吗
学习JAVA之前有必要学习C++吗?
在很多大学计算机或软件专业的教程中,C语言及C++往往作为必修课,JAVA往往作为选修或限修课程。C语言是应用最广的语言,在很多工科专业,如机械、电气、通信等都会开设C语言课程。而C++和JAVA作为高级语言,则往往只有计算机类相关专业开设。那么,作为一个想要往软件领域发展的童鞋来说,先学C++还是先学JAVA?如果打算毕业从事java开发,有必要学习C++吗?下面就针对这个问题给大家以简要分析:
JAVA和C++基本思想相同
JAVA和C++都是面向对象思想,同属于高级编程语言。一般来说,做任何高级开发,使用两种编程语言都可以实现。JAVA可以算是C++的表亲,C++也算是JAVA的前辈。JAVA是参照C++的精髓而创造出的编程语言。JAVA希望能取代C++,同时使编程变得简单。JAVA比C++简单
JAVA比C++简单的多,因为C++里有许多比较难的概念,尤其对于初学者来说,比JAVA要难的多。JAVA的初衷就是要比C++简单,而JAVA比C++多的一个优势即时跨平台性,这实际上也使java变得简单,由此可见,JAVA创始人的目的就是使java变成一门容易掌握且强大的简单高级语言。
时间充足的大学生最好了解一下C++
大学生时间比较充足,所以学一下C++还是很有必要的。因为C++中有些内容是非常巧妙的,C++在性能方面要强于JAVA。当然,是先学C++再学java,还是后学C++,都无关紧要了,实际上两者基础部分差不多,从继承和多态处才开始不同。
快速学习者最好精于一门
编程语言,一通百通。你精通了一门,学习其他的就很快了。如果你时间不充足,比如上java培训班的同学们,时间紧迫,不可能兼顾学习java和c++,肯定是从一门由始而终的学到底。这样能够比较快的掌握编程语言,以后时间宽松,则需要多接触一下其他技术,丰富自己的知识技能体系,使自己成为一个真正的“能手”。
第二篇:java之webservice_aegis.xml学习
*.aegis.xml学习
public interface UserInfo {
public User findUserInfosByUserID(String userUniqueID);
public String test();
public Collection findRoleInfosByUserID(String userUniqueID);
}
观察此接口,受限我们看findRoleInfosByUserID方法,此方法传入String,返回类型为Collection,此时,我们即需要配置findRoleInfosByUserID方法。
配置步骤,在接口类的同一包下建立和接口名相同的aegis.xml文件,即UserInfo.aegis.xml文件。
UserInfo.aegis.xml
Java代码
其中,method代表需要配置的方法名,由于XFire可以支持基本类型,针对集合类型时,需要配置,返回类型或参数类型为基本类型时不需要特殊配置。
此时,findRoleInfosByUserID方法配置完毕
PS,还拿此接口举例,如接口中,findRoleInfosByUserID接受的参数也为集合类型,那么需要在
Java代码
index=“0”代表方法的参数的序号,0即第一个参数。
componentType代表集合参数内包含的类型,也可以为自定义对象,例如User
注意,如果findRoleInfosByUserID方法有两个参数,一个比如为String,一个为集合,那么只需要配置集合参数即可。
二。映射POJO
比如还是上面的UserInfo接口,第一个方法
public User findUserInfosByUserID(String userUniqueID);
此时,返回类型为User
如果User中仅为基本类型,例如String,int等基本类型,无需配置User
但如果User中还包含有其他类型,比如包含有Set,List,那么需要对其进行配置
比如User代码如下:
Java代码
public class User implements java.io.Serializable {
private Integer userId;
private String loginName;
private String userPassword;
private Integer SOrder;
private String userCa;
private String userName;
private String userTel;
private String userEmail;
private String ZNote;
private String userCode;
private DicSystemAuth SDicSystemAuth;private
Set SGroupUsers = new HashSet(0);private Set
SUserDepts = new HashSet(0);
}
此时User中还包含有SDicSystemAuth的对象,以及SUserDepts等Set集合这种情况主要可能会出现在使用Hibernate,映射一对一,一对多表时
这里要特别注意
那么此时我们需要对User进行aegis绑定,控制POJO和XML的映射
配置方法:
在User对象所在包内建立User.aegis.xml
由于User中包含Set,那么只需要对集合做设置即可,DicSystemAuth下面单独讨论
我们可以分两次来配置,分别讲解
1,Java代码
此时,配置文件中配置了两个Set集合,componentType明确定义了Set集合内包含的内容
此时,DicSystemAuth即便是自定义的对象类,由于不是集合,XFire也可以对其正确映射。
Java代码
第二种方式,定义了三个字段,并使用了ignore属性,表示这三个属性不能被序列化。
那么,何时会遇到类似于User中Set集合,不被序列化呢?
当客户端访问本地代理时,如果User表内包含有其他表的关联时,如果基于hibernate的持久层,由于hibernate的惰性加载机制,加载User时仅会将User中的属性值加载而不会加载关联表中的值,比如set和SDicSystemAuth对象等,当客户端访问本地代理,序列化User对象时,如果没有设置关联字段是否序列化,那么它会将其全部序列化,但当序列化时,由于hibernate的惰性加载,此时Session已经关闭,那么在序列化关联字段的时候,就会出现session was close的异常。因此解决办法是在aegis绑定时制定关联字段的ignore属性设置为true。
还有一种解决办法,就是仍然按照第一种配置方式,明确指明关联的Set集合内的对象,但在执行序列化前,session关闭之前,提前将关联字段内的值初始化。
用Hibernate.initialize初始化
最后补充一小句
XFire对于自定义的对象可以聪明的找到,前提是它不包含集合例如你的方法返回一个User对象
User中都是基本类型,或者User中包含有Dept对象的引用,都没有问题。
但如果你不希望加载user时序列化Dept出问题,就乖乖把dept初始化或将dept的ignore属性设置为true
本篇文章没什么头绪,想哪儿写哪儿,主要是对这段时间的xfire的基本的学习的一个小结,所以没有太注重词语搭配,以看懂为主。。有时间再来整理整理
注意问题:
当遇到需要映射POJO或配置WebService接口方法返回类型(如集合类型,自定义对象类型)时,需要进行绑定,此时aegis的绑定为建立 xxxx.aegis.xml的文件(xxxx为对应的实
体名,如User.aegis.xml)。对于正常的String,int类型的数据,无需做特别说明就能映射。对于Collection类型,需要如下配置:(例如User对象里包含一个roleList属性)
这是如果你的Role对象里都是基本数据类型,则可以不写Role.aegis.xml,但如果Role对象里也有其他类型的对象,则同样需 要配置Role.aegis.xml。
当然如果你不想映射roleList,可以这么配置(所以无需映射的属性都可以这样配置):
注意:对于一些非标准的写法需要做特殊处理。
例如:在User实体类里有一个方法getOrg(),返回Department对象,但是User实体里面并没有org属性(正因为如此,我称之为非标准写法),这个时候,如果不特殊处理,此处会出现如下异常:
java.lang.StackOverflowError
at com.ctc.wstx.sw.BaseNsStreamWriter.closeStartElement(BaseNsStreamWriter.java:387)
at com.ctc.wstx.sw.BaseNsStreamWriter.checkStartElement(BaseNsStreamWriter.java:436)
at com.ctc.wstx.sw.SimpleNsStreamWriter.writeStartOrEmpty(SimpleNsStreamWriter.java:257)
at com.ctc.wstx.sw.BaseNsStreamWriter.writeStartElement(BaseNsStreamWriter.java:318)
at org.codehaus.xfire.aegis.stax.ElementWriter.writeStartElement(ElementWriter.java:116)
at org.codehaus.xfire.aegis.stax.ElementWriter.
at org.codehaus.xfire.aegis.stax.ElementWriter.getElementWriter(ElementWriter.java:161)
at org.codehaus.xfire.aegis.type.basic.BeanType.getWriter(BeanType.java:421)
at org.codehaus.xfire.aegis.type.basic.BeanType.writeObject(BeanType.java:386)
………………
此时你无法跟踪。
解决办法:在User实体里增加一个org属性,在User.aegis.xml里增加对org属性的配置就行了。
客户端访问方法:
package com.nstar.xfire.client;
import java.util.List;
import java.net.MalformedURLException;
import java.util.ArrayList;
import org.codehaus.xfire.*;
import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;
import com.nstar.xfire.IHelloWordService;
import com.nstar.xfire.Student;
public class HelloWorldClient {
/**
* @param args
*/
public static void main(String[] args){
Service serviceModel = new ObjectServiceFactory().create(IHelloWordService.class);
XFireProxyFactory factory =
XFireProxyFactory(XFireFactory.newInstance().getXFire());
String url = “http://10.232.75.61:8090/Xfire/services/HelloWordService”;
new
try {
IHelloWordService service =(IHelloWordService)factory.create(serviceModel, url);
List list = new ArrayList();
List list1 = new ArrayList();
list.add(new String(“测试”));
int age = service.getAge(“边苏涛”);
String name = service.getName(1);
Student s = service.getOneStudent(27);
list1 = service.getStudent(list);
System.out.println(“边苏涛's age ==”+age);
System.out.println(“学号为1的学生姓名 ”+name);
System.out.println(“age == ”+s.getAge()+“ name == ”+s.getName()+“ list content ”+s.getList().get(0).toString());
System.out.println(list1.size());
for(int i=0;i System.out.println(list1.get(i).toString()); } } catch(MalformedURLException e){ e.printStackTrace(); } } } 学习Java培训有前途吗? 时光匆匆,一转眼,来兄弟连已经一个多月了,我们也学到了很多,悟道了很多,时间就是金钱,在当前阶段,我们也是老大不小了,在这个年纪应该承担的也有很多,我们必须为自己的未来负责,所以,现在时间对于我们来说,就好比是金钱,就好比李明老师说的,因此,你现在的每一天都是很珍贵的,珍惜每分每秒就等于是收获金钱,现在的我们不努力,以后就是自己的苦难日,有这样一句名言:“少年不努力,老大徒伤悲”,当我们不再是年少的时候,不再是那个懵懂无知的少年,你需要为你的未来负责,所以,现在浪费的每分每秒,就等于是浪费你的金钱,更是浪费你的生命。Java培训-兄弟连教育 时间就是生命,每个人的生命是有限的,更是可贵的,当你对时间不负责的时候,就是对你生命的不珍惜。时间这个概念对我们来说再熟悉不过了吧,在我们每天的生活中都离不开它,然而,我们每天度过的大把时间中,有多是对自己有效的呢,又有多少是白白浪费掉了呢,当你在不知不觉间,这一天就过去了,甚至一个月、一年,但是你会头想想,在这些度过的时间里,你真的收获到了多少。也许我们会抱怨时间太少,时间太短暂,来不及去完善人生,然而,你先过没有,我们生活之中,有多少时间是我们不能利用,让它白白流失,当我们回头的时候,已经来不及后悔,所以,我们应有效的利用时间,善于组织有效的时间。树立明确的时间管理目标;成功等于目标,时间管理的目的是在最短时间内实现更多想要实现的目标。人生旅途上,没有木目标就如在黑暗中行走,不知该往何处。有目标才有方向,目标是前进的推动力,能够淋漓尽致的激发人的潜能。明确目标对于构建成功人身至关重要。时间如流水,一去不复回,时光匆匆,当你回头的时候才发现人生已过去一大半,再也无法挽回的青春岁月,年少时光,所以们因承时光大好,珍惜应有的时间,学会去管理和利用人生的每份每秒,还自己一个美好的未来! 学习C++有那些步骤: 1。学习C++基本语法,参考书籍《C++程序设计》》钱能著,或《C++程序设计教程》DEITEL著,我看的是后者; 2。学习数据结构,参考书籍《数据结构C++语言描述——应用标准模板库(STL)》William Ford著; 3。学习STL,参考书籍《C++标准程序库》候捷译; 4。学习模板,参考书籍《泛型编程与STL》候捷译; 5。深入STL内部,直到能自己写出STL的源码,参考书籍《STL源码剖析》候捷译; 6。学习I/O方面的知识,参考书籍《Standard C++ IOStream and Locales》; 7。重温整个C++体系,参考书籍《C++ PRIMER》和《the c++ programming language》; 8。学习前人的技巧和方法,参考书籍〈effective c++>,; 9。再往上走,从宏观上把握C++程序设计体系,参考书籍<设计模式>,《深入探索C++对象模型》,<大规模C++程序设计>; 接下来就可以分2条路走了: 一、偏理论的道路,考研,注意,不是考计算机系,是考数学系,学习集合论,图论等知识,有一套书叫〈计算机程序设计艺术〉一至三卷,等你把他们都看完了,理解透了,就可以直接去微软投简历了。 二、偏应用的道路,学习windows编程,学习MFC,COM,ATL,以及整个.NET体系。 C++的学习感想 06光信2班赵飞学号:060105021106记得大一下学期学习C语言的时候,我们都有这样的困惑:课堂和教材的内容基本上都能接受和理解,但真要实际动手编写程序又感到脑袋一片空白而无从下手;其二,整个课程的所有内容好不容易学完了,但对编写实用化的程序,总感到眼花缭乱而无法下手,真个儿“欲起平之恨无力”。以至于在很长一段时间里在我的内心里产生了一种学习C语言和c++的恐惧感,认为自己不是学C语言和c++的料,将来打死我也不会朝C语言和c++的方向发展。 到了大二后,看着我周围的同学一个个地去参加计算机等级考试,拿了很多证书,一种羡慕感油然而生,决定也要像他们那样多掌握些计算机方面的知识和技术。在我的视野里消失了一年多的C语言和c++又在我的心目中占有了一席之地。我开始决心学好它。恰逢本学期开设了选修课c++,我便毅然决然的报了名,在这门课程快要结束的时候,我也参加报名了计算机等级考试二级c++,看看我这个学期是否真的学了一些东西。 崭新的21世纪,以现代电子信息产业为龙头的全球经济一体化浪潮正席卷世界。此时的我们面临着巨大的挑战和机遇。而以IT技术为基础的信息产业正深入到人类社会生活的方方面面,无论是生产制造、国防和科技等领域,还是第三产业,计算机软件现已成为担任重任的核心力量,互联网和软件已成为新经济发展的重要基础。因此,计算机软件技术将是各类专业的大专生、本科生和研究生必备的基础知识。 c++是著名的C语言的面向对象的扩展。C语言最初设计时是作为一种面向系统软件(操作系统Operating System和语言处理系统)的开发语言,即是用来代替汇编语言的,但是由于它强大的生命力,在事务处理、科学计算、工业控制和数据库技术等几个方面都得到了广泛的应用。即便进入到以计算机网络为核心的信息时代,C语言仍然是作为通用的汇编语言使用,用以开发软件、硬件结合的程序,如实时监控程序、控制程序和设备驱动程序等。而c++是C语言的超集,它保留了C语言的所有组成部分而与之兼容,既可以做传统的结构化程序设计,又能进行面向对象程序设计,也是当今世界上比较流行的程序设计语言。因此,学好c++对我们未来找工作大有裨益。 对于c++的学习,我有一些学习方法可以和大家分享,并认为通过这些方法可以使我们的编程技术获得较大提高: 第一,是要加强实践。C++程序设计语言是一门实践性非常强的课程,若要真正掌握编程技术,使编程能力有较大的实质性的提高,必须在认真听课勤做笔记并读懂教材的基础上,通过上机实验加强开发软件的基本技能训练。只有勤学苦练才能积累宝贵的编程经验,悟出编程技术的要领,牢固地掌握像Borland C++和Visual C++这样优秀的应用程序开发工具,快速冲向计算机应用领域的前沿。 其二,便是要学习掌握相关的程序库(c++当然首先要掌c++标准程序库)、相关的平台技术(eg.NET),因为这些都是学习c++应掌握的辅助知识。在众多的计算机学科中,有很多都出现了内容的交叉现象。我们在学习c++的时候,如果能多看看有关这方面的书和查查相关的资料,对我们地学习也不无裨益。在这些程序库和平台技术上,我们还要锻炼自己对目标问题的分析和归纳能力,做到能够知其然且知其所以然,并能举一反三,扎实、灵活和系统地掌握编程要点。 第三,便是要多看有关c++的资料书。选取一两本自己能够容易看懂的c++方面的书,进行精读,和细读。在学校的图书馆阅览室有很多关于c++编程方面的书籍和资料,我们可以借几本过来,对照着看看,对我们的学习是一定有帮助的。 最后,便是要持之以恒,锲而不舍。罗马的建成不是一日之功,任何学问的从熟练到精通都不是三天两天的事。我们必须明白这个浅显的道理。学习c++本身就是一项艰苦的历程。浮躁的人、没有忍性的人,是肯定学不好c++的。我们必须有狂热的编程热情,否则是很难坚持下去的。我们也必须学会自信,因为有些时候尽管我们花了相当多的时间和精力,我们也不能写出一个程序。写程序确实是很麻烦的,有时需要顿悟,有时需要渐悟。当我们真正学好了,学精通了,便会有“一览众山小” 的感慨了。我们就会因此而有一种莫言的自豪感。 如今美国的次贷危机引发的全球经济危机正袭击着中国的沿海地区,许多的工厂在经济危机的打击下倒闭了,我们的就业压力变得更大了。能否在未来的激烈竞争中脱颖而出、出人头地完全要靠我们的真才实学。在软件技术行业,我们必须掌握好c++。通过对c++的学习达到精通后,我们还可以进一步学习Java、c#等,这时学习这些语言就相对较轻松了。其实只要我们能真正地把c++程序设计语言学精、学透,是不愁找不到工作的。 对我们光信息科学与技术专业,通过学习c++程序设计语言,我们可以用它来进行光学计算、光学设计等,将那些不能通过手工计算设计的,可以通过c++编程算出来,尤其是关于卷积积分、傅里叶变换、拉普拉斯变换等关于高等数学方面的数学物理方程。还有Zemax的光路设计等。可以说,学好c++对我们学光信息科学这一专业的,意义非凡。 因此,我必须努力掌握好它,为自己能够在以后找份好工作打下坚实的基础。 2008.12.16第三篇:学习Java培训有前途吗
第四篇:C++学习步骤
第五篇:c++学习感想