自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 golang 通过context设置接口请求超时时间

通过ctx 设置接口超时时间,提高接口请求速率

2023-08-30 14:29:57 369

原创 -笔记 tps qps

并发处理

2023-05-07 15:29:07 541 1

原创 cloud-canal的部署使用

因为使用的是桥接模式 直接访问 http://localhost:8111 即可!三,解压到本地的 /Users/jkwanga/cloud-canal下。如遇到使用默认验证码场景,请使用 777777 默认验证码即可。docker-compose.yaml中使用的是自定义网络。但是更多的情况是 表的字段和结构发生了变化,这个时候需要。访问: http://{ip}:8111。修改.yaml文件中的IP地址即可!完成迁移,对于相同的表是比较好迁移的。四,使用浏览器登陆控制台。五,可以开始你的业务了。

2023-04-19 19:20:40 1082

原创 解决Mac M1 debug报错(could not launch process: can not run under Rosetta)

由于版本安装的不适合与Debug,要安装成arm64的才可以。vscode调试:launch.json文件。重启vscode 点击编辑即可!

2023-04-03 20:55:35 280

原创 DDD领域驱动设计

DDD领域驱动设计概念

2023-03-29 12:04:57 73

原创 structpb.Struct 取值笔记

kratos学习笔记

2023-03-01 10:00:19 313

原创 go kratos 学习笔记(三)

kratos学习笔记

2022-12-14 17:38:03 935

原创 go kratos 学习笔记 (二)

学习笔记记录

2022-12-14 17:09:43 1122

原创 go kratos 微服务框架(笔记一)

kratos 微服务框架学习笔记

2022-12-14 16:33:38 2434

原创 git 指定合并某个commit

git 合并

2022-10-24 12:07:57 3593

原创 beego http改为https

笔记记录,Beego 常涉及的问题

2022-10-17 11:15:30 245

原创 Mysql数据库的优化方案

Mysql数据库的优化1.引擎的优化2.索引的优化3.分库分表4.读写分离5.使用缓存MySQL性能优化从以下三个问题考虑:1. 单条 SQL 运行慢3. 部分 SQL 运行慢4. 整个 SQL 运行慢问题 1:单条 SQL 运行慢问题分析造成单条 SQL 运行比较慢的常见原因有以下两个:1. 未正常创建或使用索引2. 表中数据量太大解决方案 1:创建并正确使用索引索引是一种能帮助 MySQL 提高查询效率的主要手段,因此一般情况下我们遇到的单条 SQL 性能问题,通常

2022-04-11 22:01:35 461

原创 如何防止sql注入?

什么是SQL注入?SQL注入是一种非常常见的数据库攻击手段,SQL注入漏洞也是网络世界中最普遍的漏洞之一。例如:某学长通过攻击学校数据库修改自己成绩,一般用的就是SQL注入方法。原因总结:对sql语句和关键字未进行过滤当前端传过来的数据进入到后端进行处理时,没做严格的判断,导致其传入的‘数据(含有sql关键字)’ 在拼接sql语句中由于其特殊性,被当作sql语句的一部分被执行,导致数据库受损(修改,删除等)防止方法:过滤掉关键字:select、insert、update、delete

2022-04-11 10:17:57 1803

原创 什么是死锁怎么避免?

一,什么是死锁?两个或者多个互相竞争共享资源的线程,因为互相等待,导致‘永久’阻塞的现象二,产生死锁的原因?同时满足4个条件互斥条件:共享资源x和y只能被一个线程占用,且等待。线程1已经取得共享资源x,在占用共享资源y的时候,不释放共享资源x不可抢占,其他线程不能抢占线程1占有的共享资源x循环等待:线程1 等待线程2占有的共享资源,线程2等待线程1的三,怎么避免死锁?打破其中任何一个条件1.线程互斥没法解决,本身就是解决线程安全的2. 占用且等待,可以申请一次性获取资源,这样就不用等

2022-04-11 10:03:11 559

原创 kafka如何保证消息不丢失?

kafka如何保证消息不丢失?kafka是实现异步消息通讯的中间件,整个架构Producer Consumer Broker组成所以保证消息不丢失从这三个方面考虑和实现.确保Producer端数据能够到达Broker,并且实现消息的存储.有可能会出现网络问题,导致消息发送失败一,Producer默认是异步发送消息,确保消息发送成功第一种方法 把异步发送改为同步发送,这样就能实时知道消息发送的结果第二种方法 添加异步或调函数,监听消息发送的结果,如果失败可以在回调中重试第三种方法 Produ

