在 Go 语言中,虽然没有传统意义上的类和继承,但依然可以实现面向对象的设计思想。依赖倒置(Dependency Inversion Principle,简称 DIP)是面向对象设计中的一个重要原则,它要求

  1. 高层模块不应该依赖低层模块,二者都应该依赖抽象。
  2. 抽象不应该依赖细节,细节应该依赖抽象。

一、后端功能开发专业能力要求

image.png

引言

程序要想获得更好的运行效率,一般需要针对运行环境进行一些参数调优。比如 JAVA 程序,需要调整 JVM 的参数, PHP 程序,需要调整 HHVM 的参数。 Go 程序也不例外,通过设置合适的GOMAXPROCS值,可以提升Go程序在容器中的运行效率。

百度厂外使用docker,厂内使用Matrix作为容器技术

mysql基础学习

字段长度表示问题

mysql中的字段长度表示的是字符长度,而非字节长度,例如varchar(64)表示最大字符串长度为64,而非字节大小为64

问题:下列代码的输出结果是什么

golang
package main import "fmt" func main() { defer func() { if err := recover(); err != nil { fmt.Println(1) } }() go func() { panic("123") }() defer func() { if err := recover(); err != nil { fmt.Println("recover") } }() }

结果: 空

问题原因:

pylance版本问题,经常会自动升级为新的版本

解决方案:

降低pylance版本到2023.5月(包括)之前

相关信息

icoding(vscode)无法跳转方法排查

背景

  • vscode配置golang项目,发现无法进行代码跳转,同时提示找不到goroot的路径

解决方法

  • 执行 go env 获取正确的gopath和goroot的路径
  • 配置到settings.json中
2024-10-180

sync

通过sync使程序只执行一次

golang
package main import ( "fmt" "sync" ) func main() { var once sync.Once onceBody := func() { fmt.Println("Only once") } done := make(chan bool) // 创建 10 个 goroutine,但是 onceBody 只会执行 1 次 for i := 0; i < 10; i++ { go func() { once.Do(onceBody) done <- true }() } // 等待 10 个 goroutine 结束 for i := 0; i < 10; i++ { <-done } }