2019-12-12 09:59:44 zmzmlla 阅读数 59
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108028 人正在学习 去看看 林男

java与python的交互

写在之前

最近项目交付结束,正在总结年初到现在做的琐碎项目与学习时,发现了一个比较有意思的交互,即java与python两个系统之间的互相请求访问,虽然当时跟我对接的python小伙伴已离职,但还是需要好好记录一下这个知识点的,毕竟少见的跨系统开发。

需求描述

前端-java后台-python算法分析-java处理分析结果返回

大概就是这么一个情况,公司产品需要一个上万人排班(而且可能是多个上万人进行排班)的功能,但系统是基于java做的后台,公司的算法那工程师使用的是python进行算法实现,故需要进行跨系统支持,毕竟算法运算非常非常吃资源

具体开发

因为是跨系统,故给算法python单独准备了一台机器,测试配备以10G+200G+4vCPU机器,python程序为打包程序,需要主动请求访问才会进行运算,并生成对应的结果文件等。

1.java后台的开发

1.1java请求python

1.首先,我们需要保证服务能远程到python服务器去访问执行算法分析。
  那么,需要进行远程操作:
  采用的是JSCH技术,通过ip端口进行访问,这里如果需要加密,不是内部环境,则需要进行配置公钥与私钥,我这里为内部环境,不用考虑,故跳过公钥的询问:StrictHostKeyChecking=no
    JSch jsch = new JSch();
    Session session = jsch.getSession(serverName, serverIp, serverPort);
    session.setPassword(serverPwd);
    session.setConfig(SESSIONCONFIG, SESSIONCONFIGVALUE);
    session.setTimeout(timeout);
    session.connect();
  然后,session连接后创建channel:
    Channel channel = session.openChannel(SFTPCHANNELNAME);
    channel.connect();
  最后,设置编码:
    ChannelSftp = (ChannelSftp) channel;
    sftp.setFilenameEncoding(“UTF-8”);
2.然后,执行命令运行python。
  比如先定义一个需要执行的命令:
    String cmd = "nohup /home/" + python执行路径包名 + 与python约定的参数 + “ &”;
  解释:nohup 与 & 防中断,执行完等待结果即可,约定参数包含回调地址。
  定义完命令,下面就是要进行执行:
    ChannelExec exec = (ChannelExec) session.openChannel(“exec”);
    exec.setCommand(cmd);
    exec.setErrStream(System.err);
    exec.connect();
    Map<ChannelExec, Session> channelSessionMap = new HashMap<ChannelExec, Session>();
    channelSessionMap.put(exec, session);
  通过exec进行命令的输入执行。
  这里需要注意的是如果多并发进行,是需要做校验处理的,多个任务需要进行区分,那我们可以通过参数传入当前任务的key进行辨认,而在java程序中做一个全局容器进行存放,处理完则释放.
    channelMap.put(channelKey, channelSessionMap);

1.2 java接到python请求

上面我们说到java请求python进行运算,算是一个结束,另一个重要的地方就是接受python处理结果,这里不需要做太多约束,仅仅与python进行接口约束暴露给python请求即可。

2.python请求java的开发

python在接到请求后读取参数,执行算法计算结果后返回。

这里python调用java推荐有两种方式:
1.requests:
引入requests:
  import requests, json, sys
这里的json为请求需要发送json格式的请求,sys为读取java请求过来的参数:
  post_url = sys.argv[1]
  userId = sys.argv[2]
  dateTime = sys.argv[3]
然后处理完结果后返回时需设置headers与请求参数:
  headers = {'Accept': 'application/json', 'Content-Type': 'application/json'}
  result_url = json.dumps({"userId": userId,
     "dateTime": dateTime,
     "resultFlag": "1",
     "file":"/home/resultFile.excel"
     })
最后定义请求方法调用即可:
def doPost():
    rsp = requests.post(post_url, result_url, headers=headers)

ps:**这里也许大家会有另一种写法,headers直接传参,并未进行赋值,这时会存在解析不到的问题,这个问题就需要将headers进行赋值。**

2.pycurl:
这种方式与requests类似,除了写法有些区别,其余基本无差:
依旧引入pycurl:
  import pycurl, json, sys
不多说,请求url与参数获取与requests一致,
headers的写法:
  headers = ["Content-Type:application/json;charset=utf-8"]
然后方法稍作变化:
  def test_post():
    c = pycurl.Curl()
    c.setopt(pycurl.HTTPHEADER, headers)
    c.setopt(pycurl.URL, post_url)
    c.setopt(pycurl.POST, 1)
    c.setopt(pycurl.POSTFIELDS, url_result)
    print(c.getinfo(pycurl.CONTENT_TYPE))
    c.perform()
    c.close()

这里说下requests与pycurl的选择:
1.如果请求服务器进行大量io操作使用requests。
2.如果请求需要消耗大量带宽(io频率低,但一次性网络传输数据量大),在不超带宽限制的情况下用pycurl。

code源码:https://github.com/lovezmming/spring-development-projects/tree/master/java2python
微信公众号:像是风
在这里插入图片描述

2019-12-30 16:35:00 u010230054 阅读数 38
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108028 人正在学习 去看看 林男

Java

Java编程是大数据开发的基础,大​‌‌​‌‌数据中很多技术都是使用Java编写的,如Hadoop、Spark、mapreduce等,因

此,想要学好大数据,Java编程是必备技能!

Python

Python往往在大数据处理框架中得到支持。

大数据就业方向总结起来就是:三大方向,十大职业!

三大方向指的是:大数据系统研发类人才、大数据应用开发类人才和大数据分析类人才。

现在可以预见的是,未来几年,大数据还将持续发展,更加方便我们的生活,面对如此光明而诱人的前景行业

,选择比努力更重要,大数据人才也将成为行业的香饽饽。
资料领取直通车:http://sxt.lxydns.com
http://bz.lxydns.com

 

2018-02-26 21:26:25 qq_36058529 阅读数 163
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108028 人正在学习 去看看 林男

最近公司有个业务需要使用python,作为一位接触java不到两年的菜鸟,在查找了一番资料后发下java与python有以下的差别

1:java需要编译后生成.class文件才能解释运行

2:python比java要更容易上手

3:java比较适合企业级应用的开发,python比较适合于数据分析,根据目前的市场走势学python的发展性更好

4:与java的各种资源相比python的资源要少的可怜,国外用python的更多,而国内的bat几家大公司的核心业务都是基于java搭建起来的,所以想进入bat的同鞋可以认真研究一下java

5:python不需要声明变量的类型

6:在开发速度上python远高于java,而运行速度java超过python一大截

有些学习了java的同学总认为python有多牛逼,在我看来在熟练的掌握一门高级语言后去学习任何一门新的编程语言都很容易,最重要的是基础要打牢,基础决定高度,我个人还是比较喜欢java

2019-06-17 13:43:57 weixin_43664270 阅读数 1591
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108028 人正在学习 去看看 林男

随着互联网的高速发展,越来越多的人选择加入到IT行业,而近年来,编程语言界也可以说是百花齐放……

那么,对于刚入行的小伙伴来讲,到底选择哪种编程语言学习更好呢?是一直独占鳌头的Java,还是后来居上的Python,或者近两年一直很热门的大数据、人工智能呢?

在做选择前,我们首先要现有个概念认知,就是Java、Python和所谓大数据、人工智能,并不是一个同类。Java、Python是计算机的编程语言,大数据、人工智能更像是互联网的发展方向,从一定意义上讲,它们是包含与被包含的关系。

在明确了这个概念之后,我们再说下这两种编程语言:

一、Java

作为全球占比最高的开发语言,Java已经有 20 多年的历史 ,被全世界数以百万计的开发者使用。一直以来,Java都是作为编程语言界的扛把子存在。

Java有哪些优点:

1、作为纯面向对象的语言,Java能够直接反应显示世界中的对象,极好地实现了面向对象的理论,允许程序员以优雅的思维方式进行复杂的编程。

2、跨平台兼容,作为一种解释型语言,java可以通过一次编译,进行跨平台到处运行,只需要在运营平台上安装对应的jvm即可。

