2024年1月15日发(作者:)

csapp答案

【篇一:final questions】

对于每个在swap.o模块中定义或引用的符号,请指出他是否在模块swap.o中的.symtab节中有一个符号表表目。如果是,请指出定义该符号的模块(swap.o或者main.o)、符号类型(本地、全局或者外部)和它在模块中的节(.text.、

注:symtab存放在程序中被定义和引用的函数和全局变量的信息。temp不是全局变量而是本地变量,没有符号表条目

7.2在此题中,ref(x.i)-def(x.k)表示链接器将把模块i中对符号x的任意引用与模块k中x的定义联系起来。对于下面每个示例,用这种表示法来说明链接器将如何解析每个模块中的多个定义的符号。如果有一个链接时错误(规则1),输出error。如果链接器从定义中任意选择一个(规则3),则输出unknown a.

//module 1 //module 2 int main()int main; {} int p2(){} 解:链接器将选择定义在模块1中的强符号,而不是定义在模块2中的弱符号 b

//module 1 //module 2 void main() int main=1; {} int p2(){}

(c)ref(main.1)-def(____.__) (d)ref(main.2)-def(____.__)

解:这是一个错误,因为每个模块都定义了一个强符号main c

//module 1 //module 2 int x;double x=1.0 void main() int p2(){}

{}解:链接器将选择定义在模块2中的强符号,而不是定义在模块1中的弱符号

7.3 a和b表示当前目录中的目标模块或者静态库,而a-b表示a依赖于b,也就是说b定义了一个被a引用的符号。对于下面各种场景,请给出最小的命令行(也就是一个含有最少数量的目标文件和库参数的命令),使得静态链接器能解析所有的符号引用 a. p.o -

libx.a

b. p.o - libx.a - liby.a

c. p.o - libx.a - liby.a 且 liby.a - libx.a - p.o

解:在命令行中错误地放置静态库的位置是造成许多程序员迷惑的链接器错误的常见原因。然而一旦你理解了链接器是如果使用静态库来解析应用的,它就相当简单易懂了 a. gcc p.o libx.a

b. gcc p.o libx.a liby.a

c. gcc p.o libx.a liby.a libx.a

7.4 本题是关于图7.10中的重定位程序的。

a.第5行中对swap的重定位引用的十六进制地址是多少? b. 第5行中对swap的重定位引用的十六进制值是多少?

c.假设因为某种原因,链接器决定将.text节放在0x80483b8处而不是0x80483b4处,那么这种情况下,第5行的重定位引用的十六进制值是多少? 解:

a. 第5行被重定位引用的十六进制地址是0x80483bb

b. 第5行被重定位引用的十六进制值是0x9。记住,反汇编列表给出了小端法字节顺序表示的引用值

c. 这里的关键观察点是无论连接器将.text节定位在哪里,引用和swap函数间的距离总是一样的。因此,无论连接器将.text节定位在哪里,因为引用是一个pc相关地址,所以它的值都是0x9 7.5

a.为什么每个c程序都需要一个叫做main的函数

b.你想过为什么c的main函数可以通过调用exit或者执行一条return语句,或者两者都不做,而程序仍然可以正常终止吗?请解释 解:

a.每个程序都需要一个main函数,因为c的启动代码对于每个c程序而言都是相同的,要跳转到一个叫做main的函数上

b.如果main以return终止,那么控制传递回启动程序,该程序通过调用 _exit 再将控制返回给操作系统。如果用户省略了return语句,也会发生相同的情况。如果main是以exit终止的,那么exit将最终通过调用 _exit 将控制返回给操作系统。在所有三种情况中,最终效果是相同的;当main完成时,控制会返回给os

8.1 考虑下面的程序 #include csapp.h int main() { int x=1;

if(fork()==0)printf(printf1:x=%dn,++x);

printf(printf2:x=%dn,--x); exit(0); }

a. 子进程的输出是什么 b. 父进程的输出是什么 解:子进程输出为

