Python+PyInstaller+Cython打包exe文件
近期写了一个Python程序,但是不想把源码公开,于是在网上查询相关资料,发现可以通过生成pyd文件,最后打包成exe执行程序的方式,尽可能地防止反编译。
一. 简介
本文章内容适合windows开发环境,简单介绍一下接下来会涉及到的东西。
PyInstaller: 是一款用于将pyhon程序打包成exe文件的工具。
Cython:是用Python实现的一种语言,可以用来写Python扩展,用它写出来的库都可以通过import来载入,性能上比Python的快。
pyd文件:我们都知道,.py是编写好的源代码,而.pyc是编译好的字节码,.pyd则是一种python动态模块,实质上是一种dll文件。
二. 安装PyInstaller和Cython
我们可以通过pip来安装。
安装PyInstaller:pip install pyinstaller
安装Cython:pip install Cyphton
然后记得配置环境变量,确保命令行能执行pip、pyinstaller、cython命令。
三. 开始打包
假设我们已经写好了一个python文件,名为course.py,接下来 ...
Java+Selenium实现后台截图网页,可运行在树莓派上
前言:最近折腾了一个QQ机器人,突然有个灵感。当用户发送一个网页链接时,我想使用Java对网页进行截图,然后将截图文件发回到QQ上,感觉这个功能很酷炫,于是昨天(2020-10-29)研究了一晚上,下面对截图功能这个部分进行总结。
一. 概述
首先我在网上查询了相关资料(并不多),最常见的两种方案:
使用 Java 自带的 Robot 类,对电脑屏幕进行截图,不建议使用。
使用 Selenium 工具,对游览器进行截图。
由于最后想要运行在树莓派上(ARM 32位),遇到了不少问题。
受限于树莓派zero的性能,生成一张截图可能要30s左右。
二. 准备与安装
方案一:使用Java自带Robot类
只需要 JDK1.6 及以上版本即可。
方案二:使用Selenium
第一步:
安装 chrome 游览器:
123# Linux 上建议使用chromiumsudo apt install chromium-browser# Win和Mac可直接在官网下载
在 chrome 游览器中,或者命令行执行 chromium-browser --version 查看版本号
并在下面的 ...
Spring中@Autowired注入static静态变量问题
当静态方法或变量需要依赖被容器管理的类时,我们该如何去解决?为什么不推荐使用这种方法?
Ubuntu下的GCC初识与Makefile编写
前言:在嵌入式课程中会学到使用Linux下的GCC来编译C语言的方法,本文基于 Ubuntu 18.04 展示如何使用GCC以及编写基础Makefile文件。
一. 安装准备
首先打开命令行,使用sudo权限身份
第一步:更新包列表
1sudo apt update
第二步:安装 build-essential 软件包(包括了gcc / g++ / make)
1sudo apt install build-essential
第三步:查看是否安装完成
1gcc --version
二. 使用GCC编译C语言
例如,我先用vim编写一个 test.c 的c语言程序,然后可以使用下列命令。
1. 一步到位的编译
1234# 编译gcc test.c -o test# 执行./test
上面的编译命令中,其实包含了四个阶段:预编译、编译、汇编、连接。
2.1 预编译
1gcc -E test.c -o test.i
2.2 编译
12# 编译为汇编代码gcc -S test.i -o test.s
2.3 汇编
1gcc -c test.s -o test.o
2.4 连接
12# 负责将 ...
代码的艺术与规范,写代码的人都应该看看!
前言:本篇章内容是对书籍《代码整洁之道》的整理与总结,便于我们写代码时随时将规范牢记心中。千万别说下次一定,因为稍后等于不 (Later equals never)。
同时,我会对其中一些内容做一些修改和删减,如果表述或思想有误,欢迎在博客下方留言指出。
一. 整洁的代码
为什么要写整洁且规范的代码?对于一门语言或框架的初学者来说,写的模块并不复杂,代码之间耦合度并不高,因此并不重视代码规范。
但是对于一个要逐渐更新迭代的项目来说,不规范的代码是令人绝望的。当你后期想要维护代码时,你会有点无从下手,甚至一度想要 重构 这个项目,那么为何当初不多花点时间在代码整洁这件事情上?
建议大家都去看看这本书,它在多个方面阐述了如何写整洁的代码,其代码示例基于Java。如果你学习的语言不是Java,也应该去看看或游览完本篇博客,因为整洁代码的思想是通用的。
最后我想说:写代码是一门艺术,当你回过头来看当初写的整洁代码,沁人心脾。
二. 命名规范
2.1 名副其实
选好名字,最好让人一看到名字就懂是什么意思,如果发现更好的命名要及时替换旧的
坏代码
1int d; // 消逝的时间
好代码
...
使用frp进行内网穿透,将本地计算机端口映射到公网!
前言:最近要上信息检索课(其实就是Python入门),老师要求自带笔记本使用 Jupyter Notebook 来进行代码练习。想到这游戏本又大又重续航差,所以我决定使用 内网穿透 的技术,将运行在本机的服务端口映射到公网上,然后在课上使用 iPad+妙控键盘 就能轻松完成代码编写!(为啥不直接把 Jupyter Notebook 装在服务器上?因为懒!)
一. 介绍
使用内网穿透,能干啥?
举个例子,我写了个SpringBoot应用并运行在了8080端口上,此时我可以在本机通过 localhost:8080 端口访问。那么我想在其他电脑上访问呢?只要把这个8080端口映射到公网上,我们就可以通过公网IP+端口号的形式在任意一台联网的计算机访问了。
专业解释可以百度 / Google 一下。
二. 准备
我们将会使用 frp 作为内网穿透的工具,首先你得具备:本地计算机 + 云服务器。
frp工具地址:https://github.com/fatedier/frp/releases
在本地计算机和云服务器上下载好frp工具,注意版本号要一致!
Github点击下载:
或者使用命令 ...
RabbitMQ-消息中间件实战
RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。
Docker入门,用以快速测试及部署代码!
它可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。学习这门技术将解决传统开发到部署、运维的难点,适合运维及后端开发人员学习。
Asmtools工具修改Java字节码
这个工具可以用来修改编译好的class文件。通过一个小案例,我们可以掌握该工具的使用及boolean类型在虚拟机中的表示方法。
ElasticSearch入门
一. 概述与快速安装
ElasticSearch是一个开源的高拓展的分布式全文检索引擎,拓展性好,基于Lucene进行封装和实现。
ELK技术:ElasticSearch+Logstash+Kibana,数据清洗、过滤、可视化的大数据技术。
ElasticSearch(ES)与Solr比较:
对已有数据进行搜索,solr更快
当实时建立索引,Solr会产生io阻塞,性能较差,ES更快
随着数据量增加,Solr效率会降低,ES更快
下载与安装 学习版本7.x
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D
可视化ES-head插件:https://github.com/mobz/elasticsearch-head
ElasticSea ...