不学无数——Mybatis解析判断表达式源码分析
Mybatis解析判断表达式源码分析在我们开发过程中用 Mybatis 经常会用到下面的例子Mapper如下Map
Mybatis解析判断表达式源码分析在我们开发过程中用 Mybatis 经常会用到下面的例子Mapper如下Map
golang发现就很好玩。 很久没有写日志了,继续恢复吧。 // one project main.go package main import ( "errors" "fmt" "math" "os" ) func main() { /* Go语言基础类型 布尔类型:bool 整型:int,int8,int16,int32,int64,uint,uint8,uint16,uint32,uint64,byte,uintptr (一般使用int和unit就好啦) 浮点类型:float32,float64 复数类型:complex64,complex128 字符串:string 字符类型:rune 错误类型:error Go语言复合类型 指针 pointer 数组 array 切片 siice ...阅读全文
上一节我们使用go语言加载了一个纯文字的html页面,但是没有实现交互功能,我们改造一下html页面,增加两个页面代码如下: input.html
Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 **系列导读** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygolang.com/articles/27365) [从零学习 Go 语言(02):学习五种变量创建的方法](https://studygolang.com/articles/27432) [从零学习 Go 语言(0...阅读全文
cmd包下的geth子包主函数启动的各个子命令解析/gethinitfunction:导入创世块的json,以指定的json作为创世块args:
登录时跳转都正常,退出时就会自动跳转到根目录,看了好几天没有找到问题原因在哪儿,遇到这种问题我们通常应该怎么去分析?   ...阅读全文
之前一直使用的是 gocode (https://github.com/nsf/gocode ), 后来项目不维护了让用 https://github.com/mdempsky/gocode, 然后这个项目又不维护了,让用 https://github.com/stamblerre/gocode, 然后这个项目也不维护了,都一齐推荐使用 gopls. gopls 的介绍见 https://github.com/golang/tools/blob/master/gopls/README.md, 从地址中看出,这是一个 golang 官方tools 库中的项目。应该以后不会再换了。不过从介绍上看,还处在 alpha 阶段,尚不稳定。2020 年上半年会发布稳定版。 gopls 是官方的 Lang...阅读全文
vscode开发golang时会出现,dot import的时候无法跳转到定义的问题。 解决方式: go get github.com/zmb3/gogetdoc 然后在vs code的settings.json配置文件中添加 "go.docsTool": "gogetdoc", 以下是完整的settings.json { "files.autoSave": "onFocusChange", "go.buildOnSave": true, "go.lintOnSave": true, "go.vetOnSave": true, "go.buildFlags": [], "go.lintFlags": [], "go.vetFlags": [], "go.useCodeSnippetsOnFu...阅读全文
实现分页效果如下: 以下标注红色字体的为重点 找到文件page.class.php在ThinkPHP/Library/Thinkpage.class.php并打开文件,复制函数show,在本文件中黏贴并改成你自定义的函数名,在此我更改为show1,更改上一页,下一页,第一页和最后一页的逻辑输出,将数字链接for循环删除,其他不变,更改如下: public function show1() { if(0 == $this->totalRows) return ''; /* 生成URL */ $this->parameter[$this->p] = '[PAGE]'; $this->url = U(ACTION_NAME, $this->parameter); /* 计算分页信息 */ $thi...阅读全文
最近有一个需求是在一个常驻内存的程序中结束相关任务。在Go中,创建一个goroutine非常简单,只需要go一下就可以了,但是如果我创建了很多goroutine,想要结束怎么办? 比如说我有一个死循环的例子 package main import ( "fmt" "sync" "time" ) func main() { queue := make(chan int, 20) var wg sync.WaitGroup for { // 就是一个死循环 queue <- 1 <-queue for i := 0; i < 10; i++ { wg.Add(1) go func(i int) { time.Sleep(5 * time.Second) fmt.Println("Sleep") ...阅读全文
抽空系统整理一下知识体系.仅仅作为一个纲要.1. 计算机基础1.1 CPUCPU指令流水线CPU多级缓存CPU缓存失效CPU 缓存一致性协议CPU MUMA架构多核CPU的演进CPU分支预测1.2 内存内存访问主内存工作内存虚拟内存页表/TLBMMAP内核page cache内核block cache进程地址空间内核地址空间1.3 磁盘机械磁盘/SSD/NVME ...顺序读写/随机读写内核 cache/预读cache脏页flush磁盘cachefsync/datasync/sync原子读写MMAPMMAP读写性能分析磁盘IO1.4 文件 本地文件远程文件虚拟文件系统卷MMA以及异常软链接/硬链接文件句柄/资源1.5 网络IO多路复用TCPHTTP/HTTPS代理带宽1.6 容器隔离CPU/...阅读全文
AUTH:PHILO VERSION:1.2 开发环境的必要特征 项目管理 快速文件跳转 自动语法检查 自动补全 查找定义 启动速度快 如果自己有需求的话插件可以随便写 灵活的运行配置 (project,lint,hint,autocomplete) 要实现上面几点我们来一步一步的配置。 我的大环境 OSX GO 1.4 HomeBrew go 环境安装 这一部分是最重要的,如果没有它,每次build的时候出现 too many errors 心里真的是非常难过的。 环境配置:(golint,gooracle,mercurial) 1. 安装mercurial: brew install mercurial> 这个东西是用来做版本管理的,也是下载代码的工具类似git,貌似google的项目用...阅读全文
什么是GO语言 Go语言(Golang)是Google公司2009年推出的一门"高级编程语言" Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go语言的优势 简洁 快速 安全 并行 有趣 开源 内存管理 数据安全 编译迅速 应用场景 网络编程,如web应用 云平台开发 服务器编程 分布式系统... Go语言的SDK安装和配置 SDK(软件开发工具包(外语首字母缩写:SDK、外语全称:SoftwareDevelopmentKit)) 安装步骤 1.下载安装包 Golang下载地址:点击跳转 image 2.运行安装包 image image image image image image 3.配置环境变量 3...阅读全文
vim-go安装 .vimrc的配置 " Plugins managed by vundle if (isdirectory(g:vimPath . 'bundle/Vundle.vim')) let &runtimepath.=',' . g:vimPath . 'bundle/Vundle.vim' call vundle#begin() Plugin 'gmarik/Vundle.vim' Plugin 'fatih/vim-go' call vundle#end() endif 除了vim-go插件,还需安装vundle插件,这是一款vim的插件管理工具 配置好后执行: :PluginInstall 安装vim-go需要的二进制文件 You will also need to ins...阅读全文
当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也有成为用户的一个不安全因素,比如有些网站直接将 sessionid 或是 token 放在地址栏里传递的,会原样不动地当作 Referrer 报头的内容传递给第三方网站。所以就有了 Referrer Policy,用于过滤 Referrer 报头内容,目前是一个候选标准,不过已经有部分浏览器支持该标准。具体的可查看这里。指令值目前包含了以下几种指令值:enum ReferrerPolicy { "", "no-referrer", "no-referrer-when-downgrade", ...阅读全文
ctags简介 ctags可以对编程语言的源文件结构构建索引,实现快速的跳转,包括对象、变量、方法等。 Windows下安装ctags 下载安装包 解压安装包,将ctags.exe文件拷贝到C:/Windows/System32目录下 在cmd下执行命令ctags --version验证安装是否成功 Sublime Text安装ctags插件 在窗口选择Preferences -> Package Control -> Install Package 在输入框中输入ctags搜索待安装插件,选择插件回车安装 修改配置,在窗口选择Preferences -> Package Settings -> Ctags 将Settings-Default中的内容全部复制到Settings->User中 ...阅读全文
流程控制是每种编程语言走向和执行次序的重要部分 golang中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。 if else(分支结构) if 条件判断基本写法 if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else{ 分支3 } if条件判断的特殊写法 if条件判断可以在if表达式之前添加一个执行语句,再根据变量值进行判断: func main() { if score := 65; score > 90 { fmt.Println("A") } else if score > 75 { fmt.Println("B") } else { fmt.Println("C") } } for...阅读全文
> 登录和退出的流程: 1. 输入用户名、密码传到后台 2. 数据库查询结果是否匹配 3. 匹配成功保存 session 跳转首页 4. 退出登录 删除session 这里用到了beego的三个知识点:session | 数据库查询 | 跳转 ### 1. 设置session >首先,我们需要开启 session,在文件 app.conf 中加入 ``` sessionon = true ``` 如果未开启直接访问session可能会报如下错误: ``` goblog:runtime error: invalid memory address or nil pointer dereference ``` #### 1.1 设置session 这里提到的变量 `c` 即是控制器中传入的指针对象...阅读全文
这个数据结构在本科的数据结构课是没有教过的,我知道这个东西是在,学习redis内部原理的时候接触的,redis 中的 sorted set 中就是使用了这种数据结构。如果你要学习下 redis的有序集合的原理,那么一定要看 skip list这种数据结构。 基础 网上有很多大佬都写了很多不错的博客去介绍 skip list,我就直接给出链接先去学习下吧: 跳表 skiplist 跳跃表 原始论文 跳表SkipList 跳表──没听过但很犀利的数据结构 跳表(skiplist)的理解 只是列举了部分我觉得比较好的。如果你看到了更牛逼的文章可以在下面评论出来。 如果你看完了还是不理解可以找下别的文章再理解下。 go 代码实现 跳转表结构 直接看原始论文中的配图吧。 skip_list 都会保存一...阅读全文
package main import ( "log" "net/http" ) func addUser(w http.ResponseWriter, r *http.Request) { http.Redirect(w, r, "https://blog.csdn.net/qq_37838223", http.StatusFound) } func main() { http.HandleFunc("/", addUser) err := http.ListenAndServe(":80", nil) if err != nil { log.Fatal("ListenAndServe: ", err.Error()) } }最后 set GOOS=linux,在linux上运行,wind...阅读全文
Go的if,for,switch跟C的区别 有过C基础的人,都知道if、for、switch的条件语言都是有括号的。基本格式: if(条件判断语言) {} for(语句1;语句2;语句3) {} switch(语句){} 在go中,这些语法规则跟C还是有差别,概括为一句话就是去掉了括号。语法规则如下: if 语句 {} for 语句1;语句2;语句3 {}//跟C一样,这三个语句可以省掉任何一个语句 switch 语句 {} 区别其实很简单。正由于没有了括号,导致他们与C有了更多的功能。 if if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。 if x:=getXdata(); x>10 { //x的作用域只在这个括号...阅读全文
初入测试,基本上算是在一个接一个测试任务的境况下度过的。 某一天任务比较轻松,迅速交付之后便些前辈们编好的用例学习学习,等待着下一个项目的发布。就在这难得的闲暇时间,部门的同事却发现了一个在平时根本想不到的BUG,这个情况迅速引起了大伙儿的好奇,纷纷 围观过去。 简单地形容一下这个BUG吧: 此BUG主要是在某种情况下,点击界面按钮并不会出现相应的跳转,而会直接回到登录页面,且无论你如何进行操作,用户不会被注销下线,但由于这个问题是需要特定的操作才会出现的,所以当同事进行复现沟通时,难以正常体现BUG的存在,导致开发不认缺陷,至此小小撕逼,回来当然和大伙吐槽。 既然复现困难(TestBird教你轻松复现BUG场景),同事只有放弃,但在私下讨论时,这点依然是我们比较热衷...阅读全文
restful hello world 首次浏览下go-restful的工程结构,从工程组织上面来看,工程包括两个部分:source文件及example文件,其中source文件组成了工程的主体,包括restful主要功能接口的实现及单元测试文件(以test.go结尾命名的文件),另外example目录中主要包括了接口的使用案例。 第一次阅读go-restful源码,以example目录下的restful-hello-world.go作为入坑样例,来跟踪了解下restful如何组织封装webservice及route的维护。 restful-hello-world.go代码如下: func main() { ws := new(restful.WebService) ws.Route(ws....阅读全文
一、循环语句 循环语句即for语句,您可能说:“不对,它不仅仅是for语句,还有while或者do-while”,真的很遗憾,GO语言真的只有for,它认为提供一种就可以了,提供多了怕给程序员带来麻烦 :)下面我们使用for循环计算1+2+3+4+……+100的和,和其它语言一样,我们使用循环100次的办法:定义一个变量,让它从1开始循环100次,每次都判断它是否小于101,若是变量就加1代码如下:// 声明变量sum并初始化为0sum := 0// 定义变量i,循环100次,每次判断是否小于101for i:= 1; i< 101; i++{ // 累加总和 sum += i}// 打印结果fmt.Println("sum=", sum)结果如下图:1、习惯的养成若您一直使用C/C++/J...阅读全文
对于写业务的同学来说,学习汇编可能没必要,仅仅关注业务逻辑即可。但是当你要深入去优化代码结构、系统架构,就不得不去深入了解golang这门语言,去了解golang内核实现:比如goroutine调度、io调度、map实现、string实现。当然,golang内核有go实现,也有汇编实现。为了做更深入的优化,我们需要了解plan9汇编,有时候不得不去写汇编,甚至根据特定汇编指令集来做优化。(主要以x86/64架构)比如我们去看strings.Index实现,其中有一段代码是汇编所写:TEXT ·IndexString(SB),NOSPLIT,$0-40 MOVQ a_base+0(FP), DI MOVQ a_len+8(FP), DX MOVQ b_base+16(FP), BP MOVQ ...阅读全文
数据结构 //runtime/runtime2.go type _defer struct { siz int32 //参数大小 started bool // defer是否被调用过的标识 sp uintptr // sp at time of defer pc uintptr fn *funcval // defer 后面跟的function _panic *_panic // panic that is running defer link *_defer // 链表结构 } 每一个defer关键字在编译阶段都会转换成deferproc,编译器会在函数return之前插入deferreturn。 deferproc //runtime/panic.go // 创建一个defer, fn...阅读全文
下面的这个配置,最后验证是可以的。只是没有跳转 server { listen 80; listen 443 ssl; #ssl on; server_name hc-explorer.h.cash; ssl_certificate /etc/nginx/cert/7d97acd273b4a22.crt; ssl_certificate_key /etc/nginx/cert/key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_p...阅读全文
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_37320188/article/details/79107380 使用beego创建新项目beego 的项目基本都是通过 bee 命令来创建的,所以在创建项目之前确保你已经安装了 bee 工具和 beego。如果你还没有安装,那么请查阅 beego 的安装 和 bee 工具的安装。现在一切就绪我们就可以开始创建项目了,打开终端,进入 $GOPATH/src 所在的目录:创建一个项目名为20180118_loongc_beego的基于beego 的新项目,执行如下命令:bee new 20180118_loongc_beego依次执行如下命令:进入目录,运行该项目,在localho...阅读全文
G M P模型 G —— goroutinue对象,经go语句创建 M —— 系统线程,和P关联后运行G,上限10000 P —— 调度器,和M关联后运行G,数量由 runtime.MAXGOPROCS 设置,默认为CPU核数,上限256 此外还有一个系统调度器(runtime.sched),负责维护一些全局队列。M的状态 自旋中:M正在从运行队列获取G, 这时候M会拥有一个P 执行中:M正在执行go代码, 这时候M会拥有一个P 挂起中:M正在执行阻塞的syscall, 这时M并不拥有P 休眠中:M发现无待运行的G时会进入休眠,并添加到空闲M链表中, 这时M并不拥有PP的状态 Pidel:当前P未和任何M关联 Prunning:当前P已经和某个M关联,M在执行某个G Psyscall:当前P...阅读全文
程序设计语言的流程控制语句,用于设定计算执行的次序,建立程序的逻辑结构。可以说,流程控制语句是整个程序的骨架。 从根本上说,流程控制只是为了控制程序语句的执行顺序,一般需要与各种条件配合,因此,在各种流程中,会加入条件判断语句。流程控制语句一般起以下3个作用: 选择,即根据条件跳转到不同的执行序列; 循环,即根据条件反复执行某个序列,当然每一次循环执行的输入输出可能会发生变化; 跳转,即根据条件返回到某执行序列。 Go语言支持如下的几种流程控制语句: 条件语句,对应的关键字为if、else和else if; 选择语句,对应的关键字为switch、case和select; 循环语句,对应的关键字为for和range; 跳转语句,对应的关键字为goto。 Go语言还添加了如下关键字:break、...阅读全文
Go语言基础之流程控制 Golang 流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”。 Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码、降低重复代码而生的结构,属于扩展类的流程控制。 if else(分支结构) if条件判断基本写法 Go语言中if条件判断的格式如下: if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else{ 分支3 } 当表达式1的结果为true时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3。 if判断中的else if和else都是可选的,可以根据实际需要进行选择。 Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{...阅读全文
~~~ 我用openssl生成了个临时证书 测试可用,就是有个问题 GO有没有提供这样的函数 自动http请求跳转https的函数呢 因为访问如 www.xx.com 以下代码会出错打不开, 必须手工输入 https://www.xx.com才可以 这样很不方便 还有谁有免费的SSL证书推荐额 想找个测试下 目前的显示不安全的 临时测试的没办法 func main() { http.HandleFunc("/", test123) err := http.ListenAndServeTLS(":81", "cert.pem", "key.pem", nil) if err != nil { panic(err) } } func test1...阅读全文
Go的if,for,switch跟C的区别 有过C基础的人,都知道if、for、switch的条件语言都是有括号的。基本格式: if(条件判断语言) {} for(语句1;语句2;语句3) {} switch(语句){} 在go中,这些语法规则跟C还是有差别,概括为一句话就是去掉了括号。语法规则如下: if 语句 {} for 语句1;语句2;语句3 {}//跟C一样,这三个语句可以省掉任何一个语句 switch 语句 {} 区别其实很简单。正由于没有了括号,导致他们与C有了更多的功能。 if if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。 if x:=getXdata(); x>10 { //x的作用域只在这个括号...阅读全文
文章转载请注明出处www.leexide.com希望每一位寻求转载的朋友都能够按照要求进行,鼓励原创,尊重原创。 微信公众号:DevOps运维运营之家 QQ号码:1045884038 E-mail:leexide@126.com 如有问题或建议,请关注微信公众号 1 概述 流程控制是顺序编程中必不可少的一部分,它是整个编程基础的重要一环。在顺序编程的流程控制部分,Go语言和其他主流语言有一些差别,主要体现在Go语言没有do-while语句,因此for语句拥有更广泛的含义与用途。另一方面switch语句也有一些扩展,例如支持类型判断和初始化子语句等。 除了这些常见的流程控制语法的关键字,Go语言还有三个特殊的关键字,分别是: defer:用于捕获异常和资源回收等工作; select:用于多分支...阅读全文
在昨天的面试中,自己需要总结很多问题,以前一直怕面试,因为面试会问答很多以前都没怎么注意到的问题,常常面试了几次,拿到了一个差不多的工作,就停止面试了,这是一个死循环。现在清楚了一定时刻保持面试的状态,原因如下:1. 很多面试知识只在面试的时候被问到,在实际工作中只会用到一小部分。2. 要明白市场现在有什么类型的需求,需求量大不大 面试其实是一个策略,很多时候就是隐藏自己的劣势,发挥自己的优势。如何发挥自己优势呢?其实就是要结合面试官的问题,举一反三,把自己掌握的内容引出来,而不是仅仅回答面试官的问题,面试官并不是想用单一的问题难倒你,只是想了解实际知识的掌握情况,对问题深不深入,有没有实际经验。 接下来,需要各个方面都加强,对之前一些模拟两可的知识进行梳理,要达到熟练的程度,面对面试的问题...阅读全文
golang自定义sort及延展知识? 背景介绍 初来乍到 刚入门golang的时候,总是不知道怎么才能实现自定义类型的排序。 这几天看leader面试别人,时不时也会问到排序的问题,看来还是很重要的。 这篇小文章,一起小结下自定义类型的排序问题。 本文摘要 自定义排序的实现; 先按A规则排序再按B规则排序的实现技巧; 三剑客原理回顾; 问题引入 如何对下面的personArr实现先按Height排序、再按Age排序呢? type Person struct { Name string Age int Height int } personArr := make([]Person, 0) 三剑客 初识三剑客 最通用的是下面这个函数: sort.Sort(data) 跳转到该函数的实现: fu...阅读全文
```go package main import ( "compress/zlib" "fmt" "io" "log" "os" "path/filepath" ) func main() { type fileInfo struct { file string size int64 } fileList := make(map[string]fileInfo, len(os.Args)) for _, v := range os.Args[1:] { if f, err := os.Stat(v); err == nil || os.IsExist(err) { fileList[filepath.Base(v)] = fileInfo{file: v, size: f.Size()} ...阅读全文
 *本文基于 Go 1.13 版本* 循环在编程中是一个重要的概念,且易于上手。但是,循环必须被翻译成计算机能理解的底层指令。它的编译方式也会在一定程度上影响到标准库中的其他组件。让我们开始分析循环吧。 ## 循环的汇编代码 使用循坏迭代 `array`,`slice`,`channe...阅读全文
Golang关键字 break case chan const continus default defer else fallthrough for func go goto if import interface map package range return select struct switch type var Goang运算符 不支支持运算符重载。尤其需要注意,"++"、"--" 是语句而而非非表达式。 + & += &= && == != ( ) - | -= |= || < <= [ ] * ^ *= ^= <- > >= { } / << /= <<= ++ = := , ; % >> %= >>= -- ! ... . : &^ &^= 控制流 x := 0 if n...阅读全文
Go语言的流程控制主要分为三大类:1. 条件判断 2. 循环控制 3. 无条件跳转条件判断Go语言的条件判断由if ... else if ... else 语句实现,条件表达式值必须是布尔类型,可省略圆括号,但是花括号不能省略且左花括号不能另起一行,比如:if 7%2 == 0 { fmt.Println("7 is even") } else { fmt.Println("7 is odd") } if 8%4 == 0 { //可以没有else只有if语句 fmt.Println("8 is divisible by 4") }Go语言比较特别的是在条件判读语句中支持初始化语句,允许定义局部变量,但是这个变量的作用域仅限于该条件逻辑块内,比如:if num := 9; num < 0 ...阅读全文
本文将简单介绍一下go语言的汇编。 主要的内容如下: plan 9 是什么?为什么学习plan9? plan9 的常见指令 go程序如何转换为plan9 ? 下面就开始简单介绍一下。 plan 9 是什么?为什么学习plan9? plan9, Go一套自己的汇编。按照官方文档的说法,其设计初衷是解决跨平台的问题,但是没有做好。并且它不同于传统的汇编,也就是说要想学习go汇编,你需要重新学习一套语法。社区在争论这个问题,有人说是因为go的几个大佬,原来是用plan9的。这个问题咱们这儿不讨论。 那作为普通人,我们学汇编干啥呢? 装逼!这是第一生产力!我一直有一个不成熟的想法,希望自己能够像机器一样看穿代码的运行。有时想想,也挺可笑的。 除了装逼,真的一点用处都没有了吗? 当然不是!!! 说下我...阅读全文
godef可以打印出Go源代码中的符号,很多集成开发工具都集成了它,并且提供了Go to Definition的命令和快捷键,可以迅速的跳转到方法和变量的声明的地方,非常的方便。 比如我常用的vscode-go,就提供了这样的功能,但是目前godef有一个bug,就是不能跳转标准库net包下的方法定义,这个bug已经提交到github上: #18, 大约在6月的时候就发现了这个bug,不清楚作者为什么没有fix,事实上早有人提供了修改的pull request。这个bug产生的原因是godef没有处理好"C"库。 我在这里把修改方法记录一下,你可以手工的修改编译godef。 找到godef文件夹下的parser文件(go/parser/parser.go),在 1970行增加一个判断。 12...阅读全文
使用IIS url重写后,入站规则是访问80端口的变为8080端口的。 比如访问www.aaa.com时会自动访问到www.aaa.com:8080 但是当做到微信登录授权时,跳转不到微信的登录授权页面。 后台用go的 302跳转 访问www.aaa.com时让他跳转到www.openAAA.com时跳转不到。 请问有什么解决方法吗 ...阅读全文
1.基础知识补充(指针、递增递减语句) 指针 go虽然保留了指针,但是与其它编程语言不同的是,在go当中不支持指针运算以及"->"运算符,而直接采用"." 选择符来操作指针目标对象的成员 操作符"&"取变量地址,使用"*"通过指针间接访问目标对象 默认值为nil而非null 在go中,++与--是作为语句而并不是作为表达式 a := 1 a++ //但不能这样:a := a++,只能作为单独的语句独占一行 2.if判断语句 条件表达式没有括号 支持一个初始化表达式(可以是并行方式) 左大括号必须和条件语句或else在同一行 支持单行模式 初始化语句中的变量为block级别,同时隐藏外部同名变量 func main(){ a := 10 if a:=1 { fmt.Println(a) } f...阅读全文
这里会涉及到一些defer的知识,有兴趣可以看我的另一篇关于defer的文章 https://www.jianshu.com/p/fec11caadaf6 数据结构 //runtime/runtime2.go type _panic struct { // 调用defer时入参的指针 argp unsafe.Pointer // pointer to arguments of deferred call run during panic; cannot move - known to liblink // panic 的参数 arg interface{} // argument to panic // 指向更早的panic, 新的panic添加到链表头 link *_panic // li...阅读全文
Go的if,for,switch跟C的区别 有过C基础的人,都知道if、for、switch的条件语言都是有括号的。基本格式: if(条件判断语言) {} for(语句1;语句2;语句3) {} switch(语句){} 在go中,这些语法规则跟C还是有差别,概括为一句话就是去掉了括号。语法规则如下: if 语句 {} for 语句1;语句2;语句3 {}//跟C一样,这三个语句可以省掉任何一个语句 switch 语句 {} 区别其实很简单。正由于没有了括号,导致他们与C有了更多的功能。 if if 还有一个强大的地方就是条件判断语句里面允许声明一个变量,这个变量的作用域只能在该条件逻辑块内,其他地方就不起作用了。 if x:=getXdata(); x>10 { //x的作用域只在这个括号...阅读全文
本文适用于解决openssl升级到1.1.0以上版本,导致shadowsocks2.8.2启动报undefined symbol: EVP_CIPHER_CTX_cleanup错误。最近将kali升级到了最新版本,编译之后shadowsocks无法启动,报错如下:INFO: loading config from ss.json 2016-12-14 22:47:50 INFO loading libcrypto from libcrypto.so.1.1 Traceback (most recent call last): File “/usr/local/bin/sslocal”, line 11, in sys.exit(main()) File “/usr/local/lib/pyt...阅读全文
if语句 i f x > 0 { // {是强制的,且必须和if在同一行 return y } else { return x } if 和 switch 接受初始化语句,通常用于设置一个(局部)变量。 if err := Chmod(0664); err != nil { //nil 与 C 的 NULL 类似 fmt.Printf(err) //err 的作用域被限定在 if 内 return err } goto语句 用 goto 跳转到一定是当前函数内定义的标签 func myfunc() { i := 0 Here: // 这行的第一个词,以分号结束作为标签,标签名区分大小写 println(i) i++ goto Here // 跳转 } for语句 Go 的 for 循环有三种...阅读全文
安装vim-go后,使用 ctrl+] 自动跳转方法时会提示以下错误 就是gure没有安装嘛,安装一下即可。首先嘛按照提示在vim执行:GoInstallBinaries。然后你会发现并没有什么用,自动安装了一大堆东西基本都是安装失败的。 然后google搜索安装guru。 go get golang.org/x/tools/cmd/guru go build golang.org/x/tools/cmd/guru mv guru $GOPATH/bin 然而也并没什么用。第一步就提示超时,安装不上 接着找,直接去golang拉源码进行安装。 mkdir -p $GOPATH/src/golang/x cd $GOPATH/src/golang/x git clone https://git...阅读全文
5.6 标签与 gotofor、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词(gofmt 会将后续代码自动移至下一行)。示例 5.13 for6.go:(标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母)package main import "fmt" func main() { LABEL1: for i := 0; i <= 5; i++ { for j := 0; j <= 5; j++ { if j == 4 { continue LABEL1 } fmt.Printf("i is: %d, and j is: %d\n", i, j) } } }本例中,continue 语句指向 LABE...阅读全文