RPM 包构建指南
二进制构建RPM 包什么是 RPM 包?RPM(Red Hat Package Manager)是一种用于 Linux 发行版的软件包管理系统和文件格式。RPM 包通常以 .rpm 为扩展名,包含了预编译的软件、安装脚本、元数据信息以及依赖关系等。
RPM 包的主要特点
标准化安装:提供统一的安装、升级、卸载流程
依赖管理:自动处理软件包之间的依赖关系
版本控制:支持软件包的版本管理和回滚
完整性校验:通过数字签名确保软件包的完整性和安全性
跨平台支持:可以在不同的 Linux 发行版(如 RHEL、CentOS、Fedora、openSUSE 等)上使用
为什么需要构建 RPM 包?
企业部署:在企业环境中,通过 RPM 包可以快速、标准化地部署软件
版本管理:便于跟踪和管理不同版本的软件
自动化运维:可以与自动化工具(如 Ansible、Puppet)集成,实现批量部署
软件分发:通过搭建私有软件源,可以方便地在内网中分发软件
接下来,我们将介绍如何从二进制文件构建 RPM 包,这里我们用 JuiceFS 举例。
第 1 步:安装构建工具1yum install rpm-bui ...
K8S JuiceFS 镜像 Smoke Test
JuiceFS 在 K8S 上的部署一般通过打包镜像的方式,这与目前 JuiceFS 在集群的部署方式有关。当前 JuiceFS 使用的是 CSI 存储卷的方式,这也是 JuiceFS 官方推荐的部署方式之一。
这里首先需要对 CSI 有一定的了解。
背景介绍CSI 介绍
CSI (Container Storage Interface) 是一个行业标准规范,它定义了一套标准的接口,让任何存储系统(如云硬盘、本地存储、网络文件系统等)都能以统一的方式接入到容器编排系统(如 Kubernetes)中。
CSI 最大的作用就是将存储驱动的逻辑从 K8S 的核心代码中分离出来,成为 K8S 的插件,避免每次增加存储驱动都必须重新开发 K8S。
CSI 通过一套基于 gRPC 的 API 规范来实现分离。一个完整的 CSI 驱动通常由两部分组成:
Controller Plugin
负责存储卷的“管理”操作,这些操作不依赖于任何特定的节点。例如:
创建/删除卷 (CreateVolume / DeleteVolume) :当用户请求一个新的持久卷时,它会调用底层存 ...
K8S 权限管理 RBAC
核心思想:RBAC 是什么?简单来说,RBAC 是一种“谁(Who)能对什么(What)资源执行哪些(Which)操作”的授权模式。
想象一下公司的门禁系统:
谁 (Subject) :你(员工)、某个部门(例如“研发部”)、或者一个机器人(例如“CI/CD流水线”)。
能做什么 (Verbs) :进入、离开、锁门、开灯等操作。
什么资源 (Resource) :研发部的办公室、服务器机房、一楼大厅等。
RBAC 就是 Kubernetes 世界里的这套“门禁系统”,它通过 API Server 控制着对集群内所有资源的访问权限。
RBAC 的四大核心组件RBAC 主要由四个核心的 API 对象组成,理解了这四个对象,你就掌握了 RBAC 的精髓。它们两两一组,分别负责“定义权限”和“授予权限”。
1. 定义权限 (Permissions)这部分定义了“可以做什么”的规则集合。
Role (角色)
作用域:命名空间级别 (Namespaced) 。
描述:一个 Role 只能定义对某个特定命名空间内 的资源进行操作的权限。例如,创建一个名为 pod-reade ...
2024年终总结
总结写得稍微晚了一点,已经是2025年了,因为最近正值论文提交,挤出点自己的时间属实不易。但无论如何,在岁末年初这个节点,对2024一整年写点总结还是十分有必要的。以前似乎并没有这个习惯,但现在愈发觉得还是写会更好,趁年末回顾过去,总结经验,以期未来会更好。
去年的时候好像也给自己定下些kpi,要求每周或每月都要有点文字上的产出,不能把精力都给老板打工干活了。但写作确实不容易,好些年没正经写过文章,如今只会写写实验报告和论文那些没用的废话,正经句子是有点令我抓耳挠腮。毕竟文字与文字之间亦有差异,报告那种东西实在不是文章,可能我写的这些没用的玩意会离文章更近一点。不过也不用搞成什么文章,写成日记就可以了,这也是我一直以来的目标,以后定是要努力贯彻。必须贯彻。
回顾这一年,如果想用一个字形容,高度概括一下我这一年有何感受,我想选“苟”这个字。这个字含义很多,实在适合形容这一年的我。下面借含义详细回顾下。
苟——菜苟,菜也。
《玉篇·艸部》
苟菜是什么,我也不是很清楚,反正是一种菜罢了。比较巧的是,我也挺菜的,so形容我实在合适不过。所谓菜体现在许多方面,但最主要的体现,便是在今年最重要的 ...
C++选手秋招总结
本文最早发表于牛客,自认为写得颇为用心,因此将其转载到个人博客。
秋招进行到现在终于能写总结了。完全没想到战线会拉这么长,过程会如此狼狈,不过更应该怪自己太菜了。好在所有的运气都用在了最后,也是有个去处。
背景:双2本硕科班,无竞赛,本科一段研究所实习,硕士一段大厂暑期实习但无转正。技术栈是C++ & Golang,实习是客户端音视频(而且是鸿蒙端开发),简历两个C++项目一个Golang项目
主要投递岗位:后端,cpp软开,游戏服务端,测开,以及一些不拘泥于Java的岗位
从8月起总共投递123家公司,笔试数不清了,约面大约30家
offer/oc/意向:友塔游戏(第一个offer,面试体验很好,就是给钱好少南瑞继保(计算机科班点击就送,不少同学签了万得Wind(听说wlb,但是风评很差深信服(感谢最佳雇主开出来的仨瓜俩枣吉比特/雷霆游戏(工具链开发,工作强度wlb,就是钱不多中兴(AI相关,但钱少还pua,约面巨晚,一直问我能不能接受996作业帮(核心部门,面试体验还行,但最后开出来个烂白菜OPPO(岗位还行,但是不想去荣耀(本来南京b ...
C++17 实现简易线程池
看到有些面经说被要求手撕线程池啊,多少有点吓人
所以感觉准备了一下,虽然感觉也背不下来 QAQ
C++17 实现,纯代码 80 行左右,可以实际运行,参考文献在文末。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119#include <iostream> #include <thread> #include <condition_variable> #include <mutex> #include <vector> #include <future> #inc ...
常用设计模式
设计模式策略模式策略模式定义算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立与使用算法的客户。
主要组成部分:
策略接口,定义算法的接口,通常是一个具有执行方法的接口
具体策略,实现策略接口的具体算法
上下文,持有一个策略类的引用,实际调用算法接口的方法
优点:
避免开闭原则,可以在不修改现有代码的情况下引入新的策略
避免使用多个条件判断,通过策略类来替代条件判断语句
提高代码的可维护性和可读性
缺点:
增加对象数目
客户端必须知晓所有策略
观察者模式观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会受到通知并自动更行。
主要组成部分:
主题(被观察对象),是指被观察的对象。它提供了注册、移除和通知观察者的方法
观察者,定义了一个更新接口,用于接受主题的通知
具体主题,实现了主题接口,维护了一个观察者列表,当它的状态发生改变时,通知所有注册的观察者
具体观察者,实现了观察者接口,以便接受主题的通知并进行相应的更新
优点:
解耦,观察者模式将观察者与被观察者解耦,使他们可以独立变化
灵活性,可以在运行时增加或者删除观察者
...
记大厂离职
封面是离职当天拍摄的科兴科学园。
悠哉悠哉,混了两个多月后,终于从鹅厂离职了。
离职的一个原因其实也很简单,感觉转正无望,实习又学不到什么东西,就只好润了。今年公司实习生非常多,水平也很高。原以为自己这两个月工作量应该不少,但奈何如今内卷成风,临近转正代码 CR 时才知道其他组里实习生居然做了那么多工作,更有甚者已经在部门级别的分享会里做汇报了。我这工作量顿时显得单薄,还是别去当炮灰了。
不过感觉太卷了只是一个原因,如果仅仅是卷的话我还是会参加一下。但部门这边答辩时间的一拖再拖我真是没法忍了。本来说八月中旬答辩,到八月后又说八月下旬答辩。直到我离职的时候还不知道具体的答辩时间。今日和同组实习的同学吃饭时才得知,最后答辩时间被拖到了 9 月初,这还答辩啥啊。今年秋招又比往年提前,这出结果黄花菜都凉了。同学最终也选择了放弃答辩,不过他是本科生,可以回去读研。我顿时又有些羡慕,可惜自己不能再找地方多躲几年。
从互联网实习感觉收获还是挺多的,毕竟之前一直在学校小作坊打工,第一次接触到正式公司的业务开发流程,感慨颇多,读研的时间果然大部分还是浪费了。在公司做业务感觉最重要的还是产出,不仅仅是 ...
记大厂打工
今天深圳风确实很大,把我脖子上的工牌吹得飞起,还好带子够长,不会打到脸上。虽然已经在厂里打了三星期的工,但这工牌还是戴不习惯,就像西装的领带,总像是有个无形的大手在牵着我。我也挣扎不了,只能随它去了,牵着就牵着吧,反正被牵着也不是一天两天了。
总的来说大厂实习过得还是可以,起码比在学校给老板打工要舒服。公司里不会大周末的找我干活,也不会晚上十一点给我发消息。资本家虽然会剥削,但是先进的生产关系带来的生活质量的改善还是肉眼可见,比手工作坊或者师徒行会要强多了。感觉现在除了因为没毕业还有学校的乱七八糟的事要操心,每天最大的烦恼就是午饭和晚饭吃什么。所以赶紧毕业吧,这研究生真不是人读的。不过我都被人牵着了,读得难过也是理所当然。
哦,每天烦恼的事还有早上起来上班,一个是早上根本起不来,另一个是选择什么交通工具上班。起不来很好理解,我打赌没人大早晨想到今天要上班能高兴地从床上蹦起来;交通工具的选择就更复杂了,是坐公司的班车,还是公寓的班车,还是公交,或者是打车,每天早上都要思考一下。还是住的离公司有点远,以后租房必须要在地铁旁边。
今天还收到了两个公司的邮件,一家给我发的是感谢信,这是我暑期实 ...
Windows 自动运行连接校园网的 Shell 脚本
因为最近在用教研室的电脑挂 PT 站,然而学校拨号上网居然不给分配 IPV6 地址,只好连无线 AP 了。但是校园网总是没事就掉一下,有点恶心。
早些日子写了一个登录校园网的 Shell 脚本,本来是用在 OpenWrt 路由上的,这回把这脚本拿到了 win 上用。
校园网登录脚本之前没事干看了很久校园网的登录界面代码,发现校园网的认证逻辑还是挺奇怪的。
校园网认证登录
Post 到服务器,获取 Challenge 码
对 Challenge 码和 password 进行处理,得到一个 md5 加密后的密钥
将密钥和用户名、Challenge 码一起 Post 发给服务器,登录成功
获取 Challenge 码照着浏览器抓取的请求一顿抄:
123456789101112131415RESULT=$(curl 'http://m.njust.edu.cn/portal_io/getchallenge' \ -X 'POST' \ -H 'Accept: application/json, text/javascript, */ ...




.jpeg)



.jpg)
