切片 slice 原理分析 前言作为一个 Go 语言新手,看到一切”诡异“的代码都会感到好奇;比如我最近看到的几个方法;伪代码如下: 1234567891011func FindA() ([]*T,error) {}func FindB() ([]T,error) {}func SaveA(data *[]T) error {}func SaveB(data *[ 2021-07-28 Go #Go #切片 #数组 #slice
Go channel VS Java BlockingQueue 前言最近在实现两个需求,由于两者之间并没有依赖关系,所以想利用队列进行解耦;但在 Go 的标准库中并没有现成可用并且并发安全的数据结构;但 Go 提供了一个更加优雅的解决方案,那就是 channel。 channel 应用Go 与 Java 的一个很大的区别就是并发模型不同,Go 采用的是 CSP(Communicating sequential processes) 模型;用 Go 官方的说法 2021-07-02 Go #Java #Go #channel #BlockingQueue
Python 中的 os.popen 函数 与 Pipe 管道的坑 前言最近用 Python 写了几个简单的脚本来处理一些数据,因为只是简单功能所以我就直接使用 print 来打印日志。 任务运行时偶尔会出现一些异常: 2021-05-12 cs #Python #pipe #fd
Pulsar 入门及介绍 背景我们最近在做新业务的技术选型,其中涉及到了对消息中间件的选择;结合我们的实际情况希望它能满足以下几个要求: 友好的云原生支持:因为现在的主力语言是 Go,同时在运维上能够足够简单。 官方支持多种语言的 SDK:还有一些 Python、Java 相关的代码需要维护。 最好是有一些方便好用的特性,比如:延时消息、死信队列、多租户等。 2021-04-18 Pulsar #Go #Pulsar #消息队列
利用 GitHub Action 自动发布 Docker 前言最近公司内部项目的发布流程接入了 GitHub Actions,整个体验过程还是比较美好的;本文主要目的是对于没有还接触过 GitHub Actions的新手,能够利用它快速构建自动测试及打包推送 Docker 镜像等自动化流程。 2021-03-26 CICD #Go #Docker #GitHub Actions
写了一个 gorm 乐观锁插件 前言最近在用 Go 写业务的时碰到了并发更新数据的场景,由于该业务并发度不高,只是为了防止出现并发时数据异常。 所以自然就想到了乐观锁的解决方案。 2021-03-15 数据库 #Java #Go #OOP #乐观锁
可能是最晚的2020年终总结 前言首先还是祝大家新年快乐,虽然还有300来天。 哈哈,圆规正传。 近三年每年我都有写年终总结,每次看上一年的新年计划时心里就会骂一句:TMD 又白写了;当然今年也不例外。 2021-03-02 annual-summary
Go 去找个对象吧 前言我的读者中应该大部分都是 Java 从业者,不知道写 Java 这些年是否真的有找到对象? 没找到也没关系,总不能在一棵树上吊死,我们也可以来 Go 这边看看,说不定会有新发现。 开个玩笑,本文会以一个 Javaer 的角度来聊聊 Go 语言中的面向对象。 2021-02-24 基础原理 #Java #Go #OOP #鸭子类型
Python 中的面向接口编程 前言”面向接口编程“写 Java 的朋友耳朵已经可以听出干茧了吧,当然这个思想在 Java 中非常重要,甚至几乎所有的编程语言都需要,毕竟程序具有良好的扩展性、维护性谁都不能拒绝。 2021-01-14 基础原理 #OOP #鸭子类型 #Python
一文搞懂参数传递原理 前言最近一年多的时间陆续接触了一些对我来说陌生的语言,主要就是 Python 和 Go,期间为了快速实现需求只是依葫芦画瓢的撸代码;并没有深究一些细节与原理。 就拿参数传递一事来说各个语言的实现细节各不相同,但又有类似之处;在许多新手入门时容易搞不清楚,导致犯一些低级错误。 2021-01-11 基础原理 #Java #Python #Golang