01 2024 档案
摘要:MySQL 之 瓶颈及优化篇 数据库瓶颈 阶段一:企业刚发展的阶段,最简单,一个应用服务器配一个关系型数据库,每次读写数据库。 阶段二:无论是使用 MySQL 还是 Oracle 还是别的关系型数据库,数据库通常不会先成为性能瓶颈,通常随着企业规模的扩大,一台应用服务器扛不住上游过来的流量且一台应用
阅读全文
摘要:MySQL 之 事务篇 事务 事务是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。 事务的四大特性(ACID): A 原子性:原子性是指包含事务的操作要么全部执行成功,要么全部失败回
阅读全文
摘要:查询 单表查询 select 分组函数,分组后的字段 from 表名 [where 条件] [group by 分组的字段] [having 分组后的筛选] [order by 排序列表]; 排序 SELECT 字段名 FROM 表名 ORDER BY 字段名 [ASC | DESC]; ASC 表
阅读全文
摘要:存储引擎和索引 前言 关于 MySQL 的学习着实有些混乱,虽然才到学习笔记二,但学习笔记四都已经写完了,其他写一点,可以说是东一榔头西一棒槌;写出的东西也不忍直视,省略了很多细节,还基本上都是到处搬运的,可即便是搬运,也都绞尽脑汁了。网上的知识大多都模糊不清,甚至还错误百出,为了辨别对错还查阅不少
阅读全文
摘要:初识MySQL 前言 关于 MySQL 的学习,具体内容非常庞大,但重点内容比较集中,因此关于 MySQL 的学习笔记可能和之前的不太一样。至于 GoWeb 的学习笔记,还远远不到结束的时候,学完数据库后,剩下的内容就在实战中学习。 介绍 什么是数据库? 数据库是结构化信息或数据的有序集合,一般以电
阅读全文
摘要:会话管理 HTTP会话管理 HTTP 协议的特点是一问一答(请求然后响应)。基本上,Web 应用都实现了用户管理,因此当用户发送请求时,服务器要能识别出是哪个用户,最简单的方法就是客户端每次请求,都附上用户信息。这样既不安全也不高效,故提出会话(Session),会话一般存储用户信息。 服务端会话(
阅读全文
摘要:获取参数和文件上传 获取参数 url传参 在我们使用网页时,我们有时会看到地址栏上带有 ?后面还跟着一些数据,这就是 url 传参,?后面携带的就是参数。例如:用必应搜索 what is a url,地址栏为 https://cn.bing.com/search?q=what is a url,携带
阅读全文
摘要:了解gin Web编程基础 客户端和服务端 HTTP 客户端和服务器之间的请求响应一般都是使用 HTTP/HTTPS 协议,它规定了如何从网站服务器传输超文本到本地浏览器。 HTTP请求 当你在网页上点击一个链接、提交一个表单、或者进行一次搜索的时候,浏览器会发送一个 HTTP 请求给服务器。HTT
阅读全文
摘要:协程调度 调度流程 Go程序运行和调度初始化 Go 程序运行会经过以下几个阶段: 从磁盘上读取可执行文件,加载到内存 操作系统执行 runtime 包中的程序入口 runtime 执行初始化,最后调用 main 函数 上图中的流程是根据源码文件 src/runtime/asm_amd64.s 和 s
阅读全文
摘要:并发编程 GMP模型 GMP模型是 Go 的协程调度模型。 G是 goroutine 实现的核心结构,它包含了栈,指令指针,以及其他对调度 goroutine 很重要的信息,例如其阻塞的 channel。 P结构是 Processor,它的主要用途就是 M 执行 G 提供上下文,它维护了一个 gor
阅读全文
摘要:泛型 泛型是什么?为什么要用泛型? 在开发中,会有一些复用性很强的功能,它被应用到很多地方,但为了适用会被不断重写,这很低效。例如一个intADD函数,他能进行 int 的加法,假如我们想进行 float 加法,又得重写一个floatADD函数,泛型就是为了解决这个问题而推出的功能。 想要接收多种类
阅读全文
摘要:异常处理 异常 在Go语言中,异常被定义为实现了 error 接口的类型;error 接口只包含一个方法 Error() ,用于返回错误信息。 error 除了输出错误外,往往需要输出当时的业务相关信息(错误地址,错误码,错误信息等),举个简单例子: package main import ( "f
阅读全文
摘要:面向对象 面向对象有三大特点:封装、继承和多态 方法 给内置类型定义方法是不被允许的 接收者 接口类型是无效的方法接收者 在之前的 学习笔记(二) 中有提到过方法,其格式如下: func (接收者) func_name(参数) 返回值 { //操作 } 学习了函数调用栈后,我们要知道 —— 接收者在
阅读全文
摘要:函数进阶 函数调用栈 函数栈帧 分配给函数的栈空间被称为函数栈帧。其大致布局如下图所示: 调用者的栈基地址:保存调用函数的栈基地址,用于函数返回后获得调用函数的栈帧基地址 局部变量:函数内部本地变量 返回值:保存函数返回值临时变量 参数:函数调用时传入的参数,其值会被复制到函数栈帧中的参数变量中 返
阅读全文
摘要:一、前言 由于某种原因,需要使用多种版本的 Golang,发现网络上一些发布时期较新的教程,却还是和早期的教程相似,故写一篇记录一下 Windows 如何小白式安装 g 工具,管理多版本 Golang。 二、下载 官方 github 下载地址: https://github.com/voidint/
阅读全文
摘要:函数 函数定义 Go语言中定义函数使用 func 关键字,具体格式如下: func (接收者)函数名(参数)(返回值){ 函数体 } 其中: 接收者:只有在定义方法时,才需要设置接收者。(可选项) 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名。
阅读全文