自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (25)
  • 收藏
  • 关注

原创 c++模板实现归并排序

最近正在学习各种排序算法,今天实现了归并排序。先上代码:#include "stdafx.h"#include templatevoid Merge(T A[],const int& p,const int& q,const int& r) // p表示开始排序的位置,q是结束位置,r是断点{T *A_array_help = new

2012-11-28 09:42:03 486 1

原创 经典数据结构之最大堆

最大堆和最小堆是常用的优先队列。 其概念也比较简单,用树的方式描述,就是,父节点比子节点大(最大堆),小则为最小堆。最大堆和最小堆广泛用在有先后顺序的任务调度中。比如cpu的任务调度等。先上代码,后面再详细解释和补充我的看法。头文件#ifndef CBINARYTREE_H_INCLUDED#define CBINARYTREE_H_INCLUDED#include templ

2014-08-06 23:44:35 599

转载 高性能IO模式--Reactor和Proactor

在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。       在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指

2014-08-06 09:04:18 551

原创 unix 服务器篇之基本 Tcp c/s架构

c/s架构是最为基础的网络构件。 各个平台,各个语言中,socket网络编程最为简单

2014-05-21 09:52:22 667

原创 经典数据结构之二叉树

二叉树是最为基本和最为重要的树结构,是堆的基础,也是学习树最为常见的入口。也是面试最常见的地方,虽然思路简单,却能在很短时间内考察到大家的功底。严格来说,树结构其实就是复杂的链接形式。.h文件/** *@ Program: the basic implement of BinaryTree; *@ Author: zhangyi; *@ Version: 1.0 *@ D

2013-12-29 00:02:28 506

原创 经典数据结构之:哈希(链接法)

哈希的链接法是最为常用的哈希方式,因为它易扩展,而且代码简单,基本就是将链表进行一定规则的操作。代码如下:#include "CLinearLink.h"templateclass CHashLink{private: // members; int m_nSize; CLinearLink* m_pLinks;public: // constructors; C

2013-12-24 22:44:41 1928

原创 经典数据结构之哈希(open address)

哈希表的意义在于保证一定存储规模的情况下实现快速寻址。这对于自然界的大部分数据是极有意义的。传统的哈希表碰撞的处理方式:开放地址法和链接法,本文是开放地址法。.h 文件#include #include template class CHashTable{private: // members; bool* m_pEmpty; E* m_pArray; si

2013-12-24 00:03:20 1304

原创 经典排序算法之bin排序

bin排序,顾名思义就是把对象放在盒子里进行排序,盒子本身已经代表了大小,所以,只要把对象放在对应的盒子,即可看做完成了排序,其排序时间复杂度为O(n)可以说是一种较为快捷的排序,然而,由于不是本地排序,所以空间复杂度较高。结合链表特性,将bin排序放在了链表里面如下:.h#include #include templateclass CLinearLink;templat

2013-12-04 23:28:51 1363

原创 经典数据结构之队列的链表实现方法

队列,其实就是先进先出,可以看做有特殊规定的数组或者链表,所以是适配器,并非一个全新的东西。具体代码如下:.h#include #include templateclass CLinkQueue;templatestruct SNode{ friend class CLinkQueue;private: SNode* m_pNext; T m_nData;publi

2013-12-01 22:18:56 620

原创 经典数据结构之数组实现的队列

队列和栈是最为基础的也是最为重要的数据结构。它采用先进先出的方式,广泛应用于网络编程中,套接字接受队列,消息队列,以及操作系统的优先队列中。归根到底,它和栈的区别就是每个元素的权重问题,所以可以统一看作一种具有优先级的线性表适配器。本文实现了基于数组的队列,其主要操作是添加和删除元素。为了实现O(1)添加O(1)删除元素,就需要移动队头坐标。.h#ifndef CQUEUE

2013-11-28 23:54:54 711

原创 经典数据结构之链表实现的栈

数组和链表是线性表的两种表现方式,而栈作为一种适配器,既可以用数组实现,也可以用链表实现,由于采用后进先出的方式,两者添加和删除元素都是O(1)的。主要区别之处是数组本身使用的空间较小,因为只需要用n个元素外加长度属性就好了。链表使用的空间较大,这是因为节点本身需要一个指针和数据来表示。#include #include templatestruct CLinkStack;temp

2013-11-27 23:50:52 548

原创 经典数据结构之稀疏矩阵

数据的存储形式,不外乎链表和类数组两种。使用二维数组存储矩阵,如果该矩阵是稀疏的,那么会浪费很多空间。例如一个4*4的对角阵,很明显,只有主对角线上才有元素。那么使用二维数组存储需要16个单位的 存储空间。然而通过定义一个结构体:templatestruct SDataType{ friend class CSparseMatrix; int m_nRow; int

2013-11-26 23:44:32 780

原创 经典数据结构之矩阵的基本运算

用一维数组来表示矩阵其实质与二维数组没啥区别,只是多了下标一步映射而已。由于方法本身很简单,所以不多做介绍。很容易扩展转置等方法,从而实现一个更为全面的矩阵类型。CMatrix.h#ifndef CMATRIX_HHH#define CMATRIX_HHH#include #include #include templateclass CMatrix{private: /

2013-11-24 21:05:00 1986

原创 经典数据结构之二维矩阵的基本运算

数组的数组即是矩阵,这篇文章就是很好的例子。往往我们会抱怨c++ std里面没有现成的矩阵运算库,其实,矩阵运算十分容易构造,不论是二维数组,还是经过打包的数组,甚至是vector等容易,都可以很轻易地做出扩展,满足我们复杂的要求。具体代码如下所述:.h文件#ifndef CARRAY2D_HHH#define CARRAY2D_HHH#include #include

2013-11-21 23:26:19 1912

原创 经典数据结构之一维矩阵的基本操作

矩阵是用来进行大型数据处理的常用数据表达形式。最基本的矩阵自然是一维矩阵,而从概念上,数组可以看作一个一维矩阵。另一方面,数组的数组即是二维矩阵。其实,通过下标映射,一维矩阵可以表达所有维度的矩阵。下面先由一维矩阵说起。.h文件#include #include #include templateclass CArray1D{private: // members; int

2013-11-18 23:39:10 3288

原创 经典数据结构之内存池技术

一般来说,使用堆来动态分配内存是常用的方式。然而,如果不断申请堆,会造成内存碎片,以至于由于堆本身大小的限制,难以再申请出连续空间的堆,显然造成了内存利用不合理。所以,有必要对内存申请进行一些管理。对于大型程序来说,很必要,提前申请一定量的堆,一定比不断申请快很多。使用数组方式,可以很快检索到可用的空间,并O(1)进行存取,而节点做成链表结构,更可以在O(1)释放某个空间之后找到合适的节点进行分配

2013-11-12 10:00:46 1025

原创 经典数据结构之间接寻址

线性表主要有两中表现方式,一种是连续存储式,例如数组,另一种是非连续存储式,例如链表。 相比于链表,数组最大的好处就在于可以随机存取,链表的最大优势是,能够有效利用存储空间,合理的添加,删除操作只需要o(1)。于是诞生了间接寻址,即是把数组与链表的优点结合起来。代码如下:#ifndef INDIRECTLIST_HH#define INDIRECTLIST_HH#include

2013-11-11 19:21:18 1013

原创 经典数据结构--双向链表

双向链表是数据存储的一种表达方式。相比单链表本身,双向链表有一个很重要的优势就是,可以回头,然而也因此需要付出多个指针的存储空间代价。代码如下所示:#ifndef DOUBLELIST_HHH#define DOUBLELIST_HHH#include templateclass CDoubleList;templatestruct SDNode{private

2013-11-06 23:29:23 482

原创 经典数据结构与算法之循环单链表

循环链表是链表的经典变种,它可以解决很多问题。比如有个考察大数据的问题,假如有10亿个数据,如何选出其中最大的十个数。显然,我们可以构造一个循环链表,然后依次插入这10亿个数,与之前最大的数进行比较,如果大则插入,否则跳过。思路很简单,循环链表唯一的不同之处是,尾节点的next指针指向头结点。具体地说代码如下:#ifndef CIRCULARLINK_HHH#define CIR

2013-11-04 22:46:24 580

原创 泊松随机数产生

随机数是计算机模拟仿真领域里面最常见的。随机数发生器,广泛应用于系统分析,例如网络中请求量到达,以及其他排队原理中。代码如下,远离后续再补充:#ifndef POSSION_HHH#define POSSION_HHH#include #include #include #include using namespace std;#define DEBUGvoid See

2013-11-04 13:26:30 1848

原创 经典数据结构--简单链表

链表作为最为常见的数据结构,它不需要连续的存储空间,插入和删除操作可以做到o(1)。可以说是链式数据结构的基础,树,图等其实都是复杂链表。针对专门的问题,例如跳表,循环队列等,都是各个面试常遇到的问题。具体代码如下所述,主要实现了关键部分,未考虑异常(无法申请空间等)情况。#ifndef CLINEARLINK_HHH#define CLINEARLINK_HHHtemplatec

2013-11-02 22:12:26 558

原创 典型数据结构:线性表(基于数组的实现)

templateclass CLinearList{private: // data; T* m_pData; int m_nLength; int m_nSize;public: // constructors; CLinearList(void); CLinearList(int size); ~CLinearList(void); // methods; bool

2013-10-31 11:48:44 531

原创 二维微分方程组 龙格库塔 数值解

#include #include "Possion.h"#include using namespace std;float *function1(float,float,float);float *function2(float,float,float);void RungeKutta_2D(const float& t_init,const float& t_interv

2013-10-28 21:13:11 6113 1

原创 su与sudo使用详解

su与sudo这两个命令几乎是linux里面最常用的,然而这两个命令却并不简单,su - 与 su是最为容易混淆的两个命令。加上'-'是为了切换环境变量,这是在用户登陆时切换为该用户默认的环境变量。例如:su - root  等价于 su -   意味着登陆后会加载root用户的环境变量。 最常用的环境变量莫过于登陆后系统会将所处目录设为~/home/username[linux@

2013-10-15 10:59:39 840

原创 典型数据结构--基于链表的队列实现

#include using namespace std;templatestruct Node{T m_nData;Node* m_pNext;Node(T data);};templateNode::Node(T data):m_nData(data),m_pNext(NULL) {}templateclass C

2013-10-10 14:17:07 533

原创 经典数据结构--数组实现的栈

templateclass CStack{private: T* data; int length; int size;public: CStack(); ~CStack(); void Create(); bool IsEmpty() const; bool IsFull() const; T Top() const; void A

2013-10-09 17:39:37 677

原创 matlab 使数据具有统计意义

大家都会遇到这个问题。取到的数据量很大,想看看数据的分布,奈何画出图来总是由于噪声,导致层次不齐,反而淹没了规律。比较简单的方式就是取平均,平均值相比而言更具有统计意义,只要实例够多,就可以当作一种无偏估计。所以抽空做了桶划分的函数。具体做了两种,一种是桶大小一样的,一种是指数的。 平均方法如下:function aimlist = AvgBucket(arg_list,arg_buc

2013-09-17 16:58:51 776

原创 c++实现字符串分割

类似于python,shell,perl等语言都提供了方便的split()接口,用以分割字符串。c++/c需要自己写,这样耗时耗力还没效率,没保障的方法,当然是需要避免的。又是强大的boost库提供了方便。.h文件#ifndef DIRFILEOPT_HHHH#define DIRFILEOPT_HHHH#include #include #include using s

2013-09-13 19:47:27 1081

原创 c++ 利用boost 实现文件操作

对文件夹里面的文件进行遍历操作是基本技能之一,python,perl以及bash等脚本都很好的实现了文件遍历方法,对于c/c++来说,只能通过系统自定的api获取。虽然文件夹操作本身是调用操作系统内核的接口,但毕竟接口不够友好。       boost不愧是准标准库,filesystem提供了极为简便的方法,如下所示:// filesystem tut3.cpp ---------

2013-09-13 19:35:21 8719

原创 固定长度数组

实际应用中,有很多用到定长数组的时候,下面结合模板类给出一个定长数组的实现方式。#ifndef __FIXED_ARRAY_H#define __FIXED_ARRAY_H#include template class CFixedArray{public: CFixedArray(); CFixedArray(const CFixedArray &right)

2013-09-09 18:30:32 1149

原创 c++文件操作实现提取字段功能

最近做一些数据方面的挖掘,发现python或perl的split函数功能,c++没有。在linux下awk很容易提取出来,但是对于偏爱vs的我来说,写一个可以提取字段的split还是很有用的,纯粹用于数据清洗。多做几个函数,以后归并为类,做成库,就方便了,总是造轮子,是没有头的。#ifndef EXTRACT_DATA_HH#define EXTRACT_DATA_HH#include

2013-01-10 23:41:38 1182

原创 python遍历目录,读写文件

文件遍历是数据处理中最为基本的一部分。我们使用python的os模块,os里面有个walk函数可以以列表形式返回文件夹的父文件夹,里面所含文件夹以及它所含的文件。从而可以实现数据的遍历读取。#! /bin/pythonimport osimport sysimport os.pathdirroot = "G:\\data_to_resolve\\"line_num =

2012-12-11 15:30:49 2859

原创 冒泡排序

冒泡排序是在数据结构与算法中最为简单的一个排序方法,属于交换排序的范畴,当然也是原地排序。其机理是逐次比较,把最大的值冒出来,放在数组最后一个位置。同理,从头开始,将次大值冒出来放在数组倒数第二个位置,直到排序完成。显然两层循环嵌套,其最坏的情况是O(n-1)+O(n-2)+...+O(1),结果为O(n * n),在排序算法中属于效率较低的一类。templatevoid Bubble

2012-11-29 08:31:52 450

原创 c++实现插入排序模版

简单说一下,插入排序的原理:就像从小到大插入扑克牌一样,插入新牌之前,插入的牌序已经是从小到大排列好。所以,第一张牌即是i = 0 的那张,就应该从 i = 1开始插入。j是后来要插入的位置。具体说来,程序流程如下:具体说来:#include using std::cout;using std::endl;#ifndef Insert_Sort_HHH#define Ins

2012-11-28 23:15:56 502

Deeplearning with graph structured representations.pdf

图卷积神经网络--Thomas Kipf 的PHD论文,涵盖GCN的基本理论以及在无监督学习的应用。

2020-05-13

最小二乘法算法.pdf

最小二乘法的算法原理、推导及应用,包括高斯牛顿、LM及PDL等算法介绍

2019-05-16

英伟达光线追踪第七部分

这是英伟达光线追踪技术的第七版,主要讲解了全局光照技术

2019-05-07

GPU的硬件架构及pipeline架构ppt

GPU的原理 包括硬件设计,以及GPU的pipeline的详细介绍

2019-05-07

Vector field processing

This course reviews the three main families of discretizations used to design computational tools for vector field processing on triangle meshes: face-based, edge-based, and vertex-based representations. In the process of reviewing the computational tools offered by these representations, we go over a large body of recent developments in vector field processing in the area of discrete differential geometry. We also discuss the theoretical and practical limitations of each type of discretization, and cover increasingly-common extensions such as n-direction and n-vector fields.

2018-12-05

加州大学伯克利分校计算机系算法课程讲义

加大的算法讲义,由浅入深,为初级选手的进阶读物

2013-04-25

排队论基础

学习排队论的必备书籍,祥实,注重基础,同时也利于拔高

2013-04-17

c++ qt gui教程.pdf

c++ gui编程,主要采用qt库,是学习qt库不可多得的好书

2013-04-17

.GUI.Programming.with.Python.and.Qt

python基础学习以及可视化软件制作。借助强大的qt库,达到平台移植能力

2013-03-14

AT&TAssemblyLanguage.PDF

汇编语言开发力作,通俗易懂,经典著作.可以以王爽老师汇编语言为基础

2013-03-11

陈晓明-百度海量日志分析架构及处理经验分享

海量日志分析架构的经验,陈小明作为百度的核心人物,此经验极为珍贵

2013-01-11

boost 和 stl学习指南

准标准库和标准库的详细介绍,相得益彰,对于stl和boost的学习无疑是瑰宝

2012-12-04

boost 导论

boost库的详细介绍,作者花费了大量例子来剖析boost,深入而浅显。

2012-12-04

python模块介绍大全

python模块大全介绍,英文版。详细介绍了python的各个模块的使用方法,常用的和不常用的,都可在此找到

2012-11-22

gnuplot使用手册

gnuplot使用,实现科学绘图,简易方便,功能极其强大,容易做出比matlab更为好看的图,而且支持latex公式编辑,保存为pdf等强大功能

2012-11-22

红黑树讲解ppt

专业的红黑树讲解,透彻而细腻,学习红黑树的必备利器

2012-11-20

2013人人网试题

人人网的校招试题,北京地区的。人人给出18w+的高价,神往的对象

2012-11-20

hulu北京校招笔试题

hulu北京校招试题,居家旅行必备,具有较大的参考价值

2012-11-20

2013谷歌笔试题

谷歌的笔试题.作为业界巨头,谷歌的笔试题必然是具有极大的参考价值

2012-11-20

2013网易游戏笔试题

网易游戏笔试题,主要涵盖了一些基本的算法以及递归等的应用

2012-11-20

腾讯2013校招研发笔试题专辑

腾讯笔试题专辑。作为参考必备,不含答案,高清大图无码

2012-11-20

计算机学习书籍大全

高手的必经之路,从基本的操作系统到网络编程等高阶应用的必备书籍

2012-11-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除