optional

pywinauto客户端自动化---窗口进行截图

…衆ロ難τιáo~ 提交于 2020-08-11 00:01:42
  做自动化过程中时长会遇到一些截图操作,那么在做客户端的时候,应该怎么进行截图呢? 窗口截图 在pywinauto中存在自带的截图函数 capture_as_image() 源码: def capture_as_image(self, rect= None): """ Return a PIL image of the control. See PIL documentation to know what you can do with the resulting image. """ control_rectangle = self.rectangle() if not (control_rectangle.width() and control_rectangle.height()): return None # PIL is optional so check first if not ImageGrab: print ( " PIL does not seem to be installed. " " PIL is required for capture_as_image " ) self.actions.log( " PIL does not seem to be installed. " " PIL is required for capture_as_image

springboot热部署实战

醉酒当歌 提交于 2020-08-10 23:39:07
每次代码改动后都需要重新手动Run项目,心累,在网上找了下,发现SpringBoot提供了热部署的方案,改动代码后自动编译打包,现在将热部署的配置方法记下来: 第一步:在pom.xml中添加依赖,导入spring-boot-devtools <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>runtime</scope> </dependency> 第二步:在Intellij编辑器中选择File->Setting->Build,Execution,Deployment->Compiler,勾选【Build project automatically】 第三步:通过快捷键Ctrl+Alt+Shift+/ ,进入Intellij的Registry配置中,将【compiler.automake.allow.when.app.running】勾选 到这里就大功告成,测试了一下,修改了代码以后,等待两秒钟,SpringBoot会重新编译加载代码,免去手动编译的烦恼。 来源: oschina 链接: https://my.oschina.net/u/4559450/blog

重识Java8函数式编程

泪湿孤枕 提交于 2020-08-10 21:32:36
前言 最近真的是太忙忙忙忙忙了,很久没有更新文章了。最近工作中看到了几段关于函数式编程的代码,但是有点费解,于是就准备总结一下函数式编程。很多东西很简单,但是如果不总结,可能会被它的各种变体所困扰。接触Lambda表达式已经很久了,但是也一直是处于照葫芦画瓢的阶段,所以想自己去编写相关代码,也有些捉襟见肘。 1. Lambda表达式的不同形式 // 基本形式 参数 -> 主体 1.1 形式一 Runnable noArguments = () -> System.out.println("Hello World"); 该形式的Lambda表达式不包含参数,使用空括号()表示没有参数。它实现了Runnable接口,该接口也只有一个run方法,没有桉树,且返回类型为void。 1.2 形式二 ActionListener oneArgument = event -> System.out.println("button clicked"); 该形式的Lambda表达式包含且只包含一个参数,可省略参数的符号。 1.3 形式三 Runnable multiStatement = () -> { System.out.print("Hello"); System.out.println(" World"); }; Lambda表达式的主体不仅可以使一个表达式,而且也可以是一段代码块

python时间序列分析

别说谁变了你拦得住时间么 提交于 2020-08-10 20:23:04
题记: 毕业一年多天天coding,好久没写paper了。在这动荡的日子里,也希望写点东西让自己静一静。 恰好 前段时间用python做了一点时间序列方面的东西,有一丁点心得体会想和大家分享下。在此也要特别感谢 顾志耐和 散沙 ,让我喜欢上了python。 什么是时间序列 时间序列简单的说就是各时间点上形成的数值序列,时间序列分析就是通过观察历史数据预测未来的值。在这里需要强调一点的是,时间序列分析并不是关于时间的回归,它主要是研究自身的变化规律的(这里不考虑含外生变量的时间序列)。 为什么用python    用 两个字总结“情怀”,爱屋及乌,个人比较喜欢python,就用python撸了。能做时间序列的软件很多,SAS、R、SPSS、Eviews甚至matlab等等,实际工作中应用得比较多的应该还是SAS和R,前者推荐 王燕写的《应用时间序列分析》,后者推荐“ 基于R语言的时间序列建模完整教程 ”这篇博文( 翻译版 )。python作为科学计算的利器,当然也有相关分析的包:statsmodels中tsa模块,当然这个包和SAS、R是比不了,但是python有另一个神器:pandas!pandas在时间序列上的应用,能简化我们很多的工作。 环境配置    python推荐直接装Anaconda,它集成了许多科学计算包,有一些包自己手动去装还是挺费劲的

yarn错误The engine "node" is incompatible with this module

左心房为你撑大大i 提交于 2020-08-10 18:46:03
今天在用yarn安装vue-cli时出现了错误 ../vue-hackernews-2.0> yarn yarn install v1.12.3 [1/5] Validating package.json... [2/5] Resolving packages... [3/5] Fetching packages... info fsevents@1.1.3: The platform "win32" is incompatible with this module. info "fsevents@1.1.3" is an optional dependency and failed compatibility check. Excluding it from installation. error upath@1.0.4: The engine "node" is incompatible with this module. Expected version ">=4 <=9". Got "10.14.2" error Found incompatible module info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command. 进行这个设置之后,会正常。

日期中带的 T 是什么意思

