自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Git 的一些常用命令

git init:创建 Git 库。 git status :查看当前仓库的状态。 git show :# 显示某次提交的内容 git show $id git diff :查看本次修改与上次修改的内容的区别。 git add :把现在所要添加的文件放到暂存区中。 git log -p :查看每次详细修改内容的 diff 。 git rm :从版本库中删除文件。 git reset :从暂存区恢复到工作文件。 git reset HEAD^ :恢复最近一次提交过的状态,即放弃上次提交后的所有本次修.

2022-02-16 16:31:19 270

原创 Golang引用类型Slice Map Channel的底层原理

Slice: 切片就是动态数组,可以动态扩容改变数组容量 它是一个结构体,里面包含了指向数组的地址,并通过len、cap保存数组的元素数、容量 切片拷贝 深度拷贝:copy(sliceA,sliceB) 浅拷贝:sliceA = sliceB 切片之间的复制会拷贝数组指针、cap、len值,但数组指针指向同一个地址,如果是深度拷贝,将指针指向数组内容,而不是指针值进行拷贝 **切片函数传递** 在切片进行复制时,会将切片的值(指针、cap、len)复制一份,在函数内部可以改变原切片的值,但

2021-12-21 18:27:48 676

原创 缓存与数据库闲更新哪个?

这里写自定义目录标题缓存与数据库闲更新哪个?方案1:先删除缓存,然后更新数据库方案2:先更新数据库,然后更新缓存 缓存与数据库闲更新哪个? 方案1:先删除缓存,然后更新数据库 在并发情况下删除缓存后,立刻读库,此时库中数据还没更新,读到老数据,又写入了缓存,导致以后所有人读到的都是缓存中的错误数据 方案2:先更新数据库,然后更新缓存 更新数据库后,还没删除缓存,导致部分人读到的是缓存中的老数据,当缓存删除后,才能从数据库读取正确数据,缓存也就正确,以后大部分人读到正确数据 两个方案无法保证原子性 关键点:不

2021-12-15 10:05:11 1284

原创 GO GMP模型简述

M:machine,代表一个内核线程,这个线程是操作系统来处理,操作系统辅助把它放置到一个core上去执行 P:processor,代表一个逻辑处理器,也就是执行代码的上下文环境 G:goroutine,代表一个并发的代码片段 P在M 上运行G 系统的线程调度发生在内核 GO中并发的基本单元Goroutine在用户空间,由G的调度器调度 线程代价 1、 内存空间:一般情况下一个thread的创建默认占用栈空间1M,Goroutine默认是2KB 2、 切换开销:thread的切换时需要通过用户态达到内核态,

2021-10-17 16:13:10 589

原创 golang学习笔记(并发编程)

协程goroutine 一个 goroutine 本身就是一个函数,当你直接调用时,它就是一个普通函数,如果你在调用前加一个关键字 go ,那你就开启了一个 goroutine。 //执行一个函数 func() //开启一个协程执行这个函数 go func() main相当于主线程,goroutine要在主线程结束前执行完,否者协程总结 package main import "fmt" func main() { go test() fmt.Println("hello world!") }

2021-09-12 10:41:42 223

原创 golang学习日记(面向对象)

结构体与继承 什么是结构体? 它是将多个任意类型的变量组合在一起的聚合数据类型,可以理解为Go语言的结构体structural和其他语言的class有相等的地位 //定义结构体 type 结构体名 struct { 属性名 属性类型 属性名 属性类型 … } 若相邻的属性(字段)是相同类型,可以合并写在一起 规则一:当最后一个字段和结果不在同一行时,, 不可省略。 规则二:字段名要嘛全写,要嘛全不写,不能有的写,有的不写。 规则三:初始化结构体,并不一定要所有字段都赋值,未被赋值的字段,会自动赋

2021-09-09 23:51:27 77

原创 golang学习笔记(流程控制)

