今天主要回顾了前几天学习的spring ,hibernate,mina框架 和做了个多人在线聊天的聊天小程序
上午:
对于前面学习的几个框架有了一个梳理,写了一些总结:
1.spring
spring的关键思想是它的控制反转和依赖注入(spring的AOP还没看懂)
控制反转:控制就是对程序运行的控制权,反转是相对与个人来说,意思是,将程序的控制权交给spring框架,而不是我们自己,
以前是我们自己做大部分的控制,比如在用C语言编程的时候,每个对象都是我们定义,我们给他分配空间,最后进行释放的,
其实也不全是我们,C语言编译器也做了很多工作,但是相对于在spring框架下进行编程,我们对程序的控制减弱了很多,不用做
很多像在C语言编程是做的事情,比如创建一个对象,进行释放之类的。这一切在程序底层其实还是会做的,只是spring把他们进行
了高级别的封装,屏蔽了这些琐碎重复和容易出错的管理过程。我们是怎么把程序的相当的一部分控制权交给spring的呢?答案是
依靠xml文件,xml文件中我们定义了bean(bean是一种spring下的可以重复使用的组件),bean有两个基本的属性,name 和class
name是bean的名字,class是这个bean实际的类名,这里的类可以是我们自己写的,也可以是系统的,没有过多的限制,只要能生成
对象就可以,bean联系了具体的类,spring通过xml中的bean就可以自由的掌握bean中的类,达到对对象的控制,而我们在写程序时
只要调用spring下的API就可以给spring发送消息,比如让spring生成某个我们定义的类对于的对象,但是对象的具体怎么创建,怎么
回收,我们完全不要理会。
2.依赖注入
依赖注入是控制反转的补充,bean中有的时候要对类创建时设置属性,比如创建数据库连接的时候就要很多属性,这些属性可以在
bean的属性中设置值,或者设置引用(也就是引用其他的bean) ,这就是注入,注入一些属性,不知道为什么依赖,给类生成对象
是设置属性值,这有什么好处呢?好处是当需要改变依赖只要改一下xml文件就可以了,比如之前的数据库的依赖,改下连接的url或者
用户,密码之类的很容易,而且不要重新编译,因为程序是动态进行读取xml文件进行运行的
2.hibernate
hibernate关键的是实现了数据库中的表和java类的对应,实现方式通过xml文件,将表的字段和java类进行map,hibernate就可以
进行对数据库的操作,当然还是要配置数据库的连接之类的,因为这样hibernate才能接管你的数据库。当映射关系定义好了之后,
一切的关于数据库的操作都可以交给hibernate,也就是我们通过hibernate提供的API对数据库进行操作,而不需要管理数据库的连接
和具体的sql语句,安全简单,比如保存一个定义映射过的对象,只要。save就可以了,还有很多其他的操作。
下午:
开始做了多人在线聊天的小程序,基本过程就是客户端向服务器发聊天信息,服务端发送接收到的信息发送给所有的连接到自己的
客户端,通过session.getservice.getmanagedservice.getvalue 实现 (为什么会实现,不了解) 这样其他客户端就能够看到
除了自己还有其他客户端发送的信息,类似qq群,感觉服务器就是一个信息的转发器,可以还会添加一些验证之类的功能,其中服务器的
性能压力就在转发这里,转发信息的数量是接受到的信息的数量乘以连接到服务器的总的客户端数量,应该没有个客户端都会和服务器有一个seesion
这部分也有很大的开销,这部分是怎么处理的还不知道。下午就在实现这个小程序,现在还有一些问题没有解决,验证部分的。