第一周
实习第一个礼拜,算是适应期。主要了解一些公司的背景、产品、发展方向
等。刚到实习公司,不是像学校里的朝九晚五,而是朝八晚九。 我们不可能简
单的了解一些企业文化,简单的学学新的知识就可以了,我们的这个实习必将是
一个繁忙的实习,也必将是一个充实的,进步的实习。来到这里,我们要忘掉大
学里自由的作息时间,克服困难,养成良好的工作生活习惯 。基于各方面的原
因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如学习
时间长,实战比较繁多,但时间又比较的短,难以保证按时按质按量完成。下午
下了班,员工们都回去了,我还在那儿练习,一直到晚上 9 点,才能回住处休息。
中午也没有休息的地方,只能趴在电脑前休息一会,一两周下来,相当地疲惫。
但我们都明白自己来实习的任务,都坚持着完成自己的任务和使命。这个星期熟
悉了工作环境、java 编程的环境配置。等慢慢熟悉起来,做起事情也越来越顺
手了.简单的总结为几个字,那就是:多看,多问,多观察,多思考!
第二周
实习第二个礼拜,主要是熟悉 java 的基础语法,把基础打扎实,以后在开
发中才能如鱼得水。学习总结如下几点:
1、类之间的关系:关联、聚合、继承、实现和多态。
2、基本数据类型:整数型、浮点型、字符型、布尔型。
3、常用逻辑语句和循环语句:switch 只支持 int 类型判断,没有写 break 易穿
透至下一个循环,jdk7.0 貌似增强了支持数据类型。Break:强行退出循环;
Continue:跳出当前循环。
5、修饰符:pbulic,private,protected,default。设置访问权限。
6、Static 关键字:静态修饰符,它修饰的方法、类和变量可以全局调用。
7、Final 关键字:禁止重写。
8、This 关键字:指向自身引用。
9、string:是不可变的字符序列。(两个 string 变量必须用 copy 的方式在内
存中 new 出新的数据块)
10、stringBuffer:是可变的字符序列,可以直接添加字符。
第三周
实习第三个礼拜,主要是熟悉 java 的高级语法(核心)
继承:子类继承父类的所有属性和方法,如果方法和属性被 private 修饰,
子类则无法读取。子类使用 Super 关键字继承。父类无法调用子类方法。
构造方法:方法名称必须与类名相同,且没有返回值。Object 类是所有类的父
类,即 java 中的根类。无参构造方法默认继承 object 的。(构造方法的重载,
实现不同参数的构造)
重载:方法相同,参数类型不同,数量不同。构造方法中也常使用方法重载。
重写:重写方法必须和被重写方法具有相同参数列表、相同方法和相同返回值。
重写方法不能使用比被重写方法更严格的访问权限。
抽象:抽象类被继承后,方法必须被重写并实现,否则子类也还是抽象类。抽象
方法只需声明,无需实现。接口:实现关键字 implements。接口中所有成员变
量和方法都是 public。接口可以继承其他接口,并添加新的属性和方法。接口
和实现类之间存在多态。
多态:三个必要条件分别是继承、重写和父类引用子类对象。(java 的核心思
想)
第四周
实习第四个礼拜,主要熟悉了 java 的高级应用
线程:进程是运行中的应用程序,是一套顺序执行的指令,每个进程都有自
己独立的内存空间。线程是一个并发执行的顺序流,一个进程包括多个顺序执行
流程,这些流程称为线程。
JVM 就是一个进程,在 JVM 中分出线程,比如 main()就是主线程。同时开辟并
发执行的序列即多线程。调用 start()方法,线程启动;run()方法结束,线程
就终止。线程是一个操作系统创建并维护的一个资源。对于单 CPU 系统来说,
某一个时刻只可能由一个线程在运行。一个 Thread 对象就表示一个线程。进程
的数据空间独立;线程的数据空间共享, 能充分使用 CPU 的资源。线程间通信
更容易。共享数据就要加锁、解锁,会降低效率。
I/O:是在 JVM 和外部数据源之间交换数据。按数据传输方向划分:输入流
和输出;按数据单位划分:字节流和字符流;过滤流用来封装节点流或者其他过
滤流,从而给节点流或其他的过滤流增加功能。
第五周
实习第五个礼拜,使用 Collection 框架做派叫号系统
首先分析项目需求,概述如下:
1.产品参与者
顾客:到营业大厅排队取号
柜员:提供业务服务的柜台业务员
管理员:负责对业务类型、业务受理情况进行实时查看、调配的管理者
2.功能需求
1)、取号:顾客来到营业大厅通过取号机取号,可以选择自己要办理的业务类型。
取号后自动进入排队中。等待叫号;
2)、叫号:柜员可以通过叫号端进行重复呼叫、暂停服务和转移。叫号端可是软
件也可以是硬件设备;
3)、管理业务类型:管理人员可以通过后台管理进行业务类型的管理。可以添加、
禁用、修改一种业务类型,为某种业务类型可以设置每天最大办理量;
4)、管理窗口:管理人员可以通过后台管理对业务窗口进行管理。可以为某个窗
口指定办理某种业务类型;
5)、统计整合数据:系统可以定时的整合数据,将分散在每天的数据按人、业务
类型、时间进行整合,可以将统计数据输出成图表形式;
6)、查看办理情况:可以查看当前流量、已经办理、未办理的人数。当前办理效
率,历史数据等等;
7)、记录日志:系统对关键的地方进行日志记录,以便系统可以在出错时进行调
试和处理。
实施代码编写。第一个项目设计,感觉难度很大。之前所学的是零零散散的
知识点,现在要把之前所学的知识连贯起来,刚开始不知道怎么去连贯,后来看
了需求分析文档,分析图,慢慢的有点思路。在后面的做项目的过程中,遇到了
太多的问题,通过自己的思考、问同事,问老师慢慢的解决了。而在第一个项目
中也学到了很多东西。
第六周
1、数据库范式 作用:尽可能减少数据冗余、保证数据完整性、识别出实体、
关系以及表的缺失
第一范式:字段都为单一属性,且属性为基础类型
第二范式:属性必须完全依赖关键字
第三范式:非主键属性不能依赖其他的非主键属性
mysql 的学习,在学校里我对 mysql 已有了初步的了解。指导老师教我要灵
活多变,什么时候要用到临时表,嵌套查询,存储过程用的地方等,叫我多看几
个例子,并敲下代码运行下,体会里面的数据生成,查询出自己要的数据等。然
后再根据这些数据写出语句,生成需要的流程,这就是数据挖掘的精髓!那么存
储过程与一般的 SQL 语句有什么区别呢?
存储过程的优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,
而一般 sql 语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速
度。
2.当对数据库进行复杂操作时(如对多个表进行
Update,Insert,Query,Delete 时),可将此复杂操作用存储过程封装起来与数据
库提供的事务处理结合一起使用。
3.存储过程可以重复使用,可减少数据库开发人员的工作量
从中我学到了:存储过程是数据在存储到数据库的过程中,可以对这些数据进行
操作,不然数据就是直接从页面获取,直接原样存储。
第七周
实习第七个礼拜,
为了进一步了解 java 开发的相关知识,掌握 java 开发的基本技术,丰富 java
开发的实战经验,代码的复用性。学习 SQL 的基础知识及正确的运用方法,和有
用的相关技术,提高自己的工作效率。通过项目重构,培养我们综合运用已学知
识 Java 语言的面向对象编程能力;培养我们动手能力;培养我们良好编程规范、
编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程
能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为以后
能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
从这里,我才真正的意识到实施一个软件工程并不是说简单的会编码就能够
解决问题的,我们更多的精力不是放在编码上,编码只是一个很小的模块,只占
到那么小的一个部分。这个事实在很大程度上颠覆了我以前的思想,在我以前的
认识中,似乎整个软件就是编码,除此无它,还好有老师的指导,不然真的会出
现老师所说的,撞得头破血流之后才想起来用软件工程的思想来完成这个工作。
项目程序的编程是一个非常烦琐而枯燥的过程,需要耐心和毅力去完成,不
然中途出现过多的错误,会使之后的校验略显费时。
实习项目的代码编写,从而进入到后期的校对和验收过程,但同时也少不了
反复的调试和修改,为我的程序软件更加简单更加实用。
第八周
实习第八个礼拜,主要了解网页的基本架构
B/S 架构:浏览器-服务器(Browser/Server)结构,简称 B/S 结构与 C/S
结构不同,其客户端不需要安装专门的软件,只需要浏览器即可,浏览器通过
Web 服务器与数据库进行交互,可以方便的在不同平台下工作。服务器端可采用
高性能计算机,并安装 Oracle、Sybase、Informix 等大型数据库。
B/S 结构简化了客户端的工作,它是随着 Internet 技术兴起而产生的,对 C/S
技术的改进,但该结构下服务器端的工作较重,对服务器的性能要求更高。
C/S 架 构 : 主 从 式 架 构 (Client – server model) 或 客 户 端 - 服 务 器
(Client/Server)结构简称 C/S 结构是一种网络架构,它把客户端(Client)(通
常是一个采用图形用户界面的程序)与服务器(Server) 区分开来。
每一个客户端软件的实例都可以向一个服务器或应用程序服务器发出请求。
经典 C/S 系统:QQ/MSN/ICQ…
HTTP 协议:超文本传输协议(HTTP,HyperTextTransfer Protocol)是互联网上
应用最为广泛的一种网络协议。
第九周
实习第九个礼拜
HTML :是一种标记语言、忽略大小写,语法宽松、使用 HTML 标记和元素,
可以:控制页面和内容的外观、发布联机文档、使用 HTML 文档中插入的链接检
索联机信息、创建联机表单,收集用户的信息、执行事务等等、插入动画、开发
帮助文件等。
CSS:样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 d 拥
有最高的优先权。浏览器兼容:一旦为页面设置了恰当的 DTD,大多数浏览器都
会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C
的规范,元素内容占据的空间是由 width 属性设置的,而内容周围的 padding
和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的
非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、填充和边
框的宽度的总和。
虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就
是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到
元素的父元素和子元素。这些属性是 DIV 布局的奠基石。由于浏览器的不同,盒
模式中也有差异,比如说对于宽度盒高度,在不同浏览器中定义是不同的,IE6
是包含边框 、内边距,而 FF 的只是指内容的宽度。细节上的差异,往往是我们
在日常工作中能总结出来的。当你的 CSS 写的不兼容时候,你自然就会想起这些
内容。
第十周
实习第十个礼拜
JavaScript 是一种基于对象和事件驱动并具有安全性能的脚本语言
基本特点:基于对象的语言、简单性、安全性、动态性、跨平台性、是一种脚本
编写语言、解释型语言(不用编译、直接由浏览器解释执行)
使用 typeof 操作符判断
NaN--not a number,即非数值 a、NaN 用于表示一个本来要返回数值的操作
数未返回值的情况;b、任何涉及 NaN 的操作都会返回 NaN;c、NaN 与任何值都
不相等包括 NaN 本身,返回 false
isNaN 函数--判断某个值是否为数值
如果是数字值,返回本身、如果是 null,返回 0、如果是 undefined,返回
NaN、如果是字符串,遵循以下规则:
-–如果字符串中只包含数字,则将其转换为十进制(忽略前导 0)
-–如果字符串中包含有效的浮点格式,将其转换为浮点数值(忽略前导 0)
-–如果是空字符串,将其转换为 0
-–如果字符串中包含非以上格式,则将其转换为 NaN
如果是对象,则调用对象的 valueOf()方法,然后依据前面的规则转换返回的值。
如果转换的结果是 NaN,则调用对象的 toString()方法,再次依照前面的规则转
换返回的字符串值。
parseInt-将字符串转换为整数类型的数值,规则如下、忽略字符串前面的空
格,直至找到第一个非空字符、如果第一个字符不是数字符号或者负号,返回
NaN、如果第一个字符是数字,则继续解析直至字符串解析完毕或者遇到一个非
数字符号为止、如果上步解析的结果以 0 开头,则将其当作八进制来解析;如果
以 0x 开头,则将其当作十六进制来解析。
第十一周
实习第十一个礼拜
Servlet 生命周期
Servlet 的并发问题:在 Servlet 中使用静态变量和成员变量是,要非常小
心。如果你的程序改变这些变量值的时候,就会发生并发问题。如果从不会去改
变,只是读取,则不会发生并发局部变量永远不会有并发问题。Servlet 的并发
处理:不使用静态变量和成员变量、如果一定要使用,要加锁,但会影响性能
资源访问:WebRoot 下面的都叫容器内的资源、Servlet、容器外的资源、
forward vs redirect 都能访问内部资源,redirect 还可以访问外部资源、使
用 forward 是在后台转发;浏览器也不知道干了什么,所以地址不会变、而
redirect 要先回到浏览器,告诉浏览器要访问谁,所以浏览器的地址栏要发变
化、当访问内部资源时,使用 firward 效率会更高。
Session 是容器为每个客户端开辟内存空间,专门用来保持状态信息、
Session 需要一个 id 来标识:sessionid、 要求客户端要保留 id、 每一次
访问时都带上这个 id、 a、Session 的基本特点: 保存在服务器端(安全性高,
保护隐私)、类似 Hashtable 的数据结构保存、支持任何类型的对象、b、保存会
话 id 的技术(aporia)、Cookie 表单隐藏字段、c、获取 Session、d、Session
存取信息、e、设置 Session 的有效时间
第十二周
实习第十二个礼拜
MVC:Model--职责分明,便于风开发、优点:解耦,职责分明,便于分工开
发、缺点:分成三部分,造成系统架构复杂,对于小系统不适合、造成调试困难,
一旦出现错误,可能是 Model,也可能是 view 也可能是 control、对开发人员要
求比较高。
JSP 技术使用 Java 编程语言编写类 XML 的 tags 和 scriptlets,来封装产生
动态网页的处理逻辑。网页还能通过 tags 和 scriptlets 访问存在于服务端的资
源的应用逻辑。JSP 将网页逻辑与网页设计和显示分离,支持可重用的基于组件
的设计,使基于 Web 的应用程序的开发变得迅速和容易。
Web 服务器在遇到访问 JSP 网页的请求时,首先执行其中的程序段,然后将
执行结果连同 JSP 文件中的 HTML 代码一起返回给客户。插入的 Java 程序段可以
操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。
JSP 与 JavaServlet 一样,是在服务器端执行的,通常返回给客户端的就是
一个 HTML 文本,因此客户端只要有浏览器就能浏览。
JSP:为什么要学 EL 和 jstl、在一个系统中,页面通常是由美工开设计完成,
美工并不懂 java 语言、当美工看到页面上充满着 java 代码时,会干扰美工维护
页面,造成维护困难、如何做到动态页面没有 java 代码?EL 表达式和 JSTL。
EL 表达式:${ 属性名 } //属性名是调用对象的 setAttribute(属性名,属
性值)、在 servlet 往范围对象中设置属性,forward 到目标页面、EL 访问常量
值,直接输出 ${ 常量 }、可以使用==判断字符串 、存取器[] 读取对象的值、
使用.可以访问对象的属性,读取 map 的 key、读取数组只能用[]。
第十三周
实习第十三个礼拜
功能需求如下:
这是一个网上在线购物系统(B2C)。
系统需要提供网上购物的功能。
用户能够随意浏览商品,并能获取商品的详细信息,如图片预览、商品描述
等。
系统能够向用户提供一些浏览信息,让用户能够快速的了解系统出售商品信
息,如特价促销,店长推荐,排行榜,新上架商品等。
系统能够提供 3 级分类商品。
系统能够提供品牌分类。
系统能够提供公告信息,让用户快速了解系统的通告信息。
系统能够提供论坛的方式,供用户发表对商品的评论的功能。
系统能够提供搜索功能,让用户快速了解他需要的产品。
用户在浏览 3 级分类商品的时候,需要体统高级筛选功能,如不同方式浏览
商品信息、按价格排序商品,按规格浏览商品等功能。
用户购物需要注册成为本系统的会员,并能随时修改自己的信息(如收货信
息等)。
会员能够收藏自己喜欢的商品,并能随时关注该商品。
会员能够查看已购买的商品。
会员能够完成与论坛的相关功能。
总结:通过实战,发现自己学得不是自己想象的那么好,有些功能还是做不
出来。通过新豆商城项目,发现自己的不足,跟同事之间的交流中,能学到很多
新知识。简单的总结为几个字,那就是:多看,多问,多观察,多思考!
第十四周
实习第十四个礼拜
一、AJAX 是什么?在传统的 web 应用中,用户与应用的每一次交互,都是首
先用户通过浏览器向服务器端发送一个请求,服务器解析这个请求,将相应的响
应信息返回给浏览器。在服务器端业务逻辑非常复杂或者需要耗时较长的情况下,
浏览器等待刷新时,页面经常是一片空白,用户只能被动等待服务器端响应完成,
在此期间客户不能在页面上做任何操作,带给用户非常糟糕的体验。它包括:基
于 XHTML 和 CSS 标准的表示;使用 DOM 进行动态显示和交互;使用 XML 和 XSLT
进 行 数 据 交 换 与 处 理 使 用 XMLHttpRequest 与 服 务 器 进 行 异 步 通 信 ; 使 用
JavaScript 绑定一切。
二、使用 AJAX 的利弊:使用 AJAX,可以为开发人员、终端用户带来可见的便捷:
减轻服务器的负担。AJAX 的原则是“按需取数据”,可以最大程度的减少冗余请
求和响应对服务器造成的负担。无刷新更新页面,减少用户心理和实际的等待时
间。特别是当读取大量数据的时候,AJAX 使用 XMLHTTP 对象发送请求并获取服
务器响应,在不重新载入整个页面的情况下用 Javascript 操作 DOM 最终更新页
面。在读取数据的过程中,用户面对的不是白屏,是原来页面的内容,用户可以
继续进行其他操作,只有当数据接收完毕之后才更新相应部分内容。带来更好的
用户体验。一直以来,B/S 程序在用户易操作性、界面友好性上跟 C/S 相比都有
较大的差距,随着 AJAX 的应用,这种情况将得到较大的改观。可以把以前服务
器负担的一些工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器的
负担。
第十五周
实习第十五个礼拜
XML:概念:可扩展的标记语言、优点:结构化,平台、语言无关,标准的
XML 读写 XML 格式的文档,完成数据交换、声明:大多数 XML 文档以 XML 声明作
为开始、建议使用 XML 声明,但它不是必需的。如果有,它一定是文档的第一行
内容。、注释、实体:不能直接表示的符号、五个实体、自定义实体、CDATA:一
段文本,不会被解析器解析。
Log4j:是 Apache 的一个开放源代码项目,通过使用 Log4j,我们可以控制
日志信息输送的目的地是控制台、文件、GUI 组件、甚至是套接口服务 器、NT
的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格
式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
Log4j 由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,
日志信息的输出格式。日志信息的优先级从高到低有 ERROR、WARN、INFO、DEBUG,
分别用来指定这条日志信息的重要程度;日志信息的输出目的地指定了日志将打
印到控制台还是文件中;而输出格式则控制了日志信息的显示内容。
第十六周
实习第十六个礼拜
Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻
量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数
据库。 Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端
程序使用,也可以在 Servlet/JSP 的 Web 应用中使用,最具革命意义的是,
Hibernate 可以在应用 EJB 的 J2EE 架构中取代 CMP,完成数据持久化的重任。
数据库设计:a) 降低关联的复杂性、b) 尽量不使用联合主键、c) ID 的生成机
制,不同的数据库所提供的机制并不完全一样、d) 适当的冗余数据,不过分追
求高范式
2、 HQL 优化:HQL 如果抛开它同 HIBERNATE 本身一些缓存机制的关联,HQL 的
优化技巧同普通的 SQL 优化技巧一样,可以很容易在网上找到一些经验之谈。
加载策略:延迟加载 vs 立即加载、-延迟加载(默认) 不会立即命中数据库,使
用数据时命中、在可以改变为立即、*使用数据必须在
session 关闭之前、-立即加载:立即命中数据库,不管有没有数据
抓 取 策 略 、 查 询 抓 取 :(N+1) 、 连 接 抓 取 : 需 要 在 关 联 的 对 象 中 设 置
fetch="select|join"、N+1 与 1+M:-针对一端,如果查询有 m 个对象,这时会
先发送 1 条 sql 语句查出 m 个对象,然后再发送 m 条 sql 语句查关联对象,这就
是 1+M、-针对多端,如果查询有 n 个对象,那么对每个对象需要重新发送一条
sql 语句,这就是 n+1。
事务控制:事务方面对性能有影响的主要包括:事务方式的选用,事务隔离级别
以及锁的选用 a) 事务方式选用:如果不涉及多个事务管理器事务的话,不需要
使用 JTA,只有 JDBC 的事务控制就可以。b) 事务隔离级别:参见标准的 SQL 事
务隔离级别 c) 锁的选用:共享锁、独占锁、更新锁、死锁、悲观锁、乐观锁。
第十七周
实习第十七个礼拜