
软件设计
文章平均质量分 96
圆月弯刀丶
重剑无锋 大巧不工
展开
-
Lisp的本质
Lisp的本质(The Nature of Lisp) 作者 Slava Akhmechet 译者 Alec Jang 出处: http://www.defmacro.org/ramblings/lisp.html简介最初在web的某些角落偶然看到有人赞美Lisp时, 我那时已经是一个颇有经验的程序员。在我的履历上, 掌握的语言范围相当广泛, 象C++,...转载 2020-06-22 16:39:39 · 3201 阅读 · 0 评论 -
什么是元编程
作者:哈哈镜像链接:https://www.zhihu.com/question/23856985/answer/962102702来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。元编程就是多了个元,就是元数据,即除了代码之外的数据,这些数据会影响到程序的行为,java的反射,osgi,spring等技术无一不是这种编程技术的践行者,而抛弃语言本身可以按照以下的例子来理解元编程.如果理解这个过程那么我相信你应该对元编程就有了比较深入的理解.在这之前我们大概讲编.转载 2020-06-22 16:14:20 · 1111 阅读 · 0 评论 -
数据驱动编程
“数据的表现形式是编程的根本”“更普遍的是,战略上突破常来自数据或表的重新表达――这是程序的核心所在。如果提供了程序流程图,而没有表数据,我仍然会很迷惑。而给我看表数据,往往就不再需要流程图,程序结构是非常清晰的。”“由于缺乏空间而绞尽脑汁的编程人员,常常能通过从自己的代码中挣脱出来,回顾、分析实际情况,仔细考虑程序的数据,最终获得非常好的结果。实际上,数据的表现形式是编程的根本。”...转载 2019-12-23 20:03:03 · 1185 阅读 · 0 评论 -
什么是数据驱动编程
前言:最近在学习《Unix编程艺术》。以前粗略的翻过,以为是介绍unix工具的。现在认真的看了下,原来是介绍设计原则的。它的核心就是第一章介绍的unix的哲学以及17个设计原则,而后面的内容就是围绕它来展开的。以前说过,要学习适合自己的资料,而判断是否适合的一个方法就是看你是否能够读得下去。我对这本书有一种相见恨晚的感觉。推荐有4~6年工作经验的朋友可以读一下。正题:作者在介绍Unix...转载 2019-12-23 20:01:50 · 248 阅读 · 0 评论 -
编程思想、哲学、道与术
一切的起源:问题及问题的求解:编程是为了解决问题,而解决问题可以有多种视角和思路;世界观与方法论:马克思:世界是物质的,物质是运动的;运动着的物质是普遍联系和永恒发展的;编程思想与世界观: 我们知道,哲学领域中,最根本的对立是唯物主义和唯心主义的对立,而附属其下,又有许多对立,如形而上学和辩证法的对立、可知论和不可知论的对立等等。这些对立形成了哲学的基本体...转载 2019-12-04 21:13:34 · 1133 阅读 · 1 评论 -
公司绝不会告诉你的10大秘密
1.入职时的工资高低不重要,只要你努力工作你会得到相应待遇的 我估计几乎找过工作的人都听过这句话,当我们确定被聘用跟公司谈工资时,他们都会说“如果以后你业绩突出、努力工作,你的报酬也会相应增加的”,特别是当第一次找工作的时候大多数人会相信这些话,但是千万~~别相信。 刚入职时,你的工资就是你的全部(当然有一些岗位,比如销售或弹性工资的岗位除外),而且你入职以后大部分待遇转载 2015-04-23 17:07:08 · 596 阅读 · 0 评论 -
面向接口编程的好处分析
洞悉编程思想是我们学习语言过程中的必由之路,但注意对于编程思想的理解一定要建立在大量的代码实现经验上,不然只是在口头空谈编程思想而不去编程,根本无法深入理解思想的核心。面向对象思想的核心之一,就是模拟真实世界,把真实世界中的事物抽象成类,整个程序靠各个类的实例互相通信、互相协作完成系统功能,这非常符合真实世界的运行状况,也是面向对象思想的精髓。例如:接口是一组规则的集合,它规定了实现本接口...转载 2018-10-19 10:29:36 · 936 阅读 · 0 评论 -
面向接口编程详解(一)——思想基础
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到“面向接口编程”这个短语,那么它是什么意思?有什么思想内涵?和面向对象编程是什么关系?本文将一一解答这些疑问。1.面向接口编程和面向对象编程是什么关系首先,面向接口编程和面向对象编程并不是平级...转载 2018-10-19 10:33:47 · 450 阅读 · 1 评论 -
面向接口编程详解(二)——编程实例
通过上一篇文章的讨论,我想各位朋友对“面接接口编程”有了一个大致的了解。那么在这一篇里,我们用一个例子,让各位对这个重要的编程思想有个直观的印象。为充分考虑到初学者,所以这个例子非常简单,望各位高手见谅。问题的提出 定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。上下文(环境):已知要实现U盘、MP3播放器、移动硬盘三种移动存储...转载 2018-10-19 10:34:36 · 707 阅读 · 0 评论 -
面向接口编程详解(三)——模式研究
通过前面两篇,我想各位朋友对“面向接口编程”的思想有了一定认识,并通过第二篇的例子,获得了一定的直观印象。但是,第二篇中的例子旨在展示面向接口编程的实现方法,比较简单,不能体现出面向接口编程的优势和这种思想的内涵。那么,这一篇作为本系列的终结篇,将通过分析几个比较有深度的模式或架构,解析隐藏其背后的面向接口思想。这篇我将要分析的分别是MVC模式和.NET平台的分层架构。这篇的内容可能会比较抽象...转载 2018-10-19 10:35:35 · 185 阅读 · 0 评论 -
浅谈我对DDD领域驱动设计的理解
转自 https://www.cnblogs.com/netfocus/p/5548025.html这哥对这个问题解释得非常透彻,借此自己也学习一下。 从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决。比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品。所以,自然而然就想...转载 2018-12-17 11:30:22 · 292 阅读 · 0 评论 -
软件设计之状态机
============================================================================原创作品,允许转载。转载时请务必以超链接形式标明原始出处、以及本声明。请注明转自:http://yunjianfei.iteye.com/blog/=============================================...转载 2019-02-27 17:15:59 · 642 阅读 · 0 评论 -
浅谈多进程多线程的选择
在看thinking in java 的 并发 章节时,里面有这样一句话:实现并发的最简单的方式就是多进程,但没有进一步的解释说明,然后后面都在讲多线程编程,当时就有疑惑,那到底多进程和多线程该如何选择,网上找答案时,发现这篇文章总结的比较到位,遂转来分享学习。完整的原文包括一些简单的数据测试,具体可以看原博客。---------------------------------------...转载 2019-03-09 11:51:09 · 302 阅读 · 0 评论 -
深入理解MVC
MVC无人不知,可很多程序员对MVC的概念的理解似乎有误,换言之他们一直在错用MVC,尽管即使如此软件也能被写出来,然而软件内部代码的组织方式却是不科学的,这会影响到软件的可维护性、可移植性,代码的可重用性。 MVC即Model、View、Controller即模型、视图、控制器。我在和同行讨论技术,阅读别人的代码时发现,很多程序员倾向于将软件的业务逻辑放在Controller里...转载 2018-08-07 15:53:53 · 347 阅读 · 0 评论 -
资深技术专家总结:架构师要看懂这几本书,还要懂这一套学习方法!
1、大型网站技术架构:核心原理与案例分析本书通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计案例,为读者呈现一幅包括技术选型、架构设计、性能优化、Web安全、系统发布、运维监控等在内的大型网站开发全景视图。本书作者李智慧,曾在阿里巴巴担任技术专家,参与阿里巴巴基础技术平台开发和架构设计。2、分布式服务框架原...转载 2018-07-17 16:38:01 · 931 阅读 · 0 评论 -
程序员技术练级攻略
月光博客6月12日发表了《写给新手程序员的一封信》,翻译自《An open letter to those who want to start programming》,我的朋友(他在本站的id是Mailper)告诉我,他希望在酷壳上看到一篇更具操作性的文章。因为他也是喜欢编程和技术的家伙,于是,我让他把他的一些学习Python和Web编程的一些点滴总结一下。于是他给我发来了一些他的心得和经历转载 2013-11-12 17:23:16 · 1018 阅读 · 0 评论 -
vim使用教程(全)-最好的编辑器
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类转载 2013-11-22 14:28:07 · 1281 阅读 · 0 评论 -
对九个超级程序员的采访
原文:《Q&A With Nine Great Programmers》时间有限,我只能粗译,难免错误。这篇访谈源自2006年,最先发布在波兰程序员 Jaroslaw “sztywny” Rzeszótko (AKA “Stiff”) 的博客上。但是这篇博文现在找不到了。非常感谢他能授权我重新发布这个博文。在一个炎热无聊的下午,我突发奇想。我想通过电子邮件的方式对那些我非常感兴趣转载 2013-12-30 09:51:34 · 924 阅读 · 0 评论 -
软件开发面试题总结
基础篇:操作系统、计算机网络、设计模式一:操作系统1. 进程的有哪几种状态,状态转换图,及导致转换的事件。2. 进程与线程的区别。3. 进程通信的几种方式。4. 线程同步几种方式。(一定要会写生产者、消费者问题,完全消化理解)5. 线程的实现方式. (也就是用户线程与内核线程的区别)6. 用户态和核心态的区别。7. 用户栈和内核栈的区转载 2014-08-27 11:38:41 · 1586 阅读 · 0 评论 -
面向对象设计的5条基本原则
一.单一职责原则Single Responsibility Principle, 简称SRP。定义:There should never be more than one reason for a class to change.应该有且仅有一个原因引起类的变更。 职责的划分?单一的定义和级别?应该根据实际业务情况而定。关注变化点。实际使用时,类很难做到职责单一转载 2015-04-27 15:26:59 · 687 阅读 · 0 评论 -
面向接口设计和编程——(面向对象、面向接口、面向过程、面向实现)
引言--面向接口所处的设计模式中的位置。其实,我认为Java/C#比C++高级的其中一个原因是,它对面向接口编程的支持。不要误解,并不是说C++不支持面向接口编程,而是说C++的语法中没有这种天然的机制。面向对象之于面向过程,面向接口之于面向实现。但基本上,面向接口和面向实现都基于面向对象的模式,也就是说面向接口并不能称为比面向对象的更高的一种编程模式。而是在面向对象中大的背景下的转载 2015-04-28 17:34:52 · 2622 阅读 · 0 评论 -
面向接口编程详解
问题的提出 定义:现在我们要开发一个应用,模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。上下文(环境):已知要实现U盘、MP3播放器、移动硬盘三种移动存储设备,要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的移动存储设备,所以计算机必须有扩展性,能与目前未知而以后可能会出现的存储设备进行数据交换。各个存储设备间读、写的实现方法不同,U转载 2015-04-28 17:43:00 · 621 阅读 · 0 评论 -
设计模式大全
Longronglin之设计模式:Christopher Alexander说过:“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。模式描述为:在一定环境中解决某一问题的方案,包括三个基本元素--问题,解决方案和环境。阅读类图和对象图请先学习UML创建模式 结构模式 行为模式创建模式:对类的转载 2015-05-04 17:11:55 · 707 阅读 · 0 评论 -
一位软件工程师的6年总结
一位软件工程师的6年总结 作者:成晓旭 (声明:欢迎转载,请保证文章的完整性) “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程师们有所帮助,早日实现自己的人生目标。本文主要是关于软件开发人员如何提高自己的软件专业技术方面的具体建议,前面几转载 2013-03-29 15:08:36 · 651 阅读 · 0 评论 -
软件架构师的特点
下面是电气及电子工程师协会给“构架师”做的定义:构架师是负责系统构架的人、团队或者组织。作为项目的技术主管,构架师的技术需要非常的广泛,这比技术深度更加重要(当然构架师在特定的领域需要一定的技术深度)。软件构架师是技术主管首先,软件构架师是技术主管,这意味着除了他要有技术上的技能外,还要有很好的领导才能。构架师的领导能力在团队中和项目质量控制中起着十分重要的作用。在团队中,转载 2013-02-27 11:30:54 · 548 阅读 · 0 评论 -
程序员向架构师转型之路
课程简介具备若干年开发经验的普通开发人员往往面临个人发展的瓶颈,即如何从普通开发人员转型成高层次的系统架构师和技术管理人员。想成为一名架构师,应当具备全面的知识体系,需要进行系统的学习和实践,很多开发人员有往架构师转型的强烈意愿,但苦于找不到好的方法和路径。此达人课提供架构师所需的各方面技能和相应的学习方法,以及架构师所需掌握的系统工程方法论和软能力,旨在为广大开发人员提供一套精简但又全面...转载 2018-07-17 15:52:50 · 2792 阅读 · 0 评论 -
对于前后端分离技术的理解和实现
前端静态化前端有且仅有静态内容,再明确些,只有HTML/CSS/JS. 其内容来自于完全静态的资源而不需要任何后台技术进行动态化组装.前端内容的运行环境和引擎完全基于浏览器本身.后端数据化后端可以用任何语言,技术和平台实现,但它们必须遵循一个原则:只提供数据,不提供任何和界面表现有关的内容.换言之,他们提供的数据可以用于任何其他客户端(如本地化程序,移动端程序).平转载 2017-10-31 17:29:33 · 8721 阅读 · 0 评论 -
无状态服务(stateless service)
一、定义 无状态服务(stateless service)对单次请求的处理,不依赖其他请求,也就是说,处理一次请求所需的全部信息,要么都包含在这个请求里,要么可以从外部获取到(比如说数据库),服务器本身不存储任何信息 有状态服务(stateful service)则相反,它会在自身保存一些数据,先后的请求是有关联的 二、优劣 有状态服务常常用于实现事务(并不是唯一办转载 2017-10-23 18:36:42 · 607 阅读 · 0 评论 -
各种编码UNICODE、UTF-8、ANSI、ASCII、GB2312、GBK详解
GBK,ISO-8859-1,GB2312的本质区别编码有几种 ,计算机最初是在美国等国家发明的 所以表示字符只有简单的几个字母只要对字母进行编码就好 我们标准码 iso-8859-1 这就是一个标准但是后来计算机普及了 于是就中国要使用计算机了 但是机器不认得中文,于是就有了国际码。 gbk gb2312都是这类。两个其实一个,一个是标准(发布的代号),一个是简称。后来多了个阿拉转载 2016-11-07 10:25:10 · 5750 阅读 · 0 评论 -
案例分析:基于消息的分布式架构
美国计算机科学家,LaTex的作者Leslie Lamport说:“分布式系统就是这样一个系统,系统中一个你甚至都不知道的计算机出了故障,却可能导致你自己的计算机不可用。”一语道破了开发分布式系统的玄机,那就是它的复杂与不可控。所以Martin Fowler强调:分布式调用的第一原则就是不要分布式。这句话看似颇具哲理,然而就企业应用系统而言,只要整个系统在不停地演化,并有多个子系统共同存在时,这条转载 2017-10-10 09:22:08 · 632 阅读 · 0 评论 -
序列化和反序列化浅析
序列化和反序列化对于现代的程序员来说是一个既熟悉又陌生的概念。说熟悉是因为几乎每个程序员在工作中都直接或间接的使用过它,说陌生是因为大多数程序员对序列化和反序列化的认识仅仅停留在比较一下各种不同实现的序列化的性能上面,而很少有程序员对序列化和反序列化的设计和实现有深入的研究。本文将从序列化和反序列化的设计和实现的入手,来简单讲解一下序列化和反序列化。其中包括以下几个方面:序列化和反转载 2017-10-18 17:11:11 · 658 阅读 · 0 评论 -
每个程序员的都应该了解的字符编码
作者:科言君链接:https://www.zhihu.com/question/20152853/answer/95576659来源:知乎著作权归作者所有,转载请联系作者获得授权。在开发过程中,字符编码始终是程序猿和程序媛们绕不开的一个话题。这里针对题主的问题和@杨森的建议,简要整理下有关字符编码的知识,供列位看官茶余饭后消遣:)本回答尽量直观地介绍相关概念转载 2016-11-08 18:01:15 · 5367 阅读 · 1 评论 -
禅修程序员十诫
查看英文原文:The 10 rules of a Zen programmer 早晨,外面下着雨,我发觉自己正坐在办公桌上琢磨有关高效率工作(efficient working)的问题。在我成为自由职业者之前的那些日子,尽管做了许多工作,然而回首往昔,不过是一片狼藉罢了。 回想2006年我开始禅修之际,当时有好一阵子,这种念头清晰地浮现在我的脑海里:几百年前,老禅师就已知晓转载 2013-01-23 15:47:37 · 651 阅读 · 0 评论 -
程序员保值的五个关键点
在国内,很多人说程序员是吃青春饭的,一开始说过了30岁就得转行,后来又有人35岁是一道坎……看起来好像程序员真的和风尘女子一样,注定有朝一日会年老色衰不再受人青睐。No!我要说,不是这样的!所有的道路都通向天堂只是要度过路上的痛苦时光那一天我正走在路上两边的荒草,比人还高——海子,《月全食》真的程序员,敢于直面惨淡的人生和淋漓的鲜血,一定能够在荒草满布的岁月荒原转载 2015-08-31 15:17:18 · 574 阅读 · 0 评论