2010.08.24
进程:在内存里正在运行的程序 (范围更大)
多进程的控制由操作系统完成
多个进程之间不易通讯,因属不同的地址空间
线程: 某个进程中的一部分序列
应用程序的某些控制流(序列),可以并发执行
extends Thread 重写run()方法 线程体
线程池中多个线程,cpu根据优先级分配线程执行(基于抢占式,多任务)start()方法,让一个线程进入可运行状态,进入线程池等待cpu调度。
notify()是随机唤醒一个线程,建议使用notifyAll();
线程优先级1~10,缺省为5,可通过setPriority()和getPriority()来设置和获取该线程优先级
线程由start()方法启动后,直到被终止之间的任何时刻,都处于"Alive”状态
tt.join(); // 当前线程等待线程tt执行完后再继续往下执行
每个java对象都有且只有一个同步锁,在任何时刻最多只允许一个线程拥有这把锁。
//
2011.05.04
内存的刷新
页面管理工作:处理器完成? 操作系统完成?
只有一个页面不在内存时,才会由操作系统完成
Linux中刷新机制(包括TLB的刷新,缓存的刷新等)主要用来完成以下几个工作:
1)保证在任何时刻内存管理硬件所看到的进程的内核映射和内核页表一致。
2) 如果负责内存管理的内核代码对用户进程页面进行了修改,那么用户的进程在被允许继续执行前,要求必须在缓存中看到正确的数据
//
2011.6.1
java 缓存
java中最常见的一种缓存实现方式就是使用Map
基本步骤:
1.先到缓存中去找,查找是否存在需要使用的数据。
2.如果没找到,就进数据库里查找并创建数据至缓存中。
3.如果找到了相应数据,或是创建了相应数据,就直接使用
注:刷新缓存更新时,考虑到事务回滚等原因会引起数据库和缓存不一致情况,因此更新时将缓存中的数据删除,下次访问时从数据库中重新读取。
cache.remove(key);
OSCache标记库由OpenSymphony设计,是一个被广发采用的高性能的J2EE缓存框架。
OSCache还能应用于任何java应用程序的普通的缓存解决方案。
OSCache有以下特点:
1.缓存任何对象:可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。
2.拥有全面的API:OSCache API允许通过编程的方式来控制所有的OSCache特性。
3.永久缓存:缓存能被配置写入硬盘,因此允许在应用服务器的多次生命周期间缓存创建开销昂贵的数据。
4.支持集群: 集群缓存数据能被单个的进行参数配置,不需要修改代码。
5.缓存过期:你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不能满足需要时)
使用内存作为缓存区将可以提供更好的性能。
使用硬盘作为缓存区可以在服务器重启后迅速恢复缓存内容。
同时使用内存和硬盘作为缓存区则可以减少对内存的占用。
(其他特性还包括对集群的支持,缓存主动刷新等特性)
Hibernate采用的就是当数据一旦发生改变的时候就清除全部的查询缓存,而不是只去清除相关的缓存。
web service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。主要目标是跨平台的可互操作性。
webservices 平台是简单的可共同操作的消息收发框架,它仍然缺少许多诸如安全和路由等重要的特性。但是,一旦soap变得更加高级,这些事项就会得到解决。
除了webservice外,常见的远程调用技术还有RMI和CORBA,由于webservice的跨平台和跨编程语言特点,因此比其他两种技术应用更为广泛,但性能略低。
webservices可把应用程序转换为网络应用程序(web_applications),通过使用xml,消息可以在应用程序之间进行传递。
基本的web services的平台是xml+http:使用xml来编解码数据,并使用SOAP来传输数据。
webserivces拥有三种基本的元素,它们是:SOAP,WSDL,以及UDDI
SOAP:soap是一种通信协议,也是一种用于发送消息的格式,基于xml,独立于平台,独立于语言。
WSDL:wsdl是一种描述语言,使用xml编写,用于描述网络服务。
UDDI: uddi是一种目录服务,通过它,企业可以注册并搜索webservices.uddi是一种由wsdl描述的网络服务接口目录,存储有关web services的信息的目录,经由soap进行通讯。
UDDI如何被使用?
加入行业发布了一个用于航班比率检测和预订的uddi标准,航空公司就可以把他们的服务注册到一个uddi目录中。然后,旅行社就能够搜索这个UDDI目录以找到航空公司预订界面,当此界面被找到后,旅行社就能够立即与此服务进行通信。
/
java动态代理讲解比较通俗详细的一篇博客:
java动态代理(JDK和cglib) http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html
/