- 博客(35)
- 收藏
- 关注
【算法与数据结构】金刚坐飞机问题
文章背景编程之美 4.1 “金刚坐飞机问题”的问题2,难度比问题1大很多。编程之美的官方解法,包括原理分析、概率公式、推导过程等,感觉阐述不够详细,没有完全读懂。搜索一下 “金刚坐飞机”,参考了几个很不错的分析,得到一个自己觉得比较完整的答案。 仔细审题 首先,仔细审题,有两个细节需要搞清楚: 飞机上总共有多少座位?N?N+1?还是更多?从问题1的官方解答...
2013-02-15 14:29:10
307
Linux随机数发生器导致Apache进程全部Block的问题追查
今天上午,运营同事报告一个严重故障,现象是网站页面速度非常慢,基本不可用。工程师开始追查问题。首先介绍一下系统架构:前端 Apache,中间PHP,后端MySQL,经典的LAMP架构。 猜测数据库出现性能问题 第一反应,怀疑数据库数据量太大。我们一直定期清理数据库,保证单表数据量在一定范围内。而这段时间一直没有清理,数据量可能过大。立刻执行delete语句,单表减少100W条记...
2012-12-02 21:03:08
380
原创 如何控制War包访问Tomcat的内部实现类
Tomcat默认部署了Manager应用作为Web控制台,提供对Tomcat的管理功能。具体功能包括但不限于:列出已部署的WebApp部署、卸载、启动、停止指定的WebApp展现线程池的详情,例如活动线程数、最大线程数、最小线程数等展现请求处理的统计信息,例如平均请求处理时间、请求次数、出错次数等...从这些功能看,Manager能够获知Tomcat内部信息,并对T...
2010-12-14 21:56:09
275
异常与构造函数、析构函数
写Java代码的时候,遇到错误总是喜欢抛出异常,简单实用。最近开始写C++代码,发现异常没那么简单,使用须谨慎。 翻阅了《Effective C++》 《More Effective C++》《Inside The C++ Object Model》的相关章节,大概弄明白了一些东东,总结在本文。 本文不是总结普适的C++异常机制,还没有这个内力哈! 主要是结合构造函数和析构函数,来...
2010-11-15 14:06:11
175
前置++和后置++的区别
这篇文章不是讨论(i++)+(i++)+(i++)的计算结果,更不是讨论(i++)+(++i)+(i++)。 在C++教程中,我们都会学到:i++和++i是两个表达式,他们都会对i进行自增,但是呢,作为表达式,i++的值是自增之前的值,++i的值是自增之后的值。 本文在此基础上,进行一些稍微深入的讨论。 从操作符重载的角度,看i++和++i的区别,是一个比较好的切入点。...
2010-09-03 13:58:23
1805
1
为什么需要auto_ptr_ref
这几天开始拜读侯捷先生和孟岩先生的译作《C++标准程序库:自修教程与参考手册》 。两位先生确实译功上乘,读得很顺。但是读到P55页关于auto_ptr_ref的讨论,却百思不得其解:为什么需要引入auto_ptr_ref这个辅助类呢? 从书中描述来看,仿佛与拷贝构造函数 、右值 、类型转换 有关。于是,结合auto_ptr的源代码,google之、baidu之,找了一推资料,终于...
2010-08-24 15:46:37
129
原创 [How Tomcat Works]第4章 Tomcat默认连接器
译者 jarfield 博客 http://jarfield.iteye.com概述HTTP 1.1新特性持久化连接(Persistent Connections)Chunked编码(Chunked Encoding)100(Continue)状态码的使用Connect...
2010-06-29 20:17:20
153
[How Tomcat Works]第3章 连接器(二)
译者 jarfield 博客 http://jarfield.iteye.com概述StringManager类应用程序启动应用连接器创建HttpRequest对象读取套接字的输入流解析请求行解析Headers解析Cookie...
2010-04-10 22:50:22
157
[How Tomcat Works]第3章 连接器(一)
译者 jarfield 博客 http://jarfield.iteye.com概述StringManager类应用程序启动应用连接器创建HttpRequest对象读取套接字的输入流解析请求行解析Headers解析Cookies...
2010-04-10 21:55:18
135
Tomcat 5.5.26源代码分析——启动过程(二)
init方法Catalina_Home和Catalina_Base初始化类加载器体系Tomcat的类加载器体系initClassLoaders的代码一个疑问Catalina对象load方法Catalina类的命令行参数加载过程start方法await...
2010-03-25 14:38:17
175
Tomcat 5.5.26源代码分析——启动过程(一)
main方法第一阶段第二阶段第三阶段启动参数的区别一个Bugconfigtest启动参数一般,我们直接运行startup.sh来启动Tomcat。最终执行的命令是:java [options] org.apache.catalina.startup.Bootstrap start options...
2010-03-25 14:30:32
191
[How Tomcat Works]第2章 一个简单的Servlet容器
译者 jarfield博客 http://jarfield.iteye.com概述javax.servlet.Servlet接口第一个应用HttpServer1类Request类Response类StaticResourceProcessor类ServletP...
2010-03-14 00:43:50
123
[How Tomcat Works]第1章 一个简单的Web服务器
译者 jarfield博客 http://jarfield.javaeye.com 超文本传输协议(HTTP)HTTP请求HTTP响应Socket类ServerSocket类应用程序HttpServer类Request类...
2010-03-02 23:09:00
147
Tomcat 5.5.26的网络构建指南
1. 安装JDK不能安装JDK 1.6.x,否则Tomcat 5.5.26依赖的commons-dbcp-1.2.2-src无法编译,原因是:JavaSE 6.0升级了java.sql包中的某些接口,为它们增加了一些方法。commons-dbcp-1.2.2-src中包含了上述接口的实现类,这些类当然没有实现新加的方法。最好...
2010-02-27 00:44:00
144
[How Tomcat Works]第0章 介绍
译者 jarfield博客 http://jarfield.iteye.com概述本书为谁准备Servlet容器如何工作Catalina的框图Tomcat 4和5每章的概述每章的应用程序准备必要的软件概述 欢迎来到Tomcat...
2010-02-24 19:09:00
134
略谈HttpClient和Tomcat的中文编码问题
这几天都在纠结Java Web开发中的中文编码问题。其实,很多Java Web开发者都被中文编码“折磨”过,网络上有大量的讨论。以前我也读过这方面的博文,读完后感觉似乎懂了,好像知道了编码问题的原因和解决方法。但是, 一旦投入到实际开发中,发现自己其实没懂,囧! 连续纠结了几天,总算对前因后果有个清晰地认识,故“略谈”一下。之所以略谈,是因为我并非(也没有能力)完整地阐述Java Web...
2010-02-06 17:41:00
206
优化变成了忧患:String.split引发的“内存泄露”
一直赞叹Sun对待技术的严谨和优雅(bless Sun)。Sun JDK中Java库的源代码,连注释都清清楚楚、规规范范,javadoc注解的使用也一丝不苟,读起来很熟舒服。因此,在日常工作和学习中,经常读读Java库的源代码,不亦乐乎?如果遇到诡异问题,源代码的帮助就更大了。 闲话少说,回归正题。这几天,一直在为Java的“内存泄露”问题纠结。Java应用程序占用的内存在...
2010-01-30 10:56:00
341
Eclipse远程调试Tomcat
最近,一直在研究Tomcat的工作内幕,主要的方法就是参考《How Tomcat Works》这本书和Tomcat 5.5.26的源代码。 Tomcat的代码结构还是比较清晰的,注释也比较全。但是代码毕竟是静态的,难以彻底弄清类与类之间的协作关系,以及运行时对象的交互关系。 如果能对Tomcat的启动、处理请求和停止的过程进行断点调试,看清Tomcat的每一步行踪,那么就能...
2010-01-24 20:24:40
270
欲知Tomcat, 推荐一本书。
最近由于公司项目的需求,我终有机会再次亲近Java,同时也接触到了Tomcat。以前在大学期间也简单接触过Servlet和Tomcat,后来深入了解了EJB和JBoss。当时对JBoss的部分源代码进行了阅读,深刻领悟到Java在企业级中间件中的强大战斗力;自定义类加载器、反射机制、Annotation、JMX等高级语法和特性的应用,让我惊叹不已。公司的Java项目已经结束了,但是...
2010-01-07 22:00:00
206
原创 为什么如此获取Java数组的长度
记得vamcily 曾问我:“为什么获取数组的长度用.length(成员变量的形式),而获取String的长度用.length()(成员方法的形式)?” 我当时一听,觉得问得很有道理。做同样一件事情,为什么采用两种风格迥异的风格呢?况且,Java中的数组其实是完备(full-fledged)的对象,直接暴露成员变量,可能不是一种很OO的风格。那么,设计Java的那帮天才为什么这么做呢?...
2010-01-07 14:06:52
2635
Memcached FAQ(4) 选项、Item过期和命名空间方面的问题
最后更新时间 2009-04-10 更新人 dormando@rydia.net这里收集了经常被问到的关于memcached的问题memcached的选项Item的过期 过期的item什么时候才会从cached中删除命名空间 使用key的"前缀"来模拟命名空间根据命名空间来删除memcached...
2009-07-13 20:34:00
88
Memcached FAQ(3) 性能和客户端库方面的问题
最后更新时间 2009-04-10 更新人 dormando@rydia.net这里收集了经常被问到的关于memcached的问题性能方面的问题 memcached没有我的database快,为什么? 客户端库方面的问题 memcached有哪些客户端库? 使用不同的客户端库,能够访问到memcached中相同的数据吗? (不同客户端库的可以协作吗?)...
2009-07-12 12:44:00
85
Memcached FAQ(2) 集群架构方面的问题
最后更新时间 2009-04-10 更新人 dormando@rydia.net这里收集了经常被问到的关于memcached的问题集群架构方面的问题 memcached是怎么工作的? memcached最大的优势是什么? memcached和MySQL的query cache相比,有什么优缺点? memcached和服务器的local cache(比如PHP的AP...
2009-07-09 21:53:00
96
Memcached FAQ(1) 一般性的问题
最后更新时间 2009-04-10 更新人 dormando@rydia.net这里收集了经常被问到的关于memcached的问题一般的问题 什么是memcached? 从哪获得memcached? 怎么安装memcached? 哪些平台可以运行memcached? 什么情况下适合使用memcached? 什么情况下适合使用memcached? ...
2009-07-05 13:49:00
161
计算二进制数中1的个数的快速算法
以n=10101010为例。首先将其减1,得到10101001;然后用10101010&10101001,得到10101000。这个过程,我们可以看出,n末尾的1被去掉了。即每作一次n = n&(n-1),n的末尾就少一个1。如此反复,知道n=0位置。示例代码如下:int count(int n){ int c = 0; for(;n;n=n&(n-1)) count++; ret...
2008-03-31 23:06:00
242
typedef的四个用途和两个陷阱
用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char*pa,pb;//这多数不符合我们的意图,它只声明了一个指向字符变量的指针, //和一个字符变量; 以下则可行: typedefchar*PCHAR;//一般用大写 PCHARpa,pb;//可行,同时声明了两个指向字符变量的指针 虽然: char*pa,*pb; 也可行,但相对...
2008-03-12 23:16:00
81
关于typedef的用法
一.基本概念剖析 int* (*a[5])(int, char*); //#1void (*b[10]) (void (*)()); //#2double(*)() (*pa)[9]; //#3 1.C语言中函数声明和数组声明。函数声明一般是这样: int fun(int, double); 对应函数指针(pointer t...
2008-03-12 22:21:00
82
linux文件系统中一些重要概念的分析
文件控制块(FCB,File Control Block)linux文件系统使用目录来组织文件。目录也被组织成文件存放在磁盘上,成为目录文件。每个文件都在它属于的目录文件中登记一个文件目录项,这个文件目录项就是文件控制块。下图就是一个目录文件的物理结构示意图。遍历该结构,就可以找到该目录下的所有文件的文件控制块。文件控制块1 文件控制块2 ....
2008-03-04 15:44:00
174
判断一个整数是否是2的阶乘的快速算法
判断一个整数是否是2的阶乘的快速算法。假设d是一个整数,如果d是2的阶乘,那么(d-1)&d的值一定等于 0。故只需计算(d-1)&d的值即可。
2008-02-15 22:40:00
533
[转载]JBoss5的完全可定制性
面向对象奠基人之一Grady Booch说:The great thing about objects is they can be replaced.对象最伟大的之处是其可被替代(这也是使用OO的主要原因之一)。 每个对象都是可替代意味着高度的灵活性,我们曾经梦想的“按需装配”时代已经来临,由Ioc模式/依赖注射组成微容器可以帮助我们实现对象的可替代性。 Spring/HiveMin...
2008-01-02 15:41:00
97
JBoss Application Server的部署架构
JBoss 的部署架构可以分为三个部分:热部署机制、部署的通用流程、部署的过程。热部署机制,使得我们在不需要重启JBoss的情况下,可以增加、修改和删除部署单元。JBoss会在运行时“察觉”到这些变化,并做出相应的处理。部署的通用流程,是一个对不同类型的部署单元都适用的部署过程。JBoss支持多种部署单元,包括jar格式的EJB组件、war格式的Web组件、ear格式的企业应用组件、sa...
2007-10-11 20:59:00
88
JBoss Application Server的启动过程
本文以JBoss Application Server 4.2.1 GA(以下简称JBoss)为例,介绍它在Windows平台上的启动过程。为了方便叙述,对平台环境做以下假定:Java运行时的安装路径为C:\Java,JBoss的安装路径为C:\JBoss。既然用100% Java编写的JBoss具有跨平台的特性,那为什么还要强调Windows平台呢?这是因为,JBoss的启动是从平台相关的脚...
2007-10-07 19:04:00
117
JBoss创始人Marc Fleury
1998年,在硅谷SUN公司的SAP实验室,一个年轻人正坐在电脑前 面思考,然后写着什么东西。不,他没有在写程序,他在写辞呈。他正在做出人生的一个重大决定:他要辞掉在SUN的这份工作,投身到open source的开发。旁边好多朋友在劝他,这样的做法是"moving down the food chain"(应该是丢掉铁饭碗的意思),这是他整个职业生涯的下坡路。但是这个年轻人却义无反顾地微笑着,眼...
2007-09-19 21:36:00
168
A “Killer App” for AOP
原文地址:http://www.linux-mag.com/id/1677 Tuesday, June 15th, 2004By Bill Burke, Marc FleuryPioneered at Xerox's Palo Alto Research Center (PARC) in the late '80s and early '90s, aspect-oriented p...
2007-09-19 21:25:00
289
Aspect-Oriented Programming and JBoss
<!--//-->下面是关于这篇文章的讨论,值得一看。Logging and tracing code<!-- thread_header.view --> Why is it that all of the AOP examples I see are always logging and tracing? Is AOP good for anything else? ...
2007-09-18 17:50:00
274
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人