- 博客(47)
- 资源 (1)
- 收藏
- 关注
原创 C语言中个各个进制的表示方法
八进制怎么表示? 用0开头(零)十六进制怎么表示?用0x开头(零x)NOTE:八进制和十六进制转换为2进制好转,只要把每一位按8421BCD码转换为2进制就可以了。八进制和十六进制转换为2进制,按权展开和就可以了。十进制转换为R进制,除R取余。
2015-08-16 13:24:20
6090
原创 文件访问权限中关于文件和目录的访问权限
文件分为几种:普通文件(regular file);目录文件(directory);块设备文件(block special file);字符设备文件(character special file);FIFO;socket;符号链接(symbolic link);文件的访问权限:文件的访问权限有9个bit位,分为三类:读(read),写(write),执行
2015-08-13 14:32:52
1282
原创 与进程相关的几个ID,set-user-ID和set-group-ID
程序文件是一个二进制文件。在Unix中,二进制文件和文本文件都叫普通文件。不同文件的不同解释,这就靠应用程序来解释了。与jin进程相关的ID有以下三种:实际用户ID(real user ID), 有效用户ID(effective user ID)和 保存的设置用户ID(saved set-user-ID)。正常情况下,一个程序文件,被用户之行起来,那么这个进程的有效用户ID就是实际
2015-08-12 23:20:19
1299
原创 字符设备or块设备?
Unix环境高级编程中,讲到文件的时候,说文件分为几种:1.普通文件 2.目录文件 3.块特殊文件 4.字符特殊文件 5.FIFO 6.套接字 7.符号链接解释一下块设备文件:block special file, 这种文件类型提供对设备(比如磁盘)带缓冲的访问,每次访问一固定长度为单位进行。字符设备文件:character special file , 这种文件类
2015-08-11 11:44:53
455
原创 为什么数组的BUFFSIZE要定义为4096比较好?
先看一个程序://page 69#include "apue.h"#define BUFFSIZE 4096int main(int argc,char *argv[]){ int n; char buf[BUFFSIZE]; while ((n =read(STDIN_FILENO,
2015-08-06 20:15:01
5584
原创 谁为我们打开了STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO,标准输入、标准输出和标准错误
谁为我们打开了STDIN_FILENO, STDOUT_FILENO, STDERR_FILENO,标准输入、标准输出和标准错误 呢 ?答: 是shell。请参考上面的一篇BLOG,讲的是一个基本的shell-like的实现。shell运行时候,首先应该打开三个文件描述符,然后,从终端获得输入,然后fork出一个进程来执行输入的程序。fork出来的进程和shell主进程是父子关系,就是说,
2015-08-06 12:40:44
1076
原创 Unix世界的三个标准
ISO 下面有三个主要标准。其中SUS= Single Unix Specification ,是IEEE POSIX.1 的一个超集。
2015-08-04 11:51:28
455
原创 Unix系统中的系统调用和库调用
系统调用:System calls 库函数: Library Functions系统调用是内核提供的接口(entry points),库函数是对系统调用接口的封装。Version 7 : 50个。4.4BSD: 110个。SVR4: 120个。Linux: 根据版本不同,有大概240~260个系统调用。Free BSD: 320个。系统调
2015-07-30 10:41:21
719
原创 计算机是如何处理按键输入的字符的
看下面的一个例子,shell的一个基本实现的例子,可以编译运行一下。 当从键盘按下一个键时, 电脑会产生一个中断,有一个中断接收程序,来接收这个字符。中断接收程序对接收到的程序进行判断处理,比如说是控制字符还是可显示字符,对每个控制字符改怎么处理啊,对可显示字符要不要写入RxBUF啦,等等情况,最后接收完了,再回到主循环。什么时候接收完呢,就是中断接收程序接收到了一个Enter
2015-07-28 14:01:21
2130
原创 一个简单地Shell-like 的实现
下面的一个程序是shell的简单实现,虽然简单,但是原理是相同的。请仔细体会。//shell-like function#include "apue.h"#include int main(int argc,char *argv[]){ char buf[MAXLINE]; pid_t pid; int stat
2015-07-27 09:31:22
1301
原创 Unix环境高级编程中这么描述文件系统
File System:The UNIX file system is a hierarchical arrangement of directories and files. Everything starts in the directory called root whose name is the singal character / .A directory is a file
2015-07-25 12:29:27
367
原创 明确一下,哪些类型放在data区
放在Data区的常量:1.全局变量。2.static修饰的全局变量和局部变量。3.字符串,char *str = "abcd",“abcd”放在data区 。但是char str[] = "abcd"; “abcd”是放在栈区的,因为它是字符串数组。4.const修饰的全局变量放在Data区。但是,const修饰的局部变量不是放在data区的,它仅仅意味着表达式上不能显示的改变变
2015-07-15 23:51:22
767
原创 What is the difference between static and global variables ?
What is the difference between static and global variables ?这个回答要好好看看 ?网址是:http://www.geekinterview.com/talk/4375-what-difference-between-static-global-variables.html
2015-07-11 18:50:50
506
原创 C语言中关于哪些数据放在哪些区?
上图是用手机拍摄的Unix环境高级编程中第二版中第七章的内容。一个程序分为几个区,可以从图中明显看到。需要说明的是,stack区是从第1GByte地址处以下开始,第1GByte地址处到stack开始的地方,是命令行参数和环境列表的存储区。需要解释的是,初始化数据区和非初始化数据区,两者在其他的书中都称为数据区,data区。其中,程序中的已经初始化的数据区里面又含有多种类型的数据存放。比如静
2015-07-09 18:51:39
1594
原创 关于for循环和while循环中的次数问题
每当使用到for 和 while循环,到底循环多少次的问题每次都搞的我头脑很乱,不能专注于更重要的实现。今天,解决了:画个表,一列表示一次。这样,多少次,在脑海中很清晰。
2015-07-08 23:55:33
4490
1
原创 main函数被调用时传递的三个参数
我们编写的main函数,也是一个被调用的函数。像其他的小函数一样,只不过,main是被kernel的_start()函数调用。调用main函数时候,_start()(还是exec()? 搞不清楚,_start()函数可能是exec()进程的分出来的子进程。)函数也要传递参数给main()。传递三个参数:命令行参数的个数,命令行每个字符串的指针,环境变量。int main (int ar
2015-07-06 19:07:24
856
原创 什么叫做库
一直搞不懂什么是库。库就是一堆文件的集合。库就是仓库,就是Library,里面放东西的地方。Library:a collection of things for use on a computer, e.g. programs.C库就是把一堆.c文件写好了,各个编译好了的文件,放在一起,就叫C库。那些头文件放在一起叫做头文件库。这两天搞明白这个,突然轻松了好多,有种
2015-07-06 16:03:12
1811
原创 关于start-up routine 和 exec 和main()
http://stackoverflow.com/questions/4595910/what-is-the-need-for-c-startup-routine请参考这个文章。 我们编写main()函数,以为函数是从main()函数开始执行,其实不是这样的。对于kernel来讲,光是把main()函数拿过来直接开始执行是不行的,需要对main()进行预处理。这个就是start-up
2015-07-04 08:57:16
518
原创 彻底搞懂一个项目中的各种文件关系
一个项目由很多文件构成,很多.c文件,和.h文件。.h文件,只是头文件中的包含的作用,就是copy。编译的时候,各个.c文件分别进行编译。如果一个.c文件中的变量,想要在另一个文件中使用,那么在另一个文件中需要extern 一下这个变量。extern 表示外部的意思,就是表明这个变量或者函数,不是本文件中的,是其他.c文件中的。各个.c文件都编译后,需要进行链接的。
2015-07-03 17:06:38
1702
原创 位图和矢量图的区别
前言知识:每个像素由很多个灰度级组成。如果用一个bit来表示灰度级,那么这个像素只有两个灰度,1时亮,0时黑。如果用8个bit来表示一个像素的灰度,那么就有256个灰度等级。当然,这个说的是非彩色图像。如果是彩色图像,那么可以用RGB三种源颜色来表示自然界的任何一种颜色。一个像素就有RGB三个颜色通道。如果,每个颜色通道用8个bit来表示的话,那么三个颜色通道总共有8*3=24个bit来表
2015-06-14 10:25:08
1096
原创 关于几个信号
CTRL+C 送的是SIGINT信号,默认进程会结束。CTRL+Z 送得是SIGSTOP信号,进程被停止,被挂起(suspend),再送一个SIGCONT信号,进程会继续执行。CTRL+D 不是发送信号,而是表示一个特殊的二进制值,表示EOF。
2015-06-13 16:47:26
446
原创 关于shell和终端(terminal)
你启动了一个终端(terminal),你就同时启动了一个shell,这个终端作为输入输出,由shell将输入的命令通过查找环境变量启动应用程序。shell本身也是内核自带的一个应用程序。
2015-05-15 22:28:09
849
原创 什么是相位,为什么会有相位?
周期性出现的函数最好都有个相位,否则对于一个函数,x的取值是这,y的值是1,x的值取那个,y的值还是同样的1,那怎么办呢?是吧说明 :1. 相位的单位是多少多少度。2. f 是每秒钟绕单位圆转几圈。3. (2πft+φ)的值,称做 相位相角。4. φ称为初相初相位初相角
2015-04-27 16:23:42
9790
原创 电路中独立回路的选择
一个困扰我多年的问题。以前学电路的时候,要列方程式求解,但是电路中又很多回路,那怎么选择回路呢? 回路有多少个呢现在晓得了,回路可以有多少个,但是要选择 “独立回路”,《电路基础》这本书上面翻译的有点复杂了,就是这样:每定义的一个独立回路,之中必须、至少有一个未被使用的支路,直到所有的支路都被用过为止,这样列写出的方程才能保证都是独立方程且联立求解时可求出未知量。 例如一个“日”
2015-03-06 18:57:21
4726
1
原创 堆(heap segment)中的内存索要(申请)和归还(释放)
C语言:malloccallocreallocfree四个都是函数(functions)。C++语言:newdelete这两个是操作符(operators)。
2015-02-14 22:23:50
1259
原创 os运行一个程序时做了什么
一个进程运行时,os分给一个进程的内存块里面分为 code区, static/global区, stack区和heap区,总共4个区。其中的stack区总共就1MB的大小,不可改变,如果反复的调用函数,超过了1MB的大小的话,那么就stack overflow,程序就crash掉了。但是堆的话,可以随便申请,堆区能grow,但是自己申请的memory,需要自己手动释放掉。否则,浪费了内存,熟语叫内
2015-02-14 17:00:37
516
原创 python 中需要注意的地方
>>> a = 'hello'>>> b = 'hello'>>> a is bTrue>>> >>> a = [1,2,3]>>> b = [1,2,3]>>> a is bFalse>>> a = 1>>> b = 1>>> a is bTrue>>> a = 99999>>> b=99999>>> a is bFalse>>
2015-02-08 22:06:17
406
原创 打开文件时为什么要用二进制模式
Source:python基础教程P208正常来讲,对于一个普通的文本文件,用文本模式打开和用二进制打开,是没有多大区别的。但是这里有个问题,win下,换行符是‘\r\n’,Unix下是‘\n’,windows下的文件,python打开的时候,怎么处理呢? python是这样处理的:如果是文本方式打开这个文件,那么python会把这个文件中的'\r\n'都给替换成'\n',然后在由
2015-02-05 22:04:04
2197
原创 关于电阻为什么能阻碍电流流动(微观解释)
闭合回路中,电子的移动速度是多快 ?很快吗? 不是的,闭合回路中,电子的流动速度很慢的! 但是电流的速度却很快,大概光速的70% 。为什么一个很长的导线,一头通电后,另一头立马也就有电流了呢? 那是因为电子之间,有力的作用。其实是力的传递。就像水管一样,三爷家的抽水机,通过管子到我家,只要那边一有压力,这边就会立马又水流出来了,因为水分子之间有力的作用。与其说电流的速度,还不如说是力的
2015-01-01 11:51:21
5451
原创 汉诺塔中的递归问题
>>> c = 0>>> def move(x, n, y):... global c... print 'steps %d. move disk %d from %s to %s'%(++c, n, x, y)... >>> def hanoi(n, x, y, z):... if n==1:... move(x, 1
2014-12-29 00:22:41
346
原创 一个例子理解生成器的用法
>>> def counter(start_at):... count = start_at... while True:... val = (yield count)... print val... if val is not None:... count = val... else:... count+=1... >>> >>> count = co
2014-12-23 15:22:29
367
转载 python中的descriptor
当一个类的属性是另一个类的对象的时候,这很正常,比如类中value = 'hello' 字符串hello也是一个类的对象。但是特殊的地方是这个类有__get__()、__set__()和__delete__()方法,这样的类就叫做描述符类。类的对象,访问类的属性,如果这个属性是描述符类的对象的话,那么好玩的地方就来了。。。
2014-12-14 10:12:50
579
原创 python中的魔法方法
python中以__包围的都有特殊的意思,其中是方法的都是魔法方法。python中的魔法方法魔法的地方就是你不需要显示的调用,就可以实现自动调用。比如,__init__() 方法,你创建一个对象的时候,你不需要调用这个方法,它就会自动调用这个方法了。岂不是很魔法 ?另外,python中还有其他的魔法方法。比如讲,关于序列的规则。当你自己建立一个序列的时候,当然像列表,字典等
2014-12-13 18:19:05
768
原创 python中闭包的实现
>>> def addOne(myFunc):... def addOneInside():... return myFunc()+1... return addOneInside... >>> def oldFunc():... return 3... >>> oldFunc = addOne(oldFunc)>
2014-12-01 20:57:56
449
原创 python中类的命名空间和面向对象的诸多问题
python中的作用域以前一直对C++不行,为什么呢 ? 原来最终的原因是没有全局观,就是没有去看作用域的问题,理解命名空间好重要啊。python中,或者说面向对象编程中,命名空间的概念很重要,也就是各个东西的作用域很重要。python运行坏境有内置的作用域,模块有模块的作用域,函数有函数的作用域,类有类的作用域,类的实例也就是对象有对象的作用域。# pyth
2014-11-14 11:32:09
2448
原创 关于Python中的变量作用域
【财主】司令(510337315) 21:02:13python 中:w = w+1是从左往右算的吗?瓜皮加入本群【管家】Mike(865970132) 21:04:43w += 1【财主】司令(510337315) 21:05:12什么意思 ?兵者诡道加入本群qsy加入本群【佃户】Rm(392093658) 21:24:53pa
2014-11-09 22:41:33
517
翻译 const char*, char const*, char*const的区别
const char*, char const*, char*const的区别 2009-06-05 00:28:16| 分类: VC|举报|字号 订阅 const char*, char const*, char*const的区别问题几乎是C++面试中每次都会有的题目。 这个知识易混点之前是看过了,今天做Linux上写GTK程序时又出
2014-09-10 00:18:16
424
原创 C++开窍之旅
忽然之间,开窍了。C++操作的都是对象,对象有自己的方法,自己的数据变量,我们用到对象的时候,需要用到他的方法和成员,那么就用对象调用就可以了。在程序中,我们如果需要自己定义对象,那么我们就自己定义一个类,定义这个类的方法,和数据变量,这个类生成对象的时候,这个对象就可以调用方法来操作自己的数据成员了。你看,我在华为机试的时候,左彬用C++很快生成了一个vector对象,这个对象有很多
2014-09-01 15:26:09
499
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人