Go语言中文网 为您找到相关结果 422

初识golang之函数

声明: func funcName(input1 type1, intput2 type2) (output1 type1, output2 type2) { ……………… //可以有多个返回值 return val1, val2 } 说明:golang中通过func来声明一个函数,函数可以有一个或者多个参数,每个参数后面带类型,通过,分隔;函数可以返回多个值,返回的个数要于声明时定义的返回个数相同,声明时可以不写返回的变量名,而直接使用类型(如果只有一个返回值且不声明返回值变量,那么可以省略返回值的括号,如果没有返回值,那么就直接省略最后的返回信息定义) 例: func SumAndProduct(a, b int) (int, int) { return a+b, a*b } func ...阅读全文

Proxyer 私有内网映射工具

私有内网映射工具 项目地址 github 项目地址 gitee 试用地址 http://test.proxyer.cn:6789/访问密码:12345678 现在市面上的内网映射工具,大部分都是收费的,收费的同时一般也只能够提供有限的网络带宽。造成这个问题最主要的原因是流量本来就非常贵,无论是谁提供内网映射服务都绕不过这个问题,而免费的内网映射工具,更无法保证提供优质的服务了。 当下互联网大部分的应用已经高度依赖可靠的网络带宽,网络带宽小,会极大的影响很多应用的体验,例如远程桌面、文件传输、视频监控等应用,带宽小体验非常差。 与此同时,云服务器的租用变得越来越简单,按流量收费的这种模式也逐渐兴起,在这种情况下,我们完全可以选择为自己或者团队搭建一个私有的内网映射服务。提供按质,按量的优质服务...阅读全文

博文 2020-03-08 21:32:39 khvysofq

Go语言中Socket通信之Tcp客户端

1、用法: (1)定义远程IP地址。使用net.ResolveTCPAddr()方法,定义一个TCP地址,做为目标连接地址。 (2)调用net.DialTCP("tcp",nil,remoteAddress) 方法,建立与remoteAddress的连接。这里的三参数分别是:协议名、本地IP、远程IP (3)可以学着调用连接对像中的一些常用方法。用于学习。 (4)试着写入一些消息。比如模拟发送请求响应头的内容。使用:conn.Write([]byte("HEAD / HTTP/1.0\r\n\r\n")) (5)接收内容:使用ioutil包下的 ReadAll方法。直接接收加[]byte,然后转为字符串输入即可。 2、代码: package main import ( "fmt" "io/i...阅读全文

博文 2016-03-09 10:00:01 songxingzhu

用Go开发可以内网活跃主机嗅探器

## 文章关键词 * go/golang * gopacket * 抓包 * pcap/libpcap * arp * nbns * mdns * manuf ## 程序截图 ![image.png](http://upload-images.jianshu.io/upload_images/6285600-cec041b47b5f7b1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 说明 本文对于Go语言本身的讲解不会太多,想把更多的时间花在几个网络协议的讲解上,希望本文对打算或正在用Go进行TCP/IP编程和抓包的朋友带来帮助。 github地址:[https://git...阅读全文

golang基础--Array数组

基本特性 格式: var Name [n],n>0 如: var a [10]int 表示,定义一个长度为10,元素类型为int性的数组 数组长度: 长度(len)也是数组类型的一部分,因此具有不同长度的数组为不同的类型。 如var a [2]int != var a [2]int 注意区分指向数组的指针和指针数组 // 指向数组的指针:变量是指针 a :=[...]int[9:1] //顶一个变量a的数组(长度为100,第100个元素为1) var p *[...]int = &a //定义一个p的变量,类型为指针 //指针数组:变量是数组,元素是指针(内存地址) x , y := 1,2 b :=[...]*int(&x,&y) print (p) print (b) /*输...阅读全文

博文 2018-07-12 13:30:34 failymao

make(map[int]string, 1) 这第二个参数 1是 map的大小?

在go的 包中显示make 第二个参数表示大小,我试着声明一个长度为1 的当长度超过1时 不应该换一块内存地址,重新存储?![111.png](https://static.studygolang.com/180130/de5e30f4c9cb18521dc9650645e2d3e5.png)![Screenshot 2018-01-30_21-17-09.png](https://static.studygolang.com/180130/99ef92273df2b4f71e62dfde99d0f874.png...阅读全文

C/Golang中的值传递和指针传递

-------------------------golang---------------------------------------------- package main import "fmt" func A(m int, n []int) { m = 100 n[0] = 99 fmt.Printf("After : &m=%p,&n=%p,n=%p\n", &m, &n, n) fmt.Printf(" m=%d,n=%v\n", m, n) } func main() { m := 300 n := []int{1, 2, 3} fmt.Printf("-----------origin--------------------\n") fmt.Printf("Befter ...阅读全文

【北京招聘】寻找go工做伙伴

各位go世界的工程师们,我们公司2017年即将在北京进行几个项目的开发运维工作,真诚需求共事伙伴,无论你是自由的独行侠还是拉帮结伙的团队派,我们都希望能跟你或你们一起合作发展~ 展示实力的平台已经搭建,就等你的到来 公司名称:合胜科技(华北分公司:北京合胜易达科技有限公司) 公司地址:北京市朝阳区北三环中路安华桥附近 联系电话:82129658 感兴趣的可直接联系,或将简历投递到hr-bj@mvs.com.cn ...阅读全文

[GoLang学习总结]Go语言中的Slice

概念 Slice切片是对底层数组Array的封装,在内存中的存储本质就是数组,体现为连续的内存块,Go语言中的数组定义之后,长度就已经固定了,在使用过程中并不能改变其长度,而Slice就可以看做一个长度可变的数组进行使用,最为关键的,是数组在使用的过程中都是值传递,将一个数组赋值给一个新变量或作为方法参数传递时,是将源数组在内存中完全复制了一份,而不是引用源数组在内存中的地址,为了满足内存空间的复用和数组元素的值的一致性的应用需求,Slice出现了,每个Slice都是都源数组在内存中的地址的一个引用,源数组可以衍生出多个Slice,Slice也可以继续衍生Slice,而内存中,始终只有源数组,当然,也有例外,后边再说。 用法 1.Slice的定义 Slice可以通过两种方式定义,一种是从源数...阅读全文

博文 2015-06-17 20:23:36 tiger435

Golang Map 实现 (二) map 的创建

本文在golang map 数据结构的基础上,学习一个make 是如何构造的。 map 创建示例 在golang 中,初始化一个map 算是有两种方式。 example1Map := make(map[int64]string) example2Map := make(map[int64]string, 100) 第一种方式默认不指定map的容量,第二种会指定后续map的容量估计为100,希望在创建的时候把空间就分配好。 当make创建map时,底层做了什么 对于不同的初始化方式,会使用不同的方式。下面是提供的几种初始化方法: // hint 就是 make 初始化map 的第二个参数 func makemap(t *maptype, hint int, h *hmap) *hmap fun...阅读全文

博文 2020-04-30 10:32:40 搬砖程序员带你飞

Go 博客平台 Pipe 1.6.0 发布,支持 sitemap

[Pipe](https://github.com/b3log/pipe) 是一款小而美的开源博客平台,使用 golang、Vue.js 编写。 v1.6.0 主要是支持了 sitemap 和 RSS 输出。 关于**独立账号体系**的特性正在通过社区进行投票,欢迎大家[前来支持](https://github.com/b3log/pipe/issues/117)! ### 安装 [下载](https://pan.baidu.com/s/1jHPtHLO)最新的 Pipe 包解压,进入解压目录直接运行 pipe/pipe.exe 可执行文件即可。 从 1.5.0 升级只需将已有的配置拷贝覆盖即可,启动后会自动升级。 ### 文档 * [Pipe 用...阅读全文

kubernets的网络插件:flannel

January 18, 2017 in Tech docker的网络方案 k8s的flannel模式 flannel模式原理 flannel模式的优缺点 部署及验证 kubernets的网络,从设计上来讲是“扁平、直接”的,即要求: 所有容器可以不使用NAT技术就可以与其他容器通信 所有节点(物理机 虚拟机 容器)都可以不使用NAT同容器通信 容器看到的IP地址和别的机器看到的IP是一致的 docker的网络方案 docker的网络支持如下四种: none host,与宿主机共享,占用宿主机资源 container,使用某容器的namespace,例如k8s的同一pod内的各个容器 bridge,挂到网桥docker0上,走iptables做NAT 实际上还有一种方法:先以none的方式ru...阅读全文

博文 2017-07-30 02:04:40 伊布

golang解析IP到城市jsonRPC服务教程

RESTful接口 请求URL: https://api.turboes.com/Tbsapi/v1/ip2addr?ip=219.140.227.235 请求方式: GET 参数: 参数名 类型 说明 ip url-qurey-string 可选 要查询的ip地址,如果不传这表示当前的ip 返回示例 { "code": 0, "data": { "Country": "中国", "Province": "湖北省", "City": "武汉", "ISP": "", "Latitude": 30.5801, "Longitude": 114.2734, "TimeZone": "Asia/Shanghai" } } json_rpc 地址: 121.40.238.123(IP地址更快) ap...阅读全文

博文 2018-03-13 14:34:42 trytv

为Emmylua添加UnityAPI代码提示

最近从之前的cocos creator前端开始转做unity前端,刚刚接触公司的项目。在环境搭建中遇到一些问题在此记录一下  我接到的项目不算复杂,Lua开发使用了IDEA系列编辑器(之前些golang的时候也用的他们家的GoLand),插件使用了Emmylua。关于Emmylua的使用心得随后我会再写一篇文章来记录,暂时理解不太深不适合此时来介绍。家常唠完了,进正题叭。  关于EmmyLua插件的安装我就不在赘述了,毕竟IDEA家的插件安装直接搜索and安装就ok了。这里主要说一下UnityAPI的代码提示问题。毕竟对于我这样的新手玩家来说,像lua这种脚本语言没有强类型的情况下想通过"."来查看类型有哪些方法是很难受的,而且也不利于学习的过程。所以我就去网上找添加UnityAPI提示的方...阅读全文

GO语言(golang)切片slice

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 切片slice是引用类型 len()函数获取元素的个数 cap()获取数组的容量 1.申明方式 [php] (1)var a []int 与数组不同的是他不申明长度 (2)s2 := make([]int, 3, 10) //元素的类型,元素的数量,元素的容量 fmt.Println(len(s2), cap(s2)) 输出元素的数量和容量 [/php] 2.讲数组转换成切片 [php] a := [10]int{} fmt.Println(a) s1 := a[:10] //取前10个元素 [5:]取 5-最后的元素 fmt.Println(s1) [/php] 3.slice测试 [php...阅读全文

图解Go内存分配器

本文翻译自《A visual guide to Go Memory Allocator from scratch (Golang)》。 当我刚开始尝试了解Go的内存分配器时,我发现这真是一件可以令人发疯的事情,因为所有事情似乎都像一个神秘的黑盒(让我无从下手)。由于几乎所有技术魔法都隐藏在抽象之下,因此您需要逐一剥离这些抽象层才能理解它们。 在这篇文章中,我们就来这么做(剥离抽象层去了解隐藏在其下面的技术魔法)。如果您想了解有关Go内存分配器的知识,那么本篇文章正适合您。 一. 物理内存(Physical Memory)和虚拟内存(Virtual Memory) 每个内存分配器都需要使用由底层操作系统管理的虚拟内存空间(Virtual Memory Space)。让我们看看它是如何工作的吧。...阅读全文

自建ngrok服务支持https访问

前言 最近从事第三方平台代小程序实现业务开发,很多业务交互请求需要https,本地调试开发实现不了,不可能把部署到生产服务器调试,那又很不方便。我参考网上很多教程,很多不完整,不系统。我于是整理出完整教程当备用。 专业术语 内网穿透,又叫NAT穿透,是计算机用语,翻译过来就是 你的电脑可以直接被你朋友访问。 通常我们的电脑是无法自己被访问的。因为我们的电脑缺少自己的独立的ip地址。现在ip稀缺,电信运营商已经不会随便分配固定ip给个人。 通常实现内网穿透,是通过路由器上端口映射来实现的。但是路由器通常不是每个人都有权限可以访问和设置,而且可能存在多级路由器较为复杂的网络结构。端口映射也无法实现。这就需要ngrok来实现了。 原理 ngrok 建立一个隧道,将主机A的http请求 传递给 主机...阅读全文

博文 2020-05-10 21:32:46 lichongbing

go-proxy – Lvs PlayGround

go-proxy – Lvs PlayGroundgo-proxy ¶go-proxy是一个用 GO语言实现的代理服务器软件,当前仅支持对单站点进行代理。 http://go-lang.info是go-proxy的一个实例适用于linux的二进制执行文件: 下载使用方法:go-proxy --target=TARGET_SITE_DOMAIN --port=[7023] --porcs_num=[2] [--debug] [--version]例子:$./go-proxy --target=golang.org --port=8080 在浏览器中通过 http://[你的ip地址或域名]:8080 访问golang.org源码: http://svn:svn@svn.lvscar.info/...阅读全文

博文 2014-10-04 19:26:19 lexus

【时速云线上分享】第十一期:Radio Dream流媒体直播平台基于Docker的应用

以下整理自第十一期技术分享内容,由 时速云 史鑫磊 分享。 首先介绍一下背景,Radio Dream项目是一个开源项目,前身为五雷轰顶网络电台,这个项目是我个人逐渐打磨了将近两年,最开始是因为猫扑网络电台停播,我个人是猫扑电台的老听众,很舍不得这个平台,后来想想,干脆自己做一个网络电台,就是因为这些想法催生了这个项目的成立。 说完背景开始聊聊这个电台的架构,我们从流媒体协议选型到架构实现等多个方面拆分的讲解这个平台实现方法,另外时速云镜像仓库里Radio Dream的镜像demo,总体来说这套系统部署起来还是十分复杂,虽然对系统要求极其低,单核心CPU,128M内存,20GB左右的硬盘就能跑起来,但是从最开始的架构设计我就打算做成一个集群化的方案,方便动态扩容,服务更多用户,...阅读全文

go语言web编程,初学点滴记录1

几乎所有代码都来自: http://jan.newmarch.name/go/ 感谢该作者 /* IP */ package main import ( "fmt" "net" "os" ) func main() { if len(os.Args) != 2 { fmt.Fprintf(os.Stderr, "Usage: %s ip-addr\n", os.Args[0]) os.Exit(1) } name := os.Args[1] addr := net.ParseIP(name) if addr == nil { fmt.Println("Invalid address") } else { fmt.Println("The address is ", addr.String()...阅读全文

博文 2014-10-04 19:26:29 明述道长

使用Go和Let's Encrypt证书部署HTTPS

为什么要使用HTTPS?使用HTTPS的途径有哪些?如何用Go来部署HTTPS?拿出你的小本本,你要的干货都在这儿! HTTPS的好处我们已在之前的文章中提高好多。它加密浏览器和服务器之间的流量,保障你密码传输的安全,让你的页面加载速度飞快,有助于网站的SEO优化还有对HTTP网站百般嫌弃的浏览器厂商......这些都是使用HTTPS的理由。那么问题来了,怎样可以又快又好地部署HTTPS呢?使用第三方提供的HTTPS比如说CloudFlare,他们的免费方案为你那仅支持HTTP的网站提供仿HTTPS代理服务。要使用CloudFlare:配置你的域,使用CloudFlare的DNS服务器在CloudFlare的DNS设置中,将域指向你的服务器,并通将“状态”设为“DNS和HTTP代理服务器(C...阅读全文

博文 2017-07-17 04:06:30 亚洲诚信

Golang下bind: address already in use

今天测试给服务端发消息,结果忘了把端口正常关闭,再次启动时候发现进程运行不了,出现提示说端口地址被占用了,这是由于上次忘了关闭,导致端口还在被使用,所以只能自己在终端查找并手动关闭,具体方法如下: 在终端输入lsof -i:8000,查找被使用的端口,其中8000是端口号,如下图所示 查找结果.jpeg COMMAND表示进程名,PID表示进程编号,输入kill 4707 (4707就是PID) 如果还被占用,就输入kill -9 4707强制结束进程...阅读全文

博文 2018-12-19 15:34:50 单抽律化娜

解决golang使用elastic连接elasticsearch时自动转换连接地址

使用olivere/elastic连接elasticsearch时,发现连接地址明明输入的时候是公网地址,但是连接时会自动转换成内网地址或者docker中的ip地址,导致服务连接不上。 // 自动转换成docker中的ip导致无法连接服务 time="2019-02-15T20:04:26+08:00" level=error msg="Head http://172.17.0.2:9200: context deadline exceeded" 解决方法 client, _ := elastic.NewClient( // ... // 将sniff设置为false后,便不会自动转换地址 elastic.SetSniff(false), ...阅读全文

博文 2019-02-15 20:34:44 dom_chan

基于TCP套接字,通过Golang模拟HTTP请求

最近买了本书《HTTP权威指南》,看了第一章,看到书上说通过telnet模拟HTTP请求,我这个学渣就发现自己没学过计算机网络。 今天翻了一下考研指定教材《计算机网络》,里面也以访问清华大学主页为例详细讲了通信过程: 浏览器分析链接指向页面的URL。 浏览器向DNS请求解析www.tsinghua.edu.cn的IP地址。 域名系统DNS解析出清华大学服务器的IP地址为166.111.4.100。 浏览器与服务器建立TCP连接(在服务器端IP地址是166.111.4.100,端口是80)。 浏览器发出取文件命令:GET /chn/yxsz/index.htma 服务器www.tsinghua.edu.cn给出响应,把文件index.htm发送给浏览器。 释放TCP连接。 浏览器显示“清华大学...阅读全文

博文 2017-02-09 12:25:19 Bryce

Go 指针声明后赋值,出现 panic: runtime error: invalid memory address or nil pointer dereference

指针基础知识 package main import "fmt" func main() { var p *int p = new(int) *p = 1 fmt.Println(p, &p, *p) } 输出 0xc04204a080 0xc042068018 1 在 Go 中 * 代表取指针地址中存的值即指针的值(这个值是一个内存地址),& 代表取一个值的内存地址也可以是一个指针的内存地址。 对于指针,我们一定要明白指针储存的是一个值的内存地址,但本身这个指针也需要内存地址来储存。 如上 p 是一个指针,他的值为内存地址 0xc04204a080 而 p 指针本身的内存地址为 0xc042068018 内存地址 0xc04204a080 储存的值为 1 内存地址 0xc042068018...阅读全文

博文 2019-07-26 11:32:44 EricJonse

【云计算的1024种玩法】自己搭游戏服务器:我的世界Minecraft

摘要: 《我的世界》(Minecraft)是一款风靡全世界的 沙盒游戏。玩家可以独自一人或与朋友们一起自由冒险,探索随机生成的世界,创造令人惊叹的奇迹。 玩游戏当然少不了一台“游戏机”,即电脑。在自己的电脑上搭建游戏平台就得给自己的电脑购买一些好的配置以保证游戏的顺畅这会增加游戏成本,有时还会有系统崩溃的风险,这些潜在的风险处理起来还是比较麻烦的。 《我的世界》(Minecraft)是一款风靡全世界的 沙盒游戏。玩家可以独自一人或与朋友们一起自由冒险,探索随机生成的世界,创造令人惊叹的奇迹。 玩游戏当然少不了一台“游戏机”,即电脑。在自己的电脑上搭建游戏平台就得给自己的电脑购买一些好的配置以保证游戏的顺畅这会增加游戏成本,有时还会有系统崩溃的风险,这些潜在的风险处理起来还是比较麻烦的...阅读全文

CentOS6如何实现路由功能?linux学习平台

网络之间的通信主要依靠路由器,除了日常使用的路由器设备之外,Linux系统也可以进行路由器的配置,只需在Linux主机上添加一些简单的路由条目,这些Linux主机就可以充当简单路由器的功能,以下以CentOS6环境下实现路由器功能为例: **1. 如上图所示设置所有的IP地址** **2. 针对不同的机器配置路由** **Aubin-CentOS1** route add default gw 10.4.1.1 **CentOS-R1** route add -net 10.4.3.0/24 gw 10.4.2.2 route add -net 10.4.4.0/24 gw 10.4.2.2 echo 1 > /proc/sys/net/i...阅读全文

golang利用reflect包实现struct与params自动绑定

前言 因为 golang 静态强类型语言特性以及没有很好的泛型支持导致在用 go 写 web 服务的时候,总会因为要对 http params 的解析和类型转换上要花很多时间,并且这会让代码显得很冗余,那有什么办法可以解决这一苦痛呢?答案当然是有的,这里我讲会到如何用 reflect 包写一个工具类实现 model 层 struct 与 http params 的自动映射绑定。 具体实现其实很简单,主要用到的就是通过 reflect.TypeOf() 获取字段的类型(包括字段名,类型,Tag描述等相关信息),以及 reflect.ValueOf() 来获取字段的值类型用于复写从params获取到的数据, 同时还要注意不同类型数值在 Set 时的差别。 用料 首先我们设计一个struct来储存...阅读全文

博文 2018-05-19 20:48:29 音風の部屋

go---agent 提高访问网站速度的方法

通过go--agent+谷歌浏览器插件SwitchyOmega,很多小伙伴们能跃出去看看外面的世界,那么问题来了:打开一个网站,速度实在是蛋蛋的忧伤。如下我介绍亲如何提高速度: Step1:工欲善其事,必先利其器,我们需要挑选一款找好用IP的工具,他的名字叫:GoGo Tester,有它的更新网址:https://code.google.com/p/gogo-tester/; Step2:把该工具放在go-agent的local目录下,运行之。先 随机测试,挑选10个ip,然后再 标准测试,挑选出稳定的ip; Step3:把挑选出的稳定且强悍的ip地址复制到go-agent的local目录下文件proxy.ini中[iplist]下的google_cn和google_hk中,注意了,以前的例...阅读全文

博文 2015-06-18 09:02:46 myspring_zheng

用Go开发可以内网活跃主机嗅探器

## 文章关键词 * go/golang * gopacket * 抓包 * pcap/libpcap * arp * nbns * mdns * manuf ## 程序截图 ![image.png](http://upload-images.jianshu.io/upload_images/6285600-cec041b47b5f7b1f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ## 说明 本文对于Go语言本身的讲解不会太多,想把更多的时间花在几个网络协议的讲解上,希望本文对打算或正在用Go进行TCP/IP编程和抓包的朋友带来帮助。 github地址:[https://github.com/timest/goscan]...阅读全文

博文 2017-10-31 07:20:53 timest

golang使用slice中遇到的坑

package main import ( "fmt" ) func sliceFunc(i []int, num int) []int { for j := 0; j < num; j++ { i = append(i, 3) } i[0] = num return i } func main() { s := make([]int, 0, 3) s = append(s, 1) fmt.Printf("cap=%d\ts=%v\n",cap(s),s) fmt.Println("=========") s1 := sliceFunc(s, 2) fmt.Printf("cap=%d\ts=%v\n",cap(s),s) fmt.Printf("cap=%d\ts1=%v\n",cap(s...阅读全文

博文 2016-08-30 16:00:00 52zjj

后Kubernetes时代,带你系统梳理K8S 12大关键特性

导读: Kubernetes如今风靡一时,所有主要的云服务提供商都将其作为部署云原生应用的解决方案。Kubernetes有哪些显著的特性和工具优势,让企业开始接受它?本文作者给出了系统的梳理。 “Action without orchestration is burn out; orchestration w/o action is management.” 没有编排的行动是完蛋的,没有行动的编排是管理,行动加上编排是领导。 ― Orrin Woodward” Kubernetes是一种优化资源利用率的抽象概念,它允许跨节点集群高效地进行应用程序分发。 Kubernetes,舵手 ! Kubernetes是一个希腊语单词,意思是“舵手”。 它是一个由谷歌开始的开源项目,从Borg衍生而来,在...阅读全文

博文 2018-03-14 10:34:56 数人云

值得收藏的TCP套接口编程文章

**欢迎大家前往[腾讯云+社区](https://cloud.tencent.com/developer/?fromSource=waitui),获取更多腾讯海量技术实践干货哦~** > 本文由[jackieluo](https://cloud.tencent.com/developer/user/1205848?fromSource=waitui)发表于[云+社区专栏](https://cloud.tencent.com/developer/column/4514?fromSource=waitui) ## TCP客户端-服务器典型事件 下图是TCP客户端与服务器之间交互的一系列典型事件时间表: 1. 首先启动服务器,等待客户端连接 2. 启动客户端,连接到服务器 3. 客户端发送一个请求...阅读全文

博文 2018-10-12 11:52:33 qcloudcommunity

golang的指针类型,unsafe.Pointer类型和uintptr类型的区别

一,区别 1,指针类型 golang支持指针类型,指针类型的变量存的是一个内存地址,这个地址指向的内存空间存的才是一个具体的值。 比如int,int32,A(自定义结构体类型),string等,都是指针类型。 golang的指针类型和c/c++的指针类型基本一样,但是多了几个限制: 1,int,int32等不同的指针类型不能相互转化. 2,指针类型不支持c/c++这样的指针运算。 2,unsafe.Pointer类型 这个类型比较重要,它是实现定位和读写的内存的基础。go runtime大量使用它。官方解释是: Pointer represents a pointer to an arbitrary type. There are four special operations availa...阅读全文

博文 2020-05-02 23:33:10 舒小贱

指针与引用的区别

指针与引用的区别。由new生成的指针指向了特定的内存,它是不变的。而由make生成的内存块大小是可变的,当切片的增长超出了cap指定的大小时,将会重新分配一块更大的内存并将原切片内容复制过去,切片指向了新的内存块,切片原来的内存将会释放并回收。所以切片指向的内存地址是会变的。如果这一切还象指针那样由程序员来管理,难度是很大的。好在GO语言中这一切由系统来自动管理,程序员使用切片的名字来引用特定的内容,而不需要知道它们变动到了实际内存的哪块位置。引用的实质是用名字操作代替了指针操作,从而屏蔽与简化了这背后的指针操作复杂性...阅读全文

golang获取本地ipv4地址

再一次项目中,需要获取本地的ip地址,code: package main import ( "fmt" "net" ) func LocalIp() string { addrs, err := net.InterfaceAddrs() if err != nil { fmt.Println(err) } var ip string = "localhost" for _, address := range addrs { if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { if ipnet.IP.To4() != nil { ip = ipnet.IP.String() } } } return ip ...阅读全文

博文 2018-09-21 18:34:39 苏州运维开发

探索Go内存管理(分配)

基于1.8.3版本,64位Linux操作系统 1、概述 Go内存管理基于tcmalloc,使用连续虚拟地址,以页(8k)为单位、多级缓存进行管理; 在分配内存时,需要对size进行对齐处理,根据best-fit找到合适的mspan,对未用完的内存还会拆分成其他大小的mspan继续使用 在new一个object时(忽略逃逸分析),根据object的size做不同的分配策略: 极小对象(size<16byte)直接在当前P的mcache上的tiny缓存上分配; 小对象(16byte <= size <= 32k)在当前P的mcache上对应slot的空闲列表中分配,无空闲列表则会继续向mcentral申请(还是没有则向mheap申请); 大对象(size>32k)直接通过mheap申请。 2、数...阅读全文

博文 2017-09-14 03:34:51 Love语鬼

goquery爬虫Boss直聘信息

---title: goquery爬虫Boss直聘信息tags: go,goqueryauthor: Clown95---# 背景Hello小伙伴们,在之前的文章中,我们对go的爬虫库goquery进行了简单的介绍,今天我们就来进行一个爬虫BOSS直聘Golang招聘信息的实战项目。![](https://imgconvert.csdnimg.cn/aHR0cDovL3d3MS5zaW5haW1nLmNuL2xhcmdlLzVmZTc5MTA2bHkxZzI1Z3ZkM2FuOWoyMTVvMHY4anhxLmpwZw?x-oss-process=image/format,png)# 需求在写代码之前,我们先了解下我们需要爬取什么内容。![](https://imgconvert.csdni...阅读全文

golang结构体指针解析

golang指针可以这样理解:本身为一个整型常量,但由于其声明时为指针,因此拥有了特殊的能力,即在其前增加 * ,即可直接访问内存编号为该整型常量的数据。而对于某个定义的常量,在前面加 & ,也可以获得数据的内存编号。当我们定义结构体指针时,问题出现了: type name int8 type first struct { a int b bool name } func main(){ var type1 = first{1, false, 2} var type_pointer *first = &type1 fmt.Println(type_pointer) } 上面的代码打印的结果为:&{1 false 2}由此可推论,结构体本身并没有代表其自身的内存地址,存在内存地址的是结构体内部...阅读全文

博文 2020-02-04 10:32:38 回到未来丶

GO服务器程序员招聘

我们是上海趣鱼网络科技有限公司,主要经营网络棋牌游戏和休闲网络游戏。因为业务扩张需要现招聘GO服务器程序员 工作职责: 1. 能使用GO编写棋牌游戏的逻辑 2. 能使用GO完成棋牌平台的功能 3. 能根据需求完成后台工具开发 技能要求: 1. 掌握GO语言,熟悉常用package,熟悉计算机网络编程,熟练掌握Tcp编程,熟悉并熟练使用golang原生数据类型 2. 熟悉mysql等数据库,以及较好的操作系统基础和算法基础 岗位要求: 1. 工作经验,熟悉开发流程 2. 态度认真,对开发质量有自我要求 3. 能抗压,能主动推动开发进度 4. 身体健康,能和团队成员保持沟通交流 待遇条件: 1. 1~2年工作经验,有完整GO服务器项目经验的。薪资为15~2...阅读全文

Go语言结构struct(普及golang)

/*640*60,创建于2013-5-24*/ var cpro_id = "u1290382"; 1.struct 简洁 这个的struct和C语言的很相似,模拟出class的功能,但是不完全的!没有构造函数等! 2.struct的申明 [php] package main import "fmt" type Person struct { Age int Name string } func main() { //初始化两种 a := Person{} a.Age = 2 a.Name = "widuu" fmt.Println(a) b := Person{ Age: 24, Name: "widuu", } fmt.Println(b) } [/php] 3.go指针操作 如下我们要...阅读全文

Golang的socket编程(一):常用数据结构和函数介绍

工作的原因接触到socket,要使用socket实现一个长连接。之前只在C/C++上用过socket,而且在学校的时候也只是简单的做聊天室小程序,并没有涉及到长连接。突然用到工作项目上,心里还是有点悬的,毕竟网上的资料也不是很多。这里就一步一步记录下学习的过程、遇到的问题以及最重要的——解决问题的方法。 一、说明golang中的socket需要用到net包,里面封装好了很多常用的函数方法以及元素类型。而且无需像C一样要经历socket,bind,listen,accept等等流程,只需要简单的几步流程就能完成,非常方便。 二、IP类型net包中定义的ip类型直接就是byte数组: 1type IP []byte 我们可以使用func parseIP(s string) IP 来把一个ip地址...阅读全文

博文 2018-05-17 09:28:21 马谦的博客

安全态势,交互发现 —— 基于阿里云轻松搭建安全大屏

摘要: 使用DataV大屏展现态势感知 DNS 会话日志,从而实现交互式安全威胁发现。 2017年,阿里云启动MVP(Most Valuable Professional)项目。顾名思义,MVP正在寻找阿里云最有价值专家,那些能够,并且愿意帮助他人,充分了解和使用阿里云技术的意见领袖。 本文是阿里云MVP 傅奎的实践分享,今天和大家讲讲 “安全态势,交互发现 —— 基于阿里云轻松搭建安全大屏 ” 一句话概述 背景介绍 产品介绍 需求分析 实现方法 导出态势感知 DNS 日志 定制返回 JSON 串的数据源API 定制 DataV 大屏,指定 API 数据源 发布监控大屏,看效果 交互式发现 补充说明 替你踩过...阅读全文

Docker源码分析(七):Docker Container网络 (上)

1.前言(什么是Docker Container) 如今,Docker技术大行其道,大家在尝试以及玩转Docker的同时,肯定离不开一个概念,那就是“容器”或者“Docker Container”。那么我们首先从实现的角度来看看“容器”或者“Docker Container”到底为何物。 逐渐熟悉Docker之后,大家肯定会深深得感受到:应用程序在Docker Container内部的部署与运行非常便捷,只要有Dockerfile,应用一键式的部署运行绝对不是天方夜谭; Docker Container内运行的应用程序可以受到资源的控制与隔离,大大满足云计算时代应用的要求。毋庸置疑,Docker的这些特性,传统模式下应用是完全不具备的。然而,这些令人眼前一亮的特性背后,到底是谁在“作祟”,到...阅读全文

博文 2015-03-29 20:00:57 孙宏亮

go-redis in golang

func main() { //设置redis服务器地址 spac := redis.DefaultSpec().Host("202.108.33.173") log.Print("spac:", spac) //创建一个异步的client Client, err := redis.NewAsynchClientWithSpec(spac) if err != nil { log.Fatal(err) } log.Println("Redis: ", Client) //get x k := "x" futureBytes, err := Client.Get(k) if err != nil { log.Panicln(err) } v, _ := futureBytes.Get(); l...阅读全文

博文 2015-11-02 20:00:00 s630405377

Go初探

官方网站:https://golang.org/ 标准库文档:https://golang.org/pkg/ 在线编码学习:https://play.golang.org/ PS:请自行FQ 简介安装Hello World 实例编译基础语法行分隔符注释标识符关键字数据类型指针类型(Pointer)数组(Array)结构化类型(struct)接口类型(interface)Map 类型Any类型类型转换类型增加方法变量作用域值类型和引用类型常量iota运算符运算符优先级条件与循环语句函数返回多个值参数匿名函数与闭包范围(Range)递归查询接口查询类型查询错误处理面向对象成员的可访问性封装继承多态goroutine和channel同步消息传递多个channel参考 简介 (大家好,我是go吉祥物...阅读全文

博文 2016-03-18 08:00:01 leestar54