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

Go语言的方法值和方法表达式

// code_20_struct_method_expression project main.go package main import ( "fmt" ) //方法表达式:也即“方法对象赋值给变量” //两种使用方式: //1)隐式调用, struct实例获取方法对象---->方法值 //2)显示调用, struct类型获取方法对象, 须要传递struct实例对象作为参数。---->方法表达式 type Person struct { name string sex byte age int } func (p *Person) PrintInfoPointer() { fmt.Printf("%p, %v\n", p, p) } func (p Person) PrintInfoV...阅读全文

博文 2018-10-05 20:35:12 ck_god

记一次vue+golang开发个人博客网站经历

源代码: 博客地址: http://percywang.top前端: https://github.com/pppercyWan... 后端: https://github.com/pppercyWan... 前言 大概在半年前,因为公司技术栈的原因。作为小前端的俺,对golang也产生了极大的兴趣。就想着用golang(iris) + vue.js来搭建一个博客。这半年因为加班的原因,留给自己的时间比较少。好歹前几日备案刚刚下来,也算是初步的搭建完成了。 博客风格 刚刚工作一年多,但搭建博客的想法在我刚接触前端的时候就有了。但是一直都不知道自己的博客应该长啥样,怎么去设计它。有一天在刷PC端twitter的时候,点了点按钮,滚了滚鼠标。行吧,就它了。 blog设计 我希望这个blog能够有...阅读全文

博文 2020-01-14 18:32:39 优雅的王德奥

关于go语言的闭包

package main import ( "fmt" ) func main() { var fs = [4]func(){} for i := 0; i < 4; i++ { defer fmt.Println("defer i = ", i) defer func() { fmt.Println("defer_closure i = ", i) }() fs[i] = func() { fmt.Println("closure i = ", i) } } for _, f := range fs { f() } } 这两天有时间学习了一下go语言。挺有趣的。 上面这段代码是关于closure和defer的用法。 go语言支持闭包,如果你在闭包函数中使用了上层函数的变量,那么这个变量的一...阅读全文

博文 2014-12-21 08:00:02 freshunter

阿里云VPN网关VPN-HUB功能发布,实现企业分支互通

摘要: 通过VPN-Hub功能在多个站点之间建立安全通信,使各个站点不仅可以和云上VPC互通,并且远程站点之间可以彼此通信。VPN-Hub连接可满足大型企业在各个办公点之间建立内网通信的需求。 **点此查看原文: http://click.aliyun.com/m/43194/** **功能概述** 阿里云VPN网关近期发布了VPN-HUB功能,该功能提供了一个云端的VPN接入点,企业线下IDC、办公点、门店等分支通过VPN接入,不仅是接入了云端VPC,还可以和其他所有接入的分支互通。 该功能适用于大型零售连锁商超、金融保险行业、多分支机构等线下拥有多个分支、办公点的企业客户通过VPN-HUB功能实现互连。 ![图片描述](http://img.blog.cs...阅读全文

IP地址转化为二进制数

