Linux IO模式及 select、poll、epoll详解(含部分实例源码)

同步IO和异步IO,阻塞IO和非阻塞IO分别是什么,到底有什么区别?不同的人在不同的上下文下给出的答案是不同的。视频解析:epoll具体实现:https://www.bilibili.com/video/BV1PA41147Ad/支撑亿级io的底层基石 epoll实战揭秘:https://www.bilibili.com/video/BV1iJ411S7mv/异步IO原理:https://www.bilibili.com/video/BV1kt4y1v7Lj/一 概念说明在进行解释之前,首先要说...阅读全文

简书 2020-11-28 15:32:52 linux大本营

GolangRuntime学习

Runtime 简介和发展 Runtime 简介 Golang Runtime 是go语言运行所需要的基础设施 协程调度,内存分配,GC 操作系统以及CPU相关的操作的封装 Proof,trace,race检测 Map, channel,string等内置类型以及反射实现 同python和java不同,Go没有虚拟机的概念,runtime直接被编译成native code Go的runtime和用户代码一起打包在一个可执行的文件中 go 对系统调用的指令进行了封装,可以不依赖glibc Gola...阅读全文

简书 2020-11-28 15:32:46 LegendGo

Go的内存模型

这篇文章主要是为了阅读一篇 go 的文档,解释了什么情况下一个 goroutine 对变量写的值能被另一个 goroutine 可靠观察到,主要以意译为主,括号内为个人理解。无论是用单个通道来守护并发数据的实现还是使用 sync 和 sync/atomic 中的同步原语的实现,程序中多个 goroutine 并发操作相同数据时一定是串行的。(两种常见的并发模型: 使用专门 channel 来操作并发访问的数据,其它 goroutine 把自己的操作请求发给这个 channel;多个 gorout...阅读全文

Segmentfault 2020-12-01 23:32:33 focus

记一次mac安装php,以及redis扩展

说明该文档未使用mac自带的php要安装好的有brew安装phpbrew install php默认安装brew资源里的最新的安装路径启动:brew services start php 关闭:brew services stop php 重启:brew services restart php 安装路径: /usr/local/etc/php/7.4(我这里是7.4版本) 扩展路径: /usr/local/lib/php/pecl/20190902 下面这两个是为了编译redis.so使用: ...阅读全文

Segmentfault 2020-12-01 23:32:33 吃馍夹菜

Gox语言中使用OpenGL库进行GUI图形界面编程-GX24

Gox中使用fyne库进行GUI图形界面编程比较方便,唯一需要注意的是该库依赖于GLFW和OpenGL,有些虚拟机可能不支持,此时,Gox语言也支持使用Sciter库(请参见本系列有关文章),如何选择可以按自己所需考虑。 Gox中使用该库引用fyne包即可。 我们直接来看例子,实现一个简单计算器的代码如下: // 创建一个fyne的applicaition对象 appT = fyne_app.New() // 创建一个窗体对象,作为本程序的主窗体 windowT = appT.NewWindow...阅读全文

简书 2020-11-27 22:32:44 陆满庭

golang的理解

golang 1、天然的并发优势,特别适合 IO 密集应用(goroutine 有栈协程2k,OS thread是8m,内存方面有优势) 2、Golang 社区活跃,生态比较完善 3、go语言是一门静态语言,多人协作开发和维护更加安全可靠,直接编译成机器字节码后只需一个可执行文件即可,方便部署,性能方面接近c,c++(对比java,因为JVM每次运行相应的字节码(class字节码平台无关,一次编译到处运行)时,都要将字节码解释成对应的机器码。其中有很多的重复性工作,例如一个将被运行10000次的...阅读全文

简书 2020-11-27 22:32:44 邵红晓

带你踩gorm v2的坑-模型关系

最近在学习golang, 使用gin框架搭了个网站,于是在网上找golang的orm 找到gorm使用了两天突然发现v2已经发布了,看更新日志说提高了性能修复了很多bug,于是赶紧换了v2,以下纪录我使用gorm v2 踩过的坑 我使用gorm连接的是mysql, 在使用automigrate根据关系模型创建表的时候总是创建失败 首先看官方文档,简单的关联关系,其实理解了官方案例问题就不大. 但是在复杂关系的时候创建就会报错(无法添加外键约束等).这里我提供我自己实验出的一种解决方式: 以我自己...阅读全文

简书 2020-11-27 22:32:44 Kris_Shin

Kubelet 组件占用 CPU 过高的解决思路

问题发现 最近通过监控发现,我们容器云平台其中一个 kubernetes 集群的所有 worker 节点的 kubelet 进程均长时间占用 CPU 过高,奇怪的是 master 节点跟 monitor 节点都没有这个问题。 我们的第一反应是跟负载有关系,这些 worker 节点都运行了很多我们的业务 Pod 幸运的是,这个集群是我们的开发集群,并且这些 worker 节点都是物理机,资源是充足的,还没影响到业务,所以我们有充足的排查处理时间 环境信息 Kubernetes: v1.18.8 操...阅读全文

简书 2020-11-27 22:32:44 陈光辉_6c9f

golang面试 探探

发送http请求的过程以及用到的协议,传输层用到的是tcp还是udp tcp与udp协议以及三次握手四次挥手的详细过程 ?传输的具体东西 http协议有哪些 ?区别是啥?你们公司开发用的是什么http协议?https的加密过程? mysql的索引什么时候不能生效? mysql事务的特性?mysql的原子性是怎么做到的? redis用来做什么在项目里,redis的值更新怎么做的?redis宕机了之后怎么处理?mysql记录操作日志的日志名称 redis的定期删除key 项目里怎么处理的房间已经被预...阅读全文

简书 2020-11-27 22:32:40 呆临

2021秋招总结

秋招总结 [TOC] 前言 2021届秋招基本结束,谨以此文做一下梳理与沉淀。 仅限技术栈为后台开发。 2020-11-27 By SeaSon 秋招结果 个人情况本科、硕士都是双非一本,坐标北京,论学校和学历的话并不占优势,实习的时候基本身边都是北邮、北交及以上的同届同学。但是也希望和我一样的学校并不出彩的同学不要放弃,付出总会得到回报的。 有过三家大厂实习:滴滴(Java)、字节(Golang)、阿里(大数据),技术栈不算窄。在实验室也是团队负责人,带过项目。 总的来说,有优势也有劣势,这次...阅读全文

简书 2020-11-27 22:32:40 SkySeason

Spring Security + OAuth2 精讲 多场景打造企业级认证与授权

下载课件:Spring Security + OAuth2 精讲 多场景打造企业级认证与授权认证与授权是所有应用都必须要实现的,也是所有后端工程师必备的技能,本课中将结合前后端分离的权限管理应用,基于从单体到微服务的演进,精讲主流安全框架 Spring Security5.x 的核心技术,一站式覆盖目前企业主流认证授权的方方面面,只讲实用的!适合人群期望系统性了解认证与授权行业解决方案的开发者技术储备要求熟悉Java Web开发熟悉Spring框架第1章 关于这门课,你需要知道的本章中,将向大家...阅读全文

Go语言中文网 2020-11-27 20:27:46 lilinye

切片传递与指针传递到底有啥区别

提出疑问在Go的源码库或者其他开源项目中,会发现有些函数在需要用到切片入参时,它采用是指向切片类型的指针,而非切片类型。这里未免会产生疑问:切片底层不就是指针指向底层数组数据吗,为何不直接传递切片,两者有什么区别?例如,在源码log包中,Logger对象上绑定了formatHeader方法,它的入参对象buf,其类型是*[]byte,而非[]byte。func (l *Logger) formatHeader(buf *[]byte, t time.Time, file string, line...阅读全文

Segmentfault 2020-11-30 23:32:35 机器铃砍菜刀

我一个c++,是如何爱上go的

我一直从事着c++开发,2015年参与工作,当时做的是c++和fortran数值运算,之后换了一份工作,做chromium内核浏览器的开发。我喜欢c++,我认为这个语言充满了艺术性,它通过宏和模板的组合,能写出很多不可思议的语法,并且我认为这个是c++的强项,是其他语言都没办法做到的事情。因为我学c++的同时,也会其他语言,例如java,basic,php,python,perl,ruby,fortran,js,r等等,我是一个喜欢探索的人,也尝试着把c++中一些能够让代码看着飞起来的编码技巧用...阅读全文

Go语言中文网 2020-11-27 13:47:33 washduck

连json包变量不加tag会怎么样都不知道?年轻人耗子尾汁

问题json包里使用的时候,结构体里的变量不加tag能不能正常转成json里的字段?怎么答如果变量首字母小写,则为private。无论如何不能转,因为取不到反射信息。如果变量首字母大写,则为public。不加tag,可以正常转为json里的字段,json内字段名跟结构体内字段原名一致。加了tag,从struct转json的时候,json的字段名就是tag里的字段名,原字段名已经没用。举例通过一个例子加深理解。package main import ( "encoding/json" "fmt" ...阅读全文

Segmentfault 2020-11-30 23:32:34 ilini

Go 大数据生态迎来重要产品 CDS

项目地址:https://github.com/tal-tech/cdsClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。它有着优异的性能,可以快速部署和运行。不过要想使用ClickHouse搭建起数仓用于数据分析,一个重要的问题就是数据如何进入ClickHouse?我们希望数据源的变化能够自动实时地被同步到ClickHouse,而且支持方便的动态的添加新的数据源(新的数据库,表),能够自动的生成对应数据源的schema。go-zero 团队使用go语言围绕Cl...阅读全文

Segmentfault 2020-11-30 22:32:34 kevinwan

go/golang vim 高亮显示

关于linux下,vim *.go 代码的高亮问题解决方案:golang的安装包自带了vim高亮插件,但只提供到了go1.3版本,后续版本不再集成(注意: go1.10大于go1.3)golang安装包下载https://golang.org/dl/这里我下载的是go1.3.3wget https://golang.org/dl/go1.3.3.linux-amd64.tar.gztar -zxvf go1.3.3.linux-amd64.tar.gzmkdir ~/.vimcp -r go/m...阅读全文

简书 2020-11-27 00:32:48 unspace