2022 年 15 周总结 慢慢积累,不能急 总结1、上周成果并不大,go-zero-look-look 部署成功,加上看起了重构的书,重构的理念与 TDD 的思想,的确都是软件设计的基本功。好好学好软件工程的思想,并应用到实践! 2、SQL 又复习了一遍,go-zero-look-look 的部署坑点,主要在 MySQL 一块,基于木目前的基本情况,不应该使用图形界面,先好好写 SQL 语句进行使用! 下一周计划又继续 2022-04-10 summary #2022
TDD 实践 TDD 的项目驱动 TDD 具体原则1、当且仅当存在失败的自动化测试,才开始编写生产代码 2、消除重复(徐昊老师:消除坏味道) 经典的红/绿/重构(Red/Green/Refactoring) 红:编写一个失败的小测试,甚至可以是无法编译的测试; 绿:让这个测试快速通过,甚至不惜犯下任何罪恶; 重构:消除上一步中产生的所有重复(坏味道)。 TDD 工 2022-04-04 go #TDD
2022 年 14 周总结 坚持做长期主义者,践行自己的观点,输入与输出都重要! 总结1、上周写了一个 HTTP 的服务器接口,重新拾起大学学习的一些 HTTP 服务器的基础知识与一些 Golang 官方包! 2、学习了 MySQL 的两种日志的具体区别:redo-log 与 bin-log,MySQL 的聚簇索引与非聚簇索引,主键索引与普通索引等,具体也请看 MySQL 的博客。 3、学习 TDD,开始写第一个 TDD 2022-04-03 summary #2022
Golang 开发一个 HTTP Web 服务器/客户端 之前的 zinx 学习,是基于 TCP/UDP 的 socket 协议进行编写 而本次要实现的是基于 HTTP 协议开发一个 Web 服务器端与客户端! 要求服务器端要求: 1、服务端维护一个内存数据结构,所有数据进程重启丢失,不做数据持久化,不考虑内存容量问题 2、服务端实现一个网络 API 接口,客户端向该 API 发送一个网络请求,请求数据是一个 string 的信息 3、服 2022-03-31 go #HTTP
MySQL 原理 理解思考项目,原理先行,实践在后 1、redo-log 与 bin-log 两种日志区别首先,redo-log 与 bin-log 两种日志是 InnoDB 数据库引擎为了满足事务的持久性与原子性引入了的,其中,redo-log 是 InnoDB 的特性,bin-log 是mysql 中 server 层的日志。 redo-log 日志 在更新一条记录时,先将其先写入 redo-log 中,然 2022-03-29 middleware #MySQL
2022 年 12 - 13 周总结 上两周没写周总结,写周总结还是挺有效的,至少输入与输出能够理顺,将逻辑顺十分清晰。 12 周 1、APISIX 网关的相关知识学习 2、Redis 的面试概念学习 3、sync 包中的 Pool(协程池的学习) 令牌桶、漏桶算法的学习,包括 TDD 的了解、思考到现在的实践,都挺有收获的。 13 周 1、Docker 的复习 2、GeekingTime TDD 实践 + Learn TDD 2022-03-27 summary #2022
Go Test 的一个小坑 使用 TDD 的模式驱动自己编写测试驱动开后,使用goland 调试过程中出现的一些小问题,做一些记录 如何解决 undefined function首先在确保自己的测试代码与主干代码在同一个软件包下。最合适办法采用命令行调试,但是如果是喜欢使用 goland 调试,那么在 go test 模板需要把目录改成软件包(如下图所示),或者是把目录下文件全部添加上(不建议)。 Go mod ini 2022-03-26 go #go-test
TDD 概念介绍与学习课程 在接触 TDD (测试驱动开发) 之后,发现自己的确很能认同测试驱动开发的理念。所以在加上极客时间中有徐昊老师新开的一门课程,所以就开始自己的 TDD 学习之陆 前言首先推荐两个课程: 1、徐昊老师的新课:TDD 项目实战 70 讲。 2、go 语言的教程:Learn-go-with-test,建议能尽量进行英文阅读,就阅读英文原版。 推荐1、郑烨老师的专栏《软件设计之美》 2、《测试驱动开发 2022-03-25 go #TDD
Go 语言中的 sync.Pool 学习 本博客为在学习极客时间的 go 并发编程的学习笔记,具体详细内容请看极客时间官方的专栏–go 并发编程实战课 Go 语言是自带垃圾回收机制的,具体演变过程可以看博主写的另一篇博客。所以我们不用像 C/C++ 一样,创建对象的同时,使用完需要删除/析构对象,防止因为空指针导致的内存泄漏。 但是 Garbage Collect 机制方便方便的同时,也带来的一定的性能隐患,比如 2022-03-20 go #sync
浅谈 Redis 中间件 本博客主要是总结自己学习 Redis 中间件的经验,教程来源于b站狂神说 java 的 redis 教程 1、Redis 概念1、Redis 是基于计算机内存的数据库,一般称为缓存数据库,由于没有固定的表结构与关系,也叫 NoSQL (Not Only SQL) 数据库。 2、为什么要使用 Redis: 1、数据的爆发增长 2、没有固定关系的数据 3、最新的版本中,官方不建议直接在 win 2022-03-18 middleware #redis
开源的思考 本人是曾经的职业规划是,在读研后学习 NLP、CV 等领域的算法论文,而后向着算法工程师的方向进行努力。而近几年的考研难度以及行业的形式导致自己的期待与期望成了泡沫: 1、不读 985/211,算法工程师基本做不了2、考研热门程度异常火爆,为什么考研的想法越来越困扰自己所以说,在二战也未能达到名校的分数线后,自己毅然决定,不调剂,投入社会进行学习与工作。 但是困扰自己的问题出现了,学习什 2022-03-16 go #open-source
2022 年 11 周总结 上一周没怎么写博客,第一个就是上一周杂事比较多,理论方向的学习少;第二就是跟大佬交流,发现自己存在找原因性的思维方式,需要转变自己的思维。因此,一段时间写一次总结性的博客是很有必要的。 1、关于求职首先,大佬提醒我,要建立模板化、模块化的求职思路,如面试之前需要搜集相关的资料,主要关注以下四点: 1、公司的名称 2、公司的核心产品 3、公司的产品的主要受众人群 4、公司招聘的岗位职责、经营状 2022-03-14 summary #2022
Go 语言中的 sync.Mutex 学习 极客时间专栏,鸟窝大佬的 Go 并发编程课程,由于大佬的课程十分精彩,领悟需要时间与精力!所以再次本文仅仅只能作为知识总结,相应具体内容与源码分析请去极客时间上购买大佬相应的课程! Mutex Go 语言中的 sync 包的 mutex 的设计,有四个演变阶段。 1、初版的 Mutex 采用一个 flag 表示锁是否被持有,实现比较简单 2、之后为了照顾新来的 Goroutine(下文简称 2022-03-06 go #sync
Go 学习方向 通过几次面试,来总结一些现在阶段,对于自己的职业规划的发展与思考! 经历了三四次面试,收获挺大的。面试不是目的,只是一种过程,要在不断的面试中,找到适合自己发展的领域才是面试的目的! 1、现阶段发展的方向 首先,Go 语言的云原生跟云中件发展是非常迅速的,而且 Go 语言社区中,讨论最多的也是云计算的发展,docker、K8S集群、普罗米修斯,都是云中件的代表,所以去学习其中设计的思想、 2022-03-04 go #Direction
Golang 垃圾回收机制 学习 Go 语言中的各个版本的垃圾回收的机制。 1、Go V1.3 版本之前的标记清除(mark and sweep)此版本的垃圾回收机制,一般分为以下四步: 1、暂停程序业务逻辑,找出不可达的对象以及可达的对象 2、开始标记,程序找出其所有可达的对象,并进行标记 3、标记完之后,开始清除未标记的对象 4、继续运行程序。循环以上的过程,知道程序的生命周期终止为止 但是相应的,V1.3 版本 2022-03-01 go #GC
GMP 模型分析 关于 GMP 模型的一些理解,G 为 goroutine, M 为 thread(内核级线程)、P 为 Processor(处理器)。 1、Golang 早期调度器的由来 在讲述早期调度器之前,让我们先聊一下早期的操作系统。 在没有多核 CPU 之前,操作系统以单进程的任务执行,计算机在只能一个任务一个任务完整的执行的情况。在此情况下,操作系统不仅存在工作效率低下的问题,而且一旦正在执行 2022-02-24 go #GMP
Go web 的相关知识复习 开始动手学习一些框架的基本样例,抛开学习底层的设计不谈,主要还是参考文档进行相应的组件开发。参考文档见文末 1、Beego 与 gin 首先学习框架之前,需要我们理解一个道理,学习框架的目的是首先是适应业务场景的需要,其次是有两种大类:一种是为了开发效率,另一种是为了追求运行的性能。 追求运行性能的框架包含的东西挺好,比如 GIN ,另一种追求开发效率的框架封装得非常好,即是 Beego 2022-02-22 go #gin
MySQL 与 SQL 复习 轻量化复盘一下 sql 操作,以及 MySQL 1、SELECT 语句 数据查询为关系运算理论在 SQL 语言中的主要体现。SQL 的数据查询只一条 SELECT 语句,其使用最广泛。一个完整的 SELECT 语句包含了六个字句,前两个字句是必备的,其他字句可以省略 12345678910111213SELECT 完整格式:SELECT [DISTINCT] 目标列名序列 ------ 查看 2022-02-19 middleware #MySQL
1791. 找出星型图的中心节点 1791. 找出星型图的中心节点题目123456789101112131415161718192021222324有一个无向的 星型 图,由 n 个编号从 1 到 n 的节点组成。星型图有一个 中心 节点,并且恰有 n - 1 条边将中心节点与其他每个节点连接起来。给你一个二维整数数组 edges ,其中 edges[i] = [ui, vi] 表示在节点 ui 和 vi 之间存在一条边。请你找出 2022-02-18 Leetcode #Go #c++
一些刷算法的小模版 快排1234567891011121314151617181920212223242526272829func QuickSort(q []int, l, r int) { if l == r { return } x := q[(l+r)>>1] i, j := l-1, r+1 for i < j { for { i+ 2022-02-18 Leetcode #template