自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(103)
  • 收藏
  • 关注

原创 Java--Socket通信(双向)

新建两个工程,一个客户端,一个服务端,先启动服务端再启动客户端两个工程的读写操作线程类基本上完全相同服务端:[code="java"]import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException...

2014-03-01 23:30:44 261

原创 Java--Socket通信(单向单工)

[b]1.客户端接受服务端的消息并打印:[/b]客户端:[code="java"]import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.Socket;p...

2014-03-01 23:28:50 458

原创 http,socket,tcp/ip 网络传输与通讯知识总结

什么是TCP和UDP,以及二者区别是什么?TCP的全称为传输控制协议。这种协议可以提供面向连接的、可靠的、点到点的通信。UDP全称为用户数据报协议,它可以提供非连接的不可靠的点到多点的通信。使用TCP还是UDP,那要看你的程序注重哪一个方面,可靠(tcp)还是快速(udp)。TCP/IP 建立连接的过程 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,...

2014-03-01 23:22:26 166

原创 基于心跳的socket长连接

案例:心跳:socket模拟网页的报文连接某个网站,创建tcp的socket后,当我socket.connect后,如果在5到7秒钟不socket.send,那么这个链接就失效了。 请问如何长时间的保持这个链接这是在服务器端的设置的,客户端没法设置,可以发送心跳包。socket.connect后,每3-4秒用socket.send发送一字节数据(内容随便),然后观查这个连接是否保持...

2014-03-01 17:45:03 1281

原创 java socket 长连接

长连接主要用于在少数客户端与服务端的频繁通信,因为这时候如果用短连接频繁通信常会发生Socket出错,并且频繁创建Socket连接也是对资源的浪费简单说,如果是频繁通讯,使用长连接长:connect连上后不断开,进行N次收发操作。短:每次都connect,完成任务后立即断开。下次重连。一般都是accept后启动一个线程去处理,该线程中的处理大致如下 短连接: ...

2014-03-01 14:07:53 267

原创 根据cpu情况决定线程运行数量和情况

一个线程分配器,根据cpu的负载情况,自动完成对应线程的唤醒或者是等待操作。整个过程是一个平滑的过程,不会因为线程的切换而导致机器负载出线锯齿。读取Linux系统TOP等指令拿到系统当前负载[code="java"]package temp.util;import java.io.BufferedReader;import java.io.InputStreamRead...

2012-07-11 10:24:38 321

原创 linux 下取进程占用 cpu/内存 最高的前10个进程

# linux 下 取进程占用 cpu 最高的前10个进程ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head# linux 下 取进程占用内存(MEM)最高的前10个进程ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head...

2011-09-15 16:16:32 145

原创 mysql-5.1.47二进制版本的安装

二进制版本的mysql是已经编译好的,无需 configure ,make make install 等步骤,只需配置一 下即可使用,卸载也方便,直接删除即可; 现在以mysql-5.1.47-linux-i686-glibc23.tar.gz 版本做介绍 :1. # chmod 755 mysql-5.1.47-linux-i686-glibc23.tar.gz //改...

2011-09-12 00:11:00 428

原创 Ubuntu10.10下安装mysql 5.5.10二进制包

下载最新的mysql-5.5.10-linux2.6-i686.tar.gz shell切换到root用户 安装在/usr/local目录下面 解压缩文件 $cd /usr/local $tar zxvf path/mysql-5.5.10-linux2.6-i686.tar.gz $ln -s mysql-5.5.10-linux2.6-i686 mysql ...

2011-09-11 21:52:59 118

原创 线程池shutdown

写一个程序要求主线程等待子线程运行结束后退出,且子线程同时运行。思路共享一个计数标志位,每个线程结束后都去更新这个计数标志位,主线程判断该计数标志位是否所有的线程都已经工作完成,但是为了不去浪费过多的CPU,主线程需要进行Thread.sleep(),但是Thread.sleep()也会倒是效率的下降,所以这样的方法并不完美。查资料,发现java.util.concurrent包中...

2011-06-10 14:28:48 160

原创 海量数据的删除策略