printf1:x=2 printf1:x=1

父进程输出为printf1:x=0

8.2 下面的程序会打印多少个hello #include csapp.h int main()

{ int i; for(int i=0;i2;i++)fork(); printf(hellon); exit(0); }

解:4个(参考图8.14c)

8.3 下面的程序会打印多少个hello #include csapp.h void doit()

{ fork(); fork(); printf(hellon); return; }

int main() { doit(); printf(hellon); exit(0); }

解:8个。一共4个进程。每个在doit()中输出一次,返回后在main中也输出一次

8.4考虑下面的程序 #include csapp.h

int main() {

int status; pid_t pid; printf(hellon); pid=fork();

printf(%dn,!pid); if(pid!=0)if(waitpid(-1,status,0)0)

if(wifexited(status)!=0) printf(%dn,wexitstatus(status));

printf(byen); exit(2); }

a. 这个程序会产生多少输出行

b. 这些输出行的一种可能顺序是什么 解:a 会产生6个输出行

b. 先输出hello.之后父进程中会输出02bye,子进程中会输出1bye

有可能得到的一种输出:hello 0 1 bye 2 bye

在这种情况下,父进程首先运行,打印hello和0后对wait的调用会阻塞,因为子进程还没有终止,所以内核执行一个上下文切换,将控制传递给子进程。子进程输出1,bye,退出状态为2,。子进程终止后,父进程继续打印子进程的输出状态,最后打印bye

8.5 编写一个sleep 的封装函数,叫做snooze,带有下面的接口:unsigned int snooze(unsigned int secs); snooze函数和sleep函数行为完全一样,除了会打印出一条信息来描述进程实际休眠了多长时间以为(eg:slept for 4 of 5 secs) 解:

unsigned int snooze(unsigned int secs) { unsigned int

rc=sleep(secs);//sleep返回剩下的要休眠的秒数 printf(slept

for %u of %u secsnsecs-rc,secs); return rc; }

8.6 编写一个叫做myecho的程序,它打印它的命令行参数和环境变量,如: unix./myecho arg1 arg2 command line arguments:

argv[0]:myecho argv[1]:arg1 argv[2]:arg2

environment variables:

envp[0]:pwd=/usr/droh/ics/code/ecf ... 解:

#include csapp.h

int main(int argc,char *argv[],char *envp[])

{ int i; printf(command line arguments:n);

for(i=0;argv[i]!=null;i++)printf( argv[%2d]:%sn,i,argv[i]);

printf(n); printf(environment variables:n);

for(i=0;envp[i]!=null;i++)printf( envp[%2d]:%sn,i,envp[i]);

exit(0); }

8.7编写一个叫做snooze的程序,有一个命令行参数,用这个参数调用习题8.5中的snooze函数,然后终止。编写程序,使得用户可以通过在键盘上输入ctrl-c中断snooze函数 解:

#include csapp.h

void handler(sig) { return; }

unsigned int snooze(unsigned int secs) { unsigned int

rc=sleep(secs); printf(slept for %u of %u secsnsecs-rc,secs);

return rc; }

int main(int argc,char **argv) { if(argc!=2)

{fprintf(stderr,usage:%ssecsn,argv[0]);exit(0); }

if(signal(sigint,handler)==sigerr)unix_error(signal error);

(void)snooze(atoi(argv[1])); exit(0); }

10.1 完成下面的表格(p=250,e=260) (黑色为题目给的,红色为填的)

【篇二:sqlserver习题】

sql server 数据库服务器的管理员。一台服务器名为sql7,另一台叫sql2000,在sql7 上运行sql server 7.0,在sql2000上运行着sql server 2000。sql2000的网络库配置如下所示:(原题不完整)

sql7的网络库有命名管道、tcp/ip、nwlink ipx/spx以及多协议网络库。sql2000与sql7之间交换机密的公司信息。你需要确保未授权的用户不能访问这些信息。 你将采用下面哪两个措施?

