01 2024 档案

摘要:Redis负载高的原因可能有以下几个: 1)数据量过大:如果Redis中存储的数据量非常大,超过了Redis服务器的内存容量,会导致Redis负载过高。 2)访问量过大:如果Redis服务器面临大量的并发请求,超过了服务器处理能力,会导致负载过高。 3)慢查询:如果Redis中存在慢查询语句,会导致 阅读全文
posted @ 2024-01-30 13:19 李若盛开 阅读(145) 评论(0) 推荐(0) 编辑
摘要:Redis取数据慢的原因可能有以下几个: 1)网络延迟:Redis是一个基于网络的内存数据库,如果网络延迟高,会导致数据取得慢。 2)数据量过大:如果Redis中存储了大量的数据,每次取数据时需要遍历整个数据集,会导致取数据的速度变慢。 3)频繁的数据持久化:如果Redis开启了持久化功能,频繁地将 阅读全文
posted @ 2024-01-30 13:18 李若盛开 阅读(443) 评论(0) 推荐(0) 编辑
摘要:Redis是一个开源、内存中的数据结构存储器,用作数据库、缓存和消息中间件中。由于其明了的语法和功能的极其丰富,它是一种应用非常广泛的服务器,但即使Redis是一款十分受欢迎的数据库,也可能由于某些原因而导致Redis返回nil。 Redis 返回 nil 的原因可能有以下几种: 1)Redis实例 阅读全文
posted @ 2024-01-30 13:08 李若盛开 阅读(605) 评论(0) 推荐(0) 编辑
摘要:go-cache是一种内存中的key:value store/cache库,类似于Memcached,适用于在一台机器上运行的应用程序(单机应用程序)。 文档 https://pkg.go.dev/github.com/patrickmn/go-cache https://github.com/pa 阅读全文
posted @ 2024-01-29 20:03 李若盛开 阅读(761) 评论(0) 推荐(0) 编辑
摘要:HTTP接口和RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而RPC接口则基于远程过程调用。 RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议),前者是 阅读全文
posted @ 2024-01-28 20:59 李若盛开 阅读(509) 评论(0) 推荐(0) 编辑
摘要:概述 gRPC 和 HTTP 是两种常见的网络通信协议,用于在客户端和服务器之间进行通信。它们具有不同的特点和适用场景,下面进行详细比较。 HTTP(Hypertext Transfer Protocol) 特点: 1)简单易用:HTTP 使用简单的请求方法和状态码来进行通信,如 GET、POST、 阅读全文
posted @ 2024-01-28 12:06 李若盛开 阅读(182) 评论(0) 推荐(0) 编辑
摘要:1、概述 1.1 什么是gRPC RPC的全称是Remote Procedure Call,远程过程调用。RPC是一种协议,它实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从server/client模型。使用的时候客户端调用server端提供的接口就像是调用本地的函数一样。 而gRP 阅读全文
posted @ 2024-01-27 13:06 李若盛开 阅读(1209) 评论(0) 推荐(0) 编辑
摘要:feat: 新功能(feature)fix: 修复bugdocs: 文档(documentation)style: 格式(不影响代码运行的变动)refactor: 重构(即不是新增功能,也不是修改bug的代码变动)chore: 构建过程或辅助工具的变动revert: 撤销,版本回退perf: 性能优 阅读全文
posted @ 2024-01-26 22:58 李若盛开 阅读(17) 评论(0) 推荐(0) 编辑
摘要:1、使用下载的老版goland ide工具,使用debug模式无法正常生效: 异常信息是因为goland中的dlv.exe版本太老,也就是dlv.exe不能适配最新的go版本: error layer=debugger could not patch runtime.mallogc: no type 阅读全文
posted @ 2024-01-25 19:21 李若盛开 阅读(676) 评论(0) 推荐(0) 编辑
摘要:在运行vue项目时需要拉取npm依赖包: pnpm i 报错原因:在计算机上启动 Windows PowerShell时,执行策略很可能是 Restricted(默认设置)。 当前powershell执行策略无法运行脚本,powershell有四种执行策略: Restricted 禁止运行任何脚本和 阅读全文
posted @ 2024-01-23 13:25 李若盛开 阅读(2117) 评论(0) 推荐(0) 编辑
摘要:简介 在黑客的世界里,当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。本指南将教你如何正确的提问以获得你满意的答案。 不只是黑客,现在开放源代码(Open Source)软件已经相当盛行,你常常也可以由其他有经验的使用者身上得到好答案,这是件好事;使用者比起黑客来, 阅读全文
posted @ 2024-01-21 18:27 李若盛开 阅读(31) 评论(0) 推荐(0) 编辑
摘要:一、开发流程不同 瀑布开发采用线性的开发流程,按照预先规划的顺序依次进行需求分析、设计、编码、测试和维护等环节。每个环节都有明确的交付物和里程碑。开发团队在完成上一个环节后才能进入下一个环节。 敏捷开发采用迭代和增量的开发方式。开发工作被划分为短期的迭代周期,每个迭代周期通常持续数周到数月。在每个迭 阅读全文
posted @ 2024-01-20 22:24 李若盛开 阅读(1485) 评论(0) 推荐(0) 编辑
摘要:密码学有很多较快的算法是基于c或c++纂修,而工程上主要以go语言为主,在此梳理一些go调用c常见问题和用例。有很多奇特的方式进行传输,但是想要性能最优还是以指针传输作为主要传输方式。 一些简单的计算可以直接使用c编写成.h进行引用,但在工程部署常常拥有大量依赖库,若在服务器上部署时间太慢,还可能存 阅读全文
posted @ 2024-01-20 21:08 李若盛开 阅读(320) 评论(0) 推荐(0) 编辑
摘要:在学习编程语言的类型系统时,经常听说“静态语言”“动态语言”“强类型语言”和“弱类型语言”这些概念,它们究竟是什么意思呢?各个概念之间又有什么区别呢?如果阅读互联网上的博客,也可能会发现一些矛盾的观点,有的作者糊涂地认为静态语言=强类型语言,或者动态语言=弱类型语言,但它们其实不是一回事。静态/动态 阅读全文
posted @ 2024-01-18 23:29 李若盛开 阅读(418) 评论(0) 推荐(0) 编辑
摘要:在设计数据库表的时候,经常需要设计一个id字段,它的类型一般都是整型int,经常会遇到int(1)、int(20)等。 int的范围:有符号的整型范围是-2147483648~2147483647无符号的整型范围是0~4294967295 参看 MySQL 手册,int(M): M indicate 阅读全文
posted @ 2024-01-18 23:15 李若盛开 阅读(386) 评论(0) 推荐(1) 编辑
摘要:一、整型数据类型存储方式整型数据类型是Mysql中最常用的数据类型之一,其存储方式如下:(默认是有符号,即取值范围是正负范围;无符号,即取值范围就是正值范围)1. TINYINT:占用1个字节,范围为-128~127。2. SMALLINT:占用2个字节,范围为-32768~32767。3. MED 阅读全文
posted @ 2024-01-17 11:41 李若盛开 阅读(181) 评论(0) 推荐(0) 编辑
摘要:本文介绍 ffmpeg 的常用命令。ffmpeg 是流行的音视频处理工具, 国内大部分视频播放器都是基于 ffmpeg 开发而来, 如 VLC、QQ 播放器等。 采集音频设备 ffmpeg -f dshow -i audio="麦克飿(Realtek High Definition Au" ./ou 阅读全文
posted @ 2024-01-15 20:01 李若盛开 阅读(78) 评论(0) 推荐(0) 编辑
摘要:1. go-micro简介 Go Micro是一个插件化的基础框架,基于此可以构建微服务,Micro的设计哲学是可插拔的插件化架构 在架构之外,它默认实现了consul作为服务发现(2019年源码修改了默认使用mdns),通过http进行通信,通过protobuf和json进行编解码 2. go-m 阅读全文
posted @ 2024-01-14 23:03 李若盛开 阅读(343) 评论(0) 推荐(0) 编辑
摘要:一、问题 当使用limit实现分页查询时,当limit的偏移量越大时,sql语句的耗时也越大。 select * from table_name limit 10000,10 select * from table_name limit 0,10 这两条查询语句都是取10条数据,但性能就相差甚远。 阅读全文
posted @ 2024-01-12 23:14 李若盛开 阅读(765) 评论(0) 推荐(0) 编辑
摘要:Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。 package main import ( "fmt" ) type Phone interface { call() } type NokiaPhone struct { 阅读全文
posted @ 2024-01-11 20:20 李若盛开 阅读(20) 评论(0) 推荐(0) 编辑
摘要:一、概念 Go标准库提供了Cond原语,sync.Cond(条件变量)是一个用于在多个goroutine之间进行同步和通信的重要工具,可以让 Goroutine 在满足特定条件时被阻塞和唤醒。 条件变量的作用并不保证在同一时刻仅有一个协程(线程)访问某个共享的数据资源,而是在对应的共享数据的状态发生 阅读全文
posted @ 2024-01-11 00:19 李若盛开 阅读(1069) 评论(0) 推荐(0) 编辑
摘要:1. 简介 从HTTP/1.0开始,一直到HTTP/2,不管应用层协议如何改进,TCP一直以来都是HTTP协议的基础,主要是因为能提供可靠连接。 但是,从HTTP 3.0开始,这个情况就有所变化了。 因为,在最新推出的HTTP 3.0中,已经彻底弃用TCP协议了。 2. 缺点 1)TCP队头阻塞 T 阅读全文
posted @ 2024-01-10 23:45 李若盛开 阅读(181) 评论(0) 推荐(0) 编辑
摘要:TCP 三次握手期间的异常 1 )第一次握手丢失了,会发生什么?当客户端想和服务端建立 TCP 连接的时候,首先第一个发的就是 SYN 报文,然后进入到SYN_SENT状态。在这之后,如果客户端迟迟收不到服务端的 SYN-ACK 报文(第二次握手),就会触发超时重传机制。不同版本的操作系统可能超时时 阅读全文
posted @ 2024-01-10 13:13 李若盛开 阅读(15) 评论(0) 推荐(0) 编辑
摘要:WaitGroup的介绍 WaitGroup就是package sync用来做任务编排的一个并发原语,这个要解决的就是并发-等待的问题:现有一个goroutine A在检查点(chaeckpoint)等待一组goroutine全部完成,如果在执行任务的这些goroutine还没有全部完成,那么gor 阅读全文
posted @ 2024-01-07 01:17 李若盛开 阅读(676) 评论(0) 推荐(0) 编辑
摘要:一、什么是可重入锁 var mu sync.Mutex func main() { mu.Lock() mu.Lock() } 这段 Go 程序会阻塞吗?不会,会报以下错误: fatal error: all goroutines are asleep - deadlock! Go 显然是不支持可重 阅读全文
posted @ 2024-01-04 20:20 李若盛开 阅读(204) 评论(0) 推荐(0) 编辑
摘要:服务端如何防止重复支付 如图是一个简化的下单流程,首先是提交订单,然后是支付。支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互,支付成功以后,异步通知支付中心,支付中心更新自身支付订单状态,再通知业务应用,各业务再更新各自订单状态。 这个过程中经常可能遇 阅读全文
posted @ 2024-01-04 20:04 李若盛开 阅读(102) 评论(0) 推荐(0) 编辑
摘要:401 Unauthorized状态码401表示认证失败,表示请求没有被认证或者认证失败。通常由web服务器返回,而不是web应用。场景:token失效、token缺失、token伪造,导致服务端无法识别身份。403 Forbidden状态码403表示授权失败,通常表示用户通过了身份验证,但缺少权限 阅读全文
posted @ 2024-01-04 13:13 李若盛开 阅读(1042) 评论(0) 推荐(0) 编辑
摘要:为什么要做优化 互联网公司本质是将用户共通的行为流程进行了集中化管理,通过中心化的信息交换达到效率提升的目的,同时用规模效应降低了数据交换的成本。 用人话来讲,公司希望的是用尽量少的机器成本来赚取尽量多的利润。利润的提升与业务逻辑本身相关,与技术关系不大。而降低成本则是与业务无关,纯粹的技术话题。这 阅读全文
posted @ 2024-01-04 01:32 李若盛开 阅读(79) 评论(0) 推荐(0) 编辑
摘要:代码重构是在不改变外部功能的情况下对现有代码进行改进。它是编程的核心部分之一,不容忽视,否则就无法获得更好的代码版本。代码重构可以增强代码的可读性、可维护性和可扩展性,它还旨在提高性能和开发人员的工作效率。 如何重构 在寻找重构的技术之前,看看如何将代码重构集成到编码过程中。以下建议可用于此目的: 阅读全文
posted @ 2024-01-04 00:43 李若盛开 阅读(58) 评论(0) 推荐(0) 编辑
摘要:背景:Golang服务通过docker部署在了线上环境中,但是该服务经常出现内存爆满导致容器自动被kill而退出的现象。因为是线上环境,排查问题会耗时很长,因此先在线上服务的容器上加了个–restart=always的参数,这样可以让容器退出后自动重启,继续进行任务。但在排查内存爆满问题时,线上环境 阅读全文
posted @ 2024-01-04 00:13 李若盛开 阅读(79) 评论(0) 推荐(0) 编辑
摘要:1)永久重定向(301):浏览器会缓存永久重定向的DNS解析记录。 即域名永远跳转至另外一个新的域名,之前的域名再也不使用,跳转记录可以缓存到客户端浏览器。2)临时重定向(302):浏览器不会缓存当前域名的解析记录。 即告诉浏览器域名不是固定重定向到当前目标域名,后期可能随时会更改,因此浏览器不会缓 阅读全文
posted @ 2024-01-03 22:34 李若盛开 阅读(374) 评论(0) 推荐(0) 编辑
摘要:深度优先搜索(DFS)和广度优先搜索(BFS),都是图形搜索算法,相似又却不同,在应用上也被用到不同的地方。 一、深度优先搜索(DFS) 深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索 阅读全文
posted @ 2024-01-01 21:46 李若盛开 阅读(395) 评论(0) 推荐(0) 编辑
摘要:sync.Pool 是 sync 包下的一个组件,用来提高对象复用几率,减少gc的压力,减少内存分配,它是并发安全的,常用来存储并复用临时对象。 任何存放区其中的值可以在任何时候被删除而不通知,在高负载下可以动态的扩容,在不活跃时对象池会收缩。 可伸缩的,其大小仅受限于内存的大小,可以被看作是一个存 阅读全文
posted @ 2024-01-01 17:04 李若盛开 阅读(526) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示