实训总结青软实训报告
Java青岛软件园实训总结
青岛软件园实训总结
甚时候了,可不能装了,不就是个实训么,其实也没什么总结,你说我容易
么,说着仅有的一点实话,却还担心着我的成绩,实训十天左右吧,具体几天,反正我这双手数不过来!
总结嘛,好像不多哎。乱填的数据库及Java的复习,能孪成个甚啊。其余几
天就是像放羊一样,不是说我不听话,分配好任务就自己玩去吧!这叫实训呢,真搞不懂那群老师脑袋怎么回事了,文明点不能骂人。这就是传说中的青岛软件园实训?我真是白活了小半辈子了!简直是大开眼界啊!您当真是哄大朋友玩呢。无语啊,悲哀啊!郁闷啊!又热又闷,烦死啦!
您当我们都是天才啊,有几个能做成的,那不是坑爹是什么?就当是自己发
泄好了,我又不傻是不是啊!这样的总结交上去,虽然不能挨踹,估计也就是高考零分作文的悲剧!
话说今天在市南区放羊,今天青岛总算是停暖了,好不容易凉快了!。可下
午,屋里还是那么的热!机器还连不上网,想想晚上的总结就郁闷了!这可咋整啊!
想想那让人无语的Java就又是一阵晕死。干巴巴的枯燥,一点也不性感,就
算是感性也行啊!倒来倒去你不烦么?还有那满深的bug,j就像浑身的痘痘,想起来何止是郁闷,简直是恶心的吐血啊!胆战心惊的写着总结冷是怕谁在后面看到,其实那倒也无所谓,只要不是让看到的人伤心就好了!
听歌的,兽兽的,扯淡的,无不验证着我说的真理。算求了,吐槽是啥意思
啊!正儿八经的培训就是这意思,还有什么费用想想就让人头大!难道是我的记性不好,不至于吧,我还没老年痴呆呢!除非就是老师坑你们呢!这算不算是反动势力呢!我去!
话说都六百多字了,也不容易,就是…不值钱啊!话说回来实训,单个理解
也不冤枉了,的确是实在在的,也有训话一箩筐!
不知道再过几天会不会的风湿病,前半夜睡得还微热,凑合着,后半夜就凉
下来了,这也到算了,关键还潮的很!又是一阵无语!
算求了,还是去网上找找总结吧,咱也得虚伪一下不是!受益匪浅啊!困死
我了!Java青岛软件园实训总结
扩展阅读:青软实习报告
成绩
生实习报告
实习名称专业实习院部名称信息技术学院专业计算机科学与技术班级11计算机科学与技术(1)班学生姓名陈松学号1105101049实习地点青软实训江苏锐聘信息科技有限公司指导教师莫晓辉
实习起止时间:201*年9月3日至201*年9月14日
金陵科技学院教务处制
学一、实习目的
1、巩固在书本上学到的理论知识,生产实习是作为本学科的一门实践性的课程,将理论知识与实践生产相结合,加深对理论知识的理解。2、获得在书本上不易了解和不易学到的生产现场的实际知识,培养发现问题解决问题的能力,使之在实践中得到提高和锻炼。
二、实习时间
11天
201*年9月3日至201*年9月14日
三、实习地点
青软实训江苏锐聘信息科技有限公司四、实习单位和部门
青软实训江苏锐聘信息科有限公司五、实习内容
9月3号1.准备阶段a)jdk的下载与安装
学习java的第一步当然是搞一个jdk来,从sun的网站上下了一个包含netbeans3.5.1的安装包(j2sdk-1_4_2-nb-3_5_1-bin-windows.exe)。直接双击安装,使用默认路径安装在了C:\\ProgramFiles\\j2sdk_nb下,这样设置环境变量java_home的时候就需要输入C:\\ProgramFiles\\j2sdk_nb\\j2sdk1.4.2,有点长,所以后来被某高手进行了严厉的批评。
安装好jdk之后,进行三个环境变量(java_home,classpath,path)的设置,俺用的是win2k,估计以后用9x的可能性也不大,所以只记下2k的设置方法:右击我的电脑,点属性,选择高级页,点环境变量按钮,ok,可以设了。原来是没有java_home和classpath,需要新建,分别对应值如下:
java_home=C:\\ProgramFiles\\j2sdk_nb\\j2sdk1.4.2(强烈建议各位和我一样的菜鸟不要用默认路径安装);classpath=C:\\Program
Files\\j2sdk_nb\\j2sdk1.4.2\\lib\\tools.jar;C:\\Program
Files\\j2sdk_nb
\\j2sdk1.4.2\\lib\\dt.jar(建议同上,另外后面还有补充);
另外需要在path后面增加C:\\ProgramFiles\\j2sdk_nb\\j2sdk1.4.2\\bin,这样就可以在命令行上使用jdk带的javac、java等工具,如果从来不用命令行工具,不设应该也可以吧(?)。不过为了表示专业,还是设置一下为好。Ok,windows系统就是操作简单,jdk就这样安装完了。b)选择开发工具
工欲善其事,必先利其器。jdk环境装好了,接下来应该选择一个合手的开发工具。我曾经雄心勃勃的要用记事本来写java程序,觉得这样学习起来比较纯净。后来放弃了,因为两方面,一是没有自动缩进功能,而是没有自动完成功能。现在的人都已经被各种集成开发环境惯坏了。
首先看到了旁边某高手正在使用的Eclipse,以前也有所耳闻。赶紧拷贝过来安装,解压后发现是不用安装的^_^。发送一个快捷方式到桌面上,ok,启动啊,是e文的。俺四级是过了,不过那是n年前的事了。为了保证进度,先放弃。然后发现了安装jdk时同时装好的netbeans,当时安装的时候是没有注意到的,还想这个jdk包怎么这么大(90多m)。上netbeans的官方站点()了解了一下,官方站点还有中文版。知道它是sun主推的javaide(要不怎么和jdk捆绑在一起),本身就是由java开发的,最新版本是3.5.1,功能很齐全。双击启动花了一点时间(慢啊),然后又在线更新,终于可以用了。
界面看起来还是比较清楚的。比较喜欢的是它的文件系统的管理,可以直接挂接本地任意目录到文件系统中来。另外它的程序的执行不需要配置,直接就可以用。不论是主类,jsp(内嵌了tomcat4.0.6),还是applet,点击运行按钮都可以迅速被运行。这点很重要,尤其对于刚开始不懂classpath为何物的俺来说。利器已经准备好了,可以开始第一个java程序了。(本来是应该记录安装tomcat的,而且都下好了(4.1.27版本),也装好了(直接解压便可^_^)。不过既然netbeans已经带了,就不费事了,虽然版本略低,对俺应该够用了。)c)第一个程序
第一个程序总是从HelloWorld开始。对我来说,HelloWorld程序如果运行成功,
也就意味着整个的准备工作圆满结束。在netbean中新建一个类hello,编写代码。/***hello.java*@authorAberlee*Date:201*-11-01*Time:09:09:33
*Email:aberlee@msn.com*/
publicclasshello{
publicstaticvoidmain(Stringargs[]){System.out.println("Helloworld!");}}
在此之前,我已经了解了,java之中“一切皆是对象”,所有的java程序都是由一个或者多个class组成。一个能运行的class,必须是public的,必须包含main函数,main函数也必须是public和static的,以及java向控制台输出字符的语句是System.out.println()。
点击运行,在netbeans下面的运行窗口成功打印出了“HelloWorld!”语句。顺利啊,大功告成,以前还对java有偏见,就是因为偶尔写个HelloWorld试试,经常通不过,要不就是通过了编译不能运行。打开控制台试试。转到源代码当前目录,敲入:javahello(enter)
预料中的HelloWorld并没有出现,以前经常看到的错误却又出现了。Exceptioninthread"main"java.lang.NoClassDefFoundError:hello
以前只是偶尔玩一下,遇到问题就丢一边不管了,现在却必须得解决它。看看源代码,和书上的一模一样,即使是书错了也应该不会错在这个程序上吧。而且在netbeans中明明是好的。看NoClassDefFoundError这个单词,好像是找不到这个class的原因。联想起linux中运行某个文件时即使是当前目录文件也要加./,
例如./install.pl。我想错误的原因也许和classpath有关,而netbeans中未报错是因为它有自己的类路径设置(打开netbeans选项看一下,的确如此,而且还有很多个类路径选项)。那么可以使用java的参数-classpath试一试。javaclasspath.hello(注意有个点,这个点代表当前路径)
哈哈,终于运行成功了,看来的确是这方面的问题。现在把当前路径也加到系统的classpath环境变量中,以后运行就不用每次都敲参数了。
classpath=.;C:\\ProgramFiles\\j2sdk_nb\\j2sdk1.4.2\\lib\\tools.jar;C:\\ProgramFiles\\j2sdk_nb
\\j2sdk1.4.2\\lib\\dt.jar(上面提过这有补充的^_^)准备阶段结束了,接下来应该开始真正的java学习了。
Java学习笔记(二)--熟悉开发环境一、JDK(JavaDevelopmentKit)有如下公司或组织开发JDKSunJDKIBMJDKBEAJrocketGUNJDK
其中IBM的JDK包含的JVM(JavaVirtualMachine)运行效率要比SunJDK包含的JVM高出许多。而专门运行在x86平台的Jrocket在服务端运行效率也要比SunJDK好很多。但不管怎么说,我们还是需要先把SunJDK掌握好。1、JDK的下载和安装JDK又叫做J2SE(Java2SDKStandardEdition),可以从Sun的Java网站上下载到,,JDK当前最新的版本是J2SDK1.4.2,建议下载该版本的JDK,下载页面在这里:。
下载好的JDK是一个可执行安装程序,默认安装完毕后会在C:\\ProgramFiles\\Java\\目录下安装一套JRE(供浏览器来使用),在C:\\j2sdk1.4.2下安装一套JDK(也包括一套JRE)。然后我们需要在环境变量PATH的最前面增加java的路径C:\\j2sdk1.4.2\\bin。这样JDK就安装好了。2、JAVADocumentation
java编程手册,java核心所在3、java应用服务器a、tomcatb、ibmwebshperec、beaweblogicd、免费jboss
二、java应用的运行环境应用服务器(AppServer)
AppServer是运行Java企业组件的平台,构成了应用软件的主要运行环境。当前主流的AppServer是BEA公司的WeblogicServer和IBM公司的Websphere以及免费的Jboss,选择其中一个进行学习就可以了,个人推荐Weblogic,因为它的体系结构更加干净,开发和部署更加方便,是Java企业软件开发人员首选的开发平台。下面简要介绍几种常用的AppServer:1、Tomcat
Tomcat严格意义上并不是一个真正的AppServer,它只是一个可以支持运行Serlvet/JSP的Web容器,不过Tomcat也扩展了一些AppServer的功能,如JNDI,数据库连接池,用户事务处理等等。Tomcat被非常广泛的应用在中小规模的JavaWeb应用中,因此本文做一点下载、安装和配置Tomcat的介绍:Tomcat是Apache组织下Jakarta项目下的一个子项目,它的主网站是:,Tomcat最新版本是Tomcat4.1.27,软件下载的连接是:-4/binaries/。下载Tomcat既可以直接下载zip包,也可以下载exe安装包(个人建议zip更干净些),不管哪种情况,下载完毕安装好以后(zip直接解压缩就可以了)。需要设置两个环境变量:JAVA_HOME=C:\\j2sdk1.4.2
CATALINA_HOME=D:\\tomcat4(你的Tomcat安装目录)
这样就安装好了,启动Tomcat运行CATALINA_HOME\\bin\\startup.bat,关闭Tomcat运行shutdown.bat脚本。Tomcat启动以后,默认使用8080端口,因此可以用浏览器访问:8080来测试Tomcat是否正常启动。Tomcat提供了两个Web界面的管理工具,URL分别是::8080/admin/index.jsp
:8080/manager/html
在启用这两个管理工具之前,先需要手工配置一下管理员用户和口令。用一个文本工具打开CATALINA_HOME\\conf\\tomcat-users.xml这个文件,加入如下几行:
这样用户“robbin”就具备了超级管理员权限。重新启动Tomcat以后,你就可以使用该用户来登陆如上的两个管理工具,通过Web方式进行Tomcat的配置和管理了。2、BEAWeblogic
Weblogic可以到BEA的网站上免费注册之后下载到最新的Weblogic8.1企业版,License可以免费使用1年时间,其实这已经完全足够了。Weblogic的下载连接:,.../edocs.bea.com/。3、IBMWebshpere
Websphere同样可以下载到免费的试用版本,到IBM的developerWorks网站可以看到Websphere试用产品的下载和相关的Websphere的资料,developerWorks中文网站的连接是:900.ibm.com/developerWorks/cn/wsdd/,Websphere
的下载连接:。4、Jboss
Jboss是免费开源的AppServer,可以免费的从Jboss网站下载:,然...n.com/idea.html三、Java的应用
Java的应用可以简单分为以下几个方面:1、Java的桌面应用
桌面应用一般仅仅需要JRE的支持就足够了。
2、JavaWeb应用Java的Web应用至少需要安装JDK和一个web容器(例
如Tomcat),以及一个多用户数据库,Web应用至少分为三层:Browser层:浏览器显示用户页面Web层:运行Servlet/JSP
DB层:后端数据库,向Java程序提供数据访问服务3、Java企业级应用
企业级应用比较复杂,可以扩展到n层,最简单情况会分为4层:Browser层:浏览器显示用户页面
Client层:Java客户端图形程序(或者嵌入式设备的程序)直接和Web层或者EJB层交互
Web层:运行Servlet/JSP
EJB层:运行EJB,完成业务逻辑运算
DB层:后端数据库,向Java程序提供数据访问服务
4、Java嵌入式应用Java嵌入式应用是一个方兴未艾的领域,从事嵌入式开发,需要从Sun下载J2ME开发包,J2ME包含了嵌入式设备专用虚拟机KVM,和普通的JDK中包含的JVM有所不同。另外还需要到特定的嵌入式厂商那里下载模拟器。
9月4号变量.数据类型
1.在java里面int占4个字节,long占8个字节2.Java基本数据类型:
整数:(byte一个字节:-128---127int四个字节:-2147483648---+2147483647short两个字节:-32768---+32767long八个字节:)
小数(浮点):floatdouble布尔:boolean
字符:char(两个字节,可以存放汉字,chartest1="中";)引申到字符串(类)3.在java中对char进行运算的时候,直接是当做ASCII码对应的整数4.数据不能从高精度到低精度的转换Byte
应该写成是floata=3.4f;不过可以强制转换:inta=(int)1.2;intb=(int)1.95.inta=1;intb=a+1.2;a先是往高精度转换,然后赋给b,就报错,改成inta=1;doubleb=a+1.2;或者inta=1;floatb=a+1.2f;就解决了。
1.流程控制
1.1switchcase语句中,switch条件表达式的数据类型应该和后面case的类型一致
1.2switchcase语句中,可用的数据类型主要是:byteshortintcharenum2.类与对象
2.1面向对象编程-类与对象
类名首字母大写类里面的元素叫类的成员变量/属性2.2类的定义
package包名;class类名extends父类implements接口名{
成员变量;构造方法;成员方法;}
2.3如何创建对象:
先声明再创建Catcat1;cat1=newCat();一步到位Catcat1=newCat();2.4.引用传递类似于指针一样1.this类变量
1.1this属于类的对象的而不是属于类的
1.2.this不能在类的外部使用,只能在类定义时候使用!1.3.可以用类名直接访问静态变量2.类方法封装
2.1.类变量是该类的所有对象共享的对象,一改全改了2.2.定义语法:访问修饰符static数据类型变量名
2.3类方法(静态方法、静态函数):属于所有对象实例的
2.4Java中:类变量(static)原则上用类方法(static)去访问;类方法中不能访问非静态变量,就是非类变量,但是普通的成员方法可以访问静态变量(类变量)
使用:类名.类方法名对象名.类方法名2.5非类变量就是实例变量,属于每个对象自己的
2.6.Java面向对象编程的三(四)大特征:封装、继承、多态(、抽象)2.7抽象:把一类事物的共有的属性和行为提取出来,形成一个物理模板,此研究问题的方法就是抽象
2.8封装:把抽象出来的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。
2.9封装的访问控制修饰符2.10四种访问控制符:公开级别:public
受保护级别:对子类和同一个包中的类公开
默认级别:没有修饰符,向同一个包的类公开,子类不可以访问类中默认级别的元素的
私有级别:用private修饰,只有类本身才能访问公开>受保护>默认>私有
2.11包的三大作用:区分相同名字的类当类很多的时候可以很好的管理类控制访问范围
2.12包的打包命令:packagecom.xiaoming一般放在文件的开始的地方
2.13引包命令:improt包名访问修饰符重载覆盖
1.一个文家中如果只有public类,那么这个public类可以不用主函数2.不想被继承就设为protected
3.子类最多只能继承一个父类,Java里面不允许一个子类继承多个父类,C++却可以,如Java中一定要呢,就用接口吧
4.Java的所有类都是Object的子类,继承层次数没有限制
7.方法重载:类的同一种功能的多种实现方式,取决于调用者传递的参数8.方法重载注意事项:方法名相同
方法的参数类型,个数,顺序至少有一项不同方法的修饰符可以不同方法的返回类型可以不同另外:
只是返回类型不一样并不构成重载只是控制访问修饰符不一样不构成重载9月5号
1.约瑟夫问题(丢手帕问题)
1.1方法覆盖的:子类有一个方法和父类的某个方法名称、返回类型、参数一样
1.2方法覆盖注意:
子类的方法的返回类型、参数、方法名称要和父类的一样,否则编译出错子类方法不能缩小父类方法的访问权限,但是扩大是可以的,子类抛出比父类更少的异常
2.多态
2.1多态性:访问子类可以通过访问父类:Animalcat=newCat();Animaldog=newDog();
2.2在使用多态的时候,如果有使用覆盖函数,那么被覆盖的方法(即是父类中的的那个相应的方法)是要存在的。
2.3多态:一个引用(类型)在不同情况下的多种状态,可使代码更加灵活2.4java允许父类的引用变量引用它子类的实例,是自动完成的抽象类接口(难点重点)
1.父类方法的不确定性,用抽象类修饰这个方法,abstract。2.抽象类还是可以一样被继承
3.当一个类继承的类是抽象的类时候,就要把抽象类中的所有的抽象方法全部方法实现
4.用abstract关键词来修饰的时候,一定是抽象类和抽象方法5.在使用中不多,公司笔试的时候考很多
6.抽象类不能被实例化,只有被继承以后再去实例化
7.抽象类不一定要包含abstract方法,就算没有abstract方法,也不能实例化它
8.一旦类包含了abstract方法,这个类必须声明为abstract9.抽象方法不能有主体“{}“11.接口不能被实例化
12.接口中的所有方法都不能有主体13.抽象类里面是可以有实现了的方法的
14.接口中的所有方法都不能有主体,即都不能被实现15.接口是更加抽象的抽象类!!!!
16.一个类继承抽象类或是使用接口,那么就要实现所有的抽象方法17.一个类可以实现多个接口
18.接口中可以有变量(但是不能用private,protected修饰)
19.接口中的变量本质上都是静态的,而且是final,不管你加不加static,所以可以直接使用:接口名.变量名
20.在java开发中,经常把常用的变量定义在接口中作为全局变量使用访问形式:接口名.变量名
21.一个接口不能继承其它的类,但是可以继承别的接口22.接口体现了程序设计的多态和高内聚低耦合的思想9月6号final作业评讲
1.实现接口和继承父类的区别:
2.java是单继承,一个类只允许继承一个父类,这种单继承的机制可以保证类的纯洁性,比C++的多继承机制简洁
3.实现接口可以看做是对单继承的一种补充
4.继承是层次式的,不太灵活,修改某个类就会打破这种继承的平衡,但是接口就不会,因为只针对实现接口的类才起作用
5.用接口体现多态:
6.前期绑定:在程序运行之前就进行绑定,由编译器和连接程序实现,又叫静态绑定,如static方法和final方法,包括private方法,它是隐式final的
7.后期绑定:在运行的时候根据对象的类型进行绑定,由方法调用机制实现,因此又叫动态绑定,或是运行时绑定,除前期绑定外的所有方法都属于后期绑定
9.final概念:final可以修饰变量和方法
当不希望父类的某些方法被子类覆盖的时,可以用final修饰当不希望类的某个变量的值被修改,可以用final修饰当不希望类被继承时,可以用final修饰10.final修饰的变量一般用下划线书写
11.如果一个变量是final的,那么定义时候必须赋初值12.final修饰的变量又叫常量,一般用XX_XX_XX命名13.final什么时候用:
处于安全的考虑,类的某个方法不允许修改类不会被其它的类继承
某些变量值是固定不变的,比如pi9月7号讲题目
1.switch只能对int、short、byte以及枚举类型进行判断,case后面只能是常量表达是
2.猜拳的java程序设计:
有个人Tom设计他的成员变量,成员方法,和电脑猜拳,电脑每次都产生一个随机数0,1,2,0表示石头,1表示剪刀,2表示布。
数组
1.数组是可以存放多个同一类型的数据2.用法:
程序员用法:数组定义:数据类型数组名[]=new数据类型[大小];
如:intarr[]=newint[5];或者是int[]arr=newint[5];或者是int[]arr=newint[5];数组引用:数组名[下标]
没事找事用法:数组定义:intarr[];arr=newint[5];或者是int[]arr;arr=newint[5];或者是int[]arr;arr=newint[5];数组引用:数组名[下标]
古板用法:inta[]={1,2,3,4,5,6,7,8,9,0};数组引用:数组名[下标]
3.知道数组的大小:arr.length(成员属性)4.引用在栈里面,对象在堆里面5.对象数组:
对象、字符串的很多不能用”==”,用的话是表示地址相等,比较字符串的内容是否相等是用equals方法
6.数组可存放同一类型数据
简单数据类型(int,float)数组,可以直接赋值
对象数组在定义后,赋值时候需要再次为每个对象分配空间【即是:new对象】
数组大小必须事先指定,如:intx;inta[]=newint[x];是可以的数组名可以理解为指向数组首地址的引用数组的下标是从0开始标号的9月8号多维数组
1.多维数组,定义:
语法:类型数组名[][]=new类型[大小][大小]inta[][]=newint[2][3]第二十讲二进制位运算移位计算1.0的反码和补码都是0
2.我们只会针对有符号的数才讲反码补码
3.java没有无符号数,换言之,java中的数都是有符号的4.在计算机运算的时候,都是以补码的方式运算的5.按位与&或|异或^取反~
6.~-2=-3(00000010->11111101->11111100->10000011)7.2&3=00000010
2|3=00000011
~-5=
(1000
0101->11111010->11111011(补码)->00000100)4
8.有3个移位运算符:
>>算术右移:低位溢出,符号位不变,并用符号位补由于移动而空出的高位
>逻辑右移:
9.记住:对负数操作就要先找补码!!!正数也是,只不过不边罢了。得到的结果如果是正数就结束,如果是负数就再折腾一下,转变成原码才行。
10.-1移动任意位都是-1
11.1
Queue结构的集合类Queue接口
4.Java中所有的对象都是从Object继承下来的5.子类交给父类,可以自动转换,反过来就要强制转换
6.ArrayList中可以多次存放同样的人,ArrayList本质是存放引用7.从ArryList中删除对象
8.字符串相等是地址相等而不是内容相等!
9.雇员管理系统程序的编写(自己改进了一点,不完全,继续改进)10.LinkedList
addFirst表示把元素加在链表的最前面(类似于栈一样)addLast表示把元素加在链表的最后面(类似于队列一样)getFirstgetLastremoveremoveFirstremoveLast11.Vector:
12.Stack用法:(加的时候是在前加的)9月9号集合1.HashMap
HashMaphm=newHashMap();
Empemp=newEmp(“s001”,”aaa”,3.4f);2.HashMap可以存放空置但是HashTable不能存放空值。
3.Hashtable是基于陈旧的Dictionary的,HashMap是Java1.2引进的Map接口的一个实现
4.Hashtable是线程同步的,这个类中的一些方法保证了Hashtable中的对象是线程安全的。而HashMap是异步的,因而HapMap中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那么使用HashMap是一个很好的选择,这样可以避免由于同步而带来的不必要的性能开销,从而提高效率。
5.值:HashMap可以让你将空值作为一个表的条目的key或value,但是Hashtable是不能放入空值的(null)
6.HashTable由于是同步的,有锁,因此是存在等待的,HashMap允许7.ArrayList和Vector区别:
Vector是同步的,是线程安全的,更安全
ArrayList是异步的,不是线程安全的,没有Vector安全
数据增长:Vector缺省情况下是自动增长原来一倍的数组长度,适合保存大量的数据;ArrayList是原来的50%
8.如果要求线程安全,使用Vector、Hashtable,否则ArrayList、LinkedList、HashMap
9.如果要求键值对,使用HashMap、Hashtable10.如果数据量大又考虑线程安全,使用Vector第二十四讲集合补充
HashMap和Hashtable都是实现Map的接口的,ArrayList和LinkedList都是实现List的接口的
10.泛型可以更安全和提高代码重用率,泛型可以利用反射机制拿到类的一系列信息,从而提高代码的优越性。
作业讲评
1.静态变量不给初值也是可以的,默认为0,如果前面有final就一定要赋值了
2.布尔值之间可以用”==”号
3.if(i==1&j==2)//由于”i==1”返回了布尔值,所以就可以过去,否则就不行,但是c中就没有这样的顾虑,c会自动转换成boolen
4.继承中不能缩减被继承的父类中函数的范围(针对函数的参数的范围)5.Math.floor->取一个比某数小的最大整数Math.round->四舍五入
Math.ceil->取一个比某数大的最小整数//ceil:天花板Math.min->需要两个数被操作
6.substring(beginIndex,endIndex)>起始索引包括,结束索引不包括7.字符串的序数也是从0开始计数
8.Java的内存区分为:代码区、栈区和堆区
9.普通变量定义和初始化的时候直接放在栈区,不是普通变量的引用在栈区,对象在堆区
10.类中含有静态变量(函数)时候:直接在数据区(申请空间)11.堆区中有字符串引用池(stringpool),它存放字符串的引用,当字符池发现有字符时就指向字符,字符是存放在堆区中的。相同的字符串指向相同的地址,但是如果要用new来初始化,地址就不一样了,因为new是直接去开辟堆区的空间的。
12.对于对象来讲,==是比较地址
13.a.equals(b)区分大小写,a.equalsIgnoreCase(b)就不区分大小写14.如果希望在子类中调用父类的构造函数,那么一般要求在子类的构造函数中调用
15.super表示当前正要调用该类它父类的变量或方法。9月10号线程坦克大战
1.线程有:新建、就绪、运行、阻塞、死亡状态
2.运行中若资源突然不够用了,就阻塞,等待,一旦又满足条件了就进入就绪状态,如果还是可以满足条件,就再次进入运行状态;运行结束就死亡。
3.在java中,一个类要当作线程来使用有两种方法:继承Thread类,并重写run函数
实现Runnable接口,并重写run函数(如果已经继承了别人的话,在不能多重继承的情况下使用接口)
6.字节流:以字节方式读写的流,可以读取二进制文件和任何类型的文件byte(InputStream,OutputStream)
字符流:可以用于读写文本文件,不能操作二进制文件(Reader,Writer)7.常见io流文件对象
4.常用IO流缓冲字符流,直接操作StringBufferedReaderStreamReader5.总结:
FileInputStream文件字节流:Filef=newFile("d:\\\\test.txt");FileInputStreamfis=null;
FileReader文件字符流:fr=newFileReader("c:\\\\ttt.txt");fw=newFileWriter("d:\\\\ccc.txt");BufferedReader缓冲字符流:fr=newFileReader("c:\\\\ttt.txt");(读行)br=newBufferedReader(fr);9月11号SimpleUMS
UMS(UserManagementSystem),故名用户管理系统,系统的作用就是对用户的增|删|查|改的一些操作
该系统有两类人使用:普通客户,管理员
1.系统刚刚启动,有一个选择页面,要以普通客户还是管理员的身份进入系统,如下界面:
========SimpleUMS==========
请选择要登录系统的身份:1.客户2.管理员3.退出系统(只能输入1\\2\\3)2.无论输入1或者是2,都要进入登录界面,要求输入用户名和密码,如下界面:========SimpleUMS==================用户登录===========请输入用户名:请输入密码:
3.按照要求输入用户名和密码,成功之后进入系统,如果不成功,要给出提示,如下界面:
========SimpleUMS==================用户登录===========
对不起,输入的信息有误,请输入:1.重新登录2.注册新用户(只能输入1或者是2)
如果输入1,则重复2的操作;如果输入2,则进入注册界面,如下界面:========SimpleUMS==================用户注册===========请输入用户名:请输入密码:
请输入生日(yyyy-mm-dd格式):请输入性别(输入1或者是0):请输入学历:
输入对应的信息之后,重复2的操作如果输入3,则退出SimpleUMS系统4.如果是普通客户登录系统,则显示如下信息:========SimpleUMS==========
欢迎你,xxx,请选择操作界面:1.查看自己的信息2.修改密码3.注销如果输入1,列出如下界面:
========SimpleUMS==========姓名:XXX
生日:1989年12月22日性别:男学历:本科
如果输入2,列出如下界面:请输入新密码:请确认新密码:
如果两次密码一样,处理修改密码业务逻辑,界面回到4的界面如果两次密码不一样,一致重复该界面如果输入3,则回到1的界面
5.如果是管理员登录系统,则显示如下信息:========SimpleUMS==========xxx管理员,请选择操作界面:
1.查看全部客户的信息2.查看一个客户的信息3.新增一个客户4.删除一个客户5.修改一个用户6.注销
5.1:如果输入1,则列出全部客户的信息,如下界面序号姓名
性别
学历
出生年月日
1张三男本科1987-11-09
2李四男本科1987-09-123如花女小学1690-11-11输出完之后,还要显示5的大的导航界面5.2:如果输入2,则列出指定客户的,如下界面请输入需要查看客户的id:
如果输入的id存在,则显示客户的信息,如下界面姓名性别
学历
出生年月日
张三男本科1987-11-09输出完之后,还要显示5的大的导航界面如果不存在,则给一个提示,如下界面对不起,指定的客户不存在!
输出完之后,还要显示5的大的导航界面
5.3:如果输入3,则表示从系统的后台添加一个客户,参照注册逻辑5.4:如果输入4,则表示从系统的后台删除一个客户,如下界面请输入需要删除客户的id:
如果输入的id存在,则显示删除成功,如下界面删除指定客户成功
输出完之后,还要显示5的大的导航界面如果输入的id不存在,则显示删除失败,如下界面删除指定客户失败
输出完之后,还要显示5的大的导航界面
5.5:如果输入4,则表示从系统的后台修改一个用户,如下界面请输入需要修改客户的id:
如果输入的id不存在,则给出如下界面对不起,指定的客户不存在
输出完之后,还要显示5的大的导航界面如果输入的id存在,则给出如下界面新的密码:确定新的密码:
新的学历:
输入完信息之后就显示5的大的导航界面5.6:如果输入6,注销,返回登录界面
实现要求:用户的信息要存储在文件中,定义自己好解析的格式存储代码尽量模块化,不要一个类写完全部的功能
任何人不要做成一样,要体现出差异性,否则会被视为抄袭检查时不要出现任何的bug技术提示:用好static关键字
String字符串解析的api文档Map集合的key-value键值对的妙用在解决循环显示的时候,想想while循环
想想经常出现的字符串,是不是有更好的方式处理?看看有哪些数据信息是可以放在Properties里面的设计好实体类的属性和方法设计好UMS类的属性和方法
相关API提示:退出系统(停止程序):System.exit(0);9月12号试题评讲
主要是复习以前的东西:
1.在try里面抛出异常和发生一般的异常是一样的,都会被catch住2.final修饰的类不能被继承了final修饰方法,该方法不能被覆盖
final用于声明属性、方法和类,分别表示属性不可变,方法不可重写,类不可继承
3..包的声明必须是源文件的第一句话
4.类的成员变量可以不赋初值,就是不初始化,但是如果是局部变量就需要给初值
5.字符串相比是比地址,如果字符串一样的话就是一样的地址数据库概念
1.数据库的基本结构
物理数据层:数据库的最内层
概念数据层:数据库的中间层,数据库的整体逻辑表示逻辑数据层:用户所看到和使用的数据库2.SQL语言包括:
数据定义语言(DDL):create、drop、alter数据操作语言(DML):insert、update、delete数据查询语言(DQL):select语句
数据控制语言(DCL):grant、revoke、commit、rollback等3.--如何显示平均工资和最高工资GROUPBYselectavg(sal),
selectavg(sal),max(sal),deptnofromempgroupbydeptno
11.having往往和groupby结合使用,可以实现对分组查询到的结果进行筛选,并可以排序
selectavg(sal),deptnofromempgroupbydeptnohavingavg(sal)
4.凯文米特尼克:黑客
5.自连接:同一张表上的连接查询显示某个员工的上级和他的上级名字
selectenamefromempwhereempno=(selectmgrfromempwhereename="blue")
6.对于自连接可以考虑将表分开的意思,看成两张表
selectworker.ename雇员,boss.ename老板fromempworker,empbosswhereworker.mgr=boss.empno
7.子查询是指嵌入在其它sql语句中的select语句,也叫嵌套查询8.单行子查询:返回单行数据的子查询。select*fromempwheredeptno=(selectdeptnofromempwhereename="lucy")
9.多行子查询:返回多行数据的子查询
--查询和部门10的工作相同的雇员的名字岗位工资部门号select*fromempwherejobin(selectdistinctjobfromempwheredeptno=10)
排除10号部门的:
select*fromempwherejobin(selectdistinctjobfromempwheredeptno=10)anddeptno!=10
10.在from子句中使用子查询???复杂查询
1.如何显示高于部门平均工资的员工的信息,相当于是:1.首先知道各个部门的平均工资
--将1的结果当做一个临时的表select
emp.ename,emp.sal,tmp.myavg
from
emp,(select
avg(sal)myavg,deptnofromempgroupbydeptno)tmpwhereemp.deptno=tmp.deptnoandemp.sal>tmp.myavg
当在from子句中使用子查询时候,该子查询会被作为一个临时表来对待,当在from子句中使用子查询时候必须给予查询指定别名
2.分页查询,按照雇员id号升序取出
3.--请显示第2个到第4个入职的雇员,按照时间的先后顺序,如下:--top后面的数代表要取出几条记录
selecttop3*fromempwhereempnonotin(selecttop1empnofromemporderbyhiredate)orderbyhiredate
4.左外连接、右外连接
显示公司每个员工和他上级的名字
左外连接(leftjoin):左边的表的记录全部要出现,左边表的元素全部要出现,如果没有匹配的记录就用空来填
selectw.enameb.enamefromempwleftjoinempwherew.mgr=b.empno右外连接(rightjoin):右边的表的记录全部要出现,右边表的元素全部要出现,如果没有匹配的记录就用空来填
内连接(innerjoin):显示所有匹配的,不匹配的就不显示了5.约束
1.sqlserver201*约束包括:notnull:
null意思是什么都没有,就像房子没有建起来,但是’’代表占空间了,就像房子建了但是里面没有什么东西
unique:表示不允许重复,是唯一的,但是可以是空值,不过只能是放一个空值,两个空值代表是一样的值。同一个表中,主键只有一个,但是unique可以有多个。
9月14号sqlserverjdbc
1.sqlserver里面都用单引号没问题的
2.显示ResultSet结果集,可以理解为表行的结果集,理解为游标,定义ResultSetrs,此时rs指向结果集的第一行的前一行,rs.getInt(1),括号里面的数字是列,会报空指针,取出第一行的第一列用rs.next(),rs是按照行循环取出的,现在我们就循环取出,rs.next()。
3.Statement和PreparedStatement区别:①Statement:直接将程序送到数据库
②PreparedStatement:它先预编译了一下再传送到数据库中,PreparedStatemen还t带有缓存机制,缓解数据库的压力,效率高,适合使用batch,比较好的解决系统本地化问题,而且能有效防止危险字符的注入,解决sql的注入漏洞问题。
JavaWEB项目(基于JSP+Servlet+MySql)的企业人事管理系统。
六、实习总结
通过这次在青软的实习,我深深的体会到了自己对于一个企业人的差距,这种差距不仅体现在技术上,也体现在经历上。技术方面,我们毋庸置疑,肯定不能胜任IT企业需要的人才。在学校我们可以由着自己性子去做事,而在企业,可能由于你的一个不注意就会给企业带来巨大的损失。作为学生,我已不能在沉溺于温室中,只有尽快的与社会接触我们深深地认识到这次实习带给我们的经验财富。踏上社会才让我认识到社会是一所更能锻炼人的综合性大学,只有正确的深入社会,了解社会,服务于社会,投身到实习中去,才能使我们发现自身的不足,为今后走出校门,踏进社会创造良好的条件;才能使我学有所用,在实习中成才,在服务中成长,并有效的为社会服务,体现大学生的自身价值。今后的工作中,是在现在的锻炼积累经验的基础上,不断拓展活动范围,挖掘和培养人才的潜力。
艰辛知人生,实践长才干”。通过开展丰富多彩的社会实践活动,使我逐步了解了社会,开阔了视野,增长了才干,并在社会实践活动中认清了自己的位置,发现了自己的不足,对自身价值能够进行客观评价。这在无形中使我对自己有一个正确的定位,增强了我努力学习的信心和毅力。我是一名大三学生,即将走上社会,更应该提早走进社会、认识社会、适应社会。
“纸上得来终觉浅,绝知此事要躬行”。这次的实习使我找到了理论与实践的最佳结合点。只重视理论学习,忽视实践环节,往往在实际工作岗位上发挥的不很理想。通过实习所学的专业理论知识得到巩固和提高。就是紧密结合自身专业特色,在实习中检验自己的知识和水平。
友情提示:本文中关于《实训总结青软实训报告》给出的范例仅供您参考拓展思维使用,实训总结青软实训报告:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。