背景:mini项目也算是沉淀了好多,有技术的也有心得
但是我还是不太想把自己一些“触及灵魂”的想法放到csdn里面分享
所以还是笔记本见吧
但是我还是愿意分享一些学到的技术和知识放在csdn里面嘿嘿
笔记本里的心得(假装我分享过了)
1.换个视角去学习———更加能利用好自己的好奇心
2.各种软能力的学习——领导,技术,学习方法
3.一个项目的设计能力
4.从环境去思考如何影响一个人的成长的
硬技术分享:
因为在项目中需要用golang 去重构python,首先就是要做到和python一样的效果,python的技术组件生态和golang的不一样,所以就很多需要自己去封装
// 判断所给路径文件/文件夹是否存在
func Exists(path string) bool {
_, err := os.Stat(path) //os.Stat获取文件信息
if err != nil {
if os.IsExist(err) {
return true
}
return false
}
return true
}
//调用os.MkdirAll递归创建文件夹
func createFile(filePath string) error {
if !Exists(filePath) {
err := os.MkdirAll(filePath, os.ModePerm)
return err
}
return nil
}
func UnicodeIndex(str,substr string) int {
result := strings.Index(str,substr)
if result >= 0 {
prefix := []byte(str)[0:result]
rs := []rune(string(prefix))
result = len(rs)
}
return result
}
熟悉一下golang的并发机制
var wg sync.WaitGroup
defer wg.Wait()
c := make(chan string)
for i := 0; i < 10; i++ {
wg.Add(1)
go func() {
defer wg.Done()
c <- "hello there"
}()
}
go func() {
for msg := range c {
fmt.Println(msg)
}
}()
golang实现管道输入数据
func runcmd(command string) string {
var shell, flag string
if runtime.GOOS == "windows" {
shell = "cmd"
flag = "/c"
} else {
shell = "/bin/sh"
flag = "-c"
}
out, err := exec.Command(shell, flag, command).Output()
if err != nil {
panic(err)
}
return string(out)
}
体验一下go的协程
package main
import ("fmt""time")
//测试协程
//循环打印内容
func newTask() {
i := 0
for {
i++
fmt.Printf("new goroutine:i=%d\n", i)
time.Sleep(1 * time.Second)
}
}
//main()相当于是主协程
func main() {
//启动子协程
go newTask()
i := 0
for {
i++
fmt.Printf("main goroutine:i=%d\n", i)
time.Sleep(1 * time.Second)
}
}