a. 在sql2000上,启用多协议网络库

b. 在sql2000上,选择“强制协议加密”复选框

c. 在sql7上,选择“强制协议加密”复选框

d. 在sql2000上,安装安全套接字层(ssl)加密协议

e. 在sql2000和sql7上,启用多协议加密

2、你是一台windows 2000服务器的管理员。你准备在这台机器上安装sql server 2000。公司有许多客户机使用各自的网络库将要连接到服务器上,这些客户机如下表所示:

你需要允许客户机能够连接到sql server 2000服务器上,且同时希望对客户机配置的修改次数减到最少。你需要采用下面哪三个操作?

a. 将sql server 2000安装为命名实例

b. 将sql server 2000安装为默认实例

c. 配置新的实例使用混合模式验证

d. 配置新的实例使用windows验证

e. 配置服务器使用命名管道、ipx/spx以及tcp/ip网络库

f. 配置服务器使用多协议网络库

排序规则

1、你是一家会计公司的数据库管理员,你正在一台新的windows

2000 server服务器上安装sql server 2000,这台机器将要运行公司购买的两个c/s数据库应用程序。每个应用程序分别使用单独的数据库。在安装过程中,你指定将sql_ general_latin1_cp1_ci_ai作为服务器的默认排序规则,在完成安装后,你发现其中的一个名为financials的应用程序错误地进行了排序。你联系应用程序的开发商,得知financials应用程序需要使用

sql_ general_latin1_cp437_bin排序规则。你需要为此应用程序配置正确的排序规则,且不影响服务器的性能。你该怎么操作?

a. 重新安装sql server,并指定sql_ general_latin1_cp437_bin排序规则

b. 运行rebuildm实用工具,并指定sql_general_latin1_cp437_bin排序规则

c. 使用alter database语句修改financials数据库,并指定

sql_general_latin1_cp437_bin排序规则

d. 使用alter database语句修改financials数据库,并为数据库中的每个表都指定sql_ general_latin1_cp437_bin排序规则

2、你是几台sql server 2000数据库服务器的管理员。你需要从一个库存清单数据库inventory获取数据,你有这个数据库的一个完全的磁带备份,备份头信息显示此备份使用sql_latin1_general_cr437_bin排序规则,然而公司的数据库服务器使用的是sql_latin1_general_cp1_ci_as排序规则,你不需要将

inventory数据库中的表与其他数据库的表联接,你需要使用最少的管理开销来恢复inventory数据库,该怎么操作?

a. 使用rebuildm实用工具重建服务器上的系统数据库,将所有数据库的排序规则配置为sql_latin1_general_cr437_bin,然后恢复inventory数据库到此服务器

b. 恢复inventory数据库到当前服务器,并允许此数据库

sql_latin1_general_cr437_bin排序规则。

c. 在当前服务器上新建一个sql server 2000的命名实例,配置此实例使用

sql_latin1_general_cr437_bin排序规则,恢复inventory数据库到此命名实例

d. 在一台新服务器上安装sql server 2000,配置新服务器使用

sql_latin1_general_cr437_bin排序规则,恢复inventory数据库到此服务器

安全管理

1、你是一台sql server 2000数据库服务器的管理员,此服务器配置为windows验证模式。你为一个域用户组添加了一个登录,然而这个域中的20个用户不能访问此服务器。你需要阻止未授权的用户访问服务器,任务?

a、为未授权的用户增加一个sql server登录,然后拒绝此登录账号访问服务器

b、将未授权的用户添加到一个域用户组中,为这个组添加一个登录账号,然后拒绝此登录账号访问服务器

c、为每个授权的用户添加一个登录账号,然后拒绝每个登录账号访问服务器

d、在域用户组中删除所有未授权用户

