自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(59)
  • 资源 (2)
  • 收藏
  • 关注

原创 以太坊如何部署智能合约

以太坊社区开发并开源了非常好用的在线 Solidity 集成开发环境Remix,可以方便的在 Remix 中编写、部署、测试智能合约,Remix 提供了强大的自动完成,语法高亮,实时编译检查错误等。打开remix,界面如下:在代码区输入一下合约代码:pragma solidity ^0.4.21;contract Phone { string public model;...

2018-07-27 10:15:42 12438 3

原创 go学习笔记 - 接口

接口是golang最重要的特性之一,在Go中,接口interface其实和其他语言的接口意思没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法。接⼝是一个或多个方法签名的集合,任何非接口类型只要拥有与之对应的全部方法实现 (包括相同的名称、参数列表以及返回值。),就表示它"实现" 了该接口,无需显式在该类型...

2018-07-25 09:23:18 205

原创 go爬虫设计(并发版)

 在单机版的基础上,将耗时最长,等待时间做多的进行并发 ,也就是Fetch模块Fetch的输出就是Parse的输入,也就是可以把Fetch和Parse合成一个模块 -- worker模块func ( ConcurrentEngine) Run(seeds ...Request){ var requests []Request for _, r := range seed...

2018-07-20 20:16:23 1648

原创 go网络编程基础

socketsocket原理Socket 原理Socket 连接,至少需要一对套接字,分为 clientSocket,serverSocket 连接分为3个步骤:(1) 服务器监听:服务器并不定位具体客户端的套接字,而是时刻处于监听状态; (2) 客户端请求:客户端的套接字要描述它要连接的服务器的套接字,提供地址和端口号,然后向服务器套接字提出连接请求; (3) 连接确认:当服...

2018-07-19 23:28:23 206

原创 go爬虫设计(单机版)

爬虫总体架构:  爬虫实现方案:   单机版 单机版架构主要模块有:处理引擎(Engine) 解析器(Parser) 下载器(Fetcher)流程:请求处理模型=请求URL + URL对应的Parse0: 先向引擎发起一个种子请求处理模型(URL+Parse) 1: 引擎将请求放入任务队列中 2: 引擎从任务队列中取出请求处...

2018-07-19 10:29:10 282

原创 Go中使用Channel等待所有协程结束

让main方法等待所有协程执行完毕再退出。可能一般思路是设置一个共有变量,然后通过修改这个变量的状态。这是通过共享变量来通信的方式,而go要做的是,通过通信来共享内存。1. 按顺序执行每次通信进行成对通信,当main向协程发送一个写channel时,同时也等待协程返回一个读channel。    这两个channel一定是成对的,所以构造一个结构体            ty...

2018-07-17 21:29:30 2678

原创 Go语言最主要的特性

自动垃圾回收更丰富的内置类型函数多返回值错误处理匿名函数和闭包类型和接口并发编程反射语言交互性更丰富的内置类型数组,字符串,字典(Map),数组切片(Slice)因为是语言内置特性,开发者根本不用费事去添加依赖的包,既可以少一些输入工作量,也 可以让代码看起来尽量简洁。函数多返回值目前的主流语言中除Python外基本都不支持函数的多返回值功能 Go语言革命性地在静态开发语言阵营中率先提供了多返回值...

2018-07-14 22:11:14 287

原创 go的错误处理机制

defergo语言是实用defer做资源处理的defer是在函数结束,return之前时被调用 先进后出,可见是栈的结构 参数在defer语句时计算 何时使用deferopen/closelock/unlockprintHeader/printFooterfunc calc(index string, a, b int) int { ret := a + b fmt.Printf("%s %d...

2018-07-12 23:16:20 478

原创 如何通过Remix发布以太坊智能合约

以太坊社区开发并开源了非常好用的在线 Solidity 集成开发环境Remix,可以方便的在 Remix 中编写、部署、测试智能合约,Remix 提供了强大的自动完成,语法高亮,实时编译检查错误等。打开remix,界面如下:在代码区输入一下合约代码:pragma solidity ^0.4.21;contract Phone { string public model; int...

2018-07-11 10:35:29 1683

原创 go反射机制

1. 反射定律反射可以将“接口类型变量”转换为“反射类型对象”。反射可以将“反射类型对象”转换为“接口类型变量”。如果要修改“反射类型对象”,其值必须是“可写的”。a. “接口类型变量”=>“反射类型对象”所谓的反射类型,就是reflect.Type和reflect.Value var a int = 30 v := reflect.ValueOf(a) //返回Value类型对象,值...

2018-07-07 23:24:35 1255

原创 go的可变参数

go语言的方法没用花哨的方法重载之类的,没有默认参数,没有可选参数,只有一个可变参数 func TestArgs(f int, arg ...interface{}){ fmt.Println(f, arg)}func main(){ nums := []int{1,2,3,4} nums2 := []interface{}{5,6,7,8} TestArgs(nums) ...

2018-07-05 23:19:33 1318

原创 go语言的类型定义方式

a. 使用var var c1 chan int fmt.Println(c1) // <nil> var c2 map[string]int fmt.Println(c2) // map[] c2[“a”] = 1 // error :panic: assignment to entry in nil map v...

2018-07-03 23:29:02 2666

原创 MAC环境变量

Mac系统的环境变量,加载顺序为: /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc规则:a ,b是系统级别的,系统启动就会加载,其余是用户接别的。c,d,e按照从前往后的顺序读取,如果c文件存在,则后面的几个文件就会被忽略不读了,以此类推。~/.ba

2018-05-02 16:25:18 145

原创 Python之IO编程

1.IO编程1.1 同步IO和异步IOIO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动。Input Stream就是数据从外面(磁盘、网络)流进内存,Output Stream就是数据从内存流到外面去。对于浏览网页来说,浏览器和新浪服务器之间至少需要建立两根水管,才可以既能发数据,又能收数据。由于CPU和内存的速度远远高于外设的速度,所以

2017-08-10 16:20:27 233

原创 python 面向对象编程

类与对象class Student(object): passstu = Students = Student()print (stu)print (Student)print (s)结果是:<class '__main__.Student'><class '__main__.Student'><__main__.Student object at 0x000002E28CE33E

2017-08-01 15:33:51 407

原创 递归与迭代

1. 递归1.11.2 递归形式1.2.1 无返回值样式1def st(n): if n <= 0: return #print (n) st(n-1) print (n)print (st(5))#----------12345None- 样式2def st(n): if n <= 0: return

2017-07-30 18:06:59 323

原创 Python 日志

1. logging levels官网: https://docs.python.org/3/tutorial/stdlib2.html#logging把print()替换为logging是第3种方式,和assert比,logging不会抛出错误,而且可以输出到文件: Level Numeric value 何时使用 CRITICAL 50 严重错误,表明软件已不能继续运行了。

2017-07-28 15:28:21 372

原创 Python之错误,调试和测试

1. 错误处理1.1 try …except…1.1.1 try …except…try: print ("try...") r = 10 / 0 print ("result:",r)except ZeroDivisionError as e: print ("except:",e)finally: print ("finally...")print (

2017-07-26 10:20:48 571

原创 Python之模块

1. 模块1.1 模块(Module)在Python中,一个.py文件就称之为一个模块(Module)。最大的好处是大大提高了代码的可维护性。 其次,编写代码不必从零开始。 使用模块还可以避免函数名和变量名冲突。1.2 包(Package)你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。请注意,每一个包目

2017-07-25 14:55:03 576

转载 完全理解PYTHON迭代对象、迭代器、生成器

本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网友指正。在了解Python的数据结构时,容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式

2017-07-25 14:21:10 244

原创 Python之函数式编程

1. 高阶函数1.1 高阶函数定义1.1.1 变量可以指向函数>>> f = abs>>> f<built-in function abs>>>> f(-10)10说明变量f现在已经指向了abs函数本身。直接调用abs()函数和调用变量f()完全相同。1.1.2 函数名也是变量那么函数名是什么呢?函数名其实就是指向函数的变量!对于abs()这个函数,完全可以把函数名abs看成变量,它指向一个

2017-07-25 08:32:43 250

原创 Python 函数

空函数如果想定义一个什么事也不做的空函数,可以用pass语句:def nop(): passpass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。pass还可以用在其他语句里,比如:if age >= 18: pass缺少了pass,代码运行就会有语法错误。返回多个值我们可以同时获得返回值:>

2017-07-20 14:14:19 201

原创 Python3数据类型

类型1. 整数2. 浮点数3. 字符串3.1 字符串的格式化使用 % 和占位符%d —- 整数 %f —- 浮点数 %s —- 字符串 %x —- 十六进制整数比如:>>> "name:%s , gender: %s, age: %s" % ("张三","man",20) 'name:张三 , gender: man, age: 20'

2017-07-19 15:00:30 609

原创 Python2与Python3的编码区别

1. str和bytes1.1 str是文本,bytes是字节文本是有编码的(UTF-8,GBK,GB2312等) 字节没有编码文本的编码指的是字符如何使用字节来表示组织方式,linux下默认都使用UTF-8 通过b前缀可以定义bytes2. Python2和Python3的编码2.1 Python2在python2 中是不区分bytes和str类型的,在python3中bytes和str中是区

2017-07-18 14:02:24 3347

原创 创建scrapy开发环境

创建scrapy开发环境本文基于Python的虚拟环境,创建scrapy开发环境。 Python虚拟环境可参考1. 安装插件常见三种方式在创建scrapy开发环境时,需要在虚拟环境中安装各种插件,通常安装方式有三种,有时候一种方式不行或者下载速度过慢,可以尝试另外一种:比如安装插件scrapy: 官网下载 pip install scrapy豆瓣源 pip install -i https

2017-07-13 10:42:06 1151

原创 Python虚拟环境的搭建

Python虚拟环境的搭建1. 安装环境1.1 安装virtualenvpip install virtualenv1.2 安装virtualenvwrapper-winVirtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做:将所有虚拟环境整合在一个目录下 管理(新增,删除,复制)虚拟环境 快速切换虚拟环境安装pip install virtual

2017-07-13 10:25:39 402

原创 linux 别名

如果命令或命令序列太长,或不符合用户的习惯,那么为它指定一个别名是不错的办法。         别名的文件在用户主目录下的.bash_profile文件              已经设置好的别名有:       如果想设置永久别名,修改这个文件即可

2014-12-02 10:31:32 555

原创 Linux内建命令和外部命令

文件位置不同       Bash是Linux系统中默认使用的Shell程序,文件位于/bin/bash内部命令:指的是集成于Shell解释器程序(如Bash)内部的一些特殊指令,也成为内建(Builtin)指令。内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shell解释器被运行,内部指令也就自动载入内存了,用户可以直接使用。内部命令无需从硬盘中重新读取文

2014-12-02 10:26:02 654

转载 tcp窗口滑动以及拥塞控制

转自:http://blog.chinaunix.net/uid-26275986-id-4109679.htmlTCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。一、滑动窗口协议     关于这部分自己不晓得怎么叙述才好,因为理解的部分更多,下面就用自己的理解来介绍下TCP的精髓:滑动窗口协议。 

2014-07-22 10:49:44 545

原创 TCP/IP(3.7)路由选择协议

有关路由选择协议的几个概念路由选择协议的核心就是路由算法如果路由算法从能否随网络的通信量和拓扑自适应的调整来划分,算法分为静态路由选择策略和动态路由选择策略。静态路由选择也叫着自适应路由选择,特点是简单和开销较小,但不能适应网络状态的变化,需要人工配置动态路由选择也叫着自适应路由选择,但是实现起来比较复杂,开销比较大,适合较为复杂的网络。 因特网实际采用的主

2014-07-22 10:27:41 1051

转载 TCP/IP(4.1)TCP三次握手和四次挥手

相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助.    而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。 因此在这里详细解释一下

2014-07-17 10:31:53 786

转载 TCP/IP(5.1)DNS查询过程

当客户端程序要通过一个主机名称来访问网络中的一台主机时,它首先要得到这个主机名称所对应的IP地址,因为IP数据报中允许放置的是目地主机的IP地址,而不是主机名称。可以从本机的hosts文件中得到主机名称所对应的IP地址,但如果hosts文件不能解析该主机名称时,只能通过向客户机所设定DNS服务器进行查询了。说明:在UNIX系统中,可以设置hosts和dns的使用次序。可以以

2014-07-09 10:53:05 640

转载 分析输入url到页面返回的过程(或者查询返回过程)

作为一个软件开发者,你一定会对网络应用如何工作有一个完整的层次化的认知,同样这里也包括这些应用所用到的技术:像浏览器,HTTP,HTML,网络服务器,需求处理等等。本文将更深入的研究当你输入一个网址的时候,后台到底发生了一件件什么样的事~1. 首先嘛,你得在浏览器里输入要网址:2. 浏览器查找域名的IP地址导航的第一步是通过访问的域名找出其IP地址。DNS查找过程如下:

2014-07-08 17:08:58 746

原创 apt-get 和 yum

apt-get是一条linux命令,适用于deb包管理式的操作系统,主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统。是debian,ubuntu发行版的包管理工具,与红帽中的yum工具非常类似。apt-get命令一般需要root权限执行,所以一般跟着sudo命令。例:sudo apt-get xxxx

2014-06-25 00:16:29 672

原创 Ubuntu 下安装wireshark

#apt-get install ethereal#apt-get install wireshark

2014-06-24 23:50:08 536

转载 linux下 firefox安装flash插件

我的linux版本是CentOS 6. 浏览时遇到无flash插件时,到官网下载一个:http://get.adobe.com/cn/flashplayer/我下载的是:install_flash_player_11_linux.i386.tar.gzOK,开始安装。1.找到正确目录  #whereis firefoxfirefox: /usr/bi

2014-06-22 21:15:25 559

原创 Linux 简单命令

日期 date日历 cal计算器 bcquit退出

2014-05-18 19:54:14 428

原创 Linux的挂载

挂载--文件系统和目录树的关系  所谓挂载就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分割槽癿意思。这个我们称为『挂载』,那个进入点的目录我们称为『挂载点』。 由于整个 Linux 系统最重要的是根目录,因此根目录一定需要挂载到某个分割槽的。 至于其他的目录则可依用户自己的需求来给予挂载到不同的分割槽。我们以下图来作为一个说明:上图中

2014-05-18 18:44:21 513

原创 Linux的装置文件

在 Linux 系统中,每个装置都被当成一个文件来对待,这是与window很大的不同,可以通过配置文本文件来配置每个装置文件分别是IDE硬盘 /dev/hd[a-d]SCSI硬盘 /dev/sd[a-p]CDROM: /dev/cdrom打印机: /dev/lp[0-2]软盘驱劢器:/dev/fd[0-1]网络卡: /dev/eth[0-n]

2014-05-18 18:38:32 639

原创 Linux 磁盘结构

磁盘结构  扇区,磁道,柱面和磁头数  硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。每个磁道被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同

2014-05-18 18:19:49 1155

C#数据结构与算法

数据结构与算法(C#语言版),涉及线性表,栈和队列,串和数组,树和二叉树,图,排序和查找等。

2013-09-15

programming Asp.net MVC 4

Programming Asp.net MVC4,英文版

2013-09-15

空空如也

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

TA关注的人

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