<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[且听风吟的博客]]></title><description><![CDATA[唯有努力生存]]></description><link>https://blog.youkuaiyun.com/jack__linux</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jack__linux]]></copyright><item><title><![CDATA[静态链表解析]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/116082393</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/116082393</guid><author>jack__linux</author><pubDate>Sat, 24 Apr 2021 22:03:47 +0800</pubDate><description><![CDATA[对于需要实现链表结构，但又不支持指针的语言（如：Basic、Fortran），则可以通过采用数组结构模拟出链表来，相比采用动态内存分配的链表结构，该结构称为静态链表（也称为 “游标实现法” ）。

1 结构

首先，涉及到链表结构，则节点中必定需要包含一个指向其他节点的数据。对于静态链表，在不使用指针的情况下，此处采用储存节点下标的方式来实现。

对于每个节点，定义其数据元素data的数据类型为ElemType（此处为char，可根据实际情况修改），而next则称为游标（虚拟指针），保存下一个节点的下标。由]]></description><category></category></item><item><title><![CDATA[实现自定义的数据结构 —— 自然树]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/113576127</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/113576127</guid><author>jack__linux</author><pubDate>Tue, 02 Feb 2021 22:55:41 +0800</pubDate><description><![CDATA[最近看了一些公司的面试题，发现涉及 IT技术，包括 AI 行业的题目都会涉及到最基本的 C/C++、数据结构和算法之类的，突发奇想写了一个貌似没啥用的数据结构，就当是复习了[手工哭笑表情]

1 结构


图1.1 自然树的整体结构

    该自定义结构不同于二叉树及其他数据结构，每个节点的子节点个数不受限制，最大限度保留了数据的原始结构，并实现了其前序和后序遍历的方法。优点是节省了内存，但缺点则是基于链表结构查询的时间开销会相对较大。

举个例子，图1.1所示，即是该自定义树的...]]></description><category></category></item><item><title><![CDATA[指针浅析]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/109407152</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/109407152</guid><author>jack__linux</author><pubDate>Sun, 01 Nov 2020 22:56:32 +0800</pubDate><description><![CDATA[对于最普通的指针，如下图所示



举例


char v = 'a';
char *p = &amp;v;




char *p = “a01”;



1 多级指针

(1) char **p




char v = 'a';
char *p1 = &amp;v;
char **p = &amp;p1;



(2) char ***p

同理

2 指针数组

包含指针的数组

p 本身是数组，而数组内部的元素是指针

(1) char *p[]




char *p[] = {"a01", "]]></description><category></category></item><item><title><![CDATA[实现链表与哈希表相结合的快速表]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/108478630</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/108478630</guid><author>jack__linux</author><pubDate>Wed, 09 Sep 2020 13:20:11 +0800</pubDate><description><![CDATA[设计可以变更的缓存结构：该结构在构造时确定大小，假设长度 len，且有两个功能：
int set（string key，int value）：将记录（key，value）插入该结构
int get（string key）：返回key对应的value
要求：

set和get时间复杂度为O(1)
	某个key的set/get操作一旦发生，认为这个key成为最常使用的（默认这一步也是O(1) ）
	当缓存大小超过k时，移除最不常用的记录。
思路：

第1点，set 和 get 的时间复杂度要为O(1)，数组虽然]]></description><category></category></item><item><title><![CDATA[数据结构 - 二叉树的遍历]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/108187371</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/108187371</guid><author>jack__linux</author><pubDate>Sun, 23 Aug 2020 20:59:56 +0800</pubDate><description><![CDATA[树的结构

定义二叉树的数据结构如下：


typedef struct BiTNode  // 节点结构
{
   TElemType data;		// 节点数据
   struct BiTNode *lchild,*rchild; // 左右孩子指针
}BiTNode,*BiTree;

构成下图所示的二叉树为例：包含 A ~ I 共9个节点



遍历方式

目前基本是采用递归的方式来对树进行遍历，核心就是先递归遍历左子树，再递归遍历右子树


void Traverse(BiTree T)
{
	]]></description><category></category></item><item><title><![CDATA[数字图像处理 - 仿射变换]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/107959737</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/107959737</guid><author>jack__linux</author><pubDate>Sat, 22 Aug 2020 22:02:12 +0800</pubDate><description><![CDATA[几何变换

几何变换 = 坐标的空间变换（最常用的就是 仿射变换） + 插值

仿射变换

设为原图像中的坐标，为变换后图像中的坐标，图像的仿射变换可以表示为：



对应的矩阵表示为：




【注】：添加 1 是为了和平移变换中的维度对其，添加 1 只是为了和对应。


其中 T 可以有如下几种形式（皆为线性变换）：



什么是线性变换？

设算子，对线性空间 上的任意元素和，以及数域中任意，都有：





这两个标准可以整合为一个：



而对于上述图像的仿射变换来...]]></description><category></category></item><item><title><![CDATA[matplotlib设置坐标轴旋转后标签丢失]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/107471824</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/107471824</guid><author>jack__linux</author><pubDate>Mon, 20 Jul 2020 20:13:53 +0800</pubDate><description><![CDATA[如下情况，再x轴还没有添加旋转时


plt.figure()

plt.contourf(X1, Y1, Z3, 6, cmap=plt.cm.Blues)

plt.xlabel('x', fontsize=14)
plt.ylabel('y', fontsize=14, rotation=0)
plt.tick_params(labelsize=12)

plt.savefig("contourf.png", dpi=100)

出来的图像是这样的，x轴标签正常



但再x轴刻度添加30度旋转后

]]></description><category></category></item><item><title><![CDATA[Linux设置gedit运行python]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/107251964</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/107251964</guid><author>jack__linux</author><pubDate>Fri, 10 Jul 2020 19:34:40 +0800</pubDate><description><![CDATA[平台

硬件：NVIDIA Jetson AGX Xavier

系统：Ubuntu18.04.4 LTS

1 安装gedit

2 设置gedit的配置文件权限

设置 gedit 配置文件的拥有者为用户 YOUR_NAME（默认为 root，普通用户无法创建配置脚本）


sudo chown -R YOUR_NAME /home/YOUR_NAME/.config/gedit

3 添加Manage External Tools 插件

Edit ——&gt; Preferences

在弹出的对.]]></description><category></category></item><item><title><![CDATA[Sublime Text使用Conda插件]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/107086868</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/107086868</guid><author>jack__linux</author><pubDate>Thu, 02 Jul 2020 16:38:37 +0800</pubDate><description><![CDATA[环境

windows10

Sublime Text v3.2.2

conda v4.8.3

1 Sublime Text 安装 Package Control

shift ctrl + p 调出 command

输入Package Control 点击即可安装

2 Preferences ——&gt;Package Control

选择 Install Package

输入 Conda 点击安装

3Preferences ——&gt; Package Settings ——&gt;...]]></description><category></category></item><item><title><![CDATA[unindent does not match any outer indentation level 错误原因]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/106739224</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/106739224</guid><author>jack__linux</author><pubDate>Sat, 13 Jun 2020 22:50:23 +0800</pubDate><description><![CDATA[最常见的两种情况：

1 缩进问题

2 tab 和 空格混用



还有一种：

编辑环境：Sublime Text version3.2.2

在某些情况下，编译一个复制进来的代码块

下图这样全都是“——”，运行是没有问题的（“——”为 tab 产生）



但是

在某些文档中，代码后“回车”，会出现“. . . .”缩进（正常情况下“回车”应该自动等同于 tab 缩进）

这样运行，就会报错




TabError: inconsistent use of tabs and spaces in.]]></description><category></category></item><item><title><![CDATA[实现自定义的数据结构 —— 树]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/106527800</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/106527800</guid><author>jack__linux</author><pubDate>Thu, 04 Jun 2020 10:15:27 +0800</pubDate><description><![CDATA[最近看了一些公司的面试题，发现涉及 IT技术，包括 AI 行业的题目都会涉及到最基本的 C/C++、数据结构和算法之类的，突发奇想写了一个没什么卵用的数据结构，就当是复习了[手工微信哭笑表情]

1 结构


图1.1 自定义树的整体结构

    该自定义结构不同于二叉树及其他数据结构，每个节点的子节点个数不受限制，最大限度保留了数据的原始结构，并实现了其前序和后序遍历的方法。优点是节省了内存，但缺点则是基于链表结构查询的时间开销会相对较大。当然二者不可兼得

举个例子，图1.1...]]></description><category></category></item><item><title><![CDATA[iphone安装低版本App的方法]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/105400371</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/105400371</guid><author>jack__linux</author><pubDate>Fri, 10 Apr 2020 11:38:38 +0800</pubDate><description><![CDATA[原理

通过抓包工具捕获 iTunes 发送至服务器的App信息，并对其版本ID进行更换，进而伪装维低版本的App下载命令。

所需工具

爱思助手
	低版本iTunes（须12.6.5.3及以下版本，在爱思助手的“刷机越狱 - 其他工具”内安装）
	Fillder抓包工具（百度网盘：https://dwz.cn/rQcFsExq）
	App历史版本查询（推荐网站：https://tools.la...]]></description><category></category></item><item><title><![CDATA[Python笔记]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/101714955</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/101714955</guid><author>jack__linux</author><pubDate>Tue, 03 Dec 2019 10:23:47 +0800</pubDate><description><![CDATA[目录

1 库函数

1.1python内置函数

enumerate(sequence, [start=0])

super()

format()

f-Strings

1.2 模块函数

【str】

str.split(str="", num=string.count(str))

str.strip(self, chars=None, /)

str.lstrip(self, char...]]></description><category></category></item><item><title><![CDATA[Pytorch笔记]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/103322342</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/103322342</guid><author>jack__linux</author><pubDate>Sat, 30 Nov 2019 21:31:43 +0800</pubDate><description><![CDATA[目录

tensor与array转换

查看 Tensor 数据类型

Tensor数据类型转换

扩维（unsqueeze）和降维（squeeze）

更改数据维度

PIL和OpneCV的RGB排列

ToTensor

torch.view()

参数 inplace

判断一个对象是否可以迭代

ipython 常用指令

模块函数

Visdom 可视化

tensorboardX 可视...]]></description><category></category></item><item><title><![CDATA[C/C++语言笔记]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/99451546</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/99451546</guid><author>jack__linux</author><pubDate>Sat, 14 Sep 2019 23:06:52 +0800</pubDate><description><![CDATA[循环嵌套

在多层循环中，应当将最长的循环放在最内层，最短的循环放在最外层，以减少CPU跨切循环层的次数。

如果循环体内存在逻辑判断，并且循环次数很大，应将逻辑判断移到循环体外。

引用

不能有 NULL 引用，引用必须与合法的存储单元关联（指针则可以是 NULL）


int &amp;m=NULL;    //error

不能建立指针的引用 


int * &amp;n = &amp...]]></description><category></category></item><item><title><![CDATA[傅里叶分析概述]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/99671469</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/99671469</guid><author>jack__linux</author><pubDate>Thu, 05 Sep 2019 21:52:56 +0800</pubDate><description><![CDATA[目录

1概述

2周期信号的频谱

2.1周期信号

2.2复数

2.3欧拉公式

2.4傅里叶级数

2.5幅值频谱

2.6相位频谱

2.7双边频谱

小结

3非周期信号的频谱

3.1非周期信号

3.2傅里叶变换

3.3频谱图

小结

4常用性质

4.1频移性

4.2卷积定理

5单位脉冲信号

特性

6周期函数的傅里叶变换

7周期单位脉冲信号

8采样与复原

8.1...]]></description><category></category></item><item><title><![CDATA[卷积神经网络概述]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/91357456</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/91357456</guid><author>jack__linux</author><pubDate>Thu, 08 Aug 2019 22:11:46 +0800</pubDate><description><![CDATA[目录

人类视觉原理

1整体描述

2基本理论

2.1卷积（convolution）

2.2步长（stride）

2.3填充（padding）

Valid卷积

Same卷积

Full卷积

2.4三维卷积

2.5 1x1卷积

2.6偏置（bias）

2.7池化（pooling）

2.8全局池化 (Global Pooling)

2.9激活函数（activation func...]]></description><category></category></item><item><title><![CDATA[深度学习笔记]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/90345861</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/90345861</guid><author>jack__linux</author><pubDate>Fri, 19 Jul 2019 17:23:11 +0800</pubDate><description><![CDATA[持续更新...

目录

sigmoid和tanh的缺点

softmax回归

神经网络计算结构

针对问题的不同算法

one-hot表示

阶跃函数做激活函数的问题

卷积层和池化层的展开实现

图像上采样（upsampling）和下采样（downsampling）

名词解释

卷积的部分连接

神经网络的本质

Global Pooling (全局池化)

sigmoid和tanh的缺点...]]></description><category></category></item><item><title><![CDATA[理解常用的3个梯度下降法]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/90347984</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/90347984</guid><author>jack__linux</author><pubDate>Mon, 20 May 2019 10:02:29 +0800</pubDate><description><![CDATA[此文章以均方误差的损失函数为例

假设样本 为 矩阵，即 个样本（假设为 65536 个）， 维特征。

学习率：

1 批量梯度下降法（batch Gradent Descent）


简介：每次利用所有样本（个）来进行损失计算，然后利用所有样本（个）来计算导数，最后更新参数。



批量梯度下降


	计算损失
	
作用：计算所有样本集（个）的误差和

公式：


	梯度下降
	
...]]></description><category></category></item><item><title><![CDATA[numpy数组与矩阵乘法]]></title><link>https://blog.youkuaiyun.com/jack__linux/article/details/90318134</link><guid>https://blog.youkuaiyun.com/jack__linux/article/details/90318134</guid><author>jack__linux</author><pubDate>Sat, 18 May 2019 19:43:17 +0800</pubDate><description><![CDATA[1 np.multiply()函数


功能：数组或矩阵的对应位置元素相乘。



	数组
	
定义二维数组 A、B


&gt;&gt;&gt; A = np.array([[0,1],[2,3]])
&gt;&gt;&gt; A
&gt;&gt;&gt; array([[0, 1],
           [2, 3]])

&gt;&gt;&gt; B = np.array([[1,2],[...]]></description><category></category></item></channel></rss>