自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yunlongl的博客

阳光总在风雨后

  • 博客(48)
  • 收藏
  • 关注

原创 golang中slice扩容机制

 golang中的slice属性中,包含容量和长度。长度即slice中的元素个数。容量为slice对应底层数组的长度。往往我们在使用切片时,有扩容的需求,那么,slice是底层扩容是如何的呢? 在源码/go/src/runtime/slice.go中我们可以看到:// growslice handles slice growth during append.// It is passed the slice element type, the old slice, and the desired ne

2021-04-22 08:53:51 1048

原创 golang分配make&new

  golang有两个分配原语,内置函数nake和new。但他们做不同的事情,并适用不同的类型。New  new是一个内存分配的内置函数,他不会初始化内存,只会将其清零。也就是说,new(T)会为T类型分配被置零的存储,并返回它的地址,即*T。在go的术语中,它返回一个新分配的类型为T,值为零的指针。Make  内建函数make(T, args)与new(T)的用途是不一样的。它用来创建slice,map,channel,并返回类型的初始化(不是置零)的值T(不是*T),区别的原因是,这三种类型在幕

2021-04-15 10:33:47 248

原创 golang 编译不同平台可执行文件

1、Mac下编译Linux, Windows平台的64位可执行程序:$ CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build test.go$ CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build test.go2、Linux下编译Mac, Windows平台的64位可执行程序:$ CGO_EN...

2020-01-15 13:26:22 1311

原创 win10 mysql导出csv

win10导出csv有两种方式,第一种是借助工具,Navicat for Mysql是一个非常好用的mysql可视化工具,可以导出多种格式的数据,但是也有其局限。第二种是原始SQL语句导出。Navicat For Mysql安装软件,这里有绿色免费版,非常好用,链接:https://pan.baidu.com/s/1HZNzq_16M5yrq9hAMfNOmA 提取码:848h 。打开软...

2019-12-17 11:38:16 426

原创 golang switch

