POLOXUE's BLOG
HOME
POSTS
TAGS
COURSES
ABOUT
Posts
27
Nov 2023
基于 Python 视频搬运工具开发 Part 1
17
Nov 2023
我的终端环境:Tmux Part1 - 快速一览
本文将主要介绍 tmux 的快速一览。
17
Nov 2023
以 GitHub 作为图片存储创建随机图片 Service API
本文介绍如何基于 GitHub 为图片存储,通过 API 随机返回可用的图片地址。
14
Nov 2023
我的终端环境:终端启动消息 - pfetch/neofetch/fastfetch 教程
本文接着上文,介绍终端启动消息的配置,让你的终端比之前文更加绚丽多彩。
13
Nov 2023
我的终端环境:终端启动消息 - ASCII art
本文介绍如何配置终端的 welcome 消息,让你每天都是好心情。
06
Nov 2023
我的终端环境:高效 shell 命令(四)之 20+1 个 modern-unix 命令
本文将继续介绍 11 个 modern-unix 命令,快速一览。
02
Nov 2023
我的终端环境:高效 shell 命令(三)之提效日常开发 - entr httpie jq
本文将介绍的 3 命令,用于提高 Web 开发人员们的日常效率,它们分别是 entr、httpie 和 jq。
30
Oct 2023
我的终端环境:高效 shell 命令(二)之文件查找与内容搜索 - fd ripgrep fzf
本文将介绍一些高效的查找搜索命令,分别是 fd、ripgrep 与 fzf,提升命令内容的查找效率
27
Oct 2023
我的终端环境:高效 shell 命令(一)之目录文件操作命令 exa、zoxide 与 bat
本篇是高效命令系列第一篇,介绍 exa、zoxide 、bat 替换 ls 和 cd、cat,为我们的终端增添色彩。
20
Oct 2023
我的终端环境:与众不同的 zsh 主题 - powerlevel10k
本教程介绍如何安装 zsh 主题 powerlevel10k 的安装与配置。
18
Oct 2023
我的终端环境:6 个强大的 zsh 插件
今天,将会在上篇教程的基础上,再介绍 6 个插件,其中 4 个是 oh-my-zsh 的内置插件,还有两个第三方插件。
16
Oct 2023
我的终端环境:zsh 安装与主题,推荐 7 个提升效率的 zsh 插件
本教程将主要介绍 zsh 的安装、主题,以及介绍 7 提升效率的 zsh 插件
10
Oct 2023
Golang 中如何实现多行字符串
Python 中,如果想要表示多行字符串,只要通过三单/双引号(""")包裹字符串即可。 类似代码,如下所示。 ```python a = """line1 line2 line3""" print(a) ``` 执行代码,查看输出...
09
Oct 2023
从头构建 Go Web 框架(四):第三方路由集成
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。希望通过翻译这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的...
29
Sep 2023
从头构建 Go Web 框架(三):中间件的数据共享
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。系统通过这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的 W...
28
Sep 2023
我的终端环境:iTerm2 的安装与体验
本系列的目标是介绍如何基于 iTerm2、zsh、Tmux 和 Neovim 搭建我的日常开发环境
27
Sep 2023
基于 LunarVim 搭建不同编程语言 IDE
本文介绍,如何基于 LunarVim 搭建不同编程语言的 Neovim IDE 开发环境。 ## 前言 本文将用几行命令快速安装 Neovim IDE,完成不同编程语言的环境搭建。尽量不涉及到自定义配置,将完全基于 LunarVim ...
25
Sep 2023
Neovim 配置隔离-实现多语言环境支持
本文将介绍如何实现 Neovim 的配置隔离,实现不同编程语言使用不同的编辑器配置。 ## 背景说明 近段时间,一直在学习如何高效使用 Neovim。不断配置的过程中想到,Neovim 是否支持配置隔离,不同用途不同配置。最直接的体现...
25
Sep 2023
Vim 小技巧:高效利用 vim 的行号
我们知道,Vim 支持配置是否显示行号,对这个行号认知,我们一般指的是绝对行号。其实 Vim 支持配置两种行号模式:`number`(绝对行号) 和 `relativenumber`(相对行号)。 今天,基于 vim 行号介绍一个提升其...
18
Sep 2023
什么是 zsh?我是否应该使用 zsh
我们知道,在所有的 Linux/Unix 中 shell,Bash 是最流行的,它是多数 Linux 发行版的默认 shell。除了 bazh,zsh 是另外一款非常流行的 shell。它功能更强大,而且还是 macOS 中的默认 She...
17
Sep 2023
从 0 开始:教你如何配置 zsh
本文将介绍如何使用 zsh 来提升命令行的操作效率。 你是否每天都在与命令行打交道? 如果答案是 "Yes",那你肯定想拥有一个强大可定制的 Shell。 而 zsh 就是为这个目标而生,它运行于诸如 Linux 、MacOS 等类 ...
15
Sep 2023
iTerm2 启动时进入 Tmux 模式
介绍一个最快速的方式使 iTerm2 启动默认进入 Tmux 模式。默认情况下,每次启动 iTerm2,还需要一步输入 tmux attach 进入到 tmux 模式下。 我用 Tmux 是为了管理不同项目的工作区,常见的 IDE 一般...
28
Oct 2021
从头构建 Go Web 框架(二):中间件
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。系统通过这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的 W...
23
Oct 2021
从头构建 Go Web 框架(一):介绍
> 本系列文章写于 2014 年,相较于 golang 极短的发展历程,这已经是古董级别的一篇文章了,但 web 框架思想概念依然有效。系统通过这个系列文章,能让大家都现有 Go Web 框架有更深的认识。 本文是 "构建属于自己的 W...
17
Jul 2021
powermock: 一个支持 gRPC 的 Mock Server
本文介绍的是如何基于 bilibili 的开源方案 powermock 搭建一套通用的适用于自己公司的 MockServer。 ## 背景 我所在公司正处在一个高速发展的阶段,各产品线齐头并进。而我所在的部门主要负责核心能力建设与增长...
10
Dec 2019
Go 如何实现 HTTP 文件上传
早前写过一篇文章,[Go HTTP 请求 QuickStart](https://juejin.im/post/5ce242c2f265da1b6e6574de "Go HTTP 请求 QuickStart")。当时,主要参考 Pytho...
05
Dec 2019
说说 Go 中的变量(附粗制滥造面试题)
和其他语言没有区别,Go 中的数据也是两种表示方式,常量和变量,本文先说说变量吧。 为了增加文章的趣味性(多掉些头发),搜集了一些常见的面试题。部分是自己瞎编的,顺便为自己明年可能到来的面试做些准备。 先答题,题目中附有提示,但无解答...
03
Dec 2019
如何评价 Golang 开源库 Cobra
开源库 Cobra 是 Golang 下用于创建命令行应用的框架。 它也是 k8s、hugo 等开源项目都在用框架。[GitHub 项目地址](https://github.com/spf13/cobra) ## 命令行应用 对于 G...
30
Nov 2019
Go 命令行解析 flag 包之通过子命令实现看 go 命令源码
[上篇文章](https://mp.weixin.qq.com/s/rzgYifoMzWOO_PD0-2UIpw) 介绍了 flag 中如何扩展一个新的类型支持。本篇介绍如何使用 `flag` 实现子命令,总的来说,这篇才是这个系列的核心...
26
Nov 2019
Go 命令行解析 flag 包之扩展新类型
[上篇文章](https://www.poloxue.com/posts/2019-11-23-commandline-tool-flag-in-golang/) 说到,除布尔类型 `Flag`,flag 支持的还有整型(int、int6...
23
Nov 2019
Go 命令行解析 flag 包之快速上手
本篇文章是 Go 标准库 flag 包的快速上手篇。 ## 概述 开发一个命令行工具,视复杂程度,一般要选择一个合适的命令行解析库,简单的需求用 Go 标准库 flag 就够了,flag 的使用非常简单。 当然,除了标准库 fl...
07
Nov 2019
详细介绍 Go 中如何实现 bitset
最近尝试在 B 站录些小视频,我的 [B 站主页](https://space.bilibili.com/314069695)。录视频当是为了彻底搞懂某个知识点的最后一步吧,同时也希望能习得一些额外的能力。在讲 Go 如何实现 bitse...
06
Nov 2019
你真的不用再设置 GOROOT 了
为什么不再需要设置 `GOROOT` 呢?推荐读两篇英文文章,我意译了下,将它们放在了一篇里。 [第一篇](https://dave.cheney.net/2013/06/14/you-dont-need-to-set-goroot-r...
03
Nov 2019
从词法分析角度看 Go 代码的组成
之前的 Go 笔记系列,已经完成到了开发环境搭建,原本接下来的计划就是到语法部分了,但后来一直没有前进。主要是因为当时的工作比较忙,分散了精力,于是就暂时放下了。 最近,准备重新把之前计划捡起来。 第一步,肯定是了解 Go 基础语法部...
23
Oct 2019
Go Module 依赖关系的可视化
最近,我开发了一个非常简单的小工具,总的代码量 200 行不到。今天,简单介绍下它。这是个什么工具呢?它是一个用于可视化展示 Go Module 依赖关系的工具。 # 为何开发 为什么会想到开发这个工具?主要有两点原因: 一是最近经...
17
Oct 2019
Go 中如何解析 json 内部结构不确定的情况
本文是通过组织曾经梳理过的一篇文章和一个问答而成。主要介绍的是关于 Go 如何解析 json 内部结构不确定的情况。 # 问题描述 这或许是新手常会遇到的一个问题,无论是在各种微信群、知乎、思否、stackoverflow 上,我常会...
14
Oct 2019
Go Module 存在的意义与解决的问题
最近,我在尝试整理一篇关于 Go 包管理发展历史的文章,希望能加深自己对这一块知识的认识。在搜集资料的时候,发现了这篇文章,顺手翻译了一下。 本文是该系列的第一篇,主要介绍包依赖管理中一些基础知识。文中提出了 Go 开发中的三个痛点,...
28
Sep 2019
一文理清 Go 引用的常见疑惑
今天,尝试谈下 Go 中的引用。 之所以要谈它,一方面是之前的我也有些概念混乱,想梳理下,另一方面是因为很多人对引用都有疑问。我经常会看到与引用有关的问题。 比如,什么是引用?引用和指针有什么区别?Go 中有引用类型吗?什么是值传递?...
15
Sep 2019
Go 中 Slice 的 In 实现探索
之前在知乎看到一个问题:为什么 Golang 没有像 Python 中 in 一样的功能?于是,搜了下这个问题,发现还是有不少人有这样的疑问。 今天来谈谈这个话题。 in 是一个很常用的功能,有些语言中可能也称为 contains,虽...
10
Sep 2019
Go 的 Http 请求系统指南
前几天在 "知乎想法" 谈到了一个话题,如何模仿学习,举了通过 net/http client 模仿 Pyhton 的requests的例子。但并未实践,难道想法真的只能是想法吗?当然不是,于是我决定先暂停一周 GO 笔记,来实践下自己...
10
Sep 2019
Go 问答汇总 Part Three
第三篇 Go 问答总结,2019 年 8 月份总结,大约有 12 篇问答。前两遍地址如下: [Go 问答汇总 Part One](https://www.poloxue.com/posts/2019-07-22-zhihu-go-par...
01
Sep 2019
Go 的静态检测功能
# 译者前言 第三篇 Go 官方博客译文,主要是关于 Go 内置的竞态条件检测工具。它可以有效地帮助我们检测并发程序的正确性。使用非常简单,只需在 go 命令加上 -race 选项即可。 本文最后介绍了两个真实场景下的竞态案例,第一个...
22
Aug 2019
如何测试你的 Go 代码
不论是开源项目,还是日常程序的开发,测试都是必不可少的一个环节。今天我们开始进入 Go 测试模块 testing 的介绍。 差不多两周没有更新 Go 文章了,最近状态不是太好。这篇文章本来准备写的内容非常丰富,结果有点力不从心,移除了好...
17
Aug 2019
Go 中如何使用反射 Part Two
# 译者前言 这篇博文介绍的内容比较实在,主要是关于两方面的内容。一是介绍 reflection 在 encoding/json 中的应用,另一个开发了一个 Cacher 工厂函数,实现函数式编程中的记忆功能,其实就是根据输入对输出进...
15
Aug 2019
如何阅读 Go 源码
Go 的源码在安装包的 src/ 目录下。怎么看它的源码呢?直接看吧!没人教的情况下,只能自己撸了。当然,这种内容一般也不会有人教。 怎么撸? Go 源码中,应该可分为与语言息息相关的部分,和官方提供的标准库。与语言实现相关的肯定是最...
10
Aug 2019
Go 中如何使用反射 Part One
# 什么是反射 多数情况下,Go 中的变量、类型和函数的使用都是非常简单的。 当你需要一个类型: ```go type Foo struct { A int B string } ``` 当你需要一个变量,定义如下: ...
10
Aug 2019
Go 问答汇总 Part Two
继上篇 [Go 问答汇总](https://www.poloxue.com/posts/2019-07-22-zhihu-go-part1/),已经过去了一个多月。今天汇总下近一个多月我关于 Go 的回答。 粗略数了一下,一个多月的时间...
29
Jul 2019
Go 实现词法分析与解析 Part Three
# 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 ...
25
Jul 2019
Colly 从入门到不放弃指南
最近发现知乎上感兴趣的问题越来越少,于是准备聚合下其他平台技术问答,比如 segmentfault、stackoverflow 等。 要完成这个工作,肯定是离不开爬虫的。我就顺便抽时间研究了 Go 的一款爬虫框架 colly。 # 概...
24
Jul 2019
Go 实现词法分析与解析 Part Two
本文是关于词法器实现的具体介绍,如果在阅读时遇到困难,建议参考源码阅读,文中的代码片段为了介绍思路。如何解析会在下一篇介绍。 最近简单看了下 Go 源码,在 src/go 目录下有几个模块,token、scanner 和 parser...
22
Jul 2019
Go 问答汇总 Part One
最近比较忙,因为工作需要,必须快速了解一些新知识,写文少了,翻译多了。 原因吗?也简单。 翻译好文不仅可以帮助大家学习,自己也能学到更多。 最近,单独开了个专栏,用于保存自己翻译的计算机相关译文,大家如果有兴趣可以关注一下。Go 专...
17
Jul 2019
Go 实现词法分析与解析 Part One
一直对词法分析与解析的话题比较感兴趣,最近发现了好几篇相关的优秀文章,准备好好翻译和研究下。我的理解,词法分析与解析的应用还是比较广泛的,无论简单的配置文件、各种模板语言、还是我们每天在写编程语言都离不开它。 本篇文章一个系列文章的第一...
12
Jul 2019
Go 通过 Context 实现并发控制
## 译者前言 第二篇官方博客的翻译,主要是关于 Go 并发控制的 context 包。 总体来说,我认为[上一篇](https://juejin.im/post/5d01177a5188254b9000975c)才是 Go 并发的基...
05
Jul 2019
Go 如何构建并发 Pipeline
## 译者前言 这篇文章来自 Go 官网,不愧是官方的博客,写的非常详细。在开始翻译这篇文章前,先简单说明两点。 首先,这篇文章我之前已经翻译过一遍,但最近再读,发现之前的翻译真是有点烂。于是,决定在完全不参考之前译文的情况下,把这...
18
Jun 2019
如何理解 Go 的接口
[如何理解 Golang 中的接口](https://www.zhihu.com/question/318138275/answer/699989214)。个人认为,要理解 Go 的接口,一定先了解下鸭子模型。 # 鸭子模型 那什么鸭...
17
Jun 2019
如何防止你的 Goroutine 泄露(二)
上篇[文章](https://zhuanlan.zhihu.com/p/74090074)说到,防止 goroutine 泄露可从两个角度出发,分别是代码层面的预防与运行层面的监控检测。今天,我们来谈第二点。 # 简述 前文已经介绍了...
10
Jun 2019
如何防止你的 Goroutine 泄露
今天简单谈谈,Go 如何防止 goroutine 泄露。 # 概述 Go 的并发模型与其他语言不同,虽说它简化了并发程序的开发难度,但如果不了解使用方法,常常会遇到 goroutine 泄露的问题。虽然 goroutine 是轻量级的...
03
Jun 2019
Golang 中如何使用 Set
今天来聊一下 Go 如何使用 set,本文将会涉及 set 和 bitset 两种数据结构。 注:花了点时间,将这个专题录制成了视频,上B 站查看 [视频](https://www.bilibili.com/video/av750787...
27
May 2019
Go 虚拟环境管理工具 gvm
本文谈下我对 Go 版本管理的一些思考,并给大家介绍一个小工具,gvm。这个话题说起来也很简单,但如果想用的爽,还是要稍微梳理下。 # 背景介绍 Go 的版本管理,并非包的依赖管理。平时的工作中,很多时候并不会遇到这样的需求,所以可能...
06
May 2019
Go 的那些 IDE
经过前面的一系列工作后,Go 的语言环境已经搭建完成。 我们初步体验了 Go 提供的大部分命令。但在正式进入开发之前,还有件工作要做,那就是选择一款适合自己的 IDE。 ## 为什么使用IDE "程序员为什么要使用 IDE",在一些...
29
Apr 2019
Go 命令快速体验
利用 go run 和 go build 可以完成 Go 的整个编译执行流程。但 Go 提供给我们的命令当然远不止这两个。 本文将在所能及的范围内,尽量地介绍GO提供的所有命令,从而实现对它们有个整体的认识。 ## 概述 除了 go...
15
Apr 2019
详细聊聊如何安装 Go
本篇文章进入 Go 的开发环境搭建系列。 我们知道,编写任何语言的代码都离不开两样工具,语言开发包和代码编辑工具。 今天先来聊聊如何安装 Go。 我们或许都会觉得这种事非常简单,不值得写篇文章介绍。最初我也是这么想的。但深入了解下来...
08
Apr 2019
为什么要学 Go
新学一门语言,大家都想先弄清楚为什么要学它?玩知乎一段时间更是让我感受深刻,诸如 - 为什么要学习Python? - 为什么要学习C? - 为什么要学习Java? 之类问题经常出现在眼前。以前学语言时倒没怎么关心过这类问题。今年公司由...
18
Mar 2019
谈谈版本管理 GIT 的理论与架构
GIT 是当前最流行的版本控制系统。之前在公司系统做过一次系统总结,抽时间整理成文。 ## 基础概念 GIT是一种版本控制软件,那就首先了解一下什么是 “版本控制”? 比较官方的解释是,版本控制系统是一种记录一个或若干个内容变化,以...
31
Dec 2016
一文精通 crontab 从入门到出坑
此篇技术博文主要介绍的是 crontab, Linux 下的计划任务管理工具。涉及内容包括 crontab 使用配置、常见坑的分析和编者总结的错误调试方法。 我的理解,后台任务通常分为两种:常驻和定时。之前的文章《pm2进程管理工具使用...
10
Dec 2016
循序渐进 MySQL 事务隔离级别
本篇文章的重点在于总结MYSQL事务。 # 什么是事务 事务简言之就是一组 SQL 执行要么全部成功,要么全部失败。MYSQL 的事务在存储引擎层实现。 事务都有 ACID 特性: - 原子性(Atomicity):一个事务必须被...
30
Mar 2016
快速了解 Kafka 基础架构
今天来聊下大数据场景下比较流行的消息队列组件 kafka。本篇文章将主要从理论角度来介绍。 kafka 是一款开源、追求高吞吐、实时性,可持久化的流式消息队列,可同时处理在线(消息)与离线应用(业务数据和日志)。在如今火热的大数据时代,...