疑问&心得&体会(一)——linux系统编程和网络编程

两年半研究生生活中,我做了一些电子和纸质笔记,因为快找工作了,打算把它们整理出来,一来巩固自己的基础,而来为广大网友提供些素材。

本系列读书笔记标题形式为:“疑问&心得&体会(文章编号)——文章内容的标题”,下面是最近我和一朋友聊linux系统编程和网络编程的一些聊天记录,摘录出来和大家分享下(相信我的朋友来容许我擅自转帖我们的聊天记录)。

回复张良 9:31:41
咋搞linux
回复张良 9:31:46
我菜鸟得狠
回复PLP 9:32:06
你现在会不会用linux?
回复张良 9:32:34
不咋会,基本命令就会几个
回复PLP 9:33:57
1、首先,熟悉linux下命令和工具,装个机器万网
2、然后熟悉linux下的编程环境,编几个程序玩玩
3、再者,多看些源代码,仿照着写几个
4、最主要的,是把你相关领域的主要书籍好好看看,再实践下,就相当不错了。

回复PLP 9:36:13
装个机器玩玩
回复张良 9:36:21
装了虚拟机
回复张良 9:36:52
对了,你linux下的编译环境是啥?
回复张良 9:37:02
介绍个好点的吧

回复PLP 9:38:16
编程环境:主要是工具,linux下用gcc就够了,大不了再搞个ide(集成开发环境,像vc一样可以界面操

作)
回复张良 9:38:45
听说有个Eclipse?
回复PLP 9:38:59
linux下用gcc,编译工程时弄下makefile

回复PLP 9:39:11
那个没用过,网上说这个的很多。
回复张良 9:40:03
我发现计算机专业的反而不怎么搞linux
9:40:29
成功发送文件“【推荐】计算机经典书籍推荐.doc”(79.00KB)。

9:40:34
成功发送文件“【推荐】计算机科学类书籍.doc”(86.00KB)。

回复PLP 9:40:40
那是,计算机很多都在windows下开发,搞什么虚拟化啊,搞什么p2p ------->注我们是电子信息方向的
回复张良 9:40:58
抢咱饭碗是吧。。
回复PLP 9:41:11
,但是他们开发软件还是参考了linux下很多源码

回复PLP 9:41:23
多看些经典书,照着练。
回复PLP 9:41:43
那你现在的任务的核心技术是什么?
回复张良 9:42:09
未知,但是要在linux下实现一个数据链路层的协议
回复张良 9:42:14
空间链路协议
回复PLP 9:51:05
linux下的经典书,都是国外的
i)系统编程:steven的unix环境高级编程、linux程序设计
ii)驱动开发:linux驱动开发
iii)网络编程:看steven的unix网络编程第一卷,c++可以熟悉下道格拉斯的ACE编程,道格拉斯的

tcp/ip网际互联第三卷
iv)再深入,可以看下内核,lrobert love的 linux内核设计与实现linux情景分析(国内的)
v)编程书,看c++ primer,c程序设计就差不多了,中文国内的推荐钱能的书(有第二版了。)
vi)网络基础书:steven的tcp/ip详解第一卷,道格拉斯的tcp/ip网际互联第一卷
先找个中文的通俗教材,看完了再照着上面练。

回复PLP 9:46:35
这些都是工具了,最关键的是你专业相关的东西,空间链路层协议,听上去太牛b了
回复张良 9:47:05
。。。都是别人规定好了,然后去实现,就好像中国的制造业
回复张良 9:47:07
有啥用
回复张良 9:47:14
除了会用点工具
回复PLP 9:47:23
你也不做研究??
回复张良 9:47:40
研究数据链路层的协议?
回复张良 9:47:47
而且是空间的
回复张良 9:48:05
自认为没这本事,而且也不想搞
回复张良 9:48:08
没钱途