``` package main import ( "fmt" "strconv" "strings" ) /* IP地址转化为二进制数 */ func main() { addrInt := ipAddrToInt("192.168.8.152") /* 十进制转化为二进制 */ c := strconv.FormatInt(addrInt, 2) fmt.Println("c:", c) /* 二进制转化为十进制 */ d, err := strconv.ParseInt(c, 2, 64) fmt.Println("d:", d, err) } func ipAddrToInt(ipAddr string) int64 { bits := strings.Split(ipAddr, "...阅读全文

博文 2017-11-09 01:25:51 luominggao123

Go语言中的运算符

1 概述 Go语言提供了,算术,关系,逻辑,位,指针,赋值运算符。本篇整体说明一下。 2 算术运算 + 相加 - 相减 * 相乘 / 相除 % 求余 ++ 自增 -- 自减 几个细节,需要留意一下。 整数与浮点数进行运算,会将整数转化为浮点数,再运算。 两个整数相除,结果是整数,取整数部分。5/3 结果会是 1。 求余,如果被除数或除数存在负数,那么余数与被除数保持一致。此处是求余不是取模。 ++/--,不区分前后,只有变量后的语法,就是 v++。同时++/--构成语句而不是表达式,意味着不能直接赋值。 3 字符串连接运算 + +运算符,也可以完成字符串的连接运算。 "Hello" + " " + "Hank!" 4 关系运算 == 检查两个值是否相等 != 检查两个值是否不相等 \> 检查...阅读全文

博文 2018-10-28 07:35:08 小韩说课

北京互联网公司招golang开发工程师(薪资高、待遇好)

北京筑巢聚合科技股份有限公司,产品是社交类软件,招聘golang开发工程师,各种福利保险、高薪资、纯互联网公司,5A级办公环境、公司注重企业文化及员工关怀建设,更有技术大牛做平台支撑,欢迎有想法的你加入! 公司官网:http://www.zcgames.cn/ 岗位介绍: 岗位职责: 移动互联网产品的服务器端开发。 任职资格: 1. 一年以上golang开发经验。3-5年服务器相关开发工作经验者且想转golang开发者也可考虑。 2. 熟悉MySql、Redis等数据库; 3. 具有高负载、高并发开发设计经验; 4. 掌握HTTP/TCP等相关网络协议; 5. 熟悉Linux服务器的基本配置和管理; 6. 有直播相关开发工作经验优先。 薪资15k-30K...阅读全文

CHAOS-简单实用的后门生成工具

CHAOS是一款非常简单实用的后门生成和监听工具,GitHub传送门 由于CHAOS是用Go语言编写的,因此第一步要安装Golang和UPX package,后者可以自动给生成的后门程序加上UPX的壳 root权限运行 apt install golang upx-ucl -y 拉取项目到本地 git clone https://github.com/tiagorlampert/CHAOS.git 运行 cd CHAOS/ go run CHAOS.go 进入下面的界面 可以看到有五个参数,第一个是本机IP地址,第二个是监听的端口,第三个是后门的名字,第四个询问是否加UPX壳,建议加上,有利于免杀,最后是询问是否现在开始监听,选择Y 可以看到开始监听,此时我们将CHAOS目录中的backdo...阅读全文

博文 2018-09-15 01:34:40 TryHard3r

golang学习记录

2012/06/17 Fri. 一.Go语言的基础组成 (1)包声明 package main //必须在非注释的第一行指出当前文件属于哪一个包。Package main表示一个可独立执行的程序,每个go应用都包含一个名为main的包 (2)引入包 import “fmt” // 格式上注意使用了双引号,fmt包包含了实现了格式化I/O(输入/输出)的函数 (3)函数 func main(){ //如果有init()函数则限制性init()函数,否则main函数将是程序启动时第一个被执行的函数 (4)注释 /*。。。*/ (5) 变量 //该程序无变量 (6)语句&表达式 fmt.Println("Hello,World") // 格式上注意无分号,Print和Println } (7)标识...阅读全文

初识golang之数组,slice,map学习

数组: 定义方式:var arr [n]type,n表示数组的长度,type表示存储元素的类型。定义好后,可以使用arr[0] = 42,这样指定下标来进行数组的读取和赋值。 注意:在go中长度也是类型的一部分,因此[3]int和[5]int是不同类型的。 go中数组不可以改变长度,数组之间的赋值是值的拷贝赋值,即当把一个数组作为一个参数传人函数的时候,传入的其实是数组的备份。arr := [10]int{1,2,5:6},da := [2][4]int{[4]int{1,2,3,4}, [4]int{5,6,7,8} },如果内部的元素和外部的一样,那么声明可以简化,直接忽略内部的类型 ea := [2][4]int{{1,2,3,4},{5,6,7,8}},如果不知道数组的个数,而是按照...阅读全文

Angular5+Go 博客搭建

Golang-Blog-Server blog_admin.png blog_front.png Go语言编写的简易版博客服务端,博客地址Track的博客 项目创建基于 go version go1.10.3 darwin/amd64 测试运行 go run main.go 打开http://localhost:8888 Api配置在./routers目录下,自行测试 正式环境部署使用docker-compose,yml文件参考 项目依赖 dotweb jwt redis goquery gorm govendor toml 相关项目 BlogFront博客客户端 Admin后台管理系...阅读全文

博文 2018-10-01 09:34:42 Traloy

TCP 编程

CS 结构 BS 结构 网络编程的基本介绍 Golang的主要设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端必不可少也是至关重要的一部分 网络编程有两种: TCP socket编程 是网络编程的主流。之所以叫做 TCP socket编程,是因为底层是基于Tcp/ip 协议的 比如QQ聊天 b/s结构的 HTTP 编程 我们使用浏览器去访问服务器的时候,使用的就是HTTP协议,而HTTP低层依旧是用 tcp socket实现的 。比如 京东商城 TCP/IP 协议 这个协议是internet中最基本的协议 IP地址 每一个Internet的主机和路由器都有一个IP地址,他包括网络号和主机号 IP地址有ipv4 和 ipv6 可以通过ipconfig查看 端口介绍 我们这里所指的端...阅读全文

博文 2020-04-05 13:32:43 乔大叶_803e

(译) Go 语言中没有引用传递

文链接:There is no pass-by-reference in Go 我之前关于指针的那篇帖 引起了很多关于引用传递的争议。这篇帖子算是对这些争议的回应吧。 首先要清楚的是:Go 语言中没有引用变量,所以 Go 语言就没有引用传递的函数调用的语法。 什么是引用变量? 在像 C++ 这样的语言中你可以给一个已经存在的变量定义一个别名,这个别名就被称为引用变量。 #include int main() { int a = 10; int &b = a; int &c = b; printf("%p %p %p\n", &a, &b, &c); // 0x7ffe114f0b14 0x7ffe114f0b14 0x7ffe114f0b14 return 0; } 你可...阅读全文

博文 2017-09-05 02:24:04 谢烟客

golang内存管理

几个关键数据结构 mspan 由mheap管理的页面,记录了所分配的块大小和起始地址等 mcache 与P(可看做cpu)绑定的线程级别的本地缓存 mcenter 全局空间的缓存,收集了各种大小(67种)的span列表 mheap 分配内存的堆分配器,以8kb进行页管理 fixalloc 固定尺寸的堆外对象空闲列表分配器,用来管理分配器的存储 内存分配逻辑 如果object size>32KB, 则直接使用mheap来分配空间; 如果object size<16Byte, 则通过mcache的tiny分配器来分配(tiny可看作是一个指针offset); 如果object size在上面两者之间,首先尝试通过sizeclass对应的分配器分配; 如果mcache没有空闲的span, 则向mc...阅读全文

博文 2019-08-09 00:32:55 SuperGopher

go语言的参数传递

对于一门语言,在函数传参时,存在两种方式,一种是值传递,一种是引用传递,那么go语言是怎么进行参数传递的值传递是传递的变量的副本,引用传递指的是传递该变量的地址,在值传递过程中,函数对函数形参数的修改,不会导致实参的修改,而引用传参,对形参的修改,会导致该实参的修改,这是过去我们在其它语言中的一些认知,那么go语言会颠覆我们过去的认知,使用了一种新的方式. demo1 package main import ( "fmt" ) func main() { a := 10 fmt.Println("实参的地址",&a) update(a) fmt.Println(a) } func update(b int) { b = 1 fmt.Println("形参的地址",&b) } // 运行结果 ...阅读全文

博文 2018-08-12 00:34:58 暮雨

Go语言中Socket通信TCP服务端

1、用法: (1)定义远程IP地址。使用net.ResolveTCPAddr()方法,定义一个TCP地址,做为本机监听地址。 (2)使用net.ListenTCP("tcp",localAddress)方法开始监听,并返回tcpListener对像。 (3)使用tcpListener.AcceptTCP方法进行接受连接。返回:net.TCPConn对像。 (4)对net.TCPConn对像进行读写操作。 (5)关闭连接。 2、代码: package main import ( "fmt" "io/ioutil" "net" ) func main() { localAddress, _ := net.ResolveTCPAddr("tcp4", "127.0.0.1:8080") //定义一...阅读全文

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

python, shell, golang获取本机IP地址

自:http://www.oschina.net/code/snippet_157439_18019 shell获取IP地址 /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" /sbin/ifconfig|sed -n '/inet addr/s/^[^:]*:\([0-9.]\{7,15\}\) .*/\1/p' | grep -v 127.0.0.1 python获取IP地址 方法1: def get_local_ip(ifname): import socket, fcntl, struct s = socket.socket(socket.AF_INET...阅读全文

博文 2015-12-21 21:00:05 wdt3385

golang使用net/http实现一对客户端和服务器连接的例子

golang的net/http封装很强大,可惜网上的教程或者源码很少。这里简单实现了一对服务器和客户端的连接。 客户端代码如下: package main import ( "fmt" "io/ioutil" "net/http" "strings" ) func main() { resp, err := http.Post("http://10.180.63.218:8080/test", "application/x-www-form-urlencoded", strings.NewReader("name=cjb")) if err != nil { fmt.Println("err") } defer resp.Body.Close() body, err := ioutil.Re...阅读全文

博文 2016-04-23 14:00:01 su_sai

ElasticSQL package converts SQL to ElasticSearch DSL

ElasticSQL----------- ElasticSQL package converts SQL to ElasticSearch DSL SQL Features Support:- [x] SQL Select- [x] SQL Where- [x] SQL Order BySQL- [x] SQL Group By- [x] SQL AND & OR- [x] SQL Like & NOT Like- [x] SQL COUNT distinct- [x] SQL In & Not In- [x] SQL Between- [x] SQL avg()、count(*), count(field), min(field), max(field)Beyond SQL Featur...阅读全文

博文 2017-06-09 03:41:29 farmerx

Golang 语言中的 Slice

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

go[x]agent在windows和ubuntu下的安装步骤

20140414: 最新安装方法,下面可忽略了。。 https://code.google.com/p/greatagent/ windows安装比较简单,网上很多,可参考http://mao[x]lihui.com/g[删除我]oagent-detailed-version-of-the-tutorial.html,或者https://co[x]de.g[x]oogle.com/p/go[删除我]agent/很详细。 它没提到的一点是: 上传应用的时候用到的密码不是gmail邮箱的密码,而是应用专用的密码,如果是第一次设置,需要到g[x]oogle account中有个“二次验证” 的东西,找找就找到了,它会生成一个16位的密码,写在纸上,密码只会出现这一次。如果你没有记下来,那只能重新生...阅读全文

博文 2015-12-22 18:00:01 victor0127

golang切片slice

切片slice是引用类型 len()函数获取元素的个数 cap()获取数组的容量 1.申明方式 (1)var a []int 与数组不同的是他不申明长度(2)s2 := make([]int, 3, 10) //元素的类型,元素的数量,元素的容量 fmt.Println(len(s2), cap(s2)) 输出元素的数量和容量 2.讲数组转换成切片 2 a := [10]int{} 3 fmt.Println(a) 4 s1 := a[:10] //取前10个元素 [5:]取 5-最后的元素 5 fmt.Println(s1) 3.slice测试 1 a := []byte{'a', 'b', 'c', 'd', 'e', 'f', 'h'} 2 sa := a[2:5] 3 fmt.Pri...阅读全文

博文 2015-03-13 03:00:01 chuanheng

[以太坊源码分析][p2p网络03]:发起TCP连接请求

上一节介绍的是底层p2p网络开启后,监听别的远程节点发送来的TCP连接请求。这一节是个续集,要介绍的是本地节点如何向远程节点发起TCP连接请求。 这一次,是我们打电话cal别人。但是这一次有点不同,我们是以做任务的形式向别人发起拨号,而且每次做很多个任务。每一个任务里都包含了连接类型和远程节点信息。 究竟是怎么回事,请往下看。 0.索引 01.从Server服务开始 02.初始化拨号状态,以及创建任务 03.计划任务和开启任务 04.Do 执行任务 05.总结 1.从Server服务开始 Server服务启动,也开始了拨号 在上图中,主要是看第3个步骤,初始化拨号状态,和第6个步骤,开始拨号。(这里提一下,监听连接和发起连接是两个单独的协程,所以并不是监听后再发起连接。) 2.初始化拨号状态...阅读全文

博文 2018-12-23 14:34:43 jea525

Go 语言中的取止运算符"&"貌似有bug

```go //定义一个int类型变量 var v1 int= 10 //声明一个指向int指针变量, var vp *int //用取值运算符&拿到变量v1的内存地址,并把它保存在指针变量vp中 vp = &v1 //打印指针变量的值 fmt.Println(vp) //会打印一个0x开头的十六进制形式的地址,这里都没问题。。 //声明一个结构体类型 type student struct{ Id int Name string } //定义一个student结构体变量 var st1 student = student{1,"小明"} //声明一个student var st1p *student //用取值运算符&拿到变量s...阅读全文

