-
100 个网络基础概念问答!
1)什么是链接? 链接是指两个设备之间的连接。它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的层次是什么? 有 7 个 OSI 层:物理层,数据链路层,网络层,传输层,会话层,表示层和应用层。 3)什么是骨干网? 骨干网络是集中的基础设施,旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道。 4)什么是 LAN? LAN 是局域网的缩写。它是指计算机与位于小物理位置的其他网络设备之间的连接。 5)什么是节点? 节点是指连接发生的点。它可以是作为网络一…
-
MySQL 最朴素的监控方式!用完爱不释手
对于当前数据库的监控方式有很多,分为数据库自带、商用、开源三大类,每一种都有各自的特色;而对于 mysql 数据库由于其有很高的社区活跃度,监控方式更是多种多样,不管哪种监控方式最核心的就是监控数据,获取得到全面的监控数据后就是灵活的展示部分。 那我们今天就介绍一下完全采用 mysql 自有方式采集获取监控数据,在单体下达到最快速、方便、损耗最小。 本次文章完全使用 mysql 自带的 show 命令实现获取,从 connects、buffercache、lock、SQL、statement、D…
-
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) …
-
Go 语言开源项目使用的函数选项模式
01 介绍 在阅读 Go 语言开源项目的源码时,我们可以发现有很多使用 “函数选项模式” 的代码,“函数选项模式” 是 Rob Pike 在 2014 年提出的一种模式,它使用 Go 语言的两大特性,变长参数和闭包,可以使我们代码更优雅。 关于变长参数和闭包的介绍,需要的读者朋友们可以查阅历史文章,本文我们介绍 “函数选项模式” 的相关内容。 02 使用方式 在介绍“函数选项模式”的使用方式之前,我们先阅读以下这段代码。 type User struct { Id int …
-
关于DDoS攻击,这些基本概念你一定要知道!
不少小伙伴在学习DDoS攻击的攻防原理的时候会觉得略显吃力。这主要是因为理解原理是需要先了解其概念的。 本篇文章是一篇关于DDoS的技术普及帖,关于DDoS基本概念,看这一篇就够了~ 什么是DDoS攻击 DDoS是Distributed Denial of Service的简称,中文是分布式拒绝服务。 这有点拗口吧? 这样,我们先理解下DDoS的前身DoS(Denial of Service),即拒绝服务。 最基本的DoS攻击就是攻击者利用大量合理的服务请求来占用攻击目标过多的服务资源,从而使合…
-
最好用的开源Web漏扫工具梳理
如果你刚好是某个网络应用程序的所有者,怎样才能保证你的网站是安全的、不会泄露敏感信息? 如果是基于云的安全解决方案,那么可能只需要进行常规漏扫。但如果不是,我们就必须执行例行扫描,采取必要的行动降低安全风险。 当然很多付费扫描器功能会更加全面、严谨,包含报表输出、警报、详细的应急指南等等附加功能。 开源工具最大的缺点是漏洞库可能没有付费软件那么全面。 1. Arachni Arachni是一款基于Ruby框架搭建的高性能安全扫描程序,适用于现代Web应用程序。可用于Mac、Windows及Lin…
-
14 个必须掌握的数据库面试问题
1 为什么使用数据索引能提高效率 数据索引的存储是 有序的 在有序的情况下, 通过索引查询一个数据是无需遍历索引记录的 极端情况下,数据索引的查询效率为二分法查询效率,趋近于log2(N) 2 B+树索引和哈希索引的区别 B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的,如下图: 哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B+树那样从根节点到叶子节点逐级查找,只需一次哈希算法即可,是无序的,如下图所示: …