回复张良 9:51:30
C++primer今年前有望结束
回复张良 9:51:41
学得太慢,总在上课
回复PLP 9:51:44
看了这上面的一部分,你自己就知道找什么看了。
回复PLP 9:51:51
牛b
回复PLP 9:52:00
我还没怎么看过,太厚了。
回复张良 9:52:45
牛啥啊,才看基础,接着是如何用库函数,然后是编程之美之类的进阶书籍
9:52:52
成功发送文件“跟我一起写Makefile.rar”(903.00KB)。

回复PLP 9:56:09
unix环境高级编 网络书籍 http://book.chinaunix.net/special/ebook/addisonWesley/APUE2/
9:56:14
成功发送文件“UNIX网络编程第一卷(第三版)英文版.rar”
良 9:57:27
进百度很好
回复PLP 9:57:44
可以进搜索算法部门。
回复张良 9:57:56
我还定了本算法导论呢,然后打算去研究下,搞下ACM
回复PLP 9:58:34
百度也要搞网络编程的,要求对协议栈比较清楚,还有并发编程的(多线程)
回复张良 9:58:56
网络编程对算法有要求么
回复PLP 9:59:00
反正之后你自己订个方向,到研二时。
回复PLP 9:59:15
很多对算法要求不高,都是现成的,
回复张良 9:59:35
哦,那我不是白买了本,如果网络编程的话
9:59:48
成功发送文件“Unix网络编程实用技术与实例分析.pdf”(11.40MB)。
。。
回复张良 10:00:23
嗯,这边研二都出去实习的
回复张良 10:00:33
所以方向关系不大
回复张良 10:00:48
而且时间过得太快
回复PLP 10:00:52
嗯,好的,我要工作了。
回复PLP 10:01:14
研二就实习,很爽。

老P,现在看APUE发现这系统编程的,搞不好就到写驱动上去啦
日期:2010-2-26
回复张良 19:30:17
老P,我是张良,有空找你交流下linux~~
日期:2010-3-10
回复张良 21:05:34
老P在不在
日期:2010-3-11
回复PLP 9:11:37
现在在
回复张良 9:21:40
才看到
回复张良 9:21:51
你是写啥的,驱动程序?
回复PLP 9:22:34
没写驱动了,驱动做过,系统编程为主,现在打算做到ap上
回复PLP 9:22:47
桌面式的ap
回复张良 9:22:53
ap是?
回复PLP 9:23:00
application
回复张良 9:23:22
嗯,那你做的这些还挺有用的
回复PLP 9:23:24
你进展如何
回复PLP 9:23:47
勉强,不过没时间搞了,快找工作了。
回复张良 9:24:01
apue粗略看完,UNIX网络编程看了一小半,都还没来得及将代码码一遍
回复张良 9:24:10
=效果不咋滴
回复张良 9:24:59
这边研一以上课为主,项目方面没啥进展,不过暑假就要初步做完,年底结题
回复PLP 9:25:25
累累代码,你看的东西不少了,真要把这两本书看完,应该很强了
回复PLP 9:26:02
其实一般的小程序没几行代码,大程序都是在别人现成的库、模块上搭建的
回复PLP 9:26:17
而实验室大程序小
回复张良 9:26:44
apue的代码有一些看得熟,前一阵子专搞LINUX下的C函数
回复张良 9:27:07
所以对APUE上的代码除最后两章都觉得还行
回复张良 9:27:37
你做系统编程的应该会用到APUE上的许多东东吧
回复PLP 9:27:47
apue上所讲的在一个系统的关键阶段,如扫除bug、提高性能等是很有作用的

回复PLP 9:28:15
而这些关键阶段是一个东西从demo到product的key points
回复PLP 9:29:45
你做着做着就知道了,一般情况下一堆垃圾代码也能垒出你想要的功能,但要做好做得比别人好,就要在

系统、架构、策略方面下功夫
回复张良 9:29:52
我们讲LINUX下的编程,如果不用到APUE上的些函数,那还叫LINUX下的编程么
回复张良 9:30:26
那是,APUE最后两章的代码觉得非常牛逼啊
回复PLP 9:31:11
呵呵,会用到,但大部分人都style不好,要么不注意error 容错,要么对某些race condition等处理不