go程序调试

调试程序是程序猿的一项必备技能,有多种手段来调试程序,如打印控制台输出,查看日志,以及设置断点,使用debug做单步跟踪进去调试。这篇文章主要从go使用debug为题进行展开。 GDB 介绍GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。 在mac上安装,会有认证方面的问题,查了一些资料,没能解决,就放弃了。使用vagrant搭建了一个go的环境并安装了gdb工具,在需要使用gdb时,通常是将代码通过vagrant目录映射到linux虚拟主机中,然后进行GDB调试。这种用的也不是很多,一般主要使用GDB提供的x命令,查看下内存的值。debug目标 设置断点 查看变量值的输出 查看变量内存地址 查看变量内存值 修改变量的值 基于以上四点,我们通过程序来展示gdb的基本用法gdb...阅读全文

【GoLang】Web工作方式

我们平时浏览网页的时候,会打开浏览器,输入网址后按下回车键,然后就会显示出你想要浏览的内容。在这个看似简单的用户行为背后,到底隐藏了些什么呢? 对于普通的上网过程,系统其实是这样做的:浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP Request(请求)包后,服务器接收到请求包之后才开始处理请求包,服务器调用自身服务,返回HTTP Response(响应)包;客户端收到来自服务器的响应后开始渲染这个Response包里的主体(body),等收到全部的内容随后断开与该服务器之间的TCP连接。 图3.1 用户访问一个Web站点的过程 一个Web服务...阅读全文

