Qingdujun's Blog

内心坚强,足够的自律能力

一文实现基本排序算法

本文实现了几种基本排序算法,包括插入排序(直接插入排序、折半插入排序和希尔排序)、交换排序(冒泡排序和快速排序)、选择排序(简单选择排序和堆排序)以及归并排序。 插入排序插入排序(Insertion Sort)是一种简单直观的排序算法。 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 直接插入排序直接插入排序(Straight Inserti......

C++通过virtual table访问类private成员函数

被声明为private的函数,在类外是无法被访问的,但是virtual table让一切变得不一样。 本来想研究————类的多个对象是否共享同一套虚表,答案是明确的:“Yes”。 在做实验的时候,意外的发现,可以通过虚表指针访问虚表中的函数(即使该函数被声明为私有的…)。 下面是实验内容, 1234567891011121314151617181920212223#include &l......

深度学习(1)Python手写Numpy神经网络

对神经网络实现时,为了追求效率一般采用向量化技术,而尽可能的减少显式使用for循环的次数。所谓向量化,就是采用矩阵运算来代替循环,将上一篇文章《深度学习(0)Logistics正向、反向传播推导》,向量化如下, $W=\left[w{1}, w{2} \dots w_{m}\right]$ $X=\left[x^{(1)}, x^{(2)} \dots x^{(m)}\right]$ ......

深度学习(0)Logistics正向、反向传播推导

定义损失函数(loss function)可以很好的表征单一样本下估计值 $a=\hat{y}$ 和真实值y(y=1或0)之间的误差。但我们知道,作为训练用的样本数据绝不可能只有一个,于是我们引入m个样本损失函数的算数平均值作为成本函数(cost function),用符号J来表。于是有, 仿射变换 $z=w^Tx+b$ 激活函数 $a=\sigma (z) = sigmoid(z) = ......

C++ new 内存开辟 & 构造函数

以前一直以为是由C++构造函数完成内存开辟的。 C++ 一个空内,它会默认生成一些函数,以前是4个,现在可能更多了… 123class Student {//...}; C++ 一般有两种生成对象的方法:一种是在堆上new一个对象,另一种是在栈上定义一个对象。堆上的空间由程序员自己管理,栈上的空间由系统负责维护。 我以前看了《深入探索C++对象模型》一本书,它说只有在编......

Jupyter Notebook远程访问 ssh通道建立

使用《Running a notebook server》上的方式,总是出问题。配置jupyter_notebook_config.py文件,明明按照官网上说的配置的,无缘无故的Jupyter Notebook无法启动等问题。或者是远程无法访问。 一气之下, 1$ rm -rf ~/.jupyter 现在整个世界都清净了。 我使用了另外一种方式远程访问Jupyter Notebook,主要......

ubuntu18.04.1lts gtx1060 anaconda3 cuda cudnn pytorch

以前,一直是安装anaconda3,接着安装CUDA,再配置cuDNN。 安装显卡驱动的事情,把我困扰了很长时间。首先是在Windows 10上面,Quadro K620,每次安装系统完毕,就陷入了无尽的重启中。后来花了半天的时间,发现是由于Windows 10会自动安装显卡驱动,为此…我进入安全模式,将显卡驱动给禁用了,系统终于可以安静的运行了。 后来,要开始准备NLP方面的研究了,必须使......

Linux网络篇:独有的I/O多路复用模型epoll(适用于大规模fd)

poll解决了fd上限问题,也将“入参”和“出参”区分了开来。但是,对于大规模并发系统poll的全拷贝操作,极大的影响了性能。为了解决该问题epoll模型被引进来了。 epoll模型是Linux 2.6以上版本的系统所独有的。它是一个比select、poll模型使用起来更简单,却又更高效的模型,它只关注“活跃”着的fd,特别适用于大规模并发场景。 Unix-like中并没有epoll模型,但......

Unix网络篇(4)与epoll类似的kqueue模型——Unix-like系统

poll解决了fd上限问题,也将“入参”和“出参”区分了开来。但是,对于大规模并发系统poll的全拷贝操作,极大的影响了性能。为了解决该问题kqueue模型被引进来了。对于epoll模型的介绍请参考《Linux网络篇:独有的I/O多路复用模型epoll(适用于大规模fd)》 说明: 本系列是Unix网络篇。所涉及到的内容适合于Unix-like(包括Mac OS X)。epoll模型几乎与......

Unix网络篇(3)poll模型突破fd上限

上一篇文章中说道select还存在两个缺陷。其一,fd_set被设置为上限为1024的数组,这就限制了fd的个数;其二,select函数的“传入参数”又被当成了“传出参数”,所以每次都需要重新设置参数。 这些问题,在poll中都已经被解决了。 1 服务端poll主要解决了select的上述两个问题。首先看一下,它的声明:1int poll(struct pollfd *, unsigned......