![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计思想
长山互联网未来探索
一切美好事物,都是深度关系的产物。 长山是我的花名,这里和大家聊聊互联网、技术、产品、编程、心理学等我感兴趣的事情。 现在是一个新时代的开始,与你喜欢的事情,建立深度的关系,里面有新的创造。
展开
-
软件体系结构的重构——定义
以前做过一个产品,共分为三层:平台层,应用服务器层,应用层。其中有一个业务流程,实现是在应用层,但它那里的信息不全,需要通过应用服务器层向平台层获取必要的业务数据,然后通过应用服务器层控制业务流程。当时考虑这个结构的时候,主要的出发点就是业务和控制分离,将业务处理从平台层剥离开来。当时,在具体是实施过程中,我们工程师对这种结构抵触心理很强烈。他认为我们的业务开发非常的繁琐,而且经常要贴“狗皮膏药”原创 2009-10-03 07:54:00 · 2853 阅读 · 0 评论 -
新手小心:c语言的强符号和弱符号
声明:下面的实例全部在linux下尝试,window下未尝试。有兴趣者可以试一下。文章针c初学者。c语言的强符号和弱符号是c初学者经常容易犯错的地方。而且很多时候,特别是多人配合开发的程序,它引起的问题往往非常行为怪异而且难以定位。什么是强符号和弱符号?在c语言中,函数和初始化的全局变量是强符号,未初始化的全局变量时弱符号。强符号和弱符号的定义是连接器用来处理多重定义符号的,它的规则是:不允许多个原创 2012-01-03 22:25:57 · 8500 阅读 · 11 评论 -
分享几个非常有启发性的设计概念
最近读完《unix编程艺术》,一本不错的书,值得好好读一下。书中提到了一些非常有启发性的设计概念,这里和大家分享一下。模块性:要编写复杂软件又不至于一败涂地的唯一方法,就是用定义清晰的接口把若干简单的模块组合起来。模块性可以说是听到的最多的一个,它已经深入程序员的心中。它的本质其实就是用分而治之的方法来分解复杂度。关于模块的大小,本书有精彩的论述,有兴趣可以详读。紧凑性:就是一个设计能否装进人脑的原创 2011-10-23 21:35:43 · 8260 阅读 · 21 评论 -
14 语言:C还是非C——UNIX编程艺术学习笔记
每种语言都有它擅长的领域,所以,我们的策略,就是使用多种语言,让每个语言完成他们擅长的部分任务。混合语言编程是一种语言密集型,而不是代码密集型的编程。我们不但要具备多种语言的知识,还要能够知道各个语言的特长。C:可以作为其他语言的基础,来实现其他语言的核心。它的效率接近机器语言。但是容易犯错,开发效率低。C++:编译效率,面向对象,泛型编程的结合。但是非常怪异复杂,往往鼓励复杂的设计。Shell:原创 2011-10-20 21:55:47 · 2134 阅读 · 2 评论 -
软件的适度规模——unix编程艺术学习笔记
小巧锐利工具的Unix教义隐藏着二重性:框架的存在。吝啬原则:只有实证了其他方式行不通时才写庞大程序。要对庞大程序保持一种严谨怀疑态度以及一种谨慎的策略和方法:首先寻找小巧程序的解决方案。如果单个小程序无法完成工作,尝试在现有框架结构内构造一个协作小程序工具包来解决问题。如果两者都失败了,才可以自由的构建一个巨型的程序或者一个新的框架,而不会觉得已经完败于设计挑战。当编制一个框架时,牢记分离原则。原创 2011-10-20 21:54:55 · 1505 阅读 · 0 评论 -
什么是数据驱动编程
前言:最近在学习《Unix编程艺术》。以前粗略的翻过,以为是介绍unix工具的。现在认真的看了下,原来是介绍设计原则的。它的核心就是第一章介绍的unix的哲学以及17个设计原则,而后面的内容就是围绕它来展开的。以前说过,要学习适合自己的资料,而判断是否适合的一个方法就是看你是原创 2011-08-03 22:25:35 · 12651 阅读 · 12 评论 -
unix设计十七条原则之二(unix编程艺术笔记)
最近在学习《unix编程艺术》。第一章非常不错,讲了很多Unix的历史,哲学基础,其中最重要的是提到的十七条设计原则。很多原则自己也知道,但是从来没有总结的如此详细深刻。下面的内容大部分来自《unix编程艺术》这本书,少部分是我的一些理解。这是我读书的一个习惯,对于我认为原创 2011-07-29 22:04:38 · 3336 阅读 · 0 评论 -
unix设计十七条原则之一(unix编程艺术笔记)
最近在学习《unix编程艺术》。第一章非常不错,讲了很多Unix的历史,哲学基础,其中最重要的是提到的十七条设计原则。很多原则自己也知道,但是从来没有总结的如此详细深刻。下面的内容大部分来自《unix编程艺术》这本书,少部分是我的一些理解。这是我读书的一个习惯,对于我认为重要的,原创 2011-07-26 20:49:23 · 2604 阅读 · 5 评论 -
什么是简单的设计?
为什么需要简单的设计?我想这和人的特点有关。我不止在一个地方看到过,人同时能够处理的信息不超过7个。我想这应该就是人们追求简单设计的根本原因,人需要用一个简单的设计去解决现实中的问题。如果真的存在完美,也许简单的东西就是完美的东西。很多人都崇尚简单设计的思想,那么什么是简单设计?原创 2011-07-16 17:09:22 · 3445 阅读 · 7 评论 -
如何学习一门新的语言二——方法与步骤
之前发表过一篇文章,也是谈如何学习一门新的语言《如何学习一门新的语言》,这篇文章主要的关注点是心态。今天这篇文章主要的关注点是具体的方法和步骤,是我学习C++和python的一些经验,整理出来和大家一起讨论。另外,我主要针对的已经掌握了一门编程语言,再学习一门新的语言的情况。原创 2011-07-24 13:24:20 · 2394 阅读 · 6 评论 -
《设计模式》学习笔记——设计模式怎样解决设计问题
1.1 设计模式怎样解决设计问题1.1.1 寻找合适的对象面向对象设计最困难的部分是将系统分解为对象的集合。 设计的许多对象来源于现实世界的分析模型,这里和领域驱动设计有点关联。分析所得到的类,很多事现实中并不存在的类。这是抽象的结果。设计中的抽象对于产生灵活的设计至关重要。就像我设计的一个流程调度模型。 1.1.2 决定对象的粒度记笔记可以让我达到沉流的状态。原创 2010-03-03 20:29:00 · 2030 阅读 · 0 评论 -
《设计模式》学习笔记——ABSTRACT FACTORY 抽象工厂
1.1 ABSTRACT FACTORY 抽象工厂1、 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。 2、 动机 “客户仅与抽象定义的接口交互,而不使用特定的具体类的接口。” 这里的主要的思想是封装对象的创建的过程。客户端可以不需要知道具体要创建那些对象,而只需要知道创建某一系列的对象所用到的“工厂对象”即可。 3、 适原创 2010-03-03 20:32:00 · 1746 阅读 · 0 评论 -
深入学习C语言知识点checklist——测试你掌握C的程度
这篇文章是DS计划中c方向项目知识点的详细计划。原文:读S计划- C方向项目详细计划如果要加入此计划:1、方式1:加入QQ群:93684322。2、方式2:加入CSDN群组:DS计划。 知识点划分此项目的目的是深入的对c语言的特性进行学习,其中很多是初学者不知道,原创 2009-10-28 13:06:00 · 3769 阅读 · 2 评论 -
在一种语言上编程和深入一种语言去编程的区别
今天在论坛看到一个帖子:“不错,我一开始就是从C语言过来的,如果有电子方面的基础的话,我就想搞硬件开发了,现在搞C#,有点像“拿来主义”,基本不知道其所以然,还是写C++ 的时候心最静,其实,我现在用“类”,就是把一些功能相似的函数放在一起搞成一个类,然后使用,还不如C的函数来的直接,一开始写程序的时候就接收的是面向过程的思维,面向对象细节的实现也是过程的 眼下这个项目快做完了,C,MFC,C原创 2009-10-25 09:16:00 · 3275 阅读 · 3 评论 -
【转】淘宝开放平台开发指南之架构组件体系介绍
原文:http://news.csdn.net/a/20090929/213960.html <!--show_ads_zone(13);--> <!----> TOP是淘宝开放平台的英文缩写,同时也有顶级优质的英文含义。TOP的整个架构体系是组件化体系架构,可以是很少的几个基础组件构成的Skeleton,也转载 2009-10-08 21:37:00 · 3135 阅读 · 1 评论 -
简单的搭建一个高并发低时延系统
首先声明一点:这里的“高并发”是相对的,相对于硬件而言,而不是绝对的高并发。后者需要分布式来实现,这里不做讨论。本文关注的是单机的高并发。最近在做一个语音通信系统,要求在线用户2W,并发1K路通话。硬件是两台服务器,酷睿多核,4G内存,千兆网卡(我用过的最好的硬件,负担这些应该问题不大)。系统的另一个指标是呼叫时延和语音时延。这是这个系统的关键。最终我们的系统拿到用户现场测试的时候,效果可能有点太原创 2012-05-31 22:14:54 · 12720 阅读 · 13 评论