幼麟实验室笔记
Golang底层知识目录 Golang底层知识 目录 1 学习前的介绍 2 string 2.1 Unicode字符编码 2.2 string的数据结构 2.3 string的底层细节 3 slice 3.1 slice结构 3.2 slice扩容机制 4 内存对齐 4.1 地址总线和数据总线 4.2 内存对齐 4.2.1 为什么要内存对齐 4.2.2 举个栗子 4.2.3 对齐边界 4.3 结构体内存对齐 5 map 5.1 map的结构 5.1.1 Map类型 5.1.2 bmap的结构 5.1.3 溢出桶 5.2 常用方法 5.3 哈希冲突 5.4 扩容 5.4.1 何时扩容 5.4.2 如何扩容 6 类型系统 6.1 如何动态获取数据类型信息 6.2 类型定义和类型别名 7 接口 参考链接 1 学习前的介绍通过幼麟实验室的学习让我更加深刻的去理解Golang的底层原理,看完最深刻的感受就是脑子好痒,非常干,全是干货。自己做的笔记整理出来,方便复习和阅读。 2 string2.1 Unicode字符编码变长编码 编号 编码模板 最...
Go面试总结及自己的心理路程
0 说说自己的心理路程 大一通过读C Primer Plus,考取了c语言计算机二级证书,便以为了解了不少。后面便只顾学习大学课程,还恰巧没有重视408四大计算机基础课程,仅仅是数据结构学的多一些,且学习数据结构用的是c语言,所以难免再花时间用Go语言来学习一遍。仅仅了解了Java的Spring Boot和MySql的一些简单命令语句,便觉得很不错了,到头来现实才给我当头一棒,告诉我山外有山,但我相信,没有来不及,只有抓住当下,一步一脚印,才能更好的发展自己。 现在学习了Go语言,正在看一些Go语言的书籍,参加了几次面试,是让我有了更清醒和更通透的目标,世上无难事,我需要继续努力。 引用毛主席的诗句:踏遍青山人未老,风景这边独好。 1 go与其他语言1 面向对象语言面向对象语言:object-oriented programming,是一种基于对象概念的编程范式。把一切客观存在的事物视为对象。对象是通过数据和数据的操作方法组合在一起,并且相互依赖。 对象可以访问并修改自己的字段 对象利用属性和方法的私有、公共可见性,对象的内部状态受保护,不受外界影响,被封装的。 面向对象三大特点...
RPC笔记
1.RPC1.1 介绍rpc的调用过程: 客户端: 建立连接 tcp/http 将对象序列化为json字符串 - 序列化 发送json字符串 - 调用成功后实际上接收到的是一个二进制的数据 等待服务器发送结果 将服务器返回的数据解析成对象 - 反序列化 代码: 创建与指定目标(服务端)的连接交互 创建 server 的客户端对象 发送 RPC 请求,等待同步响应,得到回调后返回响应结果 输出响应结果 服务端: 监听网络端口 80 读取数据 - 二进制的json数据 对数据进行反序列化 开始处理业务逻辑 将处理的结果序列化成json二进制数据 - 序列化 将数据返回 代码: 创建gRPC Server对象:这是Server端的抽象对象。 注册服务端接口到gRPC Server内部注册中心:这样在接收到请求时,可以通过服务发现找到该接口并进行逻辑处理。 监听TCP端口:创建Listen来监听TCP端口。 gRPC Server开始lis.Accept,直到Stop。 http: http 1.x 协议有一个问题:一次性 一...
Git笔记
Git使用手册 一、简单git拉取1.初始化注:以下命令皆在git-bash(windows下)或linux直接使用命令的情况下操作。 1.创建目录 1mkdir xxx 2.在该目录下输入命令,初始化一个空git 1git init 3.配置git 1git config 1234//输入以下命令git config --global user.name "goxny"git config --global user.email "xiaoze3300@163.com"git config --global --list //查看当前目录信息 4.新建文件(已修改状态) 1touch xxx 12//查看git状态git status 5.跟随(暂存状态) 1git add xxx 6.提交(仓库区) 12git commit -m "html"// -m +注释内容,注释版本信息 7.修改xxx文件 随意对xxx文件修改一下内容,接着 12git add .//跟随所有文件 12git status...
MySql笔记
MySQL1. 安装 官网下载 系统自带包管理工具安装:brew install mysql Docker安装:docker pull mysql linux:yum/rpm安装后,mysql默认有密码,需要修改密码。记得关闭防火墙。 mysql shell:官网下载 以“\”开头 默认的是js语言,以\sql即可改为sql语言,操作数据库 2. 数据库管理系统分为关系型和非关系型。 2.1 关系型数据库采用关系模型组织数据,借助集合、代数等数学概念和方法处理数据,通过二维表来表示数据之间的联系。 表的每一列代表一个字段,不同表之间通过关联字段来建立联系, ex. MySQL、Oracle、PostgreSQL 2.2 非关系型数据库数据量大,复杂 ex. Redis、mongoDB、neo4j 3. MySql关键字大写,其他小写。 常见命令: 1# add all and as asc between by desc distance distinct from group if in join like limit left not null on or o...
GinBlog项目
go-ini:读取文件参数、解析数据。 config: 管理项目网站参数。不用再去源文件找。 api:设置不同版本的api middleware:跨域问题,中间件,jwt做一些验证问题 model: 模型。 routes:做一些路由的接口 utils:做一些公共的包,公共功能全局使用,功能模块 upload:上传下载的目录, web:前端页面、做托管静态资源 1. 配置1.1 代理设置在设置>go模块中,设置国内代理。 1GOPROXY=https://goproxy.cn,direct 1.2 运行配置添加配置>选择Go Build。运行种类修改为Directory。 引入go mod 1$ go mod init Ginblog-master 下载Gin包 1$ go get -u github.com/gin-gonic/gin 下载go.ini 123$ go get gopkg.in/ini.v1或者使用 GitHub 上的仓库$ go get github.com/go-ini/ini 2. 业务流程1、数据库初始项目第一步: 做数据库,围绕数...
Go-ini
Go-ini1. 安装1$ go get gopkg.in/ini.v1 也可以使用 GitHub 上的仓库: 1$ go get github.com/go-ini/ini 首先,创建一个my.ini配置文件: 123456789101112131415app_name = awesome web# possible values: DEBUG, INFO, WARNING, ERROR, FATALlog_level = DEBUG[mysql]ip = 127.0.0.1port = 3306user = djpassword = 123456database = awesome[redis]ip = 127.0.0.1port = 6381 注释: 1# 写区 1[] 2. 使用go.ini介绍: 功能:读取文件参数、解析数据。 本质:封装了go的一些读写(OS)功能。 读取:利用load()将ini文件读取出来。 ps.快捷键复制不同行的一些代码:ctrl+shift+alt 鼠标点就可以了 12345678910111213141516171819202...
Go语法区别
Go语言中一些类似但不同语法等使用的区别 数组、new1. &{}和new()12banker := &Banker{}banker := new(Banker) 两者的区别 &Banker{} 和 new(Banker) 都是用来创建一个指向 Banker 类型的指针。 使用 &Banker{}: 这是使用复合字面量(composite literal)来创建一个 Banker 结构体,并取其地址。 它允许你在创建结构体的同时初始化结构体的字段。如果你不提供任何字段值,那么所有字段都会被设置为零值。 示例:banker := &Banker{Field1: value1, Field2: value2} 允许你直接指定某些字段的初始值。 使用 new(Banker): 这是使用内置的 new 函数来分配内存。它返回一个指向新分配的零值 Banker 结构体的指针。 该函数只分配内存而不允许你同时初始化字段;所有的字段都将被设置为其类型的零值。 示例:...
HEXO框架部署
Hexo框架、butterfly主题1.开始1.1 配置在hexo的项目根目录中:下载butterfly 1git clone -b master https://gitee.com/immyw/hexo-theme-butterfly.git themes/butterfly 1.2 配置主题修改 Hexo 根目录下的 _config.yml,把主题改为 butterfly 1theme: butterfly 1.3 安装插件如果你没有 pug 以及 stylus 的渲染器,请下载安装: 1npm install hexo-renderer-pug hexo-renderer-stylus --save 1.4 修改主题为了减少升级主题后带来的不便: 在 hexo 的根目录创建一个文件 _config.butterfly.yml,并把主题目录的 _config.yml 内容复制到 _config.butterfly.yml 去。( 注意: 复制的是主题的 _config.yml ,而不是 hexo 的 _config.yml) 2. 页面标签、分类、友情页是必须要有的...
Gorm框架
Gorm1. 入门1.1 配置下载mysql的驱动 12go get gorm.io/driver/mysqlgo get gorm.io/gorm 连接: 12345678910111213141516username := "root" //账号password := "123456" //密码host := "127.0.0.1" //数据库地址,可以是Ip或者域名port := 3306 //数据库端口Dbname := "gorm" //数据库名timeout := "10s" //连接超时,10秒// root:root@tcp(127.0.0.1:3306)/gorm?dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local&timeout=%s", username, password, h...