项目中有用到Java调用python的需求,经过各种坑之后,根据业务需求,最终实现Java调用Python的各种情况,现在将总结如下,当然调用的也是Jython,具体原因,下面会介绍,先将代码贴出来。 

    这种方法是调用python文件的函数 ,并且需要将函数中的参数由Java数据类型转换为python的数据类型       

                 <dependency>

<groupId>org.python</groupId>
<artifactId>jython</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>org.python</groupId>
<artifactId>jython-standalone</artifactId>
<version>2.7.0</version>

</dependency>

public class JythonExecPyFile {

private static Log logger = LogFactory.getLog(JythonExecPyFile.class);


  public static PythonInterpreter getPythonEnterpreter(String jythonHome,String jythonJsonHome,String pythonRuleDir){


    Properties props = new Properties();
    //props.put("python.home", "path to the Lib folder");
    props.put("python.home", jythonHome);
    props.put("python.console.encoding", "UTF-8");
    props.put("python.security.respectJavaAccessibility", "false");
    props.put("python.import.site", "false");


    Properties preprops = System.getProperties();


    PythonInterpreter.initialize(preprops, props, new String[0]);
    PythonInterpreter pythonInterpreter = new PythonInterpreter();


    PySystemState sys = Py.getSystemState();
    
    sys.path.add(jythonJsonHome);
    sys.path.add(pythonRuleDir);
    //logger.info("jythonHome: " + jythonHome +"    jythonJsonHome: " + jythonJsonHome + "    pythonRuleDir: " + pythonRuleDir);
    return pythonInterpreter;
  }


  public static void addPythonThirdPartLib(String thirdLibPath){
    PySystemState sys = Py.getSystemState();
    sys.path.add(thirdLibPath);
    sys.path.add(SettingConfiguration.getValue("pythonDir"));
  }




  public static void cleanup(PythonInterpreter interpreter){
    if(interpreter != null){
      interpreter.close();
    }
  }
  
  public static void main(String[] args) {


    PythonInterpreter pythonEnterpreter = getPythonEnterpreter(SettingConfiguration.getValue("jPythonHome"),SettingConfiguration.getValue("jythonJsonHome"),SettingConfiguration.getValue("pythonDir"));
    
    System.out.println("-----------------------------调用有参数python方法执行方法-----------------------------");
    String fileNameWithParams = "D:\\Java\\python344\\age.py";
    pythonEnterpreter.execfile(fileNameWithParams);
    PyFunction func = (PyFunction) pythonEnterpreter.get("judge_age",PyFunction.class);
    PyObject pyobj = func.__call__(new PyString("2000-11-11"),new PyInteger(1));
    
    System.out.println("pyObj: " + pyobj);
    
    System.out.println("-----------------------------调用无参数python方法执行方法-----------------------------");
    String fileNameNoParams = "D:\\svnProject\\testConnectDB.py";
    pythonEnterpreter.execfile(fileNameNoParams);
    PyFunction func2 = (PyFunction) pythonEnterpreter.get("say",PyFunction.class);
    PyObject pyobj2 = func2.__call__();
    System.out.println("pyObj: " + pyobj2);
    
    JythonExecPyFile.cleanup(pythonEnterpreter);

  }

而为了更好的封装,将调用python的参数放到list中,而将返回的数据放到dict中,python将dict转换为json串,然后在java接受到返回结果之后,将json串在转换成java的map类型即可。

public class RuleAndModelExecuteFunction {
  private static Log logger = LogFactory.getLog(RuleAndModelExecuteFunction.class);
  /**
   * 规则一 根据文件名、函数名称 参数列表 执行对应的规则或者模型     0 pass       1 reject      2 nodata
   * param :fileName, functionName,params,params where from the params of python ,And
   * if contact 为null,或者长度为0,或者为空字符串  则 empty_contacts=1  (反欺诈规则结果)anti_fraud_rules_result='reject'
   * else  anti_fraud_rules_result=‘pass'  empty_contacts=0    0 pass 1
   */


