<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Rabbit_Gray的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Rabbit_Gray</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Rabbit_Gray]]></copyright><item><title><![CDATA[申请Github Education获取免费Copilot权限（2024.3.18实测成功）]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/136821490</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/136821490</guid><author>Rabbit_Gray</author><pubDate>Mon, 18 Mar 2024 22:05:56 +0800</pubDate><description><![CDATA[我已经离开Github Copilot就无法独自耐着性子写代码了（懒惰+AI成瘾性），这两天Github Copilot不知道为什么在大规模封号，我不幸也被封号了（禁用掉了Github Copilot权限），具体表现为VS Code的Copilot不再帮我生成代码，在右下角图表处显示一个小感叹号。日志中显示。]]></description><category></category></item><item><title><![CDATA[1027推免分享材料 备份]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/127548728</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/127548728</guid><author>Rabbit_Gray</author><pubDate>Thu, 27 Oct 2022 11:20:08 +0800</pubDate><description><![CDATA[推免材料备份]]></description><category></category></item><item><title><![CDATA[人工智能基础 作业6]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124937776</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124937776</guid><author>Rabbit_Gray</author><pubDate>Tue, 24 May 2022 08:49:47 +0800</pubDate><description><![CDATA[本次来实现XO图形的识别

数据集

数据集要按照一定比例自行划分好训练集training_set和测试集test_set





代码


import torch
from torch import nn, optim
from torch.utils.data import DataLoader, Dataset
from torchvision import datasets, transforms

# 模型构建
class Net(nn.Module):
    def __init__(se]]></description><category></category></item><item><title><![CDATA[人工智能基础 作业5]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124905426</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124905426</guid><author>Rabbit_Gray</author><pubDate>Sun, 22 May 2022 00:31:43 +0800</pubDate><description><![CDATA[For循环版本：手工实现 卷积-池化-激活



Pytorch版本：调用函数完成 卷积-池化-激活



可视化：了解数字与图像之间的关系
]]></description><category></category></item><item><title><![CDATA[人工智能基础 作业4]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124678170</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124678170</guid><author>Rabbit_Gray</author><pubDate>Thu, 12 May 2022 09:05:42 +0800</pubDate><description><![CDATA[一、简单描述卷积、卷积核、多通道、特征图、特征选择概念。

卷积：使用一个长宽为kernel_size的卷积核在长宽为input_size的原始图片上扫描，每次移动步长为stride，为保证原始图片上靠近边缘的像素也能同非边缘像素一样被有效利用，给原始图片四周填充padding像素的边缘。则输出特征图大小output_size计算公式为：





卷积核：卷积核实际上是一个滤波器，在卷积神经网络中其参数是可学习的，对于一个通道数为c的输入特征图，需要的卷积核的size为(c, k, k)，其中k是卷积核长]]></description><category></category></item><item><title><![CDATA[人工智能基础 作业3]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124582617</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124582617</guid><author>Rabbit_Gray</author><pubDate>Thu, 05 May 2022 23:42:14 +0800</pubDate><description><![CDATA[一、使用PyTorch复现课上
]]></description><category></category></item><item><title><![CDATA[人工智能基础 作业2]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124526102</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124526102</guid><author>Rabbit_Gray</author><pubDate>Sun, 01 May 2022 13:56:34 +0800</pubDate><description><![CDATA[说明

实现手动实现反向传播更新模型权重

构造一个2层的全连接神经网络，有2个输入，隐藏层和输出层分别有2个神经元

训练数据：输入 x1, x2 = 0.5, 0.3 期望输出 y1, y2 =0.23, -0.07

激活函数：sigmod

优化方法：梯度下降

损失函数：均方差损失



代码

加了自己理解的注释


import numpy as np
 
# 激活函数 
def sigmoid(z):
    a = 1 / (1 + np.exp(-z))
    return a
 

]]></description><category></category></item><item><title><![CDATA[人工智能基础 作业1]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124506571</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/124506571</guid><author>Rabbit_Gray</author><pubDate>Sat, 30 Apr 2022 00:23:59 +0800</pubDate><description><![CDATA[pycharm的安装



安装pytorch环境


# 使用conda创建一个新的python环境
conda create -n ai-basic python=3.7


# 激活刚创建的python虚拟环境
conda activate ai-basic

# 安装pytorch及相关包
pip install torch torchvision torchaudio



实现反向传播


import torch
from torch.utils.data import DataLoader.]]></description><category></category></item><item><title><![CDATA[解决python安装包需要Microsoft C++ Build Tools问题]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/121353701</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/121353701</guid><author>Rabbit_Gray</author><pubDate>Tue, 16 Nov 2021 13:33:38 +0800</pubDate><description><![CDATA[python在安装一些需要从C源码编译的包的时候会报错说你没有 Microsoft Visual C++ 14.0或者更高版本。

error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/





如果不想安装庞大的VS，可以选择只安装编译器组件Micr]]></description><category></category></item><item><title><![CDATA[ctf.show RSA入门题目题解若干]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120581007</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120581007</guid><author>Rabbit_Gray</author><pubDate>Fri, 01 Oct 2021 21:18:36 +0800</pubDate><description><![CDATA[babyrsa 普通rsa解密
题目给了e、p、q，还给了c
e = 65537
p = 1040468357126640647791947349742711856355389278898806119299319397110013015616822701779316229746427899209189025633612933454340557642936124468883839128071433940090198034718164489239696379806712211111179652274024296]]></description><category></category></item><item><title><![CDATA[python手动实现DES算法]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120467789</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120467789</guid><author>Rabbit_Gray</author><pubDate>Sat, 25 Sep 2021 09:55:07 +0800</pubDate><description><![CDATA[密码学实验老师让我们做手算DES加密的课堂解压小游戏，我这么懒怎么可能手算…（于是我悄悄用python了）

回到宿舍又把DES算法仔细研究并独立实现了一遍，经调试验证，每个细节的数据都和课本上给出的样例数据对照无误。

完整的每一步的数据在 张焕国的《密码学引论》第三版的66页，感兴趣的可以自行验证。


import numpy as np

""" code by bak """

class DES:
    # 初始置换表，长度为64
    IP_table = np.array([
     ]]></description><category></category></item><item><title><![CDATA[Cloudflare DNS A记录自动更新脚本]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120433316</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120433316</guid><author>Rabbit_Gray</author><pubDate>Thu, 23 Sep 2021 14:03:51 +0800</pubDate><description><![CDATA[想实现一个类似于DDNS的功能，用的Cloudflare的服务，需要频繁更新我的某个二级域名的A记录值，每次都登陆一下Cloudflare网页感觉比较麻烦，于是实现了一个自动更新的工具型脚本。



首先在Cloudflare的DNS管理页面创建二级域名A记录，因为我想让我这个二级域名都取值内网的IP，不想让它代理我的流量，所以把我下图画红框的地方改成“仅限 DNS - reserved IP”。





然后去下图这里按照序号顺序，找到“查看"按钮，在你输入你得账户密码并通过图片验证码以后

，你就能.]]></description><category></category></item><item><title><![CDATA[C语言防止程序多开：创建互斥体]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120422178</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/120422178</guid><author>Rabbit_Gray</author><pubDate>Wed, 22 Sep 2021 20:32:51 +0800</pubDate><description><![CDATA[我的一个程序可能被多次启动，但是我希望程序启动时一旦发现本程序当前有另一个已经在运行的进程后就弹出提示信息并自行退出，达到防止程序多开的目的。

我们可以利用创建互斥体（Mutex）的方法，第一个被启动的进程发现当前没有创建过某个名字的互斥体（比如我们给互斥体起名叫MyTestMutex）之后，就会创建这个互斥体，等到这个程序再被启动的时候发现当前存在一个指定名字的互斥体，就可以自己退出了。


#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;
#inc]]></description><category></category></item><item><title><![CDATA[Python中的 for循环 到底是个啥？迭代协议、可迭代对象、迭代器对象梳理]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/112525034</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/112525034</guid><author>Rabbit_Gray</author><pubDate>Tue, 12 Jan 2021 18:31:41 +0800</pubDate><description><![CDATA[一个类的定义如果包含了__iter__() 方法，那么这个类创建出来的对象就叫做一个Iterable对象。（可迭代的对象）
一个类的定义如果包含了__iter__()方法和__next__()方法，那么这个类创建出来的对象就叫做一个Iterator对象。（迭代器对象）
一个类的定义如果包含了__iter__() 方法，那么这个类创建出来的对象自动成为Iterable类的一个实例。
一个类的定义如果包含了__iter__()方法和__next__()方法，那么这个类创建出来的对象Iterator对象的一个实例]]></description><category></category></item><item><title><![CDATA[[ctf.show]签到_观己]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/108035348</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/108035348</guid><author>Rabbit_Gray</author><pubDate>Sun, 16 Aug 2020 13:48:38 +0800</pubDate><description><![CDATA[进入题目，显示了源码，其中对于file参数中检测是否包含php字符串，大小写不敏感。



所以伪协议 php://input 等无法使用



测试了一下data://伪协议，结果显示目标服务器配置中关闭了这个伪协议



从服务器返回的响应头中可以知道服务器是nginx服务器



nginx服务器的访问日志文件路径是/var/log/nginx/access.log

尝试包含了一下日志文件，成功



访问日志文件记录了服务器收到的每一次请求的 IP、访问时间、URL、User-Agent，这4..]]></description><category></category></item><item><title><![CDATA[实验楼Linux入门：计划任务crontab]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/106451294</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/106451294</guid><author>Rabbit_Gray</author><pubDate>Sun, 31 May 2020 09:25:26 +0800</pubDate><description><![CDATA[介绍

crontab 命令常见于 Unix 和类 Unix 的操作系统之中（Linux 就属于类 Unix 操作系统），用于设置周期性被执行的指令

crontab 命令从输入设备读取指令，并将其存放于 crontab 文件中，以供之后读取和执行。通常，crontab 储存的指令被守护进程激活，crond 为其守护进程，crond 常常在后台运行，每一分钟会检查一次是否有预定的作业需要执行。
通过 crontab 命令，我们可以在固定的间隔时间执行指定的系统指令或 shell 　 script 脚本。时间]]></description><category></category></item><item><title><![CDATA[利用python自动解析摩斯电码音频文件]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/106177458</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/106177458</guid><author>Rabbit_Gray</author><pubDate>Sun, 17 May 2020 18:31:41 +0800</pubDate><description><![CDATA[问题来源
做CTF的MISC题的时候，遇到一个题，给了一个音频文件，下载下来在耳机中一听，显然是在右声道里边隐藏了一段摩斯电码。

以往都是手动一点一点记录下摩斯电码，然后丢进摩斯电码转换程序里得到加密信息，可是手动记录一不留神就有可能出错，有没有自动化方法呢？
自动化方法
1. 预处理音频
把音频文件的右声道音轨的摩斯电码部分提取出来，保存成一个新的音频文件。
2. 观察摩斯电码音频的实时频谱图

我们将音频数据分成许多小部分（这里以512字节为个一小部分），对于这一小部分的时序数据经过傅里叶变换变为频域]]></description><category></category></item><item><title><![CDATA[实验楼Linux入门：文件打包与压缩]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/105962332</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/105962332</guid><author>Rabbit_Gray</author><pubDate>Wed, 06 May 2020 23:12:37 +0800</pubDate><description><![CDATA[文件打包与压缩
在 Linux 上面常见的格式除了.zip, .rar两种外，还有 .rar，*.gz，*.xz，*.bz2，*.tar，*.tar.gz，*.tar.xz，*.tar.bz2，简单介绍如下：




文件后缀名
说明




*.zip
zip 程序打包压缩的文件


*.rar
rar 程序压缩的文件


*.7z
7zip 程序压缩的文件


*.tar
tar 程序打包，未...]]></description><category></category></item><item><title><![CDATA[实验楼Linux入门：Linux 命令的查找路径与顺序]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/105962236</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/105962236</guid><author>Rabbit_Gray</author><pubDate>Wed, 06 May 2020 23:11:36 +0800</pubDate><description><![CDATA[Linux 命令的查找路径与顺序
PATH环境变量
和Windows一样，Linux中也有一个叫PATH的环境变量，记录着各种可执行程序的路径，当你在控制台输入一些可执行程序/脚本文件名的时候，系统会按顺序自动从PATH环境变量中去查找这些文件。
我们使用echo $PATH命令看看当前PATH变量中的内容

可以看到，都是一些 bin、sbin的路径，这些路径下一般放的都是一些可执行的程序/脚本...]]></description><category></category></item><item><title><![CDATA[用Java Swing写一个简易的四则运算计算器]]></title><link>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/105879287</link><guid>https://blog.youkuaiyun.com/Rabbit_Gray/article/details/105879287</guid><author>Rabbit_Gray</author><pubDate>Fri, 01 May 2020 17:16:58 +0800</pubDate><description><![CDATA[成品图

设计思路
1. 界面和数据分离
这是一个很好的设计习惯，界面部分只写界面的逻辑，数据和算法要做成接口放到其他文件里，二者尽量降低耦合度，如果两种代码混在一起写，后边要大规模修改代码的时候你会疯掉的。????
2. 给程序一个“状态”，并实时维护
本类中设置一个 “状态” 属性，会大大简化代码逻辑，开发时候的思路会清晰很多。一般可以利用 枚举(Enum) 结构来作为这个状态集合，最好不要用 in...]]></description><category></category></item></channel></rss>