博文 2016-11-26 01:00:04 teng_ontheway

go中的引用类型

首先,go中的赋值,都是值传递 a := 1 b := a x := Struct{} y := x 复制代码他们都是在内存中有独立空间的,也就是copy的过程,所以这里对y的某个属性的改动,并不会影响x 那么我们要让两个变量指向同一个内存怎么办呢,可以使用引用类型: y := &x 复制代码这时候,y的类型是*Struct,这时候我们可以对y进行修改,修改完之后,x也会发现变化,因为y现在是一个引用类型,他指向的是x结构体所在的内存 我们可以通过: y.variable = xxx 复制代码来直接调用引用类型的结构体赋值,但是要注意的是,这是go的语法糖,他只是帮助我们简化了通过指针来获取实际内存的过程,完整的写法应该是这样的: (*y).variable = xxx 复制代码*y是对指针...阅读全文

golang招聘

golang招聘 岗位职责: . 使用Go语言实现公司的相关产品。 . 设计和实现各种平台级软件系统和业务系统。 . 设计或辅助设计相关系统的架构。 . 负责和保证相关系统的稳定、持久运行。 . 独立解决相关系统的技术问题。 任职要求: . 计算机或数学相关专业本科以上学历。 . 主动积极,善于学习和总结,乐于分享,有较强的团队精神。 . 熟悉不同的GOLANG组件或框架 . 熟悉关系型与非关系型数据库更佳 . 熟练掌握各种测试和排错工具,熟练运用Git等源代码工具 . 具备开发和实施多层次架构的GOLANG后台服务。 . 具备较强的解决问题和性能优化的能力。 . 熟悉 C/C++ 或者其他服务端语言开发经验者优先。 . 熟悉Tcp/ip协议栈、HTTP等网络协议 . 有高并发分布式系统开发...阅读全文

博文 2017-03-02 04:00:21 木易杨0622

go语言获取本地IP地址(图形界面)

说明: 程序是转载过来的, 但是开始运行时,没有成功,后来去看了下https://github.com/lxn/walk 这个包的使用方法, 成功了。希望对其他有借鉴。 编译方法见: https://github.com/lxn/walk 这里有一个文件需要放在编译后的文件夹中,就是 test.exe.manifest === test.go package main import ( "fmt" "log" "net" "strings" ) import ( "github.com/lxn/walk" . "github.com/lxn/walk/declarative" ) func main() { var te *walk.TextEdit if _, err := (MainWi...阅读全文

博文 2015-06-17 23:02:39 zistxym

leaf 和cocos creator 游戏实战(二)注册与登陆

mongodb的安装及配置,参考下文: https://blog.csdn.net/heshushun/article/details/77776706 proto注册协议扩展: 1.服务端: 编译 lobby.proto 文件(对此不了解?请先阅读《在 Golang 中使用 Protobuf》一文)得到 lobby.pb.go 文件,命令如下: protoc --go_out=. lobby.proto 将lobby.pb.go 放在LeafServerExample src/msg文件夹下。 2.客户端: 把lobby.proto 复制到LeafServerCocosClient node_modules.bin文件夹下,把proto文件编译成静态文件使用: pbjs -t static...阅读全文

博文 2018-08-19 12:34:51 simpleDis

反向代理 IP 地址和端口rein

**rein** 主要用于进行反向代理IP地址和端口,功能类似于 `nginx` 的 `upstream` 模式和`rinetd` 的功能,由于`rein`使用了`golang`语言开发,并且提供已经编译好的可下载版本,在部署配置方面比它们要方便些。 功能列表: 1. 反向代理`IP`和端口。 2. 提供本地文件的快速网络(`http`模式)分享。 ### **1. 简单快速部署** #### _**1.1 CentOS/RHEL/Ubuntu 平台**_ 已经编译好的版本下载地址: [https://note.youdao.com/ynoteshare1/index.html?id=b1e1ad270ba1b1af97ebdf3e2c8b7403&type=note]...阅读全文

用聊天机器人控制Arduino开关灯

这是毕业设计做的一个小项目,实现了一个利用QQ机器人控制arduino开关灯的物联网应用,论文设计中考虑了多种情况,用到了很多东西,还实现了一个DSL语法解析引擎,用来做语义判断,这里我们不介绍这么多,只做一个最简单的实现。 所需物料: Arduino开发板 W5100网络通信模块 网线等基础条件物料 一个LED发光二极管或者继电器模块 通信及控制流程 控制流程图 简单解释: User发送Control Command到Web Server,W5100轮询Web Server,得到的结果返回给Arduino,程序根据结果执行开关LED/继电器等操作。 注意要点 Web Server可以没有公网IP,但是要保证能让W5100和QQ Robot Framework访问到。 整体设计 一些废话 w...阅读全文

博文 2018-08-18 14:34:57 维生素茜

golang 方法与接收者

结构体_结构体方法(接收者).png 例子: package main import "fmt" type person struct { name string age int } func (p person)Hello() { fmt.Printf("Hello, %s\n", p.name) } // 拷贝副本,复制操作 //func (p person)Guonia() { // p.age++ //} // 传递指针(内存地址),真正修改变量值 func (p *person)ZhenGuonia() { p.age++ } func main() { //实例化一个结构体 p1 := person{ name:"小麦客", age:666, } p1.Hello() //p1....阅读全文

博文 2020-04-08 07:32:48 小麦客

Go语言smtp模块发纯文本文件

