- 博客(56)
- 资源 (9)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 图的最短路径:Dijkstra、Bellman-Ford、SPFA、Floyd、A*算法汇总
图的表示方法最常用的表示图的方法是邻接矩阵与邻接表。邻接矩阵表示法设G是一个有n(n>0)个顶点的图,V(G)={v1, v2, …, vn},则邻接矩阵AG是一个n阶二维矩阵。在该矩阵中,如果vi至vj有一条边,则(i, j)项的值为1,否则为0,即: 邻接矩阵的实现很简单:int edge[n][n]={0};for(...){ ... //无向图的邻接矩阵表示 e
2017-07-24 16:32:17
7115
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 SQL Server 学习博客分享列表(应用式学习 + 深入理解)
SQL Server 学习博客分享列表1 - 4 篇文章来自51CTO-杜飞的博客;Wait…1. SQL Server 数据库文件管理部分:介绍了SQL Server数据库空间管理相关理论知识,这个文章大概介绍以下几方面:数据存储、读取基本单位区:统一区、混合区页面类型、 页面管理、页分配方法页系统、页面构成博客连接: http://dufei.blog.51cto.com/382
2017-07-13 11:16:24
915
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 特征选择和特征提取区别 、PCA VS LDA
机器学习中特征选择和特征提取区别 <div class="article_manage clearfix"> <div class="article_l"> <span class="link_categories"> 标签: <a href="http://www.csdn.ne
2017-03-25 15:29:19
9008
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
转载 深度学习Matlab工具箱代码详解
相关资源打包下载: http://download.csdn.net/download/tianjing0805/9939566 最近研究了几天深度学习的Matlab工具箱代码,发现作者给出的源码中注释实在是少得可怜,为了方便大家阅读,特对代码进行了注释,与大家分享。 在阅读Matlab工具箱代码之前,建议大家阅读几篇CNN方面的两篇经典材料,对卷积神经网络Matlab工具箱代码的理解有很大
2017-03-21 13:48:49
4786
1
原创 大小端存储模式的几个问题
1. 为什么大小端能够并存至今?答:历史惯性各有优势大端优点:符号位在所表示的数据的内容的第一个字节中,便于快速判断数据的正负和大小。 小端优点:低地址放低字节,所以在强制转换时不需要调整字节的内容。CPU做数值运算时从内存中依次从低到高取数据进行运算直到最后刷新最高位的符号位,这样运算方式会更高效。2. 发展现状Interl x86系列芯片使用...
2018-04-23 12:49:32
1378
原创 面试题【网络收发数据与缓存大小不匹配问题,TCP/UDP分析】
—————-此篇为找工作后的小脆所写, 比较基础——————题目 前提: 发送方一次发送20M数据,接受缓存4K; 讨论: TCP 和 UDP 协议下 ,发送方、接收方现象,并解释原因。 先回答问题:TCP协议: 发送方能发出去,接受方能接收到数据, 每次接收大小为4K,可循环接收; 【 相关函数: send recv】UDP协议: 发送方发送失败返回-1,接受方自然没收到数
2017-10-17 20:18:16
5195
1
原创 一个网络的面试题
说多了都是泪。 简单的面试题目被自己搞砸,浪费了一次大好的机会;题目发送方发送的数据大于接收方的接收缓存, TCP 协议下 ,接受方结果是什么呢(接受不全),可以用recv循环接受吗?(可以)。为什么呢?以上问题换成UDP协议又是什么结果?这句为什么问的我扎心内心中奔腾过好几个点,但是只答了一个TCP是可靠传输。UDP不行是因为UDP不可靠 。。。。。。请用板砖敲我。接下来让我好好总结总结我这
2017-08-23 10:49:37
430
原创 线程的概念、线程与进程比较
线程的基本概念 引入进程的目的,是为了使多道程序并发执行,以提高资源利用率和系统吞吐量;而引入线程,则是为了减小程序在并发执行时所付出的时空开销,提高操作系统的并发性能。 线程最直接的理解就是“轻量级进程”,它是一个基本的CPU执行单元,也是程序执行流的最小单元,由线程ID、程序计数器、寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资
2017-08-21 11:30:39
453
翻译 线程安全,可重入,信号安全
三个概念,线程安全,可重入,信号安全 先简单提一下, 线程安全,主要是针对数据竞争来说的,就是说:如果数据不需要共享,那就让每个线程私有;如果需要共享,那就加锁。 信号安全,其实也就是异步信号安全,是说线程在信号处理函数当中,不管以任何方式调用你的这个函数如果不死锁不修改数据,那就是信号安全的。也就是说一个可重入函数在信号处理函数当中不影响调用他的人本身的状态,其实就是一个ta
2017-08-18 10:32:51
1942
原创 const volatile 同时修饰一个变量
const 与 volatile 合称 “CV特性”; 指定变量不可被当前线程/进程 改变,但是有可能被其他的线程/ 进程改变
2017-08-16 21:00:56
333
原创 select、epoll的好文章待有时间整理一下
这篇总结的挺好:还给出了许多学习链接; select、poll、epoll之间的区别总结[整理] 但是和我以前的看的一篇文章很像,不知到谁是原著。 那篇的名字:【实现IO复用中的三个API(select、poll、epoll)的区别和联系】链接没了头重脚轻,对IO操作理解的好 我读过的最好的epoll讲解–转自”知乎 https://my.oschina.net/dclink/blog/2
2017-08-15 09:38:36
365
原创 【BOOST】boost : : noncopyable 分析,拷贝构造、赋值函数
继承他的类不能 通过拷贝构造和赋值函数操作来初始化对象; like this: 有一个类:AA AA aa; //OK//1. 拷贝构造AA bb(aa); // NO//2. 赋值函数AA cc; cc = aa ;// NO一个类的有4个基础函数: 构造函数 赋值函数 析构函数 复制构造函数 class noncopyable的基本思想是把构造函数和析构函数设置prot
2017-08-12 11:01:40
602
原创 通过函数指针使用虚函数表中的函数
虚函数是实现多态是通过维护一张虚函数表来实现的。在类对象的头4个字节中,有一个指向这个虚函数表的指针,我们称为Vptr;写一个类AAclass AA{public: virtual void F1() { cout << "AA:f1" << endl; } virtual void F2() { cout << "AA:f2" << endl
2017-08-09 13:47:48
772
1
原创 typedef 一个二维数组,用这个数组定义指针
翻阅笔记系列。。。typedef int Path[10][10];Path* p;此时的 p 是指针数组还是数组指针呢????我总是记不住。p 是一个指针,指向一个二维数组,所以p是数组指针;使用:(*p)[2][4] = 6;
2017-08-09 13:22:48
2901
原创 查找算法系列(三):字典查找
我是小脆皮, 今天写一个字典树的博文~~~字典树,就是26叉树。因为26个英文字母所以26个叉! 介绍完了。。。我也惊讶与我的辞藻这么不华丽。。。。 二叉树我们都知道, 不知道的狠狠的撞向豆腐~ 字典树不过就多了几个叉!他的数据结构定义如下:typedef struct node{ int nFlag; //标记到此是否有单词 char* pStr; //如果nFla
2017-08-09 10:41:51
3075
1
原创 写DLL 时,加与不加 "Extern C"区别
翻阅笔记系列 加与不加的区别, 我们可以过 depends 工具来查看; extern c 方式导出的函数, 在 DLL 中函数名就是我们定义的名字; 在C++中, 不使用exern c 方式导出, 在 DLL 中函数名字已经不是我们定义时的名字了。 添加了一些特殊符号。如果不注意这点, 有时会DLL 调用失败还不明其原因。 所以写DLL 时, 写完了拿工具看一下。这个工具安装VS是会附带,我
2017-08-08 20:56:41
2181
原创 计算闰年, 根据年份和月份返回天数(3种方法)
翻阅笔记系列 看以前的笔记,感觉就是 我以前还了解过这个。。。计算闰年int year;scanf("%d",&year);bool bFlag = year%(year%100?4:400)?false:true;if(true == bFlag){ //是闰年}else{ //非闰年}根据年份和月份返回天数方法1:推荐//得到每月的天数:#define
2017-08-08 19:28:57
6300
1
原创 Printf/Scanf 使用详解
翻阅笔记系列 看以前的笔记,感觉就是 我以前还了解过这个。。。printf:输出: XXX.XXprintf(“%.2f”,123456); //0.00printf(“%.2f”,12.3456); //12.34指定:m.n格式printf(“*%5.3d*”,123); //* 123*printf(“*%5.3d*”,12); //* 012
2017-08-08 19:20:48
538
原创 数组初始化:指定初始化项目
翻阅笔记系列 看以前的笔记,感觉就是 我以前还了解过这个。。。//1.指定初始化项目(C99)int arr[6] = {0,0,0,0,0,266}; //传统语法int arr[6] = { [5] = 266 }; //C99规定,初始化列表中使用带有方括号的元素下标可以指定某个特定元素。指定部分为0.//如果多次对一个元素进行初始化,则最后一次有效。如:int arr[6] =
2017-08-08 19:15:00
2597
原创 一个字节(8bit)的无符号整形变量,求二进制表示中“1”的个数。
//方法一,模2,余数为1,个数加1。再右移,直到v=0;时间复杂度为log2(v) int number(BYTE v){ int num=0; while(v){ if(v%2==1)num++; v=v>>1; //v=v/2; } return num; } */ /* //方法二:最后
2017-08-08 19:10:05
1769
原创 链表的快速排序 - 区间分割法
首先,回忆一下数组的快排步骤:函数参数: 数组arr, 起点nLow, 终点nHigh 功能: 把nLow 至 nHigh 段的数组进行一次快排。 结果:【比nMark小的元素】nMark【比nMark大的元素】#区间分割法 1. 取最后一个元素为标记,用nSmall标记小区间大小,i 用来遍历数组; 2. 遍历值小于标记值:小区间的下一个不是当前位置,需要交换
2017-08-08 15:25:30
527
原创 C#组件开发(2),添加属性和事件
刚进门什么都不知道的请拐到下面这里C# 组件开发,简介+ hello word 级别教程!这篇分享PropertyAttribute和EventAttribute EventAttribute有:BrowsableAttributeCategoryAttributeDescriptionAttributeDefaultEventAttributePropertyAttribute有:Br
2017-08-02 18:50:26
742
原创 C# 组件开发,简介+ hello word 级别教程!
我对C# 的理解仅限于使用层面, 想看深入式的不在这里。啰里八嗦的前言当年,在老师要求我做一个组件的时候我在网上查了很久资料,蹦出来的不外乎是某某培训之类,进去连免费课程都不给看一节。但是黄天不负苦心人系列,终于找到一些珍贵资料,也让我对 C#组件有了一点零星的认识。接下来让我分享一下这点知识。首先, 先普及一下知识。 控件分为:复合控件、扩展控件、组件。复合控件: 现有控件进行组合,形成新控件
2017-08-02 18:28:49
5338
原创 STL - next_permutation 详细原理剖析
1. 数组的全排列求给定数组的全排列。如:输入: 1,2,3输出: 1 2 3 1 3 2 2 1 3 2 3 1 3 2 1 3 1 2 这里来一道算法题:算法题:实现一个整型数组的全排列,void perm(int list[], int k, int m)参数说明:list,数组;k开
2017-07-28 15:43:19
430
转载 详细解说STL hash_map
为什么需要hash_map,用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改: 岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典... 这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找”张三丰”的信息,最傻的方法就是取得所有的记录,然后
2017-07-27 15:08:00
393
原创 select、 poll 、epoll 区别与联系
理解完IO复用后,我们在来看下实现IO复用中的三个API(select、poll和epoll)的区别和联系select,poll,epoll都是IO多路复用的机制,I/O多路复用就是通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写
2017-07-25 16:45:48
361
转载 基于稀疏表示的人脸识别
本文主要记录自己在学习稀疏表示在人脸识别中的应用所遇到的问题作一简单的总结。1. 问题背景 信号的稀疏表示并不是新的东西。我们很早就一直在利用这一特性。例如,最简单的JPEG图像压缩算法。原始的图像信号经过DCT变换之后,只有极少数元素是非零的,而大部分元素都等于零或者说接近于零。这就是信号的稀疏性。 任何模型都有建模的假设条件。压缩感知,正是利用的信号的稀疏性这个
2017-07-25 16:24:13
1637
转载 【Boost系列】boost库中thread多线程详解1
1. 概述线程就是,在同一程序同一时间内允许执行不同函数的离散处理队列。 这使得一个长时间去进行某种特殊运算的函数在执行时不阻碍其他的函数变得十分重要。 线程实际上允许同时执行两种函数,而这两个函数不必相互等待。一旦一个应用程序启动,它仅包含一个默认线程。 此线程执行main() 函数。 在main()中被调用的函数则按这个线程的上下文顺序地执行。 这样的程序称为单线程程序。反之,那些创建新的线程
2017-07-24 16:29:24
670
原创 进程、线程(概念 、状态、创建过程、区别、同步等)
进程与PCB进程:进程是程序的一次执行过程,是系统进行资源分配和调度的一个独立单位。进程实体(进程映像):由程序段、相关数据段和PCB三部分构成。进程是动态的,进程实体是静态的。PCB(进程控制块):系统利用PCB来描述进程的基本情况和运行状态,进而控制和管理进程;所谓创建进程,实际上是创建进程映像中的PCB;PCB是进程存在的唯一标志。进程的状态进程有5种状态,其中前3种是基本状态。(1)运行态:
2017-07-24 16:20:49
369
转载 epoll的内部实现 看了就会懂
epoll是Linux高效网络的基础,比如event poll(例如nodejs),是使用libev,而libev的底层就是epoll(只不过不同的平台可能用epoll,可能用kqueue)。epoll能够高效支持百万级别的句柄监听。epoll高效,是因为内部用了一个红黑树记录添加的socket,用了一个双向链表接收内核触发的事件。是系统级别的支持的:当某一进程调用epoll_create方法时,L
2017-07-24 15:45:35
4983
3
转载 深度学习Matlab工具箱代码注释——cnnapplygrads.m
%%=========================================================================%函数名称:cnnapplygrads(),权值更新函数%输入参数:net,权值待更新的卷积神经网络;opts,神经网络训练的相关参数%输出参数:%算法流程:先更新卷积层的参数,再更新全连接层参数%注意事项:%%==============
2017-07-24 09:58:25
800
转载 深度学习Matlab工具箱代码注释——cnnbp.m
%%=========================================================================%函数名称:cnnbp()%输入参数:net,呆训练的神经网络;y,训练样本的标签,即期望输出%输出参数:net,经过BP算法训练得到的神经网络%主要功能:通过BP算法训练神经网络参数%实现步骤:1)将输出的残差扩展成与最后一层的特征map相
2017-07-24 09:57:27
957
转载 深度学习Matlab工具箱代码注释——cnnff.m
%%=========================================================================%函数名称:cnnff()%输入参数:net,神经网络;x,训练数据矩阵;%输出参数:net,训练完成的卷积神经网络%主要功能:使用当前的神经网络对输入的向量进行预测%算法流程:1)将样本打乱,随机选择进行训练;% 2)讲样
2017-07-24 09:56:23
1013
转载 深度学习Matlab工具箱代码注释——cnntrain.m
%%=========================================================================%函数名称:cnntrain()%输入参数:net,神经网络;x,训练数据矩阵;y,训练数据的标签矩阵;opts,神经网络的相关训练参数%输出参数:net,训练完成的卷积神经网络%算法流程:1)将样本打乱,随机选择进行训练;%
2017-07-24 09:55:31
1542
转载 深度学习Matlab工具箱代码注释——cnnsetup.m
%%=========================================================================% 函数名称:cnnsetup% 输入参数:net,待设置的卷积神经网络;x,训练样本;y,训练样本对应标签;% 输出参数:net,初始化完成的卷积神经网络% 主要功能:对CNN的结构进行初始化% 算法流程:1)% 注意事项:1)isOct
2017-07-24 09:52:24
2129
4
原创 查找算法系列(一):二分查找( 描述+代码)
1.分析1. 需要三个变量 1. nLow 2. nMid 3. nHigh2. 过程设待查数据为nFind, 数组为arr 如果 nFind > arr[nMid] nLow = nMid + 1; 否则 nHigh = nMid - 1;3. 时间复杂度: O(nlog^n)#include<stdio.h>
2017-07-23 10:02:38
606
1
原创 游戏地图寻路算法 -- A*(分析 + 实现 + 教学视频连接)
首先理解游戏地图怎么设定那里不让走那里让走: 把图片分成一块一块格子,标记各个格子是否能走;介绍一下A* A*的核心就是 : 一个评估函数 F = G + H + 2个表假设 从A点到B点: F = G + H: - F: 从A到B的最短路径长度; - G: 从起点,沿着产生的路径, 移动到指定点的耗费; - H: 预估值,估计从A到B多长
2017-07-22 17:20:37
5459
原创 十大基础排序 · 一 --- 直接插入排序(稳定)
1. 分析/*1. 直接插入排序(InsertSort)#时间复杂度: 最好时间复杂度:O(n) 平均时间复杂度:O(n^2) 最坏时间复杂度:O(n^2)#空间复杂度:O(1)#应用场合:1.元素特别少;2.数组基本有序;#分析: 1. 带排序 数组分成两部分 2. 将无序数组的元素依次插入到有序数组中去 2.1 保存无序的第一个
2017-07-22 16:41:35
487
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人