使用服务器 Java 和 Java 脚本客户端的 Apache Thrift 数组
Array with Apache Thrift using server Java & Javascript Client
我正在使用 Java 脚本来显示在 Java 中生成的信息。
我说的是 10,000 个数据,所有这些数据都是在 Java 中生成的,并且为了使用随机值进行测试。好吧,我想在我的 java 脚本页面中看到这 10,000 个值。
我已经有一个简单的服务器 Java 和一个客户端 Java 共享 2 个双打的脚本。
这是 2 个双打的 Thrift 文件:
namespace java test_thrift
service test{
double number(1:double n1, 2:double n2)
}
这是我的Java脚本客户端的代码
function calc() {
var transport = new Thrift.Transport("/service");
var protocol = new Thrift.Protocol(transport);
var client = new testClient(protocol);
var workbench = Math.random()*1000;
try {
result = client.number(workbench);
$('#result').val(result);
$('#result').css('color', 'black');
document.getElementById("demo").innerHTML = result;
} catch(ouch){
$('#result').val(ouch.why);
$('#result').css('color', 'red');
}
}
我发送随机数只是为了获得 return 的范围。示例:1 return 一个从 3 到 9 的值,2 return 一个 9 到 15 的值,等等
并且在 java 我有一个 testHandler class:
public double number(double n1, double n2) throws TException {
//System.out.println(n1 + " - " + n2);
Random rnd = new Random();
n1 = rnd.nextDouble() * 10 + 1;
n2 = rnd.nextDouble() * 15 + 10;
return n2;
}
嗯,这 returns 1 值。我想在我的 Java 脚本页面中查看所有内容。但是有 10,000 个元素。我该怎么做?
我还想补充一点,最后要分享的结构是这样的:
dis[10000][3]={
ABC,12.5,13.5,
ACD,14.4,11.5,
.....ETC......}
我卡住了
找到这个,但我不知道如何让它工作:/
namespace java test_thrift
typedef list<double> Vector
struct test
{
1:i32 rows,
2:i32 cols,
3:list<Vector> data,
}
使用这个 IDL 文件
namespace java test_thrift
struct MyPair {
1: double one
2: double two
}
service test{
list<double> number( 1 : list<MyPair> data)
}
然后像这样调用函数:
var list = [];
for( var i = 0; i < 10000; ++i) {
list.push({
one : Math.random()*1000,
two : Math.random()*1000
});
}
result = client.number(list);
Result 应该是您的返回值列表,当然服务器端已相应实现。
所以,我设法修复了它。这是一个发出重新请求的客户端 JavasCript 和一个 Java 服务器返回一个 10000 x 18 矩阵。
节俭文件:
命名空间javatest_thrift
struct Cell {
1: string did
2: double l_x
3: double l_y
4: double l_z
5: double m_x
6: double m_y
7: double m_z
8: double a_x
9: double a_y
10: double a_z
11: double g_x
12: double g_y
13: double g_z
14: string d_t
15: double tp
16: double r_q
17: string o_m
18: double b_v
}
service test{
list<Cell> number( 1 : i16 req)
}
然后在 Java 脚本中我只发送请求:
function calc() {
var transport = new Thrift.Transport("/service");
var protocol = new Thrift.Protocol(transport);
var client = new pruebaClient(protocol);
var workbench = Math.random()*1000;
var div = document.getElementById('deltat');
try {
result = client.number(1);
div.innerHTML = div.innerHTML + '\nReady';
} catch(ouch){
$('#result').val("ERROR");
$('#result').css('color', 'red');
}
}
结果 y 得到 [10000][18] 答案并像这样打印它:
for (var i = result.length - 1; i >= 0; i--) {
//div.innerHTML = div.innerHTML + '\n' + result[i];
div.insertAdjacentHTML('beforeend', '\n'+result[i].did+' '+result[i].l_x+' '+result[i].l_y+' '+result[i].l_z+' '+result[i].m_x+' '+result[i].m_y+' '+result[i].m_z+' '+result[i].a_x+' '+result[i].a_y+' '+result[i].a_z+' '+result[i].g_x+' '+result[i].g_y+' '+result[i].g_z+' '+result[i].d_t+' '+result[i].tp+' '+result[i].r_q+' '+result[i].o_m+' '+result[i].b_v);
};
}
最后我的 Java 服务器中的处理程序是这样的:
public class TestHandler implements test.Iface {
public Random rnd = new Random();
public static List<Cell> p = new ArrayList<Cell>();
public void test() {
for (int i = 0; i < 10000; i++) {
Cell a = new Cell();
a.did = "SomeString";
a.l_x = rnd.nextDouble()*10+1;
a.l_y = rnd.nextDouble()*10+1;
a.l_z = 0.0;
a.m_x = 0.0;
a.m_y = 0.0;
a.m_z = 0.0;
a.a_x = 0.0;
a.a_y = 0.0;
a.a_z = 0.0;
a.g_x = 0.0;
a.g_y = 0.0;
a.g_z = 0.0;
a.d_t = "String here";
a.tp = 0.0;
a.r_q = 0.0;
a.o_m = "A";
a.b_v = 0.0;
p.add(a);
}
}
@Override
public List<Cell> number(short req) throws TException {
test();
return ips.ReminderBeep.list_d;
}
我希望这对某人有用
我正在使用 Java 脚本来显示在 Java 中生成的信息。 我说的是 10,000 个数据,所有这些数据都是在 Java 中生成的,并且为了使用随机值进行测试。好吧,我想在我的 java 脚本页面中看到这 10,000 个值。
我已经有一个简单的服务器 Java 和一个客户端 Java 共享 2 个双打的脚本。
这是 2 个双打的 Thrift 文件:
namespace java test_thrift
service test{
double number(1:double n1, 2:double n2)
}
这是我的Java脚本客户端的代码
function calc() {
var transport = new Thrift.Transport("/service");
var protocol = new Thrift.Protocol(transport);
var client = new testClient(protocol);
var workbench = Math.random()*1000;
try {
result = client.number(workbench);
$('#result').val(result);
$('#result').css('color', 'black');
document.getElementById("demo").innerHTML = result;
} catch(ouch){
$('#result').val(ouch.why);
$('#result').css('color', 'red');
}
}
我发送随机数只是为了获得 return 的范围。示例:1 return 一个从 3 到 9 的值,2 return 一个 9 到 15 的值,等等
并且在 java 我有一个 testHandler class:
public double number(double n1, double n2) throws TException {
//System.out.println(n1 + " - " + n2);
Random rnd = new Random();
n1 = rnd.nextDouble() * 10 + 1;
n2 = rnd.nextDouble() * 15 + 10;
return n2;
}
嗯,这 returns 1 值。我想在我的 Java 脚本页面中查看所有内容。但是有 10,000 个元素。我该怎么做?
我还想补充一点,最后要分享的结构是这样的:
dis[10000][3]={
ABC,12.5,13.5,
ACD,14.4,11.5,
.....ETC......}
我卡住了
找到这个,但我不知道如何让它工作:/
namespace java test_thrift
typedef list<double> Vector
struct test
{
1:i32 rows,
2:i32 cols,
3:list<Vector> data,
}
使用这个 IDL 文件
namespace java test_thrift
struct MyPair {
1: double one
2: double two
}
service test{
list<double> number( 1 : list<MyPair> data)
}
然后像这样调用函数:
var list = [];
for( var i = 0; i < 10000; ++i) {
list.push({
one : Math.random()*1000,
two : Math.random()*1000
});
}
result = client.number(list);
Result 应该是您的返回值列表,当然服务器端已相应实现。
所以,我设法修复了它。这是一个发出重新请求的客户端 JavasCript 和一个 Java 服务器返回一个 10000 x 18 矩阵。
节俭文件:
命名空间javatest_thrift
struct Cell {
1: string did
2: double l_x
3: double l_y
4: double l_z
5: double m_x
6: double m_y
7: double m_z
8: double a_x
9: double a_y
10: double a_z
11: double g_x
12: double g_y
13: double g_z
14: string d_t
15: double tp
16: double r_q
17: string o_m
18: double b_v
}
service test{
list<Cell> number( 1 : i16 req)
}
然后在 Java 脚本中我只发送请求:
function calc() {
var transport = new Thrift.Transport("/service");
var protocol = new Thrift.Protocol(transport);
var client = new pruebaClient(protocol);
var workbench = Math.random()*1000;
var div = document.getElementById('deltat');
try {
result = client.number(1);
div.innerHTML = div.innerHTML + '\nReady';
} catch(ouch){
$('#result').val("ERROR");
$('#result').css('color', 'red');
}
}
结果 y 得到 [10000][18] 答案并像这样打印它:
for (var i = result.length - 1; i >= 0; i--) {
//div.innerHTML = div.innerHTML + '\n' + result[i];
div.insertAdjacentHTML('beforeend', '\n'+result[i].did+' '+result[i].l_x+' '+result[i].l_y+' '+result[i].l_z+' '+result[i].m_x+' '+result[i].m_y+' '+result[i].m_z+' '+result[i].a_x+' '+result[i].a_y+' '+result[i].a_z+' '+result[i].g_x+' '+result[i].g_y+' '+result[i].g_z+' '+result[i].d_t+' '+result[i].tp+' '+result[i].r_q+' '+result[i].o_m+' '+result[i].b_v);
};
}
最后我的 Java 服务器中的处理程序是这样的:
public class TestHandler implements test.Iface {
public Random rnd = new Random();
public static List<Cell> p = new ArrayList<Cell>();
public void test() {
for (int i = 0; i < 10000; i++) {
Cell a = new Cell();
a.did = "SomeString";
a.l_x = rnd.nextDouble()*10+1;
a.l_y = rnd.nextDouble()*10+1;
a.l_z = 0.0;
a.m_x = 0.0;
a.m_y = 0.0;
a.m_z = 0.0;
a.a_x = 0.0;
a.a_y = 0.0;
a.a_z = 0.0;
a.g_x = 0.0;
a.g_y = 0.0;
a.g_z = 0.0;
a.d_t = "String here";
a.tp = 0.0;
a.r_q = 0.0;
a.o_m = "A";
a.b_v = 0.0;
p.add(a);
}
}
@Override
public List<Cell> number(short req) throws TException {
test();
return ips.ReminderBeep.list_d;
}
我希望这对某人有用