建站指南

建站指南

如果你想搭建跟博主一样的博客,那么请参考此建站指南

Markdown语法介绍

github风格的markdown语法介绍


UNIX-C编程

内存数据库设计

可变参数处理函数getopt_long用法解析

pppd源码详解二 --(discovery 连接)

本文对pppd源码(discovery 连接)流程进行解读

Linux之 /proc/<pid>/pagemap 理解

/proc/pid/pagemap对于一个进程虚拟地址到物理地址映射的描述,这里包含了该进程所有用到的虚拟地址空间的映射描述信息

pppd源码详解一 (插件加载)

本文对pppd源码插件加载流程进行解读

pppd源码详解三 ---(ppp协议处理)

本文对pppd源码(ppp协议处理)流程进行解读

getopt_long用法

可变参数处理函数getopt_long用法解析

Pagemap Interface of Linux Explained

trying to explain the pagemap interface which is used to explore the mapping information of physical memory.

RAW socket使用方法

raw socket,即原始套接字,可以接收本机网卡上的数据帧或者数据包,对于监听网络的流量和分析是很有作用的


网络技术

IP地址知识点总结

IP地址分类方法、掩码作用等

DHCP协议详解

DHCP协议报文格式详解

8021q 协议

8021q协议报文格式详解

组播

Linux组播相关知识点总结

PPPoE 协议

PPPoE协议报文格式详解

ARP协议

ARP协议报文格式详解

链路层协议

链路层协议报文格式详解

VLAN概念

资料来自华为交换机s2300技术资料

MAC和PHY概念

数据链路层/物理层的关系


VPP技术

VPP host-interface 实验

CentOS Linux release 7.5.1804 (Core),VPP-tag-19.089

VPP 编译、安装、运行

VPP 编译、安装、运行总结

VPP 二层桥接测试

CentOS Linux release 7.5.1804 (Core),VPP-tag-19.089

PP三层转发测试

CentOS Linux release 7.5.1804 (Core),VPP-tag-19.089

VPP之NAT功能测试

CentOS Linux release 7.5.1804 (Core),VPP-tag-19.089

VPP流表

CentOS Linux release 7.5.1804 (Core),VPP-tag-19.089

VPP - node图

CentOS Linux release 7.5.1804 (Core),VPP-tag-19.089

VPP编译错误'package python36-devel is not installedpackage'

编译错误处理"Please install missing RPM,spackage python36-devel is not installedpackage python36-pip is not installed"


数据库


SHELL命令

反向shell

反向shell的工作方式是远程计算机将自己的shell发送给特定的用户,而不是将shell绑定到一个端口上

GCC之'__attribute__'用法

GCC关键字 __attribute__ 用来对变量、函数、结构体、联合体和C++类成员进行一些特殊属性设置

Linux dump crash工具使用

内核 kdump 是一个强大的内核调试工具,你可以这么理解,当 linux内核崩溃时,这个 kdump工具可以将崩溃现场完整的保存下来,也就是内核崩溃时系统的运行状态及各种堆栈信息

git clone/add/diff

Git命令 clone、add、diff

iptables 命令详解

iptable命令常用功能使用方法总结

GDB常用命令

这里罗列一下GBD调试使用的常用命令

git 制作patch,打patch

使用git可以制作标准的patch,对于项目中代码管理非常方便。主要用到format-patch/apply

ip命令

linux中ip命令越来越强大,它几乎集中了所有网关相关的功能。会使用ip命令就够了!


LINUX内核

内核GPIO系统理解

linux内核中对于硬件平台的GPIO口的管理已经标准化了,目前通过gpio子系统和pinctrl子系统可以本方便的将所有GPIO进行配置管理。对驱动工程师而言,完全可以不关注board相关的内容,只需要知道“我要使用哪个GPIO,我要干什么”,然后直接request、set等操作,可以更加专注应用层面的逻辑,无需关心偏底层的细节了。

Linux内核驱动层架构

linux内核中对于硬件相关的部分都构建了框架,驱动工程师和BSP工程师分属框架的两端,彼此不需要关心对方的实现细节,只需要通过框架API来联系。这种做法让擅长硬件的BSP工程师更能专注于硬件接口,驱动工程师则不需要关注太多硬件层面的东西,大大减轻了驱动工程师的工作量。

linux中断子系统---中断处理流程

linux中断处理流程分为上半部和下半部,上半部程序退出后会唤醒下半部程序,然后下半部会在合适的时机执行

linux中断子系统---preempt_count

preempt_count是一个32bit的整数,内核把这32bit分开来作为中断的各种标记,用来判断当前所处的终端上下文,以及是否有中断程序再执行

linux中断子系统---为什么中断上下文不能执行可能睡眠操作的操作?

内核运行在中断上下文时,内核无法进行调度,所以一旦存在睡眠,内核就不知道该干啥了,调度系统傻了,就panic了