2022-04-11 09:53:44 6702

原创 什么是分布式锁?

什么是分布式锁?分布式锁是一种跨进程的,跨机器节点的一种互斥锁。保证在多个机器节点对共享资源访问的一个排他性分布式锁和线程锁的本质是一样的。线程锁的生命周期是单进程多线程。分布式锁的生命周期多进程多机器节点.本质上都要满足锁的基本特性1.排他性: 同一时刻只能一个节点访问共享资源。2.可重入性: 允许一个已经获得锁的线程,在没有释放锁之前重新去获得锁3.锁的获取和释放的方法,锁的失效机制避免死锁的一个问题第一个关系型数据库它可以使用到唯一的约束性来实现锁的排他性,如果要针对某个方法

2022-04-10 22:22:06 2224

原创 redis的内存淘汰算法和原理是什么?

redis的内存淘汰算法和原理是什么?当redis的使用率已经达到了Maxmemory 的上限的时候,就会触发内存释放的一个行为redis提供4种内存淘汰算法:1. 随机移除某个key(random算法)2. TTL算法 在设置了过期时间的key里,找到更早过期的key移除3. LRU算法,移除使用频率低的key4. LFU算法 和LRU算法类似(redis4新增加)LRU算法会在redis里面维护一个大小为16的候选池,根据时间排序,每一次随机抽出来5个key放到候选池中候选池满了,

2022-04-10 22:13:46 964

原创 redis和mysql如何保持数据一致性

redis和mysql如何保持数据一致性一般情况下,redis是实现 应用和数据库之间的一个读操作的缓存层。 目的就是减少数据库的IO,提高数据库的IO性能数据->写入缓存,读取数据,首先尝试,命中缓存就从缓存中读取数据,没有命中就去数据库中读取查到后再把数据写到缓存。出现的问题,一份数据同时保存在redis和数据库中,当数据发声变化时,需要更新 redis和数据库,因为更新操作是有先后顺序的,不像mysql中的多表事务操作,可以满足ACID的特性此时就会出现数据一致性的问题。解决方法:.

2022-04-10 22:09:57 1734

原创 (redis笔记一)怎么构造一个键值数据库?

此笔记为极客时间学习笔记与心得一,构造一个键值数据库需要什么?首先要考虑里面可以存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口。它们看似简单,实际上却是我们理解 Redis 经常被用于缓存、秒杀、分布式锁等场景的重要基础。理解了数据模型,你就会明白,为什么在有些场景下,原先使用关系型数据库保存的数据,也可以用键值数据库保存。例如,用户信息(用户 ID、姓名、年龄、性别等)通常用关系型数据库保存,在这个场景下,一个用户 ID 对应一个用户信息集合,这就是键值数据库的一种数据模型,它

2022-04-10 22:00:14 646

原创 IP地址的计算方式

其实无论作为前端还是后端开发,都会涉及到网络方面的知识,下面是总结的IP的常用计算方式一,给你一个IP和掩码 如何计算出 它的可使用范围?在此之前,我们先要知道 IP地址 32位。 IP网络位 + IP主机位 = IP (32位)子网掩码不能单独存在,他必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分为网络地址和主机地址两部分给你一个IP和掩码你知道有效IP的个数吗?2的(32-掩码)次方-2 起始位网关,末位广播,所以掩码为30的有效IP就两个那它的有效IP 起始

2022-03-11 16:55:21 19785 3

原创 Golang 解决 golang.org/x/ 下的包下载不下来的问题

golang.org/x/ 下的包下载不下来的问题go在下载golang.org的包时会出现访问不了的情况。从github.com上把代码clone到创建的golang.org/x目录上就OK了git clone https://github.com/golang/sys.gitgit clone https://github.com/golang/net.gitgit clone https://github.com/golang/text.gitgit clone https://gith

2021-12-30 17:46:57 1274

原创 go生成uuid