2、你是一台sql server 2000数据库服务器的管理员,此服务器是corp域的一个成员。服务器配置为windows验证模式。几个用户通过使用查询分析器来连接到服务器,这些用户属于一个名叫datausers的域用户组,在服务器上有对应的corpdatausers登录账号。公司购买了一个c/s应用程序,此程序采用自己的用户安全机制,并通过使用名为csapp1的登录账号来访问服务器。你创建了一个名为csapp1域用户帐号,并将它加入到datausers域用户组中,然后当你运行该c/s应用程序,你得到以下错误信息:“the

required sql server database cannot be accessed.”,你需要保证应用程序正确应用,该怎么操作?

a、从datausers域用户组中删除csapp1域用户帐号,并为corpcsapp1创建一个登录账号

b、配置服务器使用混合模式认证,创建一个名为csapp1的登录账号,并配置此账号能够访问数据库

c、在服务器上创建一个名为csapp1的本地用户帐号,并为builtincsapp1创建一个登录账号

d、在应用程序数据库中配置一个名为csapp1的应用程序角色,设置此应用程序角色的密码与csapp1用户帐号的密码一致

3、你是一台名为cpsrv1的windows 2000 server的管理员,cpsrv1是windows nt 4.0域cpdomain的成员服务器,一个windows nt域cpusers包含了公司的所有用户帐号,在cpdomain

域以及cpusers域之间建立了信任连接。你在cpsrv1上安装了sql

server 2000。你按照下表指定每个sql server服务的服务账号:

service service account account type

mssqlserver cpuserssqlsvr domain administrator

sqlserveragentcpuserssqlagentdomain administrator

当安装完成后,mssqlserver以及sqlserveragent

b、将cpsrv1添加到cpusers域

c、将cpuserssqlsvr以及cpuserssqlagent添加到cpsrv1的本地管理员组中

d、将cpuserssqlsvr以及cpuserssqlagent 添加到cpusersdomain admins组中

e、将cpuserssqlsvr以及cpuserssqlagent 添加到cpusersdomain users组中

5、你是一台sql server 2000数据库服务器的管理员,公司有许多运行windows 2000 professional的客户机,这些客户机需要访问服务器。根据公司的规定,密码必须至少8个字符,且每30天必须更换,你需要实施此规定并允许客户机连接,你该怎么操作?(选择所有正确的选项)

a、配置混合身份验证模式

b、配置windows身份验证模式

c、为每个访问服务器的用户创建一个sql server登录

d、为域用户组创建一个登录

e、设置windows 2000账户策略,规定密码30天过期

f、设置windows 2000账户策略,规定密码至少8个字符

g、创建一个计划作业来更改密码,且每30天运行一次

6、你是一台名为datasvr的sql server 2000数据库服务器的管理员,服务器是一个域的成员服务器。datasvr现在配置为windows验证模式,且包含了若干个域用户组的登录账号,服务器使用命名管道网络库。公司购买了5台unix的客户机,你希望员工通过这些客户机来访问datasvr,你该怎么操作?

a、配置datasvr使用混合模式验证,为包含5台unix客户机的域用户组增加一个登录账号

b、配置datasvr使用混合模式验证,为每个unix用户增加一个登录账号

c、安装tcp/ip网络库,将5台unix客户机上的用户加入到一个能够访问datasvr的域用户组中

d、安装tcp/ip网络库,为每个unix用户增加一个登录账号

7、你是一台sql server 2000数据库服务器的管理员,公司还有一些运行windows 2000 professional以及unix系统的客户机,这些客户机需要访问服务器。域用户将通过公司lan访问服务器,外界用户通过互联网来访问服务器。你需要配置服务器使得所有授权的用户都能访问连接到服务器,你该怎么操作?(选择所有正确的选项)

a、配置windows认证

b、配置混合模式认证

c、为域用户组创建一个登录账号

d、为guest域用户帐号创建一个登录账号

e、为每个unix用户创建一个登录账号,并为每个账号设置密码

f、为每个外部用户创建一个登录账号,并为每个账号设置空密码

g、创建一个名为guest的登录账号,并为此账号设置空密码

