- 博客(16)
- 收藏
- 关注
原创 逆向工程Python爬虫——国税局发票查验平台
前言这是一篇含金量很高的干货文章,笔者将手把手带领各位一步一步地实现爬取国家税务总局全国增值税发票查验平台(以下简称“查验平台”)。这个想法诞生在19年初,当时在做一款通过扫描二维码就可以查验发票的小程序。当时由于笔者学艺尚浅,没办法模拟请求爬取查验平台,所以最终采用的技术方案是通过web自动化测试工具selenium控制浏览器去模拟查验步骤,即使这样,开发过程也是困难重重,不过最后笔者和伙...
2019-08-31 15:44:33
16780
8
原创 学习笔记——优先队列和堆排序
优先队列优先队列是一种特殊的数据结构,它支持两种重要的操作:删除最大元素和插入元素。通过插入一系列元素然后一个一个删除,我们可以通过优先队列实现排序算法。APIAPI名称说明Insert(int)插入一个元素Max() int返回最大的元素DelMax() int弹出最大元素IsEmpty() bool返回队列是否为空Size() int...
2019-08-28 15:44:43
208
原创 洗牌算法
算法介绍使用尽可能小的时间和空间,对一个数组进行随机乱序的操作。实现思路为了尽可能的节省内存,我选择在数组原地进行乱序随机的实现可以用时间作为种子生成随机数具体的实现思路很简单:首先在数组末尾设置一个指针hi,然后在0到hi之间随机一个索引,然后将这个索引指向的元素和hi交换,然后hi左移,往复上述操作,最终可以将数组完全打乱顺序。代码实现package shuffleim...
2019-08-28 15:44:09
255
原创 学习笔记——快速排序
算法介绍快速排序可能是应用最广泛的排序算法,它流行的原因是它实现简单、适用于各种不同的输入数据且在一般应用中比其他排序算法都要快很多。快速排序是原地排序(只需要一个很小的栈)排序长度为N的数组所需的时间和NlgN成正比快速排序的内循环比大多数排序算法都要短小,这意味这它会更快快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立地排序。快速排序和归并排序是互补的:归并...
2019-08-28 15:43:41
593
原创 学习笔记——归并排序
算法介绍归并即将两个有序的数组归并成一个更大的有序数组。归并排序要将一个数组排序,可以先(递归)将它分成两半分别排序,然后将结果归并起来。简单归并排序创建一个适当大小的数组,然后将两个输入数组中的元素一个一个放入这个数组中。这种算法很容易实现,但是当数组比较大时,需要进行多次归并,每次归并都需要创建一个新的数组来储存结果,消耗的空间会非常大。原地归并仅靠在数组中移动元素,不使用...
2019-08-28 15:42:54
218
原创 学习笔记——初级排序算法
选择排序首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置。如此往复,直到将整个数组排序。这种方法叫做选择排序,因为它在不断地选择剩余元素之中的最小者。代码实现package selectionfunc Sort(a []int) { n := len(...
2019-08-26 15:36:28
144
原创 学习笔记——union-find算法
问题介绍union-find算法即连通性算法解决的是一个在很多领域广泛应用的问题,它被用来计算网络中各个触点之间的连通性。问题如下:问题的输入是一列整数对,其中每个整数都表示一个某种类型的对象,一对整数pq可以被理解为“p和q是相连的”。我们假设“相连”是一种等价关系,这也就意味着它具有:自反性:p和p是相连的;对称性:如果p和q是相连的,那么q和p也是相连的;传递性:如果p和q是相...
2019-08-26 15:31:13
242
原创 Golang简单记录程序运行时间
目标实现一个类,初始化后可以用它创建计时器,然后可以设置多个记录点,此过程可以类比短跑比赛的秒表用法,开始计时之后裁判每按动一次秒表就会记录下一组数据,最后可以查看全部选手的成绩。其中,每个计时器在创建时应被赋予一个字符串当作标示(名字),每个记录点也可以设置名字,计时器不能重名,但是记录点可以。有一个函数可以格式化输出单个计时器的全部记录点,也有函数可以输出全部计时器的全部记录点。本项目...
2019-08-26 15:30:32
2054
原创 Golang背包和迭代器的实现
数据结构和几个的基本APIpackage Bagtype Bag struct { first *node n int}type node struct { item interface{} next *node}func NewBag() Bag { return Bag{}}func (b Bag) IsEmpty() bool { return b...
2019-08-26 15:28:34
1417
原创 Golang实现先进先出队列
package Queuetype Queue struct { first *node last *node n int}type node struct { item interface{} next *node}func NewQueue() Queue { return Queue{}}func (q Queue) IsEmpty() bool ...
2019-08-26 15:28:03
1987
原创 Golang实现下压栈
一、切片实现下压栈1.数据类型type Stack struct { stack []interface{}}以传统的面向对象思想为基本定义一个新的数据类型Stack,其中只有一个私有属性stack,它是一个接受任意类型数据的切片。go语言的接口类型使用起来很方便。2.构造函数func NewStack() Stack { ...
2019-08-26 15:27:30
245
原创 在Mac OSX上安装ChromeDriver
ChromeDriver是自动化测试、爬虫的利器,在Mac上安装方法如下:查看Chrome版本点击设置然后点击左侧栏的关于Chrome这里就显示了你Chrome的版本下载对应版本的驱动驱动下载选择对应的的版本号,然后下载mac版本的压缩包并解压配置环境变量推荐直接打开终端输入命令sudo mv ~/Downloads/chromedriver /usr/bin有可能...
2019-08-26 15:26:41
583
原创 Linux中安装Oracle client
Linux中安装Oracle client推荐查看官方文档1、注册并登陆Oracle必须登陆才能下载2、下载最新版本的zip压缩文件instantclient-basic-linux.x64-19.3.0.0.0dbru.zip3、准备安装创建如下目录/opt/oracle将下载好的zip解压到其中,或者通过ftp传过去 cd /opt/oracle unzip i...
2019-08-26 15:26:05
763
原创 MongoDB带身份认证的副本集数据库搭建
MongoDB带身份认证的主从数据库搭建服务器为Ubuntu18.041、安装数据库sudo apt-get updatesudo apt-get install mongodb2、编写数据库配置文件# mongod.conf# 数据存放地址storage: dbPath: <你的数据存放目录> journal: enabled: true# ...
2019-08-26 15:25:22
147
原创 在Ubuntu16.04搭建轻量级git服务器Gogs
1、更新源$ apt-get update2、安装mysql和git$ apt-get install mysql-server git安装过程中要输入数据库密码3、下载Gogs并解压于家目录此处建议先用梯子去Gogs官方下载合适的版本,然后用ftp上传服务器。4、初始化并配置数据库$ sudo mysql -u root -p < gogs/scripts/mysql...
2019-08-26 15:24:11
178
原创 python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)
python后端的支付宝小程序用户认证问题(alipay-sdk-python、pycrypto无法安装)写在前面事先说明,本人不是大佬,我只是在不断探索的途中找到了解决这个问题的方法,之前在网上搜索的时候没有看到相关文章,所以就来简单讲一下。正文借着蚂蚁金服小程序大赛开通了支付宝小程序个人开发者,尝试将一个微信小程序的项目移植到支付宝上,支付宝对于用户唯一id的获取比微信要复杂很多,微信...
2019-02-04 18:34:58
3385
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人