- 不白九百
-
不一定。学编程的人最根本的还是要数学底子好,所有的算法都是靠严密的思维逻辑才能够行得通的。编程语言要写大量源代码,其实只要是认得26个字母的人都可以编程。
但是毕竟程序这个东西是西方那里过来的,我们现在编程的代码都是英文字母。先进的计算机编程技术也都是西方那里学过来的,一些大型的计算商用程序大多数被西方垄断。如果要想在编程上有所进展,学习英语对拓展视野大有用处。
国内也有编程不用英文字母写源代码的,比如说易语言,所以学习编程外语不一定要很好,将来中国强大了,源代码用中文写,不也是很好嘛!我们的雷军,英语虽然不是很好,但编程可也是一流的,这正说明了学编程不一定要英语很好。
- Mugen-Hive
-
俗话说,没有金刚钻,就别揽瓷器活儿。套用到
IT
业,英语不行,就别做程序员。网上关
于程序员学英语的文章不少,
但我想谈谈我自己的看法。
首先详细讨论一下为什么程序员离
了英语不行,然后针对程序员应该怎么学英语说说我的体会。
英语是计算机的母语,是程序的母语,所以必然是程序员的母语。
程序中的变量名、函数名
起得好不好是决定代码质量和可维护性的最关键因素。
高质量的代码应该是这样的:
代码基
本上是自解释的(
self-explanatory
),不需要太多注释,不管代码的规模有多大,具有相
关知识背景的读过文档的人都可以立刻上手、
立刻参与维护和开发。
要想使代码能够自解释,
给变量和函数起个好名字很关键,
很显然,
只能用英文起名字,
一是用汉语拼音起名字可读
性很差,二是英文单词通常比汉语更
expressive
(看吧,如果用汉语来说,就得说“表达
能力更强”、“更有表现力”这么罗嗦)
,由于程序的复杂性,变量和函数往往表示一些很
抽象的概念,
起个既准确又简洁的名字并不容易,
可是很多时候,
用汉语需要很多字才能说
清楚的一件事,用英文一个单词再加点词形变化就能说清楚了。例如
APUE
上讲
sleep
函数
的实现,
其中有个变量表示“本来应该睡到某个时刻,
但是提前被信号唤醒了,
唤醒时与本
来应该睡到的时刻相差的时间”,
如果为了简洁而不求准确,
这个变量名至少也得叫“未睡
到”,而书中只用了一个单词
unslept
,非常准确、简洁地表达了这个意思。为了写程序而
学英语需要学到什么水平?我认为能起出这种变量名就够水平了。很多在
IT
外企工作的中
国人,说话写文章经常夹杂着英文单词(比我严重多了因为我不在外企),非常可以理解,
确实是为了表达得更准确简洁的需要,而不是纯为了
play
zhuangbility
。总之,要写程序
必须学好英语,
否则连变量名都起不好,
这虽然是一个非技术问题,但却是个根本问题,比
任何技术问题都重要。当然,现在很多编程语言也支持用
Unicode
字符给变量和函数起名,
但是你见过有人用汉字写程序吗?根本不实用。
有人会辩驳说一页英文翻译成中文往往只占
半页,中文不是更简洁吗?但是你算算打一页英文和打半页中文哪个敲键盘次数多。另外,
要读别人的代码也必须学好英语,如果你不知道
unslept
是由
sleep
变形而来的,就体会
不到其中的精妙,
只有大量阅读高质量的代码,
才能写出高质量的代码,
创作都是从模仿开
始的。
说说英语对于看书学习的重要性。
中文技术书和英文技术书的水平根本不在一个量级上,
这
是有很多原因的,
不能全归结于中文书的作者水平差。
最重要的是,
出中文书的低回报率决
定了作者不可能花太多心血在上面,你去
amazon
看看一本书卖多少美刀,再去
chinapub
看看一本书卖几块钱。
老外写一本书,
可以做到全书没有一个拼写错误
(当然英文的拼写检
查工具更完善也是部分原因),中文能找出一本没有错别字的书吗?
Knuth
可以悬赏让全世
界读者来找磋,
中文书作者有哪个敢这么做?不是因为老外态度有多认真治学有多严谨,
而
是因为他们赚到了,就应该拿出高质量的作品来,不然会被读者骂的。
英文技术书的翻译质量通常很差。
也不能归结于译者的水平差,
我也翻译过书,
也努力想译
好,但真的很难译好。
IT
业的新名词层出不穷,像“内核”、“网络”这种常见术语还好,
稍微专一点的术语都没有统一的译名。
我们在教学中发现,
很多学员看书时搞不清这本书的
名词
A
和那本书的名词
B
是什么区别,
来问老师,
才发现原来
A
和
B
就是一回事儿。
这是一
个单词对应多个译名的情况,
还有一个译名对应多个单词的情况,
比如
field
、
domain
、
realm
都译成“域”,
block
、
bulk
都译成“块”,
argument
、
parameter
都译成“参数”,
attribute
、
property
都译成“属性”,虽然这些词的意思本来就差不多,但是在一篇文章
里,作者可以换着用,不同的单词表示不同的概念,翻译完了一看,都成一个概念了。英文
书背后都有
index
,看到一半忘了某个名词是怎么定义的就可以翻
index
,而译文通常没有
index
,名词都已经乱七八糟了,没法做
index
。还有更发指的是,老外喜欢造词,现有的
单词上加一点变化和组合(例如有人喜欢说
automagically
),看着心领神会,想译出来就
很费劲。
老外即使在技术书中也经常用一些生动的表达方式和俏皮话,
而中文的书面语言非
常死板,
生动的表达方式只存在于口语中,
如果写在书上就很不像话,
这也是很难翻译的一
个重要原因。看中文译本,不仅质量差,而且跟不上时代,通常一本英文书出来,至少要等
一到两年才能看到中文译本。
两年啊!
等你看到这本书的中文译本时,
这个版本都快淘汰了。
然后说说英语在开发工作中的重要性。
看书学习通常只起一个引导入门的作用,
在工作中更
有用的是手册、文档。学完了
C
语言开始写程序了,谁还会去查
K&R
附录中的库函数?查
man page
才是最有效率的。然而手册比入门书更少有中文译版,因为手册是随时变的,会
随着软件版本更新,
而且需要看这些开发手册的人通常不会有英文障碍,
有英文障碍的人即
使看了翻译的手册也写不出好程序来,
所以当然没必要翻译了。
不管什么技术,
官方的手册
和技术标准才是最原始的第一手资料,
看别的书都是以讹传讹,
由于自然语言不可避免是有
歧义的,
文档中表达得不准确的地方就会被文档的读者也就是技术书的作者误解,
技术书中
再有表达不准确的地方又被译者误解。
我们小时候都玩过传话的游戏,
几个人站一排,
通过
悄悄话传一句话,传到最后变成什么了?所以,学网络协议,就得看
RFC
,学
ARM
,就得看
ARM
公司的
Architecture Reference Manual
,要学习
C
语言就得看
C99
,有歧义不要紧,
自己去揣测原作者的意思,总比道听途说的可靠。
我们的学员出去面试经常被问到的一个问题就是:
在开发工作中遇到问题,
书和文档上都没
有答案,网上搜一下也没有答案,怎么办?要我说,能看懂源代码的就去源代码中找答案,
这称为
hacking
,不管是内核、
libc
还是各种
framework
,你调用的东西有问题都能从它的
代码中找到原因。如果没有能力
hacking
,或者时间紧不想去
hacking
,最好的办法就是去
官方邮件列表和
IRC
问。
如果英文不行就没办法了,
只能去一些中文论坛:
“各位大虾帮忙,
小弟有一个问题求救!
跪求!
!
在线等!
!
!
”在线等了好几天也无人问津,
或者答非所问。
岂不知逛这些论坛的没有大虾,都是菜鸟,大虾们都在
IRC
上聊得正欢呢。我在做
Qt
开发
时曾经有一个问题,
当时在教育网,
上国外网不方便,
去各大中文论坛问了好几天也没人给
出满意的回答,后来花钱连了国外网,去
trolltech
官方新闻组提问,只等了几分钟就得
到了满意的解决办法。这次经历给我留下了深刻印象,从此以后再也没有去中文论坛。
那么,
如果现在英文水平很差,
又想做程序员,
应该怎么学英语呢?我下面说的方法有两个
前提,
一是你的英文至少达到高中毕业水平,
也就是语法基本都学完了,
即使用得不熟练也
知道有那么回事儿,二是你希望尽快在工作中用上英语,写程序够用就行,而不是有考
T
考
G
这样的更高要求。
学习英语有听说读写四个方面的要求,
做程序员至少需要读和写非常流畅,
如果在外企工作
还需要听和说的能力。技术英语和考
T
考
G
是不一样的,一是听和说不像读和写那么重要,
不必担心自己是“聋哑英语”,
没关系,
丝毫不影响你成为编程高手,
二是要求的词汇量要
小得多。
考
T
考
G
都要拿一本单词书背,
很少有人会觉得背单词很有意思,
至少我是觉得很
痛苦,
幸运的是看技术书不需要多少词汇量。
技术书的描述对象都是局限于一个很窄的领域
的,
就那么几个单词翻来覆去地用,
而且技术书是为了让人看懂的
(不像诗是为了让人看不
懂的)
,比较复杂的词在书中都有定义或解释。有些作者喜欢卖弄词汇量,
用一些很生僻的
单词,也有些作者卖弄一些典故,由于文化背景不同很难理解,不过这些通常都可以无视,
不会影响阅读,
还是因为技术书是为了让人看懂的。
对于学习者来说,
阅读能力是最重要的,
等你完成了学习,成为一个合格的开发者时,
需要写代码注释,需要写文档,需要通过邮件
交流,写作的能力才开始重要了。所以应该首先从阅读开始练习英语。
现在就拿起一本英文原版书开始看吧。
和学游泳一样,
阅读的能力只能通过阅读本身来练习。
我的经验是,
不必先系统学习了单词和语法再看书,
可以在看书时用到什么就补什么。
我建
议初学者看电子版,
因为现在的词典软件都可以鼠标取词,
边看边查很方便,
很多勤快人喜
欢把查过的单词都抄下来,我觉得没有必要,
反正查字典很方便,
下次再看到了就再查,多
查几次总会记住的,
抄下来就打断了看书的思路,
而且不见得抄下来就能记住。
也许是因为
我这人比较懒,
我用的都是懒办法。
很多人不喜欢看电子书,
理由是盯着屏幕看书太累,那
么盯着屏幕写程序累不累?这种人显然不适合做程序员。
语法不熟练怎么办?大多数情况下
单词的意思都明白了就不影响阅读。
技术书有时候喜欢用长句,
其中可能包含各种从句,
如
果实在读不懂就去查语法书,
同样也不需要把这种从句彻底弄明白,
只要这一句能看过去就
行了,以后多查几遍书,自然就掌握了。另外,技术书是说明文,通常不应该有过去时,看
到过去时就需要注意了,
很可能是虚拟语气,
如果不注意这一点,
看到的意思可能和真实的
意思正好相反。
应该从哪本书开始看起呢?从你当前最需要学的技术书看起。
看书是相当花时间的,
如果能
一边学英语一边学技术,
这时间利用得就很有效率。
比如,
如果你的
C
语言已经学得相当好
了,不要专门为了学英语去重看一遍原版的
K&R
。市面上有一些专门的计算机英语教材,我
的建议是不要看,浪费时间,
nonsense
。
初学时最好选一本有中文译本的书,有看不懂的地
方可以翻中文版来对照,
但是不要相信中文的翻译,
原因在前面讨论过了。
如果你是初学编
程,没有任何基础,我可以推荐一本英文很浅显技术也很浅显的书:
How To Think Like a
Computer Scientist
,有
Python
、
Java
和
C++
版本,可自由下载。
要逐渐养成良好的阅读习惯。
一是不要每个生单词都去查,
有些单词很生僻,
查了也记不住,
记住了也不会再见到它了,
但是前面讲过,
都是作者在卖弄词汇量,
无视它丝毫不影响阅读,
因此要学会猜测单词的意思,能不查就不查,继续贯彻“懒”的原则。二是看书不要动口,
不念出声也不行,
就是不要动口,
要努力在大脑中建立从词形到语义的直接映射,
如果只能
从词形到读音再到语义就太慢了,
严重影响阅读速度。
三是努力做到每句话都从头到尾只看
一遍,
不许回头反复看,
这一点比较难,
必须注意力高度集中,经常在记忆中暂存前面半句
的内容和句式才能做到,
但是一旦神功练成就会成倍地提高阅读速度。
最后一层境界,
学会
skim
,
就是略读,
很多优秀的作者在组织材料时会给读者一些建议,
比如这一段是扩展的高
级话题,和主线的相关度较低,
可以先
skim
到后面,注意不是让你
skip
到后面,这一段还
是要读的,
但是不必逐字句地读,
而是抓主旨,
大概讲了个什么概念
(有一些下定义的句式)
,
有哪些要点
(有数字编号或
bullet
列表项)
,
适用于哪些场合有哪些注意事项
(有
caveat
、
gotcha
、
noteworthy
这种字眼),后面可能还会碰到这个概念,虽然你没有仔细看这是个
什么东西,
但大体上也知道了,
这样就能不影响后面的阅读,
这不仅需要高度集中的注意力、
熟练的语言能力,
而且要有足够的背景知识去猜测性地理解。
但是语言能力还是最重要的因
素,我和几个同学交流过,他们也能熟练地看英文书,但是需要
skim
查一个东西时就觉得
还是不如中文书查得快。
skim
的技能在查阅手册时尤其重要,没有人会像看入门书一样把
上千页的手册从头到尾看一遍,
都是用到哪儿就查哪儿。
总之,
锻炼各种阅读习惯就为了一
个目的:如何在最短的时间内,
在保证正确性的前提下,
获取尽可能多的知识。程序员的学
习时间都是非常宝贵的。
以上本着“够用就好”的原则,
多次提到用懒办法,
但是学技术学英语这两件事不能懒,
贵
在坚持。
要养成良好的阅读习惯也有很多东西需要坚持,
其中最根本的是持续高度集中注意
力,充分调动记忆能力、推理能力、猜测能力,就像考试做阅读题一样看每一段话。最根本
也是最重要的,
“有英文原版就不看中文版”这个原则一定要坚持。
一开始看英文书可能会
很慢,
但只要一直坚持就会慢慢达到原来看中文书的速度,
再坚持下去就会比中文书看得更
有效率,因为避免了很多歧义和术语翻译的问题。
有人会说,
项目紧任务急,看英文资料太
慢,
这次就先用中文尽快解决工作中的问题吧,
等以后有时间了再看英文书学习。
可是什么
时候才会有时间呢?工作总是一个接一个的,
老板怎么会付了工资让你闲着呢?如果你有这
样的困难,
我的建议是干脆辞职,学好了英文再去工作。
你只要想想,
你的同行们在外企全
英文的环境下工作,
英文和技术每天都在突飞猛进,
而你还在用效率极其低下的方式学习和
工作,
你和别人的差距不是越来越大了吗?另一方面,
现在的在校学生从小学就开始抓英语,
基础都很好,
很多高校也逐渐重视引进原版教材,
开设很多英文授课的专业课。
你再不奋起
直追,就不觉得以后的职业道路充满危机吗?
最后说说写作。
刚开始练习时不要怕写错,
能表达清楚自己的意思即可。
我看过很多源代码
和文档中的英文,一看就是中国人写的,谓语动词不分单复数,名词复数不加
s
,处处可见
中国式英语,
但是丝毫不影响我对这些编程大牛的景仰,
因为其中的思想我看懂了,
并且我
认为很强大。我有一个朋友,中学毕业就出来混的,由于工作的性质总要跟老外打交道,他
从来不惧和老外交流,
虽然连一个囫囵的句子都说不出来,
但总是能用中学学的那点单词让
老外明白他的意思,
这一点我就非常佩服。
总之就是说,
不要因为不知道怎么写是对的就不
敢动笔写,
只要敢交流,
并且别人能懂你的意思,
就是很有效的交流。
而且随着阅读量的增
加,自然能写出一手好英文,前面讲过了,创作总是从模仿开始的。不怕出错才能有一个好
的开始,
才能逐步练习提高,
而练习的最终目的当然还是希望写好,
不仅字句通顺无语法错
误,还能适当修辞。
- 陶小凡
-
不需要,人类的情感是很复杂的,语言作为人类情感的表达,也是很复杂的。但编程使用的是计算机的语言,跟人类的语言完全不同,所以编程和英语完全是两码事,虽然表面上看上去都是用26个字母在拼写,但实际上编程的语法和英语的语法也完全没关系,命令也就是那么几个,跟英语单词比起来实在是少太多了,国内大多数的编程教材也都是中文的,所以英语不好也能学习编程,但并不是说编程很简单,编程的难点在于需要一定的逻辑思维能力和对事务的分析能力。当然,当你编程水平到了国内顶尖的水平,再想提高却发现国内已经没有合适的教材能教导你了,这时候如果能看懂一些英文教材,那对编程的提高也是有一定帮助的,英语对编程的帮助也就是仅此而已。
- ardim
-
您好,我就是编程的,在计算机语言中并不需要太好的英语功底,有一定的基础就好了。这是门语言,既然是语言,就都是相通的,关键靠熟练使用和记忆,祝学习编程愉快!
- volcanoVol
-
计算机本身就是二进制计算得,英文故可重要,但是逻辑思维才是根本,有些命令函数的确都是英文得,但是区区那几个英文还是很容易学得,不管英文水平多高,它必将是一种辅助,主要开始你开发能力。说句真正意义上得实话,如果你英文好,编程好,你还是写不出好程序得,因为你对计算机工作原理和电路并不懂,所以你的编程也是有限得,你没办法开发渲染器,三维软件,等等软件,至今国内都没有牛逼得三维软件,和渲染器,因为只会英文,只会编程是不行得,真正牛逼得程序师是需要懂得计算机运行原理得。
- kikcik
-
没有英文基础的话,我想学习过程应该就是从入门到放弃的过程。想脱发都没机会。
上学时脑子就像浆糊,英文数学都学不会,现在年龄大了开窍了,逻辑思维能跟上了,但是没有英文数学基础
一直对计算机感兴趣,从玩游戏-->易语言-->HTML,css,JavaScript-->python,越学越想放弃,真的很费劲!
想学好编程就先从英文开始吧,至少能读写,一句英文放在面前要认识80%以上的单词,能明白这句英文的意思。
看不懂英文的结果就是,学一个语言,这个语言可以实现什么功能,用什么方法实现都不明白,这样的话编程编程怎么编?
一个简单的例子,开车,都知道做到驾驶室位置能开车,但是不会开车的人,坐上去只能干瞪眼,怎么开?怎么打火?怎么加油门?怎么挂挡?怎么刹车?
这些都是问题,有说明书?全TM英文的
学编程,英文和数学就像两条腿,不会的话这个门槛你看着在你肩膀位置,累死累活翻过去了,一看还有一道门槛,TM使劲跳起来手才刚刚挂在上面,
有英文数学基础的,这个门槛最多在小腿位置,跨过去第二道门槛才刚过膝盖,这就是差距!!!
如果想感受下编程,试试易语言吧,不过仅限于自己写着玩玩,前提是卸载你的杀毒软件!
- Chen
-
不一定。学编程的人最根本的还是要数学底子好,所有的算法都是靠严密的思维逻辑才能够行得通的。编程语言要写大量源代码,其实只要是认得26个字母的人都可以编程。
- 臭打游戏的长毛
-
不一定。因为编程用到的英语单词不是很多,而且专业性很强,所以学编程不一定要英语非常好。
- 寸头二姐
-
不一定。学编程只要能够认识编程语言中经常使用的英语就可以,不一定英语非常好。
- 小菜G的建站之路
-
是的,没错,语言开发都是要英语好的
- 安徽路人假
-
不需要,人类的情感是很复杂的,语言作为人类情感的表达,也是很复杂的。但编程使用的是计算机的语言,跟人类的语言完全不同,所以编程和英语完全是两码事,虽然表面上看上去都是用26个字母在拼写,但实际上编程的语法和英语的语法也完全没关系,命令也就是那么几个,跟英语单词比起来实在是少太多了,国内大多数的编程教材也都是中文的,所以英语不好也能学习编程,但并不是说编程很简单,编程的难点在于需要一定的逻辑思维能力和对事务的分析能力。当然,当你编程水平到了国内顶尖的水平,再想提高却发现国内已经没有合适的教材能教导你了,这时候如果能看懂一些英文教材,那对编程的提高也是有一定帮助的,英语对编程的帮助也就是仅此而已。
- LuckySXyd
-
计算机程序代码很多人都见过,里面貌似有很多英文单词。因此,有些人断定,学编程要有很好的英语基础。没错,在计算机程序中有很多指令都是由英语单词构成的,这些英语单词在高中甚至大学英语中都不会学到。
因此,不管你是初中还是大学毕业开始学编程,都需要重新认识这些新单词。单词数量并不多,也没必要全部记在脑袋里。而且,在写程序时,只要你输入一个单词的前几个字母,电脑就会自动提示后面的。所以,就算只有初中英语基础,学编程也没什么压力。
- 莫妮卡住了
-
不一定。学编程的人最根本的还是要数学底子好,所有的算法都是靠严密的思维逻辑才能够行得通的。编程语言要写大量源代码,其实只要是认得26个字母的人都可以编程。
- 豆豆staR
-
我认为这个是不一定的,因为学习编程,你只要把特定的记好就行了。
相关推荐
apue 例子可以用c++写么
apue是Unix环境下的高级编程,Linux下编程都是用C,像APUE这种网络开发都是直接用的C的API,而C++基本是用在跨平台的Linux做服务器,一般多用于PHP、JSP之类的服务器建设与开发。C++主要用于软件开发(现在Linux软件通过之前说的QT开发,当然很多通过C开发的,不然C也不会基本排名第一了)及底层开发(如基于Linux的Android底层),建设服务器貌似不是C++的强项,涉及到网络的应用软件开发倒还可以2023-07-18 18:33:371
Linux系统应用与开发教程 与APUE有什么区别啊?
光看名字的话很难说清楚,按照之前看过的一些书讲下我的理解吧。1 UNIX环境高级编程 是圣经级别,结合操作系统的资源和特性来描述API,并且会给出差异化的例子来对比,涵盖了unix的文件/进程/信号/相关的编程及注意事项,必读书籍。2 APUE正如其名,是基于unix的,现在的linux已经发展到3.x了,原有的一些APUE描述实现已经有所变化,也发展了很多linux特定的应用。基于linux的程序设计书籍是很必须的,但是作者能不能达到steven的水平让人担心,所以现在都说RTFS(read the fucking source)是很有道理的。3 你提到的linux 系统应用与开发教程,不知道具体内容是什么,估计也脱不了APUE的架子,你注意看看对应的教程是不是写着“编著”,这个跟APUE的“著”是差别很大的。学校里的教程基本上就是带着你走一遍教材,教材不会有很出彩的地方(经典的已经摆在那里了,无法超越),老师的授课方式和你的接受能力才是关键,不要抠着这几个名字不放,课照上,书照读,都不耽误。2023-07-18 18:33:473
面试官让我回去看看apue,unp,mysql是什么意思
都是编程很基础的东西, APUE是工具书, UNP是网络基础, Mysql是当下炙手可热的数据库, 很多后台都在用, 值得学习。2023-07-18 18:33:531
APUE读书笔记-15进程内部通信(5)
三种类型的XSI IPC:消息队列,信号量,和共享内存,有许多共同点。这里将讨论这些共同的特性,后面会依次讨论它们的各自的特性。 XSI的IPC函数基于System V的IPC函数。这三种类型的IPC起源于1970s的一个被称作"Columbus UNIX"的内部AT&T的UNIX版本。后来这三种类型的IPC被添加到System V中。它们不使用文件系统的命名空间而是使用自己的标准的命名空间。 我们应当知道(前面的表格中也说了):消息队列,信号量和共享内存被定义为Single UNIX Specification的XSI扩展。 内核中的每个IPC的结构(消息队列,信号量或者共享内存段),通过一个非负的整数来引用。例如当发送或者从一个消息队列中接收消息的时候,我们所知道的就只是这个队列的标识。和文件描述符号不同,IPC的标识不是一个小的整数。实际上,当创建并且移走一个IPC结构的时候,相应的标识符号会连续地增加,知道它到达一个最大的正整数值,然后又回归到0。 标识只是一个IPC对象的内部名字。协作进程需要一个外部名字策略以便能够使用IPC对象进行交互。为了实现这个目的,IPC对象和一个关键字进行关联,这个关键字的作用就像是一个外部的名字一样。 当创建一个IPC结构的时候(通过调用msgget, semget, 或 shmget),必须指定一个关键字。关键字的类型是key_t,它是在头文件<sys/types.h>中被定义的一个长整数类型。这个关键字在内核里面被转换成一个标识。 对于一个客户和服务,有许多种不同的方法来使用同一个IPC结构。 返回:如果成功返回关键字,如果失败返回(key_t)-1。 这里的path参数必须引用一个已经存在的文件名称,而参数id则只使用它的低8位来生成关键字。 ftok创建的关键字,一般是通过path对应的文件的stat结构的st_dev和st_ino成员结合project ID,来进行生成的。如果指定两个不同的path,那么ftok通常会返回两个不同的关键字。然而由于i-node成员和关键字都是通过长整型来存储的,所以在创建关键字的时候必然会丢失一些信息(关于索引节点的唯一性的信息),这意味着如果两个不同的路径名,如果指定的project id是相同的话,也是有可能会产生同样值的关键字的。 三个get函数(msgget,semget和shmget)都有两个类似的参数:一个关键字和一个整数标记。 当一个 新的IPC结构被创建 (通常是服务进程创建)的时候,通常是由如下情况导致: 如果想要引用一个已经存在的队列(通常是客户进程引用),关键字必须要和创建该队列时候的关键字一样并且没有指定IPC_CREAT标记。 需要注意的是,我们不可能通过IPC_PRIVATE关键字来引用一个已经存在的queue,因为这个特殊的关键字值会创建一个新的queue。为引用一个已经存在的使用关键字IPC_PRIVATE创建的queue,我们必须知道相应的表示,然后在其他的IPC调用中(例如msgsnd和msgrcv)使用那个标识,而不是通过get函数来获得标识。 如果我们想要创建一个新的IPC结构变量,那么我们需要确保我们不会引用一个使用同样表示的已经存在的IPC结构变量,我们必须同时设定IPC_CREAT和IPC_EXCL位的标记。使用这个方法,当已经存在了那个IPC结构的时候,会导致返回一个EEXIST错误(这个情况就类似使用指定了O_CREAT和O_EXCL标记的open函数)。 XSI的IPC结构和一个ipc_perm结构相关联,这个结构定义了权限和属主,并且至少包含了如下的成员: 每种实现都包含了额外的成员,可以通过查看你系统上面的<sys/ipc.h>文件来了解完整的定义。 当建立IPC的时候,所有的成员都会被初始化。之后,我们可以通过调用msgctl,semctl,或者shmctl来修改uid,gid,和mode成员。为了能够改变这些值,调用进程必须是IPC结构的创建者或者是超级用户。修改这些成员和给一个文件调用chown或者chmod类似。 mode成员的值和<sys/stat.h>中定义的文件访问权限很类似,但是对于任何的IPC结构没有相应的执行权限。同时,消息队列和共享内存使用read和write但是信号量使用read和alter。下表展示的就是每种IPC形式的六个权限: 有一些实现定义了一些常量来表示这些权限,但是这些都没有被Single UNIX Specification标准化。 我们可以看到,所有三种形式的XSI IPC都有内部的限制。所有这些限制可以通过内核来进行配置,我们后面讲到每一种IPC的时候,将会对这些限制进行描述。 每个平台提供了它自己的显示和修改特定限制的方法。FreeBSD 5.2.1,Linux 2.4.22,和Mac OS X 10.3提供了sysctl命令来查看和修改内核配置参数。Solaris 9可以通过修改文件/etc/system然后重新启动来修改内核的配置参数。 在Linux上面,呢可以通过运行"ipcs -l"来查看IPC相关的限制。在FreeBSD上,相应的命令是"ipcs -T"。在Solaris上,你可以运行sysdef -i来查看可以调节的参数。 (内容不会被及时释放)XSI IPC的一个基本问题就是IPC结构是系统范围内的,没有一个引用计数。例如,如果我们创建了一个消息队列,将一些消息放到这个队列上面,然后终止进程,那么消息队列和它的内容并不会被删除。它们会保留在系统中,直到其它进程调用msgrcv或者msgctl进行特定的读取或删除,或者通过执行ipcrm命令,或者通过系统的重新启动。与pipe相比,pipe会在最后一个引用它的进程结束的时候完全地被移除。对于FIFO,尽管管道的名字在文件系统中保留着(以管道文件的形式),但是FIFO中保留的任何数据会在最后一个引用该FIFO的进程结束的时候被移走。 (无法像文件那样直观)另外一个XSI IPC的问题就是,这些IPC结构不是通过在文件系统中的名字被知道的。我们无法通过前面的函数来访问和修改它们。有许多系统调用(msgget,semop,shmat,等等)被添加到内核中以便支持这些IPC对象。我们无法通过ls命令来查看IPC对象,我们无法通过rm命令来删除它们,我们也无法通过chmod命令来修改它们的权限。然而,有两个命令"ipcs"和"ipcrm"被加入了进来,可以实现类似的功能。 (无法进行高级的文件操作)因为这些IPC不能使用文件描述符号,所以我们不能构对它们使用多I/O函数(select和poll函数)进行操作。这使得我们同时使用多个IPC结构或者通过文件或者设备I/O使用任何这些IPC结构变得非常的困难。例如,我们无法有一个服务进程不经过忙等待的循环方式等待消息被放到两个消息队列中的一个上面。 还有更多关于有点和缺点的讨论或者争辩,这里就不一一列举了。同时有一个描述各种IPC特性的表格,这里也不列出了。具体参见参考资料。 后面将会对三种IPC分别进行详细的讲解。 参考: APUE2/ch15lev1sec6.html2023-07-18 18:34:001
unix环境高级编程,适合初学者吗
我跟你说说我看APUE的经历。在看APUE之前,我的Linux知识已经积累很多了,C也是特别熟悉,以及C++,但是第一次看APUE还是让人很沮丧的,中途而废,因为里面的很多问题是完全之前没想过,接触过的,知识储备不够,所以我放了差不多半年,这半年我补了很多知识,看了基本Linux系统编程入门的书籍,了解了GCC、GDB的基本使用,学会了vim,学了些进程线程的东西。第二次看APUE,我坚持看完了,收获很大,但是不懂的东西还是很多。第三次看APUE,对很多问题有自己的看法,并且开始去尝试其中的一些例程。第四次看APUE,我就能够很顺利的梳理APUE的结构了,如果开发中遇到什么问题,我知道去哪儿找答案。第五次看APUE,我粗略的翻翻就知道哪些地方由于长期不用变得生疏。APUE是本圣经,可以说不多翻几次是看不出它是个好东西的。几年下来APUE被我都快翻烂了,确实学到不少东西。不管做不做系统看法,当看一些文档时我都能游刃有余了。我的建议,早看。早看早入门,只要你的C语言知识足够,Linux知识储备足够,早看!2023-07-18 18:34:105
apue图4-21程序错误提示incompatible types when assigning to type struct timespec fom type _time_t
大字符反复反复反复反复2023-07-18 18:34:442
Linux高级程序设计 Linux程序设计 advanced linux programming unix环境高级编程
只需一本APUE(unix高级环境编程)其它的基本内容都差不多不需要一本本全都看自己对照下跟APUE中有哪些没有提到的可以选择性阅读2023-07-18 18:35:072
哪本书的linux c多线程编程讲的好
感觉书上面提到的多线程编程都比较偏理论,都主要是讲线程的创建,退出,同步等一些情况,APUE讲解的也比较好理解,另外推荐看一下linux下的一些开源代码,比如pcsc-lite,它的主体构架就是多线程的,可以适当的参考一下它的框架。2023-07-18 18:35:152
本人是小白,请问UNIX书中./a.ou是什么文件,还有“apue.h“头文件是自己写的吗?程序写在vi里怎么运行?
关于./a.out以C语言为例,linux下假设有test.c文件,gcc编译后(不加-o)选项默认生成的可执行文件名就是a.out,也就是说a.out文件是一个可执行文件。./a.out表示执行该可执行文件apue.h是自己写的,《UNIX环境高级编程》中附录B(677页)中有源码假设你用vi编辑了一个test.c文件,计算机是无法直接读懂该文件的,细说的话要经过预处理、编译、汇编、链接等操作后才生成计算机能读懂的文件,也就是我刚才说的可执行文件那种。对于C初学者,你需要借助编译器gcc:$gcc test.c执行这个命令后再当前目录下执行ls,会发现多了一个a.out的可执行文件,然后执行./a.out就可以运行程序了。gcc可以加上-o选项,如:$gcc test.c -o test.exe-o选项表示指定生成文件的名称。gcc还有很多选项,深入学习的话可以百度或者gcc -help之类的命令查看2023-07-18 18:35:332
如何学习linux编程(重点在书籍推荐)
建议学习路径: 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。 对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候 我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。 《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书 只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由 《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》 ,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。 《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是 有一个清晰的认识。 《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。2023-07-18 18:35:441
cpu:AMDFusionAPUE1-1200,集成AMD Radeon HD 7310 显卡,2G1333内存,是否可以轻松运行win7 32位系统?
从这个WIN7运行的环境来说,这个配置肯定能装,但是另一方面,从这个笔记本的CPU主频来看,速度不是很快,才1.6-2.0G之间,想台式机的话,主频一般2.5以上了。所以,如果你想在WIN7下玩什么网络游戏或者做设计,有点难。2023-07-18 18:35:544
反绕文件是什么意思?APUE里边看到的,不太理解。
就是rewind,他其实就是读取文件,读取文件不是经常需要调整文件指针的位置吗,rewind就是把文件指针放到文件开始处。如果你以前打开过,并且读取了几条,调用它就会又从第一条开始读取。2023-07-18 18:36:011
到什么程度才叫精通Linux?
许多同学触摸Linux不多,对Linux渠道的开发更是一窍不通。而如今的趋势越来越标明,作为一个优秀的软件开发人员,或计算机IT职业从业人员,把握Linux是一种很主要的营生资本与手法。下来我将会结合自己的几年的个人开发经验,及对 Linux,更是类UNIX系统,及开源软件文化,谈谈Linux的学习方法与学习中应该注意的一些事。就如同刚才说的,很多同学以前可能连Linux是什么都不知道,对UNIX更是一无所知。所以我们从最基础的讲起,对于Linux及UNIX的历史我们不做多谈,直接进入入门的学习。Linux入门是很简单的,问题是你是否有耐心,是否爱折腾,是否不排斥重装一类的大修。没折腾可以说是学不好Linux的,鸟哥说过,要真正了解Linux的分区机制,对LVM使用相当熟练,没有20次以上的Linux装机经验是积累不起来的,所以一定不要怕折腾。由于大家之前都使用Windows,所以我也尽可能照顾这些“菜鸟”。我的推荐,如果你第一次接触Linux,那么首先在虚拟机中尝试它。虚拟机我推荐Virtual Box,我并不主张使用VM,原因是VM是闭源的,并且是收费的,我不希望推动盗版。当然如果你的Money足够多,可以尝试VM,但我要说的是即使是VM,不一定就一定好。付费的软件不一定好。首先,Virtual Box很小巧,Windows平台下安装包在80MB左右,而VM动辄600MB,虽然功能强大,但资源消耗也多,何况你的需求Virtual Box完全能够满足。所以,还是自己选。如何使用虚拟机,是你的事,这个我不教你,因为很简单,不会的话Google或Baidu都可以,英文好的可以直接看官方文档。现在介绍Linux发行版的知识。正如你所见,Linux发行版并非Linux,Linux仅是指操作系统的内核,作为科班出生的你不要让我解释,我也没时间。我推荐的发行版如下:UBUNTU 适合纯菜鸟,追求稳定的官方支持,对系统稳定性要求较弱,喜欢最新应用,相对来说不太喜欢折腾的开发者。Debian,相对UBUNTU难很多的发行版,突出特点是稳定与容易使用的包管理系统,缺点是企业支持不足,为社区开发驱动。Arch,追逐时尚的开发者的首选,优点是包更新相当快,无缝升级,一次安装基本可以一直运作下去,没有如UBUNTU那样的版本概念,说的专业点叫滚动升级,保持你的系统一定是最新的。缺点显然易见,不稳定。同时安装配置相对Debian再麻烦点。Gentoo,相对Arch再难点,考验使用者的综合水平,从系统安装到微调,内核编译都亲历亲为,是高手及黑客显示自己技术手段,按需配置符合自己要求的系统的首选。Slackware与Gentoo类似。CentOS,社区维护的RedHat的复刻版本,完全使用RedHat的源码重新编译生成,与RedHat的兼容性在理论上来说是最好的。如果你专注于Linux服务器,如网络管理,架站,那么CentOS是你的选择。LFS,终极黑客显摆工具,完全从源代码安装,编译系统。安装前你得到的只有一份文档,你要做的就是照文档你的说明,一步步,一条条命令,一个个软件包的去构建你的Linux,完全由你自己控制,想要什么就是什么。如果你做出了LFS,证明你的Linux功底已经相当不错,如果你能拿LFS文档活学活用,再将Linux从源代码开始移植到嵌入式系统,我敢说中国的企业你可以混的很好。1、Linux基础你得挑一个适合你的系统,然后在虚拟机安装它,开始使用它。如果你想快速学会Linux,我有一个建议就是忘记图形界面,不要想图形界面能不能提供你问题的答案,而是满世界的去找,去问,如何用命令行解决你的问题。在这个过程中,你最好能将Linux的命令掌握的不错,起码常用的命令得知道,同时建立了自己的知识库,里面是你积累的各项知识。2、Linux平台的C/C++开发,同时还有Bash脚本编程[JAVA]再下个阶段,你需要学习的是Linux平台的C/C++开发,同时还有Bash脚本编程,如果你对Java兴趣很深还有Java。同样,建议你抛弃掉图形界面的IDE,从VIM开始,为什么是VIM,而不是Emacs,我无意挑起编辑器大战,但我觉得VIM适合初学者,适合手比较笨,脑袋比较慢的开发者。 Emacs的键位太多,太复杂,我很畏惧。然后是GCC,Make,Eclipse(Java,C++或者)。虽然将C++列在了Eclipse中,但我并不推荐用IDE开发C++,因为这不是Linux的文化,容易让你忽略一些你应该注意的问题。 IDE让你变懒,懒得跟猪一样。如果你对程序调试,测试工作很感兴趣,GDB也得学的很好,如果不是GDB也是必修课。这是开发的第一步,注意我并没有提过一句Linux系统API的内容,这个阶段也不要关心这个。你要做的就是积累经验,在Linux平台的开发经验。我推荐的书如下:C语言程序设计。 C语言,白皮书当然更好。 C++推荐 C++ Primer Plus, Java我不喜欢,就不推荐了,附一个别人的书单:java 入门书籍。工具方面推荐VIM的官方手册,GCC中文文档,GDB中文文档,GNU开源软件开发指导(电子书),汇编语言程序设计(让你对库,链接,内嵌汇编,编译器优化选项有初步了解,不必深度)。如果你这个阶段过不了就不必往下做了,这是底线,最基础的基础,否则离开,不要霍霍Linux开发。不专业的Linux开发者作出的程序是与Linux文化或UNIX文化相背的,程序是走不远的,不可能像Bash,VIM这些神品一样。所以做不好干脆离开。3、UNIX环境高级编程UNIX环境高级编程堪称神作,经典中的经典。接下来进入Linux系统编程,不二选择,APUE,UNIX环境高级编程,一遍一遍的看,看10遍都嫌少,如果你可以在大学将这本书翻烂,里面的内容都实践过,有作品,你口头表达能力够强,你可以在面试时说服所有的考官。(可能有点夸张,但APUE绝对是圣经一般的读物,即使是Windows程序员也从其中汲取养分, Google创始人的案头书籍,扎尔伯克的床头读物。)这本书看完后你会对Linux系统编程有相当的了解,知道Linux与Windows平台间开发的差异在哪?它们的优缺点在哪?我的总结如下:做Windows平台开发,很苦,微软的系统API总在扩容,想使用最新潮,最高效的功能,最适合当前流行系统的功能你必须时刻学习。 Linux不是,Linux系统的核心API就100来个,记忆力好完全可以背下来。而且经久不变,为什么不变,因为要同UNIX兼容,符合POSIX标准。所以Linux平台的开发大多是专注于底层的或服务器编程。这是其优点,当然图形是Linux的软肋,但我站在一个开发者的角度,我无所谓,因为命令行我也可以适应,如果有更好的图形界面我就当作恩赐吧。另外,Windows闭源,系统做了什么你更本不知道,永远被微软牵着鼻子跑,想想如果微软说Win8不支持QQ,那腾讯不得哭死。而Linux完全开源,你不喜欢,可以自己改,只要你技术够。另外,Windows虽然使用的人多,但使用场合单一,专注与桌面。而Linux在各个方面都有发展,尤其在云计算,服务器软件,嵌入式领域,企业级应用上有广大前景,而且兼容性一流,由于支持POSIX可以无缝的运行在UNIX系统之上,不管是苹果的Mac还是IBM的AS400系列,都是完全支持的。另外,Linux的开发环境支持也绝对是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就连C#也支持。而微软除Visual Stdio套件以外,都不怎么友好,不是吗?如果你看完APUE的感触有很多,希望验证你的某些想法或经验,推荐UNIX程序设计艺术,世界顶级黑客将同你分享他的看法。4、选择方向:网络,图形,嵌入式,设备驱动网络方向:服务器软件编写及高性能的并发程序编写现在是时候做分流了。大体上我分为四个方向:网络,图形,嵌入式,设备驱动。如果选择网络,再细分,我对其他的不是他熟悉,只说服务器软件编写及高性能的并发程序编写吧。相对来说这是网络编程中技术含量最高的,也是底层的。需要很多的经验,看很多的书,做很多的项目。我的看法是以下面的顺序来看书:APUE再深读– 尤其是进程,线程,IPC,套接字多核程序设计- Pthread一定得吃透了,你很NBUNIX网络编程– 卷一,卷二TCP/IP网络详解– 卷一再看上面两本书时就该看了5.TCP/IP 网络详解– 卷二我觉得看到卷二就差不多了,当然卷三看了更好,努力,争取看了6.Lighttpd源代码- 这个服务器也很有名了7.Nginx源代码– 相较于Apache,Nginx的源码较少,如果能看个大致,很NB。看源代码主要是要学习里面的套接字编程及并发控制,想想都激动。如果你有这些本事,可以试着往暴雪投简历,为他们写服务器后台,想一想全球的魔兽都运行在你的服务器软件上。Linux内核 TCP/IP协议栈– 深入了解TCP/IP的实现如果你还喜欢驱动程序设计,可以看看更底层的协议,如链路层的,写什么路由器,网卡,网络设备的驱动及嵌入式系统软件应该也不成问题了。当然一般的网络公司,就算百度级别的也该毫不犹豫的雇用你。只是看后面这些书需要时间与经验,所以35岁以前办到吧!跳槽到给你未来的地方!图形方向,我觉得图形方向也是很有前途的,以下几个方面。Opengl的工业及游戏开发,国外较成熟。影视动画特效,如皮克斯,也是国外较成熟。GPU计算技术,可以应用在浏览器网页渲染上,GPU计算资源利用上,由于开源的原因,有很多的文档程序可以参考。如果能进火狐开发,或google做浏览器开发,应该会很好。嵌入式方向:嵌入式方向没说的,Linux很重要。掌握多个架构,不仅X86的,ARM的,单片机什么的也必须得懂。硬件不懂我预见你会死在半路上,我也想走嵌入式方向,但我觉得就学校教授嵌入式的方法,我连学电子的那帮学生都竞争不过。奉劝大家,一定得懂硬件再去做,如果走到嵌入式应用开发,只能祝你好运,不要碰上像Nokia,Hp这样的公司,否则你会很惨的。驱动程序设计:软件开发周期是很长的,硬件不同,很快。每个月诞生那么多的新硬件,怎么让他们在Linux上作业起来,这是你的作业。由于Linux的兼容性极好,假如不是太低层的驱动,根本C言语就能够搞定,体系架构的影响不大,由于有体系支撑,你可能做少许更改就能够在ARM上运用PC的硬件了,所以做硬件驱动开发不像嵌入式,对硬件常识的请求很高。能够娴熟的建立常见的效劳,lnmp,ftp,dns,smba,假如呈现毛病,能够及时的排除去。。。常常运用Linux,必定能够变成大神。原文链接:http://www.magedu.com/71706.html2023-07-18 18:36:094
嵌入式系统概念解释
嵌入式系统概念解释 根据IEEE(国际电机工程师协会)的定义,嵌入式系统是“控制、监视或者辅助装置、机器和装置执行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软体和硬体的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软体硬体可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 嵌入式系统的特点 这些年来掀起了嵌入式系统应用热潮的原因只要有几个方面:一是晶片技术的发展,使得单个晶片具有更强的处理能力,而且使整合多种介面已经成为可能,众多晶片生产厂商已经将注意力集中在这方面。另一方面的原因就是应用的需要,由于对产品可靠性、成本、更新换代要求的提高,使得嵌入式系统逐渐从纯硬体实现和使用通用计算机实现的应用中脱颖而出,成为近年来令人关注的焦点。 从上面的定义,我们可以看出嵌入式系统的几个重要特征: 1.系统核心小。由于嵌入式系统一般是应用于小型电子装置的,系统资源相对有限,所以核心较之传统的作业系统要小得多。比如Enea公司的OSE分散式系统,核心只有5K,而Windows的核心?简直没有可比性。 2.专用性强。嵌入式系统的个性化很强,其中的软体系统和硬体的结合非常紧密,一般要针对硬体进行系统的移植,即使在同一品牌、同一系列的产品中也需要根据系统硬体的变化和增减不断进行修改。同时针对不同的任务,往往需要对系统进行较大更改,程式的编译下载要和系统相结合,这种修改和通用软体的“升级”是完全两个概念。 3.系统精简。嵌入式系统一般没有系统软体和应用软体的明显区分,不要求其功能设计及实现上过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。 4.高实时性的系统软体(OS)是嵌入式软体的基本要求。而且软体要求固态储存,以提高速度;软体程式码要求高质量和高可靠性。 5.嵌入式软体开发要想走向标准化,就必须使用多工的作业系统。嵌入式系统的应用程式可以没有作业系统直接在晶片上执行;但是为了合理地排程多工、利用系统资源、系统函式以及和专家库函式介面,使用者必须自行选配RTOS(Real-Time Operating System)开发平台,这样才能保证程式执行的实时性、可靠性,并减少开发时间,保障软体质量。 6.嵌入式系统开发需要开发工具和环境。由于其本身不具备自举开发能力,即使设计完成以后使用者通常也是不能对其中的程式功能进行修改的,必须有一套开发工具和环境才能进行开发,这些工具和环境一般是基于通用计算机上的软硬体装置以及各种逻辑分析仪、混合讯号示波器等。开发时往往有主机和目标机的概念,主机用于程式的开发,目标机作为最后的执行机,开发时需要交替结合进行。 嵌入式系统概念 简单的将,你可以把一个嵌入式系统理解为 一台专门用于做某事的电脑,只是,根据实际用途,他不一定有显示器、键盘等罢了 IEEE给嵌入式系统下的定义是:一个由软体和硬体结合而成,专门用于完成某项任务,对稳定性和可靠性有苛刻的要求的系统。 嵌入式系统跟嵌入式PC是一个概念么 PC是指个人电脑,而嵌入式的处理器功能不需要那么强,往往只要实现需要的功能即可,但要求体积小,功耗低...有时只需微控制器即可 嵌入式系统的基本概念 楼上的是正解,要补充一下的是,目前国内讲到嵌入式,基本是特指arm微控制器加作业系统(linux或wince)的开发。 帮解释一下嵌入式系统 嵌入式系统(Embedded System ),IEEE对于嵌入式系统的定义是:An Embedded system is the devices used to control, monitor, or assist the operation of equipment, machinery or plants.嵌入式系统是“用于控制、监视或者辅助操作机器和装置的装置”。 在中国嵌入式系统领域,比较认同的嵌入式系统概念是:嵌入式系统是以应用为中心,以计算机技术为基础,并且软硬体可裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬体装置、嵌入式作业系统以及使用者的应用程式等四个部分组成,用于实现对其他装置的控制、监视或管理等功能。 嵌入式系统一般指非PC系统,它包括硬体和软体两部分。硬体包括处理器/微处理器、储存器及外设器件和I/O埠、图形控制器等。软体部分包括作业系统软体(OS)(要求实时和多工操作)和应用程式程式设计。有时设计人员把这两种软体组合在一起。应用程式控制着系统的运作和行为;而作业系统控制着应用程式程式设计与硬体的互动作用。 嵌入式系统的核心是嵌入式微处理器。嵌入式微处理器一般就具备以下4个特点: 1)对实时多工有很强的支援能力,能完成多工并且有较短的中断响应时间,从而使内部的程式码和实时核心心的执行时间减少到最低限度。 2)具有功能很强的储存区保护功能。这是由于嵌入式系统的软体结构已模组化,而为了避免在软体模组之间出现错误的交叉作用,需要设计强大的储存区保护功能,同时也有利于软体诊断。 3)可扩充套件的处理器结构,以能最迅速地开展出满足应用的最高效能的嵌入式微处理器。 4)嵌入式微处理器必须功耗很低,尤其是用于行动式的无线及移动的计算和通讯装置中靠电池供电的嵌入式系统更是如此,如需要功耗只有mW甚至μW级。 嵌入式计算机系统同通用型计算机系统相比具有以下特点: 1.嵌入式系统通常是面向特定应用的嵌入式CPU与通用型的最大不同就是嵌入式CPU大多工作在为特定使用者群设计的系统中,它通常都具有低功耗、体积小、整合度高等特点,能够把通用CPU中许多由板卡完成的任务整合在晶片内部,从而有利于嵌入式系统设计趋于小型化,移动能力大大增强,跟网路的耦合也越来越紧密。 2.嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识整合系统。 3.嵌入式系统的硬体和软体都必须高效率地设计,量体裁衣、去除冗余,力争在同样的矽片面积上实现更高的效能,这样才能在具体应用中对处理器的选择更具有竞争力。 4.嵌入式系统和具体应用有机地结合在一起,它的升级换代也是和具体产品同步进行,因此嵌入式系统产品一旦进入市场,具有较长的生命周期。 5.为了提高执行速度和系统可靠性,嵌入式系统中的软体一般都固化在储存器晶片或微控制器本身中,而不是存贮于磁碟等载体中。 6.嵌入式系统本身不具备自举开发能力,即使设计完成以后使用者通常也是不能对其中的程式功能进行修改的,必须有一套开发工具和环境才能进行开发。 7.目前,嵌入式系统多用于手机等作业系统的开发。具有巨大的市场潜力. 大神解析一下嵌入式系统的概念? 嵌入式系统基本上是除了PC端系统以外的另一种系统,顾名思义,嵌入式系统就是在原有的电子装置系统基础上重复执行某个特定的功能而不引起装置使用者的注意,它的作用更多是通过考察例项分析共性更好的去了解这些系统。同时嵌入式系统有几个不同于其他计算系统的共同特征。 嵌入式系统的基本概念是什么? 嵌入式系统(ES)是计算机技术、通讯技术、半导体技术、微电子技术、语音图象资料传输技术,甚至感测器等先进技术和具体应用物件相结合后的更新换代产品。因此往往是技术密集、投资强度大、高度分散、不断创新的知识密集型系统。反映当代最新技术的先进水平。 嵌入式系统不仅和一般的PC 机上的应用系统不同,就是针对不同的具体应用而设计的嵌入式系统之间差别也很大。嵌入式系统一般功能单一、简单,且在相容性方面要求不高,但是在大小,成本方面限制较多。 嵌入式计算机基本上不能算是嵌入式系统。它仍然是计算机一类,不过是工作条件有所不同而已,因为它还保留了计算机的基本 嵌入式系统有哪些基本概念 ? 嵌入式资讯捕捉系统 嵌入式计算机 嵌入式执行装置 嵌入式系统 急! 进入21世纪之后,随着社会资讯化的不断普及与发展,嵌入式系统的应用越来越广泛。其中自备电源嵌入式系统由于受功耗的限制,其设计与应用一直受到制约。一般来说,正常工作的嵌入式系统电流消耗在mA级,而处于休眠状态下可以控制在μA级左右,3个数量级的能源节约对于有限的自备电源无疑具有极大的诱惑,所以这类系统基本上都要采用休眠启用的方案以实现节能,达到延长工作寿命的目的。 目前可供采用的休眠启用方案主要有3种:事件启用法、定时启用法和定位启用法。事件启用法主要应用于检测告警等场合,系统一般处于休眠模式,如果特定引数超限就会激发系统工作,这种方法一般要与相应的感测器配合实现,微处理器中也要占用相应的中断资源;定时启用法主要应用于周期工作的系统(如小区三表资料的采集)中,系统按照定时器设定的时间间隔定期上报采集资料,这种启用法的实现也非常方便,只需在相应的微处理器中新增定时器的中断处理程式;定位启用法主要应用于对位置敏感的系统(如贵重资产管理和停车场的自动道闸等)中,该系统在特定位置安装检测装置,如果有监管人员或装置离开或进入这些特定领域将会激发系统工作。定位启用法的实现有多种,本文主要介绍利用无线讯号进行定位启用的一种实现方法。 1 基本原理 无线讯号频谱中LF频段讯号具有穿透能力强的特点,它可以穿透非磁性介质,如水、混凝土、塑料等(不受视线距离限制),所以利用LF频段设计启用电路是一种较好方案。无线讯号频率与波长存在反比例关系,天线长度取决于波长长度。500 MHz RF讯号的波长为60 cm,天线很短,完全可以方便地实现;而125 kHz LF讯号的波长为2.4 km,做这样的天线肯定不实际。所以利用LF频段讯号作为启用讯号,接收端不再采用电磁场(radio)原理进行工作,而是直接通过接收磁场(magic)讯号,然后利用磁场线上圈中的感应讯号进行判断处理,如图1所示。该系统主要由磁场发射端和接收端两种装置组成。 图1 磁场工作原理 MCP2030是Microchip公司开发的专门针对低频无线磁场通讯的模拟前端器件。该器件整合有8个可程式设计配置暂存器和1个只读状态暂存器,根据暂存器配置,MCP2030可以输出解调资料、载波时钟和磁场强度RSSI。该器件模拟接收电路具有较强的灵敏度,可以接收识别1 mVpp讯号并解调8%的微弱调制讯号。为了得到可靠的磁场讯号,MCP2030采用了3组天线和3组接收解调电路。3组天线分别指向互相垂直的X、Y、Z轴,这样无论接收器如何放置,总可以得到磁场讯号,从而解决了磁场讯号的方向性问题。其结构框图如图2所示。 图2 MCP2030结构框图 图3 MCP2030有输出的情况 MCP2030集成了无线讯号数字序列滤波部件,可以根据需要设定数字序列,器件只有当接收到特定数字序列时才做出响应,所以可有效避免其他讯号干扰所引起的启用现象。图3所示为无线数字序列符合设定数字序列的情况,特定的数字序列为“2 ms有2 ms无”载波讯号,此时LFDATA在监测到特定序列之后输出的ASK调制讯号,如果无线数字序列不符合设定数字序列,LFDATA无输出。 MCP2030具有功耗极低的显著优势,为便于在自备电源的嵌入式系统中应用,专门设计优化了3种工作模式,即休眠模式、待机模式和工作模式。休眠模式由SPI 介面命令进行控制,进入休眠之后,除暂存器、储存器和SPI功能电路之外,包括RF限幅器在内的所有电路都将关闭,以使消耗的电流最低(0.2 μA),需要用上电覆位以及除休眠命令外的任何其他SPI命令将器件从休眠模式唤醒;当天线输入没有LF讯号时,器件将自动处于待机模式,但器件内部各部分电路已上电并准备接收输入讯号,待机模式下电流消耗的典型值为4 μA(3个接收天线工作);当在LF天线输入上有LF讯号且内部电路随接收的资料而进行切换时,器件处于低电流工作模式,该模式下电流消耗仅为13 μA。 除此之外,该器件还支援半电源和无电源工作模式。无电源工作方式下,器件完全从磁场中提取能量进行工作;在半电源工作方式下,器件尽可能从磁场获取能量,不得已情况下由电源供电。 2 设计应用 有源射频标签是射频识别系统中的重要组成部分,相比而言具有储存容量大、通讯距离远、功能丰富的优势,可以广泛应用于物流跟踪、贵重资产管理等领域。其内部电路主要部件有:控制器、启用讯号检测电路、RAM/ROM、定时器、UHF收发器、电源等。其中,启用讯号检测电路可以由MCP2030进行实现,如图4所示。利用MCP2030针对设定数字序列进行识别接收的能力,可以有效地控制标签的工作状态。当标签到达安装有射频启用发射器的特定位置时,MCP2030从SPI介面上输出相应的接收讯号,使得控制器退出休眠状态,并对资料进行接收、分析和处理,最终储存在RAM/ROM相应的位置中。当需要与读写器进行资讯互动时,控制器通过UHF收发器进行通讯,控制器处理完之后自动进入休眠状态,直到下一次接收到磁场启用讯号或定时器产生定时中断。 图4 启用讯号检测电路 如图4所示,MCP2030与控制器通过SPI介面进行连线,SPI介面定义分别为LFDATA、SCCLK、MCCS。该介面命令由16位的控制字组成,命令格式如下: D13~D15为命令型别,MCP2030根据命令型别确定后续的资料含义并执行相应的操作。其中,0x07为写资料命令,0x06为读资料命令。如果是写资料或读资料命令,则后续D9~D12为暂存器地址,分别指定该命令所要操作的暂存器地址,D1~D8为暂存器资料内容,D0为该命令列校验资讯;如果不是写资料或读资料命令,则D0~D12的资料内容无意义。 为使MCP2030正常工作,系统上电覆位时要对该器件进行正确的初始化配置。在此设定无线讯号数字滤波序列为2 ms有2 ms无,使能通道自动选择功能和解调讯号输出功能,初始化程式段如下: void Init_MCP2030(void) { ShiftOutSpi(0xe1,0x41);reg0 111 0000 1010 0000 1 ShiftOutSpi(0xe2,0x01);reg1 111 0001 0000 0000 1 ShiftOutSpi(0xe4,0x01);reg2 111 0010 0000 0000 1 ShiftOutSpi(0xe6,0x01);reg3 111 0011 0000 0000 1 ShiftOutSpi(0xe8,0x01);reg4 111 0100 0000 0000 1 ShiftOutSpi(0xeb,0x81);reg5 111 0101 1100 0000 1 ShiftOutSpi(0xed,0x3f);reg6 111 0110 1001 1111 1 } 控制器向MCP2030传送资料的程式实现如下: 资料预先储存在OutData1和OutData2中 void ShiftOutSpi(unsigned char OutData1,unsigned char OutData2) { unsigned char i; SCCLK=0; MCCS=0; for(i=0;i<8;i++) { LFDATA=OutData1 & 0x80; OutData1=OutData1?1; SCCLK=1; SCCLK=0; } for(i=0;i<8;i++) { LFDATA=OutData2 & 0x80; OutData2=OutData2?1; SCCLK=1; SCCLK=0; } MCCS=1; } 控制器从MCP2030接收资料的程式段如下: 资料储存在AFESpiInDataH和AFESpiInDataL中 void ShiftInSpi(void) { unsigned char i; SCCLK=0; MCCS=0; for(i=0;i<8;i++) { SCCLK=1; AFESpiInDataH=AFESpiInDataH & LFDATA; AFESpiInDataH=AFESpiInDataH?1; SCCLK=0; } for(i=0;i<8;i++) { SCCLK=1; AFESpiInDataL=AFESpiInDataL & LFDATA; AFESpiInDataL=AFESpiInDataL?1; SCCLK=0; } MCCS=1; } 结语 本文针对MCP2030的特点具体介绍了其在有源射频标签中的应用。该器件不仅整合有3通道低频接收电路以及3方向的磁场检测接收电路,而且功耗低,具备多种节能工作模式,非常适合于其他要求低功耗无线启用的嵌入式系统应用。 arm嵌入式系统linux 不知道你要问的是什么 给你一个嵌入式Linux作业系统学习规划吧 希望对你有所帮助 ARM+LINUX路线,主攻嵌入式Linux作业系统及其上应用软体开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式作业系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软体开发流程并至少做一个嵌入式软体专案。 从事嵌入式软体开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软体不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软体那样容易被盗版。硬体设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬体,我们只管设计软体就变成自己的产品了。 (4)兴趣所在,这是最主要的。 从事嵌入式软体开发的缺点是: (1)入门起点较高,所用到的技术往往都有一定难度,若软硬体基础不好,特别是作业系统级软体功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 (4)平台依托强,换平台比较辛苦。 兴趣的由来: 1、成功观念不同,不虚度此生,就是我的成功。 2、喜欢思考,挑战逻辑思维。 3、喜欢C C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: 相信程式设计师。 不要阻止程式设计师做那些需要去做的。 保持语言短小精干。 一种方法做一个操作。 使得它执行的够快,尽管它并不能保证将是可移植的。 4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 方法步骤: 1、基础知识: 目的:能看懂硬体工作原理,但重点在嵌入式软体,特别是作业系统级软体,那将是我的优势。 科目:数位电路、计算机组成原理、嵌入式微处理器结构。 组合语言、C/C++、编译原理、离散数学。 资料结构和演算法、作业系统、软体工程、网路、资料库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 主攻书籍:the c++ programming language(一直没时间读)、资料结构-C2。 2、学习linux: 目的:深入掌握linux系统。 方法:使用linux—〉linxu系统程式设计开发—〉驱动开发和分析linux核心。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入程式码。 主攻书籍:linux核心完全剖析、unix环境高阶程式设计、深入理解linux核心、情景分析和源代。 3、学习嵌入式linux: 目的:掌握嵌入式处理器其及系统。 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 (2)嵌入式作业系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 4、深入学习: A、数字影象压缩技术:主要是应掌握MPEG、mp3等编解码演算法和技术。 B、通讯协议及程式设计技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 2010-8-21 16:46 回复 122.90.173.* 2楼 C、网路与资讯保安技术:如加密技术,数字证书CA等。 D、DSP技术:Digital Signal Process,DSP处理器通过硬体实现数字讯号处理演算法。 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux核心,学习程式设计,读一些优秀程式码也是有必要的。 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程式设计师,前提是必须熟练至少一种程式语言,并具有良好的逻辑思维。一定要理论结合实践。 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的! 技术是通过程式设计程式设计在程式设计编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要程式设计程式设计在程式设计,完了在程式设计,在程式设计!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 嵌入式书籍推荐 Linux基础 1、《Linux与Unix Shell 程式设计指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata著 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)著 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程式开发详解》 Linux核心 1、《深入理解Linux核心》(第三版) 2、《Linux核心原始码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Neork Programming》(UNP) 2、《TCP/IP详解》 3、《Linux核心程式设计》 4、《Linux装置驱动开发》(LDD) 5、《Linux高阶程式设计》 杨宗德著 硬体基础 1、《ARM体系结构与程式设计》杜春雷著 2、S3C2410 Datasheet 英语基础 1、《计算机与通讯专业英语》 系统教程 1、《嵌入式系统――体系结构、程式设计与设计》 2、《嵌入式系统――采用公开原始码和StrongARM/Xscale处理器》毛德操 胡希明著 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与例项开发》 杨宗德著 理论基础 1、《演算法导论》 2、《资料结构(C语言版)》 3、《计算机组织与体系结构?效能分析》 4、《深入理解计算机系统》【美】Randal E. Bryant David O""Hallaron著 5、《作业系统:精髓与设计原理》 6、《编译原理》 7、《资料通讯与计算机网路》 8、《资料压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程式设计语言》 2. Pointers on C 《C和指标》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C程式设计》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《程式设计精粹--Microsoft 编写优质无错C程式秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统程式设计》 7.《C语言嵌入式系统程式设计修炼》 8.《高质量C++/C程式设计指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。演算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!2023-07-18 18:38:271
Linux C++编程出错问题
你下载的源代码文件是放在那里的,试一试把它放在/usr/include目录里2023-07-18 18:38:364
掌握C语言后学什么?Python?C++?JAVA?
建议你可以学习C++,因为C语言和C++相似程度比较大,你学习的时候就会比较舒服一点,如果后学的语言差很多的话,会导致很长时间转换不过来,等你适应了后面学的语言,前面学的又会忘记得差不多。所以我推荐你学习和C语言类似的C++。不过我不建议你换语言,毕竟怎么换都只是语法的问题,编程的精髓在于掌握算法,而不是掌握多的语言,你已经学会了C语言,那么就探索、学习算法吧。不过你纯爱好的话,也没有很大关系就是了,但是不同的语言,算法还是类似的,多种语言学习没有什么意思的。2023-07-18 18:38:5010
嵌入式开发要学什么?
嵌入式Linux操作系统学习规划x0dx0aARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: x0dx0a(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) x0dx0a(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) x0dx0a(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 x0dx0a从事嵌入式软件开发的好处是: x0dx0a(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 x0dx0a(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 x0dx0a(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 x0dx0a(4)兴趣所在,这是最主要的。 x0dx0a从事嵌入式软件开发的缺点是: x0dx0a(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 x0dx0a(2)这方面的企业数量要远少于企业计算类企业。 x0dx0a(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 x0dx0a(4)平台依托强,换平台比较辛苦。 x0dx0a兴趣的由来: x0dx0a1、成功观念不同,不虚度此生,就是我的成功。 x0dx0a2、喜欢思考,挑战逻辑思维。 x0dx0a3、喜欢C x0dx0aC是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: x0dx0a相信程序员。 x0dx0a不要阻止程序员做那些需要去做的。 x0dx0a保持语言短小精干。 x0dx0a一种方法做一个操作。 x0dx0a使得它运行的够快,尽管它并不能保证将是可移植的。 x0dx0a4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 x0dx0a5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 x0dx0a方法步骤: x0dx0a1、基础知识: x0dx0a目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 x0dx0a科目:数字电路、计算机组成原理、嵌入式微处理器结构。 x0dx0a汇编语言、C/C++、编译原理、离散数学。 x0dx0a数据结构和算法、操作系统、软件工程、网络、数据库。 x0dx0a方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 x0dx0a主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 x0dx0ax0dx0a2、学习linux: x0dx0a目的:深入掌握linux系统。 x0dx0a 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 x0dx0a主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 x0dx0a3、学习嵌入式linux: x0dx0a目的:掌握嵌入式处理器其及系统。 x0dx0a方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 x0dx0a (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 x0dx0a (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 x0dx0a 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 x0dx0ax0dx0a4、深入学习: x0dx0a A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 x0dx0a B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 x0dx0ax0dx0a2010-8-21 16:46 回复 x0dx0a122.90.173.* 2楼x0dx0ax0dx0a C、网络与信息安全技术:如加密技术,数字证书CA等。 x0dx0a D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 x0dx0a 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。 x0dx0a 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 x0dx0a 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的! x0dx0a 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 x0dx0ax0dx0a 嵌入式书籍推荐 x0dx0a Linux基础 x0dx0a 1、《Linux与Unix Shell 编程指南》 x0dx0a C语言基础 x0dx0a 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 x0dx0a 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 x0dx0a 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) x0dx0a 4、《嵌入式Linux应用程序开发详解》 x0dx0a Linux内核 x0dx0a 1、《深入理解Linux内核》(第三版) x0dx0a 2、《Linux内核源代码情景分析》毛德操 胡希明著 x0dx0a 研发方向 x0dx0a 1、《UNIX Network Programming》(UNP) x0dx0a 2、《TCP/IP详解》 x0dx0a 3、《Linux内核编程》 x0dx0a 4、《Linux设备驱动开发》(LDD) x0dx0a 5、《Linux高级程序设计》 杨宗德著x0dx0a 硬件基础 x0dx0a 1、《ARM体系结构与编程》杜春雷着 x0dx0a 2、S3C2410 Datasheet x0dx0a 英语基础 x0dx0a 1、《计算机与通信专业英语》 x0dx0a 系统教程 x0dx0a 1、《嵌入式系统——体系结构、编程与设计》 x0dx0a 2、《嵌入式系统——采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 x0dx0a 3、《Building Embedded Linux Systems》 x0dx0a 4、《嵌入式ARM系统原理与实例开发》 杨宗德著x0dx0a 理论基础 x0dx0a 1、《算法导论》 x0dx0a 2、《数据结构(C语言版)》 x0dx0a 3、《计算机组织与体系结构?性能分析》 x0dx0a 4、《深入理解计算机系统》【美】Randal E. Bryant David O""Hallaron着 x0dx0a 5、《操作系统:精髓与设计原理》 x0dx0a 6、《编译原理》 x0dx0a 7、《数据通信与计算机网络》 x0dx0a 8、《数据压缩原理与应用》 x0dx0ax0dx0a C语言书籍推荐 x0dx0a 1. The C programming language 《C程序设计语言》 x0dx0a 2. Pointers on C 《C和指针》 x0dx0a 3. C traps and pitfalls 《C陷阱与缺陷》 x0dx0a 4. Expert C Lanuage 《专家C编程》 x0dx0a 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs x0dx0a 《编程精粹--Microsoft 编写优质无错C程序秘诀》 x0dx0a 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 x0dx0a 7.《C语言嵌入式系统编程修炼》 x0dx0a 8.《高质量C++/C编程指南》林锐 x0dx0a 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 x0dx0ax0dx0a这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!2023-07-18 18:40:193
《深入理解计算机系统》真的有大家说的那么神奇吗
确实是一本好书,有一定的基础再看最好(看看前言就知道了,C、linux基本操作等)。个人感觉2、3章最好,第4章也很好。第二章的整数、浮点数,第三章的C到汇编的转换,这两章看懂了,对C语言有种融会贯通的错觉,堆栈的概念彻底懂了,函数调用也通透了,感觉很好。第四章:汇编到机器码、机器码到cpu功能的逻辑电路,对cpu有个形象的概念很重要,如果以后不从事底层的开发,整个计算机系统向下漫游到这种层次应该够用了。第六章的存储器层次结构:寄存器->高速缓存->内存->硬盘->网络第七章的链接:看懂符号解析、重定位后终于知道链接器做了什么,知道可执行文件到底长啥样第九章的虚拟存储器:原来可执行文件中的各种地址各种寻址都是在虚拟地址空间,需要映射到有效地址空间后才能对应上内存的地址以上是我觉得好的部分,当然,其余的章节也不错。温故而知新,可谓好书也,这本书值得看两遍以上。希望能帮到你2023-07-18 18:40:484
看unix环境高级编程,对于学linux有帮助吗?它们毕竟是两个系统,虽然是衍生来的。
看unix环境高级编程,对linux帮助微乎其微。。对linux编程帮助很大。。linux 系 类unix 系统,就是说,两个系统都是有联系的我们学的都是unix编程,但用在linux上,当然会有不同,这个改改就好2023-07-18 18:41:404
linux 内核中断 用什么锁
首先我阐明一下,用锁的情况只有两种:线程文件内核程序在使用的时候也脱离不了这两种锁的概念。中断,是信号,是否要处理中断信号?或者产生中断信号?对信号来说只有:信号屏蔽、信号捕捉、信号排队、可重如函数等概念。你想问的问题,我没猜测,在处理某个信号时,不想让其他信号中断,那么使用信号屏蔽字:先设置要屏蔽的信号集,要保存的信号集,初始信号集,可供协调使用的函数有几个:#include <signal.h>signal(这个不建议使用,应为有些老的实现是有问题的),设置信号处理程序sig_atomic_t 数据类型sigprocmask,设置信号屏蔽字sigaction,设置信号处理程序,功能跟强悍,可控性更好sigsuspend,以原子性方式,等待某些信号发生,然后返回你具体要做啥不清楚,但使用上面的信号相关的函数,肯定能实现你的功能。参考APUE的论述。2023-07-18 18:42:021
SA_RESTART到底有什么用?书上说是重启系统调用。。。不懂..怎么重启
我认为函数或进程的运行最终都回归结尾系统调用,(呵呵,非官方,自己理解) 那么 “进程正在执行某个系统调用,那么在该系统调用返回前信号是不会被递送的”,就是说大多数进程在运行期间是阻塞信号的,系统调用完再处理, 但是(以下引用APUE):如果在进程执行一个低速系统而阻塞期间捕捉到一个信号,该系统调用被终端不再继续执行 When a system call is slow and a signal arrives while it was blocked, waiting for something, the call is aborted and returns -EINTR , so that the library function will return -1 and set errno to EINTR . Just before the system call returns, the user program"s signal handler is called.(So, what is "slow"? Mostly those calls that can block forever waiting for external events; read and write to terminal devices, but not read and write to disk devices, wait , pause .)This means that a system call can return an error while nothing was wrong. Usually one will want to redo the system call. That can be automated by installing the signal handler using a call to sigaction with the SA_RESTART flag set. The effect is that upon an interrupt the system call is aborted, the user program"s signal handler is called, and afterwards the system call is restarted from the beginning.我们可以选择使用循环再次调用,或者设置重新启动该系统调用 (SA_RESTART), 这是是低速系统调用被信号中断的解决办法,1循环2SA——RESTART 好啦,实验代码: #include <stdio.h> 2 #include <stdlib.h> 3 #include <unistd.h> 4 #include <stdbool.h> 5 #include <signal.h> 6 #include <sys/types.h> 7 #include <errno.h> 8 #include <string.h> 9 10 void int_handler (int signum) 11 { 12 printf ("int handler %d/n",signum); 13 } 14 15 int main(int argc, char **argv) 16 { 17 char buf[100]; 18 ssize_t ret; 19 struct sigaction oldact; 20 struct sigaction act; 21 22 act.sa_handler = int_handler; 23 act.sa_flags=0; 24 act.sa_flags |= SA_RESTART; 25 sigemptyset(&act.sa_mask); 26 if (-1 == sigaction(SIGINT,&act,&oldact)) 27 { 28 printf("sigaction failed!/n"); 29 return -1; 30 } 31 32 bzero(buf,100); 33 34 ret = read(STDIN_FILENO,buf,10); 35 if (ret == -1) 36 { 37 printf ("read error %s/n", strerror(errn o)); 38 } 39 printf ("read %d bytes, content is %s/n",ret,buf ); 40 sleep (10); 41 return 0; 42 } 这里我们就看第二种解决办法SA—restart 运行看结果: ^Cint handler 2^Cint handler 2^Cint handler 2^Cint handler 2^Cint handler 2^Cint handler 2hgfdread 5 bytes, content is hgfd^Cint handler 2在程序read之前不要输入,ctrl+c这样不会中断read输入后主程序就向下运行啦,这样就不在低速的系统调用即read中啦,所以再次ctrl+c结束; 下面改程序:把程序24行注释掉:结果 ^Cint handler 2read error Interrupted system callread -1 bytes, content is 程序立即结束啦, 但我们和第一次相比也观察到很奇怪的结果根据结果 比较,其实是第二次运行是把ctrl+c读入,而第一次就是运行啦信号处理函数,不把ctrl+c作为READ的读入,2023-07-18 18:42:102
我想学嵌入式开发,哪位大神能给我列张书单,请顺便带上作者,万分感谢U0001f602
不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 嵌入式书籍推荐 Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Network Programming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD) 5、《Linux高级程序设计》 杨宗德著硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410 Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与实例开发》 杨宗德著理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》【美】Randal E. Bryant David O""Hallaron着 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!2023-07-18 18:42:391
学编程的要求有哪些?
俗话说,没有金刚钻,就别揽瓷器活儿。套用到IT业,英语不行,就别做程序员。网上关于程序员学英语的文章不少,但我想谈谈我自己的看法。首先详细讨论一下为什么程序员离了英语不行,然后针对程序员应该怎么学英语说说我的体会。英语是计算机的母语,是程序的母语,所以必然是程序员的母语。程序中的变量名、函数名起得好不好是决定代码质量和可维护性的最关键因素。高质量的代码应该是这样的:代码基本上是自解释的(self-explanatory),不需要太多注释,不管代码的规模有多大,具有相关知识背景的读过文档的人都可以立刻上手、立刻参与维护和开发。要想使代码能够自解释,给变量和函数起个好名字很关键,很显然,只能用英文起名字,一是用汉语拼音起名字可读性很差,二是英文单词通常比汉语更expressive(看吧,如果用汉语来说,就得说“表达能力更强”、“更有表现力”这么罗嗦),由于程序的复杂性,变量和函数往往表示一些很抽象的概念,起个既准确又简洁的名字并不容易,可是很多时候,用汉语需要很多字才能说清楚的一件事,用英文一个单词再加点词形变化就能说清楚了。例如APUE上讲sleep函数的实现,其中有个变量表示“本来应该睡到某个时刻,但是提前被信号唤醒了,唤醒时与本来应该睡到的时刻相差的时间”,如果为了简洁而不求准确,这个变量名至少也得叫“未睡到”,而书中只用了一个单词unslept,非常准确、简洁地表达了这个意思。为了写程序而学英语需要学到什么水平?我认为能起出这种变量名就够水平了。很多在IT外企工作的中国人,说话写文章经常夹杂着英文单词(比我严重多了因为我不在外企),非常可以理解,确实是为了表达得更准确简洁的需要,而不是纯为了play zhuangbility。总之,要写程序必须学好英语,否则连变量名都起不好,这虽然是一个非技术问题,但却是个根本问题,比任何技术问题都重要。当然,现在很多编程语言也支持用Unicode字符给变量和函数起名,但是你见过有人用汉字写程序吗?根本不实用。有人会辩驳说一页英文翻译成中文往往只占半页,中文不是更简洁吗?但是你算算打一页英文和打半页中文哪个敲键盘次数多。另外,要读别人的代码也必须学好英语,如果你不知道unslept是由 sleep变形而来的,就体会不到其中的精妙,只有大量阅读高质量的代码,才能写出高质量的代码,创作都是从模仿开始的。说说英语对于看书学习的重要性。中文技术书和英文技术书的水平根本不在一个量级上,这是有很多原因的,不能全归结于中文书的作者水平差。最重要的是,出中文书的低回报率决定了作者不可能花太多心血在上面,你去amazon看看一本书卖多少美刀,再去chinapub看看一本书卖几块钱。老外写一本书,可以做到全书没有一个拼写错误(当然英文的拼写检查工具更完善也是部分原因),中文能找出一本没有错别字的书吗?Knuth可以悬赏让全世界读者来找磋,中文书作者有哪个敢这么做?不是因为老外态度有多认真治学有多严谨,而是因为他们赚到了,就应该拿出高质量的作品来,不然会被读者骂的。英文技术书的翻译质量通常很差。也不能归结于译者的水平差,我也翻译过书,也努力想译好,但真的很难译好。IT业的新名词层出不穷,像“内核”、“网络”这种常见术语还好,稍微专一点的术语都没有统一的译名。我们在教学中发现,很多学员看书时搞不清这本书的名词A和那本书的名词B是什么区别,来问老师,才发现原来A和B就是一回事儿。这是一个单词对应多个译名的情况,还有一个译名对应多个单词的情况,比如field、domain、realm都译成“域”,block、 bulk都译成“块”,argument、parameter都译成“参数”,attribute、property都译成“属性”,虽然这些词的意思本来就差不多,但是在一篇文章里,作者可以换着用,不同的单词表示不同的概念,翻译完了一看,都成一个概念了。英文书背后都有index,看到一半忘了某个名词是怎么定义的就可以翻index,而译文通常没有index,名词都已经乱七八糟了,没法做index。还有更发指的是,老外喜欢造词,现有的单词上加一点变化和组合(例如有人喜欢说automagically),看着心领神会,想译出来就很费劲。老外即使在技术书中也经常用一些生动的表达方式和俏皮话,而中文的书面语言非常死板,生动的表达方式只存在于口语中,如果写在书上就很不像话,这也是很难翻译的一个重要原因。看中文译本,不仅质量差,而且跟不上时代,通常一本英文书出来,至少要等一到两年才能看到中文译本。两年啊!等你看到这本书的中文译本时,这个版本都快淘汰了。然后说说英语在开发工作中的重要性。看书学习通常只起一个引导入门的作用,在工作中更有用的是手册、文档。学完了C语言开始写程序了,谁还会去查K&R附录中的库函数?查man page才是最有效率的。然而手册比入门书更少有中文译版,因为手册是随时变的,会随着软件版本更新,而且需要看这些开发手册的人通常不会有英文障碍,有英文障碍的人即使看了翻译的手册也写不出好程序来,所以当然没必要翻译了。不管什么技术,官方的手册和技术标准才是最原始的第一手资料,看别的书都是以讹传讹,由于自然语言不可避免是有歧义的,文档中表达得不准确的地方就会被文档的读者也就是技术书的作者误解,技术书中再有表达不准确的地方又被译者误解。我们小时候都玩过传话的游戏,几个人站一排,通过悄悄话传一句话,传到最后变成什么了?所以,学网络协议,就得看RFC,学ARM,就得看ARM公司的 Architecture Reference Manual,要学习C语言就得看C99,有歧义不要紧,自己去揣测原作者的意思,总比道听途说的可靠。我们的学员出去面试经常被问到的一个问题就是:在开发工作中遇到问题,书和文档上都没有答案,网上搜一下也没有答案,怎么办?要我说,能看懂源代码的就去源代码中找答案,这称为hacking,不管是内核、libc还是各种framework,你调用的东西有问题都能从它的代码中找到原因。如果没有能力 hacking,或者时间紧不想去hacking,最好的办法就是去官方邮件列表和IRC问。如果英文不行就没办法了,只能去一些中文论坛:“各位大虾帮忙,小弟有一个问题求救!跪求!!在线等!!!”在线等了好几天也无人问津,或者答非所问。岂不知逛这些论坛的没有大虾,都是菜鸟,大虾们都在IRC上聊得正欢呢。我在做Qt开发时曾经有一个问题,当时在教育网,上国外网不方便,去各大中文论坛问了好几天也没人给出满意的回答,后来花钱连了国外网,去 trolltech官方新闻组提问,只等了几分钟就得到了满意的解决办法。这次经历给我留下了深刻印象,从此以后再也没有去中文论坛。那么,如果现在英文水平很差,又想做程序员,应该怎么学英语呢?我下面说的方法有两个前提,一是你的英文至少达到高中毕业水平,也就是语法基本都学完了,即使用得不熟练也知道有那么回事儿,二是你希望尽快在工作中用上英语,写程序够用就行,而不是有考T考G这样的更高要求。学习英语有听说读写四个方面的要求,做程序员至少需要读和写非常流畅,如果在外企工作还需要听和说的能力。技术英语和考T考G是不一样的,一是听和说不像读和写那么重要,不必担心自己是“聋哑英语”,没关系,丝毫不影响你成为编程高手,二是要求的词汇量要小得多。考T考G都要拿一本单词书背,很少有人会觉得背单词很有意思,至少我是觉得很痛苦,幸运的是看技术书不需要多少词汇量。技术书的描述对象都是局限于一个很窄的领域的,就那么几个单词翻来覆去地用,而且技术书是为了让人看懂的(不像诗是为了让人看不懂的),比较复杂的词在书中都有定义或解释。有些作者喜欢卖弄词汇量,用一些很生僻的单词,也有些作者卖弄一些典故,由于文化背景不同很难理解,不过这些通常都可以无视,不会影响阅读,还是因为技术书是为了让人看懂的。对于学习者来说,阅读能力是最重要的,等你完成了学习,成为一个合格的开发者时,需要写代码注释,需要写文档,需要通过邮件交流,写作的能力才开始重要了。所以应该首先从阅读开始练习英语。现在就拿起一本英文原版书开始看吧。和学游泳一样,阅读的能力只能通过阅读本身来练习。我的经验是,不必先系统学习了单词和语法再看书,可以在看书时用到什么就补什么。我建议初学者看电子版,因为现在的词典软件都可以鼠标取词,边看边查很方便,很多勤快人喜欢把查过的单词都抄下来,我觉得没有必要,反正查字典很方便,下次再看到了就再查,多查几次总会记住的,抄下来就打断了看书的思路,而且不见得抄下来就能记住。也许是因为我这人比较懒,我用的都是懒办法。很多人不喜欢看电子书,理由是盯着屏幕看书太累,那么盯着屏幕写程序累不累?这种人显然不适合做程序员。语法不熟练怎么办?大多数情况下单词的意思都明白了就不影响阅读。技术书有时候喜欢用长句,其中可能包含各种从句,如果实在读不懂就去查语法书,同样也不需要把这种从句彻底弄明白,只要这一句能看过去就行了,以后多查几遍书,自然就掌握了。另外,技术书是说明文,通常不应该有过去时,看到过去时就需要注意了,很可能是虚拟语气,如果不注意这一点,看到的意思可能和真实的意思正好相反。应该从哪本书开始看起呢?从你当前最需要学的技术书看起。看书是相当花时间的,如果能一边学英语一边学技术,这时间利用得就很有效率。比如,如果你的C语言已经学得相当好了,不要专门为了学英语去重看一遍原版的K&R。市面上有一些专门的计算机英语教材,我的建议是不要看,浪费时间,nonsense。初学时最好选一本有中文译本的书,有看不懂的地方可以翻中文版来对照,但是不要相信中文的翻译,原因在前面讨论过了。如果你是初学编程,没有任何基础,我可以推荐一本英文很浅显技术也很浅显的书:How To Think Like a Computer Scientist,有Python、Java和C++版本,可自由下载。要逐渐养成良好的阅读习惯。一是不要每个生单词都去查,有些单词很生僻,查了也记不住,记住了也不会再见到它了,但是前面讲过,都是作者在卖弄词汇量,无视它丝毫不影响阅读,因此要学会猜测单词的意思,能不查就不查,继续贯彻“懒”的原则。二是看书不要动口,不念出声也不行,就是不要动口,要努力在大脑中建立从词形到语义的直接映射,如果只能从词形到读音再到语义就太慢了,严重影响阅读速度。三是努力做到每句话都从头到尾只看一遍,不许回头反复看,这一点比较难,必须注意力高度集中,经常在记忆中暂存前面半句的内容和句式才能做到,但是一旦神功练成就会成倍地提高阅读速度。最后一层境界,学会skim,就是略读,很多优秀的作者在组织材料时会给读者一些建议,比如这一段是扩展的高级话题,和主线的相关度较低,可以先skim到后面,注意不是让你skip到后面,这一段还是要读的,但是不必逐字句地读,而是抓主旨,大概讲了个什么概念(有一些下定义的句式),有哪些要点(有数字编号或bullet列表项),适用于哪些场合有哪些注意事项(有 caveat、gotcha、noteworthy这种字眼),后面可能还会碰到这个概念,虽然你没有仔细看这是个什么东西,但大体上也知道了,这样就能不影响后面的阅读,这不仅需要高度集中的注意力、熟练的语言能力,而且要有足够的背景知识去猜测性地理解。但是语言能力还是最重要的因素,我和几个同学交流过,他们也能熟练地看英文书,但是需要skim查一个东西时就觉得还是不如中文书查得快。skim的技能在查阅手册时尤其重要,没有人会像看入门书一样把上千页的手册从头到尾看一遍,都是用到哪儿就查哪儿。总之,锻炼各种阅读习惯就为了一个目的:如何在最短的时间内,在保证正确性的前提下,获取尽可能多的知识。程序员的学习时间都是非常宝贵的。以上本着“够用就好”的原则,多次提到用懒办法,但是学技术学英语这两件事不能懒,贵在坚持。要养成良好的阅读习惯也有很多东西需要坚持,其中最根本的是持续高度集中注意力,充分调动记忆能力、推理能力、猜测能力,就像考试做阅读题一样看每一段话。最根本也是最重要的,“有英文原版就不看中文版”这个原则一定要坚持。一开始看英文书可能会很慢,但只要一直坚持就会慢慢达到原来看中文书的速度,再坚持下去就会比中文书看得更有效率,因为避免了很多歧义和术语翻译的问题。有人会说,项目紧任务急,看英文资料太慢,这次就先用中文尽快解决工作中的问题吧,等以后有时间了再看英文书学习。可是什么时候才会有时间呢?工作总是一个接一个的,老板怎么会付了工资让你闲着呢?如果你有这样的困难,我的建议是干脆辞职,学好了英文再去工作。你只要想想,你的同行们在外企全英文的环境下工作,英文和技术每天都在突飞猛进,而你还在用效率极其低下的方式学习和工作,你和别人的差距不是越来越大了吗?另一方面,现在的在校学生从小学就开始抓英语,基础都很好,很多高校也逐渐重视引进原版教材,开设很多英文授课的专业课。你再不奋起直追,就不觉得以后的职业道路充满危机吗?最后说说写作。刚开始练习时不要怕写错,能表达清楚自己的意思即可。我看过很多源代码和文档中的英文,一看就是中国人写的,谓语动词不分单复数,名词复数不加s,处处可见中国式英语,但是丝毫不影响我对这些编程大牛的景仰,因为其中的思想我看懂了,并且我认为很强大。我有一个朋友,中学毕业就出来混的,由于工作的性质总要跟老外打交道,他从来不惧和老外交流,虽然连一个囫囵的句子都说不出来,但总是能用中学学的那点单词让老外明白他的意思,这一点我就非常佩服。总之就是说,不要因为不知道怎么写是对的就不敢动笔写,只要敢交流,并且别人能懂你的意思,就是很有效的交流。而且随着阅读量的增加,自然能写出一手好英文,前面讲过了,创作总是从模仿开始的。不怕出错才能有一个好的开始,才能逐步练习提高,而练习的最终目的当然还是希望写好,不仅字句通顺无语法错误,还能适当修辞。2023-07-18 18:42:506
将来想从事嵌入式linux驱动开发,用学习QT吗??
QT是做GUI的,QT都是用C++做的,跟嵌入式的本质没有太大关系,也有一定的市场,也有些公司现在用这方面的人才,但我认为QT的前景不是太好,具体原因很多, 就不在这浪费口水了。你重点学学驱动吧,这个很使用,而且也都是用C实现的。二,本科生做嵌入式的不多,因为现在大部分学校接触不到linux,而嵌入式linux是很重要的东西。你现在写的驱动基本都要挂在linux下。能入门的话,在北京至少3000左右,具体也得看你的能力了。三,学习方法:C语言是重点中的重点,把它弄透。 再者学学linux, 看看APUE(自己百度去)。最后建议一句:放弃QT吧。重点学嵌入式linux的驱动,多看代码。2023-07-18 18:43:153
百度他们公司 那建立索引 做爬虫这些的用什么语言? 实现搜索引擎核心算法 用什么语言啊?
爬虫什么语言都可以写 拆解出来 主要就两部分一部分是获取HTML另一部分是正则表达式这要有这两部分就能从网页上爬出有用的信息来了至于多线程、OCR、分布式任务要根据你抓取站点的目标来做,并非是必须的2023-07-18 18:43:282
学习嵌入式开发要学习哪些知识?
嵌入式Linux操作系统学习规划ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 (4)兴趣所在,这是最主要的。 从事嵌入式软件开发的缺点是: (1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 (4)平台依托强,换平台比较辛苦。 兴趣的由来: 1、成功观念不同,不虚度此生,就是我的成功。 2、喜欢思考,挑战逻辑思维。 3、喜欢C C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: 相信程序员。 不要阻止程序员做那些需要去做的。 保持语言短小精干。 一种方法做一个操作。 使得它运行的够快,尽管它并不能保证将是可移植的。 4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 方法步骤: 1、基础知识: 目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 2、学习linux: 目的:深入掌握linux系统。 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 3、学习嵌入式linux: 目的:掌握嵌入式处理器其及系统。 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 4、深入学习: A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 2010-8-21 16:46 回复 122.90.173.* 2楼 C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的! 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 嵌入式书籍推荐 Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Network Programming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD) 5、《Linux高级程序设计》 杨宗德著 硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410 Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与实例开发》 杨宗德著 理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》【美】Randal E. Bryant David O""Hallaron着 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!2023-07-18 18:43:507
在头文件定义的字符串在编译时却说未定义?
TELL_WAIT(void);只是个申明,不是个定义就算这个函数什么都不做,也至少要写为void TELL_WAIT(void){}2023-07-18 18:44:123
c++ 隐式转换和显示转换的区别
显式转换是由程序员自己主动完成,隐式转换是由编译器完成的,其二显示转换一般是由高向低,隐式转换是由低到高,其三显式转换的格式为类型(对象)或(类型)对象。2023-07-18 18:44:192
三星rv415笔记本插HDMI没反应
可能是没有插好视频接口VGA,HDMI;音频接口,麦克风输入接口,耳机输出接口;RJ45网络接口,电源接口,以及读卡器。读卡器支持SD,SDHC,SDXC,MMC。作为引领笔记本电脑快速进入超轻薄移动时代的前卫产品,配合1GB显存的7550M独立显卡可以实现双卡交火功能。拓展资料:三星RV415-S08笔记本采用AMDFusionAPUE-450处理器,2GB内存,500GB硬盘,内置刻录光驱。三星RV415-S08笔记本采用14.0寸液晶屏,采用A展开三星RV415-S08笔记本采用AMDFusionAPUE-450处理器,2GB内存,500GB硬盘,内置刻录光驱。三星RV415-S08笔记本采用14.0寸液晶屏,采用AMDMobilityRadeonHD6470M中低端独立显卡,内置摄像头,并预装三星RV415-S05预装Windows7HomeBasic家庭普通版操作系统。2023-07-18 18:44:261
我的联想电脑是G505AMD E1-2100的主板 CPU 这个可以换成 AMD 羿龙II X4 945系列的主板吗?
笔记本不比台式机可以随意更换配件。不同的主板都无法安装进去。模具和主板都是统一设计的。至多你能增加内存,升级硬盘,把光驱位街上ssd之类的。想换主板,那只有把原来本卖了重新再买一个。2023-07-18 18:44:433
amda65200什么时候上市
2013年。amdA65200是AMD基于模块化且主打低功耗Kabini架构的产物于2013年上市,是这一架构下最顶级的型号(和J1900平分秋色),该架构下其他比较“臭名昭著”的产品是APUE11xxx2xxx以及E22xxx3xxx等,是百脑汇低性能上网本的“神器”。2023-07-18 18:44:521
关于LINUX 编程方面的书籍
假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系统编程推荐《高级unix环境编程》,黑话叫APUE还有《unix网络编程》这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发参考书如下《linux device drivers》,黑话叫ldd《linux kernel development》,黑话叫lkd《understading the linux kernel》,黑话叫utlk《linux源码情景分析》这四本书为搞内核的必读书籍最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了学习linux/unix编程方法的建议建议学习路径:首先先学学编辑器,vim, emacs什么的都行。然后学make file文件,只要知道一点就行,这样就可以准备编程序了。然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。对于几本经典教材的评价:《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会有一个清晰的认识。《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。2023-07-18 18:45:194
跪求一份linux下网络编程的学习心得
正好我上午正在看的这篇:======================== 解答:学习Linux的四个步骤 假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐《高级unix环境编程》,黑话叫APUE 还有《unix网络编程》 这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好 内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux源码情景分析》 这四本书为搞内核的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux/unix编程方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。 对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。 《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。 《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。 《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。 《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会 有一个清晰的认识。 《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。2023-07-18 18:45:422
学习linux底层驱动开发有什么经典的参考书?
结构、操作系统、体系结构、编译原理、计算机网络你全修过我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式系统编程推荐《高级unix环境编程》,黑话叫APUE还有《unix网络编程》这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发参考书如下《linux device drivers》,黑话叫ldd《linux kernel development》,黑话叫lkd《understading the linux kernel》,黑话叫utlk《linux源码情景分析》这四本书为搞内核的必读书籍最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了学习linux/unix编程方法的建议建议学习路径:首先先学学编辑器,vim, emacs什么的都行。然后学make file文件,只要知道一点就行,这样就可以准备编程序了。然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。对于几本经典教材的评价:《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会有一个清晰的认识。《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。2023-07-18 18:45:525
如何阅读《深入理解计算机系统》这本书
结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐《高级unix环境编程》,黑话叫APUE 还有《unix网络编程》 这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好 内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux源码情景分析》 这四本书为搞内核的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux/unix编程方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。 对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。 《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。 《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。 《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。 《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会 有一个清晰的认识。 《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。2023-07-18 18:46:112
如何阅读《深入理解计算机系统》
结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐《高级unix环境编程》,黑话叫APUE 还有《unix网络编程》 这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好 内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux源码情景分析》 这四本书为搞内核的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux/unix编程方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file文件,只要知道一点就行,这样就可以准备编程序了。 然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。 如果想学习UNIX/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。 如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。 对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程序设计》代替。 《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。 《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。 《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。 《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。对于网络原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对操作系统的底层怎么工作的就会 有一个清晰的认识。 《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。2023-07-18 18:46:201
看过c++primer,演算法导论,深入理解计算机系统能找什么工作+知乎
看过c++primer,演算法导论,深入理解计算机系统能找什么工作+知乎 1、光看primer是不足够的,还需要学习很多其他方面的知识。一个真正的C++程式设计师应该学会C、C++、资料结构、基本演算法、作业系统(深度依需要而定)、计算机网路(深度依需要而定)。当然还有其它的方面,侧重点需要看需要学什么。 2、学习中看书、敲程式码、思考都很重要。如果很快就把c++ primer看完,那么说明没有真正看进去,很多地方没有思考,或者是在相关的其它方面知识有所欠缺。如果看完这本书后还问看什么其它书的话,那么就应该好好思考一下了,自己距离程式设计师有多远。建议系统学习各种相关只知识点,并有一定程度掌握后,重新看一遍c++ primer plus,这个时候一边看一边加入自己的思考,会受益良多。 看过c++primer,演算法导论,深入理解计算机系统能找什么工作 c 资料结构 演算法导论 c不用基础。资料结构和演算法导论至少得学一门语言吧。 先学资料结构看演算法导论可能会好点。毕竟演算法导论很多都涉及资料结构。 而且要看演算法导论的话,对语言比较熟悉之后再看比较合适。 如何看《深入理解计算机系统》一书 我没看这本书也,不过我们老师说这本书很好。他说学习这本书,就相当于给软体硬体之间建议了一座桥梁的作用哦。 求《深入理解计算机系统》的中文版mobi 口袋妖怪xy目前还没有汉化版正式放出,之前虽然有汉化的讯息但是一直没动静。而且目前3ds无法在PC上模拟,只能通过3ds游戏机游玩。 完全看懂深入理解计算机系统算什么水平 其实看懂也不怎么样, 只能说明你对计算机机理结构方面有一定的理解了。 学习靠积类,并不是一本书就能解决所有问题的。 多思考,多实践,必定有所获。 希望能帮到你,满意请采纳,欢迎追问。 如何阅读《深入理解计算机系统》这本书 结构、作业系统、体系结构、编译原理、计算机网路你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统程式设计=>核心开发阅读核心原始码 其中学习linux常用命令时就要学会自己编译核心,优化系统,调整引数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表示式 系统程式设计推荐《高阶unix环境程式设计》,黑话叫APUE 还有《unix网路程式设计》 这时候大概还需要看资料理解elf档案格式,联结器和载入器,cmu的一本教材中文名为《深入理解计算机系统》比较好 核心开发阅读核心原始码阶段,从写驱动入手逐渐深入linux核心开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux原始码情景分析》 这四本书为搞核心的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux/unix程式设计方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。 然后学make file档案,只要知道一点就行,这样就可以准备程式设计序了。 然后看看《C程式设计语言》K&R,这样呢,基本上就可以进行一般的程式设计了,顺便找本资料结构的书来看。 如果想学习UNIX/LINUX的程式设计,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。这样基本上系统方面的就可以掌握了。 然后再看Douglus E. Comer的《用TCP/IP进行网际互连》第一卷,学习一下网路的知识,再看《UNP》的第一卷,不仅学习网路程式设计,而且对系统程式设计的一些常用的技巧就很熟悉了,如果继续网路程式设计,建议看《TCP/IP进行网际互连》的第三卷,里面有很多关于应用协议tel、ftp等协议的程式设计。 如果想写装置驱动程式,首先您的系统程式设计的介面比如档案、IPC等必须要熟知了,再学习《LDD》2。 对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程式设计教材,作者是C语言的发明者,教材内容深入浅出。虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。篇幅比较小,但是每看一遍,就有一遍的收获。另外也可用谭浩强的《C语言程式设计》代替。 《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的!),虽然初学者就可以看,但是事实上它是《Unix Neork Programing》的一本辅助资料。国内的翻译的《UNIX环境高阶程式设计》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。 《Unix Neork Programing》W.Richard Stevens:第一卷讲BSD Socket网路程式设计介面和另外一种网路程式设计介面的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。第二卷没有设计到网路的东西,主要讲程序间通讯和Posix执行绪。所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。看过《UNP》以后,您就会知道系统程式设计的绝大部分程式设计技巧,即使卷一是讲网路程式设计的。国内是清华翻译得《Unix网路程式设计》,翻译者得功底也比较高,翻译地比较好。所以建议还是看中文版。 《TCP/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲程式设计应用。我没有怎么看过。,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。 《用TCP/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高阶协议。感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。事实上,第一卷即使你没有一点网路的知识,看完以后也会对网路的来龙去脉了如指掌。第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。如果您看过Qterm的原始码,就会知道Qterm的tel 实现部分大多数就是从这本书的原始码过来的。对于网路原理的书,我推荐它,而不是Stevens的《TCP/IP祥解》。 《Operating System - Design and Implement》这个是讲作业系统的书,用Minix做的例子。作者母语不是英文,所以英文看起来比较晦涩。国内翻译的是《作业系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。读了这本书,对作业系统的底层怎么工作的就会 有一个清晰的认识。 《Linux Device Driver》2e ,为数不多的关于Linux装置驱动程式的好书。不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不著南北。国内翻译的是《Linux装置驱动程式》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬体和计算机的工作过程有一些了解。 大一阅读学习的同时会产生一些疑问和难以理解的地方,等软体和硬体知识充实到一定程度,大四再次深入阅读,会更加深入的理解和透彻……不可能一次就完全搞明白,要随着知识的深入,理解也会变得更加深入…… 计算机系统由计算机硬体和软体两部分组成。硬体包括中央处理机、储存器和外部装置等;软体是计算机的执行程式和相应的文件。计算机系统具有接收和储存资讯、按程式快速计算和判断并输出处理结果等功能。常见的系统有Windows,Linux等。 我去年刚看过《深入理解计算机系统》这本书 书是要读好几遍的, 第一遍可以大概看,有些什么内容, 然后再精读,不懂得一定要问 我去年刚看过, 书是要读好几遍的, 第一遍可以大概看, 有些什么内容,然后再精读, 不懂得一定要问2023-07-18 18:46:271
嵌入式开发要学什么
嵌入式Linux操作系统学习规划x0dx0aARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: x0dx0a(1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) x0dx0a(2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) x0dx0a(3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 x0dx0a从事嵌入式软件开发的好处是: x0dx0a(1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 x0dx0a(2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 x0dx0a(3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 x0dx0a(4)兴趣所在,这是最主要的。 x0dx0a从事嵌入式软件开发的缺点是: x0dx0a(1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 x0dx0a(2)这方面的企业数量要远少于企业计算类企业。 x0dx0a(3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 x0dx0a(4)平台依托强,换平台比较辛苦。 x0dx0a兴趣的由来: x0dx0a1、成功观念不同,不虚度此生,就是我的成功。 x0dx0a2、喜欢思考,挑战逻辑思维。 x0dx0a3、喜欢C x0dx0aC是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: x0dx0a相信程序员。 x0dx0a不要阻止程序员做那些需要去做的。 x0dx0a保持语言短小精干。 x0dx0a一种方法做一个操作。 x0dx0a使得它运行的够快,尽管它并不能保证将是可移植的。 x0dx0a4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 x0dx0a5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 x0dx0a方法步骤: x0dx0a1、基础知识: x0dx0a目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 x0dx0a科目:数字电路、计算机组成原理、嵌入式微处理器结构。 x0dx0a汇编语言、C/C++、编译原理、离散数学。 x0dx0a数据结构和算法、操作系统、软件工程、网络、数据库。 x0dx0a方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 x0dx0a主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 x0dx0ax0dx0a2、学习linux: x0dx0a目的:深入掌握linux系统。 x0dx0a 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 x0dx0a主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 x0dx0a3、学习嵌入式linux: x0dx0a目的:掌握嵌入式处理器其及系统。 x0dx0a方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 x0dx0a (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 x0dx0a (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 x0dx0a 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 x0dx0ax0dx0a4、深入学习: x0dx0a A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 x0dx0a B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 x0dx0ax0dx0a2010-8-21 16:46 回复 x0dx0a122.90.173.* 2楼x0dx0ax0dx0a C、网络与信息安全技术:如加密技术,数字证书CA等。 x0dx0a D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 x0dx0a 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。 x0dx0a 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 x0dx0a 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的! x0dx0a 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 x0dx0ax0dx0a 嵌入式书籍推荐 x0dx0a Linux基础 x0dx0a 1、《Linux与Unix Shell 编程指南》 x0dx0a C语言基础 x0dx0a 1、《C Primer Plus,5th Edition》【美】Stephen Prata着 x0dx0a 2、《The C Programming Language, 2nd Edition》【美】Brian W. Kernighan David M. Rithie(K & R)着 x0dx0a 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) x0dx0a 4、《嵌入式Linux应用程序开发详解》 x0dx0a Linux内核 x0dx0a 1、《深入理解Linux内核》(第三版) x0dx0a 2、《Linux内核源代码情景分析》毛德操 胡希明著 x0dx0a 研发方向 x0dx0a 1、《UNIX Network Programming》(UNP) x0dx0a 2、《TCP/IP详解》 x0dx0a 3、《Linux内核编程》 x0dx0a 4、《Linux设备驱动开发》(LDD) x0dx0a 5、《Linux高级程序设计》 杨宗德著x0dx0a 硬件基础 x0dx0a 1、《ARM体系结构与编程》杜春雷着 x0dx0a 2、S3C2410 Datasheet x0dx0a 英语基础 x0dx0a 1、《计算机与通信专业英语》 x0dx0a 系统教程 x0dx0a 1、《嵌入式系统——体系结构、编程与设计》 x0dx0a 2、《嵌入式系统——采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 x0dx0a 3、《Building Embedded Linux Systems》 x0dx0a 4、《嵌入式ARM系统原理与实例开发》 杨宗德著x0dx0a 理论基础 x0dx0a 1、《算法导论》 x0dx0a 2、《数据结构(C语言版)》 x0dx0a 3、《计算机组织与体系结构?性能分析》 x0dx0a 4、《深入理解计算机系统》【美】Randal E. Bryant David O""Hallaron着 x0dx0a 5、《操作系统:精髓与设计原理》 x0dx0a 6、《编译原理》 x0dx0a 7、《数据通信与计算机网络》 x0dx0a 8、《数据压缩原理与应用》 x0dx0ax0dx0a C语言书籍推荐 x0dx0a 1. The C programming language 《C程序设计语言》 x0dx0a 2. Pointers on C 《C和指针》 x0dx0a 3. C traps and pitfalls 《C陷阱与缺陷》 x0dx0a 4. Expert C Lanuage 《专家C编程》 x0dx0a 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs x0dx0a 《编程精粹--Microsoft 编写优质无错C程序秘诀》 x0dx0a 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 x0dx0a 7.《C语言嵌入式系统编程修炼》 x0dx0a 8.《高质量C++/C编程指南》林锐 x0dx0a 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 x0dx0ax0dx0a这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!2023-07-18 18:46:384
嵌入式学习入门书籍有哪些
1、基础知识: 目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优 势。 科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。thec++programminglanguage(一直没时间读)、数据结构-C2。 2、学习linux: 目的:深入掌握linux系统。 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深, 那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0. 11版,适合学习。最后深入代码。主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 3、学习嵌入式linux: 目的:掌握嵌入式处理器其及系统. 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。(2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友) 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 4、深入学习: A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDM A等。C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:DigitalSignalProcess,DSP处理器通过硬件实现数字信号处理算 法。说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化, 一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是 有必要的。 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的 程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱 好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要 做的! 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不 要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要 相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 嵌入式书籍推荐 Linux基础 1、《Linux与UnixShell编程指南》 C语言基础 1、《CPrimerPlus,5thEdition》【美】StephenPrata着2、《TheCProgrammingLanguage,2ndEdition》【美】BrianW.KernighanDav idM.Rithie(K&R)着 3、《AdvancedProgrammingintheUNIXEnvironment,2ndEdition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操胡希明著 研发方向 1、《UNIXNetworkProgramming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD)5、《Linux高级程序设计》杨宗德著 硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操胡希明 著 3、《BuildingEmbeddedLinuxSystems》 4、《嵌入式ARM系统原理与实例开发》杨宗德著 理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》【美】RandalE.Bryant DavidO""Hallaron着 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1.TheCprogramminglanguage《C程序设计语言》 2.PointersonC《C和指针》 3.Ctrapsandpitfalls《C陷阱与缺陷》 4.ExpertCLanuage《专家C编程》 5.WritingCleanCode-----MicrosoftTechiniquesforDevelopingBug-freeCProgr ams《编程精粹--Microsoft编写优质无错C程序秘诀》 6.ProgrammingEmbeddedSystemsinCandC++《嵌入式系统编程》 7.《C语言嵌入式系统编程**》 8.《高质量C++/C编程指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!2023-07-18 18:47:051
联想b475e配置
处理器CPU系列:AMD E2系列CPU型号:AMD Fusion APU E2-1800CPU主频:1.7GHz二级缓存:1MB核心类型:Trinity核心/线程数:双核心制程工艺:40nm功耗:18W存储设备内存容量:2GB内存类型:DDR3最大内存容量:8GB硬盘容量:500GB硬盘描述:5400转光驱类型:DVD刻录机设计类型:光驱内置光驱描述:支持超级DVD刻录显示屏屏幕尺寸:14英寸屏幕比例:16:9屏幕分辨率:1366x768背光技术:LED背光屏幕描述:超薄高亮液晶屏显卡显卡类型:集成显卡显卡芯片:AMD Radeon HD 7340显存容量:共享内存容量显存类型:无DirectX:11多媒体设备摄像头:集成30万像素摄像头音频系统:内置音效芯片扬声器:内置扬声器麦克风:内置麦克风网络通信无线网卡:Intel 1000 BGN有线网卡:1000Mbps以太网卡蓝牙:支持,蓝牙4.0模块I/O接口数据接口:2×USB2.0+1×USB3.0视频接口:VGA,HDMI音频接口:耳机/麦克风二合一接口其它接口:RJ45(网络接口),电源接口读卡器:6合1读卡器(SD,SDHC,MMC,MS,MS-pro,xD)输入设备指取设备:一体化多点触控触摸板指纹识别:支持智能指纹识别功能电源描述电池类型:6芯锂电池续航时间:具体时间视使用环境而定外观笔记本重量:2.2Kg长度:340mm宽度:234.6mm厚度:23.4-33.6mm外壳材质:复合材质外壳描述:黑色其他附带软件:随机软件特色功能:一键拯救系统笔记本附件包装清单:笔记本主机 x1 电池 x1 电源适配器 x1 说明书 x1 保修卡 x1可选配件:笔记本礼包(需另行购买)2023-07-18 18:47:154
谁能提供几本基础的C语言编程书籍 最好带有下载网址的
开发板用友善之臂的吧mini2440 连3.5寸屏500块钱的样子有好几张DVD学习光盘这款口碑比较高嵌入式Linux操作系统学习规划ARM+LINUX路线,主攻嵌入式Linux操作系统及其上应用软件开发目标: (1) 掌握主流嵌入式微处理器的结构与原理(初步定为arm9) (2) 必须掌握一个嵌入式操作系统 (初步定为uclinux或linux,版本待定) (3) 必须熟悉嵌入式软件开发流程并至少做一个嵌入式软件项目。 从事嵌入式软件开发的好处是: (1)目前国内外这方面的人都很稀缺。这一领域入门门槛较高,所以非专业IT人员很难切入这一领域;另一方面,是因为这一领域较新,目前发展太快,大多数人无条件接触。 (2)与企业计算等应用软件不同,嵌入式领域人才的工作强度通常低一些(但收入不低)。 (3)哪天若想创业,搞自已的产品,嵌入式不像应用软件那样容易被盗版。硬件设计一般都是请其它公司给订做(这叫“贴牌”:OEM),都是通用的硬件,我们只管设计软件就变成自己的产品了。 (4)兴趣所在,这是最主要的。 从事嵌入式软件开发的缺点是: (1)入门起点较高,所用到的技术往往都有一定难度,若软硬件基础不好,特别是操作系统级软件功底不深,则可能不适于此行。 (2)这方面的企业数量要远少于企业计算类企业。 (3)有少数公司经常要硕士以上的人搞嵌入式,主要是基于嵌入式的难度。但大多数公司也并无此要求,只要有经验即可。 (4)平台依托强,换平台比较辛苦。 兴趣的由来: 1、成功观念不同,不虚度此生,就是我的成功。 2、喜欢思考,挑战逻辑思维。 3、喜欢C C是一种能发挥思维极限的语言。关于C的精神的一些方面可以被概述成短句如下: 相信程序员。 不要阻止程序员做那些需要去做的。 保持语言短小精干。 一种方法做一个操作。 使得它运行的够快,尽管它并不能保证将是可移植的。 4、喜欢底层开发,讨厌vb类开发工具(并不是说vb不好)。 5、发展前景好,适合创业,不想自己要死了的时候还是一个工程师。 方法步骤: 1、基础知识: 目的:能看懂硬件工作原理,但重点在嵌入式软件,特别是操作系统级软件,那将是我的优势。 科目:数字电路、计算机组成原理、嵌入式微处理器结构。 汇编语言、C/C++、编译原理、离散数学。 数据结构和算法、操作系统、软件工程、网络、数据库。 方法:虽科目众多,但都是较简单的基础,且大部分已掌握。不一定全学,可根据需要选修。 主攻书籍:the c++ programming language(一直没时间读)、数据结构-C2。 2、学习linux: 目的:深入掌握linux系统。 方法:使用linux—〉linxu系统编程开发—〉驱动开发和分析linux内核。先看深,那主讲原理。看几遍后,看情景分析,对照深看,两本交叉,深是纲,情是目。剖析则是0.11版,适合学习。最后深入代码。 主攻书籍:linux内核完全剖析、unix环境高级编程、深入理解linux内核、情景分析和源代。 3、学习嵌入式linux: 目的:掌握嵌入式处理器其及系统。 方法:(1)嵌入式微处理器结构与应用:直接arm原理及汇编即可,不要重复x86。 (2)嵌入式操作系统类:ucOS/II简单,开源,可供入门。而后深入研究uClinux。 (3)必须有块开发板(arm9以上),有条件可参加培训(进步快,能认识些朋友)。 主攻书籍:毛德操的《嵌入式系统》及其他arm9手册与arm汇编指令等。 4、深入学习: A、数字图像压缩技术:主要是应掌握MPEG、mp3等编解码算法和技术。 B、通信协议及编程技术:TCP/IP协议、802.11,Bluetooth,GPRS、GSM、CDMA等。 2010-8-21 16:46 回复 122.90.173.* 2楼 C、网络与信息安全技术:如加密技术,数字证书CA等。 D、DSP技术:Digital Signal Process,DSP处理器通过硬件实现数字信号处理算法。 说明:太多细节未说明,可根据实际情况调整。重点在于1、3,不必完全按照顺序作。对于学习c++,理由是c++不只是一种语言,一种工具,她还是一种艺术,一种文化,一种哲学理念、但不是拿来炫耀得东西。对于linux内核,学习编程,读一些优秀代码也是有必要的。 注意: 要学会举一反多,有强大的基础,很多东西简单看看就能会。想成为合格的程序员,前提是必须熟练至少一种编程语言,并具有良好的逻辑思维。一定要理论结合实践。 不要一味钻研技术,虽然挤出时间是很难做到的,但还是要留点余地去完善其他的爱好,比如宇宙,素描、机械、管理,心理学、游戏、科幻电影。还有一些不愿意做但必须要做的! 技术是通过编程编程在编程编出来的。永远不要梦想一步登天,不要做浮躁的人,不要觉得路途漫上。而是要编程编程在编程,完了在编程,在编程!等机会来了在创业(不要相信有奇迹发生,盲目创业很难成功,即便成功了发展空间也不一定很大)。 嵌入式书籍推荐 Linux基础 1、《Linux与Unix Shell 编程指南》 C语言基础 1、《C Primer Plus,5th Edition》Stephen Prata着 2、《The C Programming Language, 2nd Edition》Brian W. Kernighan David M. Rithie(K & R)着 3、《Advanced Programming in the UNIX Environment,2nd Edition》(APUE) 4、《嵌入式Linux应用程序开发详解》 Linux内核 1、《深入理解Linux内核》(第三版) 2、《Linux内核源代码情景分析》毛德操 胡希明著 研发方向 1、《UNIX Network Programming》(UNP) 2、《TCP/IP详解》 3、《Linux内核编程》 4、《Linux设备驱动开发》(LDD) 5、《Linux高级程序设计》 杨宗德著 硬件基础 1、《ARM体系结构与编程》杜春雷着 2、S3C2410 Datasheet 英语基础 1、《计算机与通信专业英语》 系统教程 1、《嵌入式系统――体系结构、编程与设计》 2、《嵌入式系统――采用公开源代码和StrongARM/Xscale处理器》毛德操 胡希明着 3、《Building Embedded Linux Systems》 4、《嵌入式ARM系统原理与实例开发》 杨宗德著 理论基础 1、《算法导论》 2、《数据结构(C语言版)》 3、《计算机组织与体系结构?性能分析》 4、《深入理解计算机系统》Randal E. Bryant David O""Hallaron着 5、《操作系统:精髓与设计原理》 6、《编译原理》 7、《数据通信与计算机网络》 8、《数据压缩原理与应用》 C语言书籍推荐 1. The C programming language 《C程序设计语言》 2. Pointers on C 《C和指针》 3. C traps and pitfalls 《C陷阱与缺陷》 4. Expert C Lanuage 《专家C编程》 5. Writing Clean Code -----Microsoft Techiniques for Developing Bug-free C Programs 《编程精粹--Microsoft 编写优质无错C程序秘诀》 6. Programming Embedded Systems in C and C++ 《嵌入式系统编程》 7.《C语言嵌入式系统编程修炼》 8.《高质量C++/C编程指南》林锐 尽可能多的编码,要学好C,不能只注重C本身。算法,架构方式等都很重要。 这里很多书其实是推荐而已,不必太在意,关键还是基础,才是重中之重!!!2023-07-18 18:47:234
Linux操作系统文件访问权限详解
一直以root登陆使用linux的人来说很少有权限被拒这种概念,但某些时候又深受权限拒绝困扰。 知道为什么很多程序中需要使用getuid(),setuid()?为什么以普通权限登陆的用户不能进入/root,为什么在/目录下执行ls -l后可以显示root的信息,但ls /root -al却是权限不够?为什么有些文件夹可以继续创建文件,但就是不能ls?等等,相信看了此文就能明白。 主要是学习笔记,不足之处请指正。 CentOS 5.4 [testc@xxx opt]$ uname -a Linux xxx 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:47:32 EDT 2009 i686 i686 i386 GNU/Linux 一、口令文件1,格式存储文件/etc/passwd,格式如下:root:x:0:0:root:/root:/bin/bash aaa:x:501:501:bj, bj, 8111111,136000111:/home/aaa:/bin/bash用户名:加密密码:用户ID:组ID:注释:工作目录:shell: 默认情况是第一行的格式;注释字段可以自行修改,用逗号隔开,如第二行格式,这主要是给finger命令使用时可解析。 可以vi /etc/passwd修改,但为了保证其格式的正确性,请用vipw命令编译此文件。 sh-3.2# finger aaa Login: aaa Name: bj Directory: /home/aaa Shell: /bin/bash Office: bj, 8111111 Home Phone: 136000111 Never logged in. No mail. No Plan. 2,编程实例 /*getpwnam_pwuid.c*/ #include #include #include int main(void) { //struct passwd *pwd = getpwnam("aaa");struct passwd *pwd = getpwuid(501);if(pwd == NULL) { printf("err. ");return 1;} printf("name:%s ", pwd->pw_name);printf("passwd:%s ", pwd->pw_passwd);printf("description:%s ", pwd->pw_gecos);printf("uid:%d ", pwd->pw_uid);printf("gid:%d ", pwd->pw_gid);printf("dir:%s ", pwd->pw_dir);printf("shell:%s ", pwd->pw_shell); return 0;} sh-3.2# gcc getpwnam_pwuid.c -o app sh-3.2# ./app name:aaa passwd:x description:bj, bj, 8111111,136000111 uid:501 gid:501 dir:/home/aaa shell:/bin/bash 二、组文件1,格式存储文件/etc/group,格式如下root:x:0:root bin:x:1:root,bin,daemon aaa:x:501:组名:加密密码:组ID:指向的各用户名 2,改变文件uid和gid. sh-3.2# pwd /root/study sh-3.2# ls -al -rw-r——r—— 1 root root 397 10-11 03:23 test.c chgrp 改变所属组ID,当然只有root权限才可以修改。 sh-3.2# chgrp aaa test.c sh-3.2# ls -al -rw-r——r—— 1 root aaa 397 10-11 03:23 test.c 这个aaa就是新组名,其在/etc/group中,可以通过adduser aaa自行添加sh-3.2# cat /etc/group root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon. gdm:x:42:sabayon:x:86:plmtest:x:500:aaa:x:501: chown 改变用户ID或组ID sh-3.2# chown aaa:aaa test.c sh-3.2# ls -al -rw-r——r—— 1 aaa aaa 397 10-11 03:23 test.c 3,编程实例 /*getgrnam.c*/ #include #include int main(int argc, char *argv[]) { if(argv[1] == NULL) { printf("input error. ");return 1;} struct group *gp = getgrnam(argv[1]);if(gp == NULL) { printf("err. ");return 1;} printf("name:%s ", gp->gr_name);printf("psswd:%s ", gp->gr_passwd);printf("gid:%d ", gp->gr_gid); int i;for(i = 0; gp->gr_mem[i] != NULL; i++) { printf("group name:%s ", gp->gr_mem[i]);} return 0;} sh-3.2# gcc getgrnam.c -o app sh-3.2# ./app bin name:bin psswd:x gid:1 group name:root group name:bin group name:daemon 4,文件权限不细讲了sh-3.2# ls -al总计 483984 drwxr-x—— 13 root root 4096 02-22 00:01 . drwxr-xr-x 32 root root 4096 02-21 21:15 …… -rw-r——r—— 1 root root 464023491 10-25 22:33 3.3.005-080425.tgz -rw—— 1 root root 9346 02-21 23:16 .bash_history -rw-r——r—— 1 root root 24 2007-01-06 .bash_logout -rw-r——r—— 1 root root 191 2007-01-06 .bash_profile -rw-r——r—— 1 root root 176 2007-01-06 .bashrc drwxrwxrwx 10 1000 users 4096 08-23 20:16 cflow-1.3 -rw-r——r—— 1 root root 759691 08-23 20:13 cflow.tar.gz -rw-r——r—— 1 root root 100 2007-01-06 .cshrc -rwxr-xr-x 1 root root 582 11-11 21:48 delete_M.sh -rw-r——r—— 1 root root 2518 11-11 20:25 .dir_colors 主要是最左边一列:drwxr-x——10个字符,最左边是文件类型,-默认为普通文件;d:目录文件;l符号链接…… 后面9个,3个一组共三组,分别表示所属用户uid的权限;所属组或者附属组gid的权限;其它权限。 三个字符分别是读、写、执行权限读4,写2, 执行1 所以chmod 777 test.c,提升到读、写、执行权限。 5,组权限操作实例此节演示相同组的成员之间共享资源,即不同uid但相同gid的用户共享同一组的资源。 为了方便起见,我同时开了两个终端。 "sh-3.2#"以root权限登陆的shell /bin/sh "[testa@xxx root]"以testa用户登陆的shell 注:下文提到的“用户”是指/etc/passwd里定义的通过终端登陆的用户(此文即以下增加的三个账号名)。 sh-3.2# useradd testa sh-3.2# useradd testb sh-3.2# useradd testc sh-3.2# tail -f /etc/passwd -n 4 sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin testa:x:500:500::/home/testa:/bin/bash testb:x:501:501::/home/testb:/bin/bash testc:x:502:502::/home/testc:/bin/bash 再开一个终端登陆testa,之前那个终端保持。 sh-3.2# su testa [testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa) [testa@xxx home]$ ls -al总计 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 …… drwx—— 3 testa testa 4096 02-21 22:56 testa drwx—— 3 testb testb 4096 02-21 22:48 testb drwx—— 3 testc testc 4096 02-21 22:52 testc [testa@xxx home]$ cd testb bash: cd: testb: 权限不够 通过root修改testb目录权限为770,即当前uid或者gid相同的用户均有读写执行权限。 sh-3.2# cd /home/ sh-3.2# chmod 770 testb [testa@xxx home]$ ls -al总计 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 …… drwx—— 3 testa testa 4096 02-21 22:56 testa drwxrwx—— 3 testb testb 4096 02-21 22:48 testb (here modify) drwx—— 3 testc testc 4096 02-21 22:52 testc [testa@xxx home]$ cd testb bash: cd: testb: 权限不够[testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa) 此时虽然开放了testb的所属组权限,但用户testa的gid=500(testa) groups=500(testa),它还不属于testb组。 下面修改testa的gid为testb(或者增加其附属组groups值为testb) sh-3.2# usermod -G testb testa (增加用户testa的附属组testb) sh-3.2# id testa uid=500(testa) gid=500(testa) groups=500(testa),501(testb) 此时testa终端需要重新登下,使刚才更改生效[testa@xxx root]$ exit exit [root@xxx ~]# su testa [testa@xxx root]$ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb) [testa@xxx root]$ cd /home/ [testa@xxx home]$ ls -al总计 28 drwxr-xr-x 5 root root 4096 02-21 22:52 . drwxr-xr-x 32 root root 4096 02-21 21:15 …… drwx—— 3 testa testa 4096 02-21 22:56 testa drwxrwx—— 3 testb testb 4096 02-21 22:48 testb drwx—— 3 testc testc 4096 02-21 22:52 testc [testa@xxx home]$ cd testb [testa@xxx testb]$ pwd /home/testb 以上是增加了用户testa的附属组testb,使其对于属于testb组的资源有了访问权限。 下面再使用newgrp切换用户testa的gid. [testa@xxx testb]$ id uid=500(testa) gid=500(testa) groups=500(testa),501(testb) [testa@xxx testb]$ newgrp testb [testa@xxx testb]$ id uid=500(testa) gid=501(testb) groups=500(testa),501(testb) 此时testa用户的gid已改为501(testb)。 组之前的关系在文件/etc/group sh-3.2# tail -f /etc/group -n 4 sabayon:x:86:testa:x:500:testb:x:501:testa (最后一列:组内用户列表。即组testb里包含testa,testa属于testb组,大概就这意思吧……) testc:x:502: 虽然知道控制组关系的文件,但不能直接修改些文件,否则执行newgrp时会出现"抱歉"错误提示。 当然root用户权限是无限制的,它访问文件时不需要进行权限检查。 三、相关系统调用getuid();getgid();int setuid(uid_t uid);int setgid(gid_t gid); 只有超级用户或者需要设置的uid和当前用户的uid一致才可以设置,否则返回-1,置errno = EPERM, errno可以通过strerror()翻译。 其它:[testa@xxx home]$ su testa [testa@xxx home]$ sudo touch aa testa is not in the sudoers file. This incident will be reported. 以root权限vim /etc/sudoers增加testa ALL=(ALL) ALL 参考:APUE2E,1.8, 4.4, 8.112023-07-18 18:47:314
华硕x401a可以插几条内存条
尊敬的华硕用户,您好!X401A有一个内存插槽,只能加装一根内存条,支持DDR3 1600MHz内存,系统内存最高可扩充至4 GB内存(需操作系统支持)。温馨提示:保修期内,自行拆机加装内存条可能会影响到保修。希望以上信息可以帮到您!2023-07-18 18:47:402
联想G585能升级CPU吗?换个高点主频的!
不可以,联想g585为笔记本电脑,cpu和主板焊在一起的,无法拆解。联想g585的cpu型号为amdfusionapue1-1200m,参数信息如下:1.cpu系列amd低功耗e系列 2.cpu主频1.4ghz3.总线规格fsb1333mhz4.二级缓存1mb5.核心/线程数双核心6.功耗18w2023-07-18 18:47:471
西班牙有什么节日
1、奔牛节:勇敢者的疯狂游戏“圣佛明节”俗称“奔牛节”,是西班牙的传统节日,始于1591年,每年7月6日至14日在西班牙北部Basque地区的小城潘普洛纳(Pamplona)举行。奔牛节的起源与西班牙斗牛传统有直接关联。16世纪时,有人突发奇想:划出一条路线,将牛激怒,诱使公牛自己奔跑冲入斗牛场。再后来,人也加入其中体验在愤怒公牛前奔跑逃命的刺激,每年的奔牛节都会引来上万全球冒险爱好者来此“剧烈运动”。2、西红柿节:狂欢的红色大战西红柿节(西文:La Tomatina)和奔牛节一样,也是西班牙闻名世界的传统节日,始于1945年,于每年8月的最后一个星期三进行。来自世界各地的游客聚集在西班牙东部小城布尼奥尔,和当地居民一道用上百吨西红柿作武器展开激战,使宁静的小城变成一片“西红柿的海洋”。3、法雅节:奢侈的迎春盛典瓦伦西亚法雅节在每年3月15至19日举行,又被称为火节,西班牙文叫Fallas de San Jose。人们在这一天将制作的各式人形玩偶都付之一炬,以迎接春天的到来,这也是西班牙传统三大节日之一。火节上,来自全球各地游客和瓦伦西亚当地的人们一起举行各式各样的庆祝活动。4、圣体节圣体节(Corpus Christi)是天主教最重要的宗教节庆之一,每年6月间,西班牙的大小城镇都会隆重庆祝这一节日,而托莱多的庆祝规模又是其中最大和历史最久的。我在圣体节的前一天到达托莱多,发现几乎家家户户的窗口、阳台上都垂挂着彩旗和挂毯,古城的街巷里也拉起了绣着十字架的“天棚”。5、狂欢节西班牙狂欢节,源于1492年。是在“圣周”之前40天举行的一个很古老很流行的节日。是日人民尽情狂欢,庆祝纪念西班牙人民获得光明。表达了西班牙人民对生活的热爱,对幸福、和平和自由热爱。参考资料来源:中国新闻网-有种欢乐狂放叫西班牙节日参考资料来源:百度百科-西班牙狂欢节2023-07-18 18:47:574
在X86的PC机上如何使用U盘启动
如何制作androidx86u盘启动盘,在pc上安装安卓4.0系统?就是把androidx86装到u盘里,然后从u盘启动电脑(类似windowspe),就可以在u盘里运行并体验到androidx86系统了。 优点: 1,便携性好,走到哪儿用到哪儿,随身携带,另外目前主流u盘的速度和接口速度足够运行androidx86系统了。 2,安装极其简单,只需要做一个u盘镜像,并在启动时选一下启动项为u盘即可体验到androidx86系统了。 3,成本低,不需要动用原系统里的硬盘,所有操作均在u盘里进行, 4,无风险:安卓系统暂时对x86架构支持并不完善,如直接安装,失败后再装回原系统比较烦琐,用u盘安装即使失败,格掉u盘就可以,电脑硬盘不受任斡跋臁 5,方便检测,快速的检测所运行的androidx86系统和电脑硬件的兼容性,可以等调试好了后再安装到硬盘,避免盲目安装。 教程: 第一步,准备工作,需要一个u盘,并下载好如下两个软件: 1.1,制做u盘启动用的ultraiso,下载地址:http://www.33lc.com/soft/3911.html 1.2,相应的androidx86系统镜像(iso格式),下载地址:www.33lc.com/soft/15509.html u盘一个 第二步,制做安卓启动u盘 2.1,把u盘插入电脑,然后打开ultraiso软件,界面如下: ultraiso主界面 2.2,使用ultraiso打开我们需要写入u盘的安装镜像。操作为:找到菜单栏,依次选择文件-》打开,并选择所需镜像。 打开ultraiso 选择所需镜像 2.3,镜像加载完毕后,我们就要准备将镜像写入到u盘中,传统的复制粘贴只能将数据复制到u盘而不能创建引导文件,所以我们需要使用ultraiso专门的映像写入功能。 镜像加载完毕 2.4,在ultraiso主界面菜单栏中依次点击启动-》写入硬盘映像后打开一个对话窗口。在“硬盘驱动器”项目中,选择你要制作成启动盘的u盘(软件默认u盘)、在“写入方式”项目中选择“usb-hdd+”或“usb-zip+”(尝试选择,有效为准);点击“写入”,等待片刻,提示“刻录成功”后,就表明制作结束。期间会弹出提示窗口,u盘上的所有数据都会丢失,点击“是”,另外用户也需要提前备份好u盘里的数据。 选择“写入硬盘镜像” 刻录成功,此时androidx86的系统镜像已经以livecd的形式烧录到了u盘里。 第三步:设置引导,进入安装菜单镜像制作完成后,我们就可以开始体验了。我们插好u盘,然后需要在主板bios里面将u盘设置为优先启动项,(。由于每款主板产品的bios界面都各不相同,所在设置上也有不完全一样,大家可以参考自己电脑的主板说明书再来进行相应的操作,另外也可以按照启动时显示器提示的快捷键直接进入选择系统启动的设备(目前主流的主板都支持启动里快捷键选择启动的驱动器)。 七彩虹ae50(apue350)主板可以快捷进入启动选择项 u盘系统加载过程(很激动) 第四步:进入u盘运行。启动之后就可以直接进入到androidx86的安装菜单。androidx86的安装菜单非常简洁的。菜单四个选项从上至下依次为:live-cd直接运行androidx86、live-cdvesa模式、live-cddebug模式以及进入安装向导。 安装菜单 前三项都是在u盘里运行,第四项是安装到硬盘。其中第一项和第四项是我们最常用的。第一项是直接在安装盘上运行androidx86。而第四项则是与安装windows系统一样将androidx86安装到我们的电脑硬盘中。这一次先使用第一个,后面再单独详细介绍硬盘版androidx86的安装。 第四步:进入系统,设置。 进入系统后。将会由设置向导开始,主要进行语言和账号等相关设置。 设置语言 已经可以看到androidx86系统原生支持多国 整个设置界面和内容与手机刷完机后几乎完全一致,最后一张图是motomb855和androidx86系统的对比。看来pc的兼容性还是做的非常完美,或者说androidx86系是完全兼容pc的,完美的android.2023-07-18 18:48:271
谁知道巴西最新的旅游指南?
巴西旅游时间:春秋两季最佳,9-12月和3-6月,人群较少,适合旅游。景点方面,里约热内卢——可以坐老式电车,看球赛。马拉卡南体育场可容纳10万名观众。嘉年华不容错过,还有海滩~(4-10月最好~)圣保罗(巴西最大的城市和港口,也是南美最大的城市,4-5月最好~)。那里有很多博物馆,而且大部分都是免费的。你可以去东方看看。观看圣保罗大教堂(世界第四大哥特式教堂,圣保罗的经典入口如果你想购物,去圣保罗金融街.巴西利亚(4月-9月是最好的,它现在是旱季,天气很冷。s适合旅游~)、巴西利亚大教堂(超现代建筑杰作~值得欣赏,独特时尚)、三权广场、巴西利亚天主教大教堂、巴西利亚电视塔~还有马瑙斯。明年想去巴西旅游,狂欢节的时候,恳请去过的给点建议哈签证旅游签证:巴西不我们还不接受个人申请的旅游签证,所以你需要加入旅行社来申请旅游签证。所需材料:1。护照:护照有效期至少6个月。2.签证申请表:申请表应由申请人签名并注明填写日期。如果申请人未满18岁,申请人父母应该在申请表上签名。所有的申请表都要用A4纸打印,不要手写。3.近期2寸彩色照片。4.单位证明公证书,内容如下:证明申请人同意前往巴西并保留其职位;(如果是学生,需提供注册证明和在校学习证明)。5.经济能力证明:申请人应提供能证明其有足够经济能力承担旅行费用的银行存款证明(中英文对照)。主要旅游景点1)三权广场:巴西的标志性建筑之一,也是巴西必去的旅游景点之一。广场周围有众议院、参议院、国家法院、总统府、外交部、国家民族独立纪念馆、工人纪念碑。两周一次的升旗仪式经常吸引许多游客。2)总统纪念堂:位于飞机JK总统的雕像面向议会大厦。纪念馆展示了巴西利亚建设时期留下的总统纪念灵柩和各种历史文物。3)巴西利亚大教堂(BrasiliaCathedral):这座教堂是一座双曲面透明建筑,内屋顶悬挂着一尊巨型天使雕像。这个国家的国家元首经常举行一些重要的活动,教皇佩德罗二世访问巴西时就在这里传教。最大的城市:圣保罗。圣保罗是南美洲最大的城市。建于1554年,也是巴西和南美洲最大的城市。它是圣保罗的首府,位于该州的东南部。海拔760米,面积1500多平方公里,是巴黎的三倍,人口1600多万。圣保罗气候宜人。气候和温度一年变化不大,但早晚温差大。据说一年有四个季节,但是一天有四个季节。巴西的季节与中国相反。每年的12月到2月是圣保罗的夏天,多雨,但最高气温在30度左右。每年6-8月是圣保罗的冬天,平均气温在16-20度左右。圣保罗主要旅游景点:1。天主教大教堂(CatholicCathedral):南美洲最大的教堂,于1954年竣工,是一座高耸的哥特式建筑,气势宏伟,周围有一个步行广场和其中一个购物区。2.伊比拉普埃拉公园(IbilapuelaPark):位于圣保罗南郊,占地160万平方米,有人工湖、群雕和许多博物馆。这是世界上著名的公园之一。3.利伯达德:许多日本、中国和韩国侨民居住的地方。这里有着独特的东方文化氛围,有许多中国人经营的餐馆、商店和旅行社。第二大城市:里约热内卢里约热内卢是巴西第二大城市,全国最大的海港,全国商业和金融中心。里约热内卢拥有世界上最美丽的海滩和美丽的风景。它是巴西最大的旅游中心。里约热内卢主要旅游景点:1)耶稣山(MountCrdoba),因山顶高38米、重1200吨的耶稣雕像而得名,已成为巴西的象征。2)里约海滩:南北绵延数十公里的海滩成为世界各地游客向往的目的地之一,其中以科帕卡帕纳和伊帕内马最为著名。参考:巴西旅游指南2023-07-18 18:48:331
br是哪个国家的简称?
BR是英文Brazil的缩写,指巴西。巴西的国名源于巴西红木,是南美洲最大的国家,享有“足球王国”的美誉。位于南美洲东部。北邻法属圭亚那、苏里南、圭亚那、委内瑞拉和哥伦比亚,西界秘鲁、玻利维亚,南接巴拉圭、阿根廷和乌拉圭,东濒大西洋。海岸线长约7400公里。主要景点1、伊比拉普埃拉公园伊比拉普埃拉公园(Ibilapuela Park),位于圣保罗南郊,占地160万平方米,内有人工湖,群雕,众多博物馆,是世界上有名的大公园之一。2、里约植物园巴西里约植物园占地面积达1.4平方公里,这里森林翠绿茂盛,有美丽的树木、数千种花卉,其中包括600中兰、仙人掌等常见亚马孙植物群。3、伊瓜苏大瀑布伊瓜苏瀑布是世界上最宽的瀑布,由位于巴西巴拉那州和阿根廷边界上的伊瓜苏河从巴西高原辉绿岩悬崖上落入巴拉那峡谷形成的瀑布,为马蹄形瀑布,高82米,宽4公里,平均流量1751立方米/秒,其宽度是北美洲尼加拉瀑布的4倍。以上内容参考:百度百科-巴西2023-07-18 18:48:411
UNIX网络编程到底有什么用,怎么深入
如果你还不知道有什么用处,建议你先把网络编程放一边;先学习你目前最需要用到的。等到你有着方便的需求时,你自然就明白网络编程有什么用处了。这也是学习的一种方法,需求导向型的学习方法会有很高的效率。没有需求比没有兴趣更让你的学习效率变得很低。如果真想知道用处,以下可以作为参考:网络编程可以编写网络通讯程序,比如聊天程序、数据传输程序、文件传输程序等到;可以让你对网络通讯有更深的理解,当你遇到网络通讯方面的问题时,会有很深入的分析;为学习涌现很多分布式应用系统打下坚实的基础。学习网络编程,不需要学习驱动设备程序,两者基本不相关。该如何学习? 建议你:先找些样例,先学习编译别人的样例,并进行测试,观察。模仿样例,进行一些改动,然后自己调试、测试、思考;然后拟定一个题目,比如:传输一个文件到远端;试着自己独立完成编译、调试、测试;2023-07-18 18:49:121
明年想去巴西旅游,狂欢节的时候,恳请去过的给点建议哈
签证 旅游签证:巴西还不接受个人申请的旅游签证,需要参加旅行社申请旅游签证。 所需材料: 1.护照:护照有效期不得少于6个月。 2.一张签证申请表:申请表应有申请人签名并注明填表日期。如申请人未满18岁,应由申请人父母在申请表上签名。所有申请表格需用A4纸机打成正反面,不可手写。 3.一张2寸彩色近照。 4.一份单位证明公证书,内容如下:证明申请人的职务以及同意其去巴西旅游并保留其职务;(如系在校生,应提供学籍注册证明和在校学习证明)。 5. 经济能力证明:申请人应提供能证明其有足够经济能力负担旅行费用的银行存款证明(中英文对照)。主要旅游景点 1) 三权广场:巴西标志性建筑之一,也是巴西旅游必到景点之一。 广场周围环绕众议会,参议会,国家大法院,总统府,外交部,国家民族独立纪念馆,劳动者纪念碑等众多建筑。每两周一次的升降国旗仪式也常常吸引众多游客。 2) 总统纪念堂:位于“飞机”中部,JK总统塑像面向议会大楼,纪念堂内陈列了总统纪念灵柩,和巴西利亚建设时期留下的各种历史文物。 3) 巴西利亚大教堂:该教堂为双曲线形的透明建筑,内顶悬挂巨型天使塑像。在此国家元首经常举行一些重大活动,教皇佩德罗二世访问巴西时曾在这里宣讲。 第一大城市:圣保罗(Sao Paulo) 圣保罗是南美洲最大城市,建市于1554年,是巴西也是南美最大的城市,圣保罗州首府,位于该州东南部。海拔760米,面积超过1500平方千米,是巴黎的三倍,人口超1600万。圣保罗市气候宜人,一年之中气候、温度变化不太大,而早晚温差较大,有“一年之中无四季,一日之中有四季”之说。巴西季节与国内相反,每年12 月至次年2 月是圣保罗的夏季,多雨,不过最高温度也就是在30 度左右;每年6-8 月是圣保罗的冬天,平均气温也在16-20 度上下; 圣保罗主要旅游景点: 1.天主教大教堂(Katedral Metropolitana):南美洲最大教堂,落成于1954年,高耸的哥特式建筑,气势宏伟,周围是步行广场,购物区之一。 2.伊比拉普埃拉公园(Ibilapuela Park):位于圣保罗南郊,占地160万平方米,内有人工湖,群雕,众多博物馆,是世界上有名的大公园之一。 3.东方街(Liberdade): 众多日本、中国、朝鲜侨民居住的地方,里面具有鲜明的东方文化氛围,有众多中国人经营的餐馆、商店和旅行社。 第二大城市:里约热内卢(Rio de Janeiro) 里约热内卢是巴西第二大城市、全国最大的海港、全国商业和金融中心。里约热内卢有世界上最美丽的海滩,风光秀丽,是巴西最大的旅游中心。 里约热内卢主要旅游景点: 1) 耶稣山(科尔多瓦山),因山顶建有高38米、重1200吨的耶稣雕像而得名,它已成为巴西国家的象征。 2) 里约海滩:从北至南先后绵延数十公里的海滩,已经成为世界各地旅游者向往的目的地之一,其中又以KOPAKAPANA和IPANEMA最为著名。参考资料:巴西旅游攻略http://www.autob.cn/scenic/city/7202.html2023-07-18 18:49:201