余生长醉 提交于 2020-08-10 18:43:44
Date and Time Formats Submitted to W3C 15 September 1997 This version: http://www.w3.org/TR/1998/NOTE-datetime-19980827 Newest version: http://www.w3.org/TR/NOTE-datetime Authors: Misha Wolf < misha.wolf@reuters.com > Charles Wicksteed < charles.wicksteed@reuters.com > Document Status Status of this document This document is a NOTE made available by the W3 Consortium for discussion only. This indicates no endorsement of its content, nor that the Consortium has, is, or will be allocating any resources to the issues addressed by the NOTE. This document is a submission to W3C from Reuters Limited

牛逼哄哄的 Lambda 表达式,简洁优雅就是生产力!

最后都变了- 提交于 2020-08-10 16:42:49
作者:Sevenvidia https://www.zhihu.com/question/20125256/answer/324121308 1、什么是Lambda? 我们知道,对于一个Java变量,我们可以赋给其一个“值”。 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量: 在Java 8之前,这个是做不到的。但是Java 8问世之后,利用 Lambda 特性,就可以做到了。推荐: JDK8新特性之Lambda表达式 。 当然,这个并不是一个很简洁的写法。所以,为了使这个赋值操作更加elegant, 我们可以移除一些没用的声明。 这样,我们就成功的非常优雅的把“一块代码”赋给了一个变量。而“这块代码”,或者说“这个被赋给一个变量的函数”,就是一个Lambda表达式。 但是这里仍然有一个问题,就是变量aBlockOfCode的类型应该是什么? 在Java 8里面,所有的Lambda的类型都是一个接口,而Lambda表达式本身,也就是”那段代码“,需要是这个接口的实现。这是我认为理解Lambda的一个关键所在,简而言之就是, Lambda 表达式本身就是一个接口的实现。直接这样说可能还是有点让人困扰,我们继续看看例子。我们给上面的aBlockOfCode加上一个类型:

Java并没有衰落.大家对它的认识才刚刚开始 Java8全新出发

狂风中的少年 提交于 2020-08-10 15:41:19
Java并没有衰落.大家对它的认识才刚刚开始 很高兴能在此给大家分享Java8的新特性。这篇文章将一步一步带你了解Java8的所有新特性。我将通过简单的实例代码向大家展示接口中默认方法,lambda 表达式,方法引用,重复注解的使用. 看过这篇文章之后你将了解流、函数、接口、map扩展、日期中的新变化.不废话,放码过来! Default Methods for Interfaces(接口中的默认方法) Java 8准许我们在接口中增加一个通过default关键字修饰的非抽象的方法. 这个特性被我们称为扩展方法. 下面举例说明: interface Formula { double calculate(int a); default double sqrt(int a) { return Math.sqrt(a); } } 接口Formula 中除了抽象方法calculate 其中还定义了非抽象方法sqrt. 实现类里面继承了抽象方法calculate. 而默认方法可以直接调用. Formula formula = new Formula() { @Override public double calculate(int a) { return sqrt(a * 100); } }; formula.calculate(100); // 100.0 formula.sqrt(16);

如何用私钥签名合约调用裸交易?【Web3.js】

戏子无情 提交于 2020-08-10 12:09:48
交易签名是你向区块链证明自己身份的唯一途径,这也是使用以太坊的Web3开发库时需要理清的一个基本概念。在这个教程中,我们讲学习如何使用Web3.js来完成以太坊智能合约调用交易的签名与提交,适用于包括ERC20代币合约在内的所有以太坊合约的调用。 用自己熟悉的语言学习以太坊DApp开发: Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart 1、以太坊交易签名概述 有两种方法可以对交易进行签名:使用解锁账号或使用私钥。 如果你在用testRPC或Ganache开发,那么应该已经了解其创建的测试账号。这些账号默认都是解锁的,因此你可以直接用它们来签名交易。你也可以使用特殊的Web3提供器例如truffle-hdwallet-provider来生成解锁账号。 更常见的则是以用发起交易的地址对应的私钥来签名交易。考虑到安全性,当你用到私钥时需要格外小心。 2、创建以太坊智能合约调用交易 首先你需要构建一个调用合约方法的交易对象: // 12 word mnemonic for HD Wallet Provider // You can use any provider such as the HttpProvider if you are // signing with private key const

恕我直言你可能真的不会java第9篇-Stream元素的匹配与查找

你离开我真会死。 提交于 2020-08-10 05:46:43
在我们对数组或者集合类进行操作的时候,经常会遇到这样的需求,比如: 是否包含某一个“匹配规则”的元素 是否所有的元素都符合某一个“匹配规则” 是否所有元素都不符合某一个“匹配规则” 查找第一个符合“匹配规则”的元素 查找任意一个符合“匹配规则”的元素 这些需求如果用for循环去写的话,还是比较麻烦的,需要使用到for循环和break!本节就介绍一个如何用Stream API来实现“查找与匹配”。 一、对比一下有多简单 employees是10个员工对象组成的List,在前面的章节中我们已经用过多次,这里不再列出代码。 如果我们不用Stream API实现,查找员工列表中是否包含年龄大于70的员工?代码如下: boolean isExistAgeThan70 = false; for(Employee employee:employees){ if(employee.getAge() > 70){ isExistAgeThan70 = true; break; } } 如果我们使用Stream API就是下面的一行代码,其中使用到了我们之前学过的"谓词逻辑"。 boolean isExistAgeThan70 = employees.stream().anyMatch(Employee.ageGreaterThan70); 将谓词逻辑换成lambda表达式也可以,代码如下: