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

Go位运算:取反和异或

在Go规范,^ 这个运算符在一元运算符和二元运算符中都出现了。那么他们分别是啥? 在规范中说道:^ bitwise XOR integers 这是按位异或。比如: package main import "fmt" func main() { fmt.Println(5^2) } 到这执行:[http://play.golang.org/p/iZioqWSSdA](http://play.golang.org/p/iZioqWSSdA) 一般语言中,按位取反是:~ Go中是不是这样呢?可以写个程序试一下: package main import "fmt" func main() { ...阅读全文

go语言的chan

chan是一个FIFO队列,chan分成两种类型同步和异步同步的chan完成发送者和接受者之间手递手传递元素的过程,必须要求对方的存在才能完成一次发送或接受异步的chan发送和接受都是基于chan的缓存,但当缓存队列填满后,发送者就会进入发送队列, 当缓存队列为空时,接受者就会接入等待队列。 chan的数据结构: struct Hchan { uintgo qcount; // total data in the q uintgo dataqsiz; // size of the circular q uint16 elemsize; uint16 pad; // ensures proper alignment of the buffer that follows Hchan in mem...阅读全文

博文 2015-05-18 03:00:01 richmonkey

ubuntu下最新版golang安装教程

相信打算安装golang的同学们早已看了很多安装教程了,网上的主流方法有两种,一种是 sudo apt-get install golang-go 简单暴力,但是由于现在很多golang的库已经要求 >1.1 ,而 apt-get 安装的是 1.02 ,也建议大家安装最新版的golang,因此推荐手动安装,教程本身没有问题,但是由于某些特殊原因,可能导致安装失败甚至卡在莫名奇妙的地方。在卡了一个中午后,我还是写下这篇文章总结下要注意的地方。 以ubuntu wiki的 安装教程 为例: 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 $ sudo apt-get insta...阅读全文

博文 2014-10-06 07:32:32 stonxer

Go语言/golang/位操作/取反/异或/左移/右移

Go语言位操作实例 package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 ...阅读全文

博文 2014-10-04 19:27:13 viney

golang二进制bit位的常用操作

package main import ( "fmt" "github.com/imroc/biu" ) /** golang二进制bit位的常用操作,biu是一个转换二进制显示的库 mengdj@outlook.com */ func main() { var( /** 1个字节=8个二进制位,每种数据类型占用的字节数都不一样 注意位操作千万不要越界了,如某个类型占8个bit位,偏移时候不要超过这个范围 */ a uint8=30 ) //a输出结果:00011110 fmt.Println(biu.ToBinaryString(a)) /** 将某一位设置为1,例如设置第8位,从右向左数需要偏移7位,注意不要越界 1<<7=1000 0000 然后与a逻辑或|,偏移后的第8位为1,逻辑|...阅读全文

博文 2018-08-17 12:30:00 mengdejun

golang的位运算操作符的使用

& 位运算 AND | 位运算 OR ^ 位运算 XOR &^ 位清空 (AND NOT) << 左移 >> 右移 感觉位运算操作符虽然在平时用得并不多,但是在涉及到底层性能优化或者使用某些trick的时候还是比较有意思。 &(AND) |(OR) 就不提了最常用的东西 会编程就会。 &操作的话是当 两个数需要同时为1的时候才会保留。 例如 0000 0100 & 0000 1111 => 0000 0100 => 4 | 操作的话是当 两个数同时为1或者1个为1一个不为1的时候会保留。 例如 0000 0100 | 0000 1111 => 0000 1111 => 15 ^(XOR) 在go语言中XOR是作为二元运算符存在的: 但是如果是作为一元运算符出现,他的意思是按位取反,例如 pa...阅读全文

博文 2017-01-07 08:00:02 henrylee2cn

golang取两个数字之间的随机数

golang取两个数字之间的随机数 package main import ( "crypto/rand" "math/big" "fmt" ) func main(){ fmt.Println(RandInt64(100,3000)) } func RandInt64(min,max int64) int64{ maxBigInt:=big.NewInt(max) i,_:=rand.Int(rand.Reader,maxBigInt) if i.Int64()阅读全文

博文 2015-11-09 21:00:01 别人说我名字很长

golang 位运算

http://blog.opskumu.com/golang-bitwise.html 位操作是程序设计中对位模式按位或二进制数的一元和二元操作. 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多. 在现代架构中, 情况并非如此:位运算的运算速度通常与加法运算相同(仍然快于乘法运算). 位操作符 一、简介 关于位运算的操作,维基百科关于 位操作符 的理论介绍已经非常清楚了。关于 Golang 的位运算其实和 C 语言比较类似,除了取反的操作和 C 语言有点区别,Golang 使用的是^x,而 C 使用的则是 ~x取反。 二、概念 << [ 左移 ] 1 << 2 == 4输出 0100 ,相比右移更常见,移位后空缺的部分全部填0 >> [ 右移 ] 10 >>...阅读全文

博文 2016-03-10 15:00:03 leonpengweicn

golang把io.ReadCloser类型转化为[]byte

//比如要解析resp.Body(io.ReadCloser),我们可以这样处理 body, err := ioutil.ReadAll(resp.Body) 接着,我们继续分析分析函数 func ReadAll(r io.Reader) ([]byte, error) { return readAll(r, bytes.MinRead) //const MinRead = 512 } // func readAll(r io.Reader, capacity int64) (b []byte, err error) { buf := bytes.NewBuffer(make([]byte, 0, capacity)) //func NewBuffer(buf []byte) *Buffer...阅读全文

博文 2015-09-08 09:00:02 webyh

golang 位操作

package main import ( "fmt" ) // 获取0-n之间的所有偶数 func even(a int) (array []int) { for i := 0; i < a; i++ { if i&1 == 0 { // 位操作符&与C语言中使用方式一样 array = append(array, i) } } return array } // 互换两个变量的值 // 不需要使用第三个变量做中间变量 func swap(a, b int) (int, int) { a ^= b // 异或等于运算 b ^= a a ^= b return a, b } // 左移、右移运算 func shifting(a int) int { a = a << 1 a = a >> 1...阅读全文

博文 2014-12-20 19:00:01 moodlxs

Go语法简略 - 依赖注入

通过对web应用框架背后原理的探索,引入了依赖注入的概念。如果你需要读懂或者写一个框架的话,依赖注入的思想绝对能帮到你。本文记录对依赖注入的探索。 区分依赖和宿主 现在我们把问题简化一下: package main import "fmt" func MethodA(name string, f func(a int, b string)) { fmt.Println("Enter MethodA:", name) f(3030, "zdd") // 给f注入参数 fmt.Println("Exit MethodA:", name) } func MethodB(a int, b string) { fmt.Println(a, b) } func main() { d := MethodB...阅读全文

博文 2015-10-12 19:00:00 zddmail

阿里云全球首次互联网8K直播背后的技术解读

摘要: 3月28日,云栖大会·深圳峰会现场,阿里云发布并现场演示了阿里视频云最新8K互联网直播解决方案。这是全球发布的首个8K视频云解决方案,也是全球首次8K互联网视频直播。 视频地址:https://v.qq.com/x/page/v0618atp7nr.html 舞台的屏幕上显示了从1300公里以外的阿里巴巴杭州园区传输回来的直播图像视频。 3月28日,云栖大会·深圳峰会现场,阿里云发布并现场演示了阿里视频云最新8K互联网直播解决方案。这是全球发布的首个8K视频云解决方案,也是全球首次8K互联网视频直播。 视频地址:https://v.qq.com/x/page/v0618atp7nr.html 舞台的屏幕上显示了从1300公里以外的阿里巴巴杭州园区传输回来的直播图像视...阅读全文

go 最大的无符号数

这里其实主要是翻译http://blog.golang.org/constants,其中An exercise: The largest unsigned int 部分。 如何构造最大的无符号数。对于确定位数的无符号数,只要移位即可,例如:对于uint32,只要const MaxUint32 = 1<<32 - 1 。 但是,对于不确定位数的uint,就不能这样了,其实,我们知道,最大的无符号数和-1在位数上是一样的。但是,无论是 const MaxUint uint = -1 // Error: negative value , 还是const MaxUint uint = uint(-1) // Error: negative value ,都不能通过编译,原因自然是类型与范围的冲突了。...阅读全文

博文 2015-12-22 04:00:00 lmxmimihuhu

四川麻将服务器程序nanoserver

四川麻将玩法, 血战到底(三人模式/四人模式)服务器程序, 房卡模式, 支持俱乐部. 基于[`Nano`](https://github.com/lonnng/nano)开发, 本程序主要用于演示如何使用`nano`进行游戏服务器程序开发, 演示客户端下载地址: iOS: [https://fir.im/tios](https://fir.im/tios) Android: [https://fir.im/tand](https://fir.im/tand) 如果要连接自己的服务器, 可以反编译android的包, 然后修改appConfig.lua中的远程服务器地址, 然后重新打包就可以玩了. 首次运行自动创建MySQL数据库表结构 结构化日志 血战三人玩法/四人玩法完整实现...阅读全文

golang os

const ( O_RDONLY int = syscall.O_RDONLY // open the file read-only. O_WRONLY int = syscall.O_WRONLY // open the file write-only. O_RDWR int = syscall.O_RDWR // open the file read-write. O_APPEND int = syscall.O_APPEND // append data to the file when writing. O_CREATE int = syscall.O_CREAT // create a new file if none exists. O_EXCL int = syscall.O_...阅读全文

博文 2014-10-04 19:26:01 ggaaooppeennngg

Go 位运算

// xuhh_go_位运算符 project main.go /* 位移操作 << : 向左移位 可以看做是 乘以2的几次方 位移操作 >> : 向右移位 可以看做是 除以2的几次方 and操作 & : 都为1 才是1 or 操作 | : 只要有一个是1 那么就是1 取反 ^ :有一个为1 则 就是1 两个1 或者两个0 全是 0 标志位操作 &^ : a &^ b = (a^b) & b 其实就是清除标记位 (将a中为1的位 如果b中相同位置也为1,则将a中该位置修改为0,a中其他位不变) */ package main import ( . "fmt" ) func main() { var p = Person{"xuhh", "12"} Println(p) const a = 2...阅读全文

博文 2016-03-17 12:00:01 xuheazx

正则表达式

匹配纯文本 Ben Hello, my name is Ben. Please visit my website at http://www.forta.com. 匹配任意字符(默认模式不匹配\n,单行模式可以匹配\n) a.c abc acc a2c.a.\.xls na1.xls na2.xls前面两个点任意字符 ,最后一个转义点, . 和 \ 等都叫做元字符(metacharacter),表示这个字符有特殊含义,而不是字符本身的含义,如果我们要匹配元字符的话,我们需要对元字符进行转义 [] 字符集,对应位置可以是字符集中的任意字符,字符集中的字符可以逐个列出,也可以给出范围,如[abc]或[a-c] ,第一个字符如果是^则表示取反,如[^abc];所有特殊字符在字符集中都失去原有的特殊...阅读全文

博文 2018-12-01 00:34:42 越塔打哭你

uboot启动zImage(go)和uImage(bootm)分析

1.之间差异。bootm 加载linux镜像是加载uIamge,uIamge是由mkimage制作而来,和zIamge的差异是uIamge是zIamge压缩过的,bootm需要先对uIamge解压,解压地址为内核入口地址。当解压完成时uIamge和zIamge 几乎是相同的,具体差异可以论述。uboot目前只能支持uImage启动,不支持zImage启动2.bootm解压过程---------------------------------------------------------------------------## Booting image at 08808000 ...Image Name: Linux-2.6.14.7Image Type: ARM Linux Kernel...阅读全文

博文 2015-09-20 09:00:00 stonye

golang begin

1. install go 2. configure sublimehttp://blog.csdn.net/cyxcw1/article/details/10329481 3.io package 1) io.Reader 1 // io.Reader 接口示例 2 package main 3 4 import ( 5 "fmt" 6 "io" 7 "os" 8 "strings" 9 ) 10 11 func main() { 12 FOREND: 13 for { 14 readerMenu() 15 16 var ch string 17 fmt.Scanln(&ch) 18 var ( 19 data []byte 20 err error 21 ) 22 switch stri...阅读全文

博文 2014-10-04 19:26:01 harrysun

linux-golang编译器安装与配置

golang编译器安装与配置 golang目前有两种编译,一个是golang官方提供的,另一个是gnu提供的gccgo; golang官方编译器安装与配置 安装gcc工具,因为golang有些功能是使用c写的,所以构建golang的编译是必须的 $ sudo apt-get install bison gawk gcc libc6-dev make 安装mercurial工具,目的使用hg命令来提取golang的源代码 $ sudo apt-get install mercurial 代取提取,如果您的网速比较慢的话,此步要多花点时间 $ hg clone -u release https://go.googlecode.com/hg/ go 编译golang $ cd go/src $ ....阅读全文

博文 2016-04-02 14:00:01 shuanger_

P2P GO Client角色的协商

1 P2P GO Client协商流程  协商流程 P2P GO/Client的协商流程只需要简单的几步,如下图: P2P连接发起端:指在P2P连接过程中主动发起P2P连接的机子,用A表示; P2P连接接受端:指在P2P连接过程中接受P2P连接的机子,用B表示; 图1 P2P GO/Client协商流程 如上图所示: 1、 首先A在P2P连接初始化准备完成后,发送一个“GO Negotiation Request”给B; 2、 而这时候,B并没有准备好,这时B先保存下A的协商信息,然后发送一个“GO Negotiation Response”给A,该response包含有B的协商信息,但在该response中,B把状态state设置为P2P_SC_FAIL_INFO_CURRENTLY_U...阅读全文

博文 2016-09-17 05:00:02 zjli321

用Golang编写的网际校验和算法

网际校验和算法适用于IP、TCP、UDP、ICMP等协议的校验。 func CheckSum(data []byte) uint16 { var ( sum uint32 length int = len(data) index int ) //以每16位为单位进行求和,直到所有的字节全部求完或者只剩下一个8位字节(如果剩余一个8位字节说明字节数为奇数个) for length > 1 { sum += uint32(data[index])<<8 + uint32(data[index+1]) index += 2 length -= 2 } //如果字节数为奇数个,要加上最后剩下的那个8位字节 if length > 0 { sum += uint32(data[index]) } //...阅读全文

博文 2015-06-23 18:06:14 u011774512

如果Android真的收费了,你怎么看?

**声明:本文有终端研发部yuer原创发布,未经允许,不得转载** ### 前言 今天突然看到一群里有人发了下面这样一张图片,然后群里又炸了! ![ ](https://upload-images.jianshu.io/upload_images/14371339-8a0607fb7fa57008.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 于是又和同事讨论了android收费的问题,然后隔壁正在玩农药的UI妹子就笑了... ##### 没错! **安卓可能要收费了!安卓可能要收费了!安卓可能要收费了!** ##### 欧盟两张罚单,谷歌白干半年 欧盟向来以反垄断法严厉著称,苹果、三星、英特尔、高通等巨头都吃过欧盟反垄断法的...阅读全文

博文 2018-10-24 10:28:57 androidstarjacksky

/src/pkg/math/abs.go源码阅读兼谈golang与汇编

开头的碎碎念: 对接微信公众平台的时候,开始有个字符串排序,我接触golang毕竟时间尚浅,很多东西都是能从网上找到就直接从网上找,结果就是找了好几个示例代码都不好用,好容易一个好用的,从头开始实现的,代码太多了。我就想,google应该把这些玩意都封装好了吧,不然一个新出的语言只有基础语法,没有强大的标准库,谁用这玩意啊。也就是那时候第一次接触src文件夹,后来发现pkg里的那些go文件是绝好的学习资料。 那么多文件、文件夹从哪开始看呢,我的原则,先找没有依赖性的,也就是没有import的,这么寻摸着就找到了math文件夹。笨方法,从a开始按顺序来呗,这不就碰到了abs.go 难以理解的第12行: // Copyright 2009 The Go Authors. All rights r...阅读全文

博文 2014-10-04 19:26:06 wlts

Golang、Python中刷直播视频弹幕的功能。

别人需要做这个功能,开始用易语言实现,发现被编码的问题绕到坑底了,ANSI-UTF8 ,gb323-uft8 ansi到un等等,做到最后也没有完成,因为做一个程序顾客的要求有时候很苛刻,有的甚至需要几个小时完成。 因为这个APK,是新版本的,我曾经研究了几百个APK,也反编译了上百个SWF,研究过上百个JS加密的,所以非常懂得这些东西套路,目前SO库加密的比例很几年前的20%急剧上升到目前的90%,也就是说,反编译上基本上是一条不归路、也是一条血路。 APK从以前的DEX文件到反编译的JAVA代码,到SO库跟踪调试dump,再到修改smail代码,再到反射HOOK注入,再到当前的内存截流等等,方法一波接一波,但是APK从加固、到反调试,再到校验等等,也是防止方法一重接着一重。 SWF的反编...阅读全文

博文 2017-03-31 02:00:24 大洋的顶端

go语言学习-类型

Go语言内置以下这些基础类型:  布尔类型:bool。  整型:int8、byte、int16、int、uint、uintptr等。  浮点类型:float32、float64。  复数类型:complex64、complex128。  字符串:string。  字符类型:rune。  错误类型:error。 此外,Go语言也支持以下这些复合类型:  指针(pointer)  数组(array)  切片(slice)  字典(map)  通道(chan)  结构体(struct)  接口(interface) 1、type关键字 go语言支持type关键字,可以定义一种类型,这个关键字大体上和C语言的typedef相似,但是有个关键点不同:不是同一个类型。 格式如...阅读全文

博文 2016-04-28 12:00:01 kuoshuang

golang uint8转int8越界

var i uint8 = 128 fmt.Println(int8(i)) //结果为-128 很显然这里出现了越界的情况,int8类型的范围是-128~127,所以uint8类型的128转换为int8类型时会出现越界。那么这里是怎么出现-128结果的呢? 原来计算机中都是以补码进行存储的。uint8类型的128,原码为1000 0000,补码也为1000 0000;当转换为int8类型时,补码还是1000 0000,这里就变成了已知补码求原码;首位代表符号位,不做处理,其余各位按位取反再加1,截断之后可以得出1000 0000,即-128...阅读全文

博文 2019-04-23 04:34:41 杜子龙

位运算计算(go语言)

符号 二进制表示 十进制表示 0110 6 1011 11 & 0010 (上下都是1的话才是1,否则是0) 前后顺序不管,类似加法:1+2=2+1 2 | 1111 (上下都是0的话才是0,否则是1) 前后顺序不管,类似加法:1+2=2+1 15 ^ 1101 (上下数字不一样的话才是1,一样的话是0)前后顺序不管,类似加法:1+2=2+1 13 &^ 0100 (下面的数字是1,则为0,下面的数字为0,则为上面的数字)前后顺序不同结果不同,类似减法:1-2不等于2-1 方法2:先将下面的1011取反为0100,将取反完的0100和上面0110进行&运算,也可得到0100 4 关于&^的计算 上面的数字是6,二进制表示为: 0 1 1 0 下面的数字是11,二进制表示为: 1 0 1 1 ...阅读全文

博文 2014-10-04 19:26:44 waynehu

Go语言核心之美 2.4-布尔值

版权声明:本文为Sunface(孙飞)原创文章,转载请注明出处 https://blog.csdn.net/abv123456789/article/details/50907257 布尔值有两种:true和false。if和for语句中的条件都是布尔值,比较运算符== 、<等也会产生一个布尔值。一元运算符! 是逻辑取反操作,所以!true就是false。Go语言提倡简洁的风格,因此我们会将x == true这种表达式直接写成x:if x {..} 。 布尔值可以结合&&(AND) 、|| (OR)一起使用,这两个操作符都有短路特性,如果操作符的左边表达式就能决定结果了,那操作符右边的表达式不会求值:s != "" && s[0] == 'x' 如果s是空字符串,那s[0]会panic,但是...阅读全文

博文 2019-03-17 13:12:07 erlib

go变量和数据类型

go语言的基本数据类型 布尔类型:bool 整型:int8、byte、int16、int、uint、uintptr等 浮点类型:float32、float64 复数类型:complex64、complex128 字符串:string 字符类型:rune 错误类型:error int8 表示一个字节长的整形(-128 ~ 127);对应的还有uint8表示非负的一个字节长的整形(0 ~ 255);byte和uint8相同;int 的长度同操作系统相关,32位的系统长度为4个字节,64位系统为8个字节;go语言添加了string为基本类型,这是和java不同的 go语言变量的定义 方式1 : var b1 bool = true 变量定义时,前面添加一个var关键字,整的像javascript类...阅读全文

博文 2016-07-04 02:00:01 sten

golang的channel使用

channel sample1 close twice ch := make(chan bool) close(ch) close(ch) // 这样会panic的,channel不能close两次 读取的时候channel提前关闭了 ch := make(chan string) close(ch) i := <- ch // 不会panic, i读取到的值是空 "", 如果channel是bool的,那么读取到的是false 向已经关闭的channel写数据http://play.golang.org/p/vl5d5tkfl7 ch := make(chan string) close(ch) ch <- "good" // 会panic的 判断channel是否close i, ok ...阅读全文

博文 2014-10-04 19:26:45 go-skyblue

golang esl api

通过ESL 调取FS的状态,比如show calls : 用golang eventsocket 实现 conn, err := eventsocket.Dial("192.168.5.32:8021","ClueCon") if err != nil { this.emitError(so, 413) return "" } ev, _ := conn.Send(fmt.Sprintf("api show calls")) calls := strings.Split(ev.Body, "\n") for i := 1; i < len(calls)-3; i++ { //处理每一条记录 ...阅读全文

博文 2016-01-12 03:00:00 logo-fox

Go中全局变量存储在哪里?

创建一个src.go文件,加入下面的代码 package main import "fmt" var xxx = 0xEE // 通过值来推断类型 var yyy int = 0xFF // 定义类型,并赋值 var zzz int // 定义变量 func main() { xxx = 0x11 yyy = 0x22 zzz = 0x33 fmt.Println(xxx, yyy, zzz) } 然后在命令行输入 go build -gcflags "-N -l" -N 关闭编译器优化 -l 关闭内联 gdb调试 进入gdb模式 gdb src 设置断点 (gdb) b 14 // 在第十四行设置断点 运行程序 (gdb) r 设置汇编语言为intel (gdb) set disassem...阅读全文

博文 2019-12-26 14:38:16 沙漠中的猴

golang编程之时间编程

本文转载于:http://blog.chinaunix.net/uid-24774106-id-4006530.html 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 13...阅读全文

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

Go语言核心技术(卷一)之2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

博文 2016-03-16 15:00:05 abv123456789

(转)二进制相关基础

载:https://mp.weixin.qq.com/s?__biz=MzU2NjIzNDk5NQ==&mid=2247483797&idx=1&sn=18579f6a4e319b6adefc02520a59e2bc&scene=21#wechat_redirect golang的基本数据类型-整型 种类  有符号(负号)  1. int8 int16 int32 int64 无符号(无符号)  1. uint8 uint16 uint32 uint64 架构特定(取决于系统位数)  1. int uint 类型别名  1. Unicode字符rune类型等价int32  2. byte等价uint8 特殊类型  1. uintptr,无符号整型,  2. 由系统决定占用位大小,足够存放指针...阅读全文

博文 2018-08-13 18:35:56 one_zheng

移动APP测试之安全性测试策略分析

随着互联网发展,APP应用的盛行,最近了解到手机APP相关的安全性测试,以webview为主体的app,站在入侵或者攻击的角度来讲,安全隐患在于http抓包,逆向工程。 目前大部分app还是走的http或者https,所以防http抓包泄露用户信息以及系统自身[url=]漏洞[/url]是必要的,通过抓包当你查看一个陌生用户信息时,一些手机号,qq等信息页面上应该不显示的,但这些信息不显示并不代表[url=]服务器[/url]没有下发,好多都是客户端限制的,通过抓包,完全可以查看到陌生用户的app。再如好多发帖,push消息的应用,如果没有消息有效性的验证,抓到包之后篡改消息,服务器一点反应都没,这就会留有极大的隐患。逆向工程对于Android就很好理解了,反编译,修改或者插入自己...阅读全文

Go Slice 最大容量大小是怎么来的

文地址:Go Slice 最大容量大小是怎么来的 前言 在《深入理解 Go Slice》中,我们提到了 “根据其类型大小去获取能够申请的最大容量大小” 的处理逻辑。今天我们将更深入地去探究一下,底层到底做了什么东西,涉及什么知识点? Go Slice 对应代码如下: func makeslice(et *_type, len, cap int) slice { maxElements := maxSliceCap(et.size) if len < 0 || uintptr(len) > maxElements { ... } if cap < len || uintptr(cap) > maxElements { ... } p := mallocgc(et.size*uintptr(ca...阅读全文

博文 2019-01-06 20:34:43 煎鱼

golang学习实例-猜拳小游戏

学了一段golang,觉得应该实践一下,写了这个猜拳小游戏,顺带着学习下go testing。 主程序源码: package main import ( "bufio" // 输入输出 "fmt" "math" "math/rand" "os" "strconv" "time" ) //rock, paper, scissors const ( rock int = 1 scissors int = 2 paper int = 3 rockName string = "石头" scissorsName string = "剪刀" paperName string = "布" win int = 1 lose int = -1 draw int = 0 ) // 拳的结构 type Finge...阅读全文

博文 2015-06-17 20:03:59 hnxxwyq

Go语言之指针篇

发自自己的公众号(灰子学技术)原文链接:https://mp.weixin.qq.com/s/qXi-_e_nuVDnaiPfm2HIHQ一、写在前面的话:在介绍Go的指针之前,我们需要先介绍下,指针是什么?为什么我们需要指针?(备注:这里指的是原始指针。)1.指针是什么?首先指针是一个变量,全名叫做指针变量,只不过这个变量里面存储的值是一个地址而已。所以指针,哪怕是空指针,都是有地址的,因为变量都是有地址的。例子如下:Output:从下面的输出,我们可以看出空指针a的地址是存在,在a指向b之前,指针a的值为nil,指向b之后,数值变成了变量b的地址,而对a 做操作*a的话,数值为变量b对应的数值10。2.为什么我们需要指针?我们之所以需要指针,是因为我们要做间接寻址,就是在程序运行的时候,...阅读全文

博文 2019-09-03 13:47:51 ZhDavis

Golang Deco Enco

mproto.go package mproto import ( "bytes" "encoding/binary" "fmt" "reflect" "strconv" ) const ( PT_GR_LUACOMMAND uint32 = 9299 PT_GC_CLEARFACEBOOKBIND uint32 = 32689 PT_GC_CLEARDEVICEBIND uint32 = 7445 PT_GR_BANDACCOUNT uint32 = 29536 ) type GR_LuaCommand struct { LuaCommand string `key:"21868"` } type GC_ClearFacebookBind struct { AccountId int32 ...阅读全文

博文 2015-06-11 03:00:05 freebird92