精华内容
下载资源
问答
  • Swift语言的设计取舍及跨语言调用.pdf
  • 实现简单的跨语言调用;一个功能A,用的是L1语言进行编程实现的;请把该功能,在L2语言的环境下进行调用/合并,并能正确的返回结果。L1: Python , L2:C++ 和 Java
  • Golang通过Thrift框架完美实现跨语言调用
  • golang与java间的json-rpc跨语言调用需要的jar
  •  3、通过 VBS 实现跨语言调用COM 1、Com组件概念及原理  什么是COM:  引用百度百科:COM component(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架...
  • android之跨语言调用

    2013-12-21 22:04:21
    android之跨语言调用,可以有两种方法。 (1)jni调用  把c/c++文件,通过NDK生成.so库文件,然后java调用该so库就可以了。 (2)上层调用out/system/bin下的命令 调用方法如下:  String do_exec(String cmd...

    android之跨语言调用,可以有两种方法。

    (1)jni调用

              把c/c++文件,通过NDK生成.so库文件,然后java调用该so库就可以了。

    (2)上层调用out/system/bin下的命令

    调用方法如下:

     Process p = Runtime.getRuntime().exec(cmd); 

    展开全文
  • 模型pmml方式存储跨语言调用

    千次阅读 2018-04-25 15:07:44
    pmml提供了一种轻便的跨语言调用,比如说我用python训练一个模型,想要在java里面调,很多时候还需要重构底层的逻辑,造就诸多不方便,pmml正为此产生,不需要再重构底层逻辑,在python中ligbtgbm、xgboost、...

    pmml提供了一种轻便的跨语言调用,比如说我用python训练一个模型,想要在java里面调,很多时候还需要重构底层的逻辑,造就诸多不方便,pmml正为此产生,不需要再重构底层逻辑,在python中ligbtgbm、xgboost、tensorflow训练的模型都可以通过这种方式在java或者其他语言里面调,在性能方面可能并不是一种很高效的方式,但是可以作为一种参考。

    主要参考:
    https://blog.csdn.net/hopeztm/article/details/78321700
     https://henning.kropponline.de/2015/09/06/jpmml-example-random-forest/

    https://github.com/jpmml/jpmml-evaluator


    首先是安装sklearn2pmml包:

    pip install git+https://github.com/jpmml/sklearn2pmml.git


    先看下python里面训练一个随机森林模型,保存为pmml文件,数据用的鸾尾花数据,网上到处都有,直接看代码:

    from sklearn_pandas import DataFrameMapper
    import pandas as pd
    from sklearn import tree
    from sklearn2pmml import PMMLPipeline
    from sklearn2pmml import sklearn2pmml
    
    iris_df = pd.read_csv("xml/iris.csv")
    clf = tree.DecisionTreeClassifier()
    print(iris_df.columns)
    mapper = DataFrameMapper([
        (['sepal_length'], None),
        (['sepal_width'], None),
        (['petal_length'], None),
        (['petal_width'], None)
    ])
    pipeline = PMMLPipeline([('mapper', mapper), ("classifier", clf)])
    pipeline.fit(iris_df[iris_df.columns.difference(["species"])],iris_df["species"])
    sklearn2pmml(pipeline,"./xml/IrisClassificationTree.pmml",with_repr = True)
    在java里面调:

    看下pom.xml依赖:

    <dependency>
    			<groupId>org.jpmml</groupId>
    			<artifactId>pmml-evaluator</artifactId>
    			<version>1.3.6</version>
    		</dependency>
    		<dependency>
    			<groupId>org.jpmml</groupId>
    			<artifactId>pmml-evaluator-extension</artifactId>
    			<version>1.3.6</version>
    		</dependency>
    		<!-- https://mvnrepository.com/artifact/org.jpmml/pmml-model -->
    		<dependency>
    			<groupId>org.jpmml</groupId>
    			<artifactId>pmml-model</artifactId>
    			<version>1.3.6</version>
    		</dependency>

    java代码:

    package com.meituan.test;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.HashMap;
    import java.util.LinkedHashMap;
    import java.util.List;
    import java.util.Map;
    
    import org.dmg.pmml.FieldName;
    import org.dmg.pmml.PMML;
    import org.jpmml.evaluator.Evaluator;
    import org.jpmml.evaluator.FieldValue;
    import org.jpmml.evaluator.InputField;
    import org.jpmml.evaluator.ModelEvaluator;
    import org.jpmml.evaluator.ModelEvaluatorFactory;
    import org.jpmml.evaluator.TargetField;
    
    public class PMMLPrediction {
    	
    	public static void main(String[] args) throws Exception {
    		String  pathxml="/Users/shuubiasahi/Documents/python/credit-tfgan/xml/IrisClassificationTree.pmml";
    		Map<String, Double>  map=new HashMap<String, Double>();
    		map.put("sepal_length", 5.1);
    		map.put("sepal_width", 3.5);
    		map.put("petal_length", 1.4);
    		map.put("petal_width", 0.2);	
    		predictLrHeart(map, pathxml);
    	}
    	
    	public static void predictLrHeart(Map<String, Double> irismap,String  pathxml)throws Exception {
    
    		PMML pmml;
    		// 模型导入
    		File file = new File(pathxml);
    		InputStream inputStream = new FileInputStream(file);
    		try (InputStream is = inputStream) {
    			pmml = org.jpmml.model.PMMLUtil.unmarshal(is);
    
    			ModelEvaluatorFactory modelEvaluatorFactory = ModelEvaluatorFactory
    					.newInstance();
    			ModelEvaluator<?> modelEvaluator = modelEvaluatorFactory
    					.newModelEvaluator(pmml);
    			Evaluator evaluator = (Evaluator) modelEvaluator;
    
    			List<InputField> inputFields = evaluator.getInputFields();
    			Map<FieldName, FieldValue> arguments = new LinkedHashMap<>();
    			for (InputField inputField : inputFields) {
    				FieldName inputFieldName = inputField.getName();
    				Object rawValue = irismap
    						.get(inputFieldName.getValue());
    				FieldValue inputFieldValue = inputField.prepare(rawValue);
    				arguments.put(inputFieldName, inputFieldValue);
    			}
    
    			Map<FieldName, ?> results = evaluator.evaluate(arguments);
    			List<TargetField> targetFields = evaluator.getTargetFields();
    			//对于分类问题等有多个输出。
    			for (TargetField targetField : targetFields) {
    				FieldName targetFieldName = targetField.getName();
    				Object targetFieldValue = results.get(targetFieldName);
    				System.out.println("target: " + targetFieldName.getValue()
    						+ " value: " + targetFieldValue);
    			}
    		}
    	}
    }
    

    结果:
    target: species value: NodeScoreDistribution{result=0, probability_entries=[0=1.0, 1=0.0, 2=0.0], entityId=2, confidence_entries=[]}

    展开全文
  • 跨语言调用模块.TXT

    千次阅读 2011-03-28 13:42:00
    跨语言调用模块.TXT 方案 1.本地命令行模式 几乎所有的语言都支持命令行模式..可以以此为接口调用 2.HTTP模式 将被调用模块加装HTTP接口,则可以远程调用.. Powered by Zoundry


    跨语言调用模块.TXT


    方案


    1.本地命令行模式

    几乎所有的语言都支持命令行模式..可以以此为接口调用


    2.HTTP模式

    将被调用模块加装HTTP接口,则可以远程调用..

    Powered by Zoundry

    展开全文
  • Hessian跨语言调用实例

    千次阅读 2016-05-14 21:10:19
    网上找了很多例子,基本上都是同语言之间的RPC调用例子,基本没有跨语言的,自己折腾一下,使用Java编写PRC服务端,使用Java和Python作为客户端调用RPC服务。Java版的Hessian例子可以参考这个...

    Hessian是跨语言基于HTTP的RPC框架,传输的数据格式是二机制。网上找了很多例子,基本上都是同语言之间的RPC调用例子,基本没有跨语言的,自己折腾一下,使用Java编写PRC服务端,使用Java和Python作为客户端调用RPC服务。

    Java版的Hessian例子可以参考这个http://www.voidcn.com/blog/qw765811529/article/p-4530324.html

    Java 服务端代码:

    package app.demo;
    import java.io.Serializable;
    
    public class User implements Serializable {
    
        private static final long serialVersionUID = 153519254199840035L;
    
        String userName = "snoopy";
        String password = "showme";
    
        public User(String user, String pwd) {
            this.userName = user;
            this.password = pwd;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public String getPassword() {
            return password;
        }
    }
    
    package app.demo;
    
    public interface BasicAPI {
    
        public void setGreeting(String greeting);
    
        public String hello();
    
        public User getUser();
    }
    
    package app.demo;
    
    public class BasicService implements BasicAPI {
    
        private String _greeting = "Hello, world";
    
        public void setGreeting(String greeting) {
            _greeting = greeting;
            System.out.println("set greeting success:" + _greeting);
        }
    
        public String hello() {
            return _greeting;
        }
    
        public User getUser() {
            return new User("prance", "meshow");
        }
    }

    Java 客户端代码:
    (因为Hessian是跨语言的,所以客户端调用数据返回时,转化成对象并不要求包名,类名一致。当然一般情况下服务端开发的同学会提供客户端调用的同学sdk,sdk里数据返回的类跟服务端是一致的,这里只是为了测试)

    public class User2 implements Serializable {
    
        private static final long serialVersionUID = 153519254199830056L;
    
        String userName = "snoopy";
        String password = "showme";
    
        public User2(String user, String pwd) {
            this.userName = user;
            this.password = pwd;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public String getPassword() {
            return password;
        }
    }
    
    public interface BasicAPI2 {
    
        public void setGreeting(String greeting);
    
        public String hello();
    
        public User2 getUser();
    }
    
    import app.demo2.BasicAPI2;
    import com.caucho.hessian.client.HessianProxyFactory;
    
    public class BasicClient {
        public static void main(String[] args) throws Exception {
            //String url = "http://127.0.0.1:8080/Hessian/hello";
            String url = "http://localhost:8080/EasyHessian/hello";
            HessianProxyFactory factory = new HessianProxyFactory();
            //BasicAPI basic = (BasicAPI) factory.create(BasicAPI.class, url);
            BasicAPI2 basic = (BasicAPI2) factory.create(BasicAPI2.class, url);
            System.out.println("Hello:" + basic.hello());
            System.out.println("Hello:" + basic.getUser());
            System.out.println("Hello:" + basic.getUser().getUserName());
            System.out.println("Hello:" + basic.getUser().getPassword());
            basic.setGreeting("HelloGreeting");
            System.out.println("Hello:" + basic.hello());
        }
    }

    详细完整源码:https://github.com/Kingson4Wu/Frieza-revenge/tree/master/RPC-framework/src/main/java/app/demo

    Python客户端代码:

    #!python
    # encoding: utf-8
    
    '''
    使用Python语言实现远程调用
    使用Python客户端来进行远程调用,我们可以从https://github.com/bgilmore/mustaine下载,然后安装Hessian的代理客户端Python实现库:
    git clone https://github.com/bgilmore/mustaine.git
    cd mustaine
    sudo python setup.py install
    
    http://san-yun.iteye.com/blog/1628405
    http://pydoc.net/Python/mustaine/0.1.7/mustaine.parser/
    
    https://github.com/Kingson4Wu/Frieza-revenge/blob/master/RPC-framework%2Fsrc%2Fmain%2Fjava%2Fapp%2Fdemo%2FBasicService.java
    
    '''
    
    
    from mustaine.client import HessianProxy
    test = HessianProxy("http://localhost:8080/EasyHessian/hello")
    print test._headers
    print test.hello()
    print test.getUser()
    print test.getUser().userName
    user = test.getUser()
    print user.password
    test.setGreeting("Hessian Python")
    print test.hello()
    
    展开全文
  • Java跨语言调用实现方案

    千次阅读 2015-07-13 16:36:51
    Java 跨语言实现方案 背景: 在大型分布式 java 应用中,为了方便开发者,通常底层的 rpc 框架都会做一些调用的封装,让应用层开发人员在开发服务的时候只用编写简单的 pojo 对象就可以了,如流行的 ...
  • Rust跨语言调用FFI外部函数接口

    千次阅读 2020-06-03 19:54:46
    不管哪种编程语言,无论是编译执行还是解释执行,最终都会到达处理器指令环节,在该环节,编程语言之间的语法、数据类型等语义差异均已消除,只需匹配调用约定即可,从而可以实现不同编程语言之间的相互调用。...
  • 使用node.js语言编写Client,然后向使用go语言编写的server发送RPC请求 安装依赖 cnpm i grpc cnpm install --save grpc-tools 编写Node.js版Client(无编译成js文件) var grpc = require('grpc'); //加载之前编写...
  • Atitit java c# php c++ js跨语言调用matlab实现边缘检测等功能attilax总结   1.1. 边缘检测的基本方法Canny最常用了1 1.2. 编写matlab边缘检测代码,保存为m文件1 1.3. 通过cli接口调用Matlab执行m文件1 ...
  • NULL 博文链接:https://gaojingsong.iteye.com/blog/2317392
  • IDispatch接口 - 跨语言调用

    千次阅读 2014-09-24 12:08:10
    当一个COM接口支持IDispatch的时候(Dual接口),它就可以被其他语言调用。 这里我用perl试了一下。 perl测试代码 use warnings; use strict; use Win32::OLE; use constant ADS_UF_ACCOUNTDISABLE => 2; use ...
  • 无论是 sklearn 还是 flask,都是用 Python 编写的,在工业界,我们经常会使用 Python 或 R 来训练离线模型, 使用 Java 来做在线 Web 开发应用,这就涉及到了使用 Java 跨语言调用 Python 或 R...
  • C#写的dll跨语言调用

    万次阅读 2012-10-14 18:03:24
    C#写的dll为非标准的windows下dll,故一般其他语言不能直接调用,当然基于.net平台下的编程语言是可以调用,要让其他语言调用C#写的dll一般通过webservice服务或者是Com方式。经过在网上找资料以及自身的实践发现...
  • cocos2dx-jsb 跨语言调用

    千次阅读 2014-03-06 15:30:33
    1:C++中调用js方法: 问题:ios中当用户通过home键将游戏转入后台时,调用js中的暂停游戏方法; AppDelegate::applicationDidEnterBackground() 和 applicationDidEnterForeground()方法是C++方式处理程序...
  • golang与java间的json-rpc跨语言调用

    千次阅读 2017-02-08 09:08:08
    1、java通过jni调用dll库实现与后台C(C++)通信的代码实现还是有些麻烦。 2、Golang的出现,使得一些对C代码不是很熟的程序员看见的希望,虽然说当前对于Golang就还有很多质疑的声音, 但是个人认为对于一般下后台...
  • Github地址: ... 定义thrfit文件 ...DemoService类似于Java中的接口,其中有两个方法,ping函数输入一个字符串,返回字符串,getObject...编写客户端代码,修改对应的服务端IP和端口,即可跨语言跨机器进行RPC调用
  • 【RPC 专栏】从跨语言调用到 dubbo2.js

    千次阅读 2018-07-15 08:38:00
    类似于 service mesh 中的 SideCar,motan 借助于 motan-go 作为 agent 完成协议的转发,并且依赖于定制协议:motan2,实现跨语言调用。 当我们再聊跨语言调用时我们在聊什么?纵观上述几个较为通用,成熟的解决方案...
  • ),这是一套可以实现跨语言,跨平台的调用协议。简单验证通过RPC从python去调用ruby下的方法没有什么问题,当然返回的类型仅限于简单类型(如int,string,dict等)。 ruby下需要引用如下库: require ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 213,231
精华内容 85,292
关键字:

跨语言调用