自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 redis实现分布式锁,go实现完整code

Redis 分布式锁是一种使用 Redis 数据库实现分布式锁的方式,可以保证在分布式环境中同一时间只有一个可以访问共享资源。

2024-10-29 15:31:44 458

原创 关于广告的一些术语的解释

CPS的模式较为固定,例如电商平台京东,我们就可以投放广告让用户进行购买商品,当用户成功通过广告购买商品之后就算一次订单计费,可以根据此订单进行广告计费,这种条件也非常苛刻,但是收益较高,如果媒体配合活动拉新,例如0.01买东西,这种计费模式还是非常可观。rtb是广告中一种商业模式,通过竞价的方式来决定流量的归属权,在竞价中有一价二价的模式,现在大部分都是一价的模式,有地板价的存在,这种竞价也是价高者得,二价的模式有一种博弈论,有感兴趣的小伙伴可以自行搜索。

2024-10-09 17:17:24 537

原创 go context详解

当定时器到期时,会调用cancel方法关闭通道,级联关闭当前Context派生的子Context,并取消与父Context的绑定关系。每个派生出的子Context都会创建一个新的退出通道,这样,只要组织好Context之间的关系,就可以实现继承链上退出信号的传递。而WithDeadline函数会先判断父Context设置的超时时间是否比当前Context的超时时间短,如果是,那么子协程会随着父Context的退出而退出,没有必要再设置定时器。因此,要具体使用Context,需要派生出新的Context。

2024-05-06 11:23:35 931 2

原创 n个协程交替打印1-100,详细注释

思路:创建等同goroutine数量的chan切片,每个chan通过阻塞的性质控制goroutine的顺序。2、必须要加协程去发送这条数据,不然直接死锁了,因为不是协程发数据就会一直阻塞导致死锁。1、这一步主要是给最后一个chan先发送数据,保证第一个chan可以取到数据不阻塞。这道题是面试时经常遇到的一道题,是考察对goroutine和channel的应用。

2024-03-13 15:55:46 520

原创 kafka实现延迟队列

首先说一下延迟队列这个东西,实际上实现他的方法有很多,kafka实现并不是一个最好的选择,例如redis的zset可以实现,rocketmq天然的可以实现,rabbitmq也可以实现。如果切换前几种方案成本高的情况下,那么就使用kafka实现,实际上kafka实现延迟队列也是借用了rocketmq的延迟队列思想,rocketmq的延迟时间是固定的几个,并不是自定义的,但是kafka可以实现自定义的延迟时间,但是不能过多,因为是依据topic实现的,接下来我使用go实现简单的kafka的延迟队列。

2024-01-31 17:49:05 4532 1

原创 * error decoding ‘exporters‘: unknown type: “jaeger“ for id: “jaeger“

在使用otel收集jaeger时候出现了这个错误,很显然jaeger exporters在0.85.0中被删除了,因为jaeger添加了对otlp的本机支持。把jaeger 改为otlp出口就可以了。

2023-11-01 10:39:37 508 1

原创 网站反应慢?如何排查?

1、服务器出口带宽不够用,本身服务器购买的出口带宽比较小。一旦并发量大的话,就会造成分给每个用户的出口带宽就小,访问速度自然就会慢。跨运营商网络导致带宽缩减。例如,公司网站放在电信的网络上,那么客户这边对接是长城宽带或联通,这也可能导致带宽的缩减。2、服务器负载过大,导致响应不过来可以从两个方面入手分析:分析系统负载,使用 w 命令或者 uptime 命令查看系统负载。如果负载很高,则使用 top 命令查看 CPU ,MEM 等占用情况,要么是 CPU 繁忙,要么是内存不够。

2023-11-01 10:31:15 367

原创 协程切换为什么就要比线程低?

本文我们主要介绍为什么 Go 协程比进程和线程占用的系统资源低,通过进程、线程、协程的 CPU 资源和内存占用的比较,发现无论是在切换时消耗的 CPU 资源(时间片),还是内存占用,Go 协程都有明显优势。一句话总结就是 Go 协程的切换成本和内存占用比线程和进程都低。需要注意的是,Go 协程占用系统资源低,并不代表可以无限创建 Go 协程。

2023-10-19 16:03:30 319

原创 go在1.21.0新版本特性

众所周知,我们在使用golang的时候没有max和min函数,很多小伙伴在拿go写算法的时候都要去自己简单的构造max和min函数,不过go终于在1.21.0内置max和min和clear函数。

2023-10-13 11:21:26 959

原创 go中读写锁(rwmutex)源码解读实现原理

读写锁区分读锁和写锁,而普通的互斥锁不区分,读写锁主要应用在读多写少的场景,既保证了并发读的执行效率,又保证了线程之间的安全。

