-
读《软件开发的201个原则》有感
在之前关于软件工程能力的系列文章中,笔者参考了百度章淼老师在工程能力方面的思考。并且老师也是推荐了《软件开发的201个原则》作为参考辅导资料。刚好在2024程序猿节之前章老师预告的译作终于出版了,笔者也是立马订购抢先阅读起来。不过讲句实在的,本书并没有给我眼前一亮的感觉,可能是因为大多数原则其实笔者在 ...
阅读全文-
软件工程能力之思:什么是软件工程
本文是《软件工程能力之思》这个系列中的第一篇文章,将介绍什么是软件工程。在此我想着重讲三个方面,即:软件工程的定义、为什么软件工程如此重要,以及软件工程对个人发展的作用。当然,笔者也是通过学习前辈们的经验以及一些大公司的方法论,结合自己的学习理解和思考,难免有不足之处,也期望有看见此博文的同道 ...
-
Go语言错误处理在业务中的应用实践
在前文《Go语言开发规范》一文中,笔者最后简单提到了错误处理error,但受篇幅限制,讲的还是过于简单。这篇文章将从error设计细节和业务开发这两个角度深入讲讲Go语言中对错误处理的工程实践。 讲起Go语言的error,想必网上可以搜索到一大堆相关的技术文章。但笔者细节阅读了一些文章发现,有些文章侧重 ...
-
Go语言开发规范
相信很多开发者在Go有了一定的熟悉之后,就在思考如何写出更佳go style的代码。在网上搜索了之后,想必肯定找出了两份经典的文档说明: Go Code Review Comments:https://github.com/golang/go/wiki/CodeReviewComments Uber Go Style Guide:https://github.com/uber-go/guide/blob/master/style.md ...
-
基于Linux PAM的SSH认证企业级实践
在上一篇文章《基于Pam-Python模块Linux SSH双因子认证的实际应用》中我讲到了使用Linux PAM模块实现了对ssh登录进行的扩展认证模块。其中对PAM模块的认证机制做了详细的介绍并做了个简单的Demo实现,但考虑到工程化(项目规范程度以及对接企业内部统一认证平台等)以及安全性(如审计、python源码保护等)考虑,之前 ...
-
Linux下检测漏洞软件包
前言 随着开源软件热潮的进一步发展和在互联网上的广泛应用,目前因开源软件存在漏洞而造成的影响变得巨大。如Bash漏洞、Openssl心脏出血漏洞、ImageMagick命令执行漏洞、ffmpeg文件读取漏洞等等。此类软件漏洞往往没能及时修复,主要有以下原因: 1.因为此类漏洞已影响线上业务运行,而往往容易被系统运维管理 ...
-
深入学习Go语言标准库sync
一、前言 最近在阅读Go Web框架echo的源码时,有看到在Echo结构体中有定义了一个sync.Pool类型的pool,处于好奇,加上之前在编写多goroutine并发程序时只使用到了sync包的WaitGroup方法。处于好奇就跟踪进去看了下sync这个包的源码。不看不知道,一看吓一跳,这个包可是非常的强大,它提供了在高并发编程时遇到的各 ...
-
Go语言之Channels实际应用
正如Golang社区中常说的:“不要通过共享内存来通信,要通过通信来共享内存”。在Go语言中,要传递某个数据给另一个goroutine(协程),可以把这个数据封装成一个对象,然后把这个对象的指针传入某个channel中,另外一个goroutine从这个channel中读出这个指针,并处理其指向的内存对象。Golang从语言层面保证同一个时间只 ...
-
深入理解Go语言中的方法
Go语言中是没有类对象的,所以也就没有继承、虚函数、构造函数和析构函数、隐藏的this指针等诸多OOP方面的东西。与之相似的是结构体struct。所以 struct接收器的功能是实现go方法的方法。那么struct到底是一种怎样的存在呢? 什么是方法 Go 语言中同时有函数和方法。方法(method)就是一个包含了接受者(receiv ...
-
深入理解Go语言的Channels特性
当我第一次使用Go中的通道(Channels)的时候,我误以为把Channels当作一种数据结构。我将Channels看作为队列来在goroutines之间提供同步访问。 这种概念性的误解理解使我编写了许多糟糕而复杂的并发代码。 而随着时间的推移以及对Go语言的深入理解,我逐渐关注到它的行为特性。 所以现在谈到Channels,我就会想到通 ...
-
-
-
-
-
-
-
-
-
当前位置: 首页 >
Go语言