• dataStructure->Stack

    数据结构之堆栈

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    typedef struct dataStruct
    {
    elemType *LinkList;
    elemType *Stack;
    elemType *Queue;
    elemType *String;
    elemType *Array;
    elemType *Tree;
    elemType *Graph;
    elemType *Indexing;
    elemType *Sorting;
    }* dataStructure;

    堆栈定义

    堆栈我在早年学习微机原理的时候就已接触过。在对寄存器操作的时候,为了避免某些指令对寄存器中原先的值产生影响,在执行指令前,要进行入栈push操作,会将某些寄存器的值push到内存中,执行指令之后,执行出栈pop操作,主要作用就是现场保护与现场恢复。

  • 利用webhook自动更新hexo博客

    前言

    博客迁至VPS上,依旧用hexo生成静态网页,现在写博客的流程是:

    1. Cloud Studio写博客并生成
    2. 静态网站Push到github上的pages仓库(仓库已转私有)
    3. VPS上git pull

    未免太麻烦了有没有…所以了解到webhook这个东西,花了一点时间把搞定了,Push上去之后VPS端就不用Pull了。

    webhook原理图

    image
    略有不同的是,我这里并不是nodejs监听消息,而且不是直接将端口开放,而是用已有的nginx去做一下本地proxy。

  • dataStructure->LinkList

    数据结构之线性表

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    typedef struct dataStruct
    {
    elemType *LinkList;
    elemType *Stack;
    elemType *Queue;
    elemType *String;
    elemType *Array;
    elemType *Tree;
    elemType *Graph;
    elemType *Indexing;
    elemType *Sorting;
    }* dataStructure;

    线性表

    线性表分为顺序表和链表,链表分为单链表、双链表、循环链表(单循环链表和双循环链表)。

    顺序表

    1
    2
    3
    4
    5
    6
    7
    typedef struct
    {
    Elemtype *elem; //数组
    int length; //当前表的长度
    int listsize; //表的数组容量
    int incrementsize; //表增容量
    } SqList;

    顺序表的存储单元是连续的,也就是在内存中,表的元素顺序摆放。过于简单了,随便康康定义就行了。

    链表

    在存储单元之中不连续,通过指针连接起来,像链条一样故称之为链表

  • 几种排序算法

    排序算法

    1 冒泡(Bubble Sort)

    图解
    image

    空间复杂度 1
    平均时间复杂度 n^2
    最坏时间复杂度 n^2
    最好时间复杂度 n
    稳定性 Y

    算法步骤

  • 深度学习入门与实践(二分类、多分类、回归问题)

    二分类问题

    • 数据集 : imdb

    一些心得:

    二分类问题的神经网络输出为0或1,只有两种情况,故称为二分类,imdb数据集包含25000条电影的评价,将评价内出现的单词利用索引的方式保存在list里面,包含训练数据和测试验证数据,训练数据分为data和labels两部分,data记录评价,labels记录是否正面评价,例1为正面评价,0为负面评价。

    训练中的层还并没有完全搞清楚,不做解释。

  • 深度学习入门与实践(一)

    前言

    最近申请了一个实践项目,主要做图像分类识别的,虽说不知道能不能立项吧(已立项),但是既然已经决定往软件方面转了,所以有必要先搭建一下环境。对比了一下现有的深度学习框架,决定先安装谷歌的TensorFlow,然后再安装keras。

  • 编译适用于mt7620a的OpenWrt

    前言

    OpenWRT是一个高度模块化、自动化的嵌入式Linux系统,拥有强大的网络组建和扩展性,常常被用于工控设备、电话、小型机器人、智能家居、路由器以及VOIP设备中,其中在智能路由器上有广泛使用。同时它还提供了100多个已编译好的软件,而且数量还在不断增加。

    OpenWRT支持各种处理器架构,无论是ARM、X86、PowerPC或者MIPS都有很好的支持。其多达3000多种软件包,囊括从工具链(toolchain),到内核(Linux Kernel),到软件包(packages),再到根文件系统(rootfs)整个体系,是的开发者只需要简单的一个make命令就可以方便快速的定制一个具有特定功能的嵌入式系统。

    对于想学习嵌入式Linux开发的工程师来说,OpenWRT是非常适合的(引用)

    我第一次接触Openwrt是在2013年,那是正是高二,家里有一个TP-Link的wr740路由器,mips架构,4M的Flash,16M的内存,当时刷过dd-wrt和openwrt。

    第二次是在大二了,当时为了用路由器上校园网,撸了几台k2,研究了如何在openwrt等第三方路由器固件下实现锐捷和安腾的认证。

    今天我要给k2编译一下Openwrt最新的Snapshot固件,顺便解决一下不识别16M闪存的问题。

  • Linux下C语言的WAITPID函数的使用

    进程与程序

    进程是程序执行的过程,它是动态的。包括动态创建、调度、以及消亡。当用户在终端键入一个命令的时候,将启动一个进程。

    eg:

    1
    vim

    这个命令启动了一个vim进程,多个用户可以同时运行vim,但是程序只有一个,位于系统目录里的/usr/bin,每个用户的vim进程都是独立的。

  • ESP8266-01 deauther固件的刷写和体验

    ESP8266

    Wi-Fi芯片,内封 8 Mbit Flash,去年买的。

    ESP8266_deauther固件

    Scan for WiFi devices, block selected connections, create dozens of networks and confuse WiFi scanners!
    扫描周围的wifi,屏蔽选择的连接,创建一系列Wi-Fi信号,混淆连接,嘻嘻。
    GitHub地址:spacehuhn/esp8266_deauther

    于是我把这个固件烧录到我的ESP8266-01上(GPIO口很少的那个,如下图),感觉挺好玩的,确实可以干扰Wi-Fi信号,于是写下了这篇文章记录一下。
    image

    准备工具

    • ESP8266开发板
    • 烧录工具(下载)
    • 串口调试工具
    • USB-TTL转换板(我的是CH340,当然其他的也可以注意装驱动)
  • 硬改斐讯K2路由器

    前言

    五一放假了..前段时间剩下了几个华邦的25Q128(16Mbit)闪存,想着把家里用着的斐讯K2顺手改了吧。

    在对K2下手之前,事实上我已经改了两台AC9,一台WR740N,但都没有记录,因为当时没有什么时间,况且这种东西..有点小儿科…

    硬改所需装备

    • CH341编程器(如下图)
      image
    • 烙铁
    • 松香(助焊剂)
    • 镊子(夹住闪存)
    • 烧录夹
    • 焊锡丝
      image
/5