8、你是sql server 2000计算机的管理员。 你的公司有150台客户计算机正运行unix。 这些客户计算机要求使用数据库techinfo来访问服务器。 服务器配有tcp/ip协议和命名管道、多协议库。 你需要将服务器配置成允许客户计算机使用techinfo )

a、配置windows身份验证模式。

b、配置混合模式身份验证。

c、为每个用户创建单个的sql server登录。

d、为所有用户创建一个域用户组登录

e、为所有用户创建单个sql server登录

f、起动多协议网络库。

g、禁用命名管道网络库。

9、你是一sql server 2000 计算机管理者。 服务器包含7个数据库,他们为多个公司的client/server应用程序提供数据,每个不同的用户维护自己的数据库,你需要配置服务器和数据库许可权限让每个维护自己数据库的用户有足够的权限来管理数据库。你应该怎么做呢?

a、为所有用户创建一个域用户组 ;为域用户组添加一个登录;添加登录到sysadmin 角色中

b、为所有用户创建一个域用户组;为域用户组添加一个登录;将登录映射成每个数据库中的一个数据库用户;将数据库用户添加到每个数据库中的db_owner数据库角色中

c、为每个域用户帐户创建一个登录;将每个登录映射到他们合适的数据库中;将数据库用户添加到各自数据库中的db_owner数据库角色中

d、为每个域用户帐户分别创建一个登录,将登录添加到dbcreator服务器角色中。

10、你是一台sql server 2000计算机的管理员。服务器用来储存你公司财务部门的信息。 表financedata中的用户权限被配置如下

:

‘stefan’数据库用户帐户的配置如下图所示:

stefan报告他不能从financedata表中删除信息,你需要他能够有删除信息的权限 应该执行哪个t-sql语句。

a、exec sp_droprolemember accountants, stefan

b、exec sp_droprolemember administrators, stefan

c、exec sp_addrolemember db_datawriter, stefan

d、exec sp_addrolemember db_owner, stefan

11、你是一台sql server 2000 计算机的管理员。 peter是你公司销售部门的一个雇员。 peter有一个sql server登录名为peter,他可以访问名为marketingdata的数据库。peter已经被分派到一项研究项目中并且需要查看和编辑储存在名为researchdata的数据库里的信息。这个数据库与marketingdata

【篇三:电子工程师必读】

t>毕业后,回顾四年学习历程发现,当时以为的明白,到现在都是那时的不明白。或许是自己的经历(参加比赛比较多)导致了现在的反思,但是回顾那个时候的课程设置,却都是合理的,并没有什么不足,但是又为什么会现在才意识到它们之间的联系。最终的结果是,学了很多门课,很多门孤立的课。不知道它们之间有什么联系。

那个时候,又有着要多做比赛,增加实践经验的想法。于是很多时间,放在实验室。真正对于课程的深入思考就更少了,课堂上明显的疑惑还会问问老师,更深入的估计是根本就没有想到。而是想怎么能将单片机程序调出来,会了几块单片机,会用了什么液晶,会用了什么传感器,等等会用了什么模块,最后等于都在调试怎么使用模块以及做了多少块pcb。

可能算深入一些的就是,电路中的电容为什么这样使用。看了些高速电路设计,了解了些东西。读了高质量程序设计,明白了些同学

不明白的东西。但是没有深入进去。也没有看到课程与课程之间的关系。

那个时候,虽然明白c很重要,但是具体什么个重要法,不清楚。也没见到过什么优秀的c程序,以为自己已经见到的就是很不错了。(那个时候,没有了解linux,没有分析ucos,也没有分析过什么c的代码)以为,单片机上也就那么多东西,再加上中断。现在想来当时,想的真是简单。应该说是,连中断都没有真正明白过。只不过比周围的同学,有些概念而已。以至于虽然有学习c的心思,但是却又不知道自己到底缺什么,应该怎样去补充。

