TIOBE 编程语言排名前20
随着时代的发展,编程语言日益丰富。诚然,熟练掌握多门编程语言是很多开发者梦寐以求的事,不过人的精力有限,要有选择性的学习。最好是能够结合自己的工作或者爱好有针对性的训练和学习。语言只是工具,但是这些工具的应用场景不尽相同。下图为TIOBE 2019年9月统计的编程语言排名
今天是10月24日,祝所有程序员节日快乐。今天打算写个爬虫抓取3DMGAME论坛美女cosplay壁纸。
论坛首页网址为https://www.3dmgame.com/tu_53_1/
我们点击其中一个图集,然后网页跳转,看下源码
1 | <div class="dg-wrapper"> |
网址是静态的,我们直接提取其中的图片链接再下载即可。
抓取网页采用的是python的requests库,直接发送http请求即可。收到回包后,通过BeautifulSoup提炼其中图片地址再次下载即可。
另外我们的界面用的是python自带的Tinker编写的。
反射其实就是通过变量动态获取其值和类型的一种技术,有些语言是支持反射的比如python, golang,有些是不支持反射的比如C++
前文我们分析过interface的结构,无论空接口还是有方法的接口,其内部都包含type和value两个类型,type指向了变量实际的类型
value指向了变量实际的值。而反射就是获取这两个类型的数据。
golang总类型分为包括 static type和concrete type. 简单来说 static type是你在编码是看见的类型(如int、string),
concrete type是runtime系统看见的类型
反射只能作用于interface{}类型,interface{}类型时concrete类型
下面介绍golang反射的基本用法
1 | var num float64 = 13.14 |
golang 提供了反射功能的包reflect, reflect中ValueOf能够将变量转化为reflect.Value类型,reflect.TypeOf可以将变量
转化为reflect.Type类型。
golang 为什么要创造interface这种机制呢?我个人认为最主要的就是做约束,定义一种规范,大家可以按照同一种规范实现各自的功能,从而实现多态。
同时当interface做函数形参,可以很好地限制传入参数,并且根据不同的实参调用达到多态的效果。多态的意思就是多种多样的功能,比如我们定义了一
个接口
1 | type IOInter interface{ |
定义了一个IOInter的接口,只要别人实现了write和read方法,都可以转化为这个接口。至于具体怎么读,读什么,网络IO还是文件IO取决于具体的实现,
这就形成了多样化的功能,从而实现多态。同时IOInter做函数的形参,
1 | func WriteFunc(io IOInter){ |
golang 中接口是常用的数据结构,接口可以实现like的功能。什么叫like呢?
比如麻雀会飞,老鹰会飞,他们都是鸟,鸟有翅膀可以飞。飞机也可以飞,
飞机就是像鸟一样,like bird, 所以我们可以说飞机,气球,苍蝇都像鸟一样可以飞翔。
但他们不是鸟,那么对比继承的关系,老鹰继承自鸟类,它也会飞,但他是鸟。
先看一个接口定义
1 | type Bird interface { |
定义了一个Bird类型的interface, 内部生命了一个Fly方法,参数为空,返回值为string。
接口声明方法和struct不同,接口的方法写在interface中,并且不能包含func和具体实现。
另外interface内部不能声明成员变量。
下面去实现蝴蝶类和飞机类,实现like-bird的功能。像鸟一样飞。
下载etcd release版本:https://github.com/coreos/etcd/releases/
我的是windows版本,下载win64的就行了,下载后进入文件夹,建立几个配置文件启动就行了,可以写yml文件,我是windows的就做成了bat命令。
一般是一个节点对应一个配置,一个节点的配置如下
yml文件版本
1 | name: etcd-1 |