基於TCP實現的最簡單RPC demo
package com.caicongyang.provider; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflect.Method; import java.net.ServerSocket; import java.net.Socket; import java.util.Arrays; import com.caicongyang.server.SayHelloService; import com.caicongyang.server.SayHelloServiceImpl; /** * * <p> * Title: Provider.java * Package com.caicongyang.provider * </p> * <p> * Description: RPC服務提供者,供客戶端呼叫 * <p> * @author Tom.Cai * @created 2016-2-23 下午10:31:40 * @version V1.0 * */ public class Provider { public static void main(String[] args) { ServerSocket server = null; ObjectOutputStream out = null; try { server = new ServerSocket(8080); Socket socket =null; while(true){ System.out.println("---開始監聽---"); socket = server.accept(); ObjectInputStream input = new ObjectInputStream(socket.getInputStream()); String interfaceName = input.readUTF(); //介面名稱 String methodName = input.readUTF(); //方法名稱 Class<?>[] parameterType = (Class<?>[]) input.readObject(); //方法型別 Object[] arguments = (Object[]) input.readObject(); //引數列表 System.out.println("接收到的引數:"+Arrays.toString(arguments)); //根據介面名稱獲取class Class<?> serviceInterfaceClass = Class.forName(interfaceName); //根據方法名稱和引數型別反射得到方法 Method method = serviceInterfaceClass.getMethod(methodName, parameterType); //服務例項化(這裡做簡單處理,正常應該根據得到的介面名稱serviceInterfaceClass獲取對應的service,但本demo只提供一個服務) SayHelloService service = new SayHelloServiceImpl(); //反射執行這個方法 Object result = method.invoke(service, arguments); //寫會處理結果 out = new ObjectOutputStream(socket.getOutputStream()); out.writeObject(result); } } catch (Exception e) { e.printStackTrace(); }finally{ try { out.close(); } catch (IOException e1) { e1.printStackTrace(); } if(server!=null){ try { server.close(); } catch (IOException e) { e.printStackTrace(); } server = null; } } } }
客戶端呼叫類:Consumer.java
相關推薦
基於TCP實現的最簡單RPC demo
package com.caicongyang.provider; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.lang.reflec
[機器學習]基於OpenCV實現最簡單的數字識別
http://blog.csdn.net/jinzhuojun/article/details/8579416 本文將基於OpenCV實現簡單的數字識別。這裡以遊戲Angry Birds為例,通過以下幾個主要步驟對其中右上角的分數部分進行自動識別。 1. 學習分類器 根據
100行代碼實現最簡單的基於FFMPEG+SDL的視頻播放器(SDL1.x)【轉】
工程 全屏 升級版 gin avcodec ive 系列文章 相同 hello 轉自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版權聲明:本文為博主原創文章,未經博主允許不得轉載。
100行程式碼實現最簡單的基於FFMPEG+SDL的視訊播放器(SDL1.x)
=====================================================最簡單的基於FFmpeg的視訊播放器系列文章列表:=====================================================簡介FFMPEG
Scala基於Akka的Remote Actor實現的簡單RPC
spark 1.3中的通訊是基於Akka實現的,Actor之間的互動都是通過訊息,並且所有動作都是非同步的。 本文基於spark 1.3通訊核心原理實現一個簡單的基於akka的rpc框架。 服務端:Server //模式匹配 訊息型別 case cla
XCode版【100行程式碼實現最簡單的基於FFMPEG+SDL的視訊播放器】
【來自】 1.新建XCode工程後,發現即使安裝了SDL和FFMPEG也編譯不成功,需要修改各種環境。經過我的不懈努力加百穀啥的...貼個能編譯通過的過程出來。謹記! 2.首先需要編譯好ffmpeg原始碼,然後還需要安裝SDL(ffmpeg直接編譯,SDL我是通過brew安
用Python實現最簡單的文字識別:基於百度雲文字識別API
Python版本:3.6.5 百度雲提供的文字識別技術,準確率還是非常高的,而且每天還有5w次免費的呼叫量,對於用來學習或者偶爾拿來用用,已經完全足夠了。文章提供一個模板,稍加修改就可以直接套用。註釋中提到必須輸入的地方,你都正確地輸入了的話,就可以完成一次簡單的文字識別了
純js實現最簡單的文件上傳(後臺使用MultipartFile)
post post方式 cnblogs set ner progress round pre max <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <
JavaScript實現最簡單的拖拽效果
stop 效果展示 title 另存為 -h 通過 沒有 軟件 .cn 一、一些無關痛癢的嘮叨 拖拽還是挺不錯的一個頁面效果,我個人認為,其生命力在於可以讓用戶自己做一些操作,所謂自定義。例如: ①瀏覽器標簽順序的拖拽切換 現在基本上所有的選項卡式的瀏覽器都有順序拖拽切換的
【原始碼剖析】threadpool —— 基於 pthread 實現的簡單執行緒池
部落格新地址:https://github.com/AngryHacker/articles/issues/1#issue-369867252 執行緒池介紹 執行緒池可以說是專案中經常會用到的元件,在這裡假設讀者都有一定的多執行緒基礎,如果沒有的話不妨在這裡進行了解:POSIX
梯度下降法實現最簡單線性迴歸問題python實現
梯度下降法是非常常見的優化方法,在神經網路的深度學習中更是必會方法,但是直接從深度學習去實現,會比較複雜。本文試圖使用梯度下降來優化最簡單的LSR線性迴歸問題,作為進一步學習的基礎。 import numpy as np import pandas as pd from numpy import *
Python實現最簡單的三層神經網路
import numpy as np def sigmoid( x, deriv=False): #求導:derivation if (deriv == True): return x*(1-x) return 1/(1+np.exp(-x)) x=np
nginx實現最簡單的直播
系統環境 [[email protected] live]# cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) [[email protected]-test live]# getenforce Disa
基於C#實現的簡單的隨機抽號器
由於老師需要,讓我寫一個隨機抽號器,,就很簡單的寫一個,用C#寫的。主要依靠random來實現一個隨機數以及list可變長陣列實現的。 由於專案難度不大,我就直接放程式碼了。 using System; using System.Collections.Generic; using
[文件和原始碼分享] 基於MFC實現的簡單FTP客戶端
在WINDOWS環境下,使用VC++開發工具實現一個FTP客戶端軟體。在本次FTP的設計中主要使用WinInet API程式設計,無需考慮基本的通訊協議和底層的資料傳輸工作,MFC提供的WinInet類是對WinInet API函式封裝而來的,它為使用者提供了更加方便的程式設計介面。而在該設計中,使用的類包括
一個gtk3的css使用的最簡單的demo
首先裝好gtk3的依賴,不管是fedora還是ubuntu裝好之後執行: pkg-config --cflags --libs "gtk+-3.0" 能正常顯示gtk3的依賴情況說明gtk3已經裝好,之後編譯: gcc css-demo.c `pkg-c
redis list型別實現最簡單的佇列
訊息佇列的好處 提高響應速度、解耦、穩定性(故障處理)、可擴充套件性、有序性、非同步性。 redis實現訊息佇列方法1 redis有個list型別,可以用來實現一定程度上的訊息佇列。 如果我們要開發一個電商網站,其中一個很重要的模組就是訂單模組(包括訂單資料入庫、商品庫存減少
基於C#實現串列埠通訊Demo
https://www.cnblogs.com/Zed-H/p/8651882.html 1.基本概念 2.前端winForm佈局如下(僅僅為了實現功能,佈局略醜) 3.程式碼實現如下 1 nam
C語言實現最簡單的2048小遊戲
網上解釋很多了,直接上程式碼吧,這個功能很簡單,易於學習,後期有時間會完善功能 #include<stdio.h> #include<stdlib.h> #include<string.h> #define Key_Up 0x4800
Tensorflow實現最簡單的神經網路
程式程式碼: #匯入相應模組 import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data #讀入資料 mnist = input_data.read_data_sets('MNI