真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用Mac編寫Thirft的HelloWorld項目-創(chuàng)新互聯(lián)

前言

最近在hive新增Thirft接口,于是學(xué)習(xí)了一下Thirft的使用

十多年的祁縣網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整祁縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“祁縣網(wǎng)站設(shè)計”,“祁縣網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。步驟 準備工作
  1. brew install thrift安裝thrift
  2. 創(chuàng)建maven項目并引入依賴
org.apache.thriftlibthrift0.12.0
  1. 根據(jù)thrift文件生成java基類

在resource下創(chuàng)建一個hello.thrift文件

namespace java service.demo
service service.demo.HelloWorld{string sayHello(1: string param)
}

進入resource,thrift -r -gen java hello.thrift會在當前路徑創(chuàng)建出一個gen-java.service.demo的文件夾。文件夾下面有Hello.java文件,將其移動到main目錄的service.demo包中
在這里插入圖片描述

編寫Java實現(xiàn)
  1. 實現(xiàn)IFace接口
package service.demo;

import org.apache.thrift.TException;
public class HelloWorldIfaceImpl implements HelloWorld.Iface {public String sayHello(String param) throws TException {return "hello! "+ param;
    }
}
  1. 構(gòu)建服務(wù)端并啟動
package service.demo;

import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.server.TServer;
import org.apache.thrift.server.TSimpleServer;
import org.apache.thrift.transport.TServerSocket;
import org.apache.thrift.transport.TTransportException;


public class HelloWorldServer {public static void main(String[] args) {try {System.out.println("Server Starting....");
            // TServer的參數(shù),并添加需要的處理過程和協(xié)議
            TServer.Args tArgs = new TServer.Args(new TServerSocket(666));
            // 1.過程
            TProcessor tprocessor = new HelloWorld.Processor(new HelloWorldIfaceImpl()); // 構(gòu)造server的處理過程
            tArgs.processor(tprocessor);
            // 2.協(xié)議
            tArgs.protocolFactory(new TBinaryProtocol.Factory()); // 選用Protocol協(xié)議
            // 構(gòu)建server并啟動
            TServer server = new TSimpleServer(tArgs);
            server.serve();
        }catch (TTransportException e) {e.printStackTrace();
        }
    }
}

啟動后,開源看到日志輸出
在這里插入圖片描述
3. 創(chuàng)建客戶端并訪問服務(wù)端

package service.demo;

import org.apache.thrift.TException;
import org.apache.thrift.protocol.TBinaryProtocol;
import org.apache.thrift.protocol.TProtocol;
import org.apache.thrift.transport.TSocket;
import org.apache.thrift.transport.TTransport;
import org.apache.thrift.transport.TTransportException;

public class HelloWorldClient {public static void main(String[] args) {System.out.println("Client starting....");
        TTransport transport = null;
        try {// 綁定通信端口
            transport = new TSocket("localhost", 666, 30000);
            transport.open();
            // 構(gòu)建協(xié)議,注意和服務(wù)端一致
            TProtocol protocol = new TBinaryProtocol(transport);
            // 創(chuàng)建客戶端
            HelloWorld.Client client = new HelloWorld.Client(protocol);
          	// 客戶端請求服務(wù)端,獲得結(jié)果并輸出
            String result = client.sayHello("Spider-Man");
            System.out.println(result);
        } catch (TTransportException e) {e.printStackTrace();
        } catch (TException e) {e.printStackTrace();
        } finally {if (null != transport) {transport.close();
            }
        }
    }
}

運行后成功拿到結(jié)果
在這里插入圖片描述

總結(jié) Server

負責(zé)連接調(diào)度、服務(wù)的生命周期,定義接口是TServer

  • TSimpleServer:簡單的阻塞服務(wù)端
  • TThreadPoolServer:使用線程池的處理請求的阻塞服務(wù)端
  • THsHaServer:使用線程池處理請求的基于 NIO 的非阻塞服務(wù)端
  • TThreadedSelectorServer:使用多種線程池的基于 NIO 的非阻塞服務(wù)端
Processor

處理請求,具體的實現(xiàn)由生成的代碼處理,定義接口是 TProcessor

  • TBaseProcessor:同步處理的 Processor
  • TBaseAsyncProcessor:異步處理的 Processor
  • TMultiplexedProcessor:支持多個服務(wù)的同步 Processor
Protocol

請求協(xié)議,數(shù)據(jù)的編解碼實現(xiàn),定義接口是 TProtocol

  • TBinaryProtocol:二進制協(xié)議
  • TCompactProtocol:壓縮協(xié)議
  • TJSONProtocol:JSON 格式協(xié)議
  • TMultiplexedProtocol:支持多個 Processor 的封裝協(xié)議,依賴于其他協(xié)議
Transport

底層的連接,提供了讀寫的抽象實現(xiàn);服務(wù)端定義是 TServerTransport

  • TServerSocket: 基于 ServerSocket 的服務(wù)端 Transport
  • TNonblockingServerSocket:基于 ServerSocketChannel 的服務(wù)端 Transport
  • TSaslTransport:支持 SSL 加密的 Transport

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧


新聞標題:使用Mac編寫Thirft的HelloWorld項目-創(chuàng)新互聯(lián)
文章URL:http://weahome.cn/article/dspods.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部