免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: crazyhadoop
打印 上一主题 下一主题

[Linux] Linux系统开发那点事儿 分享经验得牛人力作!(获奖名单已公布-2014-5-28) [复制链接]

论坛徽章:
18
卯兔
日期:2013-09-27 17:41:0615-16赛季CBA联赛之佛山
日期:2016-07-09 17:34:45操作系统版块每周发帖之星
日期:2015-12-02 15:01:04IT运维版块每日发帖之星
日期:2015-12-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-07 06:20:00IT运维版块每日发帖之星
日期:2015-10-03 06:20:00IT运维版块每日发帖之星
日期:2015-10-01 06:20:00羊年新春福章
日期:2015-04-01 17:56:06拜羊年徽章
日期:2015-04-01 17:56:062015年迎新春徽章
日期:2015-03-04 09:49:452015年辞旧岁徽章
日期:2015-03-03 16:54:15天秤座
日期:2015-01-14 06:39:28
31 [报告]
发表于 2014-04-16 22:19 |只看该作者
回复 27# 阿注哥


    呵呵,善意,代码写的很好啊

论坛徽章:
0
32 [报告]
发表于 2014-04-17 17:15 |只看该作者
好话题,支持一下。

论坛徽章:
0
33 [报告]
发表于 2014-04-18 17:42 |只看该作者
帮楼上补充2点(基本知识)
4、递归少用,能不用尽量不用
5、循环最好不要超过3层

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
34 [报告]
发表于 2014-04-19 18:48 |只看该作者
有一段时间了,都已不陌生了,
,linux 很强大啊!

论坛徽章:
0
35 [报告]
发表于 2014-04-21 10:33 |只看该作者
需要的学习的东西 超多的

论坛徽章:
9
寅虎
日期:2014-06-03 14:10:05午马
日期:2015-01-08 16:49:52白羊座
日期:2015-01-16 12:58:182015年迎新春徽章
日期:2015-03-04 09:57:092015元宵节徽章
日期:2015-03-06 15:51:33NBA常规赛纪念章
日期:2015-05-04 22:32:03IT运维版块每日发帖之星
日期:2015-08-04 06:20:0015-16赛季CBA联赛之北京
日期:2015-12-14 09:40:0315-16赛季CBA联赛之青岛
日期:2016-07-25 11:23:07
36 [报告]
发表于 2014-04-21 13:53 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
37 [报告]
发表于 2014-04-21 16:27 |只看该作者
内存溢出,线程死锁,通讯失败也就罢了!起码还是自个儿代码真正错误的地方,每一次修改都是华丽丽的升华!但是偶尔竟然会因为在if()后面多加了个分号而耗费两个小时检查错误!我的手是有多贱啊!怎一个惨字了得!

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
38 [报告]
发表于 2014-04-21 18:24 |只看该作者
回复 37# Soso_Boy


    这不是坑,这是自己不仔细,哇咔咔,上一课

论坛徽章:
5
摩羯座
日期:2014-07-22 09:03:552015元宵节徽章
日期:2015-03-06 15:50:392015亚冠之大阪钢巴
日期:2015-06-12 16:01:352015年中国系统架构师大会
日期:2015-06-29 16:11:2815-16赛季CBA联赛之四川
日期:2018-12-17 14:10:21
39 [报告]
发表于 2014-04-21 21:10 |只看该作者
1. 系统开发中遇见的那些头疼的问题
有时候主要是多进程,多线程控制的问题相对来说比较头疼,尤其是多进程的进程间通信,数据共享需要考虑,多线程的话需要考虑线程控制,线程锁等问题,当然有时候会使用多线程去做类似于多进程的事,就是每个线程自己做自己的事;
有时候使用一些工具,脚本等,需要创建一个进程去执行
例如
fork()
exec() 去执行,这么执行以后,有些场景可能不需要wait,有些场景则需要wait,什么时候需要wait呢,当需要获得exec以后的结果,例如程序是否异常退出等;
尤其是组合上socket,例如在server部分希望执行某个应用程序,该程序执行以后是否正常退出,将退出状态反馈给client,这个时候wait就比较关键了;
如果client发了多次相关操作后,server执行了多次相关操作呢?这个时候就要考虑pid的管理,当然,更重要的是僵尸回收,这些需要考虑;
最后,综合上面考虑,有人给出了一个比较时髦的东西——协程, 说白了,就是一个进程,自己去实现自己的调度,而这个调度是单进程单线程的,单进程单线程比较蛋疼的是就是阻塞了,试想一下,一个进程里面有多个任务,多个任务调度的时候有一个环节被阻塞住了,那么它就没办法进入下一个任务了。
其实说白了,为了避免重复劳动,可以日积月累,自己搞一套方便自己的多进程,多线程,协程的模型,这样就爽呆了,就不会那么不靠谱了
提到socket,当然还要考虑select/poll/epoll,也是要根据不同的场景去选择,并不是所有的地方都epoll最好,有时候select其实也挺好用的,尤其是在某嵌入式平台
        
2. 系统开发过程中的收获
随着系统开发的过程越来越多,积累的东西也越来越多,例如咋某种场景可以使用某种模型,可以很快的知道是用多进程合适,还是用多线程合适,还是用协程合适。
当然,以前只知道进程,线程,后来又知道了协程
真是验证了那条 独学而无有责鼓楼而寡闻啊

评分

参与人数 1可用积分 +2 收起 理由
crazyhadoop + 2 很给力!

查看全部评分

论坛徽章:
0
40 [报告]
发表于 2014-04-21 22:03 |只看该作者
本帖最后由 platinum 于 2014-04-21 22:05 编辑

说一下编程优化吧
这个水很深
比如当你对一个二维数组赋值时,先循环“行”还是先循环“列”,执行效率是完全不同的
这就涉及到了 CPU 的 cache
当遇到 cache pingpong 时,cache 得不到最大发挥,就要频繁读写内存,程序执行效率就会大幅度下降

给大家推荐个文档,作者是:何登成

C 语言开发时,可优化的地方很多,比如 inline 函数的使用,比如 readmostly,比如代码的组织(尽量代码段、数据集中)等。。。。。

CPU Cache and Memory Ordering.tar.bz2

1.73 MB, 下载次数: 58

评分

参与人数 1可用积分 +2 收起 理由
crazyhadoop + 2 很给力! 高大上

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP