- 博客(25)
- 收藏
- 关注
原创 #define和typedef
1 #define和typedef的区别#define和typedef都可以用来给现有类型起别名,但#define只是简单的宏替换,在预编译时被处理;而typedef不是的,在编译时被处理。区别一#define dchar char *typedef char * tchar;dchar p1,p2; //等价于char *p1,p2;只是p1才是指针变量char * 类型,p2是...
2019-08-12 21:12:01 130
原创 解析Linux内核
解析Linux内核1 基本知识1.1 什么是Linux内核内核是操作系统的核心部分,为应用程序提供安全访问硬件资源的功能。内核向应用程序提供了统一和简洁的接口,降低应用程序设计的复杂程度,内核可以被看做是一个系统资源管理器,管理计算机系统中的所有软件个硬件。1.2编译内核本节介绍在PC上如何编译生成2.6版本的内核目标文件。Linux内核编译配置提供多种方式,如下所述。make co...
2019-08-12 21:11:46 133
原创 选择排序问题(java代码实现)
package Tset;/* * 选择排序问题 */public class Day05_SelectSort { public static void main(String[] args) { int[] arr = {23,344,21,534,45,2,4}; selectsort1(arr); for(int i= 0; i <arr.length ; i...
2019-08-12 21:11:25 133
原创 冒泡排序
实现原理实现代码package Tset;/* * 冒泡排序问题 */public class Day05_BubbleSort { public static void main(String[] args) { int[] arr = {23,344,21,534,45,2,4}; bubblesort(arr); for(int i= 0; i <arr...
2019-08-12 21:11:10 106
原创 内部类
1 内部类访问的特点(1)内部类可以直接访问外部类中的成员(2)外部类要访问内部类,必须建立内部类的对象一般用于类的设计,分析事物时,发现事物描述中还有事物,而且这个事物还在访问被描述事物的内容,这时就是还有事物定义成内部类来描述注意如果内部类中定义了静态成员,该内部类也必须是静态的。代码示例class Outer{ private static int num = 31; ...
2019-08-12 21:10:25 91
原创 多态
简单的说就是一个对象有这不同的类型。多态在代码中的体现:父类或者接口的引用指向其子类的对象;多态的好处:提高了代码的扩展性,前期定义的代码可以使用后期的内容;多态的弊端:前期定义的内容不能使用(调用)后期子类的对象;多态的前提:必须有关系,继承,实现;要有覆盖。abstract class animal{abstract void eat();}...
2019-08-12 21:09:41 76
原创 接口
abstract class AbsDemo{abstract void show1();abstract void show2();}当一个抽象类中的方法都是抽象的时候,这时可以将该抽象类用另一种形式定义和表示,就是接口interfance定义接口使用的关键字不是class,而是interfance.对于接口常见的成员:而且这些成员都有固定的修饰符1,全局常量:public st...
2019-08-12 21:09:23 89
原创 抽象类
所谓的抽象是笼统的,模糊的,看不懂的,不具体的。特点1,方法只有声明没有实现时,该方法就是抽象方法,需要被abstract修饰。抽象方法必须定义在抽象类中。该类必须被abstract修饰。2,抽象类不可以被实例化,因为调用抽象方法没有意义。3,抽象类必须有其子类覆盖所有的抽象方法后,该子类才可以实例化,否则这个子类还是抽象类。注意1,抽象类中有构造函数,用于给子类对象进行初始化;2,...
2019-08-12 21:09:06 105
原创 设计模式
设计模式:对问题行之有效的解决方式。其实它是一种思想。1,单例设计模式。解决的问题:就是可以保证一个类在内存中的对象唯一性。必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。如何保证对象唯一性呢?1,不允许其他程序用new创建该类对象。2,在该类创建一个本类实例。3,对外提供一个方法让其他程序可以获取该对象。步骤:1,私有化该类构造函数。2,通过new在本类中...
2019-08-12 21:08:52 74
原创 final关键字
final关键字:1,final是一个修饰符,可以修饰类,方法,变量。2,final修饰的类不可以被继承。3,final修饰的方法不可以被覆盖。4,final修饰的变量是一个常量,只能赋值一次。为什么要用final修饰变量。其实在程序如果一个数据是固定的,那么直接使用这个数据就可以了,但是这样阅读性差,所以它该数据起个名称。而且这个变量名称的值不能变化,所以加上final固定。写法...
2019-08-12 21:08:38 68
原创 继承
继承的好处1 提高代码的复用性2 让类与类之间产生了关系,给第三个特征多态提供了前提单继承一个子类只能有一个直接父类多继承一个子类可以有多个直接父类(Java中不允许,进行改良),不直接支持,因为多个父类中有相同成员,会产生调用不确定性。在java中是通过“多实现”的方式来体现的java中支持单继承,不直接支持多继承,但c++中的多继承机制进行改良java支持多层(多重)继承。C...
2019-08-12 21:08:22 80
原创 static关键字
static的特点1.static是一个修饰符,用于修饰成员;2.static修饰的成员被所有的对象共享;3.static优先于对象存在,因为static的成员随着类的加载就已经存在了;4.static修饰的成员多了一种调用方式,可以直接被类名调用,如:类名.静态成员;5.static修饰的数据是共享数据,对象中的存储是特有数据;成员变量和静态变量的区别1.两个变量的生命周期不同成...
2019-08-12 21:08:02 75
原创 this 关键字
this 关键字当成员变量和局部变量重名,用关键字this来区分。举例:Person ( String name)name = name ; 此时的成员变量和局部变量重名,当对象调用构造函数的引起混乱,出现错误,所以用关键字this来区分。this :代表当前的对象;this就是所在函数所属对象的引用,也就是哪个对象调用了this所在的 函数,this就代表哪...
2019-08-12 21:07:35 78
原创 12 多线程和状态机
1 多线程操作系统下的并行执行机制进程和线程的区别与联系任意时刻,CPU总是运行一个进程,其他进程处于非运行状态。一个进程可以包括多个线程,一个进程的内存空间是共享的,每个线程都可以使用这些共享内存。多线程的优势保证多线程程序在运行时,操作系统会优先将多个线程放在多个核心中分别单独运行。...
2019-08-05 21:11:50 492
原创 11 链表
1 链表的概述链表就是用锁链连接起来的,锁链指的是指针,表指的是存放数据的节点。链表是由若干个节点组成,各个节点的结构完全类似,都是由有效数据和指针两部分组成,有效数据区用来存储有效数据信息,而指针用来指向链表的前一个或者后一个节点,链表就是利用指针将各个节点进行串联起来的链式存储的线性表。链表与数组的比较链表的优点是操作灵活,插入删除效率很高,但是缺点是需要额外分配存放节点地址的空间,而且...
2019-08-05 21:11:37 98
原创 10 C语言关键细节
1 操作系统的概述操作系统的主要任务是管理所有资源,为产生直接价值的程序(各种应用程序)提供服务,所以操作系统就是管理者和服务者。操作系统负责管理和资源调配,应用程序负责具体的直接劳动,当应用程序需要使用系统资源(如内存、CPU、硬件操作等)时需要通过API函数向操作系统发出申请,然后操作系统响应,帮助应用程序执行功能。C库函数在封装API函数时,尽量使用了同一套接口,所以封装出的库函数相...
2019-08-05 21:11:23 86
原创 9 存储类、作用域、生命周期、链接属性
Linuxc下C程序的内存映像代码段、rodata段(只读数据段)对应程序中的代码(函数)、代码段在Linux中又叫文本段(.text);rodata段常常用于存储常量数据,也被称为只读段,比如修饰的常量有可能存储在rodata段中。数据段、bss段data段:存放被初始化为非0的全局变量;被初始化为非0 的static局部变量;bss段:存放未初始化的全局变量;未初始化的stati...
2019-08-05 21:11:07 116
原创 8 C语言预处理、函数和函数库
1 预处理编译器本身的主要目的是编译源代码,将C语言的源代码转化成.s的汇编代码。编译流程图在Linux系统中,GCC编译程序会读取源代码.c文件,并且将其翻译成一个可执行文件.out,整个过程共四个阶段,由编译工具链完成。.c C语言源代码文件;.h 头文件;.i 预处理文件;.s 汇编文件; .o 目标文件(二进制文件);.out 可执行文件第一过程:预处理(cpp)在命令行输...
2019-08-05 21:10:50 222
原创 6 特殊的数组-字符串
1 字符串类型要点1字符串类型是通过制度指针来实现的,如char * p = " linux ",p中存放了字符串的第一个字符地址,这个地址就是字符串地址。要点2C语言中字符串使用的三个核心:(1)用一个指针指向字符串头;(2)字符串总是以‘\0’结尾,但字符串的实际内容不包括‘\0’;(3)组成字符串的各字符的地址彼此连续。要点3指向字符串的字符变量空间和字符串存放的空间是分开...
2019-08-05 21:10:33 165
原创 7 结构体、共用体和枚举
结构体概述1 结构体使用时先定义结构体类型,再用类型定义变量2 结构体变量中的元素访问方式只有一种,用句点.或者箭头->。3 结构体的对齐访问访问结构体时需要对齐访问,主要是配合硬件,也就是说硬件硬件本身有物理上的限制,因此对齐排布和访问可以提高访问效率,对齐访问牺牲了内存,但换取了速度性能。对齐访问的规则和运算(1)当编译器将结构体设置为4字节对齐时,结构体整体必须从4字节对齐...
2019-08-05 21:10:19 114
原创 5 指针与函数
1.1 指针与函数传参1.1.1 普通传参C语言中值传递的本质是,当调用被调函数时,被调函数会在自己的函数栈中开辟相同类型的形参空间,并且将传递过来的值写入形参空间保存。1.1.2 传递地址(指针)传递地址和普通传参没有本质的区别。传递地址和普通传参都是值传递,实参是数值,也可以是变量。1.1.3 传递数值数值没有普通值传递,因为普通值传递需要的形参空间大,效率低,所以只有地址传递。...
2019-08-05 21:09:56 186
原创 4 数组
1.1 数组数组方便一次定义大量变量空间,而且也方便访问,访问时利用地址累加,访问每个数组空间即可。1.1.1 一维数据中的关键符号以int buf[100] = {0} 为例buf:一是数组名,sizeof(buf)时,buf就是数组名的含义;二是等价于&amp;amp;amp;amp;buf[0],表示数组第一个元素的首字节地址,是一个常量值。buf[0]:第一个元素的空间,可以对其进行读写操作。&amp;amp;amp;amp...
2018-11-28 14:49:57 609
原创 3 指针
底层驱动的操作离不开指针,驱动程序的目的是为了管理硬件,驱动程序管理硬件的媒介是寄存器(一种特殊的内存),通过对寄存器的读写,实现对硬件的功能设置以及数据的存取。1.1 什么是指针1.1.1 普通变量普通变量的目的是为了存放普通数据,对于变量空间来说,不管是读还是写,变量是存放数据的手段。1.1.2 指针变量在大多数情况下,指针指的是指针变量,指针变量存放的数据是内存地址。一般情况,如果...
2018-11-28 14:48:07 143
原创 2 C语言位操作
常用位操作位异或:两位都相等,结果为0,不相等则为1左移位:将一个操作数的各二进制全部左移若干位,左边移除出去的二进制位丢弃,右边的二进制位补0。每进行一次左移位操作,得到的结果是原来操作数的一倍(x&amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;lt;n=x*2^n)右移位:将一个操作数的各二进制全部右移若干位,右边的二进制位补0或补1(如果操作数是无符号数或是有符号正数补0,如果是有符号负数补1),右边移除出去的二
2018-11-28 14:47:32 187
原创 1 C语言与内存
C语言与内存1 计算机程序1.1 程序程序就是一堆代码加一堆数据,程序=数据+算法。1.2内存内存分为静态内存(SRAM)和动态内存(DRAM)。静态内存是指程序开始运行时由编译器分配的内存,它的分配是在程序开始编译时完成的,不占用CPU资源;由于堆空间只能在程序运行时被使用,因此堆空间也被称动态内存,另外,动态内存只能在程序运行时通过指正对分配给各种变量、字符串和数组(只能通过指针来访...
2018-11-28 14:47:06 179
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人