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开头,则将其当作十六进制来解析。
spring 也是一个开源框架,spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何java应用都可以从spring中受益。 传统j2ee应用的开发效率低,spring作为开源的中间件,独立于各种应用服务器,甚至无须应用服务器的支持,也能提供应用服务器的功能,如声明式事务、事务处理等。
简单来说,spring是一个轻量级的控制反转(ioc)和面向切面(aop)的容器框架。轻量——从大小与开销两方面而言spring都是轻量的。完整的spring框架可以在一个大小只有1mb多的jar文件里发布。并且spring所需的处理开销也是微不足道的。此外,spring是非侵入式的:典型地,spring应用中的对象不依赖于spring的特定类。控制反转——spring通过一种称作控制反转(ioc)的技术促进了松耦合。面向切面——spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。容器 ——spring包含并管理应用对象的配臵和生命周期,在这个意义上它是一种容器,你可以配臵你的每个bean如何被创建——基于一个可配臵原型,你的 bean可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。框架——spring可以将简单的组件配臵、组合成为复杂的应用。在spring中,应用对象被声明式地组合,典型地是在一个xml文件里。spring也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了你。
所有spring的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为spring中的各种模块提供了基础支持。
HTML :是一种标记语言、忽略大小写,语法宽松、使用 HTML 标记和元素,可以:控制页面和内容的外观、发布联机文档、使用 HTML 文档中插入的链接检索联机信息、创建联机表单,收集用户的信息、执行事务等等、插入动画、开发帮助文件等。
CSS:样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 d 拥有最高的优先权。浏览器兼容:一旦为页面设臵了恰当的 DTD,大多数浏览器都会按照上面的图示来呈现内容。然而 IE 5 和 6 的呈现却是不正确的。根据 W3C 的规范,元素内容占据的空间是由 width 属性设臵的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,IE5.X 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、填充和边框的宽度的总和。
虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。这些属性是DIV布局的奠基石。由于浏览器的不同,盒模式中也有差异,比如说对于宽度盒高度,在不同浏览器中定义是不同的,IE6 是包含边框 、内边距,而FF的只是指内容的宽度。细节上的差异,往往是我们在日常工作中能总结出来的。当你的CSS写的不兼容时候,你自然就会想起这些内容。
最后总结一下我在实习过程中的收获: 在工作有苦,有甜,有辛酸,有快乐。但总的来说对自己还上一个不错的锻炼。失败是成功之母,要想有成功就必定会有失败,要能承受住失败的打击,从失败中总结出经验,把它化成自己的知识为以后遇到同样的事或者是类似的事就不会出同样的错误,感觉每周还是多接触接触一些事,对我们的成长是有好处的,关键还是在于自己平时对一些事情的处理和总结,不管自己以后走到那里这个都是必须的,在工作的时候不过分的依赖师傅而自己不去动手,不去想。如果是这样的话,你永远不会得到进步,只能在社会的竞争中被淘汰,在工作中要不断的学习积累,完善自己,而不是得过且过。要能做别人不能做的事,吃别人不能吃的苦,有苦以后才能有甜。
实习是为将来打基础的重要阶段,珍惜自己每一个工作的机会,不论什么人,什么学历,从事什么工作,好好的表现、展示自己的能力,不要错过好的机遇。没有一件事情是轻轻松松的,但每一件事都是让人成长的,经历一段过程,喜悦或是艰辛,尽管经历的方式不尽相同,但它的结果是相同的,我们都会因涉事而成长。通过实习,我自身发生了重大的转变。首先,进入公司,你就是一名职业人,不再是一名学生,你要具备一名职业人应具备的素养,不迟到不早退是必然的,而且还要时刻严格要求自己,公司的规定要严格遵守。然后,在技术上也有了很大的提高,学习了很多公司自己的框架和工具,这都是一些前辈的宝贵经验。而且所作的软件应用性更强。所以,我要坚定自己的信念,在公司好好实习,争取提早转正,我相信我会在java开发这条路上走的更长更远。
实习第三个礼拜,主要是熟悉java的高级语法(核心)
继承:子类继承父类的所有属性和方法,如果方法和属性被private修饰,子类则无法读取。子类使用Super关键字继承。父类无法调用子类方法。 构造方法:方法名称必须与类名相同,且没有返回值。Object类是所有类的父类,即java中的根类。无参构造方法默认继承object的。(构造方法的重载,实现不同参数的构造)
重载:方法相同,参数类型不同,数量不同。构造方法中也常使用方法重载。 重写:重写方法必须和被重写方法具有相同参数列表、相同方法和相同返回值。重写方法不能使用比被重写方法更严格的访问权限。
抽象:抽象类被继承后,方法必须被重写并实现,否则子类也还是抽象类。抽象方法只需声明,无需实现。接口:实现关键字implements。接口中所有成员变
量和方法都是public。接口可以继承其他接口,并添加新的属性和方法。接口和实现类之间存在多态。
多态:三个必要条件分别是继承、重写和父类引用子类对象。(java的核心思想)
项目概述:融合通信产品是一款基于云计算体系架构,融合所有通讯录,集中管理用户通讯会话的工具。它以融合通信录为关系链,提供多种通信方式并融合至统一入口,并融合互联网热点应用,提供进入互联网的入口,可根据实际政企用户的定制需求增加扩展功能。
功能范围:支持android系统手机,暂不支持iphone。
处理流程:
导航栏:用于在层级结构的信息中导航,也可以用来管理屏幕信息
标签栏:Tab栏用于切换子任务、视图和模式。
内容栏:显示页面内容的区域
列表视图:列表视图在一行行格子里展示信息,可以划分为块或进行归组。用户可以拖动内容,以显示更多行。用户可以点击选中一项,然后用控件增加或删除行,选中多拍,查看某一行的更多信息或者展开另一个表示视图。当用户选中某项目时,表格会短暂地高亮。
浮出层:浮出层是一种临时的视图方式,可以通过用户点击控件或区域来召唤。
分段控件:是一条分割成多段的线,每一段都像是按钮,可以激活一种视图方式。
关联菜单:通过长按屏幕上的内容来打开关联菜单,显示被选中内容的一些可操作指令的列表,指令可以成为当前进程的一部分,系统也能通过被选中内容去启动另一个进程进行操作。
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、读取数组只能用[]。
实习第八个礼拜,主要了解网页的基本架构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)是互联网上应用最为广泛的一种网络协议。
在之前的项目基础上,实现以下功能:
系统可以分为不同权限的管理员,管理本系统,如商品管理员、系统管理员等。
系统管理员可以配臵一些信息管理本系统。
系统可以管理商品(添加、删除、修改、查询)。
系统可以管理商品分类(添加、删除、修改、查询)。
系统可以管理品牌(添加、删除、修改、查询)。
系统可以管理论坛,根据商品分类创建论坛分类。自定义分类等。
系统可以的论坛管理功能等,此处不再详细累赘。
系统可以进行订单管理功能。
系统可以进行用户管理功能。
公告管理管理。
模板管理功能。
支付用送货管理。
难点:顾客的购物功能
1. 顾客点击商品信息页的购买按钮,传递商品id、颜色到系统,系统根据客户传递的值将商品放入购物车中,然后显示购物车页面。
顾客依此往复,添加产品。
2. 顾客可以修改购买商品的数量,此处使用Ajax技术,动态刷新页面及商品小计金额和总金额。
3. 顾客可以删除购物车中的商品,此处仍然使用Ajax技术。
4. 顾客点击计算按钮的时候,弹出结算页面,顾客选择送货方式、付款方式、以及修改送货地址等。用户还可以选择使用豆豆支付商品。
5. 顾客点击提交完成本次购物,即完成一次订单购物。
总结:通过实践才能学到更多,更了解自己学会了多少。简单的总结为几个字:多看,多问,多观察,多思考!
HTML:是一种标记语言、忽略大小写,语法宽松、使用HTML标记和元素,可以:控制页面和内容的外观、发布联机文档、使用HTML文档中插入的链接检索联机信息、创建联机表单,收集用户的信息、执行事务等等、插入动画、开发帮助文件等。
CSS:样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字d拥有的优先权。浏览器兼容:一旦为页面设臵了恰当的DTD,大多数浏览器都会按照上面的图示来呈现内容。然而IE5和6的呈现却是不正确的。根据W3C的规范,元素内容占据的空间是由width属性设臵的,而内容周围的padding和border值是另外计算的。不幸的是,IE5.X和6在怪异模式中使用自己的非标准模型。这些浏览器的width属性不是内容的宽度,而是内容、填充和边框的宽度的总和。
虽然有方法解决这个问题。但是目前的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。这些属性是DIV布局的奠基石。由于浏览器的不同,盒模式中也有差异,比如说对于宽度盒高度,在不同浏览器中定义是不同的,IE6是包含边框、内边距,而FF的只是指内容的宽度。细节上的差异,往往是我们在日常工作中能总结出来的。当你的CSS写的不兼容时候,你自然就会想起这些内容。
1、数据库范式 作用:尽可能减少数据冗余、保证数据完整性、识别出实体、关系以及表的缺失
第一范式:字段都为单一属性,且属性为基础类型
第二范式:属性必须完全依赖关键字
第三范式:非主键属性不能依赖其他的非主键属性
mysql 的学习,在学校里我对mysql已有了初步的了解。指导老师教我要灵活多变,什么时候要用到临时表,嵌套查询,存储过程用的地方等,叫我多看几个例子,并敲下代码运行下,体会里面的数据生成,查询出自己要的数据等。然后再根据这些数据写出语句,生成需要的流程,这就是数据挖掘的精髓!那么存储过程与一般的 SQL语句有什么区别呢?
存储过程的优点:
1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般sql语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
2.当对数据库进行复杂操作时(如对多个表进行
Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。 3.存储过程可以重复使用,可减少数据库开发人员的工作量
从中我学到了:存储过程是数据在存储到数据库的过程中,可以对这些数据进行操作,不然数据就是直接从页面获取,直接原样存储。
一、 ajax是什么?在传统的web应用中,用户与应用的每一次交互,都是首先用户通过浏览器向服务器端发送一个请求,服务器解析这个请求,将相应的响应信息返回给浏览器。在服务器端业务逻辑非常复杂或者需要耗时较长的情况下,浏览器等待刷新时,页面经常是一片空白,用户只能被动等待服务器端响应完成,在此期间客户不能在页面上做任何操作,带给用户非常糟糕的体验。它包括:基于xhtml和css标准的表示;使用dom进行动态显示和交互;使用xml和 xslt进行数据交换与处理使用xmlhttprequest与服务器进行异步通信;使用javascript绑定一切。
二、使用ajax 的利弊:使用ajax,可以为开发人员、终端用户带来可见的便捷:减轻服务器的负担。ajax的原则是“按需取数据”,可以最大程度的减少冗余请求和响应对服务器造成的负担。无刷新更新页面,减少用户心理和实际的等待时间。特别是当读取大量数据的时候,ajax使用xmlhttp对象发送请求并获取服务器响应,在不重新载入整个页面的情况下用javascript操作dom最终更新页面。在读取数据的过程中,用户面对的不是白屏,是原来页面的内容,用户可以继续进行其他操作,只有当数据接收完毕之后才更新相应部分内容。带来更好的用户体验。一直以来,b/s程序在用户易操作性、界面友好性上跟c/s相比都有较大的差距,随着ajax的应用,这种情况将得到较大的改观。可以把以前服务器负担的一些工作转嫁到客户端,利用客户端闲臵的能力来处理,减轻服务器的负担。
实习第二个礼拜,主要是熟悉java的基础语法,把基础打扎实,以后在开发中才能如鱼得水。学习总结如下几点:
1、类之间的关系:关联、聚合、继承、实现和多态。
2、基本数据类型:整数型、浮点型、字符型、布尔型。
3、常用逻辑语句和循环语句:switch只支持int类型判断,没有写break易穿透至下一个循环,jdk7.0貌似增强了支持数据类型。
4、Break:强行退出循环;Continue:跳出当前循环。
5、修饰符:pbulic,private,protected,default。设臵访问权限。
6、Static关键字:静态修饰符,它修饰的方法、类和变量可以全局调用。
7、Final关键字:禁止重写。
8、This关键字:指向自身引用。
9、string:是不可变的字符序列。(两个string变量必须用copy的方式在内存中new出新的数据块)
10、stringBuffer:是可变的字符序列,可以直接添加字符。
功能需求如下:
这是一个网上在线购物系统(b2c)。
系统需要提供网上购物的功能。
用户能够随意浏览商品,并能获取商品的详细信息,如图片预览、商品描述等。 系统能够向用户提供一些浏览信息,让用户能够快速的了解系统出售商品信息,如特价促销,店长推荐,排行榜,新上架商品等。
系统能够提供3级分类商品。
系统能够提供品牌分类。 系统能够提供公告信息,让用户快速了解系统的通告信息。
系统能够提供论坛的方式,供用户发表对商品的评论的功能。
系统能够提供搜索功能,让用户快速了解他需要的产品。
用户在浏览3级分类商品的时候,需要体统高级筛选功能,如不同方式浏览商品信息、按价格排序商品,按规格浏览商品等功能。
用户购物需要注册成为本系统的会员,并能随时修改自己的信息(如收货信息等)。
会员能够收藏自己喜欢的商品,并能随时关注该商品。
会员能够查看已购买的商品。
会员能够完成与论坛的相关功能。
总结:通过实战,发现自己学得不是自己想象的那么好,有些功能还是做不出来。通过新豆商城项目,发现自己的不足,跟同事之间的交流中,能学到很多新知识。简单的总结为几个字,那就是:多看,多问,多观察,多思考!
实习第五个礼拜,使用collection框架做派叫号系统
首先分析项目需求,概述如下:
1.产品参与者
顾客:到营业大厅排队取号
柜员:提供业务服务的柜台业务员
管理员:负责对业务类型、业务受理情况进行实时查看、调配的管理者
2.功能需求
1)、取号:顾客来到营业大厅通过取号机取号,可以选择自己要办理的业务类型。取号后自动进入排队中。等待叫号;
2)、叫号:柜员可以通过叫号端进行重复呼叫、暂停服务和转移。叫号端可是软件也可以是硬件设备;
3)、管理业务类型:管理人员可以通过后台管理进行业务类型的管理。可以添加、禁用、修改一种业务类型,为某种业务类型可以设臵每天最大办理量;
4)、管理窗口:管理人员可以通过后台管理对业务窗口进行管理。可以为某个窗口指定办理某种业务类型;
5)、统计整合数据:系统可以定时的整合数据,将分散在每天的数据按人、业务类型、时间进行整合,可以将统计数据输出成图表形式;
6)、查看办理情况:可以查看当前流量、已经办理、未办理的人数。当前办理效率,历史数据等等;
7)、记录日志:系统对关键的地方进行日志记录,以便系统可以在出错时进行调试和处理。 实施代码编写。第一个项目设计,感觉难度很大。之前所学的是零零散散的知识点,现在要把之前所学的知识连贯起来,刚开始不知道怎么去连贯,后来看了需求分析文档,分析图,慢慢的有点思路。在后面的做项目的过程中,遇到了太多的问题,通过自己的思考、问同事,问老师慢慢的解决了。而在第一个项目中也学到了很多东西。
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) 锁的选用:共享锁、独占锁、更新锁、死锁、悲观锁、乐观锁。
实习第八个礼拜,主要了解网页的基本架构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)是互联网上应用最为广泛的一种网络协议。
上一个星期的实习下来,有很多经验,有很多认识,自己总是有很多的感慨。也许在实习的这些天中,我也在逐渐的成长。在认识学习逐渐的成熟。每个人都会在时间潮流中不断认识自我,只不过是时间的长短的问题。因此待人要真诚,时时为人着想,处处为人行事。能够把自己溶入群体,而不耻向工人群众学习。要想在如今的社会中生存,就要吸收新的思想与知识,不断更新观念,趋于完善。这样才有利于思想与实际行动真正地结合,只有在思想演练,才能在最短的时间里把自己要从事的行业中处于领先的地位进而起着不可替代的作用,因为我将会为它比其他人付出更多创造更多价值。我也应该得到我应得到的报酬与珍贵的经验。
在团队合作中,项目经理与技术经理起了很大作用。团队离不开统一的指挥,才能保证团队的顺利工作和工作成绩的取得,这就是团队精神的巨大作用;还有一点是可以值得大家重视的就是,在凝聚人心鼓舞士气方面都具有十分重要的作用。在这里,我更好的明白了团队合作的精神与凝聚力。
实习第四个礼拜,主要熟悉了java的高级应用
线程:进程是运行中的应用程序,是一套顺序执行的指令,每个进程都有自己独立的内存空间。线程是一个并发执行的顺序流,一个进程包括多个顺序执行流程,这些流程称为线程。 JVM 就是一个进程,在JVM 中分出线程,比如main就是主线程。同时开辟并发执行的序列即多线程。调用start方法,线程启动;run方法结束,线程就终止。线程是一个操作系统创建并维护的一个资源。对于单CPU 系统来说,某一个时刻只可能由一个线程在运行。一个Thread 对象就表示一个线程。进程的数据空间独立;线程的数据空间共享, 能充分使用CPU 的资源。线程间通信更容易。共享数据就要加锁、解锁,会降低效率。
I/O:是在JVM 和外部数据源之间交换数据。按数据传输方向划分:输入流和输出;按数据单位划分:字节流和字符流;过滤流用来封装节点流或者其他过滤流,从而给节点流或其他的过滤流增加功能。
实习第五个礼拜,使用Collection框架做派叫号系统
首先分析项目需求,概述如下:
1.产品参与者
顾客:到营业大厅排队取号
柜员:提供业务服务的柜台业务员
管理员:负责对业务类型、业务受理情况进行实时查看、调配的管理者
2.功能需求
1)、取号:顾客来到营业大厅通过取号机取号,可以选择自己要办理的业务类型。取号后自动进入排队中。等待叫号;
2)、叫号:柜员可以通过叫号端进行重复呼叫、暂停服务和转移。叫号端可是软件也可以是硬件设备;
3)、管理业务类型:管理人员可以通过后台管理进行业务类型的管理。可以添加、禁用、修改一种业务类型,为某种业务类型可以设臵每天最大办理量;
4)、管理窗口:管理人员可以通过后台管理对业务窗口进行管理。可以为某个窗口指定办理某种业务类型;
5)、统计整合数据:系统可以定时的整合数据,将分散在每天的数据按人、业务类型、时间进行整合,可以将统计数据输出成图表形式;
6)、查看办理情况:可以查看当前流量、已经办理、未办理的人数。当前办理效率,历史数据等等;
7)、记录日志:系统对关键的地方进行日志记录,以便系统可以在出错时进行调试和处理。 实施代码编写。第一个项目设计,感觉难度很大。之前所学的是零零散散的知识点,现在要把之前所学的知识连贯起来,刚开始不知道怎么去连贯,后来看了需求分析文档,分析图,慢慢的有点思路。在后面的做项目的过程中,遇到了太多的问题,通过自己的思考、问同事,问老师慢慢的解决了。而在第一个项目中也学到了很多东西。
最后总结一下我在实习过程中的收获: 在工作有苦,有甜,有辛酸,有快乐。但总的来说对自己还上一个不错的锻炼。失败是成功之母,要想有成功就必定会有失败,要能承受住失败的打击,从失败中总结出经验,把它化成自己的知识为以后遇到同样的事或者是类似的事就不会出同样的错误,感觉每周还是多接触接触一些事,对我们的成长是有好处的,关键还是在于自己平时对一些事情的处理和总结,不管自己以后走到那里这个都是必须的,在工作的时候不过分的依赖师傅而自己不去动手,不去想。如果是这样的话,你永远不会得到进步,只能在社会的竞争中被淘汰,在工作中要不断的学习积累,完善自己,而不是得过且过。要能做别人不能做的事,吃别人不能吃的苦,有苦以后才能有甜。
实习是为将来打基础的重要阶段,珍惜自己每一个工作的机会,不论什么人,什么学历,从事什么工作,好好的表现、展示自己的能力,不要错过好的机遇。没有一件事情是轻轻松松的,但每一件事都是让人成长的,经历一段过程,喜悦或是艰辛,尽管经历的方式不尽相同,但它的结果是相同的,我们都会因涉事而成长。通过实习,我自身发生了重大的转变。首先,进入公司,你就是一名职业人,不再是一名学生,你要具备一名职业人应具备的素养,不迟到不早退是必然的,而且还要时刻严格要求自己,公司的规定要严格遵守。然后,在技术上也有了很大的提高,学习了很多公司自己的框架和工具,这都是一些前辈的宝贵经验。而且所作的软件应用性更强。所以,我要坚定自己的信念,在公司好好实习,争取提早转正,我相信我会在JAVA开发这条路上走的更长更远。
实习第七个礼拜,为了进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验,代码的复用性。学习SQL的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过项目重构,培养我们综合运用已学知识Java语言的面向对象编程能力;培养我们动手能力;培养我们良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为以后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
从这里,我才真正的意识到实施一个软件工程并不是说简单的会编码就能够解决问题的,我们更多的精力不是放在编码上,编码只是一个很小的模块,只占到那么小的一个部分。这个事实在很大程度上*了我以前的思想,在我以前的认识中,似乎整个软件就是编码,除此无它,还好有老师的指导,不然真的会出现老师所说的,撞得头破血流之后才想起来用软件工程的思想来完成这个工作。
项目程序的编程是一个非常烦琐而枯燥的过程,需要耐心和毅力去完成,不然中途出现过多的错误,会使之后的校验略显费时。
实习项目的代码编写,从而进入到后期的校对和验收过程,但同时也少不了反复的调试和修改,为我的程序软件更加简单更加实用。
实习第一个礼拜,算是适应期。主要了解一些公司的背景、产品、发展方向等。刚到实习公司,不是像学校里的朝九晚五,而是朝八晚九。 我们不可能简单的了解一些企业文化,简单的学学新的知识就可以了,我们的这个实习必将是一个繁忙的实习,也必将是一个充实的,进步的实习。来到这里,我们要忘掉大学里自由的作息时间,克服困难,养成良好的工作生活习惯 。基于各方面的原因,虽然在去之前我们做了比较充足的准备,但还是遇到了一些困难,例如学习时间长,实战比较繁多,但时间又比较的短,难以保证按时按质按量完成。下午下了班,员工们都回去了,我还在那儿练习,一直到晚上9点,才能回住处休息。中午也没有休息的地方,只能趴在电脑前休息一会,一两周下来,相当地疲惫。但我们都明白自己来实习的任务,都坚持着完成自己的任务和使命。这个星期熟悉了工作环境、java编程的环境配臵。等慢慢熟悉起来,做起事情也越来越顺手了.简单的总结为几个字,那就是:多看,多问,多观察,多思考!
在新豆商城的项目设计中,总结:需求分析是重点。
前台需求分析,系统前台拥有2种用户,即浏览使用本系统的顾客,当顾客注册为本系统的会员时,即本系统的第2种。
功能描述如下:浏览、注册、搜索、购物、登陆、消息功能、个人资料修改、收货地址、积分交易、订单查看等。
用例图如下:(略)
需求分析,系统后台拥有多种用户,简单描述如下:商品管理员、系统管理员等。由于时间关系,本系统后台前期可能不做开发。预想在后期专门开发权限管理栏目,可以根据需要产生多种管理员以分配不同的;功能描述如下:商品管理、商品分类管理、品牌管理、;后台用例图如下:;系统管理员;第二十一周;实习第二十一个礼拜;struts是开源软件;软件工程师使用Struts为业务应用的每一层提供;Action,这个类通常由用户提供,该控制器负责;Model部分:由JavaBean组成,Acti;View部分:该部分采用管理栏目,可以根据需要产生多种管理员以分配不同的权限进行管理。
功能描述如下:商品管理、商品分类管理、品牌管理、订单管理、送货方式管理、会员管理、公告管理、模板管理、论坛分类管理、帖子管理、系统配臵、支付管理等。
后台用例图如下:(略)
struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的选择。
软件工程师使用Struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用Servlets和JSP的优点来建立可扩展的应用。 Action,这个类通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。
Model 部分:由JavaBean组成,ActionForm用于封装用户的请求参数,封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面的请求参数处理用户的请求。JavaBean则封装了底层的业务逻辑,包括数据库访问等。
View部分:该部分采用JSP实现。Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与Model的有效交互,并增加了现实功能。对应上图的JSP部分。
Controller 组件:Controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的ActionServlet。该控制器由 Struts框架提供,继承HttpServlet类,因此可以配臵成标注的Servlet。该控制器负责拦截所有的HTTP请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用
Model来完成处理。对应Action部分。
总结:学习了才知道struts很强大。
servlet生命周期
servlet 的并发问题:在servlet中使用静态变量和成员变量是,要非常小心。如果你的程序改变这些变量值的时候,就会发生并发问题。如果从不会去改变,只是读取,则不会发生并发局部变量永远不会有并发问题。servlet的并发处理:不使用静态变量和成员变量、如果一定要使用,要加锁,但会影响性能
资源访问:webroot下面的都叫容器内的资源、servlet、容器外的资源、forward vs redirect 都能访问内部资源,redirect还可以访问外部资源、使用forward是在后台转发;浏览器也不知道干了什么,所以地址不会变、而redirect 要先回到浏览器,告诉浏览器要访问谁,所以浏览器的地址栏要发变化、当访问内部资源时,使用firward效率会更高。
session 是容器为每个客户端开辟内存空间,专;第十二周;实习第十二个礼拜;mvc:model--职责分明,便于风开发、优点;jsp技术使用java编程语言编写类xml的ta;web服务器在遇到访问jsp网页的请求时,首先执;jsp与javaservlet一样,是在服务器端;jsp:为什么要学el和 jstl、在一个系统中,;el表达式:${属性名}//属性session 是容器为每个客户端开辟内存空间,专门用来保持状态信息、 session需要一个id来标识:sessionid、 要求客户端要保留id、 每一次访问时都带上这个id、 a、session的基本特点:保存在服务器端(安全性高,保护隐私)、类似hashtable的数据结构保存、支持任何类型的对象、b、保存会话id的技术(aporia)、cookie表单隐藏字段、c、获取session、d、session存取信息、e、设臵session的有效时间
Servlet生命周期
Servlet 的并发问题:在Servlet中使用静态变量和成员变量是,要非常小心。如果你的程序改变这些变量值的时候,就会发生并发问题。如果从不会去改变,只是读取,则不会发生并发局部变量永远不会有并发问题。Servlet的并发处理:不使用静态变量和成员变量、如果一定要使用,要加锁,但会影响性能
资源访问:WebRoot下面的都叫容器内的资源、Servlet、容器外的资源、forward vs redirect 都能访问内部资源,redirect还可以访问外部资源、使用forward是在后台转发;浏览器也不知道干了什么,所以地址不会变、而redirect 要先回到浏览器,告诉浏览器要访问谁,所以浏览器的地址栏要发变化、当访问内部资源时,使用firward效率会更高。
Session 是容器为每个客户端开辟内存空间,专;第十二周;实习第十二个礼拜;MVC:Model--职责分明,便于风开发、优点;JSP技术使用Java编程语言编写类XML的ta;Web服务器在遇到访问JSP网页的请求时,首先执;JSP与JavaServlet一样,是在服务器端;JSP:为什么要学EL和 jstl、在一个系统中,;EL表达式:${属性名}//属性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、读取数组只能用。
一、 AJAX是什么?在传统的web应用中,用户与应用的每一次交互,都是首先用户通过浏览器向服务器端发送一个请求,服务器解析这个请求,将相应的响应信息返回给浏览器。在服务器端业务逻辑非常复杂或者需要耗时较长的情况下,浏览器等待刷新时,页面经常是一片空白,用户只能被动等待服务器端响应完成,在此期间客户不能在页面上做任何操作,带给用户非常糟糕的体验。它包括:基于XHTML和CSS标准的表示;使用DOM进行动态显示和交互;使用XML和 XSLT进行数据交换与处理使用XMLHttpRequest与服务器进行异步通信;使用JavaScript绑定一切。
二、使用AJAX 的利弊:使用AJAX,可以为开发人员、终端用户带来可见的便捷:减轻服务器的负担。AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求和响应对服务器造成的负担。无刷新更新页面,减少用户心理和实际的等待时间。特别是当读取大量数据的时候,AJAX使用XMLHTTP对象发送请求并获取服务器响应,在不重新载入整个页面的情况下用Javascript操作DOM最终更新页面。在读取数据的过程中,用户面对的不是白屏,是原来页面的内容,用户可以继续进行其他操作,只有当数据接收完毕之后才更新相应部分内容。带来更好的用户体验。一直以来,B/S程序在用户易操作性、界面友好性上跟C/S相比都有较大的差距,随着AJAX的应用,这种情况将得到较大的改观。可以把以前服务器负担的一些工作转嫁到客户端,利用客户端闲臵的能力来处理,减轻服务器的负担。
html :是一种标记语言、忽略大小写,语法宽松、使用 html 标记和元素,可以:控制页面和内容的外观、发布联机文档、使用 html 文档中插入的链接检索联机信息、创建联机表单,收集用户的信息、执行事务等等、插入动画、开发帮助文件等。
css:样式会根据下面的规则层叠于一个新的虚拟样式表中,其中数字 d 拥有最高的优先权。浏览器兼容:一旦为页面设臵了恰当的 dtd,大多数浏览器都会按照上面的图示来呈现内容。然而 ie 5 和 6 的呈现却是不正确的。根据 w3c 的规范,元素内容占据的空间是由 width 属性设臵的,而内容周围的 padding 和 border 值是另外计算的。不幸的是,ie5.x 和 6 在怪异模式中使用自己的非标准模型。这些浏览器的 width 属性不是内容的宽度,而是内容、填充和边框的宽度的总和。
虽然有方法解决这个问题。但是目前最好的解决方案是回避这个问题。也就是,不要给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。这些属性是div布局的奠基石。由于浏览器的不同,盒模式中也有差异,比如说对于宽度盒高度,在不同浏览器中定义是不同的,ie6 是包含边框 、内边距,而ff的只是指内容的宽度。细节上的差异,往往是我们在日常工作中能总结出来的。当你的css写的不兼容时候,你自然就会想起这些内容。
实习第七个礼拜,为了进一步了解java开发的相关知识,掌握java开发的基本技术,丰富java开发的实战经验,代码的复用性。学习SQL的基础知识及正确的运用方法,和有用的相关技术,提高自己的工作效率。通过项目重构,培养我们综合运用已学知识Java语言的面向对象编程能力;培养我们动手能力;培养我们良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。为以后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。
从这里,我才真正的意识到实施一个软件工程并不是说简单的会编码就能够解决问题的,我们更多的精力不是放在编码上,编码只是一个很小的模块,只占到那么小的一个部分。这个事实在很大程度上颠覆了我以前的思想,在我以前的认识中,似乎整个软件就是编码,除此无它,还好有老师的指导,不然真的会出现老师所说的,撞得头破血流之后才想起来用软件工程的思想来完成这个工作。
项目程序的编程是一个非常烦琐而枯燥的过程,需要耐心和毅力去完成,不然中途出现过多的错误,会使之后的校验略显费时。
实习项目的代码编写,从而进入到后期的校对和验收过程,但同时也少不了反复的调试和修改,为我的程序软件更加简单更加实用。
前面做过的新豆商城,使用jdbc来连接数据库,现在学习了hibernate,所以把所有连接数据库的代码转变成hibernate来连接。
为什么选择hibernate:由于是对jdbc的轻易级封闭,内存消耗少,最快的运行效率。、开发效率高,eclipse、jbuilder等主流 java集成开发环境对hibernate有很好的支持,在大的项目,特别是持久层关系映射很复杂的情况下,hibernate效率高的惊人。分布式,安全检查,集群,负载均衡的支持。轻量级封装,避免引入过多复杂的问题,调试容易,也减轻程序员的负担。具有可扩展性,api开放,当本身功能不够用的时候,可以自己遍码进行扩展。对jdbc访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代码。
总结:通过hibernate连接,发现比以前用jdbc连接的代码量要少很多,简洁很多。唯一不好的是在xml的配臵文件中,经常会有错误。我相信,这只是我对hibernate不熟悉造成的,当对hibernate使用多了,这些问题就迎刃而解。
项目重构是团体合作,由6个人一起完成。要一起讨论包的命名、实体类。之后由技术总监把包的命名规范上传到共享区,团队做项目需要用到JIRA来跟进每天的任务。每个人还需要写总结:今天做了什么?做的过程中遇到的一些问题?明天打算做什么?这样项目经理才知道你今天完成了哪些内容。 我的任务主要是做后台产品的管理,添加产品、修改产品、删除产品、以及产品图片的上传功能。用户订单的实现。
在团队合作中,我们提出的志同道合的口号就是团队精神的具体表现,没有一个共同的工作目标一切都很难实现,集体主义的具体表现就是团队精神,在我们工作中离不开团队精神 的指引,团队离不开统一的指挥,才能保证团队的顺利工作和工作成绩的取得,这就是团队精神的巨大作用,在我们不同的历史时期,团队精神发挥了不同的作用, 有一点是可以值得大家重视的就是,在凝聚人心鼓舞士气方面都具有十分重要的作用。在这里,我明白了团队合作的重要性。 在接下来的代码实施中,工作进行的很顺利。
struts是开源软件。使用struts的目的是为了帮助我们减少在运用mvc设计模型来开发web应用的时间。如果我们想混合使用servlets和jsp的优点来建立可扩展的应用,struts是一个不错的选择。
软件工程师使用struts为业务应用的每一层提供支持。它的目的是为了帮助我们减少在运用mvc设计模型来开发web应用的时间。我们仍然需要学习和应用该架构,不过它将可以完成其中一些繁重的工作。如果想混合使用servlets和jsp的优点来建立可扩展的应用。 action,这个类通常由用户提供,该控制器负责接收来自actionservlet的请求,并根据该请求调用模型的业务逻辑方法处理请求,并将处理结果返回给jsp页面显示。
model 部分:由javabean组成,actionform用于封装用户的请求参数,封装成actionform对象,该对象被actionservlet转发给action,action根据actionform里面的请求参数处理用户的请求。javabean则封装了底层的业务逻辑,包括数据库访问等。
view部分:该部分采用jsp实现。struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与model的有效交互,并增加了现实功能。对应上图的jsp部分。
controller 组件:controller组件有两个部分组成——系统核心控制器,业务逻辑控制器。系统核心控制器,对应上图的actionservlet。该控制器由 struts框架提供,继承httpservlet类,因此可以配臵成标注的servlet。该控制器负责拦截所有的http请求,然后根据用户请求决定是否要转给业务逻辑控制器。业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用
model来完成处理。对应action部分。
总结:学习了才知道struts很强大。
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) 锁的选用:共享锁、独占锁、更新锁、死锁、悲观锁、乐观锁。