继在中国 Google 开发者大会上发布 Flutter 1.9 之后,今天 Dart 2.5 SDK 稳定版也正式到来,其中包括两个意义重大的全新功能技术预览:

  • ML Complete,由机器学习 (ML) 驱动的代码补全功能
  • dart:ffi 外部函数接口,用来直接从 Dart 调用 C 语言代码

另外,Dart 2.5 还增强了对常量表达式的支持。

37176-gfnihh1e23m.png

这个版本是我们向着针对客户端优化的最佳开发语言愿景迈出的又一步,让开发者可以在任何平台创建高效运行的应用。ML Complete 是我们现有生产力工具组件 (热重载、可自定义静态分析和 Dart DevTools 等) 的强大补充,第二个预览功能 dart:ffi 则使您能够在运行 Dart 代码的许多操作系统上调用现有的原生 API,以及用 C 编写的现有跨平台原生代码库。

我们热切地想要创建最佳的客户端开发语言。令人振奋的是,新的 IEEE Spectrum 2019 最佳开发语言评级已于近期出炉,而 Dart 已经跻身其中并位列第 16 名。在 "热门" 条目下,Dart 则排名第 10,在只考虑移动端开发语言时则排名第 6 (位于 Java、C、C++、C# 和 Swift 之后)。

IEEE Spectrum 2019 最佳开发语言

ML Complete: 基于机器学习的代码补全

类型化编程语言的核心优势之一,就是在类型中附带的信息使得 IDE / 编辑器能够在键入代码时提供强大的代码补全功能,从而帮助开发者提高效率。通过代码补全,开发者只需要输入代码的开头部分即可从提供的选项中进行选择,从而避免拼写错误,也便于探索各种 API。

但随着 API 数量的增长,探索 API 也变得愈发困难,因为补全功能提供的列表太长,开发者无法按照字母顺序去逐一浏览。在过去的一年里,我们一直在努力让机器学习来解决这个问题。简单地讲,我们通过分析 GitHub 上大量开源的 Dart 代码来训练一个模型,用以分析特定上下文时不同代码成员的出现模式。这个基于 TensorFlow Lite 打造的模型在被训练成型后,可以在开发者编写代码时预测接下来需要用到的代码内容。这个新功能我们称之为 ML Complete。

ML Complete 今天推出预览版。它内置于 Dart 分析器中,因此可用于所有支持 Dart 的编辑器,包括 Android Studio、IntelliJ 和 VS Code。有关如何启用此预览功能,以及如何提供反馈和报告问题,请参阅我们的反馈 wiki 页。

1.修改apk扩展名 .zip
2.解压,找到META-INF目录
3.java环境下执行如下命令:

命令:keytool -printcert -file xxx/META-INF/CERT.RSA //xxx文件所在路径
例如:keytool -printcert -file F:\Test\META-INF/CERT.RSA

41341-3oqr4f1p3o9.png

如果证书指纹跟官方一致,则说明apk没有经过二次封装,安全可用。

各文件介绍

(1)MANIFEST.MF:这是摘要文件。程序遍历Apk包中的所有文件(entry),对非文件夹非签名文件的文件,逐个用SHA1生成摘要信息,再用Base64进行编码。如果你改变了apk包中的文件,那么在apk安装校验时,改变后的文件摘要信息与MANIFEST.MF的检验信息不同,于是程序就不能成功安装。

说明:这是Android签名验证过程的第一步,保证每个APK包内的每个文件与MANIFEST.MF中的摘要值一一对应,修改某个文件内容,必须修改MANFEST.MF文件中的摘要值,使他们对应起来。
(2)CERT.SF:这是对摘要的签名文件。对前一步生成的MANIFEST.MF,对MANIFEST.MF中的每一条内容分别进行SHA1计算,然后再用Base64编码转换。此外,把MANIFEST.MF的内容也进行SHA1计算,并且计算BASE64编码。将上述内容写入CERT.SF文件中。

说明:这是签名认证过程的第二步,这一步做的是多第一步得到的签名文件的摘要,比如第一步中对文件和MANIFEST.MF摘要都改了,这一步中MANIFEST.MF的摘要值也要修改,否则就对应不起来。
所以,前面这两步,做的都是摘要,是为第三步骤做准备的,第三步骤才是最重要的。
(3)CERT.RSA文件中保存了公钥、所采用的加密算法等信息,此外重要的,还包括对CERT.SF中的内容的用私钥进行加密之后的值。
说明:在这一步,即使开发者修改了程序内容,并生成了新的摘要文件,MANIFEST.MF能与内容对应起来,CERT.SF也能与内容对应起来,但是攻击者没有开发者的私钥,所以不能生成正确的签名文件(CERT.RSA)。系统在对程序进行验证的时候,用开发者公钥对不正确的签名文件进行解密,得到的结果对应不起来,所以不能通过检验,不能成功安装文件。
结论:从上面的总结可以看出,META-INFO里面的说那些文件环环相扣,从而保证Android程序的安全性。(只是防止开发者的程序不被攻击者修改,如果开发者的公私钥对对攻击者得到或者开发者开发出攻击程序,Android系统都无法检测出来。)

将py文件打包成exe的方法

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyinstaller    --会自动下载依赖的包
pyinstaller -F MyMain.py

-F是生成单个文件,生成的目录在 dist 下。

双击exe文件,一闪而退的解决办法:

通过cmd命令行,定位到exe所在目录,运行exe即可,如下图:

24791-enf5d3wkgor.png

windows 环境下exe文件,安装成windows系统服务,设置自启动...待续

首先引入解析类库,
from urllib.parse import urlparse,parse_qs,parse_qsl

  • 返回 dictionary containing lists as values.
    d = parse_qs(environ['QUERY_STRING']) # dict格式
  • 返回数组格式
    dd = parse_qsl(environ['QUERY_STRING'])
    如: [('name', 'Rajeev Singh'), ('phone', '+919999999999'), ('phone', '+628888888888')]
  • 直接返回?后面的所有字符串及其它参数
    queryString = environ['QUERY_STRING']
免责声明
本博客部分内容来自于互联网,不代表作者的观点和立场,如若侵犯到您的权益,请联系[email protected]。我们会在24小时内进行删除。