  public static String ruleExecuteMethod(String fileName,String functionName,Object... params){
logger.info("ruleExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName);  
    String returnResult = "";
List<Object> paramList = new ArrayList<Object>();
    for(Object obj:params){
      paramList.add(obj);
    }
    String fileNamePath = SettingConfiguration.getValue(fileName);
    Integer defaultResult = 2;
    
    PythonInterpreter pythonInterpreter = null;
    PyObject pyResult  = new PyObject();
    try {
      pythonInterpreter = JythonExecPyFile.getPythonEnterpreter(SettingConfiguration.getValue("jythonHome"),SettingConfiguration.getValue("jythonJsonHome"),SettingConfiguration.getValue("pythonDir"));
      pythonInterpreter.execfile(fileNamePath);
      PyFunction func = (PyFunction) pythonInterpreter.get(functionName,PyFunction.class);
      pyResult = func.__call__(new PyList(paramList));
    }catch (Exception e){
      defaultResult = 4;
      logger.error("ruleExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + "\n" + e.getStackTrace());
      e.printStackTrace();
      return RiskRuleResultEnum.fromValue(defaultResult).getValue();
    }finally {
      JythonExecPyFile.cleanup(pythonInterpreter);
    }
    //pyResult返回的结果由原来的String类型修改为和模型一样,返回的Map类型
   /* if(pyResult != null){
        String pyResultStr = pyResult.toString();
        defaultResult = Integer.valueOf(pyResultStr);
        logger.info("RuleAndModelExecuteFunction ruleExecuteMethod result: " + pyResult.toString());
      }else {
        logger.info("RuleAndModelExecuteFunction ruleExecuteMethod result: " + pyResult);
      }*/
    if(pyResult != null){
    Map<String,Object> returnMap = JacksonUtil.convertJson2Map(pyResult.toString());
   if(returnMap.get("result") == null){
    returnResult = RiskRuleResultEnum.fromValue(defaultResult).getValue();
       logger.info("ruleExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + " result为空,设置为默认值: " + defaultResult);
   }else {
    returnResult = RiskRuleResultEnum.fromValue((Integer) returnMap.get("result")).getValue();
    logger.info("ruleExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + " result: " + defaultResult);
   }
    }else{
    returnResult = RiskRuleResultEnum.fromValue(defaultResult).getValue();
    }
    logger.info("ruleExecuteMethod result: " + returnResult );
    return returnResult;
  }


  public static Map<String,String> ModelExecuteMethod(String fileName,String functionName,Object... params){
logger.info("ModelExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName);  
Map<String,String> resultMap = new HashMap<String,String>();
Integer defaultResult = 2;
Double defaultData = new Double(0.00);
    List<Object> paramList = new ArrayList<Object>();
    for(Object obj:params){
      paramList.add(obj);
    }


    String fileNamePath = SettingConfiguration.getValue(fileName);
    logger.info("fileNamePath:"+fileNamePath);
    PythonInterpreter pythonInterpreter = null;
    PyObject pyResult = null;
    try {
      pythonInterpreter = JythonExecPyFile.getPythonEnterpreter(SettingConfiguration.getValue("jythonHome"),SettingConfiguration.getValue("jythonJsonHome"),SettingConfiguration.getValue("pythonDir"));
      pythonInterpreter.execfile(fileNamePath);
      PyFunction func = (PyFunction) pythonInterpreter.get(functionName,PyFunction.class);
      PyList pyList = new PyList(paramList);
      pyResult = func.__call__(pyList);
    }catch (Exception e){
      defaultResult = 4;
      defaultData = new Double(-1);;
      logger.error("ModelExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + "\n" + e.getStackTrace());
      resultMap.put("result", RiskRuleResultEnum.fromValue(defaultResult).getValue());
      resultMap.put("data",defaultData.toString());
      e.printStackTrace();
      return resultMap;
    }finally {
      JythonExecPyFile.cleanup(pythonInterpreter);
    }
    logger.info("return result:"+pyResult.toString());
    Map<String,Object> returnMap = JacksonUtil.convertJson2Map(pyResult.toString());
    if(returnMap.get("result") == null){
    resultMap.put("result",RiskRuleResultEnum.fromValue(defaultResult).getValue());
        logger.info("ModelExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + " result为空,设置为默认值: " + defaultResult);
    }else {
    resultMap.put("result",RiskRuleResultEnum.fromValue((Integer) returnMap.get("result")).getValue());
    }
    if(returnMap.get("data") == null){
      resultMap.put("data",defaultData.toString());
      logger.info("ModelExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + " data为空,设置为默认值: " + defaultData);
    }else {
    logger.info("ModelExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + " data为空,设置为默认值: " + returnMap.get("data"));
      resultMap.put("data",returnMap.get("data").toString());
    }
    
    if (returnMap.get("antifraud_model_saved")!=null) {
    resultMap.put("antifraud_model_saved", JsonUtils.toJson(returnMap.get("antifraud_model_saved")));
}
    if (returnMap.get("android_new_saved")!=null) {
        resultMap.put("android_new_saved", JsonUtils.toJson(returnMap.get("android_new_saved")));
}
    if (returnMap.get("profile_model_saved")!=null) {
    resultMap.put("profile_model_saved", JsonUtils.toJson(returnMap.get("profile_model_saved")));
}
   
    logger.info("RuleAndModelExecuteFunction ModelExecuteMethod result: " +pyResult.toString() );
    return resultMap;
  }
  
  public static Map<String,String> collectionExecuteMethod(String fileName,String functionName,Object... params){
logger.info("ModelExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName);  
Map<String,String> resultMap = new HashMap<String,String>();
    
List<Object> paramList = new ArrayList<Object>();
    for(Object obj:params){
      paramList.add(obj);
    }


    String fileNamePath = SettingConfiguration.getValue(fileName);
    logger.info("fileNamePath:"+fileNamePath);
    PythonInterpreter pythonInterpreter = null;
    PyObject pyResult = null;
    try {
      pythonInterpreter = JythonExecPyFile.getPythonEnterpreter(SettingConfiguration.getValue("jythonHome"),SettingConfiguration.getValue("jythonJsonHome"),SettingConfiguration.getValue("pythonDir"));
      pythonInterpreter.execfile(fileNamePath);
      PyFunction func = (PyFunction) pythonInterpreter.get(functionName,PyFunction.class);
      PyList pyList = new PyList(paramList);
      pyResult = func.__call__(pyList);
    }catch (Exception e){
      logger.error("ModelExecuteMethod param------ fileName: " + fileName + "  functionName: " + functionName + "\n" + e.getStackTrace());
      resultMap.put("result", "error");
      resultMap.put("data","-1");
      e.printStackTrace();
      return resultMap;
    }finally {
      JythonExecPyFile.cleanup(pythonInterpreter);
    }
    logger.info("return result:"+pyResult.toString());
    Map<String,Object> returnMap = JacksonUtil.convertJson2Map(pyResult.toString());
   
    resultMap.put("result", returnMap.get("result").toString());
    resultMap.put("data", returnMap.get("data").toString());
    
    logger.info("RuleAndModelExecuteFunction ModelExecuteMethod result: " +returnMap);
    return resultMap;

  }

public static Map<String, Object> convertJson2Map(String json) {
JsonFactory factory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper(factory);
TypeReference<HashMap<String, Object>> typeRef = new TypeReference<HashMap<String, Object>>() {
};
try {
return mapper.readValue(json, typeRef);
} catch (JsonParseException e) {
e.printStackTrace();
} catch (JsonMappingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;

}

通过这种封装之后,完成了最终的封装,并作为工具类进行调用。

Java调用python由三种方式,分别如下:

第一种方式:

public class HelloPython {public static void main(String[] args) {PythonInterpreter interpreter = new PythonInterpreter();interpreter.exec("print('hello')");}
}

什么是 PythonInterpreter 呢?它的中文意思即“ Python 解释器”。我们知道 Python 程序都是通过解释器执行的,上面的代码就是在 JVM 中创建一个“ Python 解释器”对象,模拟 Python 解释器的行为,通过 exec(" Python 语句") 直接在 JVM 中执行 Python 代码,代码的输出结果为:hello,需要提醒各位的是,该程序运行速度相较正常的 Java or Python 程序都要慢那么一点。

第二种方式:在项目中实际用到,执行的是python文件中的函数,见上面

第三种方式:通过解释器直接执行python文件

#open files
 
print 'hello'
number=[3,5,2,0,6]
print number
number.sort()
print number
number.append(0)
print number
print number.count(0)
print number.index(5)


import org.python.util.PythonInterpreter;
 
public class FirstJavaScript {
  public static void main(String args[]) {
 
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.execfile("C:\\Python27\\programs\\input.py");
  }// main
}

第四种方式:该方式是否可以调用python的第三方模块,没有运行,用需求的朋友可以执行一个程序就可以验证

由于 Jython 运行过慢并且不支持第三方的 Python 模块,通过 Java 代码执行一段终端命令来调用 Python 脚本,根据具体问题决定如何交互可能才是实际中真正会用到的方式(详见下面的举例代码)。

举例代码:下面是一个可以识别很粗的手写数字写的一个小程序,界面上引用了 core java 上的一段代码:

复制代码
import java.io.*;class PyCaller {private static final String DATA_SWAP = "temp.txt";private static final String PY_URL = System.getProperty("user.dir") + "\\test.py";public static void writeImagePath(String path) {PrintWriter pw = null;try {pw = new PrintWriter(new FileWriter(new File(DATA_SWAP)));} catch (IOException e) {e.printStackTrace();}pw.print(path);pw.close();}public static String readAnswer() {BufferedReader br;String answer = null;try {br = new BufferedReader(new FileReader(new File(DATA_SWAP)));answer = br.readLine();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return answer;}public static void execPy() {Process proc = null;try {proc = Runtime.getRuntime().exec("python " + PY_URL);proc.waitFor();} catch (IOException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}// 测试码public static void main(String[] args) throws IOException, InterruptedException {writeImagePath("D:\\labs\\mytest\\test.jpg");execPy();System.out.println(readAnswer());}
}
复制代码

运行流程:Java Swing 界面接收用户输入 --> Java 将用户输入写到本地文件中 --> Java 调用本地 Python 脚本 --> Python 从本地文件拿到用户输入 --> Python 处理用户输入得到最终结果 --> Python 把最终结果写到本地文件 --> Java 对 Python 脚本的调用结束 --> Java 从本地文件中取出最终结果 --> Java 把最终结果返回给用户

完整代码链接:http://pan.baidu.com/s/1sl4l68H 

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. SAP内存和ABAP内存的简单介绍说明

    在编写程序的过程中不同的程序之间经常需要相互传值,SET / GET PAREMETER 和 IMPORT / EXPORT 是SAP 提供的两种方式。前者的值是放在SAP内存,后者是放在ABAP内存。这两种内存的主要的区别就是作用范围了,SAP内存是对当前登录所有会话都可以访问到的,除非用户退出系统不然在…...

    2024/4/21 9:52:37
  2. 设计模式综合项目实战

    设计模式综合项目实战视频教程 设计模式综合项目实战视频教程 设计模式综合项目实战视频教程java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频课程内容包含: 高级Java架构师包含…...

    2024/4/21 9:52:35
  3. ABAP/4 版本管理使用小记

    Coder 免不了要改程序,又免出现越改越乱的情况,特别是程序在比较复杂情况下。 我们的习惯是备份一份文本文档,对于只有一个文件的程序或者编译器没有版本管理机制,这不失为上上策。 但是我们的程序开始变得复杂了,特别是象Web Dynpro ABAP之类的应用程序,不是一个文件就…...

    2024/4/21 9:52:34
  4. 推荐一个很牛逼的 Github 项目:本人历时半年完成的【Java 面试 + Java 后端技术学习指南】,已拿大厂offer

    今天给大家分享一份【Java 面试 + Java 后端技术学习指南】:一份通向理想互联网公司的面试指南,包括 Java,技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计、分布式、数据库(MySQL、Redis)、Java 项目实战等, 新鲜出炉! Github 地址 如下:https…...

    2024/4/21 9:52:33
  5. 如何使用ABAP代码反序列化多层JSON字符串成ABAP结构

    假设我有这个JSON字符串如下图所示: 我的任务是解析出上图黑色方框里的几个字段,比如ObjectID, ETag, BuyerID, DateTime, ID, Name等等,把它们的值存储到对应ABAP变量里。下面是ABAP解析方案。首先定义一个ABAP结构,包含需要解析的几个字段。TYPES: BEGIN OF ty_header, o…...

    2024/4/21 9:52:32
  6. Java从零到企业级电商项目实战-服务端

    Java从零到企业级电商项目实战-服务端一期算是写完了,由于有一个阶段在测试接口的时候遇见了一个Bug,笔记也就停止更新了,后来又遇到国庆,所以也就一直没有更新,现在整个项目的接口也全部测试通过,正好整理一下笔记,同时也回顾复习一下知识点~...

    2024/4/20 18:00:26
  7. 作为SAP顾问都应该知道的ABAP程序调试方法

    摘要:虽然SAP系统的稳定性很不错,大部分问题不需要通过调试代码来解决。但是,别忘记我们还有很多自开发程序,或者某些配置不完整等,某些情况下通过调试ABAP程序是一个能快速找到问题根源的方法。本篇主要针对业务模块顾问来讲解一种通过消息号及简单的程序调试来定位系统报…...

    2024/4/24 10:30:38
  8. Jquery学习之Uglify压缩工具

    Uglify使用 web开发往往离不开大量的js,有过开发经验的童鞋都知道,有时候一个页面会加载一个或者多个js文件。 这样的后果就是造成页面的响应事件十分的缓慢。这个时候就到我们的主题了,压缩js文件缩加快家族的速度。 在Jquery1.5出来的时候,john说Jquery已经采用了Uglify进…...

    2024/4/20 18:00:23
  9. 如何安装最新版本的ABAP Development tools

    今天我使用SAP ABAP development tools进行开发时,遇到下面的错误消息:request to the ABAP back-end could not be processed, because your client installation ofBAP Development Tools is out of date. Do you wish to update the client installation now? 点了Update…...

    2024/4/26 4:41:13
  10. Java秒杀系统实战系列~商品秒杀代码实战

    摘要:本篇博文是“Java秒杀系统实战系列文章”的第六篇,本篇博文我们将进入整个秒杀系统核心功能模块的代码开发,即“商品秒杀”功能模块的代码实战。内容:“商品秒杀”功能模块是建立在“商品详情”功能模块的基础之上,对于这一功能模块而言,其主要的核心流程在于:前端…...

    2024/4/20 18:00:20
  11. ABAP——选择屏幕标题和ALV标题的修改

    ABAP——选择屏幕标题和ALV标题的修改 2018-06-30 18:03:09 1、Selection Screen标题的修改.说明:选屏的标题是在程序刚创建时,对程序进行的最基本描述。举例如下:然后生成选屏界面的标题,如图:若是需要修改该标题,可按以下两步进行操作: (1)在ABAP编辑器页面,选择“…...

    2024/4/20 18:00:19
  12. Java实战干货分享

    Java实战项目,架构锦集,自学月薪过万的不在话下。 实战项目Java框架...

    2024/4/20 18:00:18
  13. ABAP几种内表的操作

    ABAP几种内表的操作这次的程序用到了哈希表,在这里,也顺便总结一下ABAP三种内表的特点。ABAP中有三类内表,标准表,排序表和哈希表。三种内表介绍标准表的每一行对应一个逻辑索引-SY-TABIX,填充内表的时候,可以将数据附加在现有行之后,也可以插入到指定的位置,程序对内表…...

    2024/4/20 18:00:17
  14. 【备忘】JAVA SE+JSP+Servlet+Oracle+SSH+J2EE项目实战 JAVA全套视频教程 下载

    w1.jpg (89.01KB, 下载次数: 0)下载附件 [url=]保存到相册[/url] 3 天前 上传下载地址:http://www.javaxxz.com/thread-252962-1-1.html...

    2024/4/21 9:52:32
  15. ABAP 写入内存:ABAP memory中的Export和Import

    转:cnblogs(没有具体地址,抱歉哈!) 上图是SAP 运行时内存,SAP程序运行期间的内存管理与用户会话相关,运行时内存包括SAP内存以及ABAP内存两大部分。 首先说一下以下的概念: 1. 主会话(main session): 用户登录SAP系统,便开始了与应用服务器之间的主会话,又称外部会话(…...

    2024/4/21 9:52:30
  16. 2018、2019年java技术面试题整理

    1、servlet执行流程客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将request、response对象传递给找到的servlet,servlet根据request就可以知道是谁发出的请求,请求信息及其他信息,当servlet处理完业务逻辑…...

    2024/4/21 9:52:29
  17. SAP abap使用程序批量创建数据元素

    接着前一篇的SAP abap使用程序批量创建域,接下来就是用我们批量创建好的域来创建数据元素了。原理和创建域的玩法类似附上封装好的函数代码。FUNCTION ZZF_CREATE_ELEMENT. *"---------------------------------------------------------------------- *"*"本地…...

    2024/4/24 23:56:33
  18. java web项目实战(网络商城)

    问题与解析;1.org.hibernate.MappingNotFoundException:原因是没有对spring容器进行实例化,可以在web.xml中进行配置.2. org.hibernate.PropertyNotFoundException: field [commend] not found on com.lyq.model.product.ProductInfo这个异常是在hibernate的映射文件中(*.hbm.x…...

    2024/4/21 9:52:27
  19. ABAP 性能优化(一)

    ABAP程序很关注性能问题。但是在程序初期,由于没有大量的测试数据,我们很难发现一些程序的性能瓶颈在哪里,更无从谈如何优化性能了。不过,我想,如果在开发早期遵循一些好的开发方法,就有可能避免后期程序发生大的性能问题。 影响 ABAP 程序性能的因素影响ABAP程序性能的因…...

    2024/4/21 9:52:26
  20. 《Java开发实战经典》笔记

    1.引用数据类型(class, array等),其实就是分栈内存和堆内存的数据类型,在栈内存中存储对象, 在堆内存中存具体值。因为数组是引用数据类型,所以数组变量保存的并非是数组的实体,而是数组堆内存的地址。2.对于引用数据类型,比如数组传递进方法中后,如果方法对数组本身做…...

    2024/4/21 9:52:25

最新文章

  1. MQTTX工具获取及使用

    工具获取地址&#xff1a;百度网盘 请输入提取码 新建连接 订阅主题...

    2024/4/27 5:20:20
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. HarmonyOS 开发-一镜到底“页面转场”动画

    介绍 本方案做的是页面点击卡片跳转到详情预览的转场动画效果 效果图预览 使用说明 点击首页卡片跳转到详情页&#xff0c;再点击进入路由页面按钮&#xff0c;进入新的路由页面 实现思路 首页使用了一种视觉上看起来像是组件的转场动画&#xff0c;这种转场动画通常是通过…...

    2024/4/18 23:18:44
  4. Go语言map、slice、channel底层实现(go面试)

    slice 切片是一个引用类型&#xff0c;其底层实现是一个结构体&#xff0c;包含以下字段&#xff1a; ptr&#xff1a;一个指向底层数组的指针&#xff0c;指针指向数组的第一个元素。 len&#xff1a;切片当前包含的元素数量。 cap&#xff1a;切片的容量&#xff0c;即底层…...

    2024/4/24 19:38:16
  5. 【THM】Protocols and Servers(协议和服务器)-初级渗透测试

    介绍 这个房间向用户介绍了一些常用的协议,例如: HTTP协议文件传输协议POP3邮件传输协议IMAP每个协议的每个任务都旨在帮助我们了解底层发生的情况,并且通常被优雅的GUI(图形用户界面)隐藏。我们将使用简单的 Telnet 客户端来使用上述协议进行“对话”,以充分了解GUI客户…...

    2024/4/26 8:55:10
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/26 18:09:39
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/26 20:12:18
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/26 23:05:52
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/27 4:00:35
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/25 18:39:22
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/25 18:39:22
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/26 21:56:58
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/25 16:48:44
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/26 16:00:35
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/26 22:01:59
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/26 23:04:58
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/26 19:46:12
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/25 18:38:58
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/25 18:38:57
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57