好,
回复PLP 9:31:19
但这些都是一个 成熟系统的关键
回复PLP 9:31:32
呵呵,linux下开源代码多,找些看看,
回复PLP 9:31:54
像ping、端口扫描等都有源码的
回复PLP 9:32:09
建议先自己也动下手,感受会更深
回复张良 9:32:11
还有,你如何看待项目?
回复PLP 9:32:23
什么项目?
回复张良 9:32:25
就是项目对于找工作而言
回复张良 9:32:31
一般意义上的
回复PLP 9:33:17
我觉得有一至两个特别是两个项目经历为好,我讲的主要是那种打工仔的项目
回复PLP 9:33:26
都是我个人看法啊
回复张良 9:34:20
我还没真正做完一个项目,你觉得我的观点如何》–1、项目是什么? 2、如何做这个项目
回复PLP 9:35:05
做做项目能让你有点系统观,加深理论的理解,提前进入工作角色,以后更利于适应
但如果打工仔项目做得太多,那是囫囵吞枣,必然使你遇到大项目手足无措,难以调控
回复张良 9:35:21
现在实验室做的些项目名义上很好听的,什么载人航天的远程医疗、高清电视、可视电话啊,都是组装的
回复张良 9:35:26
买现成的产品
回复PLP 9:35:34
打工仔项目只赶时间
回复PLP 9:35:41
嗯,
回复PLP 9:35:51
自己做了些什么呢?
回复PLP 9:36:28
其实中国现状就是这样吧
中国的创新就是组装创新,而不是发明、源头创新
回复张良 9:36:40
山寨嘛
回复PLP 9:36:58
我们这边的垃圾产品还不是市场很好,卖给公安局之类的。
回复PLP 9:37:19
净利润都五千万左右了。

回复张良 9:37:27
这么叼
回复张良 9:37:38
靠,每个月给你多少
回复PLP 9:37:45
赚政府的钱,
回复PLP 9:37:54
就吃餐饭,报销10块钱啊。
回复张良 9:38:03

回复PLP 9:38:18
500是学校给的,
回复张良 9:38:26
上学期没把课程当回事,所以还看了些东东,实验室要我做的是一个空间链路层的编程,指导我的老师和

博士一直让我看协议,上学期顶着压力看APUE和UNIX网络编程
回复PLP 9:38:31
如果学校的没争取到,公司给你
回复张良 9:38:38
╮(╯▽╰)╭
回复PLP 9:39:23
我觉得编程还是工具,当然这些工具要掌握好,比较难,多去解决实际问题吧
回复张良 9:39:34
我们讲LINUX下的编程,如果不用到APUE上的些函数,那还叫LINUX下的编程么
回复PLP 9:40:15
linux下编程如果偏底层是可以用到的。
回复PLP 9:45:40
但一般情况下:
1、要实现一个大点的东西,我们都会利用现成的平台,web用java,强一点的服务器开发用ace等中间件

,这些平台一般都对apue上提到的系统调用、C库、Posix子集进行了封装,所以你一般是用到他们的封装

版本
2、如果你实践了apue、unp等上的东西,这会加速你对这些平台提供的api的理解,这些封装api的封装主

要是为了更方便、更安全
3、但同时这些封装的api灵活性、性能必然打了一点折扣,当它不能满足你的性能等时,你可能就会用

apue书上的原生函数实现关键部分了
4、说到底,apue等书上讲的直接在linux 平台开发,而其他ace等讲的是更上层一点的平台上的开发,原

理是相通的
回复张良 9:47:46
那如果嵌入式开发肯定和APUE联系很大了吧
回复PLP 9:47:52
在我们公司也存在这样一种情况就是:深一点的技术被鄙视,他们的目标是尽快推出产品,但我们是学生

,应该系统地学习一些东西:如看apue、unp等书,并且积极参与项目实践
还是多实践吧,我还后悔实践过少

