Golang的反射reflect深入理解和示例

[TOC] Golang的反射reflect深入理解和示例 【记录于2018年2月】 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语言的反射模型都不同,并且有些语言根本不支持反射。Golang语言实现了反射,反射机制就是在运行时动态的调用对象的方法和...阅读全文

阅读:68438 评论:12

面试经典算法:优先队列,最大堆,堆排序,左偏树Golang实现

堆排序 使用优先队列-最小/最大堆可实现。 优先队列 优先队列是一种能完成以下任务的队列:插入一个数值,取出最小的数值(获取数值,并且删除)。优先队列可以用二叉树来实现,我们称这种为二叉堆。 最小堆 最小堆是二叉堆的一种,是一颗完全二叉树(一种平衡树), 其特点是父节点的键值总是小于或者等于子节点。 实现细节(两个操作): push:向堆中插入数据时,首先在堆的末尾插入数据,然后不断向上提升,直到没有大小颠倒时。 pop:从堆中删除最小值时首先把最后一个值复制到根节点上,并且删除最后一个数值。然...阅读全文

2019.10.28 10:29:36 aside section._ 等
阅读:838 评论:0

面试经典算法:快速排序Golang实现

Golang快速排序 定义 快速排序由C. A. R. Hoare在1962年提出。快速排序是对冒泡排序的一种改进,采用了一种分治的策略。 基本思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 步骤 先从数列中取出一个数作为基准数。 分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 再对左右区间重复第二步,直到各区...阅读全文

2019.10.28 10:28:50 aside section._ 等
阅读:347 评论:0

Golang三色标记、混合写屏障GC模式图文全分析

原创声明:未经作者允许请勿转载, 如果转载请注明出处作者:刘丹冰Aceld, 微信公众号同名 垃圾回收(Garbage Collection,简称GC)是编程语言中提供的自动的内存管理机制,自动释放不需要的对象,让出存储器资源,无需程序员手动执行。 ​ Golang中的垃圾回收主要应用三色标记法,GC过程和其他用户goroutine可并发运行,但需要一定时间的STW(stop the world),STW的过程中,CPU不执行用户代码,全部用于垃圾回收,这个过程的影响很大,Golang进行了多次...阅读全文

阅读:8224 评论:6

排序算法-归并排序、堆排序、插入排序、选择排序、冒泡排序 golang

