Fred

学习是反复的事情

Fred's Github chart

1-2.Go垃圾回收机制

[TOC] 一. 栈和堆 栈内存: 栈内存首先是一片内存区域,存储的都是局部变量,凡是定义在方法中的都是局部变量(方法外的是全局变量),for循环内部定义的也是局部变量,是先加载函数才能进行局部变量的定义,所以方法先进栈,然后再定义变量,变量有自己的作用域,一旦离开作用域,变量就会被释放。栈内存的更新速度很快,因为

1-1.Go内存管理

一. 内存为什么需要管理? 我们将大部分程序逻辑临时用的数据,全部都存在内存之中,比如,变量、全局变量、函数跳转地址、静态库、执行代码、临时开辟的内存结构体(对象)等。 当我们希望存储的东西越来越多,也就发现物理内存的容量依然是不够用,那么对物理内存的利用率和合理的分配,管理就变得非常的重要。 1、首先操作

13.go 泛型

在go语言里,对泛型的争议从未停止过,go也在1.18支持了泛型 原文参考:https://www.jb51.net/article/277511.htm 泛型初识 在强类型语言中(java,go),因为存在类型的强制约束,导致了数据类型在应用时没有弱类型语言(go、python)灵活 问题假如一个求和函数

12. 正则表达式

1 编译函数 Compile函数或MustCompile函数是将正则表达式进行编译,返回优化的 Regexp 结构体 Compile: 返回两个参数*Regexp,error类型 MustCompile: 只返回*Regexp类型 2 正则匹配 2.1 1. MatchString 返回的第一个参数是bool类型即匹配结果,第二个参数是error类型 demo 1 2 3 sourceStr := `my email is [email protected]` matched, _ := regexp.MatchString(`[\w-]+@[\w]+(?:\.[\w]+)+`, sourceStr) fmt.Printf("%v", matched) // true 2.2 2. FindString 返回

11. Context

Context 在 Go http包的Server中,每一个请求在都有一个对应的 goroutine 去处理。请求处理函数通常会启动额外的 goroutine 用来访问后端服务,比如数据库和RPC服务。用来处理一个请求的 goroutine 通常需要访问一些与请求特定的数据,比如终端用户的身份认证信息、验证相关的token、请求的截止时间。 当一个请求被取消或超时时,所有用来处理

10. 内置函数&库

内置函数 1 closeclose 用于 channel 通讯。使用它来关闭 channel 2 deletedelete 用于在 map 中删除实例。 3 len 和 caplen 和 cap 可用于不同的类型,len 用于返回字符串、slice 和数组的长度。 4 newnew 用于各种类型的内存分配, new 返回一个指针类型,但是不会初始化变量, 会将值全部置为零值 5 makemake 用于内建类型(map、slice 和 channel)的内存分配。返回这三个

9. Socket编程

计算机网络基础 常见的两种架构: C/S 微信,qq,迅雷等需要安装客户端的应用. client 客户端 serve 服务端 B/S 百度,知乎,博客园登不需要客户端,通过一个浏览器即可实现相关服务 browser 浏览器 server 服务端 协议 server和client得到的内容都是二进制,所以每一位代表什么就需要事先规定好,再按照约定进行发送和解析,这个约定就是协议

8. nethttp模块

Go语言内置的net/http包十分的优秀, 压力测试数据 1 2 3 4 5 6 7 8 9 10 # mac 配置 8核 16G内存 # goland 多核模式 16 threads and 200 connections Thread Stats Avg Stdev Max +/- Stdev Latency 5.75ms 14.07ms 224.91ms 90.89% Req/Sec 9.46k 6.90k 100.80k 80.15% 4403567 requests in 30.09s, 596.34MB read Socket errors: connect 0, read 56, write 0, timeout 0 Requests/sec: 146360.93 # 每秒并发数高达 14.6w 是sanic 10进程的3倍 Transfer/sec: 19.82MB HTTP客户端有两个非常重要的类型client和request

7. 反射

反射定义 Python 反射 python一切皆对象,所以想要通过字符串的形式操作内部成员都可以通过反射去完成操作. py文件 包 类 对象…(导入包操作类调用方法) 反射:根据字符串的形式去某个对象操作对象的成员. getattr(对象名,“方法名”) 根据字符串的形式去某个对象中获取对象

6-2. channel 原理和坑

1. 前言 channel是Golang在语言层面提供的goroutine间的通信方式,比Unix管道更易用也更轻便。channel主要用于进程内各goroutine间通信,如果需要跨进程通信,建议使用分布式系统的方法来解决。 channel存在3种状态: nil,未初始化的状态,只进行了声明,或者手动赋值为
0%