- 浏览: 701772 次
- 性别:
- 来自: 北京
最新评论
-
orangebook:
对于初学者来说,这样编写可能会误导,理解更烦锁。
观察者模式(发布-订阅) -
liudajiang:
呵呵 startThreads(rand ...
实践缩小Java synchronized 粒度 -
zengwenbo5566:
谢谢博主,学习了
解决getOutputStream() has already been called for this response -
u011335423:
大神厉害啊 可以了
解决getOutputStream() has already been called for this response -
xiang37:
...
解决getOutputStream() has already been called for this response
文章列表
Java finalize方法使用
- 博客分类:
- corejava
jdk doc
当垃圾回收确定不再有对该对象的引用时,由对象的垃圾回收器调用。子类重写finalize方法来释放系统资源或执行其他清理。
finalize的一般约定是,当 Java虚拟机已确定,任何尚未死亡的线程都不再可以通过任何方式访问此对象,除非由于已准备好完成的其他某个对象或类而执行的操作。finalize方法可以执行任何操作,包括使此对象再次可供其他线程使用finalize的通常目的,但是,是在不可撤销地丢弃对象之前执行清理操作。例如,对象的 finalize 方法,表示输入/输出连接可能执行显式 I/O 事务,用于在永久丢弃对象之前断开连接。
...
java.Util.Map接口是jdk的常用接口,Map是一种数据字典,以key,value形式出现,key、value作为数据域出现在内部接口Entry<K,V>中。提供根据key查value,以及keys和values集合并遍历的方法。没什么特殊的地方,只是对于几种Map,如果能 ...
java.util.List是java集合框架的基础接口之一,使用频率非常高,如下主要从数据结构和应用场景做简单分析,仅供交流和参考。
1.Vector
Jdk遗留类,现在使用很少,但了解下最初jdk集合类的实现方法也是不错的。添加、删除方 ...
最近几个月,参与了一个大数量,高并发的项目,遇到过一个问题,由于并发较高,导致系统间的tcp调用超时严重,调用者和被调用者都不堪重负,后来添加了一个MQ,负责两者之间的消息传输,有效地解决了两者的窘境。调用者将消息发送到MQ,它容量巨大,调用者发送很顺畅,接收方也可根据自己的处理能力来决定接收速度,处理完1条消息,再接收下1条,遇到处理异常还可重发,真可谓一石二鸟...
mysql大数据量下访问实践
- 博客分类:
- mysql
最近参与了一些用户相关系统的开发,经历了数据库在大数据量下出现的一些问题,记录备忘,也请有经验的牛们指点指点。
目前数据量大概在40亿条左右,最近1周大概增长了50%左右,后面可能会小一些,每天预估在几百到几千W条左右。
功能:
java服务接口接收请求,执行sql操作。
查询:
读操作共有5,6种,group by, max()比较多,查询数据时间范围在1年左右。但要求尽可能的实时,同时并发量较大,记得出现过一次1分钟内某个查询执行了260W次左右的情况。一般情况下1秒钟有1W条左右的sql在执行,除了1个write,1个update,其他都是查询。
阶 ...
记录上周五的一个java服务的异常排查及分析过程,以备将来参考。
java服务的异常主要表现为3点:
1.cpu使用率高;
2.内存占用较大;
3.本机telnet访问服务被拒绝
具体情况:
1.cpu高。启动时会打到800%以上,访问量不大的时段,top看到使用率在100-400%之间,基本稳定在100%-200%左右。
2.内存高。启动后java服务占用的内存不断增大,服务器12G物理内存,增大到12*26%=3G左右时,不再增大,但服务器物理内存也已接近用尽。
3.telnet服务端口没响应。应用刚启动时,telnet 可通,但过10-20分钟左 ...
最近ssss系统对redis的访问压力较大,为了减轻对redis服务器的访问压力,需要对功能进行优化,下面参考了同事的优化思路,并对思路进行了改进。
strategy(策略)模式
- 博客分类:
- design pattern
策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
策略模式的结构 策略模式是对算法的包装,是把使用算法的责任和算法本身分割开来,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:“准备一组算法,并将每一个算法封装起来,使得它们可以互换”。下面就以一个示意性的实现讲解策略模式实例的结构。
这个模式涉及到三个角色: 1)环境(Context)角色:持有一个Strategy的引用。 ...
Adapter(适配器)模式
- 博客分类:
- design pattern
《设计模式》GOF :
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
在GOF设计模式中,Adapter可以分为类模式和对象模式两种,类模式通过继承实现,对象模式通过委托实现。
类模式示意图:
对象模式示意图:
观察者模式(发布-订阅)
- 博客分类:
- design pattern
由于网站带有弱sns功能,因此需要设计关注和被关注的消息或是动作通知,那么将这个需求抽象出来的时候就会发现正好符合java中发布订阅模式。一、概述 Java 的设计模式很多,观察者模式被称为是模式中的皇后,而且Java jdk也对它做了实现,可见该设计模式的重要位置。在图形化设计的软件中,为了实现视图和事件处理的分离,大多都采用了Observer模式,比如 Java的Swing,Flex的ActionScript等。在现实的应用系统中也有好多应用,比如像当当网、京东商城一类的电子商务网站,如果你对某 件商品比较关注,可以放到收藏架,那么当该商品降价时,系统给您发送站内消息、手机短信、邮件。这 ...
深入分析 Java I/O 的工作机制
- 博客分类:
- corejava
Java I/O 类库的基本架构
I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道。在当今这个数据大爆炸时代,I/O 问题尤其突出,很容易成为一个性能 ...
今天被问起装饰器模式,已没有什么印象,回来了查查资料,发现java io这块是对装饰器模式的典型应用,画张类图备忘。后面再对java nio进行统一地梳理和深入。
BufferedInputStream,顾名思义就是对InputStream添加缓冲的装饰,通过在构造函数中传入InputStream对象获得需要装饰的流,其他具体装饰子类的设计思路与此相同。OutputStream与此类似,参考如下类图:
QPS、PV和需要部署机器数量计算公式
- 博客分类:
- 故障处理及调优
QPS = req/sec = 请求数/秒
【QPS计算PV和机器的方式】
QPS统计方式 [一般使用 http_load 进行统计]QPS = 总请求数 / ( 进程总数 * 请求时间 )QPS: 单个进程每秒请求服务器的成功次数
单台服务器每天PV计算公式1:每天总PV = QPS * 3600 * 6公式2:每天总PV = QPS * 3600 * 8
服务器计算服务器数量 = ceil( 每天总PV / 单台服务器每天总PV )
【峰值QPS和机器计算公式】
原理:每天80%的访问集中在20%的时间里,这20%时间叫做峰值时间公式:( 总PV数 * 80 ...
RPC之java应用
- 博客分类:
- java分布式
什么是RPC?Remote Procedure Call,远程过程调用。也就是说,调用过程代码并不是在调用者本地运行,而是要实现调用者与被调用者二地之间的连接与通信。比较严格的定义是:
Remote procedure call (RPC) is a protocol that allows a computer program running on one computer to cause a subroutine on another computer to be executed without the programmer explicitly coding t ...
rmi编写java分布式系统时,采用工厂模式的使用示例,参考孙卫琴的《java网络编程精解》,比较简单,仅供日后备忘。
类图:
远程接口
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface IFlight extends Remote{
public String getFlightNumber() throws RemoteException;
public String getOrigin() throws RemoteExcep ...