- 博客(52)
- 收藏
- 关注
原创 epoll
epoll的操作就这么简单,总共不过4个API:epoll_create, epoll_ctl, epoll_wait和close.但凡作过比较深入的网络编程的人,都会知道,在win平台下,高效的IO模型是IOCP,而在linux底下则是 epoll。那么,epoll与iocp之间到底有哪些异同之处呢?Q:网络服务器的瓶颈在哪? A:IO效率。 在大家苦苦的为在线人数的增长而导致的系统资源吃...
2010-10-25 22:49:25 137
原创 java float double精度为什么会丢失?(转)
由于对float或double 的使用不当,可能会出现精度丢失的问题。问题大概情况可以通过如下代码理解: view plaincopy to clipboardprint?public class FloatDoubleTest { public static void main(String[] args) { float f = 20014999; double d = f; ...
2010-08-09 14:11:07 339
原创 数组与链表的区别
来自网络: C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够大小,这样数组中有些空间可能不被使用,从而造成内存空间的浪费。 链表是一种常见的数据组织形式,它采用动态分配内存的形式实现。需要时可以用new分配内存空间,不需要时用dele...
2010-07-16 16:07:12 163
原创 Unix5中IO模型的图解分析和比较
Unix下共有五种I/O模型阻塞I/O非阻塞I/OI/O复用(select和poll)信号驱动I/O(SIGIO)异步I/O(Posix.1的aio_系列函数) b.阻塞I/O模型 应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待。。。。 数据准备好了,从内核拷贝到用户空间 IO函数返回成功指示 ...
2010-06-24 11:56:10 127
原创 nio reactor proactor
两种I/O多路复用模式:Reactor和Proactor一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event Handler)。开发人员预先注册需要处理的事件及其事件处理器(或回调函数);事件分离器负责将请求事件传递给事件处理器。两个与事件分离器有关的模...
2010-06-24 11:43:39 107
原创 Epoll工作模式详解(转)
我们目前的网络模型大都是epoll的,因为epoll模型会比select模型性能高很多, 尤其在大连接数的情况下,作为后台开发人员需要理解其中的原因。select/epoll的特点select的特点:select 选择句柄的时候,是遍历所有句柄,也就是说句柄有事件响应时,select需要遍历所有句柄才能获取到哪些句柄有事件通知,因此效率是非常低。但是如果连接很少的情况下, selec...
2010-06-24 10:57:09 183
原创 java nio
NIO 设计背后的基石是反应器设计模式。 分布式系统中的服务器应用程序必须处理多个向它们发送服务请求的客户机。然而,在调用特定的服务之前,服务器应用程序必须将每个传入请求多路分用并分派到各自相应的服务提供者。反应器模式正好适用于这一功能。它允许事件驱动应用程序将服务请求多路分用并进行分派,然后,这些服务请求被并发地从一个或多个客户机传送到应用程序。 反应器模式与观察者模式(Ob...
2010-06-24 10:19:27 94
原创 高性能的HTTP引擎—— Grizzly(三) Grizzly的特点(转)
对企业级的服务器软件,高性能和可扩展性是基本的要求。除此之外,还应该有应对各种不同环境的能力。例如,一个好的服务器软件不应该假设所有的客户端都有很快的处理能力和很好的网络环境。如果一个客户端的运行速度很慢,或者网络速度很慢,这就意味着整个请求的时间变长。而对于服务器来说,这就意味着这个客户端的请求将占用更长的时间。这个时间的延迟不是由服务器造成的,因此CPU的占用不会增加什么,但是网络连接的时间会...
2010-06-22 11:45:22 183
原创 UML类图关系(引用)
在Visio里,包和类的关系是包含关系,将类拖入包的文件夹之后,关系就建立了,二元关联符号可以设置为:聚合、合成。 接口:空心圆+直线(唐老鸭类实现了‘讲人话’); 依赖:虚线+箭头(动物和空气的关系); 关联:实线+箭头(企鹅需要知道气候才迁移); 聚合:空心四边形+实线+箭头(雁群和大雁的关系); 合成:实心四边形+实线+箭头(鸟和翅膀的关系); 泛化:空心三角形+实线(动物和鸟的继承关系);...
2010-06-07 15:04:51 369
原创 SpringAOP嵌套调用的解决办法
SpringAOP嵌套调用的解决办法 Spring AOP在同一个类里自身方法相互调用时无法拦截。比如下面的代码:Java代码public class SomeServiceImpl implements SomeService { public void someMethod() { some...
2010-06-07 15:02:21 133
原创 SQL Server中临时表与表变量的区别
SQL Server中临时表与表变量的区别2008-10-12 15:24我们在数据库中使用表的时候,经常会遇到两种使用表的方法,分别就是使用临时表及表变量。在实际使用的时候,我们如何灵活的在存储过程中运用它们,虽然它们实现的功能基本上是一样的,可如何在一个存储过程中有时候去使用临时表而不使用表变量,有时候去使用表变量而不使用临时表呢? 临时表 临时表与永久表相似,只是它的...
2010-06-07 15:00:34 81
原创 SSH框架事务
如果你用的是myeclipse的话,直接就有了集成的方案,声明式事务,就自己去下个spring文档就有了9.5. 声明式事务管理大多数Spring用户选择声明式事务管理。这是对应用代码影响最小的选择,因此也最符合 非侵入式 轻量级容器的理念。Spring的声明式事务管理是通过Spring AOP实现的,因为事务方面的代码与Spring绑定并以一种样板式风格使用,不过尽管如此...
2010-06-07 14:59:47 114
原创 Lock interface in JDK1.5
在JDK1.5之前,多线程并发一般用synchronized关键字来实现。1.5之后,在java.util.concurrent包提供了更强大的支持。synchronized 方法或语句的使用提供了对与每个对象相关的隐式监视器锁定的访问,但却强制所有锁定获取和释放均要出现在一个块结构中:当获取了多个锁定时,它们必须以相反的顺序释放,且必须在与所有锁定被获取时相同的词法范围内释放所有锁定。...
2010-06-07 14:58:57 92
原创 Java 理论与实践: JDK 5.0 中更灵活、更具可伸缩性的锁定机制
JDK 5.0为开发人员开发高性能的并发应用程序提供了一些很有效的新选择。例如, java.util.concurrent.lock 中的类 ReentrantLock 被作为 Java 语言中 synchronized 功能的替代,它具有相同的内存语义、相同的锁定,但在争用条件下却有更好的性能,此外,它还有 synchronized 没有提供的其他特性。这是否意味着我们应当忘记 synchro...
2010-06-07 14:58:09 182
原创 MYSQL不支持子查询使用limit
MYSQL不支持子查询使用limit 再仔细看这位高人的解决办法~ 确实赞~mysql> -- -------------------------------mysql> -- mysql> -- -------------------------------mysql>mysql> -- > 生成测试数据: @Tmysql> DROP TABLE IF EXISTS tb...
2010-06-07 14:56:21 353
原创 JDK的动态代理是如何实现的(3)?
Java 程序的工作机制: Java 对象都以单独的 class 文件存在, java 虚拟机将其载入并执行其虚拟机指令。 Java 虚拟机查找这些 java 对象:java 虚拟机根据 class path 来查找 java 对象,而虚拟机的 class path 又分为三层:bootstrap : sun.boot.class.pathexten...
2010-06-07 14:55:34 86
原创 JDK的动态代理是如何实现的(2)?
Java代码package java.lang.reflect; import java.lang.ref.Reference; import java.lang.ref.WeakReference; import java.util.Arrays; import java.util.Collections; import java....
2010-06-07 14:54:44 97
原创 JDK的动态代理是如何实现的?
用Spring大概有3个月,一直都是张口AOP,闭口AOP,但是Spring的AOP具体是怎么实现的,现在也不是十分清楚.只知道可以用JDK的动态代理,基于接口,或者是cglib方式字节码增强.目前对JDK的动态代理方式不是很理解,固拿出来探讨下,我知道这应该是个新手贴,但还是请大家给点意见.如果真正理解了动态代理,那么对基于Spring AOP出现的各种现象就比较容易理解了.先贴上一...
2010-06-07 14:54:01 104
原创 Java反射学习
所谓反射,可以理解为在运行时期获取对象类型信息的操作。传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代码。严格地说,反射并非编程语言的特性,因为在任何一种语言都可以实现反射机制,但是如果编程语言本身支持反射,那么反射的实现就会方便很多。1,获得类型类 我们知道在Java中一切都是对象,我们一般所使...
2010-06-07 14:51:18 93
原创 wait sleep
1.sleep()使线程休眠一段时间,一段时间结束后,线程进入可执行状态,但并不是立即执行,只是在被排程器调用的时候才执行。在休眠期间,并不释放所持有的“锁”;2.wait()使线程休眠一段时间,若设置参数,时间到时,线程就自动进入可执行状态。若没有,则需要notify()方法去调用。注意:wait()方法和notify()方法都时针对this对象的,调用wait()方法后,会释放加在对象上的...
2010-06-07 14:49:05 105
原创 java hashcode((转)
今天下午研究了半天hashcode()和equals()方法,终于有了一点点的明白,写下来与大家分享1. 首先equals()和hashcode()这两个方法都是从object类中继承过来的。equals()方法在object类中定义如下: public boolean equals(Object obj) {return (this == obj);}很明显是对两个对象...
2010-06-07 14:47:37 62
原创 Java 栈(stack) 与 堆(heap)
Java 栈是由许多帧(frame)组成的,一个帧包含一个Java方法调用的状态。当线程调用一个Java方法时,虚拟机压入一个新的帧至该线程序的Java栈中,当该方法返回时,这个帧被从该线程所属的栈中弹出。Java中每个线程都有自己独立的栈。public class Hello{ private Hello(){ new Hello(); ...
2010-06-07 14:46:02 137
原创 数据库连接池Proxool
一、引子 要问WEB程序与什么关系最紧密,那答案毫无疑问将会是数据库,我们几乎所有的WEB程序都是建立在数据库之上的,怪不得有些人说WEB程序其实就是跑到数据库操作系统之上的应用程序。而相应的一些数据库产品和解决方案也就应运而生,比如大到Oracle,DB2,小到Mysql,另一方面数据库性能优化的方案例如连接池的出现也就好不奇怪了。而我们今天所要探讨的正是数据库连接池的一个方面。...
2010-06-07 14:45:11 131
原创 项目实例
项目名称:land说明:tomcat捆绑JNDI数据源---->dataSource(proxool连接池)server.xml context.xmlspring配置文件中通过JNDI获得数据源 java:comp/env/jdbc/test house-keeping-sleep-time: house ke...
2010-06-07 14:44:28 157
原创 tomcat 连接池
研究了一天,终于有所收获,希望对大家有所帮助。首先请大家注意:这里尤其讨论Tomcat5.5版本中遇到的问题,为什么尤其单对这个版本,我一会儿便加以说明。 问题一:Cannot create JDBC driver of class '''' for connect URL ''null'' 答: [原因分析] 很多朋友在配置好$Tomcat/conf/server.x...
2010-06-07 14:43:45 66
原创 XFire的Web Servicep客户端快速配置
一、把XFire及其需要的包都拷过来下载的XFire包,及其解压后,lib目录下全部的包都拷过来在项目的根目录下建立一个ant文件(BUILD.XML),必须指出lib目录所在的路逗头 衿鞫说膚sdl路径: ...
2010-06-07 14:41:35 153
原创 mysql limit查询语句优化原则
尤其是当数据量非常大的时候,对MYSQL的优化是非常重要的,最常用也最需要优化的就是limit了。mysql的limit给分页带来了极大的方便,但数据量一大的时候,limit的性能就急剧下降。同样是取10条数据 select * from table_name limit 10000,10 和 select * from table_name limit 0,10 就不是一个数量级...
2010-06-07 14:38:18 88
原创 INSTEAD OF触发器
可以在表或视图上指定INSTEAD OF触发器。执行这种触发器就能够替代原始的触发动作。INSTEAD OF触发器扩展了视图更新的类型。对于每一种触发动作(INSERT、UPDATE或 DELETE),每一个表或视图只能有一个INSTEAD OF触发器。 INSTEAD OF触发器被用于更新那些没有办法通过正常方式更新的视图。例如,通常不能在一个基于连接的视图上进行DELETE操作。然...
2010-06-07 14:37:29 352
原创 exists 和 not exists 和 in 和 not in 和 =any
exists 和 not exists 和 in 和 not in 和 =anyexists (sql 返回结果集为真)not exists (sql 不返回结果集为真)如下:表AID NAME1 A12 A23 A3表BID AID NAME1 1 B12 2 B23 2 B3表A和表B是1对多的关...
2010-06-07 14:36:48 308
原创 Proxool 与 Spring 真的水土不服么?
最近研究Spring的JDBC DataSource配置问题,看到proxool这个东西,根据网上大部分网友的评论,对proxool情有独钟。我于是去下载了一个最新版本:0.9.0RC2,你可以到http://proxool.sf.net/去下载。我根据官方文档进行了Datasource的配置,但是发现了问题。像大多数网友反应的一样,出现了“参数无效的问题”。我根据源码进行了分析,终于发现了问...
2010-06-07 14:35:59 103
原创 Hibernate3属性延迟加载
在Hibernate3中,引入了一种新的特性——属性的延迟加载,这个机制又为获取高性能查询提供了有力的工具。在前面我们讲大数据对象读取时,在User对象中有一个resume字段,该字段是一个java.sql.Clob类型,包含了用户的简历信息,当我们加载该对象时,我们不得不每一次都要加载这个字段,而不论我们是否真的需要它,而且这种大数据对象的读取本身会带来很大的性能开销。在Hibernate2...
2010-06-07 14:35:09 70
原创 Java:Collection.Set接口实现
1.Set接口Set 接口继承 Collection 接口,而且它不允许集合中存在重复项,每个具体的 Set 实现类依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一个Collection,只不过其行为不同。下面介绍Set接口3种主要的实现类。HashSet 为快速查找而设计的Set。存入HashSet的元素必须定义hashCode()。...
2010-06-07 14:34:23 79
原创 使用HibernateTemplate调用存储过程
共有两种方式第一种-----------------------------------------------------------------------CallableStatement cstmt =hibernateTemplate.getSessionFactory().getCurrentSession().connection...
2010-06-07 14:33:40 201
原创 Hibernate get和load区别
get和load方式是根据id取得一个记录下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。1.从返回结果上对比:load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常get方法检索不到的话会返回null2.从检索执行机制上对比:get方法和find方法都是直接从数据库中检索而l...
2010-06-07 14:32:51 62
原创 MySQL中实现分割字符串的方法
比如现在有一字符串:1,2,44,5,666,29232要把它按照逗号分割成:1244566629232而且还要求它的总数。这个我以前写过。不过今天规范一下。1、具体函数SQL code DELIMITER $$CREATE DEFINER=`root`@`%` FUNCTION `func_get_split_string_to...
2010-06-07 14:31:41 201
原创 Spring Quartz定时详情
在Spring中,使用JDK的Timer类库来做任务调度功能不是很方便,关键它不可以象cron服务那样可以指定具体年、月、日、时和分的时间。你只能将时间通过换算成微秒后传给它。如任务是每天执行一次,则需要在spring中如下配置:其中period就是一天的微秒数。如果每月1日运行一次,那就复杂了,不知如何配置。因为月份有大、小月之分,每月的微秒数都不...
2010-06-07 14:30:57 67
原创 Ehcache配置文件的详细说明
maxElementsInMemory :cache 中最多可以存放的元素的数量。如果放入cache中的元素超过这个数值,有两种情况:1、若overflowToDisk的属性值为true,会将cache中多出的元素放入磁盘文件中。2、若overflowToDisk的属性值为false,会根据memoryStoreEvictionPolicy的策略替换cache中原有的元素。 et...
2010-06-07 14:30:20 104
原创 按一定几率产生天气状况
public class WeatherUtil { /** * 2种天气情况. */ private String[] weathers = { "sunny", "rain" }; /** * 每种天气情况对应的几率 */ private int[] rates; /** * ...
2010-06-07 14:29:15 180
原创 ThreadLocal变量
ThreadLocal和其它所有的同步机制都是为了解决多线程中的对同一变量的访问冲突,在普通的同步机制中,是通过对象加锁来实现多个线程对同一变量的安全访问的。在1.5以前的版本中,synchronized是自动释放锁。在JDK1.5的版本中,提供了类 java.util.concurrent.locks.Lock。它比synchronized更精确和有更高的性能。这时该变量是多个线程共享的,使用这...
2010-06-07 14:28:10 109
原创 EL表达式
JSTL中自带的方法列表以及其描述可以截取,用fn函数:下面是JSTL中自带的方法列表以及其描述函数名 函数说明 使用举例fn:contains 判断字符串是否包含另外一个字符串 fn:containsIgnoreCase 判断字符串是否包含另外一个字符串(大小写无关) fn:endsWith 判断字符串是否以另外字符串结束 fn:escapeXml...
2010-06-07 14:27:06 69
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人