前段时间一个同学,写了篇关于学习方法的,感觉写的挺好的,里边也是感慨,在需要学习的时候,找不到灯塔,在暴风雨中挣扎了四年,终于看到了一线光亮的时候,大学毕业了。我们的大学就像是一叶在黑暗中前行的孤帆,迷失在汪洋之中。以至于把大量的时间,放在所谓的比赛上,在实验室调试电路,调试程序,却没有更深入的一步思考。以至于,虽然有有大量的时间,但是却真正没有什么效率。现在看来,如果当时安下心来,好好看几本运算放大器的书,看看csapp,分析分析优秀的c代码。很多地方是不需要在实验室花费那么多的时间的,但是我的那位同学是很想学些东西,研究些东西,但是在四年就在找寻中度过了。

当我们专业在大四毕业时,拿同学的话说,我们专业会使用c编程的,拿两只手的手指都能数的过来。能够搭电路的,画出可以的pcb的,一个手的手指都能数过来。

如果说是少数同学对于专业不感冒,学生难辞其咎;但是当95%的学生对于专业不感冒的时候,这又怎么说呢?这里诚然,有很多地方是我们自己做的不够好,没有深入思考什么;但是反过来,作为老师就没有需要思考的吗?

steve senturia教授engineering is the purposeful use of

science.工程就是对于科学进行有目的性的运用。

当自己大四在公司实习时,下载了mit的一个公开课视频电子电路学(6.002)由anant agarwal教授主讲,这是他们eecs系学生都要学习的一门必修课。以美国对于软件的分类,mit这样做应该是属于偏硬件类的。当时看了第一集,就发现,自己疑惑了三年的电子信息课程中的联系,在这一节课中得到了解答。于是下载了全套视频,断断续续也只看了20集,但是确实理清了很多,以前没有想明

白的问题,突然清楚了很多。也或许是问题,积累的太久了,有这个导火索,一下子引爆了很多。

毕业后,看了几本书,系统程序员成长计划,csapp,unix环境高级编程,人有人的用处,运算放大器权威指南,信号完整性与pcb设计。聆听了黄敬群先生的一堂讲座。分析追踪了ucos的部分源码;分析了contiki的几篇论文,了解系统运行机制及通信机制,追踪了部分代码。查看了linux下,c程序的内存分布,内存使用,堆栈的情况;调试了指针的一些情况。关注了电子工程专辑上凤舞天,武华卿,张进东,模拟示波器等一些热门博客。在这个过程中,发现大学课程中的联系越来越清晰,更感觉自己的大学时间利用效率何其之低。

理清思路,按照大学的课程设置来说。首先,大学的高数,和线性代数,电路计算与分析常用的是微分方程,线性代数也会用到。当然,在上高数的时候,我们的高数老师——牛大田老师,经常跟我们说,信号分析中会用到哪些,经常提醒我们学好微积分,学好傅里叶变换,虽然没有提到在电路中的应用,但是估计很难找到这样的高数老师了。

线性代数(同济版)当时就是行列式变换,具体怎么应用,不知道。后来看到一本steven 教授的线性代数,发现上边关于在各个学科的应用都有表明。那个时候,都快给变吐的行列式,在这本书中就是,我们电路中应该怎么来分析电路,怎么应用在编码中。悔不当初。我承认,当时对于线性代数理解感觉有些吃力,我自认为还算是努力的,但是还是不行。这点或许要承认,自己的抽象能力不行。当我们的大学扩招后,是不是我们的教材,不要那么抽象。本来就不好学的课程,我们的教材再恐吓几下。等真的学到电路(大二上),学到纠错编码(大三下)的时候,估计还记得当时行列式的法则的估计没有几个人了,考研的同学估计在这里也不清楚到底应该怎样理解。

c语言,早在第一学期,带着电子部学长的建议,在最后的两个月,在每天下晚自习后,在实验室用vc敲了两个月例程。自认为对于c理解很多了。开学的c二级考的都还可以,当时想再看看c深入的书籍,但是不知道该看什么了,周围的学长也没有更好的建议。在课堂上,教材上的东西,确实弥补了很多以前不注意的地方。虽然自己感觉挺好,但是很多同学对老师反应很强烈。而自己也错失了,大好的提升c语言的机会。不知道该找什么书看。其实这个时候,

