笔记
文章平均质量分 76
shade7
这个作者很懒,什么都没留下…
展开
-
golang在函数中对slice进行append操作不影响外部的值
golang在函数中对slice进行append操作不影响外部的值原创 2023-03-06 15:28:57 · 414 阅读 · 0 评论 -
go进阶笔记
wrap errors 会把底层的所有错误(包括根源错误以及堆栈信息)打包,在顶层一次性打印出来。这样我们就不用在每一层都做日志输出和错误处理,也保证了一次错误只打印一次错误日志。%v 和%+v%v 只输出字段的value%+v 会以键值对的形式输出字段的key和valuewrap errors一般在程序代码(自己项目)中才调用才用wrap errors,在基础库中不会不会调用wrap errors,避免用户也使用wrap errors造成日志的双倍打印。......原创 2022-08-28 22:44:08 · 278 阅读 · 0 评论 -
golang函数
函数函数定义函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名调用有返回值的函数时,可以不接收其返回值。可变参数可变参数是指函数的参数数量不固定。Go语言中的可变参数通过在参数名后加...来标识,可变参数通常要作为函数的最后一个参数。eg: func function(x int,y ...string) int{}变量作用域局变量是定义在函数外部的变量,它在程序整个运行周期内都有效。 在函数中可以访问到全局变量。局部变量又分为两种:原创 2021-05-09 22:33:53 · 145 阅读 · 0 评论 -
git学习笔记
1.初始化仓库git init初始化一个git仓库git config --global user.name "yourname"git config --global user.email "youremail" //要能够接收信息的有效邮箱配置git的用户信息,global表示这台机器上所有的Git仓库都会使用这个配置。2.git常用命令git add .把全部已修改文件添加到暂存区git log显示全部提交(暂存区->仓库)历史git diff 文件名 /...原创 2022-01-23 12:16:11 · 321 阅读 · 0 评论 -
操作系统总结
冯诺伊曼模型输入设备 输出设备 内存 中央处理器(CPU) 总线内存存储的数据单位是二进制位(bit) 随机存取,存取速度一致中央处理器(CPU)32位的操作系统cpu每次计算4byte 64位的操作系统cpu每次计算8byte 32/64位 指的是cpu带宽,位数越大计算数值越大。 CPU里有控制单元和逻辑运算单元以及寄存器 CPU距离内存太远,所以在离cpu较近的寄存器存储cpu要处理的数据 寄存器分为通用寄存器(寄存函数的参数)、指令寄存器...原创 2021-11-22 17:43:52 · 1062 阅读 · 0 评论 -
网络基础复习
网络协议所在的层HTTP HTTP2 应用层协议TCP UDP 运输层IP 网络层Ethernet 物理层IP协议主要解决网络路由和寻址问题TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。HTTP与WebSocketHTTPHTTP是单向的,客户端发送请求,服务器发送响应。当客户端向服务器发送请求时,该请求以HTTP或HTTPS的形式发送,在接收到请求后,服务器会将响应发送给客户端..原创 2021-10-01 16:51:21 · 759 阅读 · 0 评论 -
mysql备份
根据备份接口区分:物理备份:直接复制数据文件,打包归档。简单来说就是对 MySQL 的数据存放路径进行打包。不需要额外工具,直接归档命令即可,但是跨平台能力比较差;如果数据量超过几十个G,则适用于物理备份。逻辑备份:把数据抽取出来保存在 SQL 脚本中,mysqldump 就属于逻辑备份。导入方便,直接读取 SQL 语句即可;逻辑备份恢复时间慢,占用空间大;无法保证浮点数的精度;恢复完数据库后需要重建索引。根据备份时,MySQL 服务是否在线冷备:停掉 MySQL 这个服务,读写原创 2021-09-27 16:47:40 · 559 阅读 · 0 评论 -
go tcp编程
serverpackage mainimport ( "log" "net" "time")func main() { // Part 1: 端口监听 l, err := net.Listen("tcp", ":8080") if err != nil { log.Fatalf("Error listener returned: %s", err) } defer l.Close() // Part 2: 建立连接。 for { c, err := l.Acc.原创 2021-09-27 10:06:05 · 93 阅读 · 0 评论 -
docker学习笔记
什么是docker为了解决环境和配置对代码运行的影响,docker应运而生,docker将代码/数据/配置/操作系统一层一层封装到一个容器中,运维只需要拉取镜像就可以在和开发同样的环境下运行代码。优点:1. 上手快2. 开发与运维的逻辑分类更清楚3. 快速高效4. 面向服务的架构(微服务)docker与虚拟机的不同虚拟机: 服务器 本机操作系统 虚拟层硬件(可以虚拟出各种硬件) 虚拟机(虚拟机里包括虚拟操作系统、二进制库、软件)可以虚拟出不同与本机的操作系统每...原创 2021-09-24 08:37:23 · 653 阅读 · 1 评论 -
数据库主从同步
是什么?主从架构,进行读写分离,让主服务器(Master)处理写请求,从服务器(Slave)处理读请求,这样同样可以提升数据库的并发处理能力。为什么?首先不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的,如果我们的目的在于提升数据库高并发访问的效率,那么首先需要考虑的应该是如何优化你的 SQL 和索引,这种方式简单有效。其次才是采用缓存的策略,比如使用 Redis,通过 Redis 高性能的优势将热点数据保存在内存数据库中,提升读取的效率。最后才是对数据库采用主原创 2021-09-01 19:38:47 · 4973 阅读 · 0 评论 -
go 变量 常量 byte rune 类型转换
变量变量的来历:程序序运行过程中的数据都是保存在内存中,我们想要在代码中操作某个数据时就需要去内存上找到这个变量,但是如果我们直接在代码中通过内存地址去操作变量的话,代码的可读性会非常差而且还容易出错,所以我们就利用变量将这个数据的内存地址保存起来,以后直接通过这个变量就能找到内存上对应的数据了。变量的声明:=eg: i := 0=eg: var name = "qimi"匿名变量在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名.原创 2021-05-08 22:04:19 · 891 阅读 · 0 评论 -
查询优化器如何工作
查询优化器的工作流程一条 SQL 查询语句首先会经过分析器,进行语法分析和语义检查。我们之前讲过语法分析是检查 SQL 拼写和语法是否正确,语义检查是检查 SQL 中的访问对象是否存在。比如我们在写 SELECT 语句的时候,列名写错了,系统就会提示错误。语法检查和语义检查可以保证 SQL 语句没有错误,最终得到一棵语法分析树,然后经过查询优化器得到查询计划,最后交给执行器进行执行。查询优化查询优化器的目标是找到执行 SQL 查询的最佳执行计划,执行计划就是查询树,它由一系列物.原创 2021-08-31 21:18:37 · 210 阅读 · 0 评论 -
Redis学习笔记
Redis是什么:Redis(remote diciionary server) 远程字典服务,支持网络,可基于内存亦可持久化的日志型、Key-Value数据库,提供多种API(多个语言都可以调用redis)、redis会周期性地把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现master-slave(主从)同步。Redis用来干什么:1.内存存储、持久化(rdb、aof)2. 速度快,可以用于高速缓存。3. 发布订阅系统4.地图信息分析5. 计时器、计数原创 2021-08-30 15:03:30 · 319 阅读 · 1 评论 -
InnoDB下的MVCC
MVCC,是采用乐观锁思想的一种方式;在 MySQL 中,默认的隔离级别是可重复读,可以解决脏读和不可重复读的问题,但不能解决幻读问题。如果想要解决幻读问题,就需要采用串行化的方式,也就是将隔离级别提升到最高,但这样一来就会大幅降低数据库的事务并发能力。我们也可以采用MVCC+Next-Key Lock的方式来解决幻读问题。MVCC 是什么MVCC 的英文全称是 Multiversion Concurrency Control,即多版本并发控制技术。MVCC 是通过数据行的多个版本管原创 2021-08-27 20:33:01 · 1250 阅读 · 0 评论 -
数据库相关锁
锁的种类按照锁的粒度划分锁用来对数据进行锁定,我们可以从锁定对象的粒度大小来对锁进行划分,分别为行锁、页锁和表锁。行锁就是按照行的粒度对数据进行锁定。锁定力度小,发生锁冲突概率低,可以实现的并发度高,但是对于锁的开销比较大,加锁会比较慢,容易出现死锁情况。页锁就是在页的粒度上进行锁定,锁定的数据资源比行锁要多,因为一个页中可以有多个行记录。当我们使用页锁的时候,会出现数据浪费的现象,但这样的浪费最多也就是一个页上的数据行。页锁的开销介于表锁和行锁之间,会出现死锁。锁定粒度介于表锁和行锁之间,原创 2021-08-25 21:14:54 · 111 阅读 · 0 评论 -
微服务架构学习笔记
什么是微服务一个或者一组相对较小且独立的功能单元,用户可以感知最小功能集。微服务架构一组小的服务 独立的进程 :以进程的方式横向扩展 轻量级通信 :使用轻量级协议 基于业务能力 :基于不同的服务构建 独立部署 : 团队之间不需要协调 无集中式管理 :没有统一的架构团队,可以采用不同的技术栈微服务特点服务间松散耦合服务面向架构有界数据源:每个微服务有不同的数据源微服务本质 微服务本质是系统提供一套基础的架构,这种架构使得微服务可以独立的部署、运行、升级...原创 2021-08-26 09:00:01 · 891 阅读 · 0 评论 -
从磁盘I/O的角度理解SQL查询
数据库缓冲池磁盘 I/O 需要消耗的时间很多,而在内存中进行操作,效率则会高很多。为了能让数据表或者索引中的数据随时被我们所用,DBMS 会申请占用内存来作为数据缓冲池,这样做的好处是可以让磁盘活动最小化,从而减少与磁盘直接进行 I/O 的时间。这种策略对提升 SQL 语句的查询性能来说至关重要。如果索引的数据在缓冲池里,那么访问的成本就会降低很多。缓冲池机制缓冲池管理器会尽量将经常使用的数据保存起来,在数据库进行页面读操作的时候,首先会判断该页面是否在缓冲池中,如果存在就直接读取,如果原创 2021-08-24 21:11:04 · 177 阅读 · 0 评论 -
从数据页的角度理解B+树查询
数据库中的存储结构记录是按照行来存储的,但是数据库的读取并不以行为单位,否则一次读取(也就是一次 I/O 操作)只能处理一行数据,效率会非常低。因此在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页。一个页中可以存储多个行记录,同时在数据库中,还存在着区(Extent)、段(Segment)和表空间(Tablespace)。一个表空间包括了一个或多个段,一个段包括了一个或多个区,一个区包括了多个页,而一个页中可以有多行记录。区原创 2021-08-24 20:50:33 · 247 阅读 · 0 评论 -
SQL索引
索引就是帮助数据库管理系统高效获取数据的数据结构。数据库中的索引,就好比一本书的目录,它可以帮我们快速进行特定值的定位与查找,从而加快数据查询的效率。索引不是万能的,在有些情况下使用索引反而会让效率变低。...原创 2021-08-20 09:11:52 · 3004 阅读 · 0 评论 -
SQL聚集函数
聚集函数都有哪些原创 2021-05-28 16:06:22 · 1109 阅读 · 0 评论 -
Vue基础学习笔记
Vue前端框架,面向数据编程<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> .原创 2021-08-12 20:28:06 · 222 阅读 · 1 评论 -
js学习笔记
面向对象的解释型语言,用来实现网页上复杂的交互功能。三种添加JavaScript的方式一般不推荐使用内联var没有作用域,let和const有原创 2021-08-09 09:54:57 · 66 阅读 · 0 评论 -
css学习笔记
三种添加css的方式一般只使用前两种。css格式可以对任意一个标签使用css修饰,body、head等等也可以,当只修改一部分时,需要使用class 命名。自己命名前要有.多个选择器常用的css设置用图片做背景设置背景图片的平铺样式y是垂直方向,x是水平方向设置图片位置background-attachment 属性只有2个属性值。scroll表示背景图像随对象滚动而滚动,是默认...原创 2021-08-09 08:57:24 · 109 阅读 · 0 评论 -
html学习笔记
<head></head>用于定义该文档的头部,定义文档的一些属性和信息,包括网页的标题<title>。<body></body> 存放HTML文档的主要内容,bgcolor存放整个body属性,同时也可以用在其他标签内,比如<p>。<h1> - <h6> :<h1></h2>html标题,<h1>定义最大的标题,<h6>是最小的标题。<h>原创 2021-08-06 19:49:11 · 591 阅读 · 0 评论 -
gin学习笔记
gin的优势简单原则 并发高 分配内存请求路由请求类型:get、put、post等八种资源请求类型 绑定静态文件夹 参数作为URL:多用于Restfu请求中 泛绑定:所有前缀的请求都定向到一个资源中原创 2021-08-05 09:01:56 · 675 阅读 · 0 评论 -
go二次学习笔记
go下main函数不支持传入参数在程序中直接通过os.Args获取命令行参数。类型转化:1. go语言不允许隐式类型转换(强类型语言)2. 别名和原有类型也不能进行隐式类型转换类型预定义值1. math.MaxInt642. math.MaxFloat643. math.MinUint32指针类型1.不支持指针运算2. string是值类型,其默认的初始化值为空字符串,而不是nil算术运算符go语言中没有前置的++或--用==比较数组时,与其他语言比较引用相比,原创 2021-07-26 20:42:39 · 1134 阅读 · 1 评论 -
前后端分离
什么是前后端分离: 前后短分离的项目就是前端代码和后端代码是完全独立的不需要在一个项目里面部署(模板不是前后端分离)。前后端分离好处:并行开发,提高效率降低耦合度提高处理复杂业务能力缺点:增大团队沟通成本不利于搜索引擎抓取项目维护成本增高增加繁杂的配置前后端:前后端是根据和用户交互来区分的,直接和用户交互的,管显示效果的就叫前端,前端没有服务器(app严格来说也算前端),存储数据,执行一系列操作,提供其他服务的是后端;前端可以部署很多个,后端也可用部署很多个,是多对多模型。而且前后端原创 2021-07-21 15:46:32 · 126 阅读 · 0 评论