范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Go通过调用java的jar包来解决go生态轮子不足的问题

  这两天有一个应用需要做一下附近的人,底层想采用lucene的lucene-spatial3d来做LBS,但go语言没有lucene的完整第三方包,轮子不足只能采用go调用java的方式解决。
  第一种思路是想采用Netty来建立一个服务,然后go采用网络请求的方式来调用服务接口,但这种方式需要常驻一个服务,虽然资源用不了多少,但也是会一直跑着一个进程,斟酌再三决定放弃这种思路。
  第二种思路是go直接调用java写的jar包,用的时候调用执行,用完不会有进程常驻,对服务器资源合理使用更优。下边就简单介绍一下此种方式的操作(具体用Lucene做LBS业务逻辑此文省去,此文重点介绍如何go调用jar包进行交互处理)。
  【Java工程】
  1、首先创建一个Maven工程,生成的pom.xml配置如下: <?xml version="1.0" encoding="UTF-8"?>     4.0.0    com.yurongbj   lucene_lbs   1.0-SNAPSHOT    lucene_lbs      http://www.yurongbj.com         UTF-8     1.7     1.7                     cn.hutool         hutool-all         5.8.0.M2                        org.apache.lucene         lucene-core         9.0.0                   org.apache.lucene         lucene-analysis-smartcn         9.0.0                   org.apache.lucene         lucene-queries         9.0.0                   org.apache.lucene         lucene-spatial3d         9.0.0                   org.apache.lucene         lucene-spatial-extras         9.0.0                  junit       junit       4.11       test                                              org.apache.maven.plugins             maven-jar-plugin             3.1.0                                                                            true                                                  com.yurongbj.App                                                                                 maven-assembly-plugin                                                            com.yurongbj.App                                                            jar-with-dependencies                                                                 maven-clean-plugin           3.1.0                                      maven-resources-plugin           3.0.2                             maven-compiler-plugin           3.8.0                             maven-surefire-plugin           2.22.1                             maven-install-plugin           2.5.2                             maven-deploy-plugin           2.8.2                                      maven-site-plugin           3.7.1                             maven-project-info-reports-plugin           3.0.0                         
  2、入口文件App.java package com.yurongbj;  import cn.hutool.core.util.CharsetUtil; import cn.hutool.core.util.HexUtil;  /**  * 公司:御融(北京)科技有限公司  * 作者:softHardware  * 描述:用于建立附近的人索引和搜索,。  */ public class App  {     public static void main( String[] args )     {         if(args.length==0){             System.out.println( "error" );             return;         }         if(args.length==1){                 //将中文内容转换为16进制字符串,如果不转换直接输出,Go读取的中文解析内容会不正常。             String hex = HexUtil.encodeHexStr("缺少参数,至少2个参数", CharsetUtil.CHARSET_UTF_8);             System.out.println(hex);             return;         }                 String arg = args[0];         if(arg.equals("index")){             //获取内容,创建索引             System.out.println( args[1] );                     }         if(arg.equals("search")){             //获取内容,搜索附近5KM数据             System.out.println( args[1] );                     }             } }
  3、使用带依赖jar包打包命令进行编译打包
  命令:mvn assembly:assembly(注意在pom.xml中引入对应的插件maven-assembly-plugin)
  4、打包成功后,在工程目录target文件夹下即可看到生成的jar包:lucene_lbs-1.0-SNAPSHOT-jar-with-dependencies.jar,此文件即为下文GO工程中待调用的jar包。
  【Go工程】
  1、创建Go工程(具体创建方法请自行查阅Go工程创建方法)
  2、入口main.go文件调用测试 package main  import (     "encoding/hex"     "fmt"     "os/exec"      "github.com/gogf/gf/v2/os/gctx"     "github.com/gogf/gf/v2/util/gconv" )  func main() {     //调用刚才打包的jar包,此处故意传入一个参数来验证返回值为"缺少参数,至少2各参数"     cmdJava := exec.Command("java", "-jar", "lucene_lbs-1.0-SNAPSHOT-jar-with-dependencies.jar", "index")     out, err := cmdJava.Output()     if err != nil {         println("java error:", err.Error())     }         hexStr, hexErr := hex.DecodeString(string(out))     if hexErr != nil {         println("java hexErr:", hexErr.Error())     }     println("hexStr:", hexStr)     res := gconv.String(hexStr)          fmt.Printf("call java: %qn", res) }
  3、将生成的lucene_lbs-1.0-SNAPSHOT-jar-with-dependencies.jar文件拷贝到和main.go相同的目录下,执行命令进行测试: go run main.go
  输出如下内容则代表调用成功: call java: "缺少参数,至少2个参数"

MILLAGroup在活动中推出配备LeddarPixell的自动驾驶班车MILLAGroup在6月的两次重大活动中推出配备LeddarPixell的自动驾驶班车15级ADAS和AD传感技术领域的全球领先企业LeddarTech很高兴地宣布,位于法国的M神车焕新再领风潮庆铃五十铃T17皮卡2021新款心动价临在金九银十购车旺季,庆铃五十铃携皮卡家族多款重磅好车和多重壕礼而来,并于国庆黄金周前特推出神车焕新再领风潮庆铃五十铃T17皮卡2021新款心动价临活动,可享受3000元抵7000元万万没想到,今年最快拿到iPhone13的方式可能是外卖来了!等了一年的苹果发布会终于要来了。北京时间9月15日凌晨1点,苹果召开了新品线上发布会,备受果粉期待的iPhone13系列AppleWatchS7系列新款iPad等硬件产品,一统信云扫描方案发布,外设利旧不再难统信UOS,优生态统信云扫描解决方案正式发布。统信云扫描是统信软件自主研发的一套构建于统信操作系统之上的共享扫描平台,可以在不改变用户现有使用习惯的前提下,向政企用户提供随时随地的京东11。11预售开启京东电器宠粉福利大放送PLUS会员享折上折10月20日晚8点,京东11。11预售将正式开启。为了让大家都能买到价优高品质的正品,京东电器11。11期间,给广大用户推出了超值优惠,买爆款手机抢2021元神券京东电脑数码京东家新玩法!披荆斩棘的哥哥助力海尔智家双11,10月31日直播间见随着双十一正式揭幕,各品牌都开始秀出新玩法新花样,吸引年轻消费人群的关注。深耕行业多年的海尔智家,今年将联合芒果TV当红综艺披荆斩棘的哥哥,带来不一样的智趣新潮新玩法。在即将到来的卢伟冰不只要做120W,做就要做更高配120W,希望能有惊喜关于最新的红米Note11系列现在已经被卢伟冰自己爆料得七七八八了,剩下的一些配置也被很多人猜到了大部分,我想说这红米Note系列更新得也太快了吧!这怕不是跟割韭菜一样,一茬接一茬谨防Python攻破电脑桌面如何才能看一个人的桌面呢,都说Python很厉害,就来做一个利用移动端访问电脑来查看电脑的界面的神器!不知道大家以前有没有做过这方面的东西呢?也许大家听起来还有点不太理解,没有关系如何配置台式电脑尽管很多人在唱衰台式电脑,但是台式电脑的重要性还是无法替代的,再好的笔记本也比不过台式电脑。如何选购台式电脑就显得很重要了,当然不差钱的话可以买整机,但是对于大部分人而言DIY电脑家长实测拒绝无效低效学习,读书郎学生平板给力在N次面对小侄女关于学习的哭诉后,我发现了一个问题她虽然很刻苦努力,但实际上是在做无用功在无效学习!比如,同类型的数学题做了多次,下一次仍是错。每天早晚勤勤恳恳地背单词,一回头发现孩子作业在家就能轻松打京东打印巅峰24小时学生打印机低至99元近年来,家庭用户打印需求逐渐增多,无论是远程办公文档,还是孩子学习资料家庭作业,每次都到图文店打印不仅麻烦还费钱,越来越多用户开始想要给家里添置一台实用的打印机。为了满足用户在家用
刚刚,印度车企发布的这款车,居然在中控内饰上种花说起印度,不少人会对这国家的电影或者小吃印象更深刻,作为全球第二大人口国,经济发展也是日益增长,那印度的汽车工业如何?还是那家在海外通过收购并购的模式发展?今天看完这款概念车,或许又一国产黑马出现!堪比小华为,70员工做研发,对手英伟达芯片,这两个字一直是我国产业之痛,很多人把芯片理解为CPU,认为芯片就是电脑用芯片手机用的芯片,实际上芯片不仅仅包含这些,还包含驱动芯片电池芯片AI芯片等等,即便是我们手里面的银行五一长假来了,劳斯莱斯库里南推出旅行套装,绝对是奢侈旅行必备库里南绝对是劳斯莱斯车系中的另类,于2018年上市,当年也是劳斯莱斯年轻化的纪年,但是其骨子里还是一辆超豪华品牌的SUV。SUV就是一辆多用途汽车,库里南也不例外,穿州过省长途旅行三星MicroLED困境巨量转移难题未解,成本下降之路艰巨三星在MicroLED领域的动作不断,年初三星发布了110吋MicroLED电视,预测三星将新增MicroLED电视生产线,并计划在2021年底前依序推出99寸88寸与76寸的三星3款大空间67座MPV推荐,比SUV更实用近年,国内消费者对MPV需求日渐提高,多座位的设定对于人员较多的家庭,外出时能满足全家成员乘坐需求,都坐在一辆车愉快出行更合适,而且长期计算,出行费用也会比开多辆车要划算。7座车型选择自动洗碗机的经验知识我们不仅要注重价格,还要注重设备的性能,配置和功能以及实际操作等。洗碗餐具消毒设备有效果吗?一套要多少钱?想开一个餐具消毒公司的人一开始都会提这样的问题。首先,需要根据各自的情况使商用自动洗碗机的正确使用方法商用自动洗碗机通常是长龙洗碗机。在洗涤过程中,有必要人工将餐具正确摆放在履带上,通过传动系统带动餐具从一侧移动到另一侧,实现了餐具的自动洗涤过程。因此,省去了篮传式洗碗机的装筐步骤开箱评测光威弈Pro笔记本内存国产颗粒,圆梦强国开箱评测光威弈Pro笔记本内存国产重器,圆梦强国充满不幸的2020终于过去,疫情爆发停工停产医疗设备需求暴增代工厂产能不足线上办公远程课堂引发计算机需求旺盛,但这其中,存储芯片却价传MacBooks评估OLED技术,OLED笔记本电脑渗透率有望逐步提升据供应链消息称,苹果开始评估将OLED技术应用于MacBooks等IT产品,并正在与韩国两大面板制造商讨论,以尽量减少与现有LCD产品相比增加的成本。这是继苹果计划在2023年至2自动洗碗机的维护保养知识1。定期测试清洗机的绝缘性能。定期检查老化的电气部件和接地线。清洗机应确保设备接地良好。项目必须由经验丰富的电工执行2。定期测试洗碗机的电源,确认其满足设备的电源电压要求,避免在过自动商用洗碗机的维护知识关机后1。关闭洗碗机机电系统,打开检查门,拆下机内主洗涤缸上上喷淋管的堵头进行清洗。如果有任何废物堵塞,应予以清除。2。拆下前中后悬挂的雨帘,并清洗干净。3。打开机器内排水管的电源