2023-08-29 10:35:39 661

原创 golang中byte和rune的区别?

类型本质上是uint8类型的别名,代表的就是ascll码的一个字符。类型本质上其实是int32类型的别名,代表的就是一个UTF-8字符。在go语言中都是字符类型,从源码来看他们都是别名形式。

2023-08-28 17:56:50 529

原创 使用前缀树实现敏感词过滤

前缀树(Prefix Tree),也被称为字典树(Trie),是一种用于高效存储和检索字符串的数据结构。它的主要特点是能够快速地查找具有相同前缀的字符串集合。

2023-08-12 15:16:28 579

原创 go如何操作kafka-直接上代码

使用的是"github.com/IBM/sarama"包。单个消费者消费topic。消费者组消费topic。

2023-07-28 15:49:40 435

原创 关于gin框架的脚手架

本脚手架是基于gin框架实现内置zap日志库viper读取配置文件jwt & cors & track的中间件缓存使用redis,orm框架使用gorm七牛云oss文件上传使用依赖倒置原则抽象dao层dockerfile制作镜像,docker-compose编排项目使用shell脚本自动生成dao、cache、service、svc模板代码jaeger的链路追踪收集到jaeger-uielk日志收集系统。

2023-07-21 21:20:21 833

原创 go中string转[]byte会发生内存拷贝吗

今天来了解一下go语言的string的底层是怎么实现的,我们知道java的string是一个类实现的,其实go也是类似的,go使用结构体实现了string。

2023-07-21 19:36:42 318

原创 go切片扩容机制

通过这个结果可以明显的看出,修改新切片的值居然影响到了老切片的值了,扩容以后并没有新建一个新的数组,并且append操作也改变了原来数组的值,如果原数组上有多个切片,那么这些切片都会影响,产生了莫名的bug!​ 第二种情况就是扩容策略的例子了,在扩容之后产生了新的切片,因为原数组的容量达到了最大值,再扩容都会开出一片新的内存,把原来的值拷贝过来,再进行后续操作也不会影响原数组。扩容之后数组就一定是新的吗?

2023-07-09 21:25:09 458

原创 go如何控制并发数,场景举例

【代码】go如何控制并发数,场景举例。

2023-06-12 10:48:50 662

原创 go脚手架,可快速构建一个go小型项目

golang脚手架,基于gin框架的脚手架,用于快速构建一个小项目

2023-06-11 17:31:02 1871

原创 不要在说go存在引用传递了

go到底是值传递还是引用传递???

2023-04-24 16:10:26 470

原创 mysql聚簇索引和非聚簇索引的优缺点

聚簇索引适合于那些经常需要按照索引顺序进行数据查询的表,例如时间序列数据表;而非聚簇索引适合于那些需要频繁插入和更新数据的表,例如日志表。在实际使用中,应根据表的特点选择合适的索引类型。

2023-04-02 20:07:46 1262

原创 23春招面试- Go实现lru算法

go手撕lru算法

2023-03-13 20:08:05 346

原创 23春招-mysql事务相关高频面试题

对于一个事务,要么事务内的sql全部执行,要么都不执行。

2023-02-21 10:20:08 443

原创 go实现简易的区块链(1)

区块链是一种安全共享的去中心化的数据账本。本质上,区块链只是一个分布式数据库而已。不过使他独一无二的事,区块链是一个公开的数据库,而不是一个私有的数据库,也就是说,每个使用它的人都有完整或部分的副本。数据被细分为多个共享区块,并以加密哈希形式的唯一标识符链接在一起。此外,也正是由于区块链,才使得加密货币和智能合约成为现实。

2022-11-04 19:49:29 2848 1

原创 go面试必问,什么是中间件?

讲述go的中间件应用

2022-11-03 08:04:47 699

原创 go的切片扩容机制

通过这个结果可以明显的看出,修改新切片的值居然影响到了老切片的值了,扩容以后并没有新建一个新的数组,并且append操作也改变了原来数组的值,如果原数组上有多个切片,那么这些切片都会影响,产生了莫名的bug!​ 第二种情况就是扩容策略的例子了,在扩容之后产生了新的切片,因为原数组的容量达到了最大值,再扩容都会开出一片新的内存,把原来的值拷贝过来,再进行后续操作也不会影响原数组。扩容之后数组就一定是新的吗?

2022-11-02 19:47:58 1520

原创 MySQL事务高频面试题

对于一个事务,要么事务内的SQL全部执行,要么都不执行脏读 Dirty Read(读未提交数据)当事务A正在访问一个数据并进行了修改,但这种修改还没有提交到数据库中,此时事务B也访问到了这个数据,并且使用了这个数据。由于这个数据是还没有提交的数据,那么事务B读取的这个数据是“脏数据”,那么之后的操作都是不正确的。这种情况常发生于转账与取款操作中。幻读 Phantom Read(前后多次读取,数据总量不一致)