1.延迟删除 一条数据会被很多数据引用。当被引用的数据删除时,引用的数据也需要删除。这时候可以用延迟删除的方法。 例子: 用户发表的帖子,可以被转发到很多地方。所有转发过的贴都是对原帖的引用,用户接着把他的原帖删除,所有被转发过的帖子也需要进行清理。我们采用的是延迟删除的方法,用户操作时,先直接删除原帖,被转发的贴,在点击时,会到原帖加载内容,这时发现原帖已经不存在,此时这条被点击的转...

2011-03-11 10:42:22 197

原创 OOM和JVM配置优化

OOM这个缩写就是Java程序开发过程中让人最头痛的问题:Out of Memory。在很多开发人员的开发过程中,或多或少的都会遇到这类问题,这类问题定位比较困难,往往需要根据经验来判断可能出现问题的代码。原因主要是两个:对象没有被释放(多种情况引起,往往是比较隐蔽的引用导致被Hold而无法被回收)。另一种就是真的Memory不够用了,需要增加JVM的Heap来满足应用程序的需求。...

2011-02-28 15:55:12 87

原创 JVM参数调优实践终结篇,无停滞

JVM参数调优是个很头痛的问题,设置的不好,JVM不断执行Full GC,导致整个系统变得很慢,网站停滞时间能达10秒以上,这种情况如果没隔几分钟就来一次,自己都受不了。这种停滞在测试的时候看不出来,只有网站pv达到数十万/天的时候问题就暴露出来了。 要想配置好JVM参数,需要对年轻代、年老代、救助空间和永久代有一定了解,还要了解jvm内存管理逻辑,最终还要根据自己的应用来做调整。关于JV...

2011-02-28 14:16:53 96

原创 MD5验证器

[code="java"]import java.io.BufferedInputStream;import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.Messag...

2011-02-24 14:12:12 107

原创 Session持久化

Session持久化(2007-04-08)Session持久化可以实现当tomcat重新启动后,当前IE使用的session仍然有效而不用重新登录,有两步需要做,session持久化很有用,尤其在eclipse中重新增加类后,tomcat重新加载后,IE页面不用再登录,之前的session依旧保持,调试的时候很有用1.配置conf/server.xml在server.xml的根路径或...

2011-01-28 10:20:10 117

原创 基于iframe的HTTP长连接实现