package main import ( "fmt" "net/smtp" ) func main() { auth := smtp.PlainAuth("text/plain", "fyxichen@163.com", "123456", "smtp.163.com") to := []string{"123456@qq.com"} msg := []byte(`To:123456@qq.com From:czxichen@163.com Subject:测试 Content-Type: text/plain; charset=UTF-8" this is test mail`) err := smtp.SendMail("smtp.163.com:25", auth, "fyxiche...阅读全文

博文 2015-06-17 23:07:18 fyxichen

分水岭 golang入坑系列

第三式开篇语有些负面, 所以这里就不贴了。有兴趣的自己可以去看看 https://andy-zhangtao.gitbooks.io/golang/content/ 。怒发冲冠,意气之作。看完就完了,别当真。把下面的东西当真就行。 不看内容,只看标题还以为这是一个小说呢。 如果哪天心血来潮,没准会写一篇小说。但自从参加朋友婚姻之后,就受到了打击。 同样进入30岁,有的同学已经年入上百万,前呼后拥。 而自己除了会写点"水货"代码,别无他长。 感慨良多,还是感觉自己不是一块能依靠写代码发家致富的料。 所以会分出一部精力,来考虑如何实现技术变现。 但这个系列仍然会写完,不会虎头蛇尾。因此本节起名:分水岭。(这里为cnblogs的乁卬杨同学发一封表扬信,这位同学大胆留言说第三式写的有些负面,我重看了...阅读全文

博文 2017-12-01 00:00:01 vikings-blog

go 指针和内存分配详解

定义 了解指针之前,先讲一下什么是变量。 每当我们编写任何程序时,我们都需要在内存中存储一些数据/信息。数据存储在特定地址的存储器中。内存地址看起来像0xAFFFF(这是内存地址的十六进制表示)。 现在,要访问数据,我们需要知道存储它的地址。我们可以跟踪存储与程序相关的数据的所有内存地址。但想象一下,记住所有内存地址并使用它们访问数据会有非常困难。这就是为什么引入变量。 变量是一种占位符,用于引用计算机的内存地址,可理解为内存地址的标签。 什么是指针 指针是存储另一个变量的内存地址的变量。所以指针也是一种变量,只不过它是一种特殊变量,它的值存放的是另一个变量的内存地址。 在上面的例子中,指针p包含值0x0001,该值是变量的地址a。 Go类型占用内存情况 unsafe包可以获取变量的内存使用...阅读全文

博文 2018-12-21 16:34:48 jerry

Go语言结构struct

/*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指针操作 如下我们要...阅读全文

理解 Go 指针

#指针 变量存储的是一个值,但是这个值在内存中有一个地址,而指针保存的就是这个地址,通过这个地址,可以获取到值。 看例子: ```go func main(){ var a int = 123 p := &a fmt.Println(*p) } ``` 上面例子中,首先定义的了一个 `a` 变量,值为:`123` 其后通过 `&` 符号,为 `a` 生成一个指针,其实就是内存地址 最后,通过 `*` 符号可以将 `p` 指针的值给取出来 这个过程兜兜转转又回来原点,其实这么做的目的是为了能获取到 `a` 变量的原始值。 因为给函数传递的参数是对变量的建立副本,简单来说就是 `a` 变量赋值给另外一个变量,对这个副本变量修改不会影响到 `a` 变量。 而有些时候想要获取到原始值,就可以这么做。...阅读全文

PHP面试题2019年新浪工程师面试题和答案解析

一、单选题(共28题,每题5分)1.以下语句输出的结果是什么?​A、3$a\$a3336B、33\$a3336C、$a$a\$a3336D、3$a\$a333$a$a参考答案:A答案解析:\是转义的意思2.包含文件方式,下列哪个是错误的?A、includeB、include_onceC、requireD、import参考答案:D答案解析:import是CSS的引入方式。 3.三个人独立地破译一份密码,已知各人能译出的概率分别为 1/5,1/4,1/3,则密码能被破译的概率为 ?A、1/60B、3/5C、59/60D、13/30参考答案:B答案解析:题目中,至少有一人能破译密码和三人都不能破译密码是对立事件。 所以至少有一人能译出的概率=1-三人都没译出的概率=1-(1-1/5)(1-1/3)...阅读全文

博文 2019-10-10 22:13:39 a993089249

使用golang写一个高性能端口扫描器,支持IP范围,端口号范围

功能:可以快速扫描指定端口范围,ip地址范围。将扫描结果保存到本地!先来体验一下运行后的效果: ![image.png](https://static.studygolang.com/200113/7e43c4ba5d3e7761c8135a1c2052e48e.png) ![image.png](https://static.studygolang.com/200113/e16172fd8d310c5df622f06759eeb27b.png) ### 帮助信息 ``` scanPort -h Options: -h 帮助信息 -ip string ip地址 例如:-ip 192.168.0.1-255 或直接输入域名 xs25.cn (default "127.0.0.1") -n in...阅读全文

博文 2020-01-13 19:00:14 duzhenxun

深入解析 Go 中 Slice 底层实现

切片是 Go 中的一种基本的数据结构,使用这种结构可以用来管理数据集合。切片的设计想法是由动态数组概念而来,为了开发者可以更加方便的使一个数据结构可以自动增加和减少。但是切片本身并不是动态数据或者数组指针。切片常见的操作有 reslice、append、copy。与此同时,切片还具有可索引,可迭代的优秀特性。 一. 切片和数组 关于切片和数组怎么选择?接下来好好讨论讨论这个问题。 在 Go 中,与 C 数组变量隐式作为指针使用不同,Go 数组是值类型,赋值和函数传参操作都会复制整个数组数据。 func main() { arrayA := [2]int{100, 200} var arrayB [2]int arrayB = arrayA fmt.Printf("arrayA : %p , ...阅读全文

博文 2018-05-18 19:27:23 halfrost.com

以C视角来理解Go内存逃逸

前言 相信很多有过 clang 开发经验的 gopher 都会很奇怪,go 里面到处都充斥着看似静态分配的局部变量却还能通过指针传递正常游走于各种函数的返回之间,这要在 clang 里面就是个教科书般典型的指针错误使用范例,这到 golang 这边就成了语言特性之一还被开发团队所推崇,这是为什么? 我们都知道在 clang 中所有静态内存的分配都是在 stack 上进行,函数体在执行结束出栈后所有在栈上分配的内存都将得到释放,如果此时直接返回当前作用域变量的指针,这在下层函数的寻址行为就会因为出栈的内存释放而造成空指针异常。这个时候我们就得需要用 malloc 在 heap 动态分配内存,自己管理内存的生命周期,自己手动释放才是安全保险 memory safety 的。 escape ana...阅读全文

博文 2018-05-19 20:50:01 音風の部屋

程序猿修仙之路--数据结构之你是否真的懂数组?

但凡IT江湖侠士,算法与数据结构为必修之课。早有前辈已经明确指出:程序=算法+数据结构 。要想在之后的江湖历练中通关,数据结构必不可少。数据结构与算法相辅相成,亦是阴阳互补之法。 开篇 说道数组,几乎每个IT江湖人士都不陌生,甚至过半人还会很自信觉的它很简单。 的确,在菜菜所知道的编程语言中几乎都会有数组的影子。不过它不仅仅是一种基础的数据类型,更是一种基础的数据结构。如果你觉的对数组足够了解,那能不能回答一下: 数组的本质定义? 数组的内存结构? 数组有什么优势? 数组有什么劣势? 数组的应用场景? 数组为什么大部分都从0开始编号? 数组能否用其他容器来代替,例如c#中的List? 定义 百科 所谓数组,是相同的元素序列。数组是在程序设计中,为了处理方便,把具有相同类型的若干元素按无...阅读全文

博文 2019-02-26 18:34:42 大菜Rain

Go语言学习(九)文件操作

1.相关api介绍 1.1建立File内存地址api //返回File的内存地址,错误信息,通过os库调用 func Create(name string) (file *File, err Error) //返回文件的内存地址,通过os库调用 func NewFile(fd int, name string) *File 1.2打开文件api //返回File的内存地址,错误信息,通过os库调用 func Open(name string)(file *File,err Error) //返回File的内存地址,错误信息,通过os库调用 func OpenFile(name string,flag int,perm unit32)(file *File,err Error) 1.3写文件a...阅读全文

博文 2016-04-02 10:00:00 mChenys