Go语言
落叶1210
这个作者很懒,什么都没留下…
展开
-
Go语言指针的学习和理解
指针是一个特殊的变量,本质是一个对象,用来存储内存地址,并且通过该内存地址,对存储在该内存的对象进行相关操作。刚开始学习C++的时候,着实被指针这个东西搞得头昏脑胀,C++设计功能强大的指针同时,必然伴随着学习难度的提升。后来在学习java、.net的时候,终于有了一种解脱的感觉,再也不用内存怎么分配,怎么管理释放了,甚至有一种感觉,就算不懂内存,也不碍事,java强大的垃圾回收机制解决了内存...原创 2018-08-24 15:38:21 · 1006 阅读 · 0 评论 -
Go语言代码实现数字签名过程
一、数字签名流程图二、实现场景描述直接使用百度百科中关于数字签名的应用例子,如下:假如现在 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:1.Alice 准备好要传送的数字信息(明文);2.Alice 对数字信息进行哈希运算,得到一个信息摘要;3.Alice 用自己的私钥对信...原创 2018-11-23 18:12:02 · 3344 阅读 · 1 评论 -
Rabbitmq go语言简单案例
这里使用的操作系统为ubuntu,首先安装rabbitmq,命令终端输入:sudo apt-get install rabbitmq-server下载mq管理工具rabbitmqadmin,输入:sudo rabbitmq-plugins enable rabbitmq_managementwget localhost:15672/cli/rabbitmqadmin这样我们就可...原创 2018-11-05 00:09:17 · 373 阅读 · 0 评论 -
go语言代码实现区块链-P2P节点发现(二)
继续上一章节Loop函数代码如下:func(k *Kad) loop(){ log.Println("go loop...") loop: for{ select{ case <-k.ticker.C: //定时检测node数量,如果小于N,执行节点发现 go k.checkNodes() case n:=<-k.tc: //...原创 2018-11-02 17:54:05 · 813 阅读 · 0 评论 -
go语言代码实现区块链-P2P节点发现(一)
1、P2P网络节点发现流程设定每次节点启动需要发现的节点数最小为N,最大值为M,节点ID为160位的二进制值。根据Kademlia算法,假设启动的客户端(节点)为A,节点A的ID为“NodeIDA”,A启动后,发现其他节点的流程如下:检测A的K桶下是否已经存在持久化的其他节点信息,如果存在,尝试能否ping-pong握手成功,如果可以,保留该节点。如果不可以,从K桶中删除该节点。如果此...原创 2018-10-31 17:19:38 · 1850 阅读 · 0 评论 -
go语言实现仿QQ聊天功能
1、实现原理为了最大限度的减少服务器的负担,这里使用P2P模式实现仿QQ的聊天功能,服务器端和客户端职责如下:1)服务器端:通过TCP方式实现客户端身份认证、向已经认证的用户推送好友信息、向其他登录用户推送新的好友IP和状态。2)客户端:TCP方式从服务器端获取好友列表及状态,UDP方式实现群聊和单聊。2、服务器端实现代码:const( Msgtype_log="0" M...原创 2018-10-15 17:42:44 · 1914 阅读 · 1 评论 -
go语言多线程与并发编程
go语言并发编程在了解go语言的并发编程之前,我们必须先了解并发和并行的概念。我们知道,当启动一个应用的时候实际上是启动了一个进程,通过该进程实现资源的调度和分配,并且多个进程之间是相互隔离的,所以我们运行其中一个应用不会对其他应用造成影响。默认情况下一个进程只有一个线程,也就是单线程应用,这种模式下所有的操作都是同步的,处理完A事件以后才能接着处理B事件再接着处理C事件。那么,单线程...原创 2018-09-06 01:08:59 · 22450 阅读 · 2 评论 -
go语言面向对象理解
在写go语言的Interface之前我们先要理解go语言“简洁”的特性。相较于其他的编程语言,go语言的语法规则是能省则省,哪怕多省一个字符也行。我们看看go语言的语法做了哪些简化:1、行代码结束后不需要加”;”。如打印输出:fmt.Printf(“Hello,World”)2、变量定义和初始化不需要指定类型。如定义并初始化整形变量:num:=1003、语句不需要添加(),如:for ...原创 2018-09-03 11:21:43 · 1134 阅读 · 0 评论 -
ubuntu下部署go语言开放环境
Ubuntu下go语言环境搭建1、通过终端命令安装~$ sudo apt install golang-go使用命令有时无法安装,可以下载安装包直接安装。2、下载安装包安装包下载地址为:https://golang.org/dl/。如果打不开可以使用这个地址:https://golang.google.cn/dl/。目前最新版本为go1.11,源码包为go1.11.l...原创 2018-08-29 23:18:17 · 485 阅读 · 1 评论 -
Go语言排序算法实现
1、冒泡排序//Bubble sortfunc SortValues(values []int) { flag := true for i := 0; i < len(values); i++ { flag = true for j := 0; j < len(values)-i-1...原创 2018-09-01 00:57:29 · 190 阅读 · 0 评论 -
Go语言切片(Slice)的深入理解
了解Go语言的切片(Slice)之前,我们先了解下Go语言的数组。数组是一个线性数据结构,具有相同唯一类型的一组已编号且长度固定的数据项序列,数组的存储类型可以是任意类型。1、声明一个int类型的数组: var myArr [10]int;2、初始化数组:myArr=[10]int{1,2,3,4,5};使用fmt.Println(myArr)输出结果为:[1 2 3 ...原创 2018-08-24 15:41:37 · 1257 阅读 · 0 评论 -
go语言下redis部署和操作
Redis是基于C语言编写的开源数据库,支持Key-Value的持久化存储。Redis支持多种数据类型,value值可以是字符串、链表、集合和哈希类型。Redis支持push/pop、add/remove及去交集并集差集等的复杂操作。Redis最大的优势是读取性能高,Redis的数据缓存在内存中,所以读写效率高,同时Redis也可以将数据持久化到磁盘,保证大量数据的存储性。1、Ub...原创 2018-11-27 00:00:22 · 401 阅读 · 0 评论