回复PLP 9:48:08
也不一定,这种情况在嵌入式平台也存在
回复PLP 9:48:46
嵌入式开发写驱动,写内核模块它直接用的更底层的内核接口
回复PLP 9:49:09
而开发应用,如wap手机等,他们还是用现成的轻量级平台
回复张良 9:49:32
嗯,你在公司好啊,我想去公司只能去实习,你完全相当于实习了两年,很划算啊
回复PLP 9:49:38
大平台为了争夺小平台的市场,往往会推出嵌入式版本
回复PLP 9:51:27
嵌入式两大部分:一部分是工控等,对应用程序等要求不高,关键就是内核和apue级的东西了
另一部分是消费电子类,对应用程序要求高,如手机等,就会利用大平台开发
但要在性能、如响应速度上改善,还是要回到内核和apue级

回复PLP 9:51:46
好了,我要工作了,以后再交流讨论
回复张良 9:51:57
好,bye

broadcast icmp jiqiao multi_broad raw sys_net_ml tcp1 term thread udp cap io mul_thread_download qq sem tcp tcp_dos testerr time wav ./broadcast: broad.h client.c server server.c ./cap: capture_packet capture_packet.c ./icmp: icmp.c ./io: aa ba conf filename.c fwrite.c print.c scandir.c setvbuf test tree1.c vprintf ab bb conf.c fwrite print scandir server.conf setvbuf.c tree tree.c vprintf.c ./io/test: a abb b c d ./io/test/d: e f g ./jiqiao: client client.c udp_server udp_server.c ./mul_thread_download: down.c download download-注释.c readme.txt ./multi_broad: client.c mul.h server.c ./qq: ansi_code.c client gen_single_nohead_pre.c Makefile server tcp.h ansi_code.h client.c gen_single_nohead_pre.h play_sub.c server.c ansi_code.o client.o gen_single_nohead_pre.o play_sub.h server.o ./raw: gethostbyname.c ping1.c ping.c zs.c ./sem: semget_1.c semget.c ./tcp: fork qq simple ./tcp/fork: client client.c server server.c tcp.h ./tcp/qq: client client.c gen_single_nohead_pre.h server.c client1.cv gen_single_nohead_pre.c server tcp.h ./tcp/simple: client client.c makefile server server.c tcp.h ./tcp1: fork ftp simple simple1 ./tcp1/fork: client.c server.c tcp.h ./tcp1/ftp: client.c ftp.h server.c ./tcp1/simple: client client.c makefile server server.c tcp.h ./tcp1/simple1: client1.c client2.c client.c server1.c server2.c server.c ./tcp_dos: tcp_dos tcp_dos.c ./term: getpass getpass.c gets gets.c translate ./term/translate: ansi_code.c ansi_code.o chin.c dict dict.o glist.c glist.o input.h Makefile ansi_code.h chin ciku.dict dict.c glist1.c glist.h input.c input.o tags ./testerr: testerr_copyclient.c testerr_copyserver.c testerrno_copyserver1.c ./thread: aa bping.c hello pthread_attr.c pthread_create pthread_mutex.c while.c aa.c chain hello.c pthread_attr.s pthread_create1.c pthread_rwlock aa.h cond pthread_attr pthread_cond pthread_create.c pthread_rwlock.c bping cond.c pthread_attr1.c pthread_cond.c pthread_mutex while ./thread/chain: chain_queue.c chain_queue_hanoi chain_queue.o hanoi.c main.c chain_queue.h chain_queue_hanoi.c hanoi main ./time: asctime ctime gettimeofday strftime time time.c asctime.c ctime.c gettimeofday.c strftime.c timea.c ./udp: client client_echo client_loop reliable_udp server_echo.c server_loop.c udp_server client1 client_echo.c client_loop.c server server_hello stack client1.c client_hello htonl server.c server_hello.c stack.c client.c client_hello.c htonl.c server_echo server_loop ts ./udp/reliable_udp: reliable_recv reliable_recv_std reliable_send reliable_send_std reliable_recv.c reliable_recv_std.c reliable_send.c reliable_send_std.c ./wav: exec line.c lrc_display makefile play.c playwav.c setitimer1.c getline llist.c lrc_display.c mp3 play_sub.c playwav.h setitimer.c getline.c llist.h main.c play play_sub.h setitimer ./wav/mp3:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值