- 浏览: 304710 次
- 性别:
- 来自: 北京
最新评论
-
kongdong88:
Netty简单应用与线上服 ...
用Netty实现的一个简单的HTTP服务器 -
phili1999:
兄弟,此乃Eclipse的bug,至今未解决,可见国人地位低啊 ...
eclipse的控制台在UTF-8编码下键盘输入BUG问题,请问有谁能解决 -
xiaguobing:
谢谢分享啊
MetaQ初探 -
ih0qtq:
...
java性能编码规范整理
文章列表
InnoDB和MyISAM是在使用MySQL最常用的两个表类型,各有优缺点,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供 ...
HttpClient连接池原理及一次连接时序图
- 博客分类:
- 网络通信
1. httpClient介绍
HttpClient是一个实现了http协议的开源Java客户端工具库,可以通过程序发送http请求。
1.1. HttpClient发送请求和接收响应
1.1.1. 代码示例
以
前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了Blockin ...
1.LinkedBlockingQueue<E>:java.util.concurrent
public class LinkedBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable
一个基于已链接节点的、范围任意的 blocking queue 。此队列按 FIFO(先进先出)排序元素。队列的头部 是在队列中时间最长的元素。队列的尾部 是在队列中时间最短的元素。新元素插入到队列的尾部,并且队列检索操作 ...
如果在获得了某个集合的迭代器之后,除了通过这个迭代器之外对该集合做了结构性的修改(添加元素或删除元素),那么再调用这个迭代器的next()或remove()方法就会抛ConcurrentModificationException异常。
代码如:
写道
ArrayList<Integer> list1 = new ArrayList<Integer>(Arrays.asList(1)); Iterator<Integer> list1_iterator1 = list1.iterator(); list1.add(2); list1_iter ...
一直以来都想好好研究下ReentrantLock,她的独到魅力令我屡试不爽,无奈网上实在是没有太多的资料可以参考,于是自己开始深入研究它的内部实现机制,经过数天的研究,终于有点心得体会升华了,记录之…… synchronized原语和ReentrantLock在一般情况下没有什么区别,但是在非常复杂的同步应用中,请考虑使用ReentrantLock,特别是遇到下面2种需求的时候。 1.某个线程在等待一个锁的控制权的这段时间需要中断 2.需要分开处理一些wait-notify,ReentrantLock里面的Condition应用,能够控制notify哪个线程 3.具有公平锁功 ...
可重入锁 ReentrantLock 的含义是: 当某个线程获取某个锁后,在未释放锁的情况下,第二次再访问该锁锁定的另一代码块时,可以重新进入该块。 什么情况下可以使用 ReentrantLock : 1 ,先看看 synchronized 的一些限制: 1.1 :无法中断正在等候获取一个锁的线程 1.2 :无法通过投票得到一个锁 1.3 :释放锁的操作只能与获得锁所在的代码块中进行,无法在别的代码块中释放锁 2 , ReentrantLock 没有以上的这些限制,且必须是手工释放锁。
主要相同点:Lock能完成synchronize ...
上个星期总结了一下synchronized相关的知识,这次将Queue相关的知识总结一下,和朋友们分享。 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。 注:什么叫线程安全?这个首先要明确。线程安全的类 ,指的是类内共享的全局变量的访问必须保证是不受多线程形式影响的。如果由于多线程的访问(比如修改、遍历、查看) ...
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法了,而不能直接访问LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。
队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个已经满了的阻塞队列中添加一个元素或者是从 ...
从Java5开始,Java提供了自己的线程池。每次只执行指定数量的线程,java.util.concurrent.ThreadPoolExecutor 就是这样的线程池。以下是我的学习过程。
首先是构造函数签名如下:
public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,RejectedExecutionHandler handler);
参数介绍:
co ...
开发目的:使用FTP连接池来管理FTP连接,以避免不断的连接FTP造成性能下降。
1、FTP连接池,建立一个java类FtpConnectionPooling
package com.dripstone.ftp;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.PriorityBlockingQueue;
...
Hessian服务端核心对象HessianSkeleton 主要做两件事
1.把客户端请求的流反序列化 得到 对应的方法名称 参数
2. 服务类(service)对应方法执行完成 把结果序列化到输出流
hessian服务端暴露服务是通过HessianServlet
[java] view plaincopyprint?
public class HessianServlet extends GenericServlet {
}
public class HessianServlet extends GenericServlet {
...
Redis的主从复制策略是通过其持久化的rdb文件来实现的,其过程是先dump出rdb文件,将rdb文件全量传输给slave,然后再将dump后的操作实时同步到slave中。下面是一篇介绍Redis复制原理的文章,文章作者为新浪微博的田琪同学(@摇摆巴赫)。
实现FTP文件上传与下载可以通过以下两种种方式实现(不知道还有没有其他方式),分别为:1、通过JDK自带的API实现;2、通过Apache提供的API是实现。 第一种方式
package com.cloudpower.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import sun.net.TelnetInputStream;
import sun.net.TelnetOut ...
首先来个FtpInfo类
package org.javawo.components.ftp;
/*** FTP连接参数VO类* * @author 杨涛**/public class FtpInfo {/** 登录用户名*/private String name;/** 登录密码*/private String password;/** 登录IP地址*/private String ip;/** 登录端口*/private int port;
public String getName() { return name;}
public void setName(String n ...