<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[D_Flash的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/D_Flash</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; D_Flash]]></copyright><item><title><![CDATA[升腾D610加装2.5寸机械硬盘并体验FNOS]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/142253575</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/142253575</guid><author>D_Flash</author><pubDate>Sat, 14 Sep 2024 11:13:45 +0800</pubDate><description><![CDATA[升腾D610加装2.5寸机械硬盘并体验FNOS]]></description><category></category></item><item><title><![CDATA[开箱7年前的全新小米盒子3增强版]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/142253364</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/142253364</guid><author>D_Flash</author><pubDate>Sat, 14 Sep 2024 11:09:39 +0800</pubDate><description><![CDATA[开箱7年前的全新小米盒子3增强版]]></description><category></category></item><item><title><![CDATA[GMSSL库编译使用记录]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/139914573</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/139914573</guid><author>D_Flash</author><pubDate>Mon, 24 Jun 2024 09:51:32 +0800</pubDate><description><![CDATA[国密GMSSL库环境搭建]]></description><category></category></item><item><title><![CDATA[压缩加壳工具UPX编译及使用实例]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/126499689</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/126499689</guid><author>D_Flash</author><pubDate>Wed, 24 Aug 2022 13:38:43 +0800</pubDate><description><![CDATA[压缩加壳工具UPX编译及使用实例]]></description><category></category></item><item><title><![CDATA[Linux内核中双向链表的经典实现]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/116764918</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/116764918</guid><author>D_Flash</author><pubDate>Thu, 13 May 2021 20:30:44 +0800</pubDate><description><![CDATA[Linux内核中双向链表的经典实现



概要

前面一章"介绍双向链表并给出了C/C++/Java三种实现"，本章继续对双向链表进行探讨，介绍的内容是Linux内核中双向链表的经典实现和用法。其中，也会涉及到Linux内核中非常常用的两个经典宏定义offsetof和container_of。内容包括：
1.Linux中的两个经典宏定义
2.Linux中双向链表的经典实现

转载请注明出处：http://www.cnblogs.com/skywang12345/p/3562146.html

更多内容...]]></description><category></category></item><item><title><![CDATA[网桥+tap+epoll实现交换机]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/116669824</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/116669824</guid><author>D_Flash</author><pubDate>Tue, 11 May 2021 20:53:27 +0800</pubDate><description><![CDATA[网桥+tap+epoll实现交换机
本方案需要两个物理网卡，且每个网卡都需要网桥连接到Tap虚拟网卡，此时可以通过向Tap虚拟网卡进行读写操作达到对物理网卡进行读写操作。
网络拓扑实现过程
网络拓扑实现过程如下：


使用tunctl命令创建2个Tap虚拟网卡
使用brctl addbr命令创建2个网桥
使用brctl addif命令将创建好的虚拟网卡与物理网卡进行连接
启用网桥和虚拟网卡，达到不暴露物理网卡的目的


将命令写成shell脚本，如下：
tunctl
tunctl
brctl addbr b]]></description><category></category></item><item><title><![CDATA[Ubuntu 1804 Desktop U盘/光驱插入监测及挂载监测]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/116199000</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/116199000</guid><author>D_Flash</author><pubDate>Tue, 27 Apr 2021 14:52:35 +0800</pubDate><description><![CDATA[Ubuntu 1804 Desktop U盘/光驱插入监测及挂载监测
最近做的项目要求在不使用第三方库、不更改系统设置及普通用户权限情况下，实时监控U盘及CD-ROM的插入及挂载情况，现在把内容整理一下。
主要数据结构介绍
本程序共有2个主要的数据结构：

Netlink操作队列
设备队列：新插入设备类型、设备名、挂载目录队列

Netlink操作队列
本队列主要用于存储NetLink传来的数据，便于处理进程进行处理，数据结构及相关函数如下：
typedef struct _OperationQueue
{]]></description><category></category></item><item><title><![CDATA[C++生成LNK文件及LNK文件简单解析]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/114281689</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/114281689</guid><author>D_Flash</author><pubDate>Tue, 02 Mar 2021 11:43:39 +0800</pubDate><description><![CDATA[C++生成LNK文件及LNK文件简单解析
话不多说，直接上代码吧。
生成快捷方式代码：
int CreateLnk(const wchar_t* TARGET, const wchar_t* LNKFILE)
{
	if (S_OK != CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE))  //初始化COM库失败
		return 1;
	IShellLinkW* psl;
	HRESULT hr = CoCre]]></description><category></category></item><item><title><![CDATA[Windows平台使用文件模拟FatFs]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/109677824</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/109677824</guid><author>D_Flash</author><pubDate>Fri, 13 Nov 2020 16:39:25 +0800</pubDate><description><![CDATA[文件模拟FatFs
概述
因为最近在忙关于FatFs的项目，但是之前没有接触过FatFs，听说FatFs入门就是用文件模拟文件系统，所以分享一下自己的经历。
移植用到的FatFs版本是FF14，网址：http://elm-chan.org/fsw/ff/00index_e.html.
在移植FatFs时，我们只需要对其中几个文件进行修改，分别是：

ffconf.h: FatFs的配置
diskio.c: 实现读写等操作的文件，也是我们主要进行修改的文件

移植过程
ffconf.h
此项目主要是将FF_U]]></description><category></category></item><item><title><![CDATA[FAT文件系统原理（转载）]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/109507743</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/109507743</guid><author>D_Flash</author><pubDate>Thu, 05 Nov 2020 10:59:57 +0800</pubDate><description><![CDATA[转自: http://blog.chinaunix.net/uid-24611346-id-3246892.html

一、硬盘的物理结构：
 硬盘存储数据是根据电、磁转换原理实现的。硬盘由一个或几个表面镀有磁性物质的金属或玻璃等物质盘片以及盘片两面所安装的磁头和相应的控制电路组成(图1)，其中盘片和磁头密封在无尘的金属壳中。
硬盘工作时，盘片以设计转速高速旋转，设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。当系统向硬盘写入数据时，磁头中“写数据”电流产生磁场使盘片表面...]]></description><category></category></item><item><title><![CDATA[AVR心形流水灯制作]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107237560</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107237560</guid><author>D_Flash</author><pubDate>Thu, 09 Jul 2020 20:58:52 +0800</pubDate><description><![CDATA[以下内容为本人大二时给朋友做的生日礼物后写的笔记，最近偶然翻到，所以发出来也算留一下备份，所以文笔相当稚嫩，代码相当粗糙（手动狗头），欢迎各位大神批评指正。视频改日再贴。。。
AVR心形流水灯制作
这个可能看着比较难做，但是其实一点都不难，有一点焊接基础的人可能半个多小时就能焊完（小编当时排版就用了半个小时，焊了1天多。。。）最难的其实是程序，不过小编一会会在后面把程序分享给大家（小编当时写了3天，默默哭3分钟心形流水灯制作）。
下面说说都需要什么零件和工具，一个ATmega16单片机心形流水灯制作
下面附]]></description><category></category></item><item><title><![CDATA[整理《C语言深度剖析》4.3.2 –a和&a的区别]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107237320</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107237320</guid><author>D_Flash</author><pubDate>Thu, 09 Jul 2020 20:49:42 +0800</pubDate><description><![CDATA[以下内容为本人大学时的笔记，最近偶然翻到，所以发出来也算留一下备份，所以有些描述什么的可能不太准确，欢迎各位大神批评指正。
整理《C语言深度剖析》4.3.2 –a和&amp;a的区别
下面是陈正冲老师的《C语言深度剖析》的内容：

上面这些是书中的内容，我个人感觉最难理解的是&amp;a+1，陈正冲老师对&amp;a+1的解释如下：
对指针进行加 1 操作，得到的是下一个元素的地址，而不是原有地址值直接加 1。所以，一个类型为 T 的指针的移动，以 sizeof(T) 为移动单位。 因此，对上题来说， a ]]></description><category></category></item><item><title><![CDATA[C语言auto,static,register分析]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107237084</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107237084</guid><author>D_Flash</author><pubDate>Thu, 09 Jul 2020 20:36:55 +0800</pubDate><description><![CDATA[C语言auto,static,register分析
C语言中的变量可以有自己的属性，在定义变量的时候可以加上“属性”关键字，“属性”关键字指明变量的特有意义
auto
auto即C语言中局部变量的默认属性编译器默认所有的局部变量都是auto的auto是在栈分配内存
static


static修饰的局部变量存储在程序静态区
如果想要定义静态变量，需要写明static


static关键同时具有“作用域限定符”的意义
static修饰的全局变量作用域只是声明的文件中
static修饰的函数作用域只是声明的]]></description><category></category></item><item><title><![CDATA[C语言浮点型变量不能直接进行0值比较]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107236901</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107236901</guid><author>D_Flash</author><pubDate>Thu, 09 Jul 2020 20:23:13 +0800</pubDate><description><![CDATA[浮点型变量不能直接进行0值比较
float类型和double类型都不能保证可以精确的存储一个小数 。如何判断一个浮点型变量是否为零？
#include&lt;stdio.h&gt;
#define E 0.00000001

int main(void)
{
    float a = 0.0;

    if( (0-E &lt;= a) &amp;&amp; (0+E &gt;=a) )
    {
        printf("YES!\n");
    }
    else
    {
     ]]></description><category></category></item><item><title><![CDATA[基于Python获取一些打印机简单信息]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107200548</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107200548</guid><author>D_Flash</author><pubDate>Wed, 08 Jul 2020 10:50:15 +0800</pubDate><description><![CDATA[基于Python获取一些打印机简单信息
通过TCP连接打印机9100端口，使用PJL语言获取信息，因此打印机需支持PJL语言。
代码如下：
# -*- coding: UTF-8 -*-
import socket
import sys
import time


def connect_Printer(HOST, self):
    try:
        self.settimeout(2)
        self.connect((HOST, 9100))
    except Exceptio]]></description><category></category></item><item><title><![CDATA[Python2未知编码字符串转为utf-8编码]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107199635</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107199635</guid><author>D_Flash</author><pubDate>Wed, 08 Jul 2020 10:27:00 +0800</pubDate><description><![CDATA[Python2未知编码字符串转为utf-8编码
Python的编码问题总是非常烦人，一不小心就出来乱码，本函数采用的方法为：分别用try判断是否能解码成功，如果能成功表明为相应编码，解码成功后再编码为utf-8，代码如下：
# -*- coding: utf-8 -*-

def to_utf8(data):
    try:
        # print("Trying decode with utf-8 ...")
        data_de = data.decode("utf-8")
    ]]></description><category></category></item><item><title><![CDATA[Linux修改系统时间、时区]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107198827</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107198827</guid><author>D_Flash</author><pubDate>Wed, 08 Jul 2020 10:08:32 +0800</pubDate><description><![CDATA[Linux修改系统时间、时区
查看现在时区
查看时区命令：date -R
root@ids:~# date -R
Wed, 08 Jul 2020 01:58:11 +0000

可以看到现在时区为+0000，北京时间时区应该是+0800，此时需要修改时区为北京时间
修改时区
修改时区命令：tzselect
root@ids:~# tzselect
Please identify a location so that time zone rules can be set correctly.
Please ]]></description><category></category></item><item><title><![CDATA[Python3字符串转成相应的16进制方法（FF---0xFF）]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107185181</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107185181</guid><author>D_Flash</author><pubDate>Tue, 07 Jul 2020 16:54:44 +0800</pubDate><description><![CDATA[Python3字符串转成相应的16进制方法（FF-&gt;0xFF）
话不多说，直接上代码：
data_str = '0102030405060708090a0b0c0d0e0f'
data_bin = bytes(bytearray.fromhex(data_str))
print(data_str)
print(data_bin)

运行结果：
"C:\Program Files\Python36\python3.exe" F:/python/Python3/Str2Bin/Str2Bin.py
010]]></description><category></category></item><item><title><![CDATA[FTP服务端搭建]]></title><link>https://blog.youkuaiyun.com/D_Flash/article/details/107184966</link><guid>https://blog.youkuaiyun.com/D_Flash/article/details/107184966</guid><author>D_Flash</author><pubDate>Tue, 07 Jul 2020 16:49:40 +0800</pubDate><description><![CDATA[FTP服务端搭建
环境：Ubuntu 18.04
安装Vsftpd

安装：

apt-get install vsftpd -y


启动服务：

systemctl start vsftpd
systemctl enable vsftpd

创建FTP目录

创建用户

adduser vsftp


创建ftp目录并设置所有权

mkdir /home/vsftp/ftp
chown vsftp:vsftp /home/vsftp/ftp

配置Vsftpd

备份原始配置文件

cp /etc/vs]]></description><category></category></item></channel></rss>