2022-10-04 08:30:54 1673

原创 Illegal mix of collations (utf8mb4_unicode_ci,IMPLICIT) and (utf8mb4_general_ci,IMPLICIT) for operat

如果没有表格的相关信息,这是最好的伪代码形式。可以解决当前问题,指定排序规则,让两张表排序规则相同。

2022-08-03 08:27:41 1675

原创 什么是内存逃逸?(Go)

详解golang中的内存逃逸问题

2022-07-18 21:35:13 1190

原创 如何linux查看端口占用以及cpu负载

如何在liunx查看端口的占用和cpu的负载

2022-07-18 21:31:18 557

原创 什么是内存对齐?(Go)

详解go语言中的内存对齐问题

2022-07-18 21:26:54 229

原创 gorm的like占位符不起作用解决方法

解决gorm中的like不起作用

2022-07-18 21:25:00 1564

原创 如何在liunx环境下部署goweb项目

如何在linux环境下部署goweb项目,一文详解

2022-06-25 21:47:26 1132

原创 Day1_2剑指 Offer 30. 包含min函数的栈(Go版本)

剑指offer(go版本)

2022-06-10 10:44:16 190

原创 Day1_1-剑指 Offer 09. 用两个栈实现队列(Go版本)

剑指offer算法练习,go语言版本

2022-06-10 10:33:09 171

原创 如何使用docker-compose+实战官网用例(超简单)

简介首先我们了解一下什么是docker-compose:Docker Compose 并不是通过脚本和各种冗长的 docker 命令来将应用组件组织起来,而是通过一个声明式的配置文件描述整个应用,从而使用一条命令完成部署。应用部署成功后,还可以通过一系列简单的命令实现对其完整声明周期的管理。甚至,配置文件还可以置于版本控制系统中进行存储和管理。作用:批量容器编排我们来简单理解什么是docker-composeCompose是Docker官方的开源项目,需要安装!Dockerfile让

2022-04-26 21:18:52 3553

原创 如何在服务器用docker搭建Redis集群

用docker部署Redis集群这里用的是分片+高可用+负载均衡,三主三从第一步创建网卡# 创建网卡docker network create redis --subnet 172.38.0.0/16第二步用shell脚本配置(一个一个或者用shell脚本创建都行,建议shell脚本!)# 通过脚本创建六个redis配置for port in $(seq 1 6); \do \mkdir -p /mydata/redis/node-${port}/conftouch /myd

2022-04-24 11:00:51 2530 2

原创 在Docker发布自己的镜像方法

发布自己的镜像到Docker hub首先去 docker Hub 注册一个账号,在我们服务器上提交自己的镜像# push到我们的服务器上[root@QCSJdeLinux ~]# docker push diytomcatThe push refers to repository [docker.io/library/diytomcat]2eaca873a720: Preparing 1b38cc4085a8: Preparing 088ebb58d264: Preparing c067

2022-04-23 21:53:38 609

原创 Docker核心(数据卷+实战用例)

容器数据卷什么是容器数据卷(容器数据卷能做什么)将应用和环境打包成一个镜像!数据?如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化MySQL,容器删了,删库跑路!需求:MySQL数据可以存储在本地!容器之间可以有一个数据共享技术!Docker容器中产生的数据,同步到本地!这就是卷技术,目录的挂载,将我们容器内的目录挂载到linux目录上面!**总结: **容器的持久化和同步操作!容器间数据也是可以共享的!使用数据卷方式一: 直接使用命令来挂载 -vdocker

2022-04-23 21:48:52 1511

原创 Docker常用命令(你想要的这都有)

Docker的常用命令帮助命令docker version # docker版本信息docker info # 系统级别的信息,包括镜像和容器的数量docker 命令 --help 镜像命令docker images 查看所有本地的主机上的镜像mac@QCSJdeMacBook-Pro ~ % docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmysql 5.7

2022-04-23 21:43:12 197

原创 如何在服务器上用docker部署msyql(看这一篇就够了)

如何在服务器用docker部署mysql第一步:先在服务器上下载docker,具体下载看docker官网(记得配置阿里云镜像,国外的太慢了)第二步:用docker下载mysql(我这里下载的是5.7版本)docker pull mysql:5.7第三部:用docker运行mysql服务docker run --name dockermysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你自己设置的密码 -d mysql--name 为mysql的实例设置别名。

2022-04-21 20:09:48 2147

空空如也

空空如也

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

TA关注的人

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