if-else 语句模型 if 条件 1 { 分支 1 } else if 条件 2 { 分支 2 } else if 条件 … { 分支 … } else { 分支 else } 单分支 age := 20 gender := "male" if (age > 18 && gender == "male") { fmt.Println("是成年男性") } 多分支 age := 20 if age > 18 {

2021-09-08 19:18:42 129

原创 golang学习笔记(数据类型)

整型 int8和uint8,8代表8个bit,能代表的数值个数有2^8 = 256 uint8没符号,额能代表的是正数0-258 int8可正可负,区间-128~127 int8、int16、int32、int64带数值,表示的数值个数是固定的, int没有指定位数,他是可以变化的 当你在32位系统下,int和uint都占用4个字节,也就是32位,当你在64位系统下,int和uint都占8个字节,也就是64位 在二进制传输、读写文件的结构,为了保存文件的结构不受不同的编译目标平台字节长度影响,避免使用in

2021-09-08 14:59:00 616

原创 golang学习笔记(变量)

golang基础-变量 五种创建变量的方法 第一种:一行声明一个变量 var name string var name string = "Alger" var number float32 = 3.1415 第二种:一次声明多个变量 var ( name string age int number float32 ) 第三种:声明和初始化一个变量 name := "alger" age := 23 number := 3.1415 第四种:声明和初始化多个变量 name,age := "alg

2021-09-07 18:35:10 114

原创 缓存雪崩过程原因与解决方案

缓存雪崩就是指缓存由于某些原因,例如宕机、Cache服务挂了偶不响应,导致大量请求到达后端数据库,从而导致数据库崩溃,整个系统奔溃发生灾难 下面就是一个雪崩的过程: 1、redis集群彻底奔溃 2、缓存服务大量对redis的请求hang住,占用资源 3、缓存服务大量请求打到源头服务查询MySQL,直接打死MySQL 4、源头服务因为MySQL被打死也崩溃了,对原服务的请求也hang住,占用资源 5、缓存服务大量的资源全部耗费在访问redis和源服务无果,最后自己也被拖死,无法提供服务 6、Nginx无法访问

2021-06-17 07:37:44 610

转载 nginx缓存配置与防盗链

# 1. 配置 http ##cache## #跟后端服务器连接的超时时间_发起握手等候响应超时时间 proxy_connect_timeout 500; //连接成功后_等候后端服务器响应的时间_其实已经进入后端的排队之中等候处理 proxy_read_timeout 600; //后端服务器数据回传时间_就是在规定时间内后端服务器必须传完所有数据 proxy_send_timeout 500; //代理请求缓存区_这个缓存区间会保存用户的头信息以供Nginx进行规则处理_一般只要能保存下头信息即可

2021-06-08 02:00:28 136

原创 Nginx反向代理与负载均

Nginx反向代理与负载均衡 反向代理有什么作用呢?除了可以防止外网对内网服务的恶性攻击、缓存以减少服务器的压力和访问安全控制外,还可以进行负载均衡,将用户请求分配给多个服务器 什么是代理服务器?客户端发送请求时,不会直接发给主机,而是先发给代理服务器,代理服务器接收请求后将请求发送给不同的主机,并接收主机返回的数据,存放在代理服务器中,再发送给客户端 使用代理服务器的优点 1、 提高访问速度 2、 防火墙作用 3、 通过代理服务器访问不能访问的目标站点 负载均衡 1、 轮询(默认)每个请求按时间顺序逐一

2021-06-06 22:50:52 166

原创 linux IP 地址配置

cd /etc/sysconfig/network-scripts/ 这个文件夹下保存的是网络配置文件 dhcp自动获取IP地址(因为BOOTPROTO的参数为dhcp) BOOTPROTO接受3个参数:none(禁止dhcp),static(静态IP),dhcp(自动获取) 如果要设置静态ip,修改下面这个文件,获取网卡地址 cat /etc/udev/rules.d/70-persistent-net.rules 最后重启网络服务 service network restart ...

2020-12-22 17:15:32 154

原创 Mysql分区

SHOW VARIABLES LIKE ‘%partition%’ ,查看 have_partition_engine的值为 yes,如果没有看到变量或者 NO,那么 Mysql不支持分区 同一个分区表中的所有分区必须使用同一个存储引擎 只能使用[STORAGE]ENGINE创建分区 mysql> CREATE TABLE emp (empid INT, salaryDECIMAL(7,2), birth_date DATE) ->ENGINE=INNODB -> PARTITION BY

2020-12-22 17:04:38 157

原创 golang 的数组 切片 映射,学习笔记

1/内部实现 GO 的数组是个长度固定的数据类型,存储有想用类型的袁术的连续块,存储类型可以是内置类型(整型,字符串),也可以是某种结构类型 数组因为他占用的内存是连续分配的.由于内存连续,CPU 能把正在使用的数据缓存更久时间.而且内存连续很容易计算索引,可以快速迭代数组的所有元素.数组的类型信息可以提供每次访问一个元素时需要在内存中移动的距离,既然每个元素类型相同,而且是连续分配的内存,那么可以以固定速度索引数据中的任意数据,速度非常快 2/声明数组 var array [5]int (array:数组

2020-12-01 16:17:22 200

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除