我是如何写程序的 做为一名软件工程师,日常的工作就是去编写程序,写一段程序很简单,就比如 “hello world“。但是如果想要写好一段程序,就不是那么容易的事了,这篇文章主要是记录一下自己在编程时的一般流程。 1. 明确并且理解需求最近在读一本关于微服务架构的书,其中对需求有这样一个定义: 需求是一个必须要解决的问题,以及围绕这个问题的特定上下文环境 将每个开发任务当成需要解决的一道数学题。那么在解题的第一 2021-02-04 #日常
Go 函数式选项 在实例化一个含有多个字段的结构体时,往往会封装一个工厂函数,类似于 123456789101112131415// 用于示例,实际情况可能有更多的字端type T struct { A string B int C int D bool}func NewT(a string, b int, c int, d bool) *T { return &T& 2021-01-24 #Go
Goland 远程开发 最近准备写一个简单的容器管理工具,需要运行在 Linux 上。然而开发的机子是 MacBook,于是就想折腾一下自己的 goland,配置一下远程开发。 目标就是在本地编写的代码,一件部署到远程的服务器上并运行。 配置远程的服务器在进行开发之前,首先需要把远程的服务器给配置好。远程服务器的版本为 Ubuntu 20.04 ,准备使用的协议是 SFTP,所以需要在 ubuntu 20.04 上配置一 2020-12-28 #工具
docker 连接远程主机 介绍在某些情况下,需要工作的电脑上 docker CLI 连接到另一台主机上的 docker 服务器。记下具体的配置过程。 配置远程主机首先需要在远程主机上开启监听本地的端口, 修改 docker 的配置文件: 1vim /etc/docker/daemon.json 修改,或增减 hosts 字段 123456{ "hosts": [ "unix:// 2020-10-01 #container
DNS 概述Domain Name System(DNS) 是一个用于计算机,服务以及其他资源连接到 Iternet 的分布式分层系统。DNS 是一个数据库,它保存了域名以及 IP 地址的映射。可以将域名转化成对应的 IP。 用户与互联网上的某台机器进行交互时,需要知道对方机器的 IP 地址,不论是 32 位还是点十分制的 IP 地址都不容易记忆,因此需要有一个容易记住的主机名称(域名),并且有一个对映的 2020-09-07 #Network
cgo 内存释放 介绍使用 cgo,Go 可以与 C 语言代码进行交互,但是在使用过程中,如果使用的姿势不对,那么就有可能带来内存泄漏问题。 Go 自带 GC,一般情况下不会发生内存泄漏事件,自带的 GC 会收集不再使用的对象,并将其释放。但是在使用 cgo 时,某些函数会将 C 语言对象分配到 C 的堆上,在 Go 中初始化的 C 对象,是需要显示的调用 C.free() 去释放。官方文档也写明了这一点。在 cg 2020-05-17 #Go
Python map, filter, reduce 函数的注意事项 介绍 注意:本文所说的 python 都是指 python3,python2 已不再被支持 :) map(), filter() 以及 reduce() 是 Python 中与函数式编程相关的三个函数,可以对可迭代序列做映射,过滤以及累积。熟练使用这三个函数可以提升编码速度,并且感受到函数式编程的一些思想。但是在使用过程中需要注意一些事项 TL;DR from functools import 2020-05-06 #Python
Shell Tips 💡 一些关于 shell 的笔记 权限判断在执行脚本时,确定当前的权限是否为 root 代码: 1234if [ "$EUID" -ne 0 ] then echo "not root" exitfi EUID, 用于系统决定用户对系统资源的访问权限,等于 0 时表示权限为 root。 路径判断判断一个文件夹是否存在 代码: 123if [ -d &quo 2020-02-27 #shell
词法分析 介绍在之前的文章中,了解了什么是语言处理器,具体见这里。接下来就是详细了解一下编译器的结构。 整体来看,一个编译器分为前端以及后端两个部分。 前端也就是分析部分,在这个阶段,编译器会将源程序分解成多个组成要素,然后在这些要素上加上语法结构,之后就会利用这个语法结构去创建程序的中间表示。 分析会对程序的语法,语义进行分析,如果存在不一致的情况,编译器就会返回相应的信息。与此同时,分析部分会搜集程序的 2020-01-16 #编译原理
Go 的一种并发模式:管道 Go 管道模式开始这片文章是看完 Golang 官方博客后写下,记录下。原文在这里 首先是 What is pipeline?官方博客上将管道看作是并发的程序的一种。一系列的 stage 通过 channel 串联起来。其中,每个 stage 都是一组执行相同任务的 goroutine。在每个 Stage 中,每个 goroutine 都会做三件事情: 通过一个 channel 接收到要处理的上 2020-01-09 #Go