自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

事后诸葛亮的程序人生(微信:zq9017197)

不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!...

原创 十、Base64编码

Base64 Base64编码,是我们程序开发中经常使用到的编码方法。因为base64编码的字符串,更适合不同平台、不同语言的传输(一个字符可能其他的系统没有)。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法,一句:将二进制数据文本化(转...

2019-04-18 19:28:30 125 0

原创 九、SSL、TLS

SSL/TLS — 为了更安全的通信 SSL/TLS是世界上应用最广泛的密码通信方法。比如说,当在网上商城中输人信用卡号时,我们的Web浏览器就会使用SSL/TLS进行密码通信。使用SSL/TLS可以对通信对象进行认证,还可以确保通信内容的机密性。 SSL/TLS中综合运用了之前所学习的对称密码、...

2019-04-12 19:39:09 140 0

原创 八、证书

证书 – 为公钥加上数字签名 要开车得先考驾照.驾照上面记有本人的照片、姓名、出生日期等个人信息.以及有效期、准驾车辆的类型等信息,并由公安局在上面盖章。我们只要看到驾照,就可以知道公安局认定此人具有驾驶车辆的资格。 公钥证书(Public-Key Certificate,PKC)其实和驾照很相似...

2019-04-12 19:38:50 110 0

原创 七、数字签名

数字签名 — 消息到底是谁写的 数字签名是一种将相当于现实世界中的盖章、签字的功能在计算机世界中进行实现的技术。使用数字签名可以识别篡改和伪装,还可以防止否认。 我们假设Alice使用的密钥是一个只有Alice自己才知道的私钥。当Alice发送消息时,她用私钥生成一个“签名"。相对地,接...

2019-04-12 19:38:31 174 0

原创 六、消息认证码

消息认证码 — 消息被正确传送了吗? 消息的完整性(integrity), 指的是“消息没有被篡改"这一性质,完整性也叫一致性。 消息的认证(authentication)指的是“消息来自正确的发送者"这一性质。 消息认证码(message authentication cod...

2019-04-12 19:38:10 245 0

原创 五、单向散列函数

单向散列函数 — 获取消息的指纹 当需要比较两条消息是否一致时,我们不必直接对比消息本身的内容,只要对比它们的“指纹”就可以了。 单向散列函数(one-wayftnction)有一个输人和一个输出,其中输人称为消息(message),输出称为散列值(hashvalue)。单向散列函数可以根据消息的...

2019-04-12 19:37:49 129 0

原创 四、非对称加密

非对称加密也叫公钥密码: 使用公钥加密, 使用私钥解密 在对称密码中,由于加密和解密的密钥是相同的,因此必须向接收者配送密钥。用于解密的密钥必须被配送给接收者,这一问题称为密钥配送问题。如果使用非对称加密也可以称为公钥密码,则无需向接收者配送用于解密的密钥,这样就解决了密钥配送问题。可以说非对称加...

2019-04-12 19:37:19 481 0

原创 三、分组密码的模式

前面介绍的DES和AES都属于分组密码,它们只能加密固定长度的明文。如果需要加密任意长度的明文,就需要对分组密码进行迭代,而分组密码的迭代方法就称为分组密码的“模式”。 分组密码有很多种模式,如果模式的选择不恰当,就无法保证机密性。例如,如果使用ECB模式,明文中的一些规律就可以通过密文被识别出来...

2019-04-12 19:36:56 127 0

原创 二、对称加密

对称加密:也称为对称密码,是指在加密和解码时使用同一秘钥的加密方式 1.DES 1.1什么是DES DES一直以来被美国以及其他国家的政府和银行等广泛使用。然而,随着计算机的进步,现在DES已经能够被暴力破解,强度大不如前了。 由于DES的密文可以在短时间内被破译,因此除了用它来解密以前的密文...

2019-04-12 19:36:27 150 0

原创 一、密码基础知识

1.加密三要素 明文/密文 加密之前的消息称为明文(plaintext),加密之后的消息称为密文(cipher-text)。 秘钥 定长的字符串 需要根据加密算法确定其长度 算法 加密算法 解密算法 加密算法和解密算法有可能是互逆的, 也有可能相同 2.对称加密 秘钥: 加...

2019-04-12 19:35:26 91 0

原创 二十、BoltDB k-v存储

Bolt 是一个纯粹的 Go key/value数据库。 该项目的目标是为不需要完整数据库服务器(如Postgres或MySQL)的项目提供一个简单,快速和可靠的数据库。 如果您需要高随机写入吞吐量(> 10,000 w / sec)或者您需要使用旋转磁盘,则 LevelDB可能是一个不错的...

2019-04-12 19:34:01 218 0

原创 三、使用GitHub

1.注册GitHub账号 GitHub的网址是:https://github.com/ 要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Create a New Repository。 2.配置GitHub 我们首先得生成公钥,然后复制...

2019-03-06 14:36:27 130 0

原创 二、分支管理

1.创建与合并分支 git把我们之前每次提交的版本串成一条时间线,这条时间线就是一个分支。截止到目前只有一条时间线,在git里,这个分支叫主分支,即master分支。 HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。 (1)一开始...

2019-03-06 14:35:51 202 0

原创 一、版本创建与回退

1.git简介 git是目前世界上最先进的分布式版本控制系统。 2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。 Git和svn的区别:https://www.cnblogs.com/dazhidac...

2019-03-06 14:35:06 142 0

原创 十九、Beego框架快速入门

Beego框架快速入门 1.框架了解 go语言的web框架:beego,gin,echo等等,那为什么我们选择beego呢? 第一,beego是中国人开发的,开发文档比较详细,beego官网网址: https://beego.me/ 。 第二,现在公司里面用beego的也比较多,比如今日头条,百...

2019-03-06 14:33:32 626 0

原创 十八、C与GO混合编程

作为一门直接传承于C的语言,Go当然应该将与C语言的交互作为首要任务之一。Go确实也提供了这一功能,称为Cgo。 由于cgo需要gcc支持,所以需要配置gcc环境,如果是linux下一般可以跳过该步骤,win下则需要自己安装了,这里我们使用MinGW 由于我是64位,这里下载64位的POSIX版...

2019-02-20 22:36:50 291 0

原创 十七、连接数据库

1.GO连接MySQL 因为Go语言没有提供任何官方数据库驱动,所以需要安装第三方函数库。 需要安装git软件,安装过程一直点击下一步即可。安装完成后需要配置环境变量${git_home}/bin 设置GOPATH的环境变量,这样驱动才会下载到项目根目录中。 在cmd命令窗口中输入如下...

2019-02-20 22:36:28 157 0

原创 十六、反射

1.基本用法 func main() { var x float64 = 3.4 //1.获取类型信息 fmt.Println("type:", reflect.TypeOf(x)) //type: float64 v := reflect.ValueOf(x) f...

2019-02-20 22:36:01 123 0

原创 十五、JSON处理

1、编码为JSON格式 使用json.Marshal()函数可以对一组数据进行JSON格式的编码。 Go语言的大多数数据类型都可以转化为有效的JSON文本,但channel、complex和函数这几种类型除外。 如果转化前的数据结构中出现指针,那么将会转化指针所指向的值,如果指针指向的是零值,那...

2019-02-20 22:35:40 141 0

原创 十四、爬虫

1.爬取百度贴吧 //HTTP网页请求 func HttpGet(i int, url string) (result string, err error) { resp, err1 := http.Get(url) if err1 != nil { err = err1 //将封装函数内...

2019-02-20 22:35:21 141 0

原创 十三、网络聊天室

服务端 package main import ( "net" "fmt" "strings" "time" ) //创建用户结构体类型 type Client struct { C chan ...

2019-02-20 22:34:49 82 0

原创 十二、网络编程

1.TCP编程 服务器: func main() { //指定服务器通信协议、IP地址、端口号 listener, err := net.Listen("tcp", "127.0.0.1:8000") if err != nil { fmt.P...

2019-02-20 22:34:24 98 0

原创 十一、并发编程

1.goroutine Go 语言在语言级别支持轻量级线程,叫goroutine。 在一个函数调用前加上go关键字,这次调用就会在一个新的goroutine中并发执行。 当被调用的函数返回时,这个goroutine也自动结束了。 需要注意的是,如果这个函数有返回值,那么这个返回值会被丢弃。 创建...

2019-02-20 22:33:43 89 0

原创 十、字符串操作

1.字符串操作 在对字符串进行处理时,需要借助于包“strings” 1.1 Contains func Contains(s, substr string) bool 功能:字符串s中是否包含substr,返回bool值 func main() { str := "hello...

2019-01-18 21:30:57 117 0

原创 九、文本文件处理

1.创建文件 GO语言中提供了一个Create( )函数专门创建文件. 该函数在创建文件时,首先会判断要创建的文件是否存在,如果不存在,则创建,如果存在,会先将文件中已有的数据清空。 同时,当文件创建成功后,该文件会默认的打开,所以不用在执行打开操作,可以直接向该文件中写入数据。 packag...

2019-01-18 21:30:36 129 0

原创 八、异常处理

1.error接口 package main import ( "fmt" "errors" ) func Test(a int, b int) (result int, err error) { err = nil if b == 0 { ...

2019-01-17 21:08:06 125 0

原创 七、面向对象

严格意义上说,GO语言中没有类(class)的概念,但是我们可以将结构体比作为类,因为在结构体中可以添加属性(成员),方法(函数)。 当然严格意义上,GO语言中是没有继承的,但是我们可以通过”匿名组合”来实现继承的效果。 1.继承 //继承 type Person struct { id ...

2019-01-17 21:07:29 104 0

原创 六、复合数据类型

1.数组 func main() { var a [10] int = [10] int{1, 2, 3, 4, 5, 5, 4, 3, 2, 1} for index, data := range a { fmt.Println(index, ":", data) ...

2019-01-17 21:06:24 105 0

原创 五、包

工程管理 为了更好的管理项目中的文件,要求将文件都要放在相应的文件夹中。GO语言规定如下的文件夹如下: (1)src目录:用于以代码包的形式组织并保存Go源码文件。(比如:.go .c .h .s等) (2)pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)...

2019-01-17 21:05:30 106 0

原创 四、函数

1.普通参数列表 func main() { car("奔驰") car("宝马") } func car(name string) { fmt.Println(name, ",汽车开跑了。。。") } 2.不定参数列表 使用...

2019-01-17 21:04:47 110 0

原创 三、流程控制

1.if语句 func main() { //if支持一个初始化语句,初始化语句和判断条件以分号分隔 if score := 97; score >= 90 && score <= 100 { fmt.Println("...

2019-01-17 21:04:19 103 0

原创 二、变量、基本数据类型、常量、运算符

1.变量 package main import "fmt" func main() { fmt.Println("定义变量") var a int = 10 //定义一个变量a同时将整数10赋值给a var b, c int //定义完变量b...

2019-01-17 21:03:30 98 0

原创 一、第一个GO程序

Golang开发工具及资料 Go语言官网(需要翻墙):https://golang.org/ go中文社区:https://studygolang.com go中文在线文档:https://studygolang.com/pkgdoc 环境安装 有zip压缩版和msi安装版两个按本下载。(这...

2019-01-17 21:02:36 118 0

原创 十二、MapReduce详细工作流程

MapReduce程序运行流程分析 1)在MapReduce程序读取文件的输入目录上存放相应的文件。 2)客户端程序在submit()方法执行前,获取待处理的数据信息,然后根据集群中参数的配置形成一个任务分配规划。 3)客户端提交job.split、jar包、job.xml等文件给yarn,y...

2019-01-01 09:10:49 242 0

原创 十一、MapReduce开发总结

一、大量小文件的优化策略 默认情况下,每一个输入文件单独切片。切片大小=blocksize=128M。每次切片时,都要判断切完剩下的部分是否大于块(128M)的1.1倍,不大于块(128M)的1.1倍就划分一块切片。比如一个257M的文件,就切为2块:128M + 129M 默认情况下,Text...

2019-01-01 09:10:18 711 1

原创 十、MapReduce实战篇-端表合并

多表连接 订单表 order.txt 订单id、商品id、数量 1001 01 1 1002 02 2 1003 03 3 1001 02 2 1002 03 3 1003 03 5 商品表 produce.txt 商品id、商品名称 01 小米 02 华为 03 格力 将商品表中数...

2018-12-31 01:56:15 133 0

原创 九、MapReduce实战篇-最贵商品

测试数据 Order_0000001 Pdt_01 222.8 Order_0000002 Pdt_05 722.4 Order_0000001 Pdt_05 25.8 Order_0000003 Pdt_01 333.8 Order_0000003 Pdt_01 33.8 Order_00000...

2018-12-31 01:55:31 128 0

原创 八、MapReduce实战篇-流量汇总

流量汇总需求: 统计每一个用户(手机号)所耗费的总上行流量、下行流量,总流量 1.在mapper和reducer之间传递多个value值 序列化:自己实现了Writable接口(FlowSumBean),在mapper和reducer之间传递一个Bean对象。 也可以拼接字符串的方式来实现写出多...

2018-12-31 01:54:36 182 0

原创 七、MapReduce实战篇-单词计数

环境准备 开发MapReduce程序,需要Java环境,通常也就是在eclipse中新建一个Java Project工程 jar包准备 1)解压hadoop-2.7.2.tar.gz到非中文目录 2)进入share\hadoop文件夹,查找所有jar包,并把jar包拷贝到_lib文件夹下 3...

2018-12-31 01:53:22 721 0

原创 六、HDFS其他功能

集群间数据拷贝 采用discp命令实现两个hadoop集群之间的递归数据复制 hadoop distcp hdfs://cmaster0:8020/user/hadoop/hello.txt hdfs://hadoop102:9000/user/hadoop/hello.txt Hadoop存...

2018-12-27 19:41:43 88 0

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