Go 标准库中涉及 I/O 操作的几个包的区别

1月 15, 2020
Golang

工作中需要用 Go 读写一些 Excel 表等类型的文件,发现 Go 提供了很多关于 I/O 操作的包,比如 io、ioutil、bufio 等,于是在这里总结一下,主要目标是理清几个包之间在使用时如何选择。 io# io 库提供了底层的接口定义,还有一些常量,比如 io.EOF。最主要的,它定义了 io.Reader 、 io.Writer 和 io.Closer 等接口,在 Go 中很多方法都 …

Redis 的分布式锁使用注意

1月 3, 2020
Database, 系统设计, Redis, 并发编程

为什么需要分布式锁# 锁机制用于管理对共享资源的并发访问控制,当同一服务的多台机器间需要控制并发的时候,需要保证服务间在同一时间只能被一个线程访问。由于 Redis 的特点是单进程,并且具有高性能的特点,所以一般用 Redis 来做分布式锁。另外分布式锁还有以下几个特点: 互斥性:同一时刻只能有一个实例持有锁。 高可用:部分节点宕机不会影响其他节点对锁的使用。 防止死锁:如果客户端没有主动释放锁, …

学习钢琴半年的体会 R

12月 27, 2019
Life, Recommended, 杂谈

婚礼上为了给媳妇制造一个印象深刻的惊喜,我提前三个月去学了钢琴,现在回想起来也算是一件有意思的事情。6 月底报名后,经过和钢琴老师的讨论,对于我这种零基础短期想突击的,同时后期还想继续学下去的,最后老师推荐了我《月亮代表我的心》,尤其在老师弹了以后我自己也觉得这首曲子非常好。 于是我花了大约一个半月的时间打乐理基础,还有一个多月的时间专门学习这首曲子,在此之前我的乐理基础完全为零,从五线谱开始学。 …

Github Actions 实践总结

12月 1, 2019
DevOps, Tools

Github Actions 发布有一段时间了,自己用的也挺嗨,过来总结一下。我主要在两个地方用到了,一个是博客,另一个是打包、发布前端项目。整体功能上 Actions 和 GitLab CI/CD 差不多,同样实现了项目的自动化测试、打包、部署,不过 Actions 利用了 GitHub 开源项目平台的特点,提供了 Marketplace,可以直接复用其他作者的 Action。 GitHub …

Redis 实现布隆过滤器

11月 12, 2019
Database, 系统设计, 数据结构, Redis

布隆过滤器(Bloom Filter,BF),能够确定一个东西一定不存在或可能存在,常用于在海量并发情况下防止缓存击穿,相比较传统的 List、Set、Map 数据结构,布隆过滤器能够在大数据量的情况下,相比其他结构更能节省大量的内存空间。 实现原理# 哈希函数# 布隆过滤器实现了 K 个不同的哈希函数,假设初始的二进制数组长度为 N,K 对 N 取模,就得到了 K 个位置,当加入一个变量时,就将 …

Redis 基础知识

11月 5, 2019
Database, Redis

Redis 介绍# 历史# Redis 是一个使用 ANSI C 编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库,由来自意大利西西里岛的 Salvatore Sanfilippo(Antirez)发起并编写。从2015年6月开始,Redis 的开发由 Redis Labs 赞助,而2013年5月至2015年6月期间,其开发由 Pivotal 赞助。在2013年5月之前,其开发 …

使用 Django 查询数据库的分表

10月 18, 2019
Python, MySQL, Django

业务背景# 最近已经转到 Go 下面进行日常工作的开发,我的一个后台项目有一些内部轻量的数据查询需要,考虑需求的复杂度不高,就平常自己和同事几个人使用,没必要专门开发一个前端项目来进行数据查询,于是我想到了老本行 Django,由于 Django 出色的后台管理功能,我几乎不用做多少开发,只需要配置下 Model 层结构就可以了,唯一的问题就是这个 Go 项目的数据在数据库中是分表管理的。 …

说说实际工作中 GraphQL 的使用体验

10月 11, 2019
HTTP, Tools, Frontend, 系统设计, 计算机网络

背景# 接触 GraphQL 是工作中需要有一个项目,用来聚合内部很多其他微服务的接口然后统一暴露给外部使用,在这样的场景下,对项目有几点需求: 能够让外部业务方对接方便,当然最好有接口文档。 各个业务方可以根据他们自己的需要自己选择字段集合。 项目提供的接口可以被不同的语言框架通过 HTTP 调用,比如前端、Python、Go 等。 基于以上的需求,在组内一位大神的提议下, …

UTF、Unicode 和 ASCII 编码的关系

9月 20, 2019
系统设计

说 UTF 需要先说 Unicode,而说 Unicode 需要先说 ASCII,这三者正好是历史的发展一步步进化而来的,是计算机领域为了解决全世界各种文字之间的编码统一问题而给出的通用解决方案。 ASCII 码表# ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显 …

AES 对称加密学习笔记 R

4月 26, 2019
Algorithms, Recommended, 密码学, 读书笔记

工作中的需求,需要一个基于 Django 的数据脱敏解决方案,我们的目标是要用 AES 对称加密算法,接入不能影响现有业务逻辑,数据迁移方便,失败可以回滚,最好可以开源。经过调研与开发,我最终产出了一个开源项目:luojilab/django-mirage-field,目前已经有 50+ star。本篇即为学习对称加密算法的笔记。 异或概念# 对称加密最基础的技术就是异或运算了,简单介绍一下。 表 …


© 2012 - 2025 YINDONGLIANG