《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)

Linux系统编程

Linux系统编程

YanlzLinux_APU_V01_1.0

严立钻

 

2020.02.03

 

 

 

 

 

 

##《Linux系统编程》发布说明:

++++“Linux系统编程”:是对“Linux系统编程”的综合探索;开发Linux环境下的应用程序时,需要使用大量的Linux函数;这些函数有的属于Linux操作系统的API,有的属于C语言的标准库函数

++++“Linux系统编程”:定位在一个科普类知识,了解Linux环境下的应用程序开发

 

@@提示:有些博客可能只是开了头,如果感兴趣的同学,可以“点赞”或“评论区留言”,只要关注的同学多了,那就会继续完善哟!(“++==”,表示没有写完的,如果关注度不高就不完善了;“++ok++”,表示此篇博客已经完成,是阶段性完整的!)

 

$$$$博客溯源:

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第1张图片

 

++++【C/C++函数与算法(C库独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104026090

++++【C/C++函数与算法(C++库独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104062275

++++【C/C++函数与算法(算法独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104062527

++++【C/C++函数与算法(Linux C独立篇)】:https://blog.csdn.net/VRunSoftYanlz/article/details/104076473

++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html

++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html

++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html

++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/

 

 

++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点

 

 

 

 

##《Linux系统编程》目录

#第一篇:Linux系统编程

#第二篇:Linux系统下的C开发

#第三篇:Linux网络编程

#第四篇:Linux内核驱动

#第五篇:立钻哥哥带您Linux系统编程

 

 

 

#第一篇:Linux系统编程

#第一篇:Linux系统编程

#第一篇:Linux系统编程

++++立钻哥哥:程序是一个精确说明如何进行计算的指令序列;编写程序可以说就是这样一个过程:把复杂的任务分解成子任务,把子任务再分解成更简单的任务,层层分解,直到最后简单到可以用指令来完成

++++A1、文件与I/O

++++A2、文件系统

++++A3、进程

++++A4、Shell脚本

++++A5、正则表达式

++++A6、信号

++++A7、终端、作业控制与守护进程

++++A8、线程

++++A9、TCP/IP协议基础

++++A10、Socket编程

++++A11、立钻哥哥带您Linux系统编程

 

 

++A1、文件与I/O

++A1、文件与I/O

++A1、文件与I/O

++++立钻哥哥:学习Linux系统函数,这些函数的用法必须结合Linux内核的工作原理来理解,因为系统函数正是内核提供给应用程序的接口,而要理解内核的工作原理,必须熟练掌握C语言,因为内核也是用C语言写的,在描述内核工作原理时必然要用到“指针”、“结构体”、“链表”等来组织

++++[文件描述符]:是文件描述符表的索引(0123),用int型变量来保存;当调用open打开一个现有文件或创建一个新文件时,内核分配一个新的文件描述符并返回给进程,当读写该文件时,文件描述符被作为参数传给readwrite

#define STDIN_FILENO 0

#define STDOUT_FILENO 1

#define STDERR_FILENO 2

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第2张图片

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第3张图片

 

++open

++++立钻哥哥:open函数可以打开或创建一个文件

int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

 

++close

++++立钻哥哥:close函数关闭一个已打开文件

int close(int fd);

 

++read/write

++++立钻哥哥:read函数从打开的设备或文件中读取数据;write函数向打开的设备或文件中写数据

ssize_t read(int fd, void *buf, size_t count);

ssize_t write(int fd, const void *buf, size_t count);

 

#include <unistd.h>

#include <stdlib.h>

 

int main(void){

    char buf[10];

    int n;

 

    n = read(STDIN_FILENO, buf, 10);

    if(n < 0){

        perror(立钻哥哥:read STDIN_FILENO);

        exit(1);

    }

    write(STDOUT_FILENO, buf, n);

 

    return 0;

}

 

++lseek

++++立钻哥哥:lseek和标准IO库的fseek函数类似,可以移动当前读写位置(或者叫偏移量)

off_t lseek(int fd, off_t offset, int whence);

 

off_t currpos;

currpos = lseek(fd, 0, SEEK_CUR);

 

++fcntl

++++立钻哥哥:可以用fcntl函数改变一个已打开的文件的属性,可以重新设置读、写、追加、非阻塞等标志(这些标志称为File Status Flag),而不必重新open文件

int fcntl(int fd, int cmd);

int fcntl(int fd, int cmd, long arg);

int fcntl(int fd, int cmd, struct flock *lock);

 

++ioctl

++++立钻哥哥:ioctl用于向设备发控制和配置命令,有些命令也需要读写一些数据,但这些数据是不能用read/write读写的,称为Out-of-band数据

int ioctl(int d, int request, ...);

 

++mmap

++++立钻哥哥:mmap可以把磁盘文件的一部分直接映射到内存,这样文件中的位置直接就有对应的内存地址,对文件的读写可以直接用指针来做而不需要read/write函数

void *mmap(void *addr, size_t len, int prot, int flag, int filedes, off_t off);

int munmap(void *addr, size_t len);

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第4张图片

 

 

 

 

 

++A2、文件系统

++A2、文件系统

++A2、文件系统

++++立钻哥哥:文件系统在内核中是如何实现的?如何呈现给用户一个树状的目录结构?如何处理用户的文件和目录操作请求?磁盘是一种顺序的存储介质,一个树状的目录结构如何扯成一条线存到磁盘上?怎样设计文件系统的存储格式使访问磁盘的效率最高?各种文件和目录操作在磁盘上实际效果是什么?

++++Linux支持各种各样的文件系统格式:ext2ext3reiserfsFATNTFSiso9660等,不同的磁盘分区、光盘或其它存储设备都有不同的文件系统格式,然后这些文件系统都可以mount到某个目录下

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第5张图片

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第6张图片

 

++ext2文件系统

++++立钻哥哥:一个磁盘可以划分成多个分区,每个分区必须先格式化工具格式化成某种格式的文件系统,然后才能存储文件,格式化的过程会在磁盘上写一些管理存储布局的信息;文件系统中存储的最小单位是块(Block),一个块究竟多大是在格式化时确定的;启动块是由PC标准规定的,用来存储磁盘分区信息和启动信息,任何文件系统都不能使用启动块;启动块之后才是ext2文件系统的开始,ext2文件系统将整个分区划成若干个同样大小的块组(Block Group),每个块组都由:超级块(Super Block)、块组描述符表(GDTGroup Descriptor Table)、块位图(Block Bitmap)、inode位图(inode Bitmap)、inode表(inode Table)、数据块等部分组成

++++[超级块(Super Block)]:描述整个分区的文件系统信息,例如块大小、文件系统版本号、上次mount的时间等等;超级块在每个块组的开头都有一份拷贝

++++[块组描述符表(GDTGroup Descriptor Table)]:由很多块组描述符组成,整个分区分成多少个块组就对应有多少个块组描述符

++++[块位图(Block Bitmap)]:是用来描述整个块组中哪些块已用哪些块空闲的,它本身占一个块,其中的每个bit代表本块组中的一个块,这个bit1表示该块已用,这个bit0表示该块空闲可用

++++[inode位图(inode Bitmap)]:和块位图类似,本身占一个块,其中每个bit表示一个inode是否空闲可用

++++[inode表(inode Table)]:inode表占多少个块在格式化时就要决定并写入块组描述符中

++++[数据块]:对于常规文件,文件的数据存储在数据块中

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第7张图片

 

++VFS(Virtual Filesystem,虚拟文件系统)

++++立钻哥哥:Linux内核在各种不同的文件系统格式之上做了一个抽象层,使得文件、目录、读写访问等概念成为抽象层的概念,因此各种文件系统看起来用起来都一样,这个抽象层称为虚拟文件系统(VFSVirtual Filesystem

++++每个进程在PCBProcess Control Block)中都保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针:已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第8张图片

 

 

 

 

 

++A3、进程

++A3、进程

++A3、进程

++++立钻哥哥:每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linux内核的进程控制块是task_struct结构体

++++[forkexec]:是两个重要的系统调用;fork的作用是根据一个现有的进程复制出一个新进程,原来的进程称为父进程(Parent Process),新进程称为子进程(Child Process);系统中同时运行着很多进程,这些进程都是从最初只有一个进程开始一个一个复制出来的

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第9张图片

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第10张图片

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第11张图片

 

++exit和_exit函数

++++立钻哥哥:exit_exit函数用于终止一个进程

void exit(int status);

void _exit(int status);

 

++fork

++++立钻哥哥:fork用来创建新进程

pid_t fork(void);

 

++exec函数族

++++立钻哥哥:fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序;当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行;调用exec并不创建新进程,所以调用exec前后该进程的id并未改变

int execl(const char *path, const char *arg, ...);

int execlp(const char *file, const char *arg, ...);

int execle(const char *path, const char *arg, ..., char *const envp[]);

int execv(const char *path, char *const argv[]);

int execvp(const char *file, char *const argv[]);

int execve(const char *path, char *const argv[], char *const envp[]);

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第12张图片

 

++wait和waitpid

++++立钻哥哥:一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个;这个进程的父进程可以调用waitwaitpid获取这些信息,然后彻底清除掉这个进程

++++如果一个进程已经终止,但是它的父进程尚未调用waitwaitpid对它进行清理,这时的进程状态称为僵尸(Zombie)进程;任何进程在刚终止时都是僵尸进程,正常情况下,僵尸进程都立刻被父进程清理了

pid_t wait(int *status);

pid_t waitpid(pit_t pid, int *status, int options);

 

++进程间通信

++++立钻哥哥:每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷贝到内核缓冲区,进程2再从内核缓冲区把数据独奏,内核提供的这种机制称为进程间通信(IPCInterProcess Communication

++++[管道]:管道是一种最基本的IPC机制,由pipe函数创建

int pipe(int filedes[2]);

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第13张图片

 

 

 

 

 

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第14张图片

++A4、Shell脚本

++A4、Shell脚本

++A4、Shell脚本

++++立钻哥哥:Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多命令,让Shell一次把这些命令执行完,而不必一条一条地敲命令

++++Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行

++++A4.1、Shell概述

++++A4.2、Shell命令执行

++++A4.3、Shell基础语法

++++A4.4、Bash启动脚本

++++A4.5、Shell脚本语法

++++A4.6、Shell调试方法

++++A4.7、立钻哥哥带您Shell实战

 

 

++A4.1、Shell概述

++A4.1、Shell概述

++A4.1、Shell概述

++++立钻哥哥:UNIX系统上有很多种Shellshcshkshtcshbash

++++文件/etc/shells给出了系统所有已知(不一定已安装)的Shell

# /ect/shells: valid login shells

/bin/csh

/bin/sh

/usr/bin/es

/usr/bin/ksh

/bin/ksh

/usr/bin/rc

/usr/bin/tcsh

/bin/tcsh

/usr/bin/esh

/bin/dash

/bin/bash

/bin/rbash

/usr/bin/screen

++++用户的默认Shell设置在/etc/passwd文件中

 

 

 

 

++A4.2、Shell命令执行

++A4.2、Shell命令执行

++A4.2、Shell命令执行

++++立钻哥哥:用户在命令行输入命令后,一般情况下Shellforkexec该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程;比如cdaliasumaskexit等命令即是内建命令,凡是用which命令查不到程序文件所在位置的命令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令

#! /bin/sh

 

cd ..

ls

++++Shell脚本中用#表示注释,相当于C语言的//注释;但如果#位于第一行开头,并且是#!(称为Shebang)则例外,它表示该脚本使用后面指定的解释器/bin/sh解释执行;如果把这个脚本文件加上可执行权限然后执行

$chmod +x myscript.sh

$./myscript.sh

++++Shellfork一个子进程并调用exec执行./myscript.sh这个程序,exec系统调用应该把子进程的代码替换成./myscript.sh程序的代码段,并从它的_start开始执行

 

 

 

 

++A4.3、Shell基础语法

++A4.3、Shell基础语法

++A4.3、Shell基础语法

++++立钻哥哥:Shell变量由全大写字母加下划线组成,有两种类型的Shell变量:环境变量、本地变量;环境变量是任何进程都有的概念,而本地变量是Shell特有的概念;在Shell中,环境变量和本地变量的定义和用法相似

++++[环境变量]:可以从父进程传给子进程,因此Shell进程的环境变量可以从当前Shell进程传给fork出来的子进程;用printenv命令可以显示当前Shell进程的环境变量

++++[本地变量]:只存在于当前Shell进程,用set命令可以显示当前Shell进程中定义的所有变量(包括本地变量和环境变量)和函数

 

++文件名代换(Globbing):*?[]

++++立钻哥哥:*?[]”这些用于匹配的字符称为通配符(Wildcard

++++[*]:匹配0个或多个任意字符

++++[?]:匹配一个任意字符

++++[若干字符]:匹配方括号中任意一个字符的一次出现

$ls /dev/ttys*

$ls ch0?.doc

$ls ch0[0-2].doc

$ls ch[012][0-9].doc

 

++命令代换:`或$()

++++立钻哥哥:由反引号(`)括起来的也是一条命令,Shell先执行该命令,然后将输出结果立刻代换到当前命令行中

$DATE=`date`

$echo $DATE

 

$DATE=$(date)

 

 

++算术代换:$(())

++++立钻哥哥:用于算术计算,$(())中的Shell变量取值将转换成整数

++++$(())中只能用+-*/()运算符,并且只能做整数运算

$VAR=45

$echo $(($VAR+3))

 

++转义字符\

++++立钻哥哥:C语言类似,\Shell中被用作转移字符,用于去除紧跟其后的单个字符的特殊意义(回车除外),换句话说,紧跟其后的字符取字面值

$echo $SHELL

/bin/bash

$echo \$SHELL

$SHELL

$echo \\

\

 

++单引号

++++立钻哥哥:C语言不一样,Shell脚本中的单引号和双引号一样都是字符串的界定符,而不是字符的界定符;单引号用于保持引号内所有字符的字面值,即使引号内的\和回车也不例外,但是字符串中不能出现单引号;如果引号没有配对就输入回车,Shell会给出续行提示符,要求用户把引号配上对

$echo `$SHELL`

$SHELL

$echo `ABC\ (回车)

>DE` (再按一次回车结束命令)

ABC\

DE

 

++双引号

++++立钻哥哥:双引号用于保持引号内所有字符的字面值(回车也不例外)

$echo $SHELL

/bin/bash

$echo `date`

Sun Apr 20 11:22:33 CEST 2020

$echo Id say: \立钻哥哥\

Id say: 立钻哥哥

$echo \ (回车)

> (再按一次回车结束命令)

 

$echo \\

\

 

 

 

 

++A4.4、Bash启动脚本

++A4.4、Bash启动脚本

 

 

 

 

 

 

 

 

 

 

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第15张图片

++++VR云游戏=Unity+SteamVR+云技术+5G+AI;(说明:AI人工智能不是我们的主要研究技术,只是了解一下,领略一下有风的感觉!但是,VR是我们的研究重点

++++【Linux系统编程】分类:https://blog.csdn.net/vrunsoftyanlz/category_9694767.html

++++【Linux从入门到放弃】:https://blog.csdn.net/VRunSoftYanlz/article/details/104176967

++++【Linux C函数与算法】:https://blog.csdn.net/VRunSoftYanlz/article/details/104076473

++++【Linux系统编程】:https://blog.csdn.net/VRunSoftYanlz/article/details/104151861

++++【Linux内核API】:https://blog.csdn.net/VRunSoftYanlz/article/details/104189074

++++【Linux内核剖析】:https://blog.csdn.net/VRunSoftYanlz/article/details/104200535

++++【C++C铸就生存利器】分类:https://blog.csdn.net/vrunsoftyanlz/category_9325802.html

++++【人工智能AI2026】分类:https://blog.csdn.net/vrunsoftyanlz/category_9212024.html

++++【立钻哥哥CSDN空间】:https://blog.csdn.net/VRunSoftYanlz/

 

 

 

 

 

【XR游戏开发QQ群:784477094

《Linux系统编程》(Yanlz+VR云游戏+Unity+SteamVR+5G+AI+系统编程+APU+高级环境编程+内核驱动+IPC+进程间通信+Socket+网络编程+立钻哥哥+==)_第16张图片

++立钻哥哥推荐的拓展学习链接(Link_Url)

立钻哥哥推荐的拓展学习链接(Link_Url)

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

++++虚拟现实VR资讯: https://blog.csdn.net/VRunSoftYanlz/article/details/89165846

++++HTC_VIVE开发基础https://blog.csdn.net/VRunSoftYanlz/article/details/81989970

++++Oculus杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82469850

++++Oculus安装使用https://blog.csdn.net/VRunSoftYanlz/article/details/82718982

++++Unity+SteamVR=>VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/88809370

++++Unity减少VR晕眩症https://blog.csdn.net/VRunSoftYanlz/article/details/89115518

++++SteamVR简介https://blog.csdn.net/VRunSoftYanlz/article/details/86484254

++++SteamVR脚本功能分析https://blog.csdn.net/VRunSoftYanlz/article/details/86531480

++++SteamVR2.0开发指南https://blog.csdn.net/VRunSoftYanlz/article/details/86618187

++++SteamVR2.2.0开发指南https://blog.csdn.net/VRunSoftYanlz/article/details/88784527

++++SteamVR2.2.0快速入门https://blog.csdn.net/VRunSoftYanlz/article/details/88833579

++++SteamVR2.2.0交互系统https://blog.csdn.net/VRunSoftYanlz/article/details/89199778

++++SteamVR2.2.0传送机制https://blog.csdn.net/VRunSoftYanlz/article/details/89390866

++++SteamVR2.2.0教程(一)https://blog.csdn.net/VRunSoftYanlz/article/details/89324067

++++SteamVR2.2.0教程(二)https://blog.csdn.net/VRunSoftYanlz/article/details/89894097

++++SteamVR_Skeleton_Poserhttps://blog.csdn.net/VRunSoftYanlz/article/details/89931725

++++SteamVR实战之PMCorehttps://blog.csdn.net/VRunSoftYanlz/article/details/89463658

++++SteamVR/Extrashttps://blog.csdn.net/VRunSoftYanlz/article/details/86584108

++++SteamVR/Inputhttps://blog.csdn.net/VRunSoftYanlz/article/details/86601950

++++OpenXR简介https://blog.csdn.net/VRunSoftYanlz/article/details/85726365

++++VRTK杂谈https://blog.csdn.net/VRunSoftYanlz/article/details/82562993

++++VRTK快速入门(杂谈)https://blog.csdn.net/VRunSoftYanlz/article/details/82955267

++++VRTK官方示例(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82955410

++++VRTK代码结构(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82780085

++++VRTK(SceneResources)https://blog.csdn.net/VRunSoftYanlz/article/details/82795400

++++VRTK_ControllerEventshttps://blog.csdn.net/VRunSoftYanlz/article/details/83099512

++++VRTK_InteractTouchhttps://blog.csdn.net/VRunSoftYanlz/article/details/83120220

++++虚拟现实行业应用https://blog.csdn.net/VRunSoftYanlz/article/details/88360157

++++Steam平台上的VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/88960085

++++Steam平台热销VRhttps://blog.csdn.net/VRunSoftYanlz/article/details/89007741

++++VR实验:以太网帧的构成https://blog.csdn.net/VRunSoftYanlz/article/details/82598140

++++实验四:存储器扩展实验https://blog.csdn.net/VRunSoftYanlz/article/details/87834434

++++FrameVR示例V0913https://blog.csdn.net/VRunSoftYanlz/article/details/82808498

++++FrameVR示例V1003https://blog.csdn.net/VRunSoftYanlz/article/details/83066516

++++SwitchMachineV1022https://blog.csdn.net/VRunSoftYanlz/article/details/83280886

++++PlaySceneManagerV1022https://blog.csdn.net/VRunSoftYanlz/article/details/83280886

++++Unity5.x用户手册https://blog.csdn.net/VRunSoftYanlz/article/details/81712741

++++Unity面试题ABChttps://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++Unity面试题Dhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630838

++++Unity面试题Ehttps://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity面试题Fhttps://blog.csdn.net/VRunSoftYanlz/article/details/78630945

++++Cocos2dx面试题https://blog.csdn.net/VRunSoftYanlz/article/details/78630967

++++禅道[zentao]https://blog.csdn.net/VRunSoftYanlz/article/details/83964057

++++Lua快速入门篇(Xlua拓展):https://blog.csdn.net/VRunSoftYanlz/article/details/81173818

++++Lua快速入门篇(XLua教程):https://blog.csdn.net/VRunSoftYanlz/article/details/81141502

++++Lua快速入门篇(基础概述)https://blog.csdn.net/VRunSoftYanlz/article/details/81041359

++++框架知识点https://blog.csdn.net/VRunSoftYanlz/article/details/80862879

++++游戏框架(UI框架夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80781140

++++游戏框架(初探篇)https://blog.csdn.net/VRunSoftYanlz/article/details/80630325

++++.Net框架设计https://blog.csdn.net/VRunSoftYanlz/article/details/87401225

++++从零开始学架构https://blog.csdn.net/VRunSoftYanlz/article/details/88095895

++++设计模式简单整理https://blog.csdn.net/vrunsoftyanlz/article/details/79839641

++++专题:设计模式(精华篇)https://blog.csdn.net/VRunSoftYanlz/article/details/81322678

++++U3D小项目参考https://blog.csdn.net/vrunsoftyanlz/article/details/80141811

++++Unity小游戏算法分析https://blog.csdn.net/VRunSoftYanlz/article/details/87908365

++++Unity案例(Vehicle)https://blog.csdn.net/VRunSoftYanlz/article/details/82355876

++++UML类图https://blog.csdn.net/vrunsoftyanlz/article/details/80289461

++++PowerDesigner简介https://blog.csdn.net/VRunSoftYanlz/article/details/86500084

++++Unity知识点0001https://blog.csdn.net/vrunsoftyanlz/article/details/80302012

++++Unity知识点0008https://blog.csdn.net/VRunSoftYanlz/article/details/81153606

++++U3D_Shader编程(第一篇:快速入门篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372071

++++U3D_Shader编程(第二篇:基础夯实篇)https://blog.csdn.net/vrunsoftyanlz/article/details/80372628

++++Unity引擎基础https://blog.csdn.net/vrunsoftyanlz/article/details/78881685

++++Unity面向组件开发https://blog.csdn.net/vrunsoftyanlz/article/details/78881752

++++Unity物理系统https://blog.csdn.net/vrunsoftyanlz/article/details/78881879

++++Unity2D平台开发https://blog.csdn.net/vrunsoftyanlz/article/details/78882034

++++UGUI基础https://blog.csdn.net/vrunsoftyanlz/article/details/78884693

++++UGUI进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78884882

++++UGUI综合https://blog.csdn.net/vrunsoftyanlz/article/details/78885013

++++Unity动画系统基础https://blog.csdn.net/vrunsoftyanlz/article/details/78886068

++++Unity动画系统进阶https://blog.csdn.net/vrunsoftyanlz/article/details/78886198

++++Navigation导航系统https://blog.csdn.net/vrunsoftyanlz/article/details/78886281

++++Unity特效渲染https://blog.csdn.net/vrunsoftyanlz/article/details/78886403

++++Unity数据存储https://blog.csdn.net/vrunsoftyanlz/article/details/79251273

++++Unity中Sqlite数据库https://blog.csdn.net/vrunsoftyanlz/article/details/79254162

++++WWW类和协程https://blog.csdn.net/vrunsoftyanlz/article/details/79254559

++++Unity网络https://blog.csdn.net/vrunsoftyanlz/article/details/79254902

++++Unity资源加密https://blog.csdn.net/VRunSoftYanlz/article/details/87644514

++++PhotonServer简介https://blog.csdn.net/VRunSoftYanlz/article/details/86652770

++++编写Photon游戏服务器https://blog.csdn.net/VRunSoftYanlz/article/details/86682935

++++C#事件https://blog.csdn.net/vrunsoftyanlz/article/details/78631267

++++C#委托https://blog.csdn.net/vrunsoftyanlz/article/details/78631183

++++C#集合https://blog.csdn.net/vrunsoftyanlz/article/details/78631175

++++C#泛型https://blog.csdn.net/vrunsoftyanlz/article/details/78631141

++++C#接口https://blog.csdn.net/vrunsoftyanlz/article/details/78631122

++++C#静态类https://blog.csdn.net/vrunsoftyanlz/article/details/78630979

++++C#中System.String类https://blog.csdn.net/vrunsoftyanlz/article/details/78630945

++++C#数据类型https://blog.csdn.net/vrunsoftyanlz/article/details/78630913

++++Unity3D默认的快捷键https://blog.csdn.net/vrunsoftyanlz/article/details/78630838

++++游戏相关缩写https://blog.csdn.net/vrunsoftyanlz/article/details/78630687

++++UnityAPI.Rigidbody刚体https://blog.csdn.net/VRunSoftYanlz/article/details/81784053

++++UnityAPI.Material材质https://blog.csdn.net/VRunSoftYanlz/article/details/81814303

++++UnityAPI.Android安卓https://blog.csdn.net/VRunSoftYanlz/article/details/81843193

++++UnityAPI.AndroidJNI安卓JNIhttps://blog.csdn.net/VRunSoftYanlz/article/details/81879345

++++UnityAPI.Transform变换https://blog.csdn.net/VRunSoftYanlz/article/details/81916293

++++UnityAPI.WheelCollider轮碰撞器https://blog.csdn.net/VRunSoftYanlz/article/details/82356217

++++UnityAPI.Resources资源https://blog.csdn.net/VRunSoftYanlz/article/details/83155518

++++JSON数据结构https://blog.csdn.net/VRunSoftYanlz/article/details/82026644

++++CocosStudio快速入门https://blog.csdn.net/VRunSoftYanlz/article/details/82356839

++++Unity企业内训(目录)https://blog.csdn.net/VRunSoftYanlz/article/details/82634668

++++Unity企业内训(第1讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82634733

++++Unity企业内训(第2讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82861180

++++Unity企业内训(第3讲)https://blog.csdn.net/VRunSoftYanlz/article/details/82927699

++++Unity企业内训(第4讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83479776

++++Unity企业内训(第5讲)https://blog.csdn.net/VRunSoftYanlz/article/details/83963811

++++Unity企业内训(第6讲)https://blog.csdn.net/VRunSoftYanlz/article/details/84207696

++++钻哥带您了解产品原型https://blog.csdn.net/VRunSoftYanlz/article/details/87303828

++++插件https://blog.csdn.net/VRunSoftYanlz/article/details/83963905

++++计算机组成原理(教材篇)https://blog.csdn.net/VRunSoftYanlz/article/details/82719129

++++5G接入:云计算和雾计算https://blog.csdn.net/VRunSoftYanlz/article/details/88372718

++++云计算通俗讲义https://blog.csdn.net/VRunSoftYanlz/article/details/88652803

++++立钻哥哥Unity 学习空间: http://blog.csdn.net/VRunSoftYanlz/

--_--VRunSoft:lovezuanzuan--_--

你可能感兴趣的:(人工智能AI2026,C++C铸就生存利器,Linux系统编程)