摘要: 俗话说,人多好办事!在程序里也是这样,如果是同一 个应用程序需要并行处理多件任务,那就可以创建多条线程。但是人多了,往往会出现冲突,使得这个工作无法再进行下去了,(三个和尚没水喝啊!)这就是“死锁”。 死锁,举个形象的例子,就像3(A、B、C)个人在玩3个球(1、2、3),规则很简单:每个人都必须先拿到自己左手边的球,才能拿自己右边的球,两手都有球之后,才能把球都放下。这个游戏看起来似乎可以永远进行下去,但是若干局之后,如果三个人刚好都只拿到左手边的球,都等着那右手边的球,但是因为谁都不能放手,那么这三个人(线程)都将陷入无尽的等待中了,这就是传说中的“死锁”。 下面就用Java举例,例子中已 阅读全文
posted @ 2013-03-19 23:10 放牛的铁匠 阅读(245) 评论(0) 推荐(0) 编辑
摘要: Spring MVCPKStruts2struts2时采用的传统的配置文件的方式,并没有使用传说中的0配置。spring3 mvc可以认为已经100%零配置了(除了配置spring mvc-servlet.xml外)。Spring MVC和Struts2的区别:1. 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了(Filter可认为是Servlet的一种“变种”,它主要用于对用户请求进 阅读全文
posted @ 2013-03-19 22:23 放牛的铁匠 阅读(1057) 评论(0) 推荐(0) 编辑
摘要: 当我们打开一个网页时,浏览器要向网站服务器发送一个HTTP请求头,然后网站服务器根据HTTP请求头的内容生成当次请求的内容发送给浏览器。你明白HTTP请求头的具体含意吗?下面一条条的为你详细解读,先看某一次HTTP请求头的具体内容:Accept-Language: zh-cn,zh;q=0.5Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8Accept-Encoding: gzip, deflateUser-Agent 阅读全文
posted @ 2013-03-19 11:39 放牛的铁匠 阅读(10713) 评论(0) 推荐(0) 编辑
摘要: /*** nio不同于传统的 stream i/o, nio 是一种 block i/o* * nio 将最耗时的I/O操作(提取/填充缓冲区)的动作转回给操作系统* * 传统的 i/o 一次一个字节的处理数据(一个输入流产生一个字节的数据,一个输出流消费一个字节的数据,流式数据创建过滤器很容易,确定是比较慢)* * nio采用的块的方式来处理数据,每一个操作都在一步中产生或者消费一个数据块* * nio库中,所有的数据都是用缓冲区处理的。读取数据的时候,它是直接到缓冲区中的。写入数据的时候,它是写入到缓冲区中的。任何时候访问NIO中的数据,都是将其放入到缓冲区中的* * 缓冲区实质上是一个数 阅读全文
posted @ 2013-03-19 10:02 放牛的铁匠 阅读(259) 评论(0) 推荐(0) 编辑