获取 UUID一,开源包生成uuid "github.com/satori/go.uuid"func main() { // 创建 u1, _ := uuid.NewV4() fmt.Printf("UUIDv4: %s\n", u1)}二,手动生成"crypto/rand"func getUuid() string { b := make([]byte, 16) io.ReadFull(rand.Reader, b) b[6] = (b[6] &

2021-12-30 17:29:29 3596 1

原创 go环境搭建,以及vscode工具配置

笔记一, centos 搭建 Go环境go env :https://goproxy.cn/yum install golanggo versionmkdir gocd gomkdir src mkdir pakmkdir bin#go modexport GO111MODULE=on#go proxyexport GOPROXY=https://goproxy.cn#go install pathexport GOROOT=/usr/lib/golang#works

2021-12-29 13:45:04 930

原创 redis常规操作

高并发的瓶颈就是数据库 笔记记录下面是redis 的client 端操作,一般还可以和上篇map+lock 联合使用。都是帮助数据库减压的好手段.//redis.govar redisClient *redis.Clientfunc redisInit() { if redisClient == nil { redisClient = redis.NewClient(&redis.Options{ Addr: "127.0.0.1:6379", Passw.

2021-12-28 14:16:17 839

原创 用map+lock实现redis缓存

map + lock 实现 Redis缓存·高并发的瓶颈就是数据库· 写这些只为笔记,不想被动收录项目生产中 Redis 是最常用的,主要用与存放客户经常会访问的一些数据到内存里,从而减轻数据库的压力。根据需要获取你的系统不需要redis来增大开销,使用map+locak实现redis的主要功能是最好的选择.//cache.govar Cache *CacheMap//初始化func CacheInit() { if Cache == nil { Cache = NewCacheMa

2021-12-28 11:55:24 682

原创 git 代码回退

笔记:git代码回退1. git log //记录2. git reset --hard ID //回退本地代码库 ID是commit ID3. git push -f //强推到远程多人 git 提交 流程 //参考上篇 git rebasegit checkout jk_dev //git add xx //git commit -s //现暂存自己的分支git fetch //再拉取最新的git rebase develop //合并到自己的分支git push

2021-12-27 16:38:50 1672

原创 go chassis 微服务框架

Go Chassis是华为云CSE开源微服务开源框架github.com/go-chassis/go-chassisgithub.com/go-chassis/go-chassis-protocol/client/grpcgithub.com/astaxie/beego微服务注册中心:注册中心地址https://github.com/apache/servicecomb-service-centerService-Center(SC)是一个服务注册中心。 服务提供者(provider)

2021-12-16 18:09:14 1707

原创 go mirco 微服务框

RPC是Remote Procedure Call Protocol单词首字母的缩写,简称为:RPC,翻译成中文叫远程过程调用协议。特点:这种调用的过程跨越了物理服务器的限制,是在网络中完成的,在调用远端服务器上程序的过程中,本地程序等待返回调用结果,直到远端程序执行完毕,将结果进行返回到本地,最终完成一次完整的调用。总结:远程过程调用指的是调用远端服务器上的程序的方法整个过程。//待补充—...

2021-12-16 17:51:20 345

原创 Redis 笔记(一)

Redis:一,下载 安装 使用C编写的,网络交互,基于内存也可持久化的key-value$ find . -type f -executable./redis-benchmark //用于进行redis性能测试的工具./redis-check-dump //用于修复出问题的dump.rdb文件./redis-cli //redis的客户端./redis-server //redis的服务端./redis-check-aof //用于修复出问题的AOF文件./redis-sentinel

2021-12-16 17:43:04 368

原创 vscode支持 go mod

linux 开通 go mod 之后 vscode 找不到包的问题?原因:因为 linux上 开通go mod :所需要的第三方依赖包下载到 go/pkg 下,而vscode依旧是在 GOPATH 和 GOROOT下寻找所以是找不到的,但是linux 编译你的项目也不会报错!解决方法有二:更改 go mod GO111MODULE="off" 或者auto这样就是 在 GOPATH 和 GOROOT下寻找包。虽然更改 GO111MODULE 可以实现 但是有的项目硬性要求就是要用 “

2021-02-03 17:01:30 4703 6

原创 go的目录结构pkg

src: 源码文件bin: 编译生成的而可执行文件pkg: 平台相关目录(目标操作系统目录),编译后生成的文件pkg:保存归档文件(扩展名为 .a 的文件,即 archive 文件)这是程序编译后生成的静态库文件。注意:在 pkg 下实际上还有一个平台相关目录(目标操作系统对应的目录),所有的归档文件都在这个目录下当前出现了三个子目录[root@localhost pkg]# lslinux_amd64 mod sumdb第一个目录 linux_amd64因为该go环境是在Linu

2021-01-22 16:14:39 5592

原创 centos8按装使用etcd

centos7 安装etcd yum install etcdcentos8 安装etcd 如下,centos8不支持yum 安装etcd一,etcd官网:https://github.com/etcd-io/etcd二,下载 :git clone https://github.com/etcd-io/etcd.git三,编译:make build//将生成 etcd etcdctl 二进制文件,建议看一下 它的Makefile 一目了然四,启动:[root@localhos

2021-01-20 11:40:14 1383

原创 kafka入门学习(一)

Kafka官网:http://kafka.apache.org/简介 :Kafka是一种高吞吐量的分布式发布订阅消息系统。它通过高性能TCP网络协议进行通信的服务器和客户端组成。可以部署在内部以及云环境中的裸机硬件,虚拟机和容器上。服务器:Kafka作为一台或多台服务器的集群运行,可以跨越多个数据中心或云区域。其中一些服务器构成了存储层,称为Broker(代理)。其他服务器运行 Kafka Connect来连续导入和导出数据作为事件流,以将Kafka与现有系统集成在一起,例如关系数据库以及其

2021-01-15 17:30:56 176

原创 网络层:路由表和fib的关系

Transmission Control Protocol/Internet Protocol的简写中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直

2021-01-14 15:09:58 2746

原创 vscode函数不能跳转以及函数跳转慢

vscode 是最好的IDE 接受反驳!像很多同志一样也遇到了 安装vscode函数跳转问题很烦恼! 一 , 首先你需要一个go环境,去访问它看看 https://goproxy.cn/二 ,vscode 官网 下载后用于远程连接 linux 开发安装几个必备的插件Chinese //汉化Go //goC/C++ // 代码自动跳转Remote-SSH //远程连接点击左下角的绿色条选择 Addssh [email protected] -

2021-01-13 16:45:46 18557 2

原创 linux cpu使用率/proc/stat,内存使用率/proc/meminfo,磁盘使用率df,系统运行时间/proc/uptime

像大部分项目一样涉及到了linux 设备的资源监控问题,故而总结如下!一般而言 root# top就显示了当前的所有设备资源信息,但是我们要想在程序中获取并处理还是不便的一, linux cpu使用率计算从前往后数字的意义分别是://CPU指标:user,nice, system, idle, iowait, irq, softirqcpu 3510242 11471 238410 755073368 9581 133818 93993 0 0 0 user: 用户态时间 nice:

2020-12-14 20:08:35 1620 2

原创 go语言之channel如何使用

1,ChannelGo语言的并发模型是CSP:提倡通过通信共享内存而不是通过共享内存而实现通信如果说goroutine是Go程序并发的执行体,channel就是它们之间的连接。channel是可以让一个goroutine发送特定值到另一个goroutine的通信机制。Go语言中的通道(channel)是一种特殊的类型。通道像一个传送带或者队列,总是遵循先入先出的规则,保证收发数据的顺序。每一个通道都是一个具体类型的导管,也就是声明channel的时候需要为其指定元素类型.2,声明channelv

2020-12-11 18:12:59 1467 1

原创 go语言byte与uint32之间的转换

字节与整形之间的转换func Uint16(b []byte) uint16 { _ = b[1] return uint16(b[0]) | uint16(b[1])<<8}func BytesToUint32(b []byte) uint32 { _ = b[3] // bounds check hint to compiler; see golang.org/issue/14808 return uint32(b[0]) | ui

2020-12-11 11:06:32 4671

原创 gin框架的异步协程

异步协程:百万级并发可参考:https://blog.csdn.net/jkwanga/article/details/110948445golang的高并发一大利器就是协程。gin里可以借助协程实现异步任务。因为涉及异步过程,请求的上下文需要copy到异步的上下文,并且这个上下文是只读的。router.GET("/sync", func(c *gin.Context) { time.Sleep(5 * time.Second) log.Println("Done! in p

2020-12-11 09:50:03 1950

原创 go线程池实现百万级高并发

实例代码解析package mainimport ( "fmt" "runtime" "time") type Job interface { Do()}//----------------------------------------------//workertype Worker struct { JobQueue chan Job}//新建一个 worker 通道实例func NewWorker() Worker {.

2020-12-10 11:04:52 6428 4

空空如也

空空如也

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

TA关注的人

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