12 2023 档案

摘要:一、除数为0 a := 1 b := 0 c := a / b fmt.Println(c) 二、调用接口未实现的方法 三、数组下标越界、字符串越界(运行时错误,对于静态类型语言,数组下标越界是致命错误) 1)数组下标越界 package main import "fmt" func main() 阅读全文
posted @ 2023-12-30 14:28 李若盛开 阅读(496) 评论(0) 推荐(1) 编辑
摘要:1、ELK简介 ELK是一套针对日志数据做解决方案的框架,是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器 阅读全文
posted @ 2023-12-29 23:28 李若盛开 阅读(143) 评论(0) 推荐(0) 编辑
摘要:1.不占空间内存 在 Go 中,可以使用 unsafe.Sizeof 计算出一个数据类型实例需要占用的字节数。 package main import ( "fmt" "unsafe" ) func main() { fmt.Println(unsafe.Sizeof(struct{}{})) } 阅读全文
posted @ 2023-12-29 22:31 李若盛开 阅读(286) 评论(0) 推荐(0) 编辑
摘要:使用SQL语句来访问存储在数据库表中的记录集合。SQL查询是由像From、Where等各种子查询来构成的。必须执行这些子查询才能获得正确的结果,看下SQL语句中各个子查询执行的先后顺序。 select column1,column2 from table1 as t1 left join table 阅读全文
posted @ 2023-12-29 22:07 李若盛开 阅读(78) 评论(0) 推荐(0) 编辑
摘要:一、引入 在进行并发编程时,有时候会需要定时功能,比如监控某个GO程是否会运行过长时间、定时打印日志等等。 GO标准库中的定时器主要有两种:Timer一次性定时器、Ticker周期性定时器。 Timer计时器使用一次后,就失效了,需要Reset()才能再次生效。而Ticker计时器会一直生效。 二、 阅读全文
posted @ 2023-12-28 22:39 李若盛开 阅读(187) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/sxycylq/article/details/128332779 微服务概念微服务的概念最早是在2014年由Martin Fowler和James Lewis共同提出,他们定义了微服务是由单一应用程序构成的小服务,拥有自己的进程与轻量化处理,服务依业务功 阅读全文
posted @ 2023-12-28 22:05 李若盛开 阅读(37) 评论(0) 推荐(0) 编辑
摘要:一、引言 在Linux系统中,有许多命令可以帮助我们监控和管理系统中正在运行的进程。其中,ps(Process Status)指令是最常用且功能强大的命令之一。 ps用于报告当前系统的进程状态,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等 阅读全文
posted @ 2023-12-27 23:48 李若盛开 阅读(526) 评论(0) 推荐(0) 编辑
摘要:一、概述 含义:iostat是I/O statistics(输入/输出统计)的缩写 作用 1、主要对系统的磁盘操作活动进行监视 2、汇报磁盘活动及CPU使用情况,输出磁盘IO和CPU的统计信息 劣势不能对某个进程进行深入分析,仅对系统的整体情况进行分析 二、安装 iostat属于sysstat软件包 阅读全文
posted @ 2023-12-27 23:05 李若盛开 阅读(2494) 评论(0) 推荐(0) 编辑
摘要:一、top 能够实时(监控)显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。 默认进入top时,各进程是按照CPU的占用量来排序,以K为单位显示内存大小,可通过大写字母E来切换内存信息区域的显示单位,如下按一下E切换到MB,再按一下E切换到GB。 注意:按shift+M使应用按内 阅读全文
posted @ 2023-12-27 22:21 李若盛开 阅读(4954) 评论(0) 推荐(0) 编辑
摘要:杀不掉进程的原因可能有两种: 1)此进程是僵尸进程 2)此进程是"核心态"进程 解决方案: ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]' 或者 先找到该进程号,再进入到“/proc/进程号”目录下,执行“cat status”命令可以查询到指定进程的父进程 阅读全文
posted @ 2023-12-27 19:46 李若盛开 阅读(2624) 评论(0) 推荐(0) 编辑
摘要:在Linux系统中,如果遇到内存不足的问题,可以尝试以下方法进行处理: 1. 通过命令`free -m`查看当前Linux系统的内存使用情况,包括总内存数、已使用的内存数和空闲的内存数。这样可以对系统的内存状况有一个直观的了解。 2. 找出占用内存过高的进程。可以使用`top`命令查看内存占用情况, 阅读全文
posted @ 2023-12-27 18:41 李若盛开 阅读(3491) 评论(0) 推荐(0) 编辑
摘要:在面对线上故障和性能问题时,迅速而准确的排查是至关重要的。以下是一些优化排查的方法,帮助更有效地解决短时间内产生大量time wait请求的问题。 1. 监控和日志分析 通过监控系统实时监控应用的指标,特别关注与网络通信和连接有关的指标。检查日志以找到与time wait请求相关的信息,可能有网络异 阅读全文
posted @ 2023-12-27 13:03 李若盛开 阅读(43) 评论(0) 推荐(0) 编辑
摘要:1、介绍 1)CPU:中央处理器(英文是Central Processing Unit),也叫处理器,是计算机的运算核心和控制核心。人靠大脑思考,电脑靠CPU来运算、控制。让电脑的各个部件顺利工作,起到协调和控制作用。 主要作用:处理指令、执行操作、控制时间、处理数据。 2)内存:也称内存储器和主存 阅读全文
posted @ 2023-12-27 11:15 李若盛开 阅读(411) 评论(0) 推荐(0) 编辑
摘要:计数器法:https://gitee.com/lymgoforIT/golang-trick/tree/master/08-count-limit-rate令牌桶算法:https://gitee.com/lymgoforIT/golang-trick/tree/master/09-token-buc 阅读全文
posted @ 2023-12-25 23:37 李若盛开 阅读(166) 评论(0) 推荐(0) 编辑
摘要:1、服务限流 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统, 一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认数据,如商品详情页库存默认有货)。 一般开发高并发系统常见的限流有: 限制 阅读全文
posted @ 2023-12-25 22:53 李若盛开 阅读(207) 评论(0) 推荐(0) 编辑
摘要:什么是高并发系统?高并发系统是指:在短时间内同时有大量用户请求访问系统,需要系统能够快速、稳定地响应这些请求。 高并发系统案例例如,当某个电商平台在双十一期间推出大量优惠活动时,可能会有成千上万的用户同时访问该平台,这就是一个高并发系统。 在这种情况下,如果系统无法快速处理这些请求,就会导致用户体验 阅读全文
posted @ 2023-12-24 21:39 李若盛开 阅读(143) 评论(0) 推荐(0) 编辑
摘要:Go语言是通过自带的CGO工具来支持C语言函数调用,同时可用Go语言导出C动态库接口给其它语言使用。 查看是否开启: window: go env |findstr "CGO" linux: go env |grep "CGO" CGO 环境 使用 CGO 需要一定的环境环境支持,Cgo依赖Gcc工 阅读全文
posted @ 2023-12-24 20:24 李若盛开 阅读(198) 评论(0) 推荐(0) 编辑
摘要:四次挥手: 一、服务器出现大量CLOSE_WAIT 状态的原因CLOSE_WAIT 状态,它是TCP四次挥手的第二次挥手被动关闭方的状态。 当服务端出现大量 CLOSE_WAIT 状态的连接的时候,说明服务端的程序没有调用 close 函数关闭连接。 解决方案:【及时关闭未使用的连接】 二、服务器出 阅读全文
posted @ 2023-12-24 13:36 李若盛开 阅读(4483) 评论(0) 推荐(1) 编辑
摘要:在Go语言中,JWT(JSON Web Token)鉴权可以使用第三方库来实现,比如jwt-go。 库的介绍和使用可见文档:jwt package - github.com/golang-jwt/jwt/v5 - Go Packages JWT鉴权登录 创建JWT令牌 在服务器中,可以使用以下代码创 阅读全文
posted @ 2023-12-23 23:40 李若盛开 阅读(970) 评论(0) 推荐(0) 编辑
摘要:1、传统的session认证 http协议本身是一种无状态的协议,而这就意味着如果用户每一次请求时都要向我们的应用提供用户名和密码来进行用户认证。用户认证成功后,服务器开辟空间存储当前用户信息(session),而发给客户端的 sesssion_id 存放到 cookie 中,这样用客户端请求时带上 阅读全文
posted @ 2023-12-23 23:25 李若盛开 阅读(197) 评论(0) 推荐(0) 编辑
摘要:Go是一门静态类型的语言,静态类型也就意味着在使用Go语言编程时,所有的变量、函数参数都需要指定具体的类型,同时在编译阶段编译器也会对指定的数据类型进行校验。这也意味着一个函数的输入参数和返回参数都必须要和具体的类型强相关,不能被不同类型的数据结构所复用。 而泛型就是要解决代码复用和编译期间类型安全 阅读全文
posted @ 2023-12-23 23:06 李若盛开 阅读(43) 评论(0) 推荐(0) 编辑
摘要:在函数中,如果参数是非引用类型(int、string、array、struct等),这样就在函数中就无法修改原内容数据; 如果参数是引用类型(指针、map、slice、chan等),这样就可以修改原内容数据。 是否可以修改原内容数据,和传值、传引用没有必然的关系。在C++中,传引用肯定是可以修改原内 阅读全文
posted @ 2023-12-23 22:01 李若盛开 阅读(376) 评论(0) 推荐(0) 编辑
摘要:录播:录播更侧重于“录”,比如录播系统,主要集成了音视频的采集、后期剪辑、工具软件的系统。通俗的讲录播就是生产音视频。 点播:点播从字面意义上讲是播放选择的视频,比如观看爱奇艺、腾讯等视频网站的电影和综艺,可以随意拖动视频进度,这些音视频共性特点是提前录制好的。通俗的讲点播就是播放录制好的视频,点播 阅读全文
posted @ 2023-12-23 20:37 李若盛开 阅读(244) 评论(0) 推荐(0) 编辑
摘要:保护gin构建的web app不panic的方式,简单来说: 1)主程中的panic本身是会被gin拦截的2)协程中的panic需要手动使用defer和recover进行保护 情景在用gin构建项目,运行web app并上线了之后,或许有一些请求会经过业务,在特定的情况下出发会触发golang中的p 阅读全文
posted @ 2023-12-23 17:39 李若盛开 阅读(403) 评论(0) 推荐(0) 编辑
摘要:gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP2 设计。gRPC 默认使用protocol buffers,这是Google开源的一套成熟的结构数据序列化机制(也可使用其他数据格式如JSON)。 基于go的一种远程过程调用,RPC 框架的目标就是让远程服务调用更加简单、透明 阅读全文
posted @ 2023-12-23 08:38 李若盛开 阅读(422) 评论(0) 推荐(0) 编辑
摘要:当谈到网络通信协议时,大家都熟悉的就是HTTP(Hypertext Transfer Protocol),它是一种用于在 Web 浏览器和服务器之间传输数据的协议。随着技术的发展,HTTP也在不断演进,从HTTP1.0发展到了HTTP2.0,带来了许多新的特性和改进。 一、如何通过浏览器查看当前的h 阅读全文
posted @ 2023-12-21 13:19 李若盛开 阅读(2619) 评论(0) 推荐(1) 编辑
摘要:切片为什么要做内存优化 Go 语言的切片是一个动态的数据结构,可以方便地对其进行扩容和缩容操作。由于切片的底层实现是通过数组来实现的,因此在使用切片时,需要注意内存分配和释放的开销。这也是为什么需要对切片的内存使用进行优化的原因。 内存分配和释放是非常耗时的操作,因此频繁地对切片进行重新分配和释放会 阅读全文
posted @ 2023-12-19 23:41 李若盛开 阅读(35) 评论(0) 推荐(0) 编辑
摘要:中间件:将这些非业务逻辑代码抽象出来,封装好,提供接口给控制器使用。用到了装饰器模式:将最核心的代码一层层装饰,返回的时候一层层出来。 Next() 源码注释:应该只在中间件内部使用。它执行调用处理程序内部链中的挂起处理程序。 通俗的说,就是中间件放行,当一个中间件代码执行到Next(),会先执行它 阅读全文
posted @ 2023-12-19 18:15 李若盛开 阅读(406) 评论(0) 推荐(1) 编辑
摘要:在分布式系统中,如果某个服务节点发生故障或者网络发生异常,都有可能导致调用方被阻塞等待,如果超时时间设置很长,调用方资源很可能被耗尽。这又导致了调用方的上游系统发生资源耗尽的情况,最终导致系统雪崩。 如果 D 服务发生了故障不能响应,B 服务调用 D 时只能阻塞等待。假如 B 服务调用 D 服务设置 阅读全文
posted @ 2023-12-18 18:42 李若盛开 阅读(45) 评论(0) 推荐(0) 编辑
摘要:MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序,如果order by的条件不在索引列上,就会产生Using filesort。 Using filesort表示在索引之外,需要额外进行外部的排序动作。当MySQL无法使用索引完成排序 阅读全文
posted @ 2023-12-17 23:45 李若盛开 阅读(2442) 评论(0) 推荐(1) 编辑
摘要:当涉及到连接不同类型的数据库时,可以用常见的方式去连接对应的数据库,也可以使用接口抽象的方式使代码更具灵活性和可扩展性,更显优雅。 非接口抽象方式: 如果涉及到多种数据库时,同样的代码显得非常臃肿。 package main import "fmt" // 直接定义 MySQL 连接和插入函数 fu 阅读全文
posted @ 2023-12-17 17:49 李若盛开 阅读(56) 评论(0) 推荐(0) 编辑
摘要:从代码的编写规范,格式的优化,设计原则和一些常见的代码优化的技巧等方面总结了45个小技巧: 1、规范命名命名是写代码中最频繁的操作,比如类、属性、方法、参数等。好的名字应当能遵循以下几点:见名知意且可读性强 比如需要定义一个变量需要来计数 var int i = 0 名称 i 没有任何的实际意义,没 阅读全文
posted @ 2023-12-16 18:26 李若盛开 阅读(15) 评论(0) 推荐(0) 编辑
摘要:1、慎用CreatedAt、UpdatedAt和DeletedAt字段 数据库设计字段时要避开这created_at、updated_at、deleted_at字段,因为被框架本身使用了,建议改为created_time、updated_time和deleted_time。 数据插入时,仅仅插入业务 阅读全文
posted @ 2023-12-15 23:05 李若盛开 阅读(759) 评论(0) 推荐(0) 编辑
摘要:M3U 文件是一种纯文本文件,可以指定一个或多个多媒体文件的位置。它的设计初衷是为了播放音频文件,但后来越来越多的用于播放视频文件列表。而 M3U8 则是用 UTF-8 编码的 M3U。M3U、M3U8 文件都是苹果公司使用的 HLS(HTTP Live Streaming) 协议的基础。 在实际应 阅读全文
posted @ 2023-12-15 22:28 李若盛开 阅读(593) 评论(0) 推荐(0) 编辑
摘要:m3u8和mp4格式是数字视频编码和流媒体传输协议中使用最多的格式,它们在视频编码和流媒体传输上有着不同的优势。 1)文件格式:m3u8是一种基于HTTP 协议的文本文件,它的内容是指向网络上的视频片段的链接;而mp4是媒体文件格式,它的内容是视频和音频的数据流。 2)传输方式:m3u8采用HTTP 阅读全文
posted @ 2023-12-14 18:45 李若盛开 阅读(3527) 评论(0) 推荐(0) 编辑
摘要:云计算,主要有三种服务模式,它们分别是IaaS、PaaS、SaaS。 云计算有以下⼏个层次的服务:基础设施级服务(IaaS),平台级服务(PaaS)和软件级服务(SaaS)。这⾥所谓的层次,是分层体系架构意义上的“层次”。 1.基础设施即服务【基础设施层】 (IaaS :Infrastructure 阅读全文
posted @ 2023-12-14 14:24 李若盛开 阅读(204) 评论(0) 推荐(0) 编辑
摘要:在Web开发中,经常需要将数据存储到数据库中以便进行管理和处理。gosqlite3是一个轻量级的sqlite3驱动,它为Golang提供了快速、稳定的sqlite3支持。 package main import ( "database/sql" "fmt" "log" _ "github.com/m 阅读全文
posted @ 2023-12-13 20:12 李若盛开 阅读(968) 评论(0) 推荐(0) 编辑
摘要:存储方式MySQL: 是一个服务器端的数据库系统,通常运行在一个独立的服务器上。数据存储在服务器的硬盘上。SQLite: 是一个嵌入式数据库,通常用于移动应用和桌面应用。数据存储在一个单一的文件中。并发支持MySQL: 支持高并发,适用于大型、多用户的应用。SQLite: 并发支持较弱,更适用于单用 阅读全文
posted @ 2023-12-13 18:52 李若盛开 阅读(766) 评论(0) 推荐(0) 编辑
摘要:什么是 SQLite?SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite是一个增长最快的数据库引擎,这是在普及方面的增长,与它的尺寸大小无关。SQLite 源代码不受版权限制。 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配 阅读全文
posted @ 2023-12-13 18:38 李若盛开 阅读(49) 评论(0) 推荐(0) 编辑
摘要:1.函数返回局部指针变量 func Add(x,y int) *int { res := 0 res = x + y return &res } func main() { Add(1,2) } 函数返回局部变量是一个指针变量,该函数执行结束,对应栈帧就会销毁,但是引用返回到函数外部,如果外部解析地 阅读全文
posted @ 2023-12-12 18:23 李若盛开 阅读(107) 评论(0) 推荐(0) 编辑
摘要:一、什么是 Work StealingGo语言的 Work Stealing 机制是一种用于调度协程(Goroutines)的策略,有助于充分利用多核CPU,提高并发性能,降低锁竞争,从而使Go程序更高效地运行 Work Stealing 机制的核心思想:每个操作系统线程(M)都有一个本地任务队列, 阅读全文
posted @ 2023-12-11 18:57 李若盛开 阅读(667) 评论(0) 推荐(0) 编辑
摘要:一 、概念基础1.1三色标记法将对象分为三类把图过程中遇到的对象,按“是否访问过”这个条件标记成以下三种颜色: 1.白色对象(可能死亡):未被回收器访问到的对象。在回收开始阶段,所有对象均为白色,当回收结束后,白色对象均不可达。 2.灰色对象(临时状态):已被回收器访问到的对象,但回收器需要对其中的 阅读全文
posted @ 2023-12-09 16:22 李若盛开 阅读(194) 评论(0) 推荐(0) 编辑
摘要:一、逃逸分析 内存逃逸分析是编译器在编译优化时,用来决定变量应该分配在堆上还是栈上的工具。 了解内存逃逸分析的原理后,就能够理解什么样的变量会被分配在栈上、什么样的变量会被分配在堆上。 当你的程序对性能非常敏感,就可以使用内存逃逸工具的分析,查看哪些变量逃逸到了堆上,哪些没有逃逸。然后调整代码,再次 阅读全文
posted @ 2023-12-08 18:21 李若盛开 阅读(893) 评论(0) 推荐(0) 编辑
摘要:为了让程序员更好地专注于业务代码的实现,Go 语言增加了垃圾回收机制,自动地回收不再使用的内存。Go 语言有两部分内存空间:栈内存和堆内存。 1. 栈内存【栈是一种运算受限的线性表,连续储存,其限制是指只仅允许在表的一端进行插入和删除操作】栈只允许往线性表的一端放入数据,之后在这一端取出数据,按照后 阅读全文
posted @ 2023-12-08 17:35 李若盛开 阅读(291) 评论(0) 推荐(0) 编辑
摘要:等待一个协程组全部正确完成则结束;但其中一个协程发生错误,这时候就会阻塞,全部停止运行(本次任务失败)以免浪费系统资源,此时可以结合通道(channel)或者 select 语句两种方式来处理。 1、考虑使用两个通道:一个用于报告错误,另一个用于通知所有协程停止。在协程内部捕获错误,并将错误信息发送 阅读全文
posted @ 2023-12-07 14:24 李若盛开 阅读(86) 评论(0) 推荐(0) 编辑
摘要:线程安全是什么 线程安全是指在多线程环境下,程序的执行能够正确地处理多个线程并发访问共享数据的情况,保证程序的正确性和可靠性。 type StringHeader struct { Data uintptr //存放指针,其指向具体的存储数据的内存区域 Len int //字符串的长度 } 并发访问 阅读全文
posted @ 2023-12-06 23:32 李若盛开 阅读(163) 评论(0) 推荐(0) 编辑
摘要:软件即服务 (Software as a Service, SaaS)系统和企业资源规划 (Enterprise Resource Planning, ERP)系统是两种不同类型的软件解决方案,其目标和功能各有不同。 什么是SaaS系统?SaaS是一种软件解决方案,它是基于互联网提供的软件,用户可以 阅读全文
posted @ 2023-12-06 12:53 李若盛开 阅读(149) 评论(0) 推荐(0) 编辑

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