1,在golang中,switch默认会包含break。num := 10switch num {case 1: fmt.Println("输入的是1")case 2: fmt.Println("输入的是2")case 3: fmt.Printf("输入的是%d\n", num)case 4: fmt.Println("输入的是4")default: fmt.Print...

2019-11-11 14:45:52 146

原创 golang 枚举 iota

1,iota 常量自动生成器2,每隔一行,自动加13,iota给常量赋值const ( a = iota b = iota c = iota)fmt.Println(a, b, c) // 0 1 24,iota遇到const,重置为0const d = iotafmt.Println(d) // 05,iota可以只写一个const ( a1 =...

2019-11-11 13:51:56 679

原创 golang time常用方法

说明 在golang中,时间转换都会通过Time类型做一系列转换。主要包含,时间戳和时间字符串,时间字符串转换成另外的格式。总之所有的转换都是通过Time类型做中间转换。参考文档:https://golang.org/pkg/time/操作1,获取当前时间t1 := time.Now() // 返回的是时间Time类型fmt.Println(t1, refl...

2019-09-30 21:05:00 1270

原创 golang 指针

说明1,go语言中的指针不能进行偏移和运算2,一个指针变量,可以指向任何一个值的内存地址,它指向那个值的内存地址,在 32 位机器上占用 4 个字节,在 64 位机器上占用 8 个字节,并且与它所指向的值的大小无关。3,当一个指针被定义后没有分配到任何变量时,它的值为 nil。一个指针变量通常缩写为 ptr。4,在go语言中,&:取地址,*:根据地址取值。5,每个变量在...

2019-09-23 14:22:02 918

原创 Docker 加速器

sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<-'EOF'{ "registry-mirrors": ["https://ue0yw56h.mirror.aliyuncs.com"]}EOFsudo systemctl daemon-reloadsudo systemctl restart do...

2019-07-29 15:31:36 255

原创 Redis原理

目录redis是什么数据类型RedisObject五种常见数据结构stringhashlistsetsorted setRedis优化Redis的持久化机制定时快照方式(snapshot)基于语句追加方式(AOF)虚拟内存方式diskstore方式Redis持久化磁盘IO方式及其带来的问题Redis的主从简介 状态机流程过...

2019-07-12 13:37:11 2150

原创 golang中的slice

概念 Slice即切片,它和数组(array)很类似,可以用下标的方式进行访问。如果越界,就会产生 panic。但是它比数组更灵活,可以自动地进行扩容。1,slice源码// runtime/slice.gotype slice struct { array unsafe.Pointer // 元素指针 len int // 长度 cap i...

2019-07-05 10:03:12 259

原创 领英模拟登陆

说明上一篇文章已经爬虫目的, 脉脉模拟登陆。领英模拟登陆难度略大于脉脉操作1、登陆接口其中session_key是用户名,session_password是密码。关键点1、loginCsrfParam2、cookie3、csrf_token寻找参数1、loginCsrfParam这个参数是你访问领英首页就会响应的一个结果,可以通过xpath定位...

2019-02-28 11:13:32 2755 3

原创 脉脉模拟登陆

说明最近弄得最热的就是什么互联网寒冬,裁员等关键字,于是脉脉,领英的平台的热度就上去了,我就做了脉脉,领英的爬虫。操作脉脉模拟登陆难度不大,只是需要验证码处理我用的云打码,数字的加减法 1、通过抓包分析,登陆的地址为 https://acc.maimai.cn/login ,一个post请求。其中包含用户名,密码,验证码。其中验证码是有时候需要,有时候不需要。data...

2019-02-26 14:01:39 1460

原创 起点网 字体反爬

起点女生网爬虫,主要反爬措施,字体混淆,16进制转换。目标网站 https://www.qidian.com/mm/all本爬取该网站40W+小说信息(不包含小说详细内容),存进mongodb操作1、主要对如下字段进行解释2、在源码中找到如下字段的显示3、面对这个结果,我们第一反应就是字体混淆,然后直接在源码中搜索woff,然后把该链接的文件下载到本地,然后利用TT...

2018-11-16 17:02:02 967

原创 网易有道翻译接口破解

说明该网站是有反爬措施的,主要的措施是JS加密参数,随机COOKIE参数目标网站 http://fanyi.youdao.com/目的:我们希望获取翻译接口,可以使用代码调用其接口来做翻译。操作1、打开浏览器进入网站,随便输入一个需要翻译的内容这是主要的几个参数,其他的参数包含了翻译的规格,以及一些无关的参数。。其中  i 是我们需要翻译的内容salt 很明...

2018-11-14 16:19:51 2650 1

原创 Appium爬虫(hello world)

前提条件环境准备妥当,环境参考 https://blog.csdn.net/yunlongl/article/details/83898507操作步骤本篇先使用JAVA,python后面更新。打开intelliJ IDEA,创建一个maven项目在pom.xml中添加如下信息&lt;dependencies&gt; &lt;dependency&gt; ...

2018-11-09 16:55:40 893

原创 Appium爬虫环境搭建

环境说明1、所需软件appium,java,android-sdk2、安装appium下载地址:https://github.com/appium/appium-desktop/releases/tag/v1.8.2根据自己电脑规格下载对应的版本安装过程中没有什么问题,下一步下一步就可以完成2、JDK下载,下载java8jdk下载地址: https://www.or...

2018-11-09 16:21:22 941

原创 spark搭建(一)

说明先把环境直接展示出来,后面再详细记录里面的内容。本次搭建的环境是真正的分布式环境,由于机器比较少,就直接用docker容器作为介质了。所需环境1、ubuntu任意版本都是可以的2、安装docker操作1、集群的架构2、软件下载地址配置文件: https://download.csdn.net/download/yunlongl/10718544软件下...

2018-10-13 20:09:23 1635

原创 ubuntu16.04 安装mongob

说明本文是参考别人的操作文档记录,这也是自己安装的流程操作1、导入包管理系统使用的公钥sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD52、为MongoDB创建一个列表文件echo "deb [ arch=am...

2018-10-11 11:25:58 168

原创 scp基础命令

简介secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。用法1、将本地文件上传到远程文件夹下面scp local_file remote_username@remote_ip:remote_folder 在这个命令里面remote_username@remote_ip可以替换为remote_ip2、将本地文件上传到远程文件,只...

2018-10-11 10:19:43 932

原创 python 计算无重复字符串

代码实现def no_repeat_str(str): # 计算出字符串的总长度,即循环的次数 length = len(str) # 存放无重复字串,把所有可能的无重复的字串都放在这里面 result = [] # 遍历每一个字符 for i in range(length): # 这个用来保存每一个阶段的无重复的字符串 ...

2018-09-05 11:11:55 1274

原创 python 图 狄克斯特拉算法

说明迪克斯特拉算法,就是在图中,将某一点到达图中任意顶点的权值改变,变成最小的完整代码# coding=utf8a, b, c, d, e, f = range(6)G = { a: {b: 2, c: 1, d: 4, f: 10}, # a b: {a: 2, c: 4, e: 3}, # b c: {a: 1, b: 4, d:...

2018-09-05 10:03:13 367

原创 python 图 最小生成树

说明没时间做解释了,下次写完整代码# coding=utf8G = [ {5: 10, 1: 28}, # 0 {0: 28, 6: 14, 2: 16}, # 1 {1: 16, 3: 12}, # 2 {2: 12, 4: 22, 6: 18}, # 3 {3: 22, 5: 25, 6: 24}, ...

2018-09-04 19:07:18 2431

原创 python 图 深度广度优先

# coding=utf8from collections import deque# 深度优先遍历G = [ {1, 2, 3}, # 0 {0, 4, 6}, # 1 {0, 3}, # 2 {0, 2, 4}, # 3 {1, 3, 5, 6}, # 4 {4, 7}, # 5...

2018-09-04 17:29:42 983

原创 python 图创建

说明创建图有3种方式1,邻接矩阵2,邻接集合3,邻接字典代码实现# coding=utf8# 对5个顶点进行排序a, b, c, d, e = range(5)# 顶点个数N = 5G = [[0] * N for _ in xrange(N)]# 邻接矩阵# 存储数据有大量空的数据,全是0的情况,在查找某一个顶点的邻接顶点就会遍历所有的顶点def ...

2018-09-04 17:19:22 5115

原创 python 二叉树拷贝

说明二叉树拷贝,就是指将一颗二叉树,复制一份代码如下:# 对二叉树进行拷贝# 先对分别对左右子树进行拷贝# 再把其作为新的树的左右子树def copy_tree(node): # 如果是空树,仍然返回空树 if node is None: return None # 分别把所有的节点递归添加到这个树中 lt = copy_tre...

2018-09-04 17:13:41 1425

原创 python 二叉树的深度

说明二叉树的深度,就是二叉树的层数,在层序遍历中,总共有多少层,二叉树的深度就是多少代码# 计算二叉树的深度def depth(node): # 二叉树为空树,层数就是0 if node is None: return 0 # 采用分而治之的思想来做,即把一棵树分成左右两边来分别计算其深度 # 左子树的深度 dl = dept...

2018-09-04 17:10:25 2656

原创 JAVA fastjson

说明之前一直使用python做爬虫开发,现在换了公司,这边既要用到python,还要使用java做爬虫开发。java在做爬虫开发的时候,主要是Jsoup来解析,但是往往会遇到很多的json格式的数据,此时jsoup就显得乏力。我也是在跌跌撞撞边学习边开发,遇到问题就百度,也碰到过好几种解析json的包,最终,能够掌握的也就只有fastjson,本篇记录自己学习fastjson的方法。操作...

2018-08-31 15:43:29 2252 3

原创 爬取实习僧APP存进mongodb

说明采用的工具有1、fiddler抓包工具2、安卓手机由于最近找实习工作基本用的就是实习僧这个软件,于是闲来没事做,就爬了一下手机APP的数据,但是仅仅爬取的是爬虫,和python相关的实习岗位。由于博客上第一次记录手机app爬虫,于是就详细记录一下过程。操作步骤设置浏览器代理 1、打开fiddler2、Tools-&gt;options3、Eepo...

2018-08-08 22:09:38 661 2

原创 搜狗微信添加搜索工具爬虫

前言之前也有做过搜狗微信的爬虫,但是,在加入搜索工具的时候需要加入上一步的cookie,但是我们每次的cookie会有时效性。而且经常被封锁,这是一个很让人头疼的事情。就算使用了scrapy中的cookiejar也同样表现出了不稳定。而且还需要维持一个cookie池,就在我写cookie池代码的时候发现了这样的一个事情。实际上我们在请求搜索工具的时候是需要上一步的链接的,表名我们这一步是从哪一...

2018-08-05 23:16:01 8164 4

原创 二叉树遍历

遍历方式1、NLR:前序(Preorder Traversal 亦称(先序遍历)) 访问根结点的操作发生在遍历其左右子树之前。2、LNR:中序遍历(Inorder Traversal)访问根结点的操作发生在遍历其左右子树之中(间)。3、 LRN:后序遍历(Postorder Traversal)访问根结点的操作发生在遍历其左右子树之后。4、层序遍历设二叉树的根节点所...

2018-08-05 22:23:50 415

原创 二叉树的创建(python)

 说明1、构造器,定义一个构造器,用来构造树。2、向树中添加数据。如图我们定义了这样一颗二叉树,我们用代码来创建它用代码实现,代码如下:#coding=utf-8class TreeNode(object): def __init__(self,data=None,left=None,right=None): self.data = data...

2018-08-04 13:41:08 16176 4

原创 计算二叉树的个数

说明给定二叉树的节点个数来计算能够构成多少种不同的二叉树。操作采用的是递归的思想来解决这类问题。1、因为采用递归的思想,我们的结束条件就是当节点个数为0.此时节点个数为0的情况,这时候构成的树的情况为空树,即二叉树的个数是1.2、因为是二叉树,我们只需要分为两边来计算。即满足这样的条件,从根节点下来,能够成左边的情况的个数乘以右边的个数的情况想乘,就得到此时这种情况的个数。例如...

2018-08-04 09:56:32 5778

原创 python 回文数

说明回文数,即一个数正着写和反着写的结果是一样的。例如:12345654321   True123456123456   False解题思路1、将输入的数字转换为字符串2、比较第一个和倒数第一个、第二个和倒数第二个.......是否相等完整代码如下# -*- coding: utf-8 -*-def isPalindrome( x): # 先将输入的in...

2018-07-29 18:14:07 2963

原创 teamviewer疑似商用

说明teamviewer封锁是针对疑似商用作出的一种查封手段。一般来说个人是免费使用的,但是使用过程过于频繁就会导致封锁。以下给出一种解决封锁的终极手段,因为我也试过很多次,但是都是没有效果的。受到爬虫被封锁的启示,针对此软件作出被封后的解决方案。解决方案1、卸载teaviewer2、删除文件【C:\Program Files (x86),找到teamviewer选项,全部删除...

2018-07-28 22:52:59 5445

原创 字符串列表元组字典的转换

说明这是我在爬虫中遇到的一个真实案例,这个爬虫是动态加载的。但是当我们拿到这个数据的时候,并不是很理想。其内容通过进一步解析之后是这样的。([{"id":"680501","title":"揪住疫苗不放,公益诉讼请不要辜负民众期待","linkurl":"http://m.mp.oeeee.com/a/BAAFRD00002018072592681.html","tim

2018-07-27 14:11:48 1099

原创 ubuntu 安装pip

说明记录自己今天面对ubuntu中python2中的python-pip问题。在我重装ubuntu系统时,遇到一个问题。按照时间顺序来写明遇到的问题过程。1、在python2环境下,输入pip -V输出结果Traceback (most recent call last): File "/usr/local/bin/pip", line 7, in &lt;modul...

2018-07-26 19:18:42 691

原创 python 时间格式解析

说明本文记录自己在爬虫过程中遇到的时间解析过程,因为有些网站显示的时间格式千奇百怪,但是我们存到数据库的格式却是唯一的。下面讲自己在某论坛网站上遇到的时间格式解析操作在下面的所有时间操作中,都是将时间转换成标准的格式  %Y-%m-%d %H:%M:%S 示例:2018-07-26 18:56:42在示例代码中会出现 s_time 这个字符串是我们提取出来的字符串,需要做处理的...

2018-07-26 19:10:26 3521

原创 爬虫之xpath表达式

说明总结自己在爬虫过程中遇到的xpath表达式用法在爬虫解析网页的时候,有多种方式可以可以提取网页元素。比如最基本的正则表达式、xpath、bs4、以及在scrapy中的css选择器。对于这些工具在爬虫的时候都遇到过,但是唯独喜欢用xpath,感觉提取很简介。同时也会掺杂一些正则表达式来做一些小的提取。在记录xpath用法时,这里没有实际网页操作,仅当记住这种语法就是了。操作语法...

2018-07-24 22:01:54 1980

原创 python快速排序

说明快速排序是一种常用的排序方式,其速度比选择排序快得多。它是采用分而治之(divide and conquer,D&amp;C)。是一种著名的递归式问题解决方案。解决思路1、选择一个基准值(可以是数组中的任意一个值)。2、将原始的数组分成两个:把大于基准值的值放在一个新的数组(greater)和把小于基准值的值放在一个新的数组(less)。3、然后再对greater和less...

2018-07-22 10:47:53 201

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除