自定义博客皮肤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 $idgit diff :查看本次修改与上次修改的内容的区别。git add :把现在所要添加的文件放到暂存区中。git log -p :查看每次详细修改内容的 diff 。git rm :从版本库中删除文件。git reset :从暂存区恢复到工作文件。git reset HEAD^ :恢复最近一次提交过的状态,即放弃上次提交后的所有本次修.

2022-02-16 16:31:19 212

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

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

2021-12-21 18:27:48 545

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

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

2021-12-15 10:05:11 1184

原创 GO GMP模型简述

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

2021-10-17 16:13:10 460

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

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

2021-09-12 10:41:42 141

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

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

2021-09-09 23:51:27 45

原创 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 91

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

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

2021-09-08 14:59:00 425

原创 golang学习笔记(变量)

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

2021-09-07 18:35:10 62

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

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

2021-06-17 07:37:44 529

转载 nginx缓存配置与防盗链

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

2021-06-08 02:00:28 87

原创 Nginx反向代理与负载均

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

2021-06-06 22:50:52 119

原创 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 100

原创 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 102

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

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

2020-12-01 16:17:22 156

空空如也

空空如也

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

TA关注的人

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