- 博客(31)
- 资源 (3)
- 收藏
- 关注
原创 Linux进程间通信之消息队列
消息队列是一种System V IPC机制,允许进程通过消息进行通信。每条消息包含类型和正文,接收方可按类型选择性接收。消息队列由内核维护,具有持久性直到显式删除。主要特点包括:消息边界明确、一对一消费模式(消息被接收后即删除)、任意进程间通信。通过msgget()创建队列,msgsnd()发送消息,msgrcv()接收消息。1对多通信需发送多条不同mtype的消息。系统调用包括msgget()、msgsnd()、msgrcv()和msgctl(),分别用于创建、发送、接收和控制消息队列。
2025-12-10 15:06:23
788
原创 Linux进程间通信之命名管道(FIFO)实现篇
本文基于 Linux 2.6.12 内核分析 FIFO(命名管道)的实现机制。FIFO 复用普通管道的读写路径(fs/pipe.c),主要区别在于创建/打开语义和 inode 持久性。关键数据结构包括 pipe_inode_info(含固定16个缓冲区)和分离的读写操作结构(read_fifo_fops/write_fifo_fops)。创建流程通过 sys_mknod() 建立 S_IFIFO 类型 inode,首次 open() 时初始化管道缓冲区。
2025-12-10 14:13:52
613
原创 Linux进程间通信之命名管道(FIFO)
命名管道(FIFO)是一种特殊文件,允许任意进程通过文件系统路径进行通信。它通过mkfifo()创建,支持阻塞和非阻塞模式操作。FIFO具有单向通信特性,数据在内核缓冲区传输,不写入磁盘,性能接近普通管道。优点是跨进程通信简单高效,缺点是单向传输且需处理阻塞问题。适用于需要简单进程间通信的场景,但不适合复杂消息传递需求。
2025-12-09 17:08:07
658
原创 Linux进程间通信之管道(pipe)实现篇
Linux 内核中管道的实现机制涉及文件系统、VFS 和内存管理等核心子系统。其核心数据结构是 pipe_inode_info,包含环形缓冲区、读写指针和同步机制等组件。管道使用 16 页(64KB)的环形缓冲区存储数据,通过 head/tail 指针管理读写位置,并采用互斥锁和等待队列实现同步。
2025-12-09 16:47:46
777
原创 Linux进程间通信之管道(Pipe)
Linux管道机制摘要 管道是Linux中基本的进程间通信方式,主要用于有亲缘关系的进程间单向数据流传输。其核心特性包括:单向性、FIFO顺序、阻塞机制和64KB的默认缓冲区。通过pipe()系统调用创建管道,返回读写两个文件描述符。父子进程通常各关闭一端实现单向通信。相关API包括read()/write()进行数据传输,fcntl()设置非阻塞模式,close()关闭描述符。典型应用场景如父子进程通信,示例展示了父进程写入、子进程读取的基本模式,以及非阻塞I/O的实现方法。管道简单高效,但仅限于亲缘进程
2025-12-08 16:07:35
665
原创 TCP连接状态详解/同时打开Simultaneous Open
TCP连接建立与终止过程详解:本文系统介绍了TCP协议连接状态转换机制,包含三次握手和四次挥手全过程。TCP连接经历11种标准状态,包括CLOSED、LISTEN、ESTABLISHED等基础状态,以及FIN_WAIT、TIME_WAIT等重要过渡状态。特别分析了CLOSING这种双方同时关闭的罕见状态特征,并配有时序图和状态转换图说明。对于连接建立过程,详细描述了从CLOSED到ESTABLISHED的三次握手状态转换;对于连接终止,则完整展示了主动/被动关闭方的四次挥手流程,重点解释了TIME_WAIT
2025-09-01 17:23:08
804
2
原创 Linux ARP老化机制/探测机制/ip neigh使用
Linux ARP状态机与老化机制解析 Linux内核中的ARP协议采用状态机机制管理邻居可达性,包含8种核心状态:NUD_INCOMPLETE(解析中)、NUD_REACHABLE(可达)、NUD_STALE(陈旧)、NUD_DELAY(延迟)、NUD_PROBE(探测)、NUD_FAILED(失败)、NUD_NOARP(无需ARP)和NUD_PERMANENT(永久)。状态转换通过基础时间参数(如30秒可达时间)和探测参数(3次重试)控制。主机在四种场景下会发送ARP报文:地址解析、状态维护、冲突检测和
2025-09-01 17:01:53
1239
原创 ET模式+非阻塞I/O+EPOLLEXCLUSIVE深度解析
摘要:ET模式+非阻塞I/O+EPOLLEXCLUSIVE提供高效并发处理方案。ET模式仅状态变化时触发,减少epoll_wait唤醒;非阻塞I/O确保数据完整读取,避免线程阻塞;EPOLLEXCLUSIVE解决惊群效应,确保单线程处理事件。三者协同显著降低CPU占用和锁竞争,适用于Web服务器等高并发场景。需注意必须配合非阻塞I/O循环读取至EAGAIN,并合理处理事件重注册和异常情况。
2025-08-25 11:51:00
770
原创 python+vue扫盲
在 Python + Vue 的开发模式中, Node.js 的作用是作为 Python 的后端服务器,用于处理 Python 的请求和响应,同时与 Vue 进行通信以实现动态数据更新和页面渲染。通过此架构,项目既保留了 Vue 的现代开发体验,又利用了 Python 后端的简洁部署能力,适合中小型应用的快速开发。即使后端是 Python,构建 Vue 的生产静态资源(HTML/CSS/JS)也需要 Node.js 运行。:单页应用(SPA)、大型动态应用、跨平台开发(React Native)
2025-08-14 16:17:22
1184
原创 IP/掩码地址转换
IP/掩码格式转换的方案子网掩码位数转换为点分表示#!/bin/ashprefix_to_mask() {num=$((4294967296 - 2**(32-$1)))for i in `seq 3 -1 0`doecho -n $((num / 256**i))num=$((num % 256**i))if [ "$i" -eq "0" ]; thenechoelseecho -n .fidone}# examplemask=$(
2020-08-20 13:55:11
1004
原创 SaltStack安装及入门
SaltStack安装及入门简介SaltStack简称salt,是一个配置管理工具,类似Ansible、Chef和Puppet,可以用脚本批量操作多台机器。有如下几个特点:部署简单、方便;支持大部分UNIX/Linux及Windows环境;主从集中化...
2020-01-15 17:09:33
374
原创 Ubuntu桌面图标快捷方式以root用户启动
Title: Ubuntu桌面图标快捷方式以root用户启动(16.04)与桌面图标相关的几个文件夹/usr/share/icons 系统图标文件夹/usr/share/applications 系统快捷方式文件夹~/.local/share/applications 用户菜单文件夹~/.local/share/icons 用户图标文件夹点击图标以root用户运行程序很多应用程序在...
2019-06-03 11:01:51
8472
2
原创 Ubuntu 64位编译32位程序
title: Ubuntu 64位编译32位程序背景一般情况下,一个平台上只能编译当前平台对应的应用程序,比如,64位平台编译64位应用程序,但是随着64位平台的普及,多数采用了64位操作系统,而有时又基于某些原因需要编译出32位的应用程序.本文旨在说明如何在64位操作系统上编译出32位应用程序.准备确认主机为64位架构的内核,应该输出为amd64$ dpkg --print-ar...
2019-05-20 17:39:24
2764
原创 lua字节码混淆与反编译
title: luadec相关的一些总结背景在做openwrt相关的路由器时,为了更好的保护lua脚本的代码,通常会选择采用luac进行混淆,这样就需要稍微研究一下如何进行混淆和解密。本文所使用的混淆是lua源代码中带的luac,解密采用的是viruscamp/luadec 的解密工具。混淆、解析和反编译的前提是对文件格式的定义是一致的,因而一般需要把格式定义在lua解释器的源码中,并在适当...
2019-05-20 17:21:27
13156
原创 python获取当前系统类型:os.name, sys.platform, platform.system对比
在很多情况下,需要在python中获取当前系统的类型,用于判断是unix/windows/mac或者java虚拟机等,python中提供了os.name, sys.platform, platform.system等方式,但是起初并不知道各个函数之间的区别以及在什么情况下用那种。函数简介首先,分别对每个函数进行说明,明确其提供的能力,以及如何使用。os.name官方文档(v...
2018-08-10 11:14:51
24209
2
原创 python学习笔记(七)---多线程
依据廖雪峰官方网站的python教程整理 #!/usr/bin/env python3# -*- coding: utf-8 -*-__author__ = "KingRumn"''' 多线程编程,'''import timeimport threading# Python的标准库提供了两个模块:_thread和threading,# _thread是低级...
2018-08-06 14:22:44
300
原创 python学习笔记(六)---多进程
依据廖雪峰官方网站的python教程整理 fork进程import os# 多进程# Unix/Linux操作系统提供了一个fork()系统调用,os.fork()封装了fork系统调用,windows系统无法使用'''print('Process (%s) start...' % os.getpid())pid = os.fork()if pid == 0: ...
2018-08-06 14:22:17
348
原创 python学习笔记(五)---基础IO操作
依据廖雪峰官方网站的python教程整理 #!/usr/bin/env python3# -*- coding: utf-8 -*-__author__ = "KingRumn"''' 基础IO操作 文件读写、StringIO、BytesIO、文件和目录操作、序列化'''from io import StringIOfrom io import Byte...
2018-08-06 14:21:46
286
原创 python学习笔记(四)---高级OOP
依据廖雪峰官方网站的python教程整理 #!/usr/bin/env python3# -*- coding: utf-8 -*-__author__ = "Kingrumn"''' 高级OOP __xx__ 特殊属性的用法 枚举类 元类 多重继承'''from enum import Enum, unique# 正常情况下...
2018-08-03 09:51:57
318
原创 python学习笔记(三)---类与多态
依据廖雪峰官方网站的python教程整理 #!/usr/bin/env python3# -*- coding: utf-8 -*-r''' 类: 类和实例,访问控制,继承、多态'''__author__ = "Kingrumn"import types# 定义类# 通过class关键字定义类# class后面紧接着是类名,即Student,类名通常是大写开...
2018-08-03 09:26:23
277
原创 python学习笔记(二)---高级特性
#!/usr/bin/env python3# -*- coding: utf-8 -*-r''' 高阶知识 lrn_higher_list: 切片、迭代、列表生成式、生成器、迭代器 lrn_higher_func: 函数式编程,修饰器、匿名函数、筛选器等'''__author__ = 'Kingrumn'''' 第1行和第2行是标准注释,第1行注释...
2018-08-02 15:49:09
372
原创 python学习笔记(一)---基础知识
依据廖雪峰官方网站的python教程整理 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000#!/usr/bin/env python3 # 首行必须指明所需要的解释器,否则无法通过./xx.py的方式执行# -*- coding: utf-8 -*- ...
2018-08-02 15:48:04
667
原创 hexo 简介
基本介绍Hexo是一个快速/简洁/高效的博客框架,使用Markdown作为渲染引擎解析文章,结合丰富的主题,分分钟生成绚丽的静态网页,是博客写作的首选。.├── _config.yml # 站点配置文件├── node_modules # 中间产物├── package.json # 应用程序信息,包括markdown渲染器等├── public ...
2018-08-02 15:44:04
1418
原创 hexo 添加标签和分类
整个过程分类 与 标签 极其类似,只需要将对应的categories换成了tags 即可创建页面新建一个页面命名为categories$ hexo new page categories #tags编辑页面编辑新建的页面source/categories/index.md---title: 分类date: 2018-04-25 22:34:08...
2018-08-02 15:42:49
7653
2
原创 利用hexo+googlepages搭建个人博客
背景各种各样的博客五花八门,但是利用github构建个人看起来很有逼格,在其他地方积累的并不多,因此花了2天的时间研究了一下如何依靠github构建个人博客。 - 主流的个人博客工具包括hexo,jekyll,wordpress等,具体的优劣建议参考:https://www.jianshu.com/p/c4f145fdd637 - 个人最终选择了git + github + hexo的方案...
2018-08-02 15:40:46
510
原创 Ubuntu 使用记录
安装Ubuntu操作系统是个费事费力的活,把一些基本的记录放在这里,便于以后参考背景DISTRIB_ID=UbuntuDISTRIB_RELEASE=16.04DISTRIB_CODENAME=xenialDISTRIB_DESCRIPTION="Ubuntu 16.04.4 LTS"切换软件源备份并替换/etc/apt/sources.list的源内容(/et...
2018-08-02 15:37:46
528
原创 vim复制内容到剪贴板
问题背景VIM使用过程中需要将内容直接复制到系统剪贴板,使用场景:在vim编辑过程中,需要将某些内容直接复制,并粘贴到博客或gedit中;在2个窗口中分别用vim编辑,此时无法通过vim操作完成,只能借助系统剪贴板解决方案判断支持性首先需要检查vim是否支持系统剪贴板$ vim --version | grep "clipboard"> -clip...
2018-08-02 14:43:43
2872
原创 修改rm命令以避免误删
问题重现是否碰到过如下情况:写了一个月的代码,没有做本地提交,手滑来了个rm -rf,然后就没有然后了。并没有注意一个名叫~的文件夹,有一丢丢洁癖的自己习惯性的rm -rf ~,一回车,世界突然安静。… …大概的解决方案都是1. 找个地方,2. rm改为mv, 实现rm时把文件直接mv到这个地方,3. 提供清空回收站/查看回收站文件/找回误删文件等的操作。基本需求基...
2018-08-02 14:27:41
1020
原创 Yolo安装(Ubuntu14.04)
最近在同事的建议下想要学习一下深度学习的知识,作为环境搭建的第一步,配置Yolo环境。电脑不支持CUDA,该环境仅用来学习,故未对CUDA进行配置和支持。 在环境配置过程中也遇到一些问题,记录以作参考。经验总结做一件事的时候,最基础的是去官网按照说明走一遍,往往这才是最官方的,也是最正确的,出了问题才去其他地方寻找答案如果开源的代码出了问题,不妨先在Github上搜一搜看看有没有...
2018-08-02 14:24:42
1569
2
原创 win7+vs2010下开发32位和64位程序glut配置方法
虽然做了一段时间OPENGL的开发,博主仍然算是一个小菜,最近折腾glut配置开发64位的程序,差点折腾死我。把我的经验写下来,仅供参考,也可以防止后来人犯同样的错误。一、glut库的下载。32位版的很好找,网上一找一堆,可是64位版的相对比较难找,更有人说glut不支持64位的开发,搞的小菜一度想放弃。就在我快要放弃的时候,一个大神跳出来跟我说,纳尼,谁说没有64bit的??!!不多...
2014-01-02 17:09:12
8101
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