如果看看《系统程序员成长计划》,《c专家编程》,《csapp》,《c陷阱与缺陷》,看看黄静群先生的《深入浅出hello world》会很好的。理解了c语言的深入的东西,大学以后几年就没有那么多烦恼了。单片机没有那么神秘了,也不会说ucos的邮箱机制只能传送一个变量而没有什么用了。使用黄敬群先生说的方法,分析一个操作系统,就会很快明白一个操作系统的大体脉络,也会明白,c程序在单片机和操作系统下运行的异同,不会纠结裸机编程,与系统编程了。如果深入看了csapp,可能发现数字电路,fpga的概念这个时候就都有了。

堂做的一些实验,爆炸的电容,电锯,吹风机这些实际的干扰源对于数字和模拟电路的影响,反馈在电路中的最用地位。虽然,在学习这些的时候,实验自己认为做的还算是认真的,都是自己搭的电路,分析的实验结果,也分析,实验没有一次成功的原因,也在数字实验箱上插过几百根线的仿真验证。但是除了这些,真的不知道为什么反馈使电路更稳定,什么样的干扰对于电路会产生什么样的影响。

《运算放大器权威指南》,《信号完整性分析》,《晶体管电路设计》,《高速电路设计与实践》应该是基本不错的书。微机原理,单片机,eda,感觉这三个,前两个在看csapp的时候,能解决一大部分了。剩下的就是硬件的连接,这些属于数字电路的范畴。eda应该也属于数字电路里边的。通信电子电路,模拟电路的升级版,外加调制,解调。通信原理,应该说是自己大学没学好的一门课。当时准备freescale比赛,没有好好学。现在想来,是很重要的一门课。信息的概念,信道的概念,传输速率,调制,解调,纠错编码应该是对大学期间,学习的这些的一个理论上的总结。现在只能有一些印象,可能有些内容连印象都没有了。数据通信与网络,如果说它没有一点用,看看我们现在用的是什么,就知道有没有用了。基本的互联网,以后的物联网,虽然它的确没讲多少,至少给我们开了扇门。要比我们,以后继续在黑夜中行走要好得多。当然这里所列的,对于信号的处理涉及的并不多,因为自己主要偏向于应用。对于信号处理,着力就不多。随机信号分析,数字信号处理,图像信号处理,语音信号处理,这些了解不多。

一个纠结了几年的问题,反馈问题,在参加freescale比赛的时候,使用到pid控制,隐约感到这里的反馈,与电路中的反馈有什么联系。电路中有正反馈,负反馈。和信号与系统中的反馈有些联系,

也与控制原理中的反馈有联系。但是只是猜测。后来不知道在哪看到维纳的《控制论》评论说是,控制方面的开山作。虽然崇拜,但是买不到,据说也不好读,里边很多公式。于是乎找到了维纳的另一本书《人有人的用处》,据说是《控制论》的科普版。饶是如此,看的时候依然有些困难。因为翻译的比较早,总感觉理解起来,得琢磨一会。但是,里边确实将反馈提到系统里边来说明。只要是一个系统,就存在反馈。而且负反馈导致系统稳定。于是乎,就想起来了,当年的信号与系统,电路系统,控制系统,应该说他们的反馈机制都是一样的。后来在《运算放大器权威指南》中看到,里边将电路的反馈和控制原理的反馈比较分析,发现形式一模一样,只是由原来的控制原理的术语,换成了电压电流。至此纠结了几年的问题,彻底解决了。

在凤舞天的一个博客中看到说,国内的环境注定了,我们不能把东西都掌握了再去做东西,那样黄花菜都凉了,但是如果没有掌握理论,做出来的东西也就只能在国内卖。这个值得思考一下。