29 Golang反射与底层编程

什么情况下用到反射 有时我们需要写一个函数,这个函数有能力统一处理各种值类型,而这些类型可能无法共享同一个接口,也可能这个类型在我们设计函数时还不存在,这个时候我们就可以用到反射。 空接口可以存储任意类型的变量,那如何知道这个空接口保存数据的类型是什么?值是什么? 可以使用类型断言 可以使用反射实现,也就是在程序运行时动态地获取一个变量的类型信息和值信息。 把结构体序列化成json字符串,自定义结构体Tab标签的时候就用到了反射 反射的基本介绍 反射是指在程序运行期间对程序本身进行访问和修改的能...阅读全文

简书 2021-04-13 20:32:38 learninginto

Go select

Golang中的select来源于网络I/O模型中的select,本质上I/O多路复用技术,只不过Golang中的select基于的并非网络而是channel。 select语句是Golang中的控制结构,类似用于通信的switch语句,也被称为channel开关。 select { case communication clause: statement(s) case communication clause: statement(s) default: statement(s) } Gol...阅读全文

简书 2021-04-13 20:32:38 JunChow520

Python真的很慢?那又如何!在实践中告诉你真相!

前言: 多年前我第一次接触Python,在此之后便成为 Python 的疯狂爱好者。 在工作中能用程序自动化实现的,我都尽可能积极的使用 Python,工作效率有了质的飞跃; 由此,我慢慢地了解到了 GIL,也通过尝试知道了在计算密集行任务方面,Python 的性能表现也许的确不如 Java,Golang 等静态语言,正因如此,有很多人开始不再尝试使用 Python,但在这里我想说,从我这些年的从业经历来看,Python 并没有让我觉得"慢",即使让我去与其他语言相比;也许它不如其他语言快,但对...阅读全文

简书 2021-04-13 20:32:38 朱朱Python

10天入门go语言教程- Hello World

转载请注明来源"老男孩IT教育"来源网址:https://www.sholdboyedu.com/new/462.html每一门编程语言都逃不过hello world的命运,还依稀记得网上的段子,下面是程序员方阵向我们走来,高举着键盘,喊出响亮的hello world口号,下面我们一起来学习这个编译方法吧!建立 Go 工作区在编写代码之前,我们首先应该建立 Go 的工作区(Workspace)。在 Mac 或 Linux 操作系统下,Go 工作区应该设置在 HOME/go∗∗。所以我们要在∗∗H...阅读全文

51CTO博客 2021-04-13 17:39:55 上海老男孩教育

手撸golang 仿spring ioc/aop 之5 如何扫描

手撸golang 仿spring ioc/aop 之5 如何扫描 缘起 最近阅读 [Spring Boot技术内幕: 架构设计与实现原理] (朱智胜 , 2020.6) 本系列笔记拟采用golang练习之 Talk is cheap, show me the code. Spring Spring的主要特性: 1. 控制反转(Inversion of Control, IoC) 2. 面向容器 3. 面向切面(AspectOriented Programming, AOP) 源码gitee地址:...阅读全文

简书 2021-04-13 18:32:31 老罗话编程

MySQL大表优化方案

当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化: 单表优化 除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量: 字段 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED VARCHAR的...阅读全文

简书 2021-04-13 12:32:37 沃利贝尔的风暴抉择

Golang 内存之mspan、mcache、mcentral 和 mheap 数据结构

本文最新版本请查看原文:https://blog.haohtml.com/archives/29385 Golang中的内存部件组成关系如下图所示 components of memory allocation golang 内存分配组件 在学习golang 内存时,经常会涉及几个重要的数据结构,如果不熟悉它们的情况下,理解它们就显得格外的吃力,所以本篇主要对相关的几个内存组件做下数据结构的介绍。 在 Golang 中,mcache、mcentral 和 mheap 是内存管理的三大组件,mca...阅读全文

简书 2021-04-13 12:32:34 路过100

Vert.x Local EventBus

看了Nacos服务端的event发布订阅方式其实跟eventbus都是类似的东西,一直以来也只是对eventbus知名而不知其所以,因此单独看了一下verxt里的eventbus实现,这个框架也不是太多人知道,但是其实里面的那一套都是一样的。 本文仅为本人学习用记录,文笔不好 vertx里的EventBus eventbus是actor模型中连接actor与actor之间的通信管道,类比一下就是golang里面的channel,但是channe作用于协程到协程,而eventbus是作用于角色之间...阅读全文

简书 2021-04-13 12:32:32 吱吱歪

基于Apple M1 golang的debug模式

现象 go debug时出现 Debugger disconnected unexpectedly go tool test2json:Signal:interrupt 解决过程 确认各程序版本 golang :go 1.16.3 darwin_amd64 consul : consul_19.4_darwin_amd64 通过官网找到了支持ARM的版本go 1.16.3 darwin_arm64 卸载重新安装golang,重启就可以了 附带卸载重装golang的命令 which go -- 找...阅读全文

简书 2021-04-13 12:32:31 帅气的哒哒

Go微服务入门到容器化实践,落地可观测的微服务电商项目

点击下载----Go微服务入门到容器化实践,落地可观测的微服务电商项目 提取码: kb2d点击下载----Go微服务入门到容器化实践,落地可观测的微服务电商项目密码:9dw5m7【完整版9章】Go微服务入门到容器化实践,落地可观测的微服务电商项目,2021年新课对于真正微服务项目来说,服务开发只是第一步,容器化、弹性伸缩和可观测才是真正关键。本课程将通过电商项目实战,系统学习完全形态的微服务,掌握成熟闭环的落地方案。课程从搭建到部署,完整落地Go微服务电商项目,为0-2年Go工程师打造,满足大多...阅读全文

