- 博客(207)
- 收藏
- 关注
原创 一个能够生成 Markdown 表格的 Bash 脚本
原文链接:https://josh.fail/2022/pure-bash-markdown-table-generator/当我实现了这一功能后,我意识到还可以添加支持解析带有自定义分隔符的文件,比如 CSV 或 TSV。一开始我只是想传入一堆参数和列数,并让它生成相应的 Markdown 表格。几个月前,我想要一个便携式的 Markdown 表格生成器,于是写了这个。今天分享一个很实用的 bash 脚本,可以。哈喽大家好,我是咸鱼。
2024-08-22 09:43:02 475
原创 K8S 中的 CRI、OCI、CRI shim、containerd
哈喽大家好,我是咸鱼。好久没发文了,最近这段时间都在学 K8S。不知道大家是不是和咸鱼一样,刚开始学 K8S、Docker 的时候,往往被 CRI、OCI、CRI shim、containerd 这些名词搞得晕乎乎的,不清楚它们到底是干什么用的。所以今天,咸鱼打算借这篇文章来解释一下这些名词,帮助大家理清它们的关系。我们以 K8S 创建容器的过程为例,来引申出各个概念。
2024-07-15 17:47:48 1106
原创 聊聊 JSON Web Token (JWT) 和 jwcrypto 的使用
哈喽大家好,我是咸鱼。最近写的一个 Python 项目用到了 jwcrypto 这个库,这个库是专门用来处理 JWT 的,JWT 全称是,JSON 格式的 Token。今天就来简单入门一下 JWT。官方介绍:https://jwt.io/introduction。
2024-05-20 18:55:43 1288
原创 hexo 博客插入本地图片时遇到的坑
哈喽大家好,我是咸鱼。最近一直在折腾博客的事,说是 hexo 极易上手,我觉得只仅限于在安装部署的时候,随着对 hexo 的深入使用,发现遇到的问题还是挺多的。那今天来讲一下我在把本地图片插入到 hexo 博客文章中遇到的坑。
2024-05-08 18:52:03 525
原创 博客添加评论功能及定制化样式
哈喽大家好,我是咸鱼。前段时间看到一个学弟写了篇用 Hexo 搭建博客的教程,心中沉寂已久的激情重新被点燃起来。(以前搞过一个个人网站,但是因为种种原因最后不了了之)于是花了一天时间参考教程搭了个博客网站,我的博客网址是:https://xxxsalted.github.io/下面是相关教程。
2024-04-28 18:43:55 630
原创 又重新搭了个个人博客
哈喽大家好,我是咸鱼。前段时间看到一个学弟写了篇用 Hexo 搭建博客的教程,心中沉寂已久的激情重新被点燃起来。(以前搞过一个个人网站,但是因为种种原因最后不了了之)于是花了一天时间参考教程搭了个博客网站,我的博客网址是:https://xxxsalted.github.io/下面是相关教程。
2024-04-26 21:26:12 1013
原创 聊聊 Linux iowait
最后总结一下:1)不要搞混 CPU 状态和进程的状态。进程有 R、S、D、Z、T,5 种状态;CPU 有 4 种状态:工作(user、system 两种)和空闲(idle、iowait 两种)。2)iowait 表示 CPU 其实是空闲的,不过 CPU 并不是严格意义上的 “空闲”,上面还有等待 I/O 操作的进程在执行。系统存在 I/O 性能问题:系统正在做的工作,大部分时间都是在等待 I/O 了。有进程因为等待 I/O 操作而阻塞,但这并不意味着系统不可以运行其他进程。
2024-04-23 18:45:32 1277
原创 程序员购车指南
哈喽大家好,我是咸鱼。爱车可以说是大部分男人的天性,而我对汽车的热情却远不及对手表的钟爱(痴迷劳力士)。以至于我的朋友掏出车钥匙指着上面的苹果树标志跟我介绍奔驰 AMG 系列的强劲性能和马力时,我只能尽量假装自己听懂不让他尴尬。不过从今年开始,大数据就时不时给我推一些关于汽车的介绍和评测视频,加上打算给老爸买辆车。为了不被 4S 店忽悠,我逐渐开始了解一些选车和购车的基本知识。在搜集了许多资料之后,我写出了这份程序员购车指南,希望对大家有所帮助。下列图片均来自互联网。
2024-04-18 23:02:42 884
原创 Linux systemd 定时任务
哈喽大家好,我是咸鱼。说到 Linux 定时任务,大家用得最多的就是 crond 服务,但其实 systemd 也有类似的功能。我们不但可以通过 systemd 来管理服务,还能设置定时任务,那就是 systemd timer。举个例子,假设我们要通过 crond 配置多个大文件的远程备份(使用 scp、rsync 或 ftp 的方式),但由于大文件的网络传输时间不确定,因此下一个文件的备份任务开始时间几乎都是按照经验估计的。
2024-04-15 18:49:56 740
原创 运维排查 | Systemd 之服务停止后状态为 failed
哈喽大家好,我是咸鱼。我们知道 CentOS 7 之后,Systemd 代替了原来的 SystemV 来管理服务,相比 SystemV ,Systemd 能够很好地解决各个服务间的依赖关系,还能让所有的服务同时启动,而不是串行启动。通常情况下,yum 安装的软件会由系统的包管理器(如 RPM)安装,并且会配置相应的 systemd 服务,因此由 systemd 来管理。
2024-04-01 19:24:28 1964
原创 Saltstack 最大打开文件数问题之奇怪的 8192
哈喽大家好,我是咸鱼。今天分享一个在压测过程中遇到的问题,当时排查这个问题费了我们好大的劲,所以我觉得有必要写一篇文章来记录一下。
2024-03-22 18:55:55 1134
原创 程序员必须了解的 10个免费 Devops 工具
DevOps 是一组实践和方法,将开发(创建软件的人员)和运维(部署和维护软件的人员)团队聚集在一起。这有什么意义吗?为什么 DevOps 这么重要?让我们以一种易于理解的方式去了解它。想象一下,你是一个拼图团队的一员。开发团队负责设计和制作拼图,而运维团队负责将拼图拼在一起并确保拼完后的正确的。在传统流程中,开发团队和运维团队各干各的,缺乏交流,这就导致交付延迟和最终产品不完全合适。而 DevOps 确保每个人从一开始就一起工作,分担责任并持续沟通,以更快更有效地方式解决问题。
2024-03-21 08:39:10 1099
原创 线上机器 swap 过高导致告警
swap 顾名思义指的是 Linux 上的交换分区,有点像 Windows 的虚拟内存,说白了就是把一块磁盘空间或者一个本地文件当成内存来使用。在早期内存价格昂贵的时代,swap 的出现解决了物理内存不足导致无法运行程序的问题。换出:把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存。换入:进程再次访问这些内存数据时,把它们从磁盘读到内存来。那现在随着内存越来越便宜,服务器上面的内存也越来越大,swap 是不是就没啥作用了呢?不是的,对于程序来说,内存再大也有不够用的时候。
2024-03-13 18:40:28 1182
原创 TCP 中的 Delay ACK 和 Nagle 算法
哈喽大家好,我是咸鱼。今天分享一篇大佬的文章,作者:卡瓦邦噶!文章链接:https://www.kawabangga.com/posts/5845教科书介绍的 TCP 内容通常比较基础:包括三次握手,四次挥手,数据发送通过收到 ACK 来保证可靠传输等等。当时我以为已经学会了 TCP,但是后来在工作中,随着接触 TCP 越来越多,我发现很多内容和书上的不一样——现实世界的 TCP 要复杂一些。我们从一个简单的 HTTP 请求开始。第一个和书上不一样的地方是,
2024-03-06 19:04:40 665
原创 聊聊 HTTP 性能优化
哈喽大家好,我是咸鱼。作为用户的我们在 “上网冲浪” 的时候总是希望快一点,尤其是抢演唱会门票的时候,但是现实并非如此,有时候我们会遇到页面加载缓慢、响应延迟的情况。而 HTTP 协议作为互联网世界的基础,从网站打开速度到移动应用的响应时间,HTTP 性能的优化直接关系到我们在网络世界的舒适体验程度。更快的响应时间和速度能够,不但如此,还可以降低服务器和网络带宽的使用,从而。那么今天我们就来聊聊。
2024-03-01 09:27:30 1175
原创 通过 saltstack 批量更新 SSL 证书
像 ansible、puppet 这类工具也可以实现同样的效果,但是咸鱼这边主要用的还是 saltstack,所以今天介绍一些如何通过 saltstack 去批量更新 SSL 证书。如果这个域名下有很多服务器,我们一台一台手动登录机器然后更新证书的话效率是非常低的,所以我们可以通过一些自动化运维工具去完成这些大量重复的工作。首先我们在 salt-master 的主目录下创建一个新的目录,用于存放 SSL 证书和脚本,我自己机器上的 master 主目录为。设置变量 year 的命令有点复杂,我们来看一下。
2024-02-26 19:15:49 1117
原创 【CVE-2024-21626】容器逃逸漏洞修复
简单来讲,是一个用 Go 语言编写的 CLI 工具,它利用 Linux 的核心功能(如 cgroups 和命名空间)来创建和运行容器。由于runc内部不正确处理文件描述符,导致泄漏关键的宿主机文件描述符到容器中。攻击1: 利用文件描述符泄漏,特权用户执行恶意容器镜像,导致 pid1 进程在宿主机挂载命名空间中拥有工作目录,从而允许对整个宿主文件系统的访问。攻击2: 在runc exec中存在文件描述符泄漏和工作目录验证不足,攻击者可通过符号链接将路径替换为。
2024-02-21 17:59:32 1541 3
原创 一行命令找出 Linux 中所有真实用户
哈喽大家好,我是咸鱼。那么现在问题来了,如何快速找出 Linux 中的真实用户(root 用户和普通用户)?正式开始之前,我们先介绍一个工具——getent。
2024-02-05 17:26:21 398
原创 从零开始教你手动搭建幻兽帕鲁私服( CentOS 版)
哈喽大家好,我是咸鱼。想必上网冲浪的小伙伴最近都被《幻兽帕鲁》这款游戏刷屏了。(文中图片均来自网络,侵删)幻兽帕鲁是 Pocketpair 打造的一款开放世界的生存建造游戏。在游戏中,玩家捕捉各种各样的“帕鲁”。“帕鲁” 在玩家支配下,完成不同的工作、任务,像极了现实中的打工人(破防了家人们)。在游戏中体验当资本家的快乐,一下子戳到了打工人社畜们的心上,类似的带有强共情的玩家评论非常多:“你不干有的是帕鲁干。“周日玩帕鲁,周一变帕鲁。“上班当了一天的帕鲁,下班了打开电脑轮到我当资本家了。
2024-02-01 13:32:40 1103
原创 全球 IPv4 耗尽,下个月开始收费!
哈喽大家好,我是咸鱼IPv4(Internet Protocol version 4)是互联网上使用最广泛的网络层协议之一,于1981年在 RFC 791 中发布,它定义了 32 位的IP地址结构和基本的协议操作。由于 IPv4 使用 32 位的地址,因此只有四十亿(4,294,967,296,2^32)个地址。IPv 4 枯竭,升级 IPv6 任重道远。今天我们来看一篇文章,看看向 IPv6 迁移会遇到什么样的挑战以及各个企业会拿出什么样的策略。
2024-01-26 08:43:49 1048
原创 Python 变量?对象?引用?赋值?一个例子解释清楚
哈喽大家好,我是咸鱼。然后问我为什么结果是[1, [...]],我一看这个问题有意思,我说三言两语解释不清楚,我写篇文章到时候你看下吧,于是有了今天这篇文章。在正式开始之前,让我们先弄清楚一些概念。
2024-01-24 18:52:01 1238
原创 TCP 拥塞控制对数据延迟的影响
哈喽大家好,我是咸鱼今天分享一篇文章,是关于 TCP 拥塞控制对数据延迟产生的影响的。作者在服务延迟变高之后进行抓包分析,结果发现时间花在了 TCP 本身的机制上面:客户端并不是将请求一股脑发送给服务端,而是只发送了一部分,等到接收到服务端的 ACK,然后继续再发送,这就造成了额外的 RTT,这个额外的 RTT 是由 TCP 的拥塞控制导致的原文链接:https://www.kawabangga.com/posts/5181。
2024-01-17 19:21:43 1323
原创 9 个让你的 Python 代码更快的小技巧
哈喽大家好,我是咸鱼我们经常听到 “Python 太慢了”,“Python 性能不行”这样的观点。但是,只要掌握一些编程技巧,就能大幅提升 Python 的运行速度。
2024-01-08 17:32:17 932
原创 我的2023
哈喽大家好,我是咸鱼。果然出来工作后地球转速加快是正常现象,不知不觉 2023 年就结束了,我到现在都有种昨天刚过完 2023 年春节的恍惚。工作时长已有一年多,刚开始接触工作的时候,有许多工作上的东西能够让我去学习,无论是技术方面还是业务方面都进步很快。随着工作逐渐得心应手,感觉进步的曲线开始逐渐平缓。即使偶尔逼自己看一些书籍或学习一门技术来提升自己,但是过一段时间之后就偃旗息鼓开始放弃了(例如之前热情高涨地要学 FLask ,买了书学了三分之一写了两篇文章之后就再也没打开过)。
2024-01-04 13:20:43 955
原创 Python 中如何编写类型提示
哈喽大家好,我是咸鱼我们知道 Python 是一门具有动态特性的语言,在编写 Python 代码的时候不需要显式地指定变量的类型这样做虽然方便,但是降低了代码的可阅读性,在后期 review 代码的时候容易对变量的类型产生混淆,需要查阅大量上下文,导致后期维护困难为了提高代码的可读性、可维护性,Python 在中引入了。类型提示是 Python 中一个可选但非常有用的功能,可以使代码更易于阅读和调试关于类型提示的介绍可以看:那么这时候该如何编写类型提示呢?
2023-12-18 18:11:05 869
原创 当你打开终端并输入命令时会发生什么?(下)
哈喽大家好,我是咸鱼我们先来大致回顾一下文章的内容终端设备是由电传打字机演变过来的,电传打字机通过物理线与大型计算机连接在一块来实现输入输出如上图,分别是二战时期的电传打字机和西门子 “Fernscheiber 100” 电传打字机随着技术的不断发展(尤其是显示技术),带显示屏的终端设备随之诞生而现在随着个人电脑的普及,出现了基于屏幕显示的图形用户界面(GUI),演变成了现在的计算机终端。
2023-12-15 19:10:31 438
原创 当你打开终端并输入命令时会发生什么?(上)
哈喽大家好,我是咸鱼参加过校招面试的小伙伴们肯定对下面这道面试题很熟悉:“当你在浏览器输入一段网址后会发生什么?这道面试题可以说是很经典了,因为其涉及大量网络协议,可以非常直观的看出小伙伴们对计算机网络体系的整体把握程度但如果问题换成:“当你打开终端并输入ls时会发生什么?”,有多少小伙伴能够回答出来呢?
2023-12-13 18:59:27 965
原创 Python 中的单下划线和双下划线
哈喽大家好,我是咸鱼当我们在学习 Python 的时候,可能会经常遇到单下划线和双下划线__这两种命名方式单下划线和双下划线__不仅仅是只是一种简单的命名习惯,它们在 Python 中有着特殊的含义,对于代码的可读性和功能实现有着关键的作用。那么今天我们来看一看在 Python 中单下划线和双下划线的用法和意义。
2023-11-29 19:22:41 1225
原创 Kafka 如何保证消息消费的全局顺序性
哈喽大家好,我是咸鱼今天我们继续来讲一讲 Kafka当有消息被生产出来的时候,如果没有指定分区或者指定 key ,那么消费会按照【轮询】的方式均匀地分配到所有可用分区中,但不一定按照分区顺序来分配我们知道,在 Kafka 中消费者可以订阅一个或多个主题,并被分配一个或多个分区如果一个消费者消费了多个分区,某些场景下消费者需要顺序地消费消息,但消息并不是按照顺序分配给分区的,所以就不一定能够保证消息消费的全局顺序性比如下图中Msg0002消息并不是在Msg0001。
2023-11-27 18:58:27 1311
原创 Python 哈希表的实现——字典
哈喽大家好,我是咸鱼接触过 Python 的小伙伴应该对【字典】这一数据类型都了解吧虽然 Python 没有显式名称为“哈希表”的内置数据结构,但是字典是哈希表实现的数据结构在 Python 中,字典的键(key)被哈希,哈希值决定了键对应的值(value)在字典底层数据存储中的位置那么今天我们就来看看哈希表的原理以及如何实现一个简易版的 Python 哈希表ps:文中提到的 Python 指的是 CPyhton 实现。
2023-11-24 18:50:12 1157
原创 为什么 Django 后台管理系统那么“丑”?
最后,如果你发现需要将 Django admin 交给客户或者最终用户,请考虑使用 Wagtail ModelAdmin,它几乎跟 Django admin 一模一样(而且与现有的 Django admin 一起运行)Ken Whitesell 是 Django 的长期用户,也是 Django 社区中的常客,他从 1.2 版本开始就开始使用 Django,Ken 接着指出,问题的答案就在。Ken 和 Jacob 都达成了共识,这也与我的答案一致,Django admin 更多的是组织管理和信任。
2023-11-20 19:54:00 406
原创 Kafka 集群如何实现数据同步?
Kafka 是一个高吞吐的分布式消息系统,不但像传统消息队列(RaabitMQ、RocketMQ等)那样能够【异步处理、流量消峰、服务解耦】还能够把消息持久化到磁盘上,用于批量消费。除此之外由于 Kafka 被设计成分布式系统,吞吐量和可用性大大提高Kafka 角色kafka 客户端生产者(producer):也叫发布者,负责创建消息消费者(consumer):也叫订阅者,负责消费(读取)消息Kafka 服务端(broker)leader:对外提供读写服务。
2023-11-16 18:56:46 1081
原创 Python 既是解释型语言,也是编译型语言
哈喽大家好,我是咸鱼想必大家都听说过 Instagram ,它是全球最受欢迎的社交媒体平台之一,拥有数十亿的活跃用户Instagram 诞生于 2010 年,上线一周就坐拥 10 万注册用户,一年之内就拥有了 1400 万用户,可见扩张趋势突飞猛进。Instagram 诞生的时候只有 3 个工程师,想必大家对【他们怎么设计后端架构,使用了什么技术来支持这么多用户】很感兴趣吧,那么今天我们就来了解一下。
2023-11-08 10:04:43 571
原创 Instagram 早期技术架构
哈喽大家好,我是咸鱼想必大家都听说过 Instagram ,它是全球最受欢迎的社交媒体平台之一,拥有数十亿的活跃用户Instagram 诞生于 2010 年,上线一周就坐拥 10 万注册用户,一年之内就拥有了 1400 万用户,可见扩张趋势突飞猛进。Instagram 诞生的时候只有 3 个工程师,想必大家对【他们怎么设计后端架构,使用了什么技术来支持这么多用户】很感兴趣吧,那么今天我们就来了解一下。
2023-11-07 09:29:32 145
原创 sed 原地替换文件时遇到的趣事
哈喽大家好,我是咸鱼在文章《》中咸鱼向大家介绍了文本三剑客中的 sedsed 全名叫,流编辑器,用程序的方式来编辑文本那么今天咸鱼打算讲一下我在用 sed 原地替换文件时遇到的趣事。
2023-11-04 08:37:58 139
原创 Linux 中如何修改终端提示符颜色?
哈喽大家好,我是咸鱼我们知道默认情况下,Linux 终端提示符都是简单的黑白色、这种黑白提示一方面看久了容易视觉疲劳,另一方面由于没有高亮显示,看着很不方便,视觉体验极差所以我们需要修改我们的终端显示颜色,像下面这样子。
2023-10-31 15:31:46 523
原创 selenium 根据【关键词】获取知网文献信息
哈喽大家好,我是咸鱼之前咸鱼写过几篇关于知网爬虫的文章,后台反响都很不错。虽然但是,咸鱼还是忍不住想诉苦一下有些小伙伴文章甚至代码看都没看完,就问我 ”为什么只能爬这么多条文献信息?“(看过代码的会发现我代码里面定义了变量来设置爬取篇数),”为什么爬其他文献不行?我想爬 XXX 文献“(因为代码里面写的是通过【知网高级搜索中的文献来源】来搜索文章),或者是有些小伙伴直接把代码报错贴给我,问我咋回事。
2023-10-28 09:13:28 840 5
原创 运行 Python 脚本/代码的几种方式
哈喽大家好,我是咸鱼我们知道,python 脚本或者说 python 程序其实是一个包含了 python 代码的文件。要让它们实现特定功能,我们需要知道该如何运行(run)它通过运行 python 代码,我们可以验证脚本/程序是否按照我们的期望执行。这也使我们能够对其进行测试和调试,以便找到并修复潜在的 bug在 python 中,有多种方式来运行脚本或程序,取决于小伙伴们的需求和偏好,毕竟萝卜青菜各有所爱接下来,咸鱼将介绍几种常见的 python 代码运行方式。
2023-10-25 19:27:49 1456
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人