自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 索引,事务原理

索引 :帮助mysql高效获取数据的排好序的数据结构 create index 索引名 no 表名(值)不索引会有大量的磁盘IO,一张表只能有一个索引索引的数据结构 :二叉树,红黑树(二插平衡树,层数太多),hash表,B-tree(横向扩展存储元素)mysql底层是b+树 ( 和B树区别 把非叶子结点的data都放在了叶子结点 使用叶子结点有整张表的索引元素 叶子结点间使用指针连接)!存储索引计算 一 bigint为例(16kb/(8+6)b) = 1170索引流程(首先判断是不是索

2021-02-26 02:03:47 231

原创 mysql 整理 2.0

索引的使用慢查询日志慢查询日志可以通过命令临时开启,也可以修改配置文件永久设置查看是否开启慢查询日志show variables like ‘slow%’临时开启慢查询日志set slow_query_log = ‘NO’ser long_query_time = 1;show variables like ‘%datadir%’...

2021-02-25 22:36:28 181

转载 go语言 gc

从进程虚拟地址空间来看,程序要执行的指令在代码段,全局变量、静态数据等都会分配在数据段。而函数的局部变量、参数和返回值都可以在函数栈帧中找到。但是,由于函数调用栈会在函数返回后销毁,那些在编译阶段不能确定大小的数据,以及生命周期超出当前函数的数据,都不适合分配在栈上。它们会被分配到堆上,在栈上使用其在堆上的地址。图片不过随着程序的运行,有些数据便不会再被用到了,那么回收利用它们占用的内存是个不错的主意~直接分配在栈上的数据,随着函数调用栈的销毁便释放了自身占用的内存,可以被程序重复使用。而这些在堆

2021-01-05 21:07:10 200

原创 linux: 五种IO模型(IO多路复用)

linux: 五种IO模型(IO多路复用)阻塞和非阻塞侧重状态。阻塞调用是指调用后对方一直没有给你回复,你一直等着,什么事都不能干。非阻塞调用指在调用后一直没有给你回复,你每一段时间就问一次,你在这期间可以干别的。同步和异步侧重方式。同步:甲方请求一次,乙方应答一次”这样的有序序列处理业务,只有当“一次请求一次应答”的过程结束才可以发生下一次的“一次请求一次应答”,那么就说他们采用的是同步。异步:如果甲方只要有需要,就会发送请求,不管上次请求有没有得到乙方应答。而乙方只要甲方有请求就会接受,

2021-01-03 16:12:52 224

原创 go 微服务

Go 微服务微服务概述Soa 的一种实践,单一职责,原子进程,独立进程,隔离部署,去中心话的服务治理Go 实施一个微服务Kit:一个微服务的基础库Service:业务代码+kit依赖+第三方依赖组成的业务微服务Rpc+message queque:轻量级通讯多个微服务完成了一个完整的用户场景去中心化数据去中心化治理去中心化技术去中心化每个服务独享自身的数据存储设施可用性,兼容性设计隔离超时控制负载保护限流降级重试负载均衡发送的数据要保守,接守数据要开放,保证兼容性

2020-11-30 23:54:11 150

原创 RabbitMQ 5种工作模式级Go的使用

一、RabbitMQ主要使用场景1.程序解耦;2.流量消峰;3.异步处理;二、RabbitMQ 工作中最常用的工作模式:Simple模式,最简单常用的模式:package RabbitMQimport ( "fmt" "github.com/streadway/amqp" "log")//连接信息//url格式 amqp://账号:密码@rabbitmq服务器地址:端口号/vhostconst MQURL = "amqp://qlf:qlf@127.0.0.1:5672/i

2020-11-04 14:59:35 452

原创 go令牌桶

令牌桶原理令牌桶按固定的速率往桶里放入令牌,并且只要能从桶里取出令牌就能通过,令牌桶支持突发流量的快速处理。对于从桶里取不到令牌的场景,我们可以选择等待也可以直接拒绝并返回。对于从桶里取不到令牌的场景,我们可以选择等待也可以直接拒绝并返回。对于令牌桶的Go语言实现,可以参照github.com/juju/ratelimit库。创建令牌桶的方法:// 创建指定填充速率和容量大小的令牌桶func NewBucket(fillInterval time.Duration, capacity int64

2020-10-30 12:43:36 472

原创 Nginx使用配置方法

Nginx 的简介1.1 Nginx 概述Nginx (“engine x”) 是一个高性能的 HTTP 和反向代理服务器,特点是占有内存少,并发能力强,事实上 nginx 的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用 nginx 网站用户有:百度、京东、新浪、网易、腾讯、淘宝等1.2 Nginx 作为 web 服务器Nginx 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、php等。但是不支持 java。Java 程序只能通过与 tomcat

2020-10-26 23:34:39 336

原创 mysql 整理

MySQL的日志类型日志用于记录数据库的运行情况,以及用户对数据库执行的各类操作。当数据库发生故障时,可以根据日志分析和解决问题,从而对数据库进行恢复。日志 描述重做日志(redo log)重做日志是一种物理格式的日志,记录的是物理数据页面的修改的信息,其redo log是顺序写入redo log file的物理文件中去的。回滚日志(undo log)回滚日志是一种逻辑格式的日志,在执行undo的时候,仅仅是将数据从逻辑上恢复至事务前的状态,而不是从物理页面上操作实现的,这一点是不同于redo

2020-10-26 22:27:33 181 1

转载 Linux常用命令

系统信息arch 显示机器的处理器架构uname -m 显示机器的处理器架构uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hdparm -i /dev/hda 罗列一个磁盘的架构特性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info的信息cat /proc/interrupts 显示中断cat /proc/meminfo 校验内存使用cat /pr

2020-10-26 21:33:06 80

原创 排序算法整理

时间复杂度一 冒泡排序冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。1算法步骤比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。针对所有的元素重复以上的步骤,

2020-10-24 10:26:19 275

原创 操作系统知识点整理

1并发性并发和并行并行是指两个或多个事件可以在同一个时刻发生并发是指两个或多个事物可以在同一个时间间隔发生2共享性共享性表现为操作系统中的资源可供多个并发的程序共同使用,这种共同使用的形式称之为资源共享。互斥共享形式当资源被程序A占用时,其他想使用的话只能等待,只有进程A使用完以后,其他进程才可以使用该资源。同时访问形式某种资源在一段时间内并发地被多个程序访问,这种“同时”是宏观的,从宏观去看该资源可以被同时访问。3虚拟性虚拟性表现为把一个物理实体转变为若干个逻辑实体,物理实体是真实存

2020-10-24 09:33:08 140

原创 go zap日志库的使用

Zap是非常快的、结构化的,分日志级别的Go日志库。1.安装go get -u go.uber.org/zap2.配置Zap提供了两种类型的日志记录器—Sugared Logger和Logger。在性能很好但不是很关键的上下文中,使用SugaredLogger。它比其他结构化日志记录包快4-10倍,并且支持结构化和printf风格的日志记录。在每一微秒和每一次内存分配都很重要的上下文中,使用Logger。它甚至比SugaredLogger更快,内存分配次数也更少,但它只支持强类型的结构化日志记录

2020-10-22 21:11:23 1043

原创 深入理解计算机操作系统 性能优化

深入理解计算机操作系统–优化程序性能1减少内存指针的读写次数2减少函数调用3消除循环的低效性4减少过程调用5消除不必要的内存引用6提高并行性7加载性能 依赖流水线的能力和加载单元的延迟8储存的性能 寄存器写到内存,和加载操作互相关系...

2020-10-22 17:39:13 245

原创 go 数组及字符串选择排序

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕package mainimport ( "fmt")func SelectSort(arr []int) []int { length := len(arr) if length <= 1 { return arr } else { for i := 0; i < length-1; i++ { /

2020-08-16 20:09:46 1319

原创 go 单线程/多线程快速排序

第一,单线程实现快速排序package mainimport (“fmt”)func main(){array := []int{3, 6, 1, 4, 2, 8}fmt.Println(array)quickSort(array, 0, len(array)-1)fmt.Println(array)}func quickSort(array []int, left, right int) {if left >= right {return}index := partit

2020-07-24 13:56:13 382 1

原创 golang 环形单向链表

goalng 环形单向链表难点对于一个环形单向链表的删除我思路1)先让temp指向head2) 让helper指向环形链表的最后3)让temp 和要删除的id 进行比较,如果相同则helper完成删除(但要考率到删除的是头结点可以head=hea.next)代码package mainimport (“fmt”)type PeopleNode struct {no intname stringnext *PeopleNode}func InsertPeopleNode(.

2020-05-27 22:05:17 247

原创 golang 数组模拟环形队列

golang 数组模拟环形队列1) 使用原因数组遵循先入后出的原则,且存入取出后本身所含的数据无法移动,照成前面的数据虽然被取出了但后面的数据一但把数组填满,可无法把还需要填的数据放入前面已经把元素取出的数组地址。2)使用原理把数组模拟为一个环形队列,首尾相接,并把数组的的最后一个地址空出作为这个环形队列的标记点。3)代码演示...

2020-05-25 13:41:01 192

原创 golang稀疏数组

**golang稀疏数组1.使用原因在写程序的存储使用数组时原数组中会存在大量的无效数据,占据了大量的存储空间,对服务器的读取和储存造成负担,因此我们可以使用稀疏数组进行优化。2.使用原理二维数组:0 0 0 0 0 0 ————》 稀疏数组:row col val 0 0 0 1 0 0 6 6 0

2020-05-24 07:00:49 508

空空如也

空空如也

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

TA关注的人

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