Beancount_03_精益求精


高阶用法

事件

事件指令用于跟踪某个变量的值,例如位置 :

2023-01-04 event "Record" "洗牙"
2022-09-12 event "Location" "浙江杭州 -> 浙江温州"
2022-09-11 event "Location" "浙江温州 -> 浙江杭州"
2021-08-23 event "Employer" "入职 | xxx有限公司 | 温州 | 运维工程师 | 薪资 8000"
2

Read more

Beancount_02_借贷记账法


账户类别

复式记账的最基本的特点就是以账户为核心,Beancount的系统整体上就是围绕账户来实现的。Beancount 中账户名支持层级,以英文冒号: 分隔,如 Assets:Card:1234。但第一层必须是以下五个账户之一,日常交易中涉及到的账户,一定可以归于其中某一类:

  1. Assets 资产:储蓄卡余额、支付宝余额、股票、房产、汽车等(房子车子可以以金额入账方便折旧)
  2. Liabilities 负债:信用卡欠款、房贷、车贷等
  3. Equity 权益:可以看作是净资产,也可用于账户初始化、误差处理等
  4. Expenses 支出:生活中的一切支出,指不再进行转卖以获取利益的支出
  5. Income 收入:

Read more

Beancount_01_选型


记账方式

首先先回答我几个问题:

  1. 为什么要记账,换句话说记账的目的是什么?
  2. 现有的记账方式不满足需求吗?

对自己有清晰的认知

接第一个问题,为什么要记账,以及你是否已经想好如何将记账这件事融入你的生活甚至变成一辈子的习惯。记账这件事是那种容易让人因为一时冲动开始,但是很快就放弃的事情。每个记过账的人都有不同的原因和契机,但能坚持下来的则凤毛麟角。

我的回答是,实现财务自由(即资产产生的收入不少于生活开销)。如果不知道自己有多少开销,甚至不知道自己有多少资产、收入,即使一夜暴富,财务自由也是一件虚无缥缈的事,因为你不知道现有的资产够你生活多久,换句话说就是「退休」,只不过有人能在三十多岁退休

Read more

Golang_06_并发及反射


单元测试

基本介绍

Go中自带轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试。testing框架与其他测试框架类似,可以基于这个框架写相应函数的测试用例,也可以基于该框架写相应的压力测试用例。通过单元测试,可以实现:

  1. 确保每个函数是可运行的,且运行结果正确;
  2. 确保写出来的代码性能;
  3. 单元测试能及时的发现程序设计或实现的逻辑错误;
  4. 性能测试的重点在于发现程序设计上的一些问题,使程序能接受高并发的情况;

快速入门总结

快速入门案例代码见坚果云/home/daihaorui/桌面/MyNutcloud/wlhiot_manage/goproject/src/go

Read more

Golang_05_项目及文件


通用

项目开发流程说明

程序框架图

当收到业务模块时,分析该模块有多少个文件(类),和各个类之间的调用关系,程序员需要根据架构师要求,进行分层。采用MVC架构,具体百度。

面向对象

将记账软件功能封装到一个结构体中,调用该结构体的方法,来实现记账,显示明细等功能,结构体的名称为FamilyAccount。通过在main方法中,创建一个结构体实例,实现记账功能。

客户管理系统

程序框架图

功能实现-显示主菜单和退出程序

  1. [目录结构]创建customer主程序目录,在内依次构建customer,customerService,customerView文件
  2. [customerModel]根据实

Read more

Golang_04_面向对象


结构体struct

https://book.itsfun.top/gopl-zh/ch4/ch4-04.html

在Go中,没有传统意义上的对象的概念。一个结构体就是一个对象,结构体中包含了不同的数据类型组成一个对象。结构体属于值类型,遵循值拷贝

field

  1. field的类型可以为基本类型、数组或引用类型;
  2. 创建出来的结构体默认有零值,即
  3. 布尔类型为false,数值类型为0,字符串类型为""
  4. 数组类型的默认值和它的元素类型相关,如score[3]int则为[0, 0, 0]
  5. 指针、slice和map的零值为nil,即还未分配空间
  6. 不同结构体变量的字段相互独立,因为结构体属于值类型
ty

Read more

Golang_03_函数


函数

为完成某一功能的程序指令(语句)的集合,称为函数

调用机制

  1. 在调用一个函数时,会为该函数分配一个新的空间,编译器会通过自身的处理让这个新的空间和其他的栈空间区分开来;
  2. 每个函数对应的栈中,数据空间是独立的,不会混淆;
  3. 当一个函数执行完毕后,程序会销毁这个函数对应的栈空间;

return语句

  1. 如果返回多个值,在接收时,可以用_符号表示占位忽略;
func [函数名] ([形参列表]) ([返回值列表]) {  // 基本语法    
    [指定语句]    
    return [返回值列表]  // 当函数有return语句时,将结果返回给调用者 
}

递归调用

函数

Read more

Golang_02_使用基础


基础功能实现

从控制台接受用户信息

功能同Python的input函数,但在Go中是通过fmt.Scanln或fmt.Scanf来实现

func main(){    
    var name string    
    var age byte    
    fmt.Println("please input name,age")    
    fmt.Scanf("%s %d",&name,&age)    
    fmt.Printf("your name = %v ,age = %v",name,ag

Read more

Golang_01_介绍及基础


GO语言的特点

  1. 从C语言中继承了较多理念,包括表达式语法,控制结构,基础数据结构,调用参数传值,指针等等;
  2. 引入包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在;
  3. 垃圾回收机制,内存自动回收;
  4. 天然并发。语言层面支持并发;goroutine,轻量级线程,可实现大并发处理,高效利用多核;基于CPS并发模型实现;
  5. 吸收了管道通信机制,形成Go语言特有的管道channel。通过管道channel可以实现不同的goroute之间相互通信;
  6. 函数支持返回多个值;
  7. 新的创新,例如切片slice,延时执行defer等;

开发环境(software Development K

Read more

运维_基础设施_企业wiki之mm-wiki


特点

  • 部署方便,基于 golang 编写,只需要下载对于平台下二进制文件执行即可。
  • 快速安装程序, 提供方便的安装界面程序,无需任何手动操作。
  • 独立的空间,空间是一组文档的集合,一般为公司部门或者团队,空间下的文档相互独立。空间可根据需求设置空间访问级别。
  • 支持 markdown 语法写作,支持附件上传。
  • 完善的系统权限管理,系统可以自定义角色,并为不同角色授予不同的权限。
  • 集成统一登录,本系统支持通过外部系统认证用户, 比如与公司的 LDAP 登录融合。具体请看登录认证功能。
  • 邮件通知功能,当开启邮件通知,文档更改会通知所有关注该文档的用户。
  • 文档具有分享和下载功能,目前只支持下载 Mar

Read more