03 2020 档案
摘要:[toc] 如果Linux启动脚本/etc/rc.local文件没有被执行,可能是因为rc.loca文件没有可执行权限,按以下步骤解决这个问题。 1、/etc/rc.local是/etc/rc.d/rc.local的软链接 执行 看看。 2、看看/etc/rc.d/rc.local的权限 执行 看
阅读全文
摘要:[toc] CentOS 7最小化安装成功后缺省是不启动网卡的,处理步骤如下: 以root用户登录。 1、没有ifconfig命令 执行ifconfig命令查看网络参数,如下: 根本没有ifconfig命令。 2、试试ip addr命令 用ip addr命令查看网络参数。 ens33是网卡,但是没
阅读全文
摘要:[toc] 在VMWare中安装的本地虚拟机CentOS7操作系统,动态IP地址会经常变化,设置成静态IP地址后,本地局域网可以互相访问,但CentOS7系统无法访问互联网,按以下步骤解决这个问题。 1、以系统管理员打开VMWare 2、选择虚拟网络编辑器菜单 3、选择VMnet8这一行 4、还原
阅读全文
摘要:[toc] 在CentOS7中,实现开机启动程序主要有两种方法: 1)把要启动的程序配置成自定义的系统服务,该方法我已经介绍过,请阅读: "CentOS7添加自定义系统服务" 。 2)在/etc/rc.local脚本文件中编写启动程序的脚本,本文将详细介绍这种方法。 1、/etc/rc.local
阅读全文
摘要:[toc] 一、Linux 简介 ============== Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多
阅读全文
摘要:[toc] 如果您是非计算机相关专业零基础兄弟,在学习Linux编程基础之前,建议先学习计算机基础、Linux操作系统基础知识和计算机网络基础知识。 计算机基础知识包括了很多常识性的内容,学了不一定有用,但是如果对一些基本常识不了解,可能会闹笑话。 我们学习的目标是成为C/C++程序员,不是Lin
阅读全文
摘要:[toc] 有三种方法可以获得Linux学习环境:安装本地虚拟机、购买云服务器和使用我们提供的服务器。 一、安装本地虚拟机 ================== 在您个人电脑的Windows系统中安装VMWare软件,然后在VMWare中安装CentOS7操作系统。对初学者来说,折腾一下本地虚拟机
阅读全文
摘要:[toc] Linux系统各发行版镜像下载,包括CentOS、RedHat Enterprise Linux、Ubuntu、Fedora、SUSE等。 建议选择地域离您比较近的服务器。 1、搜狐 例如: CentOS7.7的下载目录是 ,如下: 2、网易 3、北京理工大学 "http://mirr
阅读全文
摘要:[toc] Linux的命令有几百个,对程序员来说,常用的并不多,并不需要全部掌握。如果在学习和工作中遇到了陌生的Linux命令,不要轻易放过,多查资料,掌握它,日积月累,知识面就会宽广。 本文介绍的是Linux的常用命令,对初学者来说,建议系统化的学习Linux基础知识。 推荐视频: 这个视频非
阅读全文
摘要:[toc] 一、关于vi ========== vi是最强大的文本编辑器,没有之一。尽管 vi已经是古董级的软件,但还是有无数新人迎着困难去学习,可见其经典与受欢迎的程度。 无论是小说中还是电视剧,真正强大的武器都不容易驾驭,需要付出一些努力才能收获到更加强大的力量,对于vi这 上古神器 说更是如此
阅读全文
摘要:[toc] 一、环境变量的概念 ================== 1、环境变量的含义 程序(操作系统命令和应用程序)的执行都需要运行环境,这个环境是由多个环境变量组成的。 2、环境变量的分类 1)按生效的范围分类。 系统环境变量 :公共的,对全部的用户都生效。 用户环境变量 :用户私有的、自定
阅读全文
摘要:[toc] Linux有多种发行版本,各种发行版本之间安装软件包的方法和命令不一样,同发行版本之间安装软件包的方法也有不同。Linux主要有三大派系:红帽子派系(Redhat、Centos、Oracle Linux)、Debian派(Ubuntu、Kali),SUSE派系(SuSe、OpenSUS
阅读全文
摘要:[toc] 发博客的时候要注意,word有可能会把文中两个减号“ ”转换成中文的”–“,文中本就应该存在”–“,如果有,那一定是被转换了。 一、systemctl介绍 ================= CentOS7启用了新的系统和服务管理器,采用systemctl命令代替了老版本的servic
阅读全文
摘要:[toc] 一、防火墙的概念 ================ 防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。 专业的防火墙由软件和硬件组成,可以保护整个网络,价格也很贵,从几万到几十
阅读全文
摘要:[toc] 一、ftp简介 =========== ftp(File Transfer Protocol文件传输协议)是基于TCP/IP协议的应用层协议,用于文件的传输,包括ftp服务器(或服务端)和ftp客户端。 ftp客户端与服务器创建网络连接,请求登录服务器,登录成功后,就可以进行文件传输,
阅读全文
摘要:[toc] 一、安装ftp客户端软件包 ======================= 在CentOS7中,采用yum来安装ftp客户端软件包,如果已经安装,再次执行yum就会把软件包升级到最新版本。 二、ftp的用户 ============= 缺省情况下,ftp服务器操作系统用户名/密码也是f
阅读全文
摘要:[toc] 一、字符编码和字符集 ==================== 1、字符编码(character encoding): 字符编码是一种法则,在数字与符号之间建立的对应关系。不同的国家有不同的语言,包含的文字、标点符号、图形符号各有不同。例如在ASCII编码中,用数字97表达字符'a'与
阅读全文
摘要:[toc] 一、计划任务的基本概念 ====================== linux系统采用crond守护进程来控制系统和用户的计划任务,实现周期性的执行某种任务或处理某些事件。 Linux系统本身就有很多的计划任务,所以crond服务是默认安装和启动的。crond服务每分钟都会检查是否有
阅读全文
摘要:[toc] CentOS 6版本的系统服务是/etc/init.d启动脚本的方式,CentOS 7采用强大的systemctl来管理系统服务,大幅提高了系统服务的运行效率,但是服务的配置和以前版本完全不同,这是很大的进步,systemctl太简单易用了。 CentOS7添加自定义系统服务的步骤如下
阅读全文
摘要:[toc] 一、查看IP地址 ============== 1、ifconfig命令 ifconfig是Linux查看和配置网卡的命令, 上图中,我们重点关注五方面信息: 1)网卡名:即网卡设备名,lo是本机(全称loopback,是回环地址,经常被分配到127.0.0.1地址上,用于本机通信,经
阅读全文
摘要:[toc] 在写这篇文章之前,该用什么样的标题,我犹豫不定,草根?百万年薪程序员?会不会被人当成标题党。 二十年来,我所见过的草根程序员很多,优秀的草根程序员也不少。人与人之间的差别其实很小,很多人因为年少不懂事或其它的原因没有考上大学,但并不表示他的智商或能力有问题,如果现在开始学习,又会很犹豫
阅读全文
摘要:[toc] 在写这篇文章之前,该用什么样的标题,我犹豫不定,草根?百万年薪程序员?会不会被人当成标题党。 二十年来,我所见过的草根程序员很多,优秀的草根程序员也不少。人与人之间的差别其实很小,很多人因为年少不懂事或其它的原因没有考上大学,但并不表示他的智商或能力有问题,如果现在开始学习,又会很犹豫
阅读全文
摘要:[toc] 一、C语言基础知识的学习方法 =========================== 1)我的课程内容是精心整理的,某些知识点可能没有提到应用场景,但绝对不会是没用的知识。课程中没有提到的知识可以了解一下,但不必深入学习,意义不大。 2)学习不要贪快,欲速则不达的道理大家应该明白,学习
阅读全文
摘要:[toc] 一、基本类型 ============ C语言的基本数据类型包括字符型、整数型、浮点型。 1、字符型(char) 描述单个字符(一个字节),用半角的单引号包含起来,如'a'、'A'、'1'、'\$'等,键盘能输入的英文和半角的符号都是字符。 中文的汉字和标点符号是两个字节(GBK编码)
阅读全文
摘要:[toc] 一、一切都是数据 ================ 对计算机来说,图片、文字、音乐、视频等一切都是数据,在计算机中以二进制的0和1存储。 我们编写程序的目的就是告诉计算机如何输入、处理、传输、存储和展示数据。 数据分为静态数据和动态数据。 1、静态数据 永久性的数据,存储在永久的介质中
阅读全文
摘要:[toc] 一、数据输入 ============ 编写程序的主要目的就是为了处理数据。数据从哪里来?数据的来源有很多种方式,如从磁盘文件中读取数据、从数据库中读取数据、从网页中抓取数据等,还有一种原始的方式就是从键盘输入数据。 在C语言中,有三个函数可以从键盘获得用户输入。 getchar:输入
阅读全文
摘要:[toc] 一、C语言的运算符 ================= C语言有六种运算符,如下: 1)算术运算符; 2)赋值运算符; 3)sizeof运算符; 4)关系运算符; 5)逻辑运算符; 6)位运算符。 本章将只介绍算术运算符、赋值运算符和sizeof运算符,关系运算符和逻辑运算符放在其它章
阅读全文
摘要:[toc] 一、关系运算符 ============== 在讲if条件分支结构之前,先了解关系运算(Relational Operators),用于判断条件,决定程序的流程。 | 关系 | 数学中的表示 | C语言的表示 | | | | | | 小于 | \ | \ | | 大于等于 | ≥ |
阅读全文
摘要:[toc] 一、if else的不足 ================= C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else处理会不太方便,而且容易出现 if else配对出错的情况。例如,输入一个整数,输出该整数对应的星期几的中文表示。 以上代码摘自boo
阅读全文
摘要:[toc] 一、程序结构 ============ 在C语言程序中,一共有三种程序结构:顺序结构、选择结构(if和switch分支结构)、循环结构; 1)顺序结构 从头到尾一句接着一句的执行下去,直到执行完最后一句; 2)选择结构 执行到某个节点时,根据判断条件的结果来决定执行分支的方向,由if和
阅读全文
摘要:[toc] 先来看一个需求,超女选秀一共有5人参加,输入每位超女的体重并保存在变量中,最后计算出超女的的平均体重。 示例(book40.c) 如果有100名超女,这个程序将会很长很烦锁。 一、数组 ======== 数组(array)是一组数据类型相同的变量,可以存放一组数据,它定义的语法是: 例
阅读全文
摘要:[toc] 一、函数的概念 ============== 1、函数的概念 每个C程序都至少有一个函数,即main主函数 ,如果程序的任务比较简单,全部的代码都写在main函数中,但是,在实际开发中,程序的任务往往比较复杂,如果全部的代码都写在main函数中,main函数体将非常庞大臃肿,代码重复。
阅读全文
摘要:[toc] 一、变量的作用域 ================ 作用域是程序中定义的变量存在(或生效)的区域,超过该区域变量就不能被访问。C语言中有四种地方可以定义变量。 1)在所有函数外部定义的是全局变量。 2)在头文件中定义的是全局变量。 3)在函数或语句块内部定义的是局部变量。 4)函数的参
阅读全文
摘要:[toc] 一、变量的地址 ============== 内存变量简称变量,在C语言中,每定义一个变量,系统就会给变量分配一块内存,而内存是有地址的。如果把计算机的内存区域比喻成一个大宾馆,每块内存的地址就像宾馆房间的编号。 C语言采用运算符&来获取变量的地址。请看下面的示例。 示例(book50
阅读全文
摘要:[toc] 一、整数的概念 ============== 整数是我们生活中常用的数据类型,也是编程中常用的一种数据,C语言使用int关键字来定义整数变量(int是 integer 的简写)。 在定义变量的时候,可以加signed、unsigned、short和long四种修饰符。 signed :
阅读全文
摘要:[toc] 在实际开发中,程序员很少用单个字符来表示数据,字符的意义主要作为数组的时候可以形成一个字符串。在本章节中,我们重点介绍字符与整数之间的关系和ASCII码的相关知识。 字符类型char,只能用单引号' '来包围,不是用双引号" "包围。而字符串只能用双引号" "包围,不能用单引号' '包
阅读全文
摘要:[toc] 一、浮点数的概念 ================ 浮点数也称小数或实数。例如,0.0、75.0、4.023、0.27、 937.198 都是合法的小数。 C语言中采用float和double关键字来定义小数,float称为单精度浮点型,double称为双精度浮点型,long doub
阅读全文
摘要:[toc] 在很多教程中,字符串不过是一个以0结束的字符数组,但是,在我看来,字符串虽然不是C语言基本数据类型,但它比任何数据类型都重要,因为字符串是最常用的数据。 一、字符串的概念 ================ 我们可以把字符串储存在char类型的数组中,如果char类型的数组末尾包含一个表
阅读全文
摘要:[toc] 计算机进行算术运算时,要求各操作数的类型具有相同的大小(存储位数)及存储方式,不能将char 型( 1 字节)数据与 int 型(2、4或8字节)数据直接参与运算;由于存储方式的不同,也不能将 int 型数据与 double 型数据直接参与运算。 然而,由于 C语言的灵活性,在一个表达
阅读全文
摘要:[toc] 一、结构体的概念 ================ 前面的教程中我们讲解了变量和数组(array),变量是一个一个定义的,数组是一组具有相同类型的变量的集合。但在实际的工作和生活中,为了表达一个数据集,需要用不同数据类型的变量。例如超女基本信息,姓名为字符串,身高和年龄为整数,体重为浮
阅读全文
摘要:[toc] 一、格式化输出 ============== 格式化输出的函数有printf、sprintf和snprintf等,功能略有不同,使用方法大同小异,本章节我们先以printf为例。 对于 printf 函数,相信大家并不陌生。之所以称它为格式化输出函数,该函数的声名如下: 大家看到pri
阅读全文
摘要:[toc] 程序运行的时候,有些需要带参数,有些不带参数,例如linux操作系统的命令,它们本质上就是C程序。 1)Linux命令中,无参数的不多。 2)大部Linux命令是带参数的。 各位现在是在C语言学习的初级阶段,编写的C程序非常简单,运行不需要参数,但是在实际开发中,main函数一般都需要
阅读全文
摘要:[toc] 在C语言中,编写程序的时候不能确定内存的大小,希望程序在运行的过程中根据数据量的大小动态的分配内存。动态内存管理,就是指在程序运行过程中动态的申请和释放内存空间。 C语言允许程序动态管理内存,需要时随时开辟,不需要时随时释放。内存的动态管理是通过调用库函数来实现的,主要有malloc和
阅读全文
摘要:[toc] 对计算机来说,一切皆数据,超女的信息是数据、C语言源代码文件是数据、编译后的可执行程序也是数据,数据的存放方式有很多种,如内存、文件、数据库等,文件是极其重要的一种。 根据文件中数据组织形式的不同,可以把文件分为文本文件和二进制文件,C语言源代码是文本文件,编译后的可执行程序是二进制文
阅读全文
摘要: [toc] 目录的操作不论是在嵌入式还是应用软件编程都是必不可少的,不同的开发语言可能略有不同,本章节主要是讨论在Linux系统下目录的一系列操作,以我的个人经验,创建目录和列出目录中的文件这两个功能用得最多。 一、获取当前工作目录 在shell中我们可以直接输入命令pwd来显示当前的工作目录,
阅读全文
摘要:[toc] UNIX操作系统根据计算机产生的年代和应用采用1970年1月1日作为UNIX的纪元时间,1970年1月1日0点作为计算机表示时间的是中间点,将从1970年1月1日开始经过的秒数用一个整数存放,这种高效简洁的时间表示方法被称为“Unix时间纪元”,向左和向右偏移都可以得到更早或者更后的时
阅读全文
摘要:[toc] 本章节扩展一些目录和文件操作的更多知识,因为这些知识涉及到时间操作,所以放在时间操作之后的章节中介绍。 一、access库函数 ================ access函数用于判断当前操作系统用户对文件或目录的存取权限。 包含头文件: 函数声明: 参数说明: pathname文件
阅读全文
摘要:[toc] 我们在写程序的时候需要调用C语言提供的库函数,并通过函数的返回值判断调用是否成功。其实在C语言中,还有一个全局变量errno,存放了函数调用过程中产生的错误码。 为防止和正常的返回值混淆,库函数的调用一般并不直接返回错误码,而是将错误码(是一个整数值,不同的值代表不同的含义)存入一个名
阅读全文
摘要:[toc] C语言由源代码生成可执行程序的过程如下: C源程序-\ 编译预处理-\ 编译-\ 优化程序-\ 汇编程序-\ 链接程序-\ 可执行文件 其中编译预处理阶段,读取C源程序,对其中的预处理指令(以\ 开头的指令)和特殊符号进行处理。或者说是扫描源代码,对其进行初步的转换,产生新的源代码提供
阅读全文
摘要:[toc] 程序员写在编写程序的时候不可能是一帆风顺的,gcc编译器可以发现程序代码的语法错误,但不能发现程序的业务逻辑错误,调试程序是软件开发的内容之一。调试程序的方法有很多种,例如可以用printf语句跟踪程序的运行步骤和显示变量的值,本章节介绍一个功能强大的调试工具gdb。 一、gdb的安装
阅读全文
摘要:[toc] 在软件的工程中的源文件是很多的,其按照类型、功能、模块分别放在若干个目录和文件中,哪些文件需要编译,那些文件需要后编译,那些文件需要重新编译,甚至进行更复杂的功能操作,这就有了我们的系统编译的工具。 在linux和unix中,有一个强大的实用程序,叫make,可以用它来管理多模块程序的
阅读全文
摘要:[toc] C++读作“C加加”,是“C Plus Plus”的简称,C++是在C语言的基础上增加新特性,从语法上看,C语言是C++ 的一部分,C语言代码几乎不用修改就能够以 C++ 的方式编译。 对于C和C++的关系,有很多种说法,从表面上看,很容易认为C++是C的升级版,C++比C高大上,C过
阅读全文
摘要:[toc] 一、函数重载的概念 ================== 在实际开发中,有时候我们需要实现几个功能类似的函数,例如把变量的值写入文件,变量的类型可能是int、long、double、char,通过参数把变量传入函数。在C语言中不允许函数同名,程序员只能设计出四个不同名的函数,其函数声明
阅读全文
摘要:[toc] 一、C++结构体的新特征 ===================== C语言的结构体不允许有函数,定义结构体变量的方法是: 在C++中,结构体的成员可以有函数,定义结构体变量可以用: struct关键字可以不书写。 示例(book202.c) 运行效果 二、C++ 类和对象 =====
阅读全文
摘要:[toc] 超女选秀的例子我们玩了很久,为了学习的需要,暂时离开美眉们,我将采用实际项目开发的例子来讲解类的更多知识。 在C语言基础知识中已学习过文件操作,在实际开发中,为了提高效率,我会把文件操作封装成一个类,类的声明如下: 一、类成员的访问权限 ==================== C++
阅读全文
摘要:[toc] 对于习惯使用C进行开发的程序员来说,在看到C++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中,它除了取地址,还有其它的用途,叫做引用(reference),引用是C++的新特性。 一、引用的概念 ============== 引用就是变量的别名,对
阅读全文
摘要:[TOC] 一、运算符重载的概念 ==================== 在C语言中,运算符只能用于基本数据类型,例如,可以用==判断两个整数是否相等,但不能用于判断字符串是否相等,不能用于判断结构体,也不能用于判断类。 在C++中,运算符的重载就是把运算符的符号赋予新的含义,如果类重载了 \=
阅读全文
摘要:[toc] 在C语言中,用0结束的字符数组表示字符串,有些不方便:1)数组定义后大小不能改变;2)存入的内容只能比数组小,不能大,如果不小心存多了,会引起内存的溢出,这些问题让程序员有些郁闷。 C++的string属于STL(Standard Template Library,标准模板库)中的定义
阅读全文
摘要:[toc] 我们在声明数组的时候,采用的是datatype array[len]的形式,数组在分配之后,不能调整大小,删除和插入数据时操作十分的繁琐,虽然可以采用链表,但是链表的操作更麻烦,我们希望有更简单的方法。 与string类一样, 向量vector 同属于STL(Standard Temp
阅读全文
摘要:[toc] 一、C++动态内存 =============== 在C++程序中,内存需求都是在编写程序的时候声明变量来确定,但是程序在运行过程中需要动态分配内存的情况,C++语言将运算符new和delete合成在一起。 1、特点 中通过new关键字向系统内存申请。 C++中的动态内存分配是基于数据
阅读全文
摘要:[toc] 一、继承 ======== 继承是面向对象程序设计中最重要的一个概念。继承允许我们根据一个类来定义另一个类,达到了代码功能重用效果。 当创建一个类时,如果待创建的类与另一个类存在某些共同特征,程序员不需要全部重新编写成员变量和成员函数,只需指定继承另一个类即可,被继承的类称为基类或父类
阅读全文
摘要:[toc] 多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就可能会用到多态。 C++多态就是当调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。 一、静态多态 ============ 我们以前说过的函数重载就是一个简单的静态多态,静态多态是编译器在编译
阅读全文
摘要:[toc] 如果您是非计算机相关专业零基础兄弟,在学习Linux编程基础之前,建议先学习计算机基础、Linux操作系统基础知识和计算机网络基础知识。 计算机基础知识包括了很多常识性的内容,学了不一定有用,但是如果对一些基本常识不了解,可能会闹笑话。 我们学习的目标是成为C/C++程序员,不是Lin
阅读全文
摘要:[toc] 各位兄弟,在学习Linux编程基础之前,一定要先学习Linux基础知识和计算机网络基础知识,如果对这两方面的基础知识和基本概念不熟,谈不上Linux编程和网络通信编程。 一、socket通信的概念 ==================== socket也称作“套接字”,描述了计算机的I
阅读全文
摘要:[toc] book241.cpp和book242.cpp程序已经有点长了,有些啰嗦了,如果还想扩展功能,或用于多进程、多线程,程序结构将非常复杂。 不管是socket通信程序的客户端还是服务端,准备工作的代码又长又难看占地方,影响了主程序的结构,必须分离出来。 如何分离? 封装。 一、C的封装方
阅读全文
摘要:[toc] 一、进程的概念 ============== 什么是进程?进程这个概念是针对系统而不是针对程序员的,对程序员来说,我们面对的概念是程序,当输入指令执行一个程序的时候,对系统而言,它将启动一个进程。 进程就是正在内存中运行中的程序,Linux下一个进程在内存里有三部分的数据,就是“代码段
阅读全文
摘要:[toc] 前面的章节介绍socket通信的时候,socket的服务端在同一时间只能和一个客户端通信,并不是服务端有多忙,而是因为单进程的程序在同一时间只能做一件事情,不可能一边等待客户端的新连接一边与其它的客户端进行通信。 一、并发的服务端 ================ 如果把socket服
阅读全文
摘要:[toc] 进程的数据空间是独立的,私有的,不能相互访问,但是在某些情况下进程之间需要通信来实现某功能或交换数据,包括: 1)数据传输:一个进程需要将它的数据发送给另一个进程。 2)共享数据:多个进程想要操作共享数据,一个进程对共享数据的修改,别的进程应该立刻看到。 3)通知事件:一个进程需要向另
阅读全文
摘要:[toc] 一、如何让程序在后台运行 ======================== 在之前的章节中,如果要运行程序,在命令提示行下输入程序名后回车,程序被执行,然后等待程序运行完成,在程序运行的过程中,也可以用Ctrl+c中止它。 在实际开发中,我们需要让程序在后台运行,没有界面,没有用户输入
阅读全文
摘要:[toc] 一、共享内存的概念 ================== 共享内存(Shared Memory)就是允许多个进程访问同一个内存空间,是在多个进程之间共享和传递数据最高效的方式。操作系统将不同进程之间共享内存安排为同一段物理内存,进程可以将共享内存连接到它们自己的地址空间中,如果某个进程
阅读全文
摘要:[toc] 一、信号量的概念 ================ 信号量(信号灯)本质上是一个计数器,用于协调多个进程(包括但不限于父子进程)对共享数据对象的读/写。它不以传送数据为目的,主要是用来保护共享资源(信号量、消息队列、socket连接等),保证共享资源在一个时刻只有一个进程独享。 信号量
阅读全文
摘要:[toc] 一、线程的概念 ============== 和多进程相比,多线程是一种比较节省资源的多任务操作方式。启动一个新的进程必须分配给它独立的地址空间,每个进程都有自己的堆栈段和数据段,系统开销比较高,进行数据的传递只能通过进行间通信的方式进行。在同一个进程中,可以运行多个线程,运行于同一个
阅读全文
摘要:[toc] 一、线程同步的概念 ================== 线程同步?怎么同步?一起运行?一起停止?我当年听说线程同步这个词的时候,也是一头雾水。 在人们的日常生活中的锁大概有两种:一种是不允许访问;另一种是资源忙,同一时间只允许一个使用者占用,其它使用者必须要等待。 1)不允许访问的锁
阅读全文
摘要:[toc] 在C/C++程序中,经常需要调用其它的程序来先成某项任务,例如其它的C/C++程序、操作系统命令或Shell脚本,C/C++提供了exec函数族和system函数来实现这个功能。 一、exec函数族 ============== exec函数族提供了一个在进程中启动另一个程序执行的方法
阅读全文
摘要:[toc] 一、源代码的组织 ================ 我们通常把公用的自定义函数和类从主程序中分离出来,函数和类的声明在头文件中,定义在程序文件中,主程序中要包含头文件,编译时要和程序文件一起编译。 示例(public.h) 示例(public.cpp) 示例(book265.cpp)
阅读全文
摘要:[toc] 一、Oracle数据库 ================ Oracle Database,又名Oracle RDBMS,简称Oracle数据库。 Oracle数据库系统是美国Oracle公司(甲骨文)提供的以分布式数据库为核心的一系列软件产品,是目前世界上使用最为广泛的数据库管理系统,
阅读全文
摘要:[toc] 关于Oracle数据库安装的文章网上到处都是,百度一下就能找到很多,例如: 能百度到的Oracle安装是常规的方法,我就不讲了,本文向大家介绍一种更简单的非常规的安装方法,这种方法适用于初学者。 一、Oracle安装存在的问题 ======================== Orac
阅读全文
摘要:[toc] Oracle数据库管理员和开发者一定希望在自己台式电脑的Windows系统中搭建Oracle客户端工作环境。 Oracle客户端工作环境主要包括两个部分:1)Oracle数据库客户端软件,提供了Oracle客户端驱动和配置工具;2)PL/SQL Developer软件,在该软件中,可以
阅读全文
摘要:[toc] 一、Oracle环境变量 ================== Oracle数据库的安装和运行都需要环境变量,常用的Oracle环境变量如下。 1、ORACLE_HOME Oracle软件安装的根目录,存放了Oracle的可执行程序、管理工具、函数库、java虚拟机、帮助文档、示例代码
阅读全文
摘要:[toc] Oracle的数据类型有二十多种,包括字符串类型、数字类型、日期类型、LOB类型、LONG RAW& RAW类型、ROWID & UROWID类型。太多的数据类型很容易让初学者感到迷茫,在本文中,我将以程序员的视角,结合实际开发的需求来介绍Oracle的数据类型。 Oracle的数据类
阅读全文
摘要:[toc] 一、表的概念 ============ 表是数据库最基本的逻辑结构,一切数据都存放在表中,其它数据库对象(索引、视图、同义词等)都是为了更方便的操作表中的数据。Oracle数据库是由若干个表组成,每个表由列和行组成,如下表所示。 | 编号 | 姓名 | 颜值 | 身材 | 体重 | 身
阅读全文
摘要:[toc] 一、事务的基本概念 ================== 在数据库中事务是工作的逻辑任务,一个事务是由一个或一组SQL语句组成,通过事务机制确保这一组SQL语句的操作要么全部成功执行成功,完成整个工作任务,如果任何一条SQL执行失败,对数据表所做的操作全部撤销。 事务的目的就是为了保证
阅读全文
摘要:[toc] where子句用于从表中或临时数据集中查找满足指定条件的记录,可用于select、update和delete语句中的条件。 一、生成测试数据 ================ 用以下SQL创建超女基本信息表(T_GIRL),插入一些测试数据。 二、where子句的语法 ========
阅读全文
摘要:[toc] order by关键字用于对查询的结果集进行排序。 我们通过示例来介绍order by关键字的用法。 一、生成测试数据 ================ 用以下SQL创建超女基本信息表(T_GIRL),插入一些测试数据。 二、order by的语法 ==================
阅读全文
摘要:[TOC] Oracle数据库中存在一个特别的表dual,它是一个虚拟表,用来构成select的语法规则。Oracle对dual虚表的操作做了一些特别的处理,保证dual表里面永远只有一条记录。dual虚表存在给程序员带来了一些方便。 一、测试dual虚表 ================ dua
阅读全文
摘要:[toc] 在实际开发中,设计数据表的时候会把某些字段定义成一个自动增长的、唯一的流水号,例如记录编号、日志编号等,MySQL和SQL Server采用的是自增字段,Oracle和PostgreSQL采用了更灵活的序列生成器。在本文中,把序列生成器简称为序列。 一、创建序列 ======== 创建
阅读全文
摘要:[toc] Oracle采用date类型表示日期时间,这是一个7字节的固定宽度的数据类型,有7个属性,包括:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟和秒。本文中把date类型称为日期时间类型,简称日期。 对编程语言来说,日期是用字符串来显示和书写的,如果设置了NLS_DATE_FORMA
阅读全文
摘要:[toc] 一、Oracle的函数 ================ Oracle提供了很多函数用于数据的处理、统计和转换,这些函数增强了SQL语言的功能。 Oracle的函数分为单行函数、聚合函数和分析函数三大类。 1、单行函数 单行函数应用于SQL语句中时,只能输入一个数据,返回一个结果,常用
阅读全文
摘要:[toc] 在Oracle数据库中,为了实现特定的功能,可以自定义函数,就像C/C++语言,除了系统的库函数,程序员还会编写很多自定义的函数。 一、函数的创建、调用和权限 ========================== 1、创建函数 1)参数的模式有三种: in :只读模式,在函数中,参数只
阅读全文
摘要:[toc] 一、存储过程的概念 ================== 存储过程(stored procedure)是Oracle数据库中为了完成某功能的PL/SQL代码集,就像没有返回值的自定义函数。 二、存储过程的创建、调用和权限 ============================== 1
阅读全文
摘要:[toc] 一、触发器的概念 ================ 触发器是Oracle数据库的对象,类似存储过程和函数。存储过程和函数需要用户显示调用才执行,而触发器是由一个事件来触发运行,当某个事件发生时会自动地隐式运行,不能被显示的调用。 触发器的本质是存储过程,发生特定事件时Oracle会执行
阅读全文
摘要:[toc] Oracle有两个常用的伪列rowid和rownum,对伪列的操作类似于表中的列,你可以对其进行查询操作,但是你却不能对其进行增加、修改或者是删除。 一、rowid伪列 ============= 1、rowid的原理 Oracle数据库表中的每一行在数据库中有一个存放的位置,即row
阅读全文
摘要:@[toc] 对于初学者来说,在学习的过程中,创建表的数据量非常有限,感受不到索引的重要性,但是,我希望您把本章节的内容记在心里,等实际工作中遇到问题的时候能立即想到解决问题的方案。 总的来说,Oracle数据库非常强大,如果您的数据库性能较低或执行SQL语句的效率很低,最主要原因应该是索引设计不
阅读全文
摘要:[TOC] 一、视图的概念 ============== 视图是基于一个或者多个表上的预定义查询,这些表称为基表,从视图中查询数据的方法与从基表中查询数据的方法相同。视图是一个查看数据的窗口,是查询语句模板,视图本身没有数据,在数据库中只保存了视图的定义。 视图具有以下优点: 1)可以向数据访问者
阅读全文
摘要:[toc] 一、数据库链路的概念 ================ 数据库链路(database link),简称dblink,它是一个通道,是本地数据库与远程数据库之间的通道,通过dblink,在本地数据库中可以直接访问远程数据库的对象。 dblink不是应用程序与数据库之间的通道,而是数据库之
阅读全文
摘要:[toc] 一、同义词的概念 ============ 同义词(synonym)就是数据库对象的别名,这里的数据库对象包括表、视图、序列、存储过程、包等。 同义词有两方面的意义:1)简化了数据库对象名称的书写;2)提高了数据库对象的安全性(因为只知道对象的别名,不知道它的真名)。 Oracle的d
阅读全文
摘要:[toc] 在SQL语句中,可以给表和列起别名,这是临时的别名,与同义词不一样,同义词是永久的别名。 别名是多表查询和嵌套查询语句的基础知识,本文只介绍别名的语法,不涉及别名的应用技巧,大家在学习的时候可能觉得别名没什么意义,其实不然。 一、生成测试数据 ================ 用以下S
阅读全文
摘要:[toc] distinct关键字用于从查询的结果集中筛选出唯一值的记录。 我们通过示例来介绍distinct关键字的用法。 一、生成测试数据 ================ 用以下SQL创建超女基本信息表(T_GIRL),插入一些测试数据。 二、distinct示例 =============
阅读全文
摘要:[toc] 一、表的主键 ============ 在现实世界中,很多数据具有唯一的特性,例如身份证号码,在国家人口基本信息表中,一定不会存在多个人用同一个身份证号码的情况,再例如手机号码、QQ号码、银行帐号等等,还有学生管理系统,学生的年级、班级和学号三个字段组合起来是唯一的标识。 如果表中一个
阅读全文
摘要:[TOC] 如果SQL语句中包含了另一个select语句的时候,就称为子查询,子查询在select、insert、update或delete命令中都可以包含子查询,子查询还可以包含在另外一个子查询中,以便完成更为复杂的查询。 我通过一些示例来向大家介绍子查询的常用方法。 一、生成测试数据 ====
阅读全文
摘要:[toc] join(连接)是一个查询,它将来自两个或多个表、视图的数据组合在一起。 我通过一些示例来向大家介绍join的常用方法。 一、生成测试数据 ================ 1、创建超女基本信息历史表(T_GIRL_HIS) 2、创建超女基本信息表(T_GIRL) 3、测试数据说明 超
阅读全文
摘要:[toc] union就是把两个结果集合并起来,被合并的两个结果集的字段数量要相同,数据类型要相似(兼容)。 union在合并两个结果集的时候,会自动去除重复的数据。 union all在合并两个结果集的时候,只是简单的将两个结果集中的数据进行连接,不会去除重复的数据。 我通过一些示例来向大家介绍
阅读全文
摘要:[toc] 当创建一个新数据库实例时,Oracle会创建sys、system和scott数据库用户。sys和system是管理员用户,它们的密码在创建数据库时指定。scott是示范用户(用于学习),里面包括了一些测试数据(DEPT、EMP、BONUS和SALGRADE表),scott用户缺省是锁定
阅读全文
摘要:[toc] 一、表空间的概念 ================ Oracle数据库的数据存放在表空间中,表空间是一个逻辑的概念,它是由数据文件组成,表空间大小由数据文件的数量和大小决定。 表空间有三种:Permanent Tablespaces(永久表空间)、Temporary Tablespac
阅读全文
摘要:[toc] Oracle数据库的启用和关闭需要DBA权限,本文介绍的全部操作由sysdba来执行。 在运行数据库实例的操作系统的shell里执行以下命令就可以获得sysdba权限。 一、数据库的启动 ================ Oracle数据库实例的启动要经历三个阶段。 1)nomount
阅读全文
摘要:[toc] Oracle数据库的备份和恢复有很多种方法,是一个很大的话题,足可以写一本书,但是,本文只介绍采用exp和imp进行数据备份和恢复,这也是程序员最常用的方法。 本文涉及的备份与恢复的其它概念都是狭义的,不完整的或不完全准确的,仅供参考。 一、备份与恢复的概念 =============
阅读全文
摘要:[toc] 一、重做日志 ============ Oracle以SQL脚本的形式实时记录了数据变化的详细日志,这些日志保存在重做日志文件中。根据重做日志文件,可以对数据库进行备份和恢复。在下文中,把重做日志简称为日志。 可以简单的认为,数据库每次在commit之前,会把操作数据的SQL脚本写入日
阅读全文
摘要:[toc] 一、字符集的概念 ================ 1、字符编码(character encoding): 字符编码是一种法则,在数字与符号之间建立的对应关系。不同的国家有不同的语言,包含的文字、标点符号、图形符号各有不同。例如在ASCII编码中,用数字97表达字符'a'与字符集相对应
阅读全文
摘要:[toc] 一、概述 ======== Oracle的体系结构是数据库的组成、工作过程,以及数据库中数据的组织和管理机制,包含一系列组件(软件)、用户进程(User process)、服务进程(Server process、PGA)、SGA(共享池、数据缓存、日志缓冲区)、后台进程(SMON、DB
阅读全文
摘要:[toc] 一、概述 ======== Oracle通过数据字典来管理和展现数据库信息,数据字典储存数据库的元数据,是数据库的“数据库”。数据字典由4部分组成:内部RDBMS(X\$)表、数据字典表、动态性能视图(V\$)和(静态)数据字典视图。 数据字典系统表,保存在system表空间中。执行以
阅读全文
摘要:[toc] 一、freecplus框架简介 ===================== freecplus框架由C语言技术网组织开发、维护。其目的是为C/C++程序员供免费的、开源的程序库。freecplus框架与C++标准库结合使用,可以极大的提高程序员的开发效率。 freecplus框架的初衷
阅读全文
摘要:[toc] 一、世界编程语言排行榜 ====================== TIOBE编程语言排行榜是编程语言流行趋势的一个指标,每月更新,这份排行榜排名基于互联网有经验的程序员、课程和第三方厂商的数量。排名使用著名的搜索引擎(诸如Google、MSN、Yahoo!、Wikipedia、Yo
阅读全文
摘要:[toc] 2019年12月4日,我统计了某招聘网站,获得有效程序员招聘数据9万条。针对招聘信息,提取编程语言关键字,整编统计。 1、编程语言比例 =============== 2、工资 ======= 最高和最低工资,去掉了前后各2.5%。 3、版权声明 =========== 本文引用了CS
阅读全文
摘要:[toc] 这个世界上有太多的坑,如果我们不具备查询资料的能力和对现实世界的思考能力,入坑是大概率的事情。 C/C++语言能做什么?C/C++程序员在做什么?企业需要什么样的C/C++程序员?对初学者来说,要搞清楚这些问题并不容易。 农民种青菜之前,会考虑青菜行情(包括销量和价钱),如果您打算学习
阅读全文
摘要:[toc] 今天安装了CentOS7,选择的是最小化模式,安装完成后,输入ifconfig提示command not found(未找到命令),吃了一惊。 应该是最小化安装模式的问题,但是,ifconfig是最基本的命令,再省也不能省这个。 肯定是相关的软件包没有安装,开始解决问题吧。 1、找到i
阅读全文
摘要:[toc] 在CentOS中,输入ftp命令,提示command not found(未找到命令)。 ftp是FTP(文件传输协议)的客户端工具,CentOS不一定会缺省安装。 肯定是相关的软件包没有安装,开始解决问题吧。 1、找到ftp命令所在的软件包 找到的软件包比较多,显示了每个软件包的包名
阅读全文
摘要:[toc] 在CentOS中,输入telnet命令,提示command not found(未找到命令)。 telnet是TELNET(远程登录协议)的客户端工具,CentOS不一定会缺省安装。 肯定是相关的软件包没有安装,开始解决问题吧。 1、找到telnet命令所在的软件包 找到的软件包比较多
阅读全文
摘要:英文是程序员的重要技能,有多重要?比较重要,极其重要吗?也不一定。 我是高中毕业,在刚开始学习计算机的一两年,曾经买过许国璋英语四级和计算机英语方面的书籍,也认真的去学习过,但是对我程序员的生涯影响非常有限。 我儿子现在是初中二年级,他英语课程内容并不复杂,很多简单的词汇我曾经是学过的,但现在已经
阅读全文
摘要:高水平的厨师一定精通刀工,他不一定会亲自切菜,有人给他打下手,但他对刀工一定很熟练。 高水平的程序员指法也一定很好,与厨师不一样,对程序员来说,代码必须亲手输入,我从未听说过程序员让他人帮忙敲代码的(我干过一次,那一年,在北京,失恋了,要死要活的,四肢无力,写不了程序,我口述,项目经理帮忙敲代码,
阅读全文
摘要:[toc] 一、断章取义 ============ C语言出现50年了,有很多内容已过时,至少有百分之二十的内容没有实用价值。 C++更过份,至少有百分之七十的内容没有实用价值。 Linux也是,命令上千个,对程序员来说常用的不超过50个。 人的精力是有限的,对于不常用的知识,了解概念即可,不要去
阅读全文
摘要:[toc] 科学技术是第一生产力,社会对IT技术人才需求越来越大,IT技术从业人员的待遇薪资在各行业中列第一位。 中国经济高速发展的时代正在结束,很多传统行业的招聘职位越来越少,竞争激烈,待遇薪资也不理想,还有很多可能在当初选专业的时候就错了,所以很多非计算机专业的兄弟想转行IT技术,说准确一点就
阅读全文
摘要:[toc] 提到培训机构,很多人立即心生抗拒,抱怨坑太多。 没什么好抱怨的,在这个社会上,到处都是坑,哪个行业都一样,比如说医院,坑人的医生很多,治病救人的医生也有,看各人的判断能力和运气。 相比国内那些不入流的大学,培训机构更像救世主,时间更短,费用更低,技术更实用。 培训机构参差不齐,讲师缺乏
阅读全文
摘要:[toc] 1.编程语言比例 ============ | 排名 | 编程语言 | 平均工资 | 工资中位数 | 最低工资 | 最高工资 | 人头 | 人头百分比 | | | | | | | | | | | 1 | java | 13456 | 12500 | 3750 | 32500 | 965
阅读全文