-
100 个网络基础概念问答!
1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。 3)什么是骨干网? 骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。 4)什么是 LAN? LAN 是局域网的缩写。它是指计算机与位于小物理位置的其他网络设备之间的连接。 5)什么是节点? 节点是指连接发生的点。它可以是作为网络一…
-
马哥学员 | base23K!疫情让我悄悄卷赢,34岁升职架构师!
疫情下你选择的是抱怨、指责、躺平?还是寻找突破口,蓄积能量?选择不同,结果也不同!疫情结束也是结果呈现的时刻,有人或许会失业,有人或许会降薪,有人或许会升职加薪,今天的主人高同学俨然是后者! 本文素材由Linux网络班N65期高同学提供。 疫情不躺平,学习提升! 我出生在上海,在这座繁华的城市里,每天都是车水马龙,脚步匆匆赶着去上班的人们。然而,2022年3月的一场疫情给上海按下了暂停键,所有人响应政府号召居家隔离。 刚开始的那几天,我从平时繁忙的工作中得到了额外的休息,每天除了下楼做核酸都是窝…
-
MySQL 最朴素的监控方式!用完爱不释手
对于当前数据库的监控方式有很多,分为数据库自带、商用、开源三大类,每一种都有各自的特色;而对于 mysql 数据库由于其有很高的社区活跃度,监控方式更是多种多样,不管哪种监控方式最核心的就是监控数据,获取得到全面的监控数据后就是灵活的展示部分。 那我们今天就介绍一下完全采用 mysql 自有方式采集获取监控数据,在单体下达到最快速、方便、损耗最小。 本次文章完全使用 mysql 自带的 show 命令实现获取,从 connects、buffercache、lock、SQL、statement、D…
-
黑客入门级操作!万能密码直接登录系统
登录网站时,一般都需要先注册,提供账号和密码,下次登录时,如果账号和密码相匹配则能登录成功,相反则无法登录。 但很多人应该有过忘记密码的经历,这时该如何登录呢?答案是「万能密码」。 万能密码,简单来说就是可以登录任意网站的密码,它并不是一个真正意义上的密码,而是一个拥有「不同变体的格式」。 万能密码是一个比较老的漏洞,都是利用SQL语法来注入,其实这也是注入的一种,都是因为提交字符未加过滤或过滤不严格而导致的。 虽然该漏洞比较老,但至今仍有很多网站管理员不够重视,再加上该漏洞比较简单,任何一个安…
-
Go语言高并发时append方法偶现错误的解决方法
在实现图片转码的需求时,需要支持最大 500 个图片下载后转换格式; 如果是一个一个下载后转码,耗时太长,需要使用 goroutine 实现 500 个图片并发下载后,并发转码; 但自测过程中发现,会偶现下载后只转换了 499 个图片或更少的情况(全部下载、转码成功的条件下); 然后就开始了打印日志找 bug 的过程。 排查问题 因为并发时使用到了 sync 等待全部协程结束,起初以为是 sync 异步等待出了问题; 打印日志发现,正常执行了 500 次下载,执行完成下载之后,继续执行的转码操作…
-
如何在 Linux 下使用 TC 优雅的实现网络限流
1. Linux 下的流量控制原理 通过对包的排队,我们可以控制数据包的发送方式。这种控制,称之为数据整形,shape the data,包括对数据的以下操作: 增加延时 丢包 重新排列 重复、损坏 速率控制 在 qdisc-class-filter 结构下,对流量进行控制需要进行三个步骤: 创建 qdisc 队列 上面提到 Linux 是通过包的排队进行流量的控制,那么首先得有一个队列。 创建 class 分类 class 实际上,就是划分流量策略分类。比如划分两档流量限速 10MBps、20…
-
LINUX内核网络中的软中断KSOFTIRQD
1. 前言 之前分享过Linux内核网络数据包的接收过程,当执行到网卡通过硬件中断(IRQ)通知CPU,告诉它有数据来了,CPU会根据中断表,调用已经注册的中断函数,这个中断函数会调到驱动程序(NIC Driver)中相应的函数。驱动先禁用网卡的中断,表示驱动程序已经知道内存中有数据了,告诉网卡下次再收到数据包直接写内存就可以了,不要再通知CPU了,这样可以提高效率,避免CPU不停的被中断。 由于硬中断处理程序执行的过程中不能被中断,所以如果它执行时间过长,会导致CPU没法响应其它硬件的中断,于…
-
Iptables 介绍与使用
连接跟踪(conntrack) 连接跟踪是许多网络应用的基础。例如,Kubernetes Service、ServiceMesh sidecar、 软件四层负载均衡器 LVS/IPVS、Docker network、OVS、iptables 主机防火墙等等,都依赖连接跟踪功能。 连接跟踪,顾名思义,就是跟踪(并记录)连接的状态。例如,图 1.1 是一台 IP 地址为 10.1.1.2 的 Linux 机器,我们能看到这台机器上有三条 连接: 机器访问外部 HTTP 服务的连接(目的端口 80) …
-
马哥学员 | 一个桌面运维的转型之路!拿到年薪21W+其实很简单!
从事基础运维多年看不到希望?找不到出路?其实出路就在你身边!别人已经替你走过了!你只需踩着前人的脚印跟上即可!来看今天这位基础运维转型运维开发收获年薪21W+的学员的故事。 本文素材由Python网络班P39期杨同学提供。 在来马哥教育之前我一直从事着桌面运维、系统运维等基础运维工作,考虑到这份工作的发展前景,我报名了马哥教育的Python网络班,经过5个多月的学习我成功转型运维开发,收获了年薪21W+的offer,今天我把自己的经验分享出来,希望可以帮助到正在迷茫的你。 发展受限,寻找新出路 …
-
Go 语言开源项目使用的函数选项模式
01 介绍 在阅读 Go 语言开源项目的源码时,我们可以发现有很多使用 “函数选项模式” 的代码,“函数选项模式” 是 Rob Pike 在 2014 年提出的一种模式,它使用 Go 语言的两大特性,变长参数和闭包,可以使我们代码更优雅。 关于变长参数和闭包的介绍,需要的读者朋友们可以查阅历史文章,本文我们介绍 “函数选项模式” 的相关内容。 02 使用方式 在介绍“函数选项模式”的使用方式之前,我们先阅读以下这段代码。 type User struct { Id int …