Apache Dubbo3.0教程

  • 更新时间:
  • 3045人关注
  • 点击下载

这是一个不错的Apache教程类学习资源,由孙嘉赐提供,主要知识点是关于Apache、Dubbo、Apache教程的内容,已被852人关注,同类资源中评分为9.4分。

资源详情相关推荐
  • 大小:5.31 MB
  • 类别:Apache教程
  • 格式:PDF
  • 编辑:汤俊艾
  • 热度:149
  • Apache Dubbo 3.0 教程
  • Apache Flinkv1.9 官方文档
  • 不仅仅是流计算:Apache Flink实践
  • 实战Nginx:取代Apache的高性能Web服务器
  • Apache Kylin权威指南
  • Apache Dubbo是一个款微服务开发框架,它提供了RPC通信与微服务治理 两大关键能力。这意味着,使用Dubbo开发的微服务,将具备相互之间的远程发现与通信能力, 同时利用Dubbo提供的丰富服务治理能力,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。同时Dubbo是高度可扩展的,用户几乎可以在任意功能点去定制自己的实现,以改变框架的默认行为来满足自己的业务需求。

    《Apache Dubbo3.0教程》是关于 Dubbo 的简单介绍,涵盖 Dubbo 的核心概念、基本使用方式以及 Dubbo3 核心功能,无论你是 Dubbo 的老用户还是新用户,都可以通过这篇 文档快速了解 Dubbo 及新版本带来的变化。

    精选笔记:java使用Apache工具集实现ftp文件传输代码详解

    9小时7分钟前回答

    本文主要介绍如何使用Apache工具集commons-net提供的ftp工具实现向ftp服务器上传和下载文件。

    一、准备

    需要引用commons-net-3.5.jar包。

    使用maven导入:

    <dependency>
      <groupId>commons-net</groupId>
      <artifactId>commons-net</artifactId>
      <version>3.5</version>
    </dependency>

    手动下载:

    //www.jb51.net/softs/550085.html

    二、连接FTP Server

    /**
       * 连接FTP Server
       * @throws IOException
       */
    public static final String ANONYMOUS_USER="anonymous";
    private FTPClient connect(){
    	FTPClient client = new FTPClient();
    	try{
    		//连接FTP Server
    		client.connect(this.host, this.port);
    		//登陆
    		if(this.user==null||"".equals(this.user)){
    			//使用匿名登陆
    			client.login(ANONYMOUS_USER, ANONYMOUS_USER);
    		} else{
    			client.login(this.user, this.password);
    		}
    		//设置文件格式
    		client.setFileType(FTPClient.BINARY_FILE_TYPE);
    		//获取FTP Server 应答
    		int reply = client.getReplyCode();
    		if(!FTPReply.isPositiveCompletion(reply)){
    			client.disconnect();
    			return null;
    		}
    		//切换工作目录
    		changeWorkingDirectory(client);
    		System.out.println("===连接到FTP:"+host+":"+port);
    	}
    	catch(IOException e){
    		return null;
    	}
    	return client;
    }
    /**
       * 切换工作目录,远程目录不存在时,创建目录
       * @param client
       * @throws IOException
       */
    private void changeWorkingDirectory(FTPClient client) throws IOException{
    	if(this.ftpPath!=null&&!"".equals(this.ftpPath)){
    		Boolean ok = client.changeWorkingDirectory(this.ftpPath);
    		if(!ok){
    			//ftpPath 不存在,手动创建目录
    			StringTokenizer token = new StringTokenizer(this.ftpPath,"\\//");
    			while(token.hasMoreTokens()){
    				String path = token.nextToken();
    				client.makeDirectory(path);
    				client.changeWorkingDirectory(path);
    			}
    		}
    	}
    }
    /**
       * 断开FTP连接
       * @param ftpClient
       * @throws IOException
       */
    public void close(FTPClient ftpClient) throws IOException{
    	if(ftpClient!=null && ftpClient.isConnected()){
    		ftpClient.logout();
    		ftpClient.disconnect();
    	}
    	System.out.println("!!!断开FTP连接:"+host+":"+port);
    }

    host:ftp服务器ip地址
    port:ftp服务器端口
    user:登陆用户
    password:登陆密码
    登陆用户为空时,使用匿名用户登陆。
    ftpPath:ftp路径,ftp路径不存在时自动创建,如果是多层目录结构,需要迭代创建目录。

    三、上传文件

    /**
       * 上传文件
       * @param targetName 上传到ftp文件名
       * @param localFile 本地文件路径
       * @return
       */
    public Boolean upload(String targetName,String localFile){
    	//连接ftp server
    	FTPClient ftpClient = connect();
    	if(ftpClient==null){
    		System.out.println("连接FTP服务器["+host+":"+port+"]失败!");
    		return false;
    	}
    	File file = new File(localFile);
    	//设置上传后文件名
    	if(targetName==null||"".equals(targetName))
    	      targetName = file.getName();
    	FileInputStream fis = null;
    	try{
    		long now = System.currentTimeMillis();
    		//开始上传文件
    		fis = new FileInputStream(file);
    		System.out.println(">>>开始上传文件:"+file.getName());
    		Boolean ok = ftpClient.storeFile(targetName, fis);
    		if(ok){
    			//上传成功
    			long times = System.currentTimeMillis() - now;
    			System.out.println(String.format(">>>上传成功:大小:%s,上传时间:%d秒", formatSize(file.length()),times/1000));
    		} else//上传失败
    		System.out.println(String.format(">>>上传失败:大小:%s", formatSize(file.length())));
    	}
    	catch(IOException e){
    		System.err.println(String.format(">>>上传失败:大小:%s", formatSize(file.length())));
    		e.printStackTrace();
    		return false;
    	}
    	finally{
    		try{
    			if(fis!=null)
    			          fis.close();
    			close(ftpClient);
    		}
    		catch(Exception e){
    		}
    	}
    	return true;
    }

    四、下载文件

    /**
       * 下载文件
       * @param localPath 本地存放路径
       * @return
       */
    public int download(String localPath){
    	// 连接ftp server
    	FTPClient ftpClient = connect();
    	if(ftpClient==null){
    		System.out.println("连接FTP服务器["+host+":"+port+"]失败!");
    		return 0;
    	}
    	File dir = new File(localPath);
    	if(!dir.exists())
    	      dir.mkdirs();
    	FTPFile[] ftpFiles = null;
    	try{
    		ftpFiles = ftpClient.listFiles();
    		if(ftpFiles==null||ftpFiles.length==0)
    		        return 0;
    	}
    	catch(IOException e){
    		return 0;
    	}
    	int c = 0;
    	for (int i=0;i<ftpFiles.length;i++){
    		FileOutputStream fos = null;
    		try{
    			String name = ftpFiles[i].getName();
    			fos = new FileOutputStream(new File(dir.getAbsolutePath()+File.separator+name));
    			System.out.println("<<<开始下载文件:"+name);
    			long now = System.currentTimeMillis();
    			Boolean ok = ftpClient.retrieveFile(new String(name.getBytes("UTF-8"),"ISO-8859-1"), fos);
    			if(ok){
    				//下载成功
    				long times = System.currentTimeMillis() - now;
    				System.out.println(String.format("<<<下载成功:大小:%s,上传时间:%d秒", formatSize(ftpFiles[i].getSize()),times/1000));
    				c++;
    			} else{
    				System.out.println("<<<下载失败");
    			}
    		}
    		catch(IOException e){
    			System.err.println("<<<下载失败");
    			e.printStackTrace();
    		}
    		finally{
    			try{
    				if(fos!=null)
    				            fos.close();
    				close(ftpClient);
    			}
    			catch(Exception e){
    			}
    		}
    	}
    	return c;
    }

    格式化文件大小

    private static final DecimalFormat DF = new DecimalFormat("#.##");
      /**
       * 格式化文件大小(B,KB,MB,GB)
       * @param size
       * @return
       */
      private String formatSize(long size){
        if(size<1024){
          return size + " B";
        }else if(size<1024*1024){
          return size/1024 + " KB";
        }else if(size<1024*1024*1024){
          return (size/(1024*1024)) + " MB";
        }else{
          double gb = size/(1024*1024*1024);
          return DF.format(gb)+" GB";
        }
      }

    五、测试

    public static void main(String args[]){
        FTPTest ftp = new FTPTest("192.168.1.10",21,null,null,"/temp/2016/12");
        ftp.upload("newFile.rar", "D:/ftp/TeamViewerPortable.rar");
        System.out.println("");
        ftp.download("D:/ftp/");
      }

    结果

    ===连接到FTP:192.168.1.10:21
    >>>开始上传文件:TeamViewerPortable.rar
    >>>上传成功:大小:5 MB,上传时间:3秒
    !!!断开FTP连接:192.168.1.10:21
    
    ===连接到FTP:192.168.1.10:21
    <<<开始下载文件:newFile.rar
    <<<下载成功:大小:5 MB,上传时间:4秒
    !!!断开FTP连接:192.168.1.10:21

    总结

    以上就是本文关于java使用Apache工具集实现ftp文件传输代码详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

    展开阅读

    相关资源

    • Apache Spark源码剖析

      Apache Spark源码剖析

      《 Apache Spark源码剖析 》以Spark 1.02版本源码为切入点,着力于探寻Spark所要解决的主要问题及其解决办法,通过一系列精心设计的小实验来分析每一步背后的处理逻辑。 《Apache Spark源码剖析》

      大小:43.7 MBSpark

      立即下载
    • Apache Storm技术参考手册

      Apache Storm是Twitter开源的分布式实时大数据处理框架,最早开源于github,从0.9.1版本之后,归于Apache社区,被业界称为实时版Hadoop。Storm设计用于在容错和水平可扩展方法中处理大量数据。它是一个流数据框架,具有最高的摄取率。虽然Storm是无状态的,它通过Apache ZooKeeper管理分布式环境和集群状态。它很简单,您可以并行地对实时数据执行各种操作 随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统

      大小:414 KBApache手册

      立即下载
    • Apache Pulsar v2.7.2 中文文档

      Apache Pulsar是一个分布式的消息发布/订阅传递平台,具有非常灵活地消息模型和一个直观的客户端API. 目录 Get started 概念和架构 Pulsar Schema Pulsar Functions Pulsar IO Pulsar SQL Tiered storage 事务 Kubernetes (Helm) 部署 系统管理 安全 性能 客户端库 Admin API 适配器 参考手册 开发

      大小:14.6 MBApache

      立即下载
    • 构建Apache Kafka流数据应用

      构建Apache Kafka流数据应用

      大小:144.5 MBKafka

      立即下载
    • 实战Nginx取代Apache的高性能Web服务器

      实战Nginx取代Apache的高性能Web服务器

      大小:19.6 MBNginx

      立即下载
    • pyspark从入门到精通(Learning Apache Spark with Python)最新PDF版

      pyspark从入门到精通是一个用python学习apache spark的文档,在这里您将学习有关PySpark 在数据挖掘、文本挖掘、机器学习和深度学习。使用详细的演示代码和示例来演示如何使用每个主要功能,适合于读者对编程和Linux有初步的了解的人员,需要的朋友欢迎下载! 目录 1. 序言 2. 为什么要用 Python Spark? 3. 配置运行平台 4. Apache Spark简介 5. 用RDD编程 6. 统计学与线性代数预科 7. 数据探索 8. 回归 9. 正则化 10. 分类 11.

      大小:12.9 MBpyspark

      立即下载

    学习笔记

    16小时33分钟前回答

    Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法

    Mybatis报错: org.apache.ibatis.exceptions.PersistenceException解决办法 一、问题描述 写好配置文件用JUnit进行测试,一运行就报错: org.apache.ibatis.exceptions.PersistenceException: ### Error querying database. Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.fendo.entity.Person with invalid types () or values (). Cause: java.lang.NoSuchMethodException: com.fendo.entity.Person.init() ### The error may exist in com/fendo/entity/Person.xml ### The error may involve defaultParameterMap ### The error occurred while setting parameters ### SQL: select * from person ### Cause: org.apache.ibatis.reflection.ReflectionException: Error instantiating class com.fendo.entity.Person with invalid types () or values (). Cause: java.lang.NoSuch……

    3小时59分钟前回答

    centos7上编译安装php7以php-fpm方式连接apache

    好几个月之间其实已经配置过LAMP LNMP等等一些配置,以前配置都是按照晚上抄的,基本都能配置出来,现重头学想自己配置下,但是发现好多配置都忘了 ,中间踩了几个坑,记录下,也更彻底的学习下..... ./configure --prefix=/usr/local/php7 --enable-fpm 以fpm模式安装,这个还可以改成 --with-apxs2=PATH模式,两者只能取其一 --enable-so --with-config-file-path=/etc 只能配置文件位置 --with-config-file-scan-dir=/etc/php.d 可以读取这个目录下的配合文件 --with-openssl --with-linxml-dir --with-bz2 --with-curl --with-pcre-dir --with-gd --with-jpeg-dir --with-png-dir --with-zlib-dir --with-mcrypt --with-mysql=/usr/local/mysql 这个选项是多余的,不生效,在php7中有其内置的mys……