/android-chrome-192x192.png

ImCBC

自由 分享 合作

  

使用OrLike为博文添加点赞系统

本文介绍了如何使用OrLike插件为博客添加点赞系统,详细说明了插件的功能特点、部署方法以及在页面中嵌入点赞功能的步骤。OrLike基于LeanCloud和Vercel,支持用户隐私保护、点赞/踩功能、加载动画和自定义图标等。文章提供了完整的代码示例和配置参数说明,并建议使用私有服务器地址以确保数据安全。此外,还介绍了如何在Hugo博客中集成OrLike插件。

初探Linux文件和文件系统

本文系统地介绍了Linux文件和文件系统的基本概念及其实现原理,包括文件权限、inode、block、super_block和dentry等核心结构。通过对ls、stat等命令的解析,作者详细说明了文件权限的设置和目录的权限影响。文章还探讨了文件在磁盘上的存储方式,分析了链式存储和树状存储的优缺点,并深入剖析了inode与block的多级指向关系。此外,作者还介绍了虚拟文件系统的inode结构及其与文件系统的关联,阐述了pipe的实现机制和缓存原理。文章通过代码示例和图解,帮助读者理解文件系统的底层逻辑,为深入学习Linux文件系统提供了清晰的思路。

使用vercel和easycron实现自动部署

本文介绍了如何使用Vercel和EasyCron实现自动部署的详细方法,适用于定时拉取RSS内容等场景。文章首先讲解了在Vercel中设置Deploy Hooks以触发部署的步骤,然后介绍了通过EasyCron设置定时任务访问Hook链接的方式。此外,还提到可以通过GitHub Webhooks实现事件触发的自动部署。最后总结了Vercel的Deploy Hooks功能及其与EasyCron的结合使用方法。

进程控制和通信(一) · 进程控制

本文介绍了Linux中进程由PCB(task_struct)管理,包含任务ID、亲缘关系、状态、权限、调度信息、信号、内存、文件系统等内容。通过fork实现进程复制,采用写时复制(COW)技术共享资源,只有在写操作时才复制内存,减少资源浪费。glibc提供fork、vfork、clone等函数创建进程,fork复制父子资源互不干扰,vfork父进程阻塞等待子进程,clone功能更强大,可实现线程。作者还演示了fork和vfork的使用及其区别,分析了clone的实现机制,强调了进程控制的核心在于操作PCB和利用不同的复制策略。

进程控制和通信(二) · 管道通信

本文详细介绍了进程间通信(IPC)的多种方式,包括匿名管道和具名管道(FIFO)。匿名管道通过内核空间的缓存区实现父子进程间的单向或双向通信,具名管道则通过文件系统中的特殊文件支持不同进程间的通信。文章分析了管道的容量、原子性及阻塞行为,并通过C语言代码示例展示了如何使用pipe和mkfifo函数创建管道及进行读写操作。此外,文章还探讨了管道的全双工实现及其在Linux系统中的应用场景。

private不保证安全

本文探讨了C++中private关键字的局限性,指出通过指针偏移可以访问和修改private成员变量的内容。作者通过代码示例展示了如何利用reinterpret_cast实现对private成员的读取和修改,强调了private关键字仅提供了访问限制而非真正的安全性。文章提醒开发者在设计类时需注意这种潜在的安全隐患。

const和constexpr

本文对C++中的const和constexpr进行了详细解析,阐明了两者的区别和使用场景。const用于修饰只读变量,而constexpr则用于修饰编译期可确定的常量。作者通过代码示例说明了const的只读特性和constexpr在编译期计算的能力,并探讨了constexpr函数的限制条件。文章还强调了显式行为的重要性,建议开发者在代码中尽量避免隐式行为,以提高代码的可读性和安全性。

C++闭包

本文详细探讨了C++中闭包的概念及其实现方式,尽管闭包在C++中并不常见。文章通过代码示例展示了如何在C++中使用lambda表达式实现闭包,并解释了闭包的核心原理,即内层函数可以访问外层函数的变量,即使外层函数已返回。作者还深入分析了lambda表达式的语法,包括捕获变量、形参的使用,以及其在代码片段打包、自定义排序和回调函数中的应用。此外,文章还揭示了lambda表达式在编译时的展开过程,展示了其被编译器转化为类的机制,并探讨了lambda表达式在编译期计算的可能性,尤其是在C++17标准中支持constexpr的情况下。通过丰富的代码示例和详细的讲解,本文为读者提供了深入理解C++闭包和lambda表达式的实用指南。

数据结构与算法之位图

本文介绍了位图的概念及其在内存优化中的应用,解决了大范围数字流中判断数字是否出现的问题。通过对比不同解决方案,重点讲解了位图的实现原理,使用C++标准库中的bitset进行操作,并分析了其内存分配特点。文章提供了代码示例,展示了位图的基本操作和应用场景。

博客部署到vercel

本文介绍了将博客部署到Vercel的流程及其与GitHub Pages的集成方式。作者通过GitHub Actions实现自动编译,将生成的静态文件发布到阿里云OSS和GitHub Pages,同时触发Vercel的自动部署。由于博客源码采用Git Submodule组织,直接使用Vercel部署存在困难,因此通过GitHub Pages作为中间桥梁解决了这一问题。文章还详细说明了部署过程中使用的Deploy Key配置方法,展示了如何高效管理和优化博客的多平台部署。