内核链表1--双向链表使用

内核开发者们设计了一套高效的链表操作方法,高效而简洁,直接拿来使用,不要重复造轮子

内核链表2---hash链表

内核开发者们设计了一套高效的链表操作方法,高效而简洁,直接拿来使用,不要重复造轮子

linux网桥系统---相关数据结构

linux网桥是一个虚拟网络设备,网桥下可以挂接实接口、vlan虚接口,网桥可实现实现二层转发功能

linux网桥系统---bridge下能否二层隔离?

同一bridge下不同vlan虚接口和不同bridge下子接口能否二层隔离?如果不能,为什么?如果能,如何实现的?

Linux网络协议栈--关键流程

linux内核实现了TCP/IP协议栈,整个实现机制扩展性非常强。使用者也能非常方便的添加自己的协议栈。


系统和服务

isc-dhcpd 搭建dhcp服务器及配置文件详解

ISC DHCP offers a complete open source solution for implementing DHCP servers, relay agents, and clients.

使用abrt监控程序coredump

在UNIX系统中,常将“主内存”(main memory) 称为核心(core),因为在使用半导体作为内存材料之前,便是使用核心(core)。而核心映像(core image)

ABRT 是什么?

ABRT 是一个工具集,用于检测和报告应用程序的crash信息;它主要的目的是协助处理问题并找到解决方案

搭建gitlab server

搭建gitlab server 服务器

高速缓存(cache)的工作原理

计算机CPU的速度和主存的速度差距越来越大,这样对计算机的快速工作产生很大的影响。而高速缓存(cache)的出现大大缓解了这个局面。

网卡命名规则法

收藏的网卡命名规则

网络数据包丢包问题排查方法

收藏的网络数据包丢包问题排查方法

Linux性能调节之IRQ/RPS

使用irqbalance/smp irq affinity/rps,rfs 技术进行网络性能调节

FTP协议工作原理

FTP协议有主动模式 和被动模式之分,那么这两种模式有什么区别? 各个模式的应用场景是什么样的? 使用中有哪些注意事项? 本文主要对这些问题进行详解。

WireShark 插件开发

通常我们再项目开发中会定义私有的协议,当通过wireshark查看网络数据包时,如果能够按照我们协议的格式进行显示,并明确显示协议每一位的含义,那将会是很愉快的一件事情,而不需要再去看网络数据晦涩的二进制

Debain和Ubuntu的关系

Ubuntu是在Debain的基础上进行的深度改造得来的

Docker 基本使用

最近玩了一下Docker,发现确实是个好东西。由于工作环境并不用docker环境,所以自己只是简单使用了一下,这里总结一下基本使用方法,供自己查阅。

Doxygen的使用

Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,完全支持C、C++、Java、Objective-C和IDL语言,部分支持PHP、C#。注释的语法与Qt-Doc、KDoc和JavaDoc兼容。Doxygen可以从一套归档源文件开始,生成HTML格式的在线类浏览器,或离线的LATEX、RTF参考手册。


UBOOT

u-boot启动流程

本文讲解了解uboot的启动流程,才能更透彻理解嵌入式系统的精髓。

uboot源码结构

uboot是和硬件平台紧密相关的,了解其代码结构有助于uboot移植和修改。

u-boot环境变量详解

本文讲解了解uboot中环境变量的值首先采用flash ENV分区中的存储的值,如果分区不存在或者读取失败,那么会采用全局数组default_environment中的值作为默认环境变量


OpenWRT

OpenWRT的feed机制

在OpenWRT中,一个 "feed"就是一系列在同一位置的包的合集。

OpenWrt之package详解一(组成部分)

OpenWrt中package的组成部分及其作用详解

OpenWrt之package详解二(Makefile)

OpenWrt中package的Makefile是OpenWrt系统的精髓,了解了Mkefile的使用,那么可以说基本上就掌握了openwrt下的开发方法了。

netifd代码解读

netifd是Openwrt系统中用于网络配置管理的后端服务进程

OpenWRT之luci界面开发

luci是一套web界面框架,其采用MVC架构。


WIFI开发

SDK编译整理

基于csu2,的release.note整理编译过程


软件工程

有限自动机

有限自动机(finite automata)亦称时序机,有限离散数字系统的抽象数学模型。一个有限自动机M由五元组(X,Y,S,δ,λ)给定,其中X,Y和S都是非空有限集...

简单理解海明码

二进制数据经过传送、存取等环节,会发生误码(1变成0或0变成1),这就有如何发现及纠正误码的问题

java基本知识

软考java基础知识总结

软件设计师考试

软考java基础知识总结

操作系统考点总结

操作系统考点总结

计算机组成与结构考点总结

计算机组成与结构考点总结


项目管理


有趣的灵魂