一文带你读懂结构体内存分配

一个博客引发的血案 一个比较牛逼的博客,介绍了如何优化字符串到字节数组的过程,避免了数据复制过程对程序性能的影响。 对此,我深感佩服。因为代码非常简单,简单到我根本看不懂! package main import ( "fmt" "strings" "unsafe" ) func str2bytes(s string) []byte { x := (*[2]uintptr)(unsafe.Pointer(&s)) h := [3]uintptr{x[0], x[1], x[1]} return ...阅读全文

掘金 2020年04月18日 胡大海

在 ubuntu linux 上配置 go 语言的 qt 开发环境

`go` 语言是开发效率极高、运行速度也接近 `C` 程序的现代编程语言,`qt` 是跨平台的优秀 `gui` 库,二者结合起来工作表现非常优秀。本文讲的有两个事情,第一个是安装`go`语言的`qt`绑定包,第二个是安装`go`语言的集成开发环境。 ## 安装 `github.com/therecipe/qt` 包 本段介绍的是如何安装和配置 `github.com/therecipe/qt` 开发包,这是一个非常优秀的 `qt` 库的 `go` 语言绑定,它非常强大,完美支持`QT`的...阅读全文

Go语言中文网 2020-04-19 19:03:58 fuhuizn

Go+GraphQL+React+Typescript搭建简书项目(五)——注册与登录

项目地址:github 前端的路由 在React中,路由的使用主要由react-router-dom提供。使用yarn安装react-router-dom。 $ yarn add react-router-dom 我们删除脚手架提供的示例代码,只保留index和App。我们这里将路由内容写在App.tsx文件中。 import React from "react"; import {BrowserRouter, Route, Switch} from "react-router-dom" exp...阅读全文

Segmentfault 2020-04-23 22:32:34 云燕

Go语言(十三)Gin Web框架

Gin Web框架 简介 基于httprouter开发的web框架:https://github.com/gin-gonic/gin 提供Martini风格的API,但比Martini要快40倍 非常轻量级,使用简洁 Gin框架的安装与使用 安装: go get -u github.com/gin-gonic/gin 基本使用 import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", fun...阅读全文

51CTO博客 2020-04-18 15:32:15 wx5b285b48ed74e

CVE-2019-16097

漏洞名称: Harbor任意管理员注册 漏洞简介: 因注册模块对参数校验不严格,可导致任意管理员注册,tui~,就是对has_admin_role压根就没有校验,在普通用户注册基础上增加该值属性为ture即可直接注册管理员,恶臭! 漏洞危害: 攻击者可以通过注册管理员账号来接管Harbor镜像仓库,从而写入恶意镜像,最终可以感染使用此仓库的客户端。 影响范围: 1.7.0-1.7.5 1.8.0-1.8.2 漏洞复现: 大约如下这个样子,但是,虽然注册功能默认开启,但确实是可以关闭,关闭之后注册...阅读全文

简书 2020-04-19 03:32:46 RabbitMask

2020 腾讯社招Golang后端面试经验分享

file 技术一面 基础面试 一面是通过电话直接沟通 go的调度 go struct能不能比较 go defer(for defer) select可以用于什么 context包的用途 client如何实现长连接 主协程如何等其余协程完再操作 slice,len,cap,共享,扩容 map如何顺序读取 实现set 实现消息队列(多生产者,多消费者) 大文件排序 基本排序,哪些是稳定的 http get跟head http 401,403 http keep-alive http能不能一次连接多次...阅读全文

简书 2020-04-19 03:32:46 开发者阿俊

golang十大主流web框架

Gin Web Framework Gin是为速度而生的框架,相比较其它框架,它的速度是最快的,与此同时,它还提供了中间件功能,我们可以轻松集成权限验证,记录压缩等功能。 Gin框架对于开发api接口非常适合,它提供了丰富的渲染机制,同时也可以作为web后端处理应用。同时它也是支持扩展的,已经有很多第三方扩展可以直接拿来使用。 盘点十大主流go web框架 Revel 我们知道作为编译型语言,每次修改都需要重新编译对我们开发非常的不友好,庆幸地是,Revel提供了热加载机制,只要我们修改了源代码...阅读全文

简书 2020-04-19 03:32:45 追梦人在路上不断追寻

2020 腾讯社招Golang后端面试经验分享

技术一面 基础面试 一面是通过电话直接沟通 go的调度 go struct能不能比较 go defer(for defer) select可以用于什么 context包的用途 client如何实现长连接 主协程如何等其余协程完再操作 slice,len,cap,共享,扩容 map如何顺序读取 实现set 实现消息队列(多生产者,多消费者) 大文件排序 基本排序,哪些是稳定的 http get跟head http 401,403 http keep-alive http能不能一次连接多次请求,不等...阅读全文

Segmentfault 2020-04-23 21:32:35 阿俊

【golang】快速构建项目,带你坐上小摩托

开局一波图: 所谓万事开头难,要启动一个项目,第一步就是设计好项目结构,大多通用项目结构都有相似型,本出楼主归纳好项目结构,直接带你坐上小摩的。 滴滴滴滴 项目结构 1、入口包 2、预处理包 3、服务包 4、bus 5、应用包 6、通用包 7、日志包 8、工具包阅读全文

简书 2020-04-18 17:32:55 dongzaidong

protocbuf3语法定义

先贴上官方的一个例子,来源于grpc-go的helloworld例子实现 // Copyright 2015 gRPC authors. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at ...阅读全文

简书 2020-04-18 17:32:54 哆啦在这A梦在哪

Golang参数传递问题

首先说结论:在Go语言里,所有的参数传递都是值传递(传值),都是一个副本,一个拷贝,因为拷贝的内容有时候是非引用类型(int、string、struct等这些),这样就在函数中就无法修改原内容数据;有的是引用类型(指针、map、slice、chan等这些),这样就可以修改原内容数据。 非引用类型(值类型):int,float,bool,string,以及数组和struct 特点:变量直接存储值,内存通常在栈中分配,栈在函数调用完会被释放 引用类型:指针,slice,map,chan,接口,函数等...阅读全文

简书 2020-04-18 17:32:54 普朗tong

file lock

Note: 文中部分内容截取自 File locking in Linux Prior knowledge 在了解文件锁之前先简单介绍一下File相关的知识。 在C程序中Files由文件指针(file pointers)或文件描述符(file descriptors)来指定。ISO C的标准I/O库函数( stdio.h中的fopen, fscanf, fprintf, fread, fwrite, fclose等等)用的是文件指针;UNIX 中的I/O函数(unistd.h中的open, re...阅读全文

简书 2020-04-18 17:32:54 打倒美帝

微服务项目讲解

内容目录如下: 什么是微服务? RPC 协议 ProtoBuf 使用 protobuf 简单语法 Protobuf 高级用法 GRPC 框架 go-micro 框架 发现服务 consul 使用 consul 和 grpc 结合使用 go-micro 使用 web 与服务端通信 详细讲解地址评论获取,文档资料免费分享 主讲师:HZ 具有多年的软件开发实战经验,精通 Golang、C/C++、Linux 系统编程。参与大型网络游戏研发,区块链研发,具有丰富的项目经验,授课认真负责,幽默风趣,深受学...阅读全文

简书 2020-04-18 17:32:53 51reboot

Golang中make和new的区别

new:func new(Type) *Type 接受一个参数,这个参数是一种类型,而不是一个值,分配好内存后, 返回一个指向该类型内存地址的指针,这个指针指向的内容的值为该类型的零值。 对于不同的数据类型,零值的意义是完全不一样的。 比如,对于bool类型,零值为false;int的零值为0;string的零值是空字符串 make:func make(t Type, size ...IntegerType) Type 同样用于内存分配,但和new不同,make用于channel,slice和m...阅读全文

简书 2020-04-18 17:32:50 普朗tong

golang的sync.Cond的用法

本篇来学习一下sync.Cond的用法 使用场景: 我需要完成一项任务,但是这项任务需要满足一定条件才可以执行,否则我就等着。 那我可以怎么获取这个条件呢?一种是循环去获取,一种是条件满足的时候通知我就可以了。显然第二种效率高很多。 通知的方式的话,golang里面通知可以用channel的方式 var mail = make(chan string) go func() { <- mail fmt.Println("get chance to do something") }() time.S...阅读全文

简书 2020-04-18 17:32:50 zzzyyy111

VS Code中如何关闭保存Go语言文件时自动去除未引用包的行为

在使用Visual Studio Code编写Go语言(Golang)程序代码的时候,有时候引用的包明明是正确引用了,但在保存的时候却会被自动删除掉,是被误认为未引用了。这时候,参照以下步骤就可以解决。在VS Code中的Preference的Settings中搜索goimports,会看到“Go: Format Tool”一项,将使用的goreturns或goimports换成gofmt即可。因为goreturns或goimports都会自动做自动包导入或者将未引用的包去除的工作。当然,这样设...阅读全文

简书 2020-04-18 17:32:48 陆满庭

Golang汇编

.... to be continued Golang中很多代码实现,例如strings.Index(),调度器以及初始化等等都是用汇编实现的,因此需要对汇编有基本的了解。同时本文只专注于 AMD64 Linux 平台下 AT&T 格式的汇编指令。另外本文主要是作为一个学习笔记和总结,很多地方会引用参考文献中的内容。 基础知识 程序的存储空间布局 Program是为了完成指定的任务而准备好的一个指令序列。 C编译器将每个源文件(source file)翻译成object file,然后编译器将单...阅读全文

简书 2020-04-18 17:32:47 打倒美帝

gin 源码阅读(一)-- 启动

文章首发于同名公众号,欢迎关注~因为 gin 的安装教程已经到处都有了,所以这里省略如何安装, 建议直接去 github 官方地址的 README 中浏览安装步骤,顺便了解 gin 框架的功能。https://github.com/gin-gonic/gin 最简单的代码 package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.Run() // 监听并在 0.0.0.0:8080 上启动服...阅读全文

Segmentfault 2020-04-23 21:32:34 若鱼治水