常高伟的专栏

关注软件开发和技术中人的因素

《跨界》学习笔记

跨界 笔记1.未来设备之间的连接将会改变现有的模式和生态。出现大量机会。2.在互联网向传统行业渗透的过程中,传统行业未必没有机会。他们需要升级,利用互联网进行升级,变成传统行业2.0。互联网将会消失,因为一切都是互联网。3.在线教育,千亿市值。价格不是决定因素,质量至关重要。传统公司掌握核心资源,...

2015-03-05 22:02:50

阅读数 3012

评论数 0

APUE学习笔记——线程控制

线程属性使用的是结构体ptread_attr_t,它对应用程序是不透明的,这样可以增强程序的可移植性。 可以使用ptread_attr_init进行初始化,使用ptread_attr_destroy进行反初始化(类似于释放操作)。两者必须配对出现。 如果要修改ptread_attr_t,必须调用相...

2013-03-02 21:46:26

阅读数 2463

评论数 0

APUE学习笔记——线程

采用多线程模式可以采用同步编程,而非异步编程,可以简化编程;多个进程间可以很方便的共享数据; 可以通过pthread_self获得自身的线程ID。线程ID只在进程内部唯一。 新创建线程不能保证那个线程先运行,新县城可以访问进程的地址空间,继承线程的浮点环境和信号屏蔽字。 如果任意一个线程调用:ex...

2013-03-02 21:43:32

阅读数 2907

评论数 0

APUE学习笔记——信号

信号可以自己扩展。 信号产生:1)用户操作:ctl+c;2)硬件异常:除0,内存越界等;3)进程调用kill函数可以将信号发送到另一个进程。4)用户使用kill命令。5)某软件条件产生。 信号处理: 忽略,但是SIGKILL和SIGSTOP不可以忽略,他们向超级用户提供了进程终止或停止的可靠方...

2013-03-02 21:42:17

阅读数 2274

评论数 0

python开发总结六——c程序员python之路

前言学习使用python已经一年,自从看了python简明教程后就开始使用python编码,并且在两个项目中尝试使用了。在使用的过程中遇到问题就查资料,边学边写,并且把自己学到的东西总结下来,不知不觉已经有三十多页。虽然到目前为止还没有完整的看过一本全面python文档,但我认为这种方式可能更适合...

2012-09-21 22:58:55

阅读数 7771

评论数 2

APUE学习笔记——进程控制

1. getpid可以获取进程id。getppid可以获取进程调用进程的id。 2. fork函数:一次调用,两次返回:返回0是在子进程中。返回其他值在父进程中。如果大于0为子进程id;否则失败。 3. 子进程获得了父进程的数据空间(DATA,BSS),堆,栈的副本。进程之间共享正文段。 4. 目...

2012-09-20 21:27:20

阅读数 1781

评论数 0

APUE学习笔记——进程环境

在main中调用exit(1)和reutrn 1是等价的。内核启动一个进程的唯一的方法是调用exec,用户程序终止进程的唯一方法是显示或者隐式的调用_exit或者_EXIT。每个进程都会有一个进程表。进程表是一个全局的指针:environ。extern char **environ可以查看这个环境...

2012-07-03 11:23:28

阅读数 2447

评论数 0

APUE学习笔记-文件IO

1      文件I/O1、  lseek的返回值应该判断是否为0,而不是小于0。2、  偏移量可以大于文件大小。这个时候会有文件空洞。3、  可以统计程序的运行时间:用户cpu(用户态),系统cpu(内核态),墙上时间(总是将)。time –p ./execute4、  open加上标志:O_C...

2012-06-10 22:12:41

阅读数 2044

评论数 0

python开发总结四

不知不觉我的python开发总结已经18页了。原谅我把所有的都贴到博客上,而没有列出更新部分。如果你是第一次看,这样可能最有帮助。两本不错的书:《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。《Python核心编程》:介绍的比较深入,关键是,对Python很多高级特性都有...

2012-02-06 20:23:13

阅读数 3669

评论数 1

并发编程学习总结

我看书有个特点,不写笔记,就感觉好像没有看过书,印象不深刻(虽然写了也未必深刻),所以我看书会比较慢,笔记会很多。这里总结一下并发。最近学习《深入理解计算机系统》,最后一章中讲到了并发。之前一直以为并发是为了提高性能,书中将并发理解为逻辑控制流在时间上的重叠。简单的说,就是让机器能够同时处理多个事...

2012-02-06 20:18:27

阅读数 9239

评论数 5

开发工具,重用,可移植性——unix编程艺术学习笔记

1      工具:开发的战术有几个工具需要关注一下:Lex和yacc:这两个工具和DSL相关,我之前考虑过写一个通用的DSL引擎,这两个工具也许是可以使用的。另外,Python有它的一个实现叫PLY,也要关注一下。它的一个实例:Glade。Makefile的自动生成工具:比如atuoconf,i...