1.冒泡排序(Bubble Sort) 冒泡排序也叫做起泡排序 执行流程 1 从头开始比较每一对相邻元素,如果第1个比第2个大,就交换它们的位置 ✓ 执行完一轮后,最末尾那个元素就是最大的元素 2 忽略 1 中曾经找到的最大元素,重复执行步骤 1,直到全部元素有序 for end := len(this.Array) - 1; end > 0; end-- { for begin := 1; begin <= end; begin++ { if this.ComWithIndex(begin, ...阅读全文

2020-04-23 10:32:52 SteveKwok
阅读:310 评论:0

构建 Golang 应用最小 Docker 镜像

我通常使用docker运行我的 golang 程序,在这里分享一下我构建 docker 镜像的经验。我构建 docker 镜像不仅优化构建后的体积,还要优化构建速度。 示例应用 首先贴出代码例子,我们假设要构建一个 http 服务 package main import ( "fmt" "net/http" "time" "github.com/gin-gonic/gin" ) func main() { fmt.Println("Server Ready") router := gin.Def...阅读全文

2020年05月29日 Eyas
阅读:1084 评论:0

多个程序监听同一端口 - socket端口复用技术

对于多个程序绑定同一个端口我们遇到最多的是(Port 80 was already in use),也就是说端口被占用,不能重复绑定,但是操作系统内核支持通过配置socket参数的方式来实现多个进程绑定同一个端口。 简单示例 package main import ( "context" "golang.org/x/sys/windows" "net" "syscall" ) var listenConfig = net.ListenConfig{ Control: MyControl, } f...阅读全文

2020-06-06 11:32:42 写个代码容易么
阅读:2501 评论:0

我用go-zero开发了第一个线上项目

作者:结冰前言​ 说在最前面,我是一个外表谦让,内心狂热,外表斯文,内心贪玩的一个普通人。我的职业是程序员,是一个golang语言爱好者,一半是因为golang好用,一半是因为其他语言学不好。我是从phper转为gopher的,写php的时候我认识了互联网软件,写go的时候感觉自己终于在编程。初见golang​ 我大学专业是软件。第一门编程语言是C++,知道了指针,知道了加减乘除,知道了编程去控制软硬件。后来选修了java,被ssh框架戏耍了一个暑假。再后来进入了一个社团技术部,再被html/c...阅读全文

2020-12-21 20:32:33 kevinwan
阅读:5108 评论:0

年底扩招1W人,字节跳动内部公开12月份Java岗71道面试题

前言 近日,字节跳动官宣扩招信息,在年底前再招满10000人!这其中技术岗的需求占比非常高。 不少人对字节跳动技术岗的体系结构和技术要求设置不太清楚,想去面试心里没底,下面简单介绍一下字节跳动技术岗要求体系,并给大家分享一份最新入职字节跳动的同事总结出的完整面试题! 字节跳动的职级研发序列一共 10 级: 不同序列间月薪base差异较大,技术base整体偏高。比如2-1月薪会在20k+,2-2的package会在60w-100w左右(算上期权,大概会占30%左右)。T2-2级别的薪资约40k,5...阅读全文

2020-12-18 23:32:44 程序员追风
阅读:1798 评论:0

吐血规劝!程序员防猝死终极指南

快过年了,跟我可爱的小侄子通了个电话,上来就说,“叔叔你头发怎么变少了”,我很痛心,我的小侄子,年纪轻轻的,眼神已经这么不好使了。但转念一想,这也是他对我的一种关心,作为叔叔,也该回应一把,今年过年给他带一本《少儿编程》回去当礼物吧。 但转念又一想,也许我真的头发变少了呢,我强壮的体魄不再足以支撑我肮脏的灵魂了呢,或许真的应了那句古语,程序员固有一死,要么骚死,要么猝死? 我好残忍,我竟然想让我的小侄走上这么一条不归路。 可是我这一身编程本领好想传授予人,我还想不想那么快一"猝"而就。我还想看着...阅读全文

2021-01-26 14:39:24 黑羽_692867294
阅读:2503 评论:2

Go reflect

reflection 反射(reflection)是程序在运行时通过检查其定义的变量和值获得对应的真实类型。 在计算机科学领域,反射是指一类应用能够自描述和自控制。此类应用采用某种机制来实现自己行为的描述(self-representation)和监测(examination),并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射机制就是在运行时动态的调用对象的方法和属性 每种编程语言的反射模型都不同,有些语言并不支持反射。支持反射的语言可以在程序编译期将变量的反射信...阅读全文

2021-04-03 22:32:31 JunChow520
阅读:188 评论:0

深入CGO编程

作者简介 柴 树 杉 青云QingCloud应用平台研发工程师,开源的多云应用管理平台OpenPitrix开发者,Go 语言代码的贡献者,《Go 语言圣经》翻译者,《Go 语言高级编程》开源免费图书作者。2010年开始参与和组织 Go 语言早期文档翻译,2013年正式转向Go语言开发,CGO资深用户。 目录 CGO的价值 快速入门 类型转换 函数调用 CGO内部机制 实践:包装 c.qsort 内存模型 Go和C++对象 背景 在2017年年底初步完成了《Go 语言高级编程》的第二章 CGO 编...阅读全文

2021-04-20 23:21:14 mob604756f0bbf4
阅读:327 评论:0

golang如何编译一个最小的带GUI的标准exe

golang如何编译一个最小的带GUI的标准exe本文出处https://blog.csdn.net/qq_32394351/article/details/93468119核心命令示例:    go build -ldflags="-s -w -H windowsgui" main.go前言:本人是学了python再过来玩golang的,在python中,我能实现的最小打包方式,就是基于tkinter写GUI界面,然后用pyintaller打包工具进行打包,打包完毕后用upx软件进行压缩,完了...阅读全文

2021-08-06 14:24:46 xiaojun1195
阅读:2365 评论:3

Go 日常开发常备第三方库和工具

![](https://tva1.sinaimg.cn/large/008i3skNly1gvyvycad0ej30rs0rsta4.jpg) 不知不觉写 `Go` 已经快一年了,上线了大大小小好几个项目;心态也经历了几轮变化。 因为我个人大概前五年时间写的是 `Java` ,中途写过一年多的 `Python`,所以刚接触到 Go 时的感觉如下图: ![](https://tva1.sinaimg.cn/large/008i3skNly1gvywcqamm1j30ng0l6did....阅读全文

2021-11-02 11:26:56 crossoverJie
阅读:1257 评论:0

context canceled,谁是罪魁祸首?

灵魂三问: 1. 客户端请求超时,取消了请求,服务端还会继续执行么? 2. 客户端请求超时,取消了请求,服务端还会返回结果么? 3. 客户端请求超时,取消了请求,服务端会报错么? # 问题现象 告警群里有告警,定位到报错的微服务看到如下报错:`Post http://ms-user-go.mp.online/user/listByIDs: context canceled`。 ![image-20211223104344170](https://bbk-images....阅读全文

2021-12-23 17:26:07 nanjingfm
阅读:3559 评论:2