- 浏览: 538990 次
- 性别:
- 来自: 杭州
最新评论
-
c__海棠依旧:
很强,对于我这个新手很容易理解,准们登录来给你点赞的!
BeanFactory和FactoryBean -
hudazheng:
很清晰!
X86、X64和X86_64区别 -
hugh.wang:
...
BeanFactory和FactoryBean -
CB00J:
...
Executor框架和线程池 -
Arbow:
请教一个问题。现在互联网业务的数据库通常用分片方式来连接一组数 ...
BoneCP源码——概述
文章列表
一.Join语法概述
join 用于多表中字段之间的联系,语法如下:
... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona
table1:左表;table2:右表。
JOIN 按照功能大致分为如下三类:
INNER JOIN(内连接,或等值连接):取得两个表中存在连接匹配关系的记录。
LEFT JOIN(左连接):取得左表(table1)完全记录,即是右表(table2)并无对应匹配记录。
RIGHT JOIN(右连接):与 LEFT JOIN 相反,取得右表(table2)完全记录,即是左表(table1)并无 ...
本文介绍多线程在使用时由直接new Thread()到Executors.newCachedThreadPool(),再到直接new ThreadPoolExecutor()的过程。
背景:
项目需要在Servlet前加个Filter做数据的转发,只是数据的简单透传,为了不影响用户的体验,而采用多线程来实现。
最简单的实现
直接在filter中new Thread来实现,如下:
但是访问量一大,这种方法会把系统搞死。
线程池实现
后面采用线程池的方式实现,虽然之前也有研究过线程池,但是对线程池的记忆最深的就是线程池是对线程的缓存,重复利用,避免线程的重复 ...
最近在看dubbo的源代码,发现dubbo类ExtensionLoader中有一段代码:
private static final ConcurrentMap<Class<?>, ExtensionLoader<?>> EXTENSION_LOADERS = new ConcurrentHashMap<Class<?>, ExtensionLoader<?>>();
public static <T> ExtensionLoader<T> getExtensionLoader(Class& ...
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容,详见后面描述。
总体架构
Dubbo框架设计一共划分了10个层,而最上面的Service层是留给实际想要使用Dubbo开发分布式服务的开发者实现业务逻辑的接口层。图中左边淡蓝背景的为服务消费方使用的接 ...
/*
* Copyright 2011 Alibaba.com All right reserved. This software is the
* confidential and proprietary information of Alibaba.com ("Confidential
* Information"). You shall not disclose such Confidential Information and shall
* use it only in accordance with the terms of the ...
1、Heap Buffer
堆内存字节缓冲区,可以被JVM自动回收,特点是内存的分配和回收速度快,缺点是如果进行Socket的I/O读写,需要额外的做一次内存复制,将堆内存对应的缓存区复制到内核Channel中,性能会有一定程度的下降。
2、Direct Buffer
直接内存字节缓冲区,非堆内存,在堆外进行内存分配和回收,相比于堆内存,它的分配和回收速度会慢一些,但是将它写入或者从Socket Channel中读取时,由于少了一次内存复制,速度比堆内存快。
JDK1.4中新引入NIO类库,引入了一种基于通道(Channel)和缓冲区(Buffer)的I/O方式,它可以使 ...
consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛;
1 基本场景
比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ;
支持 http://ifeve.com/tao-code-match-1/ ,用fork-join来实现
读取一个文件中的单词(使用BufferedReader按行读取),排序(使用fork-join框架快速排序),写到另一个文件中(使用BufferedWriter進行寫入)
代码在github上:https://github.com/chenzehe/wordsorter-java
SortMain.java
package com.chenzehe.wordsorter;
import java.io.BufferedReader;
import java.io.Buffe ...
Java级联调用方法的类设计
- 博客分类:
- Java基础
在Java方法设计时返回当前对象的引用(this),可以实现级联调用的设计,如StringBuilder类中的append方法:
public StringBuilder append(String str) {
super.append(str);
return this;
}
使用时可以sb.append("a").append("b").append("c");这种方式级联调用。Buffer类中的方法也是级联调用的设计:
public fi ...
在配置好Hadoop Eclipse plugin 连接成功后,提交作业时会抛出下面异常:
2013-10-31 9:38:04 org.apache.hadoop.security.UserGroupInformation doAs
严重: PriviledgedActionException as:admin cause:java.io.IOException: Failed to set permissions of path: \home\hadoop\tmp\mapred\stagi ...
用反射解析jar文件并执行里面Java代码
- 博客分类:
- Java基础
1、使用JarFile类读取jar包MANIFEST.MF中的Main-Class,如果没有设置Main-Class则调用方法中指定执行函数
2、解压jar文件
3、设置classPath
4、利用反射取得class和method,并运行该method
如下代码Run.java将被打包到jar文件中,使用Maven构建并打包:
package com.chenzehe.runjar;
public class Run {
/**
* @param args
*/
public static void main(String[] args) {
Sy ...
Hadoop IPC RPC类中对请求的客户端缓存类ClientCache,是一个用HashMap进行对象缓存的类,但是对缓存操作时都使用synchronized关键字来加锁,如果使用ConcurrentHashMap进行进行缓存,在存取时会有更好的性能。ConcurrentHashMap是基于分段的锁分离技术实现,而且使用JUC中的显示锁来保证同步,多线程方面性能比HashMap有明显的优势。
/* Cache a client using its socket factory as the hash key */
private class Client ...
Java NIO 使用实例
- 博客分类:
- Java基础
在JDK1.4之前,Java OutputStream的write方法、InputStream的Read方法和ServerSocket的accept()方法都是阻塞方法,JDK1.4之前Java引入了新的输入输出系统(New Input/Out,NIO),非阻塞是Java NIO实现的重要功能之一 。
1、Buffer
缓冲区,传输数据使用,本质是一个数组,Channel中读数据和写数据都只能通过Buffer传输。
2、Channel
通道,所有的IO流在NIO中都是从Channel开始的,数据可以从Channel读到Buffer中,也可以从Buffer写到Chan ...
注:本文为转载
当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定义排序。 一、Comparator
public interface Comparator<T> {
/**
* @return o1小于、等于或大于o2,分别返回负整数、零或正整数。
*/
int compare(T o1, T o2);
boolean equals(Object obj);
}
强行对某个对象collection进行整体排序的比较函数,可以将Compa ...
Java 枚举使用实例
- 博客分类:
- Java基础
Lucene Field类中使用枚举如下:
声明抽象方法,在枚举实例中重写该方法。
public final class Field extends AbstractField implements Fieldable, Serializable {
public static enum Store {
YES {
@Override
public boolean isStored() { return true; }
},
NO {
@Override
public boolean isSt ...