2011-10-20 21:56:32

阅读数 1896

评论数 0

14 语言:C还是非C——UNIX编程艺术学习笔记

每种语言都有它擅长的领域,所以,我们的策略,就是使用多种语言,让每个语言完成他们擅长的部分任务。混合语言编程是一种语言密集型,而不是代码密集型的编程。我们不但要具备多种语言的知识,还要能够知道各个语言的特长。C:可以作为其他语言的基础,来实现其他语言的核心。它的效率接近机器语言。但是容易犯错,开发...

2011-10-20 21:55:47

阅读数 1923

评论数 2

程序库和面向对象语言——unix编程艺术学习笔记

1.1  程序库强烈倾向于把程序分解成有胶合层连接的库集合,特别是共享库。使用库来达到c语言的模块性。库分层的一个重要形式是插件。实例分析:GIMP插件1.2  UNIX和面向对象语言Unix的模块化传统就是薄胶合层原则。也就是程序底层和顶层之间的抽象层越少越好。原因可能是因为c

2011-08-16 21:22:00

阅读数 1314

评论数 0

4.3 软件是多层的——UNIX编程艺术学习笔记

1.1.1  自顶向下和自底向上自顶向下的设计者可能会首先考虑主事件循环,然后在考虑插入具体的事件;自底向上设计者通常会考虑封装具体的事务,以后再按照某种相关次序把这些东西粘合在一起。单纯的使用自底向上和自顶向下都无法达到好的效果。一方面设计程序逻辑(自顶向下),一方面整理底层的

2011-08-16 21:21:26

阅读数 1642

评论数 0

4.2 紧凑性和正交性——UNIX编程艺术学习笔记

1.1.1  紧凑性紧凑性就是一个设计能否装进人脑的特性。——它是设计的可读性?紧凑不等以薄弱:如果一个设计构建在易于理解利于组合的抽象概念上,则这个系统能够在具有非常强大、灵活的功能同时保持紧凑性。紧凑不等于易于学习:对于某些紧凑设计而言,在掌握其精妙的内在概念模型之前,要理解

2011-08-16 21:20:01

阅读数 3655

评论数 4

模块性: 保持清晰,保持简洁——《unix 编程艺术》学习笔记

软件设计有两种方式:一种是设计的非常简洁,没有看得到的缺陷;另一种设计的极为复杂,有缺陷也看不出来。第一种方式难度要大得多。——C.A.R Hoare更精练的表达:一种是明显没有缺陷;一种没有明显的缺陷。要编写复杂软件又不至于一败涂地的唯一方法,就是用定义清晰的接口把若干简单的模

2011-08-16 21:19:08

阅读数 1831

评论数 0

unix设计十七条原则之一(unix编程艺术笔记)

最近在学习《unix编程艺术》。第一章非常不错,讲了很多Unix的历史,哲学基础,其中最重要的是提到的十七条设计原则。很多原则自己也知道,但是从来没有总结的如此详细深刻。下面的内容大部分来自《unix编程艺术》这本书,少部分是我的一些理解。这是我读书的一个习惯,对于我认为重要的,

2011-07-26 20:49:23

阅读数 2287

评论数 5

概念模型——分析模式学习笔记

分析和设计存在很多的不同之处,设计的目的是为了更高实现一个技术方案,而分析的目的是为了理解问题的本质。这不仅仅是用用例列出需求清单那么简单的事情。 假设我们想开发一个斯诺克台球模拟游戏,击打白球后,白球按照一定的轨迹运动,并且撞击红球。用例可以列出成千上万,但是这不足以让我们开发出一个更好的软件...

2011-06-25 08:43:00

阅读数 2945

评论数 1

如何成为一名专家级的开发人员——读后总结

今天在CSDN首页上看了一篇文章:如何成为一名专家级的开发人员 文章相当不错,感触很深,总结一下: 1、专注。要选择一个平台,一个行业,然后在这个领域内专注一段时间(最少要6年)。我现在应该是linux 上C/C++开发,要专注这一领域。我的一个同事做了三年,后来跳槽到HW后转java了,...

2010-11-22 18:48:00

阅读数 5247

评论数 11

成功架构设计的关键要素

下面内容来自《软件架构设计》,是我的学习笔记。 探究成功架构设计的关键要素: 1、 是否遗漏了至关重要的非功能性需求。非功能性需求:1)客户——易用性,性能,可伸缩性,持续可用性和鲁棒性;2)开发人员和维护人员——可扩展性,可重用性,可移植性,易理解性和易测试性等软件开发期质量属性。3)客户组...

2010-04-01 15:25:00

阅读数 2474

评论数 1

提示
确定要删除当前文章?
取消 删除
关闭
关闭