关于什么是http长连接我不废吐沫了,有专业的解释(http://www.ibm.com/developerworks/cn/web/wa-lo-comet/)你可以去看看我们介绍一下在struts下的实现首先写一个test.jsp(写一些片段)[code="java"] [/code]特别注意‘’中的ta...

2011-01-27 10:18:38 1079

原创 comet(http 请求长连接) 之 ajax 长查询 简单实现。

这几天看到几篇关于http 长连接的文章,之前做过一个简单WebIM 采用ajax定时查询,效率一般,请求一多 iis 日志每天大概有80M左右。在线人数在40人左右(基本和挂QQ一样)。今天特意研究了一下http 的长连接。有了一点点成果。现放出来大家一起讨论一下。不清楚长连接请点这里。1.客户端请求[code="java"] var HttpReques...

2011-01-27 10:15:16 215

原创 HTTP实现长连接

HTTP是无状态的 也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。如果客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话HTTP1.1和HTTP1.0相比较而言,最大的区别就是增加了持久连接支持(貌似最新的 ht...

2011-01-27 09:55:05 685

原创 HTTP请求Header分析

客户端HTTP请求的Header信息1、HTTP请求方式GET 向Web服务器请求一个文件POST 向Web服务器发送数据让Web服务器进行处理PUT 向Web服务器发送数据并存储在Web服务器内部HEAD 检查一个对象是否存在DELETE 从Web服务器上删除一个文件CONNECT 对通道提供支持TRACE 跟踪到服务器的路径O...

2011-01-27 09:52:29 3082

原创 应用servlet实现http的长连接

为了实现服务端向客户端推送的模式,如果自己写的socket到时顺理成章的很容易实现。但是,甲方要我们用标准的http协议。当然,自己写http服务器倒是也没什么题,我开始也时这么想的,而且都设计好了分布计算和负载平衡的方式。但有人暂时还建议我们用中间件,他们的意见就像天气的脸,一会儿这样,一会儿那样。于是在这方面考虑,无奈和喜悦同时而生。无奈的是,直接应用中间件,成就感将大打折扣。喜悦的是,直接应...

2011-01-27 09:50:15 172

原创 comet http 长连接实现方式示例

昨天看了comet的介绍后,虽然大概知道了comet的原理,不过没实际用过还是不太清楚,于是今天又在网上翻了一下别的网友共享的comet实现http长连接的例子,在 [url=http://mzhou.me/2010/10/6/comet-push-http-ajax.html]Comet Server Push 技术介绍[/url] 一文中分别提到了 ”基于长轮询(long polling)“...

2011-01-26 17:01:19 227

原创 xfire+spring配置webservice实例讲解

web.xml:[code="java"] xfireServlet org.codehaus.xfire.spring.XFireSpringServlet xfireServlet /service/* [/code]xfi...

2011-01-24 22:38:22 138

原创 通过spring开发ActiveMQ简单应用

使用spring的支持类开发JMS程序可以简化代码,确保开发质量。以下是使用ActiveMQ作为JMS实现的示例。 首先需要确保如下类库,这里使用maven的pom: org.springframework spring-jms 2.5.6 org.apache.xbean xbean-spring ...

2011-01-23 20:27:30 89

原创 spring2.5.6+activeMQ5.3.2

简介:[1]在介绍ActiveMQ之前,首先简要介绍一下JMS规范。JMS的简介:(1)JMS(Java Message Service,Java消息服务)是一组Java应用程序接口(Java API),它提供创建、发送、接收、读取消息的服务。JMS 使您能够通过消息收发服务从一个 JMS 客户机向另一个 JML 客户机交流消息。JMS是一种与厂商无关的 API,用来访...

2011-01-23 18:58:21 156

原创 利用lock中断线程

ReentrantLock 的lock机制有2种,忽略中断锁和响应中断锁,这给我们带来了很大的灵活性。比如:如果A、B2个线程去竞争锁,A线程得到了锁,B线程等待,但是A线程这个时候实在有太多事情要处理,就是一直不返回,B线程可能就会等不及了,想中断自己,不再等待这个锁了,转而处理其他事情。这个时候ReentrantLock 就提供了2种机制,第一,B线程中断自己(或者别的线程中断它),但是Ree...

2011-01-13 22:53:55 593

原创 ServletContextListener 介绍

在Servlet API中有一个ServletContextListener接口,它能够监听ServletContext对象的生命周期,实际上就是监听Web应用的生命周期。当Servlet容器启动或终止Web应用时,会触发ServletContextEvent事件,该事件由 ServletContextListener 来处理。在 ServletContextListener 接口中定义了...

2011-01-12 23:28:42 61

原创 Servlet3.0的异步处理

Java servlet是大家公认的服务器端web技术的标准,包括jsp,jsf,和大量的web框架,soap,RESTful web service api ,还有新闻供应。servlet运行在这些技术下面,以保证这些技术可以运行在任何java web服务器上。所以servlet的任何变化都会对所有与服务器有关的技术产生影响。 已经在2009年1月通过公众审核...

2011-01-12 22:53:52 95

原创 TreeMap注意事项

1、如果是原始比较器,key不可以为null2、所有作为key的对象,必须实现comparable接口,基本数据类型会自动进行装箱,否则必须转入外部比较器comparator3、因为需要比较,所以作为key的必须是同一种类型不断总结中。。。。...

2011-01-10 01:01:22 180

原创 深入理解HashMap

Hashmap是一种非常常用的、应用广泛的数据类型。加载因子:加载因子是表示Hsah表中元素的填满的程度.若:加载因子越大,填满的元素越多,好处是,空间利用率高了,但:冲突的机会加大了.反之,加载因子越小,填满的元素越少,好处是:冲突的机会减小了,但:空间浪费多了.冲突的机会越大,则查找的成本越高.反之,查找的成本越小.因而,查找时间就越小.因此,必须在 "冲突的机会"与"...

2011-01-07 22:03:40 60

原创 Comparator和Comparable比较

当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。一、Comparator强行对某个对象collection进行整体排序的比较函数,可以将Comparator传递给Collections.sort或Arrays.sort。接口方法:1 /**2 * @return o1小于、等于或大...

2011-01-05 13:16:49 82

原创 彻底攻克java异常

[b]1、JAVA异常的处理机制[/b] 当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,在所有的finally块代码被执行和当前线程的所属的ThreadGroup的[...

2011-01-01 15:31:17 136

原创 java线程unchecked 异常的处理UncaughtExceptionHandler

Thread的run方法是不抛出任何检查型异常(checked exception)的,但是它自身却可能因为一个异常而被终止,导致这个线程的终结。最麻烦的是,在线程中抛出的异常即使在主线程中使用try...catch也无法截获,因此可能导致一些问题出现,比如异常的时候无法回收一些系统资源,或者没有关闭当前的连接等等。 主线程之所以不处理子线程抛出的RuntimeExcept...

2011-01-01 15:23:01 221

原创 彻底攻克java流

类图1:[img]http://dl.iteye.com/upload/attachment/379318/41a8b10c-319c-3633-97a4-87c8cc7c6ec5.jpg[/img]IO分两种流 字节流 InputStream OutputStream 字符流 Reader Writer 他们都是抽象类 具体实现 字节流 File...

2010-12-31 00:26:37 85

原创 Java5中的线程池实例讲解

Java5增加了新的类库并发集java.util.concurrent,该类库为并发程序提供了丰富的API多线程编程在Java 5中更加容易,灵活。本文通过一个网络服务器模型,来实践Java5的多线程编程,该模型中使用了Java5中的线程池,阻塞队列,可重入锁等,还实践了Callable, Future等接口,并使用了Java 5的另外一个新特性泛型。  简介   本文将实现一个网...

2010-12-30 16:23:33 81

原创 线程池ThreadPoolExecutor使用简介

一、简介线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为:ThreadPoolExecutor(int corePoolSize, int maximumPoolSize,long keepAliveTime, TimeUnit unit,BlockingQueue workQueue,RejectedExecuti...

2010-12-30 14:38:01 124

原创 Web应用程序中调度器的启动和关闭问题

我们知道静态变量是ClassLoader级别的,如果Web应用程序停止,这些静态变量也会从JVM中清除。但是线程则是JVM级别的,如果你在Web 应用中启动一个线程,这个线程的生命周期并不会和Web应用程序保持同步。也就是说,即使你停止了Web应用,这个线程依旧是活跃的。正是因为这个很隐晦 的问题,所以很多有经验的开发者不太赞成在Web应用中私自启动线程。 如果我们手工使用JDK Time...

2010-12-29 16:30:47 233

原创 慢慢琢磨JVM

1 JVM简介 JVM是我们Javaer的最基本功底了,刚开始学Java的时候,一般都是从“Hello World”开始的,然后会写个复杂点class,然后再找一些开源框架,比如Spring,Hibernate等等,再然后就开发企业级的应用,比如网站、企业内部应用、实时交易系统等等,直到某一天突然发现做的系统咋就这么慢呢,而且时不时还来个内存溢出什么的,今天是交易系统报了StackOverfl...

2010-12-29 13:41:09 63

原创 守护线程总结

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) Daemon的作用是为其他线程的运行提供便利服务,比如垃圾回收线程就是一个很称职的守护者。User和Daemon两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果 User Thread已经全部退出运行了,只剩下Daemon Thread存在了,虚拟机也就退出了。 因为没有了被...

2010-12-29 11:40:35 94

原创 数据库三范式实例

第一范式:消除组中的重复,也就是说列中是否存储了其他列中的信息(字段不可再分)第二范式:消除部分依赖列,也就是说是否有依赖于一部分主键的列 (非主键字段完全依赖主键字段)第三范式:消除非依赖列,是否有依赖于非主键的列 (消除传递依赖)例如: 学生信息表 学生ID,姓名,地址,城市,邮政编码,所在年级,性别,参加课程,课程级别,课程ID,名称,描述,教师ID,教 ...

2010-12-29 11:00:41 161

原创 数据库中的水平分割和垂直分割

分割表分为水平分割表和垂直分割表两种。分割表增加了维护数据完整性的代价。 水平分割表:一种是当多个过程频繁访问数据表的不同行时,水平分割表,并消除新表中的冗余数据列;若个别过程要访问整个数据,则要用连接*作,这也无妨分割表;典型案例是电信话单按月分割存放。另一种是当主要过程要重复访问部分行时,最好将被重复访问的这些行单独形成子集表(冗余储存),这在不考虑磁盘空间开销时显得十分重要;但在分割...

2010-12-28 22:41:52 487

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除