3、通过提供内置类库,Java可以简化开发人员的程序设计工作,从而缩短项目的开发时间。同时,Java还提供了对web应用开发的支持。例如,Applet、servlet和jsp可以用来开发web应用程序;socket、rmi可以用来开发分布式应用程序的类库。

4、Java具有较好的安全性和健壮性。为了增强程序的安全性,java语言提供了一个可以防止恶意代码攻击的安全机制(数据边界检测和bytecode校验等),也因此java语言经常被用在网络环境中。

5、Java在吸收了C++语言的各种优点的基础上,还摒弃了C++语言里难以理解的多继承、指针等概念

从发展方向来看,Java语言可以广泛应用于web开发、大数据开发、安卓开发、服务器开发等等。

从市场需求来看,北上广深依旧是人才需求明显的地区,其次新一线城市对于软件人才的需求也很大,很多企业都很难招到一个合适的软件人才

而且目前,Java人才的薪资普遍都很高,比较优秀的,毕业1~2年的工资即可达到17K。

二、Python

Python是一种面向对象的解释型计算机程序的设计语言, Python具有丰富和强大的库。它常被称为胶水语言,能够把其他语言制作的各种模块很轻松地结合在一起。

1、简单、易懂;Python的定位是“优雅”、“明确”、“简单”,因此相对而言,Python更适合于非计算机专业的人员使用。使用Python几乎不需要任何编程语言的基础,尤其是数据类型方面的知识, 拿过来就可以用。而Java就不一样了,你必须要了解数据类型的区别,才可以开始编程。

2、开发效率高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。

3、兼容性,具体表现为,可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。

可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。

可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。

从发展方向上来讲,Python主要应用领域包括云计算、WEB开发、科学运算、人工智能……,应用较多的有全栈开发、数据分析、运维开发等。

Python工程师的起薪大多数在15K起,3年以上工程师的起薪大多超过20K。学python的人大多非科班出身,很多大学并没有开始此专业,因此市场上有很大的人才缺口。

综合来看,无论是Java,还是Python,都是我们这个时代急需且紧缺的技术,在市场上都有很大的需求。在具体选择上,初学者可以根据自身情况做具体考量。在具体方向上,像大数据、云计算、人工智能是比较好的选择。

2018-06-19 16:52:14 lmseo5hy 阅读数 5422
  • Python中小学儿童孩子青少年少儿编程入门零基础趣味...

    课程概述 本课程提供零基础的孩子学习编程,学习Python语言的基本知识,讲课内容通俗易懂,结合大量的实例,让孩子更容易理解编程中的一些概念。 学会本课程后,孩子能看懂一般的Python代码,并能写简单的程序,学会编程思想,为后期学习更深的编程知识打下良好的基础。学好Python编程基础知识后,才能进行后面游戏编程、科学数据处理和AI技术等等方面的学习。有了编程的思想,对于以后学习其它编程语言比如C++、java、php等等就容易多了。 目录如下:

    108028 人正在学习 去看看 林男

一些开发人员声称Python比Java更有效率。但这应该先弄清Python和Java之间的区别是什么?

Java和Python的区别

Java是一种严格的类型语言,这意味着必须显式声明变量名。相比之下,动态类型的Python则不需要声明变量。在编程语言上有许多关于动态和静态类型的争论,但有一点应该注意:Python是一种语法简单的功能强大的语言,能够通过编写脚本就提供优秀的解决方案,并能够快捷地部署在各个领域。

Java可以创建跨平台的应用程序,而Python几乎兼容当前所有操作系统。对新手来讲, Python比Javaf更容易上手,而且代码易读性强,但是如果你想你的代码可以在任何地方都能执行的话,那么还是选择Java吧。不过Java的可移植性也是有代价的,使用Java你需要购买更大的机器,消耗更多的内存,并且程序更加难以开发。

Java比Python更复杂,没有技术背景的人学起来并非易事。除此之外,从就业薪资来说,同等级别的Python工程师就业薪水要高于Java编程人员,尤其适合零基础编程学习!


python+java混合编程

阅读数 2159

没有更多推荐了,返回首页