- 博客(23)
- 资源 (2)
- 收藏
- 关注
原创 Template Method模式
在Template Method模式中,处理的流程被定义在父类中,而具体的处理则交给了子类。 组成模板的方法被定义在父类中,这些方法是抽象方法。在父类中调用抽象方法的方法称为模板方法。实现这些抽象方法的是子类。像这样在父类中定义处理流程的框架,在子类中实现具体处理的模式称为Template Method模式。类的一览表 名字 说明 AbstractDisplay...
2019-10-22 00:23:28
196
原创 escape(s, t)函数的实现
#include #include void escape(char *s, char *t);int main(void){ char *s = malloc(30); char *t = "what is your name?"; escape(s, t); printf("%s\n", t); printf("%s\n", s); return
2015-07-19 20:06:32
1125
原创 电路基础
基本定理:基尔霍夫电压定律:电路中沿任一回路的所有电压的代数和为0(能量守恒)。基尔霍夫电流定律:流入一个节点的所有电流之和等于流出该节点的所有电流之和(电荷守恒)。叠加原理:线性电路的任一之路电流等于电路中每一个电源单独作用时(其余电源置零)在该之路产生的电流之和。戴维南定理:线性两端直流网络可以用一个电压源和一个电阻的串联支路来替代。诺顿定理:电路是由一个电流源和电阻的并联
2014-04-01 01:17:04
1343
原创 Linux 内核模块简介
Linux提供了这样一种机制,这种机制被称为模块。模块具有这样的特点: 模块本身不被编译入内核映像,从而控制了内核的大小。 模块一旦被加载,它就和内核中的其它部分完全一样。一、模块的组成 一个Linux内核模块主要由如下几个部分组成: (1)模块加载函数 Linux 内核模块加载函数一般以__init标识声明。
2014-03-27 11:45:52
845
原创 UNIX高级环境编程读书笔记(chapter14)
第十四章 高级IO一、引言 本章内容包括非阻塞IO、记录锁、系统V流机制、I/O多路转接(select 和 poll函数)、readv和writev函数以及存储映射I\O,这些都称为高级I/O。二、非阻塞I/O 非阻塞I/O使我们可以调用open、read和write这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则调用立即出错返回,表示
2014-03-26 20:15:52
721
原创 循环队列
一、定义队列结构体//typedef struct Queue{ int *pArray; int front; int rear;}QUEUE, *PQUEUE;//二、初始化队列&&void init_queue(PQUEUE pQueue){ pQueue->pArray = (int *)malloc(sizeof(int) * 10
2014-03-23 21:34:42
370
原创 栈的初始化、压栈,栈的遍历、出栈、清空栈
一、栈的初始化//////void init_stack(PSTACK pStack){ pStack->pTop = (PNODE)malloc(sizeof(NODE)); if (pStack->pTop == NULL) { printf("malloc failed!\n"); exit(-1);
2014-03-23 01:45:02
1899
原创 判断链表是否为空、求链表长度、插入新节点、删除节点、链表排序
一、判断链表是否为空//startbool is_empty(PNODE pHead){ if (pHead->pNext == NULL) { return true; } else { return false; } }//end二、求链表长度//startint length_list(PNODE pHead){
2014-03-22 03:06:41
1475
原创 链表的创建和遍历
/*链表的创建和建立*/1.定义一个节点的数据类型typedef struct Node{ int data; struct Node *pNext;}NODE, *PNODE;2.在主函数里创建链表并对其进行遍历int main(void){ PNODE pHead = NULL; //struct N
2014-03-21 03:02:36
535
原创 UNIX高级环境编程读书笔记(chapter13)
第十三章 守护进程 守护进程也称精灵进程是生存期较长的一种进程,它们常常在系统自举时启动,关闭时才终止,因为它们没有控制终端,所以说它们是在后台运行的。 系统进程依赖于操作系统实现。父进程ID为0的进程通常是内核进程,它们作为系统自举过程的一部分而启动。一、编程规则 在编写守护进程程序时需遵循一些基本规则,以便防止产
2014-03-20 16:39:14
467
原创 UNIX高级环境编程读书笔记(chapter12)
第十二章 线程控制一、线程限制 与其它的系统限制一样,这些线程也可以通过sysconf函数进行查询。 与sysconf报告的其它限制一样,这些限制的使用是为了增强应用程序在不同的操作系统实现之间的可移植性。二、线程属性实例:以分离状态创建的线程#include "apue.h"#include int makethre
2014-03-19 18:58:47
478
原创 UNIX高级环境编程读书笔记(chapter11)
第11章 线程典型的UNIX进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程以后,在程序设计时可以把线程设计成在同一时刻能够做不止一件事情,每个线程处理各自独立的任务。(1)通过为每种事件类型的处理分配单独的线程,能够简化处理异步事件的代码。(2)多个进程必需使用操作系统提供的复杂机制才能实现内存和文件描述符的共享。(3)有些问题可以通过将其分解从而改
2014-03-19 10:36:14
393
原创 UNIX高级环境编程读书笔记(chapter9)
chapter 9进程关系 当系统自举时,内核创建进程ID为1的进程,Init进程。Init进程使系统进入多用户状态。Init进程读文件/etc/ttys,对每一个允许登陆的终端设备,Init调用一次fork,它所生成的子进程则执行getty程序。getty为终端设备调用open函数,以读写方式将终端打开。一旦设备被打开,则文件描述符0、1、2就被设置到该设备。然后getty输出“
2014-03-13 14:13:42
531
原创 UNIX高级环境编程读书笔记(chapter8)
第八章 进程控制每个进程都有一个非负整型表示唯一的进程ID.虽然是唯一的,但是进程ID可以重用,当一个进程终止后,其进程ID就可以再次使用了.ID为0的进程通常是调度进程,常常是交换进程,是内核的一部分,也被称为系统进程.进程ID1通常是init进程,在自举过程结束时内核调用.8.1.由fork创建的新进程被称为子进程.fork函数被调用一次单返回两次.两次返回的唯一区别是子进程的返回值是
2014-03-11 10:40:50
583
原创 UNIX高级环境编程读书笔记(chapter7)
7.1 main函数C程序总是从main函数开始执行。7.2 进程终止有8种方式是进程终止(1)从main返回(2)调用exit()(3)调用_exit或_Exit(4)最后一个线程从启动例程返回(5)最后一个线程调用pthread_exit异常终止有三种方式:(6)调用abort(7)接到一个信号并终止(8)最后一个线程对取消请求做
2014-03-11 02:11:13
547
原创 UNIX高级环境编程读书笔记(chapter5)
5.9 二进制IO下列两个函数执行二进制IO操作:fread(),fwrite().(1)读或写一个二进制数组;(2)读或写一个结构;返回:读或写的对象数5.10 定位流有三种方法定位标准IO流(1)ftell和fseek函数(2)ftello和fseeko函数(3)fgetpos和fsetpos函数5.11 格式化IO5.11.1 格
2014-03-11 02:03:49
445
原创 UNIX高级环境编程读书笔记(chapter4)
Chapter 4 文件和目录4.0.给定一个pathname (1)stat函数返回一个与此命名有关的信息结构. (2)fstat函数获得已在描述符filedes上打开的文件的有关信息. (3)lstat函数类似于stat,但是当命名的文件是一个符号链接时,lstat返回该符号链接的有关信息,而不是由该符号链接引用的文件的信息.4.1文件类型(1
2014-03-11 02:02:19
507
原创 UNIX高级环境编程读书笔记(chapter1-3)
UNIX:程序的执行实例被称为进程;UNIX 环境高级编程:1.调用open函数可以打开或创建一个文件.2.可以调用creat函数创建一个新文件.3.close函数关闭一个打开的文件.4.lseek函数:每个打开的文件都有一个与其相关联的"当前文件偏移量".他通常是一个非负整数 Ex1:测试能否对标准输入设置偏移量:#include "ap
2014-03-11 01:58:06
550
原创 C语言学习笔记
1.修改变量的存储类型并不表示修改该变量的作用域;2.当extern关键字用于源文件中一个标识符的第一次声明时,它指定该标识符据有external链接属性。但是,如果它用于该标识符的第二次或以后的声明时,它并不会更改由第一次声明所指定的链接属性。3. int const *pci 一个指向整形常量的指针, 可以修改指针的值,但不能修改它所指向的值 int *const cp
2014-03-10 18:45:39
502
原创 term.h 和 curses.h (redhat 6.4)
1.环境:VMware workStation -> Redhat 6.42.问题:make badterm 之后报错:badterm.c:2:18: error: term.h: No such file or directorybadterm.c:3:20: error: curses.h: No such file or directorymake: *** [bad
2013-11-19 00:49:41
1441
转载 如何学习嵌入式(转载)
如何学习嵌入式2008年8月21日 22:59:13 发布:shadowofsnow 学习嵌入式首先要明确这么几点:(1)首先学嵌入不是为了跟风,而是为了逐浪。不是要看大家都去做 这一行才去做。是真的喜欢,这样才能精,才能做到“逐浪”! (2)成功的历程是漫长、艰辛的,要有一颗艰韧不拔的心。 (3)文章中说的学习过程和资料大致差不多。但可惜的是在我花了很 长时间入门后才发现这篇文章,要不那短时间会
2013-11-18 00:59:19
723
ch452的使用方法
2015-01-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人