<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[afleshfish的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/afleshfish</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; afleshfish]]></copyright><item><title><![CDATA[【EXCEL】忘记了工作保护密码处理]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/115614329</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/115614329</guid><author>afleshfish</author><pubDate>Mon, 12 Apr 2021 10:31:40 +0800</pubDate><description><![CDATA[破解Excel工作保护密码录制宏
录制宏
直接录制宏定义，这是我在网上找到可以破解成功的方法。在这里记录一下。
（1）菜单栏“视图”——&gt;“宏”
（2）编辑VB代码
代码如下：
Sub PasswordBreaker()
Dim i As Integer, j As Integer, k As Integer
Dim l As Integer, m As Integer, n As Integer
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim ]]></description><category></category></item><item><title><![CDATA[【python】数据库的连接]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108822754</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108822754</guid><author>afleshfish</author><pubDate>Sun, 27 Sep 2020 10:36:58 +0800</pubDate><description><![CDATA[连接mysql
import pymysql


HOST = '127.0.0.1'
PORT = 3306
USERNAME = 'root'
PWD = '123456'
DATABASE = 't_d'


class SqlClient:
    """
    mysql的连接和使用
    """

    def __init__(self, host= HOST, port=PORT, user=USERNAME, password=PWD, db=DATABASE, charset='u]]></description><category></category></item><item><title><![CDATA[【c语言】连接mysql]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108775907</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108775907</guid><author>afleshfish</author><pubDate>Thu, 24 Sep 2020 22:51:05 +0800</pubDate><description><![CDATA[连接mysql代码
#include &lt;stdlib.h&gt;
#include &lt;stdio.h&gt;
#include &lt;mysql.h&gt;
int main() {

        char *ip = "localhost";
        char *username = "aa";
        char *pwd = "1";
        char *databaseName = "t_file";

		// 数据库指针
        MYSQL *co]]></description><category></category></item><item><title><![CDATA[【C语言】位操作]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108695333</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108695333</guid><author>afleshfish</author><pubDate>Sun, 20 Sep 2020 17:03:10 +0800</pubDate><description><![CDATA[按位进行相关操作
#include &lt;stdio.h&gt;
#include &lt;stdint.h&gt;
#include &lt;inttypes.h&gt;

//typedef unsigned long long uint64_t;

uint64_t bData;
uint64_t a24;
uint64_t b24;

// 针对第几位进行与非运算，对应位置就是你想要的数据
void offset_64(uint64_t *data, long lsize_t, int byte_]]></description><category></category></item><item><title><![CDATA[【c语言】用c实现类似python的split函数功能]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108523261</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108523261</guid><author>afleshfish</author><pubDate>Thu, 10 Sep 2020 21:46:50 +0800</pubDate><description><![CDATA[实现split功能实现代码
实现代码
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;


/*
    参数解析：
    src:        需要切割的字符数组，一定要用数组，strtok的第一个参数用的数组
    separator:  分隔符
    dest:       存放的地址
    num:        切割的个数
*/
void split(char *src,const char *separator,char **dest]]></description><category></category></item><item><title><![CDATA[【树莓派】linux内核IO口驱动]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108327795</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108327795</guid><author>afleshfish</author><pubDate>Wed, 02 Sep 2020 14:11:15 +0800</pubDate><description><![CDATA[树莓派内核IO口驱动了解虚拟文件系统了解设备号简单的内核驱动demo代码
了解虚拟文件系统
为支持各种文件系统，Linux内核在用户进程（或C标准库）和具体的文件系统之间引入了一个抽象层，该抽象层称之为“虚拟文件系统（VFS）”。
这里本人也是刚开始看，所以我也说不深。因为linux中有各种不同类型的文件，每种文件的写入类型不一样，所以用虚拟文件系统统一操作，适应不同类型的文件。
这里有传送门可以给大家看一下：
Linux 虚拟文件系统（VFS）介绍

了解设备号
linux设备号详解
这里要用到的是字符设]]></description><category></category></item><item><title><![CDATA[【记录】django框架[3]]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108248413</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108248413</guid><author>afleshfish</author><pubDate>Wed, 26 Aug 2020 22:01:30 +0800</pubDate><description><![CDATA[django博客分享博客结构mysite下的urls.py文件blog应用article应用
这次向大家分享一下本人做的半成品博客，后续可以继续完善，因为还没想好博客需要展示什么，所以暂时直接分享出来吧。源码会放到github上面，有兴趣的可以下载来看一下吧。
博客结构

（1）在这里创建了blog、article、board和picture4个应用，就是使用：
python manage.py startapp 应用名

命令语句创建的。在这里主要为大家简单介绍下里面的功能。
（2）由于base.html]]></description><category></category></item><item><title><![CDATA[【树莓派】交叉编译]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108210235</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108210235</guid><author>afleshfish</author><pubDate>Mon, 24 Aug 2020 22:49:02 +0800</pubDate><description><![CDATA[一、概念
1、编译：例如在linux上进行gcc直接编译，编译出来的可执行文件是在本机能够执行；
2、交叉编译：下位机，如c51，stm32，若没有足够内存放编辑器，需要上位机进行跨机编译来生成可执行文件的，就是交叉编译。
需要交叉编译的原因：

需要交叉编译的原因有两个：首先，在项目的起始阶段，目的平台尚未建立，因此需要做交叉编译，以生成我们所需要的bootloader（启动引导代码）以及操作系统核心；其次，当目的平台能启动之后，由于目的平台上资源的限制，当我们编译大型程序时，依然可能需要用到交叉编译。—]]></description><category></category></item><item><title><![CDATA[【树莓派】串口发送接收消息]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108204719</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108204719</guid><author>afleshfish</author><pubDate>Mon, 24 Aug 2020 19:12:09 +0800</pubDate><description><![CDATA[使用串口进行通信
1、接线
使用的是USB串口（ch340）【图片来自百度图库】

USB串口和树莓派的进行连接：
（1）USB的TXD对应树莓派的RXD
（2）USB的RXD对应树莓派的TXD
（3）USB的GND接树莓派的0v引脚（共地）
2、修改树莓派配置：（参考以下连接）

https://www.cnblogs.com/lulipro/p/5992172.html

/* 修改 cmdline.txt文件 */
&gt;cd /boot/
&gt;sudo vim cmdline.txt
删除【】]]></description><category></category></item><item><title><![CDATA[【树莓派】使用声波模块测距]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108197497</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108197497</guid><author>afleshfish</author><pubDate>Mon, 24 Aug 2020 13:43:04 +0800</pubDate><description><![CDATA[树莓派-声波模块HC-SR04声波模块示例Demo代码
HC-SR04声波模块

vcc：接5v电压
Trig：发送引脚
Echo：接收引脚
GND：接地
输入以下语句查看树莓派引脚接口：
apio readall


连线情况为：vcc接5v引脚，GND接0v引脚，Trig和Echo引脚接GPIO引脚就可以了。GPIO为树莓派的输入输出引脚。
本人选择引脚28和29号
示例Demo代码
#include &lt;wiringPi.h&gt;
#include &lt;stdio.h&gt;
#includ]]></description><category></category></item><item><title><![CDATA[【C语言】linux库-静态库和动态库的使用]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108161460</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108161460</guid><author>afleshfish</author><pubDate>Sat, 22 Aug 2020 00:22:06 +0800</pubDate><description><![CDATA[分模块
对于一般分模块的使用，可以直接用以下语句进行编译：
gcc main.c a.c b.c

只需要有a.h以及b.h的头文件，就可以直接进行编译，但是这样需要*.c文件的存在，这样造成文件过多。
静态库
1、将需要打包的文件生成*.o文件
gcc a.c -c

此时会生成一个a.o的文件。
2.将a.o文件生成liba.a文件
ar -rcs liba.a a.o

3、使用
gcc main.c -la -L ./ -o main

意思是将liba.a这库里面的与main.c一起打包成main]]></description><category></category></item><item><title><![CDATA[【树莓派】树莓派的使用]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108136188</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108136188</guid><author>afleshfish</author><pubDate>Fri, 21 Aug 2020 12:47:02 +0800</pubDate><description><![CDATA[树莓派树莓派刷机树莓派连接
树莓派刷机
1、 使用Win32DiskImager把树莓派官网的镜像文件写入SD卡。
2、打开SD卡根目录的"config.txt"文件，将以下内容添加在最后并且保存。
dtoverlay=pi3-miniuart-bt

这样就停止了蓝牙，解除了对串口的占用。
3、然后再修改根目录的"cmdline.txt"，将里面的内容全部替换成以下内容
dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/m]]></description><category></category></item><item><title><![CDATA[【C语言】socket 通信编程]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108086625</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108086625</guid><author>afleshfish</author><pubDate>Tue, 18 Aug 2020 20:41:15 +0800</pubDate><description><![CDATA[解析server端
server端在tcp的通信中，需要做到以下6点：

socket套接字的构造  socket

int socket(int domain, int type, int protocol);

domain：指定通信域；选择通信的协议族。
type：类型，tcp为SOCK_STREAM，udp为SOCK_DGRAM。
protocol：协议，一般为0，会自动适配通信域及类型的配置。
在man手册中是这样解释protocol参数的：

协议指定要与套接字一起使用的特定协议。通常只有一个协]]></description><category></category></item><item><title><![CDATA[【C语言】多线程]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108063647</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108063647</guid><author>afleshfish</author><pubDate>Tue, 18 Aug 2020 15:27:39 +0800</pubDate><description><![CDATA[linux多线程的使用普通demo实例解析共享内存空间
普通demo实例
#include &lt;pthread.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;errno.h&gt;
#include &lt;unistd.h&gt;

/*
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
                    ]]></description><category></category></item><item><title><![CDATA[【C语言】进程-信号量]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108053656</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108053656</guid><author>afleshfish</author><pubDate>Mon, 17 Aug 2020 13:42:23 +0800</pubDate><description><![CDATA[Demo实现
#include &lt;stdio.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/ipc.h&gt;
#include &lt;sys/sem.h&gt;


union semun {
        int              val;    /* Value for SETVAL */
        struct semid_ds *buf;    /* Buffer for IPC_STAT, IPC_SET */
 ]]></description><category></category></item><item><title><![CDATA[【C语言】信号编程]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108049458</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108049458</guid><author>afleshfish</author><pubDate>Mon, 17 Aug 2020 10:13:02 +0800</pubDate><description><![CDATA[c语言信号的使用signal函数sigaction函数
signal函数
使用signal函数方法是比较简单的，原型函数为：
sighandler_t signal(int signum, sighandler_t handler);

信号接收到的信号数字，然后就执行函数handler。
使用kill -l查看命令的编号：
asus@ubuntu:~/Desktop/c_file$ kill -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTR]]></description><category></category></item><item><title><![CDATA[【C语言】进程通信-共享文件]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108046366</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108046366</guid><author>afleshfish</author><pubDate>Sun, 16 Aug 2020 23:25:51 +0800</pubDate><description><![CDATA[进程1创建共享文件  代码
#include &lt;sys/ipc.h&gt;
#include &lt;sys/types.h&gt;
#include &lt;sys/shm.h&gt;
#include &lt;stdio.h&gt;
#include &lt;string.h&gt;
#include &lt;unistd.h&gt;

//int shmget(key_t key, size_t size, int shmflg);


int main()
{

        char *s]]></description><category></category></item><item><title><![CDATA[【C语言】消息队列]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/108041925</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/108041925</guid><author>afleshfish</author><pubDate>Sun, 16 Aug 2020 20:10:49 +0800</pubDate><description><![CDATA[C-queue读取消息队列代码消息队列 写 代码
读取消息队列代码
#include &lt;sys/types.h&gt;
#include &lt;sys/ipc.h&gt;
#include &lt;sys/msg.h&gt;
#include &lt;stdio.h&gt;

//int msgget(key_t key, int msgflg);
//ssize_t msgrcv(int msqid, void *msgp, size_t msgsz, long msgtyp,
//       ]]></description><category></category></item><item><title><![CDATA[[C] pipe以及fork使用]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/107951522</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/107951522</guid><author>afleshfish</author><pubDate>Wed, 12 Aug 2020 11:16:15 +0800</pubDate><description><![CDATA[进程与管道的使用

参考原文链接： https://blog.youkuaiyun.com/nodeathphoenix/article/details/23284157?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allbaidu_landing_v2~default-1-23284157.nonecase

#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;]]></description><category></category></item><item><title><![CDATA[C语言读取文档的结构体]]></title><link>https://blog.youkuaiyun.com/afleshfish/article/details/107910652</link><guid>https://blog.youkuaiyun.com/afleshfish/article/details/107910652</guid><author>afleshfish</author><pubDate>Mon, 10 Aug 2020 13:13:54 +0800</pubDate><description><![CDATA[C语言学习把结构体内容写入.txt文件中读取文件中的结构体
把结构体内容写入.txt文件中
//write.c
#include &lt;stdio.h&gt;

struct test{
        int a;
        float b;
};

int main()
{
        struct test v = {1, 2.3};
        FILE *fp;
        fp = fopen("save.txt", "w");
        if(fp == NULL)r]]></description><category></category></item></channel></rss>