自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 搭建以太坊私有链集群

配置环境 使用docker并下载必要的文件 FROM ubuntu:16.04   RUN apt-get update \ && apt-get install -y software-properties-common \ &&...

2018-08-01 14:51:56 282 0

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

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

2018-07-27 10:15:42 3788 1

原创 go学习笔记 - 接口

接口是golang最重要的特性之一,在Go中,接口interface其实和其他语言的接口意思没什么区别。interface理解其为一种类型的规范或者约定。一种类型是不是“实现”了一个接口呢?就看这种类型是不是实现了接口中定义的所有方法。接⼝是一个或多个方法签名的集合,任何非接口类型只要拥有与之对应...

2018-07-25 09:23:18 75 0

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

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

2018-07-20 20:16:23 1087 0

原创 go网络编程基础

socket socket原理 Socket 原理 Socket 连接,至少需要一对套接字,分为 clientSocket,serverSocket 连接分为3个步骤: (1) 服务器监听:服务器并不定位具体客户端的套接字,而是时刻处于监听状态; (2) 客户端请求:客户端的套接字要描述...

2018-07-19 23:28:23 109 0

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

爬虫总体架构:     爬虫实现方案:       单机版   单机版架构 主要模块有: 处理引擎(Engine) 解析器(Parser) 下载器(Fetcher) 流程: 请求处理模型=请求URL + URL对应的Parse 0: 先向引擎发起一个种子请...

2018-07-19 10:29:10 154 0

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

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

2018-07-17 21:29:30 1516 0

原创 Go语言最主要的特性

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

2018-07-14 22:11:14 138 0

原创 go的错误处理机制

defergo语言是实用defer做资源处理的defer是在函数结束,return之前时被调用 先进后出,可见是栈的结构 参数在defer语句时计算 何时使用deferopen/closelock/unlockprintHeader/printFooterfunc calc(index strin...

2018-07-12 23:16:20 300 0

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

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

2018-07-11 10:35:29 627 0

原创 go反射机制

1. 反射定律反射可以将“接口类型变量”转换为“反射类型对象”。反射可以将“反射类型对象”转换为“接口类型变量”。如果要修改“反射类型对象”,其值必须是“可写的”。a. “接口类型变量”=>“反射类型对象”所谓的反射类型,就是reflect.Type和reflect.Value va...

2018-07-07 23:24:35 793 0

原创 go的可变参数

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

2018-07-05 23:19:33 974 0

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

a. 使用var var c1 chan int fmt.Println(c1) // <nil> var c2 map[string]int fmt.Println(c2) // map[] c2[“a”] = 1 ...

2018-07-03 23:29:02 1834 0

原创 MAC环境变量

Mac系统的环境变量,加载顺序为: /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc 规则: a ,b是系统级别的,系统启动就会加载,其余是用户接别的。 c...

2018-05-02 16:25:18 74 0

原创 Python之IO编程

1.IO编程1.1 同步IO和异步IOIO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动。Input Stream就是数据从外面(磁盘、网络)流进内存,Output Stream就是数据从内存流到外面去。对于浏览网页来说,浏览器和新浪服务...

2017-08-10 16:20:27 143 0

原创 python 面向对象编程

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

2017-08-01 15:33:51 252 0

原创 递归与迭代

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

2017-07-30 18:06:59 200 0

原创 Python 日志

1. logging levels官网: https://docs.python.org/3/tutorial/stdlib2.html#logging把print()替换为logging是第3种方式,和assert比,logging不会抛出错误,而且可以输出到文件: Level Nume...

2017-07-28 15:28:21 243 0

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

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

2017-07-26 10:20:48 368 0

原创 Python之模块

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

2017-07-25 14:55:03 422 0

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

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

2017-07-25 14:21:10 167 0

原创 Python之函数式编程

1. 高阶函数1.1 高阶函数定义1.1.1 变量可以指向函数>>> f = abs >>> f <built-in function abs>>>> f(-10) 10说明变量f现在已经指向了abs函数本身。直接调用abs()函数...

2017-07-25 08:32:43 149 0

原创 Python 函数

空函数如果想定义一个什么事也不做的空函数,可以用pass语句:def nop(): passpass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。pass还可以用在其他语句里,比如:if age &...

2017-07-20 14:14:19 137 0

原创 Python3数据类型

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

2017-07-19 15:00:30 406 0

原创 Python2与Python3的编码区别

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

2017-07-18 14:02:24 2640 0

原创 创建scrapy开发环境

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

2017-07-13 10:42:06 979 0

原创 Python虚拟环境的搭建

Python虚拟环境的搭建1. 安装环境1.1 安装virtualenvpip install virtualenv1.2 安装virtualenvwrapper-winVirtaulenvwrapper是virtualenv的扩展包,用于更方便管理虚拟环境,它可以做: 将所有虚拟环境整合在一个目...

2017-07-13 10:25:39 289 0

原创 linux 别名

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

2014-12-02 10:31:32 453 0

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

文件位置不同        Bash是Linux系统中默认使用的Shell程序,文件位于/bin/bash 内部命令:指的是集成于Shell解释器程序(如Bash)内部的一些特殊指令,也成为内建(Builtin)指令。内部命令属于Shell的一部分,所以并没有单独对应的系统文件,只要Shel...

2014-12-02 10:26:02 481 0

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

转自:http://blog.chinaunix.net/uid-26275986-id-4109679.html TCP协议作为一个可靠的面向流的传输协议,其可靠性和流量控制由滑动窗口协议保证,而拥塞控制则由控制窗口结合一系列的控制算法实现。 一、滑动窗口协议      关于这部分自己...

2014-07-22 10:49:44 462 0

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

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

2014-07-22 10:27:41 705 0

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

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

2014-07-17 10:31:53 731 0

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

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

2014-07-09 10:53:05 480 0

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

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

2014-07-08 17:08:58 575 0

原创 apt-get 和 yum

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

2014-06-25 00:16:29 589 0

原创 Ubuntu 下安装wireshark

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

2014-06-24 23:50:08 436 0

转载 linux下 firefox安装flash插件

我的linux版本是CentOS 6.   浏览时遇到无flash插件时,到官网下载一个: http://get.adobe.com/cn/flashplayer/ 我下载的是:install_flash_player_11_linux.i386.tar.gz OK,开始安装。 ...

2014-06-22 21:15:25 463 0

原创 Linux 简单命令

日期 date 日历 cal 计算器 bc quit退出

2014-05-18 19:54:14 373 0

原创 Linux的挂载

挂载--文件系统和目录树的关系   所谓挂载就是利用一个目录当成进入点,将磁盘分区槽的数据放置在该目录下; 也就是说,进入该目录就可以读取该分割槽癿意思。这个我们称为『挂载』,那个进入点的目录我们称为『挂载点』。 由于整个 Linux 系统最重要的是根目录,因此根目录一定需要挂载到某个分割槽的。...

2014-05-18 18:44:21 438 0

原创 Linux的装置文件

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

2014-05-18 18:38:32 497 0

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