51CTO博客 2021-04-13 09:35:38 卡夫吉诺

go微服务开发入门

rpc基础 服务端监听一个端口 nc -l 127.0.0.1 8800 往服务器发送数据(返回服务器响应数据) echo -e '{"method":"hello.HelloWorld","params":["TTTT"],"id":0}' | nc 127.0.0.1 8880 golang 自带rpc通信(gob) 服务端代码 package main import ( "fmt" "net" "net/rpc" ) type Hello struct { } func (h *Hello...阅读全文

简书 2021-04-13 10:34:42 voidFan

php扩展xhprof实践分析项目性能

英国弗兰明曾说过一句话:“不要等待运气降临,应该去努力掌握知识。” 1 前言 大家好,我是阿沐!你的收获便是我的喜欢,你的点赞便是对我的认可。 今天这篇文章是我在2018年博客上写的,种种原因博客已不复存在。讲这篇文章的主要原因是因为之前在公司使用过,而且得到了很好的性能调优,最重要的是发现了问题解决了问题,kpi就会高,money嗖嗖的来了,哈哈...... 目前我从事于golang、lua语言开发,当然PHP是老本行并没有落下,时不时的还用PHP帮别人写写东西,所以主要文章还是以php相关为...阅读全文

简书 2021-04-13 10:34:42 我是阿沐

2021-04-12:判断二叉树是否是搜索二叉树?

2021-04-12:判断二叉树是否是搜索二叉树? 福大大 答案2021-04-12: 中序遍历有序即可。 1.递归。 2.莫里斯遍历。 代码用golang编写。代码如下: package main import "fmt" const INT_MAX = int(^uint(0) >> 1) const INT_MIN = ^INT_MAX func main() { head := &TreeNode{Val: 5} head.Left = &TreeNode{Val: 3} head.Ri...阅读全文

简书 2021-04-13 10:33:08 福大大架构师每日一题

Gox语言中的全局变量与局部变量-GX52

Gox语言作为一门脚本语言,为了便捷,并适当提升性能,目前只支持全局变量。这有一定的方便性,例如,常见语言中类似下面的问题就将不复存在: a = true var sqlStr string if a { sqlStr = "insert into table1 (id, name) values(12, 'is')" } else { sqlStr = "insert into table1 (id, name) values(12, 'not')" } finalStr = strings....阅读全文

简书 2021-04-13 10:32:31 陆满庭

RabbitMQ 入门 (Go) - 6. 数据持久化(上)

从本节开始,我介绍一下如何将相关数据持久化到数据库,也就是上图中蓝色的部分。 目前的问题我先运行 6 个传感器和2 个协调器,这里我使用了批处理文件: 运行后,看一下 RabbitMQ 的管理控制台:注意上面前面几个 Queue,这些 Queue 就是我们让传感器和协调器监听那两个 Fanout Exchange 时创建的,因为这两个 Exchange 不使用路由 Key 来决定接收者,我使用了空字符串“”作为这些 Queue 的名称,而RabbitMQ 就会为它们赋予一个唯一的名字。 因为目前...阅读全文

51CTO博客 2021-04-13 00:06:26 mb607022e25a607

手撸golang 仿spring ioc/aop 之4 蓝图

手撸golang 仿spring ioc_aop 之4 蓝图 缘起 最近阅读 [Spring Boot技术内幕: 架构设计与实现原理] (朱智胜 , 2020.6) 本系列笔记拟采用golang练习之 Talk is cheap, show me the code. Spring Spring的主要特性: 1. 控制反转(Inversion of Control, IoC) 2. 面向容器 3. 面向切面(AspectOriented Programming, AOP) 源码gitee地址: h...阅读全文

简书 2021-04-12 21:32:37 老罗话编程

Go sync.Map

map并发读线程安全,并发读写线程不安全。 sync.Map 读写分离 空间换时间 Map Golang1.6之前内置的map类型是部分goroutine安全的,并发读是没有问题的,但并发写则会报错。换言之,Golang中map只读是线程安全的(thread-safe),但在并发环境下读写是线程不安全的(写线程不安全),为什么呢? 例如:并发环境下同时读写map会发生致命错误,即多个goroutine同时读写一个map时会报错。 $ vim map_test.go package test im...阅读全文

简书 2021-04-12 21:32:37 JunChow520

在docker上部署golang的web demo

1. main.go的代码如下: 2. 运行以上demo,获得一个main.exe,代码如下:webapp> go build main.go(在mac下如果直接执行代码为:./main)3. 在Dockerfile配置文件中指定步骤 关于Dockerfile命令,有一篇很详细的解释:https://my.oschina.net/u/3829444/blog/18608494. 在项目目录下,执行下面的命令创建镜像,并指定镜像名称为webapp:docker build.-t webapp中途出...阅读全文

简书 2021-04-12 18:34:00 DOB_8199

传输层协议:TCP和UDP

传输层:TCP和UDP 使用IPv4和IPv6的应用程序 平时我们使用的tcpdump、ping、traceroute属于TCP/IP协议族,虽然叫TCP/IP协议族,但是这个协议族还涉及到许多其他成员。下图是其概貌。 在这里插入图片描述 tcpdump直接同数据链路层通信,使用BPF或DLPI的接口不用套接口或XTI。 tcpdump以外的9个应用程序通常是套接口或XTI。 traceroute程序使用两种套接口:IP接口和ICMP套接口。 ICMP,网际控制消息协议。处理路由器和主机之间的错...阅读全文

简书 2021-04-12 18:33:46 诗人和酒