Articles

  • System Administration

    Introduction

    System administration handbook.

  • Quick Sort

    References

    Implementations

  • Java Basics

    介绍

    记录一些零散的 java 入门知识,不定期更新。

  • shell 重定向

    Introduction

    使用一个例子简要介绍了 shell 编程中得输入输出重定向问题。

  • NVIDIA CUDA for Linux

    System Requirements

    Pre-install

    Verify CUDA-Capable GPU

    lspci | grep -i nvidia(update-pciids)
    

    如果你的显卡在这个列表上:http://www.nvidia.com/object/cuda_gpus.html,那么你的GPU就是CUDA兼容的。

    • 检查系统具有支持的Linux版本
    • 检查系统安装了gcc
    • 下载NVIDIA CUDA Toolkit
    • 安装NVIDIA CUDA Toolkit
    • 测试安装的软件运行正常并且可以与硬件通讯

    Install

    wget 'http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-8.0.44-1.x86_64.rpm'
    sudo rpm -i cuda-repo-rhel7-8.0.44-1.x86_64.rpm
    sudo yum clean all
    sudo yum install cuda
    
  • NVIDIA 驱动安装指南

    自动化 NVIDIA 驱动模块编译

    如果你使用的是在NVIDIA的官方网站下载的驱动,每当内核升级后,你必须重新手动安装nv驱动。本指南目标是当内核升级后自动进行安装驱动的过程,而不需要手工干预。

    本文假定你已经正确的安装了nvidia官方驱动,并在安装后已经重启了至少一次(这非常重要,因为如果你没有正确安装并重启,下述将不能正常工作)。使用非官方驱动的请跳过。

  • Collect Linux System Information

    Introduction

    This article described a guide to collect linux system informations.

    早些时候在 stackoverflow 上看到有人问有关系统驱动问题,而驱动是和硬件分不开的,所以回答问题的人很热心的反反复复问了好多有关具体的硬件信息,到最后却发现是软件问题。由此可见,系统的问题往往涉及很多方面,而提问的时候最好能附上自己的系统信息,这样懂的人很容易就可以帮你找到问题所在,下面简单介绍几种信息的收集方法。

  • rsync

    Table of Contents

  • C/C++ Basics

    Table of Contents

    面向对象

    面向对象的三个基本特征

    1. 封装:将客观事物抽象成类,每个类对自身的数据和方法实行protection(private, protected,public)
    2. 继承:广义的继承有三种实现形式:实现继承(指使用基类的属性和方法而无需额外编码的能力)、可视继承(子窗体使用父窗体的外观和实现代码)、接口继承(仅使用属性和方法,实现滞后到子类实现)。前两种(类继承)和后一种(对象组合=>接口继承以及纯虚函数)构成了功能复用的两种方式。
    3. 多态:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。

    多态

    多态指同一个实体同时具有多种形式。它是面向对象程序设计(OOP)的一个重要特征。 如果一个语言只支持类而不支持多态,只能说明它是基于对象的,而不是面向对象的。

    C++ 中的多态性具体体现在运行和编译两个方面:

    • 运行时多态是动态多态,其具体引用的对象在运行时才能确定。
    • 编译时多态是静态多态,在编译时就可以确定对象使用的形式。

    多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。 在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。

    多态的作用

    主要是两个:

    1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;
    2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。

    虚函数表

    对 C++ 了解的人都应该知道虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。 简称为 V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。 这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。

  • define vs const

    Introduction

    This article describes the differences between define and const in both C and C++ programming languages.