<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[maylcc的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/maylcc</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; maylcc]]></copyright><item><title><![CDATA[c++ unrar 源码]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/124132286</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/124132286</guid><author>maylcc</author><pubDate>Tue, 12 Apr 2022 19:43:00 +0800</pubDate><description><![CDATA[GitHub - pmachapman/unrar: Unrar source code from rarlab.com
]]></description><category></category></item><item><title><![CDATA[sk_buff结构]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/109181784</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/109181784</guid><author>maylcc</author><pubDate>Wed, 26 Jan 2022 16:27:45 +0800</pubDate><description><![CDATA[可以说sk_buff结构体是Linux网络协议栈的核心中的核心，几乎所有的操作都是围绕sk_buff这个结构体进行的，它的重要性和BSD的mbuf类似(看过《TCP/IP详解 卷2》的都知道)，那么sk_buff是什么呢？
网络分层模型这是一切的本质。网络被设计成分层的，所以网络的操作就可以称作一个“栈”，这就是网络协议栈的名称的由来。在具体的操作上，数据包最终形成的过程就是一层一层封装的过程，在栈上形成一段连续的数据，我们可以称作是一层一层的push操作。同样的，数据包的解封装的过程，则可以认为是一层一层]]></description><category></category></item><item><title><![CDATA[路由器最高速度/性能测试 - Windows 安装 IPerf3 及 使用方法]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/103919660</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/103919660</guid><author>maylcc</author><pubDate>Wed, 26 Jan 2022 16:27:06 +0800</pubDate><description><![CDATA[iPerf 简介

Iperf是一个网络性能测试工具。Iperf 可以测试最大 TCP 和 UDP 带宽性能，具有多种参数和 UDP 特性，可以根据需要调整，可以报告带宽、延迟抖动和数据包丢失。

1. 安装 iPerf

1-1. 下载 iPerf


官方下载链接：https://iperf.fr/iperf-download.php
	蓝奏云下载链接(我上传的版本是：3.1.3)：http...]]></description><category></category></item><item><title><![CDATA[Qt5应用程序动态插件的使用 单独模块制作成插件/动态连接集成到主程序]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/122687754</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/122687754</guid><author>maylcc</author><pubDate>Tue, 25 Jan 2022 17:01:19 +0800</pubDate><description><![CDATA[QT5应用程序动态插件的使用
1 概要

在软件开发中可以将某些独立的功能模块作为插件(编译为库文件)来使用。这样做的插件就可以单独发布和升级而不需要修改主程序。
原理上是使用了C++的多态和QT元对象系统。插件功能的使用要分为主程序和插件程序两个部分。下面进行详细的介绍。
制作可扩展(可调用插件)的主程序，步骤如下：

定义一些列的操作接口(即抽象类，只有纯虚函数)，用于插件内部方法的调用。
使用Q_DECLARE_INTERFACE()宏将步骤1定义的接口进行声明，注册到QT的元对象系统中。
在调用插件]]></description><category></category></item><item><title><![CDATA[rhel 5.5_x64 yum 配置本地光盘镜像源]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/117652472</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/117652472</guid><author>maylcc</author><pubDate>Mon, 07 Jun 2021 10:39:58 +0800</pubDate><description><![CDATA[以下在配置为在 rhel 5.5 64位 上实现yum 光盘源配置，仅供大家参考：

1.
#mount -o loop rhel5.iso /mnt #光盘光盘镜像
#mount /dev/cdrom /mnt #或者直接挂载光盘
2. vi /etc/yum.repos.d/rhel-cdrom.repo ＃创建一个新文件，写入如下内容：
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Client
baseurl=...]]></description><category></category></item><item><title><![CDATA[ubuntu下交叉编译arm内核模块]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/114576500</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/114576500</guid><author>maylcc</author><pubDate>Tue, 09 Mar 2021 10:13:25 +0800</pubDate><description><![CDATA[ubuntu下交叉编译arm内核模块

安装编译环境及下载交叉编译工具：


			1

			2

			3

			4

			5
			
			
			apt-get install gcc make pkg-config git bison flex libelf-dev libssl-dev libncurses5-dev bc

			wget https://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-l]]></description><category></category></item><item><title><![CDATA[VMware设置centos7共享文件夹]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108794379</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108794379</guid><author>maylcc</author><pubDate>Fri, 25 Sep 2020 13:00:34 +0800</pubDate><description><![CDATA[VMware设置共享文件夹

	

	

	

	

	

	运行linux系统，如果以上步骤在linux系统开机的时候进行的则重启linux系统

	输入命令vmware-hgfsclient查看共享目录是否已经设置成功

	
	
	
	安装 VMware Tools
	

	点击安装VMware Tools或更新VMware Tools后， CentOS会自动挂载VMware Tools， 双击打开，将里面的VMwareTools-X.tar.gz复制到桌面上
	




拷贝安装文件到桌面

...]]></description><category></category></item><item><title><![CDATA[C语言插件机制(上)]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108637619</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108637619</guid><author>maylcc</author><pubDate>Thu, 17 Sep 2020 10:37:38 +0800</pubDate><description><![CDATA[前言

插件机制可以使得应用程序在发布之后，在不经过重新编译的情况下修改应用程序的行为，这种形式使得应用的框架比较小巧，也可以给用户一些自由(不是完全的自由，有一定的限制)。Java中，使用*.jar或者其他的脚本引擎都可以完成这样的工作，如Eclipse那样。在C语言中，当然可以使用脚本引擎来实现，比如emacs，内置一个lisp的引擎，用户可以自己为emacs写脚本，访问emacs环境的一些组件，从而定制emacs.这里要讨论的无需使用脚本引擎，而是用C语言访问动态链接库来实现。

Linux下的动态库]]></description><category></category></item><item><title><![CDATA[利用文件头标志判断文件类型]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108470067</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108470067</guid><author>maylcc</author><pubDate>Tue, 08 Sep 2020 15:41:05 +0800</pubDate><description><![CDATA[简介

我们都知道，文件的扩展名是用来识别文件类型的。通过给他指定扩展名，我们可以告诉自己，也告诉操作系统我们想用什么方式打开这个文件。比如我么会把.jpg的文件默认用图片显示软件打开，.zip 文件会默认用解压软件打开等等。

然而，扩展名完全是可以随便改改的。我们可以给文件设置一个任意的扩展名，当然也可以不设置扩展名。这样一来我们就不能了解到这个文件究竟是做什么的，究竟是个什么样的文件。我们或许也会疑惑，为什么一个软件，比如视频播放器，就能用正确的方式打开.mp4 .rmvb .wmv 等等的视频？

]]></description><category></category></item><item><title><![CDATA[linux下netlink的使用简介]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108276250</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108276250</guid><author>maylcc</author><pubDate>Fri, 28 Aug 2020 11:22:58 +0800</pubDate><description><![CDATA[一、什么是netlink

Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。

在Linux 内核中，使用netlink 进行应用与内核通信的应用有很多，如

路由 daemon（NETLINK_ROUTE）
	用户态 socket 协议（NETLINK_USERSOCK）
	防火墙（NETLINK_FIREWALL）
	netfilter 子系统（NETLINK_NETFILTER）
	内核事件向用户态通知（NETLINK_]]></description><category></category></item><item><title><![CDATA[Linux内核开发进阶书籍推荐(不适合初学者)]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108195937</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108195937</guid><author>maylcc</author><pubDate>Mon, 24 Aug 2020 11:24:21 +0800</pubDate><description><![CDATA[很早之前就想写一篇文章总结一下Linux Kernel开发的相关资料，项目的原因，再加上家里的一些事情，一直没能找到闲暇，今天终于有些时间，希望可以完成这篇文章吧。首先需要说明的是不是所有的人都需要搞内核开发，因为据笔者了解，大部分的软件工程师的工作都在用户态开发，学习内核开发事倍功半，没什么实际意义，另外，初学编程的人也不太适合搞内核开发，因为信息量相对比较大，而且枯燥晦涩，很容易让初学者还没有入门，就已经放弃了，再有就是不想投入时间，总是试图走捷径的，内核开发可能也不适合你，因为必要的练习和资料学...]]></description><category></category></item><item><title><![CDATA[IT 下载常用网站]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108167580</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108167580</guid><author>maylcc</author><pubDate>Sat, 22 Aug 2020 14:09:30 +0800</pubDate><description><![CDATA[pdf下载网站，码农之间https://www.xz577.com/
]]></description><category></category></item><item><title><![CDATA[centos下通过yum安装svn（1.7及以上版本）]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108144471</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108144471</guid><author>maylcc</author><pubDate>Fri, 21 Aug 2020 11:55:11 +0800</pubDate><description><![CDATA[今天测试环境svn突然不能更新了，看了下报错，发现是由于测试环境svn版本过低导致的，这边记录一下处理过程：



1.新建 /etc/yum.repos.d/wandisco-svn.repo，添加如下内容

[WandiscoSVN]
name=Wandisco SVN Repo
baseurl=http://opensource.wandisco.com/centos/6/svn-1.10/RPMS/x86_64/
enabled=1
gpgcheck=0



2.卸载旧版本，安装新版本

yu..]]></description><category></category></item><item><title><![CDATA[Linux4.x内核编程实战——动态切库（1）]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108061110</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108061110</guid><author>maylcc</author><pubDate>Mon, 17 Aug 2020 17:56:18 +0800</pubDate><description><![CDATA[很多发行版默认情况下已经安装了linux-header头文件，意味着它可以直接来开发内核了。当然也有可能没有安装。

可以使用先使用uname -r来查看当前使用的内核版本，然后到/usr/src/下看是否存在这个内核目录，如果存在再进一步确认里面的/usr/src/linux-headers-xxx.xx/include/linux里面是否真的有大量头文件。如果存在那么我们的开发环境就没有问题。

当然各个发行版的包管理工具都可以一句话安装。首先使用包管理工具查询关键词“linux-header”，“ke]]></description><category></category></item><item><title><![CDATA[Linux4.x内核编程实战——动态切库（2）]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108060945</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108060945</guid><author>maylcc</author><pubDate>Mon, 17 Aug 2020 17:55:27 +0800</pubDate><description><![CDATA[学会了内核和用户空间的交互，之后我们便可以正式的完善我们的用户空间程序和内核，让它变得更加完整，切库其实本质上是切换ip/port二元组。所以我们需要一个数据结构来存放，这个数据结构是内核和用户空间都需要用到的，所以我们单独抽出来放到一个头文件中nc_def.h


/*
 * nc_def.h
 */
#ifndef __NC_DEF_H
#define __NC_DEF_H
struct nc_distort {
    unsigned int old_addr;
    unsigned int n]]></description><category></category></item><item><title><![CDATA[Linux内核开发必读书目]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/108057286</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/108057286</guid><author>maylcc</author><pubDate>Mon, 17 Aug 2020 15:42:48 +0800</pubDate><description><![CDATA[学完C语言之后，最终是要应用到某个领域的，比如后端开发，应用开发或者Linux内核开发等。本文将介绍一下Linux内核相关的内容，Linux内核开发是相对比较难的领域，主要是门槛相对较高。虽然门槛较高，但有它的好处，一方面是难度大，因此竞争力就高，另外一方面本操作系统内核的知识半衰期长，不需要频繁的学习新东西。因此，本号以为进行Linux内核开发是IT领域一个相对还可以的选择。但肯定不是最好的，Linux内核开发也有其缺点。

学习Linux内核开发应该本着由具体到抽象，有使用到深入理解的过程。我们在学习的]]></description><category></category></item><item><title><![CDATA[CentOS 7 分区方案]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/107975542</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/107975542</guid><author>maylcc</author><pubDate>Thu, 13 Aug 2020 12:15:33 +0800</pubDate><description><![CDATA[通常系统盘都会选择性能较好SSD，一般在500G左右，这里就以500G硬盘为例，以下为CentOS 自动分区方案：



分区应该按照实际服务器用途而定，自动分区方案将 /home 空间分配太多了，多数情况下并不适用。

必须存在的分区

/ 分区是必须存在的分区，所有一级目录都位于该分区之下，同时还与引导/还原/修复系统等动作有关，包含了一些修复系统的程序。文件系统层次标准(Filesystem Hierarchy Standard, FHS)建议根分区 / 在满足系统需求的情况下，应该越小越好，这样能.]]></description><category></category></item><item><title><![CDATA[MySQL5.7主从复制slave报Last_Errno: 1146错误解决]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/107958243</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/107958243</guid><author>maylcc</author><pubDate>Wed, 12 Aug 2020 15:19:02 +0800</pubDate><description><![CDATA[前提：由于slave磁盘未及时扩容原因导致磁盘即将写满，为了不影响业务将slave实例里一个10G的库drop了（项目前期建的库，数据现在已不使用了），然后又drop了master上的该库（对于大库建议先drop或truncate表再drop库，否则可能导致磁盘空间不能正常释放）。这时查看slave的主从状态，发现sql线程有异常，如下图：



解决：记得该库下有200多张表，由于库已删，当时查询表数量的sql结果也不在了，所以具体有多少张表已无法核实，如果用STOP SLAVE;&gt;SET GLOB]]></description><category></category></item><item><title><![CDATA[springboot2.0配置连接池（hikari、druid）]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/106840142</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/106840142</guid><author>maylcc</author><pubDate>Thu, 18 Jun 2020 17:56:54 +0800</pubDate><description><![CDATA[springboot2.0之后，自带了一个号称全世界最快的连接池hikari，直接在配置文件里输入以下配置即可：




# Hikari will use the above plus the following to setup connection pooling
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.minimum-idle=5
spring.datasource.hika]]></description><category></category></item><item><title><![CDATA[微服务架构设计]]></title><link>https://blog.youkuaiyun.com/maylcc/article/details/106640132</link><guid>https://blog.youkuaiyun.com/maylcc/article/details/106640132</guid><author>maylcc</author><pubDate>Tue, 09 Jun 2020 14:12:35 +0800</pubDate><description><![CDATA[https://www.cnblogs.com/Leo_wl/p/4917489.html#_label4
]]></description><category></category></item></channel></rss>