想成为编程高手,那就耐心把以下文章看完!
一、为何要学编程?
每个人的动机不一样。大致有:
1、为了找个好工作;或为了有更好的机会和更好的发展。
2、看到别人超厉害,所以也想学。
3、实际工作中很多场合需要。
4、从小就立志做个程序员,做软件工程师。
5、振兴中国的软件事业。
。。。。。。
================================================
二、如何学编程?
1、多看好书。
差书误人子弟,不但浪费时间和精力,而且打击人的信心,差书使人很久都不会,让会让人怀疑自已的学习能力。
现在的书很多,但好书很少,特别是被大家公认很有价值的好书,更是少之又少。历经多年时间考验和市场风雨不残酷洗礼而仅存的巨著,更是极其稀少。中国历史上文学小说类书本多如牛毛,但仅存的巨著,也只不过<>等四本名著而已,编程方面也是如此。
2、多动手。
这一点很重要。而且特别重要。“纸上得来终觉浅,绝知此事要躬行。”陆游的千古名句说的就是这个道理,并且同样适合于编程方面。
================================================
三、用什么语言最好?
这主要取决于应用领域,每种语言都有自已的长处和不足。
1、汇编语言和C语言在单片机及工控领域用较多。另外C语言也是一种通用语言,是学C++/c#的起点。
2、C++系统编程等多个方面,最常用的编译器是VC。
3、C#/java网络编程方面新兴的。
4、VB通用。
5、还有Delphi等。。。。。。
个人建议:从未编过程的,就从学vb开始。有基础的可直接学c++/VC。
===================================================
四、有什么好书?
几年前,台湾著名技术作家侯捷先生曾经写过一篇影响很大的书评文章,叫做《MFC四大天王》。文章的意思是说在MFC的浩瀚书海中,只要认真研读和学习其中四本,就可以“五岳归来不看山”。侯先生虽以MFC为例,但是这个道理却同样适合于MFC之外的很多具体技术领域,这不能不说是一个有趣的统计现象。
通常在某一个具体细分的技术领域,会自然而然地出现3-5本顶级著作,它们彼此互相配合,形成一个完整的体系。对于学习者来说,只需要认真研读这几本书,就足以升堂入室。我乐于将这种现称为“四书五经现象”。对于读者来说,如果能够找到该领域中的“四书五经”,则无论在时间上还是金钱上都是最经济的选择。好书几本,胜过烂书几捆,这个体会想必大家都有。在此,帮助大家遴选各个技术领域里的“四书五经”。
编程的书可谓汗牛充栋,其中经典也是不泛其数,但绝大多数的过来人,都一致认为,要想很快的入门并尽快的投入到编程实践中,只要其中的四到五本也就够了,即只看经典中的经典,圣经级的书就可以了。
所谓活到老学到老,程序员是个终身学习的职业,要不断的看书,直到放弃编程的那一天。所以,您要读的好书也绝非以下推荐的这些书哟,呵呵。
一句话,由于我们的时间、精力、金钱都是有限的,如何以最小的代价换得最大的收获。
================================================================
五、经典好书分类热销榜
1、java
java编程语言(第三版)---java四大名著----James Gosling(java之父)
java编程思想(第2版)----java四大名著----Bruce Eckel
java编程思想(第3版)----java四大名著----------------Bruce Eckel
java 2核心技术 卷I:基础知识(原书第7版)---java四大名著-----Cay Horstmann
java 2核心技术 卷II:高级特性(原书第7版)----java四大名著-----Cay Horstmann
Effective java中文版------java四大名著--------Joshua Bloch
精通Struts:基于MVC的java Web设计与开发---孙卫琴
精通Hibernate:java对象持久化技术详解---孙卫琴
Tomcat与java Web开发技术详解------------孙卫琴
java与模式------------------------------阎宏
2、c#
C#程序设计-------Charles Petzold“windows编程泰山北斗”---C#语言“倚天屠龙双剑”
C# Primer中文版--------Stanley B.Lippman---C#语言“倚天屠龙双剑”
.NET框架程序设计(修订版)--------Jeffrey Richter“windows编程泰山北斗”---.NET平台四大天王
C# Windows程序设计----------Charles Petzold“windows编程泰山北斗”------.NET平台四大天王
.NET程序设计技术内幕-------------Jeff Prosise---.NET平台四大天王
.NET本质论--第1卷:公共语言运行库(中文版)--------Chris Sells---.NET平台四大天王
3、C++
C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父”
C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman
C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis
C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父”
深度探索C++对象模型---c++八大金刚----Stanley B.Lippman
Essential C++中文版---c++八大金刚---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers
More Effective C++中文版----c++八大金刚------Scott Meyers
C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel
C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel
C++程序设计--------------------------谭浩强
C++ 程序设计教程(第2版)--------------钱能
C++ Primer Plus(第五版)中文版---Stephen Prata
广博如四库全书The c++ programming language、c++ Primer
深奥如山重水复Inside the c++ object model
程序库大全The c++ standard libray
工程经验之积累Effective c++、More Effective c++、Exceptional c++
c++八大金刚:
1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者
2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。
3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。
4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。
5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。
6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。
7、The c++ standard libray---c++标准库的百科全书。
8、设计模式:可复用面向对象软件的基础------good!
4、c
C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父”
C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata
C程序设计(第三版)---------------------------谭浩强
C语言大全(第四版)---------------------------HERBERT SCHILDT
C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON
C语言参考手册(原书第5版)--------------------------Samuel P.Harbison
C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱与缺陷-----------------------------------Andrew Koenig
5、VB
Visual Basic .NET技术内幕-----VB编程三剑客-----------Francesco Balena“vb首席大师”
Windows程序设计-Visual Basic.NET语言描述--VB编程三剑客-----Charles Petzold“windows编程泰山北斗”---
.NET框架程序设计:Visual Basic.NET语言描述--VB编程三剑客--Jeffrey Richter“windows编程泰山北斗”---
Visual Basic 6编程技术大全------------------------Francesco Balena“vb首席大师”
Visual Basic.NET 从入门到精通-------------------------Petroutsos,E.
高级VISUAL BASIC编程-----------------------------------MATTHEW CURLAND
6、Delphi
Inside VCL(深入核心——VCL架构剖析)----------李维
Delphi 7高效数据库程序设计--------------李维
面向对象开发实践之路(Delphi版)----------李维
7、VC
Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---
Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---
Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---
深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷
MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise
Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski
深入解析MFC-------------MFC四大天王”-----------George Shepherd
Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski
8、vf
Visual Foxpro程序设计参考手册-------------------张洪举
专家门诊——Visual FoxPro开发答疑160问-------------------张洪举
Visual FoxPro 6.0/9.0解决方案与范例大全-------------------张洪举
Visual FoxPro软件开发模式与应用案例-------------------张洪举
9、黑客
应用密码学(协议算法与C源程序-----------Bruce Schneier
网络信息安全的真相-----------Bruce Schneier
黑客大曝光:网络安全机密与解决方案(第5版)--------STUART MCCLURE
软件加密技术内幕------------看雪学院
加密与解密——软件保护技术与完全解决方案------------看雪学院
加密与解密(第二版)--------段钢
10、汇编
Intel微处理器结构、编程与接口(第六版)---------Barry B. Brey
80*86、奔腾机汇编语言程序设计---------Barry B. Brey
Windows环境下32位汇编语言程序设计(第2版)-----------罗云彬
IBM-PC汇编语言程序设计(第2版) 本书是国内优秀教材--------沈美明 温冬婵
IBM PC汇编语言程序设计(第五版) 这本书籍是国外优秀教材-------PETER ABEL著,沈美明 温冬蝉译
11、驱动开发
Windows WDM设备驱动程序开发指南------------------------------------ Chris Cant
Windows 2000/XP WDM设备驱动程序开发(第2版)--------------------------武安河
WINDOWS 2000/XP WDM设备驱动程序开发-------------------------------- 武安河
12、网络
计算机网络第四版中文版----网络编程三剑客--------------Andrew S.Tanenbaum
TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客
UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客
用TCP/IP进行网际互联-----------Douglas E. Comer
高级TCP/IP编程-------------------Jon C. Snader
C++网络编程-----------------------Douglas Schmidt
UNIX环境高级编程(第2版)--------------------Richard Stevens
13、算法
计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑
算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑
离散数学及其应用----------Kenneth H.Rosen
具体数学—计算机科学基础--------Donald.E.Knuth
14、图形编程
Windows 图形编程----------------FENG YUAN --图形编程界的Charles Petzold之书
15、数据结构
数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林
数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社
16、软件工程
设计模式--可复用面向对象软件的基础
重构—改善既有代码的设计
17、操作系统
深入理解计算机系统(修订版)-------RANDAL E.BRYANT
18、Unix
UNIX 网络编程 卷I 套接字联网API(英文版 第三版
UNIX 编程艺术
UNIX环境高级编程(英文影印第2版-----UNIX编程“圣经
UNIX环境高级编程(英文影印版)(第2版)
UNIX环境高级编程(第2版)
UNIX环境高级编程(第2版)---UNIX编程“圣经
UNIX网络编程 第1卷:套接口API(第3版)
UNIX网络编程卷2:进程间通信(第2版)(英文影印版)
UNIX 网络编程(第二版)第2卷:进程间通信
UNIX编程环境
UNIX 网络编程 卷I 套接字联网API(英文版 第三版
UNIX系统编程
UNIX环境高级编程
UNIX 网络编程 卷I 套接字联网API(英文版 第三版)
UNIX网络编程 第1卷:套接口API(第3版)
UNIX 网络编程(第二版)第2卷:进程间通信
UNIX网络编程卷2:进程间通信(第2版)(英文影印版)
UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API
UNIX网络编程(卷1):连网的APLS:套接字与XTI(第二版)(英文影印版)
UNIX环境高级编程
Unix技术手册
19、Linux
Linux内核设计与实现
Linux内核完全注释
LINUX内核分析及编程
GNU/Linux 编程指南(第二版)
Linux设备驱动程序(第三版)
嵌入式设计及Linux驱动开发指南——基于ARM 9处理器
Linux设备驱动程序 第三版(英文影印版)
Linux内核设计与实现(第2版)
Linux内核设计与实现(英文影印版)(第2版)
linux技术手册
20、游戏编程
Windows游戏编程大师技巧(第二版
游戏之旅--我的编程感悟
OpenGL超级宝典:第三版
OpenGL编程指南(第四版)
java 游戏高级编程
J2ME手机游戏编程入门
游戏之旅——我的编程感悟
游戏开发中的人工智能(英文影印版)
3D游戏:卷2 动画与高级实时渲染技术
面向对象的游戏开发
java 游戏高级编程
3D游戏编程大师技巧
游戏编程精粹
面向对象的游戏开发
3D游戏 卷1:实时渲染与软件技术
3D游戏:卷2 动画与高级实时渲染技…
J2ME手机游戏编程入门
Direct3D游戏编程入门教程(第二版…
21、移动开发
Windows Mobile手机应用开发
SYMBIAN OS C++手机应用开发
Windows Mobile手机应用开发--傅曦 齐宇 徐骏
SYMBIAN OS C++手机应用开发 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣译
SYMBIAN OS C++手机应用开发---------------RICHARD HARRISON著,周良忠译
Windows CE.net内核定制及应用程序开发---------周毓林 宁杨 陆贵强 付林林
嵌入式系统Windows CE 开发技巧与实例--傅曦
Palm OS编程实践---绝版
22、单片机
单片机轻松入门----------------------------------周坚(平凡老师)
单片机典型模块设计实例导航-----------------------求是科技
例说8051----------------------------------------张义和 陈敌北
KEIL CX51 V7.0单片机高级语言编程与ΜVISION2应用实践-----徐爱钧
单片机应用程序设计技术(修订版)--------------------周航慈
8051单片机实践与应用-------------------------------吴金戎
MCS-51系列单片机实用接口技术---------------------李华
23、串并口通讯
Visual C++/Turbo C串口通信编程实践------------------龚建伟
VISUAL BASIC与RS-232串行通信控制(最新版)----------范逸之
24、电子
无线电识图与电路故障分析轻松入门(第二版) -------------------胡斌
无线电元器件检测与修理技术轻松入门(第二版) -------------------胡斌
图表细说电子技术识图-------------------胡斌
图表细说电子元器件-------------------胡斌
图表细说元器件及实用电路-------------------胡斌
================================================================
六、怎样成为一名程序员
通过以下4个阶段的训练, 没有任何编程基础人就可以成为一名普通的程序员。
第一阶段:掌握一种编程语言
学习内容:学习任意一种主流的编程语言。例如C++语言。
学习目标:熟练掌握一种语言的语法和基本的编程技巧。
学习时间:3个月左右
注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0 编译、执行,所以: C++ 不等于 Visual C++ 6.0
第二阶段:掌握一种编程工具
学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0或者C++ Builder 5.0。
学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。
学习时间:3个月左右
注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。
第三阶段:掌握“算法与数据结构”这门课程
学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。
学习目标:熟练掌握各种常用的算法与数据结构
学习时间:4个月左右
注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。
第四阶段:实现一个模拟的小型软件项目
学习内容:软件项目的开发过程
学习目标:掌握软件项目的基本开发过程和方法
学习时间:4个月左右
注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效,以它为基础再加以扩展,就可以做出实用的MIS软件来。此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》 《java数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》 《DELPHI数据库系统开发实例导航》《POWERBUILDER 8.0数据库系统开发实例导航》。
最后将完成的模拟软件刻成光盘,作为自己的作品去面试,以此踏上自己光辉的职业程序员之路!
怎样成为计算机高手
一 什么是架构 和架构相关的几个问题域架构需要解决的非业务问题域包括如下 A 系统目标 系统性能 稳定性 B 项目目标 开发成本 质量C 项目过程 需求的不确定性和开发过程的团队协作性不同的问题域 解决之道也不相同!而同一问题域的不同层次的要求 解决之道也不尽相同
什么是架构架构到底是啥 愚以为下面的这段英文描述的很清楚
That s like asking what is culture? Culture is the way you do things in a group of people Architecture is the way you do things in a sofare product You could argue by *** ogy then that architecture is to a sofare product as culture is to a team It is how that team has established and chosen its conventions
Which leads us inevitably to the question of goodness ? How do you know if an architecture is good? Consider an architecture that isn t built using a strong domain model and instead relies heavily on stored procedures That might be OK or it might not be OK You could have decided that part of your architecture is to use a really strong domain model and not use stored procedures right? So an architecture is some reasonable regularity about the structure of the system the way the team goes about building its sofare and how the sofare responds and adapts to its own environment How well the architecture responds and adapts and how well it goes through that construction process is a measure of whether that architecture is any good
The system architecture determines how hard or easy it is to implement a given feature Good architectures are those in which it is considered easy to create the features desired In that the way to judge whether an architecture is good is whether the architecture is good for the purposes to which it is applied
The definition of goodness has to be related to fitness for purpose Is this glove good? I don t know What are you doing with the glove? Are you throwing snowballs cooking barbeques or playing golf? There s a set of changes that are going to occur to a sofare system over time Probably the utilitarian or most useful definition of goodness is the answer to this question: are the changes that will keep this system successful in this domain in this product line relatively easy? If they are then it s probably a good architecture
架构的背后为了实现架构的目标涉及到以下三个方面 技术 组织和过程 这里举例说明 ) 技术对开发效率和运行性能 以及组织和过程的影响 案例A.映射的问题 公司产品的一个重要需求是根据客户输入 映射到PDF文件上 技术上整体实现需要四个步骤 在PDF文件上画好所有的数据域 通过读入一个XML映射文件 获得运行数据并生成FDF 合并FDF和PDF生成目标文件 后两步工作都由代码自动化了 因而实现的主要工作在于前两步
在第一个实现版本里 XML映射文件的DTD太简单 致使一个xml文件至少在 行左右 同时xml文件太verbose了 这样的结果直接导致运行系统在峰值时 由于XML消耗了大量内存 G的内存根本吃不消 同时对XML解析执行使用了CPU的大量时间 导致开发人员需要做大量的工作 开发效率降低了 通常需要尽一周才能完成一个xml文件 员工都不愿意做 也导致开发过程的漫长 开发部门对于BA部门和ST部门的要求反应变的缓慢
在第二个版本的实现中 重新实现了DTD 加入了大量的关键字同时也消除了verbose 大量的缩小了XML大小 从 多行减低到 多行 不仅减低了内存使用 提高执行效率 也提高了开发效率 基本只要一天就可以完成一个映射文件 同时对BA部门和ST部门的反应也快了
案例B 脚本的问题 产品在web层提供了脚本支持 出于方便开发的目的 但是没有对脚本的环境限制 脚本可以做系统程序的大部分工作 导致开发人员偷懒 在web层混入了大量业务逻辑代码 最终造成业务逻辑分散而不可控制
) 组织结构对技术 开发效率和应变能力的影响 案例A 部门的分工问题 开发部门根据不同的职责 分成A B和C等数个小组 大部分开发中互不相干 但也有时候 需要跨组的支持 比如B要实现某个需求 需要A在一定条件在记录一个或多个信息 因为每个开发人员各自负责一部分工作 导致跨组沟通的困难 同时由于整个开发部采取任务绩效 有时间压力 加上只是一个小的要求 于是在A人员的同意下 B人员直接在A代码中写入业务逻辑 每次都是这样的小改动 不断的发展后 代码开发变凌乱
案例B 开发的历史问题 当某个开发人员写下的代码 有是问题的 接手开发人员由于文档不全以及没有测试用例 不愿意承担变化的代价 选择小修小补 这个小修小补有可能和有问题的代码混杂 导致更大的代码
) 过程对开发效率和应变能力 以及组织的影响案例A 过程的问题 开发部门的上下游部门BA部门和ST部门的合作关系 ST部门的绩效考核 考核基于发现错误的数量 导致ST为了完成任务 提出一些非正常性要求 PM部门出于部门的方便通常提出一些实现难度比较大要求 开发部门本身又存在时间压力 导致一些需求的实现本应在低一层的代码中实现的 却在高层用蹩足的方式实现
案例B 帮助系统的问题 帮助系统一开始采用一个个单独分散的静态页面 出于性能的考虑和部门负责考虑 帮助系统不断改进中 过程缺乏组织性 文件的命名规则随意 存储位置随意 造成了管理的混乱 直接的后果是页面的入口混乱和各自引用关系混乱 在帮助系统的第二版 从静态页面转成动态页面 采取统一分类和命名规则 并统一了入口 同时采取分级管理引用关系 适度冗余 虽然减低了运行性能 但提高了开发效率和可维护性
二 架构的性能问题解决讨论性能问题——嗯 一个非常神圣而高深的问题的 从我刚刚开始工作的时候 至今依然是 然而我相信 一定存在一个基本的思路和方法 我以为解决性能问题的工作还是在于分解 通过分解来确定问题域
先介绍三个公式性能问题的公式: 总处理单量 = 总处理时间/ 单笔请求处理时间 * 总并发数这个公式另一个写法为:总处理时间 = 单笔请求处理时间 * 总处理单量 / 总并发数不同的写法代表不同个关注点 适合不同类型的业务类型 一般说前一种写法代表在线请求的 后一种写法代表后台batch
也有客户给明确要求系统要支持xxx并发 这个就需要了解客户的这个并发数是如何计算得来 需要通过分析客户的业务 而通常是根据总处理单量来确定客户实际的并发数
但无论如如何 四个变量中 总处理单量和总处理时间是先被确定的 换句话说需要关注是单笔请求处理时间和并发数 也就是降低单笔请求处理时间或者增加并发数
对于单笔请求处理时间 其公式为 单笔请求处理时间 = 数据计算时间 + 数据读写时间+其它技术导致时间消耗很显然降低单笔请求处理时间就需要降低三个因素消耗的时间 降低单笔请求处理时间第一原则是 只计算一次 缓存计算结果 降低数据读取时间 分三种 Global的 系统启动时加载 Long Time 可采用LRU方式cache Per operation 第一次访问加载 operation结束后丢弃 降低数据写入时间例如文件写入通过buffer一次flush 对于SQL采用batch提交(hibernate的做法)
改进计算时间 针对不同技术结构采用不同手段 让计算支持并发 提高性能 例如采用MapReduce的方式 改进算法 例如数据库中的SQL改进 减少不必要计算时间 减少其它技术原因导致的消耗如JVM的GC导致性能消耗等对于总并发数 其公式为 总并发数 = 单机服务器并发能力 * 总并发服务器数那么如何确定那些因素需要调整呢 在于两个方面的分解
业务层面业务层面只是指通过业务行为分析 把性能问题分解为不同的部分 每个部分面临性能压力现状和目标 最终确定需要优化的问题域
业务层面分解包括 个内容: 功能 内容 时间和区域 最重要的是前三个 以ebay为例 ebay对于前端功能划分划分为 多个功能 不同的服务器处理不同的功能
内容是指内容热点 比如对于search来说 就按体育 数码 音乐等划分 不同内容有不同热点数据 以及不同搜索关键匹配 时间 时间是一个非常重要的因素 在一些特点是时间段呢 性能的要求会非常高 比如下半夜的访问点击量和白天的就有不同 对于一些batch来说 月末或者年末处理的单量就有明显的提高 比如分红险的记息 平时每天只有 单 而年末会有 w单
地点划分 不太常见 不过也有助于分配计算资源 业务层面的分析不仅是确定问题所在 还是确定优化的策略 比如有一个batch计算 执行时间比较长 而通过业务分析 发现该计算只针对特定的业务 系统全部有效单量是 w单 而符合计算要求的只有 单 只要加上一个前置判断就可以免除无谓的计算 运行时间减少数个小时(大约 秒一单)
技术层面系统建立时技术结构 通常一个系统结构如下:接入网络 Web服务器 应用服务器 以及数据库服务器 在这样结构下 要小心的分析和验证系统性能的瓶颈 需要优化Web服务器 或者提高数据库并发能力等等 这部分网上的资料非常多
三 架构的开发成本以及品质问题解决讨论架构一个重大关注点在于控制开发成本 这点很重要 因为通常讲维护成本是开发成本的 倍 降低开发成本核心 在于提高效率 这也意味着提高了开发对需求的响应时间 而时间对公司来说是重要的
提高开发效率和品质的基本手段是分解——即充分的分离系统中不同的关注点 好处不用说了 可以并发的工作 每个人面对的问题都简单而容易操作 而与分解对应的集成 只有提供了好的集成能力 分解才成为现实 而只有分解了 才能清晰的提供业务更多适应性 分解和集成的手段分为编程语言和技术框架两个层面 所谓语言就是强框架 而框架就是弱语言
现代面向对象的语言提供如下能力 抽象和派生能力 以及接口隔离能力 实际提供两种分解和集成能力 把逻辑分解在两个层次中 而通过继承的方式把两个部分集成在一起 把逻辑的外观和实现分解在两个地方 而通过接口实现的方式把两部分集成在一起
另一种语言AspectJ或者C#语言 之后提供的特性 把流程逻辑 分解在不同的地方 而通过签名匹配 利用代码生成的方式来把几部分集成在一起
然而语言提供的集成能力 毕竟底层 而且有限 扩展起来也格外小心 因而技术框架提供另外的集成能力就格外重要 对象关联关系的分解和集成 如Spring提供容器管理能力 模块间关联关系的分解和集成 如OSGi ESB等 不同系统的类型分解和集成 如Spring利用动态代理提供的Exporter模式 流程逻辑的分解和集成 如Spring Web Flow以及jBPM 讨论完手段 现在要转身看看我们面临的问题域了 问题域可分解为两种类型 业务上和技术上 (又见分解 分而治之真是老祖宗传下的灵丹妙药啊)
业务上 问题域分解为 逻辑的纵向抽象层次 以及逻辑的横向模块分解和集成 技术上 问题域分解为 纵向的技术主题 以及横向的技术职责的分解和集成 所以通常而言 领域模型设计中 模块分解 抽象分层和职责分层都是重要手段 问题域为 流程 业务实体和计算(包括规则)
对象的抽象分解和集成 对象的依赖分解和集成(模块内和模块外) 流程的分解和集成(页面流 工作流以及计算流程) 进程边界 用户请求重定向 以及业务数据持久化等 B 通常语言做为架构的基础引入和更换是有巨大风险的 而通过提供强大的框架能力 框架尽可能多的完成技术问题 并通过元数据 模式以及约定降低业务和框架的耦合 避免因为框架升级带来不必要的成本
从技术手段上 提高开发效率的另外两个手段是代码生成和类库引用 但代码生成和类库引用 都只解决了逻辑的分解能力 没有提供集成能力 所以一般情况下需要提供框架集成 尤其代码生成需要在系统的最外层 避免集成带来的问题
lishixinzhi/Article/program/net/201311/15671看看这个,你就明白了,希望对你有帮助!
一、为何要学编程?
每个人的动机不一样。大致有:
1、为了找个好工作;或为了有更好的机会和更好的发展。
2、看到别人超厉害,所以也想学。
3、实际工作中很多场合需要。
4、从小就立志做个程序员,做软件工程师。
5、振兴中国的软件事业。
。。。。。。
================================================
二、如何学编程?
1、多看好书。
差书误人子弟,不但浪费时间和精力,而且打击人的信心,差书使人很久都不会,让会让人怀疑自已的学习能力。
现在的书很多,但好书很少,特别是被大家公认很有价值的好书,更是少之又少。历经多年时间考验和市场风雨不残酷洗礼而仅存的巨著,更是极其稀少。中国历史上文学小说类书本多如牛毛,但仅存的巨著,也只不过<<红楼梦>>等四本名著而已,编程方面也是如此。
2、多动手。
这一点很重要。而且特别重要。“纸上得来终觉浅,绝知此事要躬行。”陆游的千古名句说的就是这个道理,并且同样适合于编程方面。
================================================
三、用什么语言最好?
这主要取决于应用领域,每种语言都有自已的长处和不足。
1、汇编语言和C语言在单片机及工控领域用较多。另外C语言也是一种通用语言,是学C++/c#的起点。
2、C++系统编程等多个方面,最常用的编译器是VC。
3、C#/java网络编程方面新兴的。
4、VB通用。
5、还有Delphi等。。。。。。
个人建议:从未编过程的,就从学vb开始。有基础的可直接学c++/VC。
===================================================
四、有什么好书?
几年前,台湾著名技术作家侯捷先生曾经写过一篇影响很大的书评文章,叫做《MFC四大天王》。文章的意思是说在MFC的浩瀚书海中,只要认真研读和学习其中四本,就可以“五岳归来不看山”。侯先生虽以MFC为例,但是这个道理却同样适合于MFC之外的很多具体技术领域,这不能不说是一个有趣的统计现象。
通常在某一个具体细分的技术领域,会自然而然地出现3-5本顶级著作,它们彼此互相配合,形成一个完整的体系。对于学习者来说,只需要认真研读这几本书,就足以升堂入室。我乐于将这种现称为“四书五经现象”。对于读者来说,如果能够找到该领域中的“四书五经”,则无论在时间上还是金钱上都是最经济的选择。好书几本,胜过烂书几捆,这个体会想必大家都有。在此,帮助大家遴选各个技术领域里的“四书五经”。
编程的书可谓汗牛充栋,其中经典也是不泛其数,但绝大多数的过来人,都一致认为,要想很快的入门并尽快的投入到编程实践中,只要其中的四到五本也就够了,即只看经典中的经典,圣经级的书就可以了。
所谓活到老学到老,程序员是个终身学习的职业,要不断的看书,直到放弃编程的那一天。所以,您要读的好书也绝非以下推荐的这些书哟,呵呵。
一句话,由于我们的时间、精力、金钱都是有限的,如何以最小的代价换得最大的收获。
================================================================
五、经典好书分类热销榜
1、java
java编程语言(第三版)---java四大名著----James Gosling(java之父)
java编程思想(第2版)----java四大名著----Bruce Eckel
java编程思想(第3版)----java四大名著----------------Bruce Eckel
java 2核心技术 卷I:基础知识(原书第7版)---java四大名著-----Cay Horstmann
java 2核心技术 卷II:高级特性(原书第7版)----java四大名著-----Cay Horstmann
Effective java中文版------java四大名著--------Joshua Bloch
精通Struts:基于MVC的java Web设计与开发---孙卫琴
精通Hibernate:java对象持久化技术详解---孙卫琴
Tomcat与java Web开发技术详解------------孙卫琴
java与模式------------------------------阎宏
2、c#
C#程序设计-------Charles Petzold“windows编程泰山北斗”---C#语言“倚天屠龙双剑”
C# Primer中文版--------Stanley B.Lippman---C#语言“倚天屠龙双剑”
.NET框架程序设计(修订版)--------Jeffrey Richter“windows编程泰山北斗”---.NET平台四大天王
C# Windows程序设计----------Charles Petzold“windows编程泰山北斗”------.NET平台四大天王
.NET程序设计技术内幕-------------Jeff Prosise---.NET平台四大天王
.NET本质论--第1卷:公共语言运行库(中文版)--------Chris Sells---.NET平台四大天王
3、C++
C++程序设计语言(特别版)---c++八大金刚----Bjarne Stroustrup“C++之父”
C++ Primer (第3版)中文版----c++八大金刚---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金刚---Stanley B.Lippman
C++标准程序库—自修教程与参考手册--c++八大金刚--Nicolai M.Josuttis
C++语言的设计和演化-----c++八大金刚----Bjarne Stroustrup“C++之父”
深度探索C++对象模型---c++八大金刚----Stanley B.Lippman
Essential C++中文版---c++八大金刚---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金刚------Scott Meyers
More Effective C++中文版----c++八大金刚------Scott Meyers
C++编程思想(第2版) 第1卷:标准C++导引--------Bruce Eckel
C++编程思想(第2版)第2卷:实用编程技术 --------Bruce Eckel
C++程序设计--------------------------谭浩强
C++ 程序设计教程(第2版)--------------钱能
C++ Primer Plus(第五版)中文版---Stephen Prata
广博如四库全书The c++ programming language、c++ Primer
深奥如山重水复Inside the c++ object model
程序库大全The c++ standard libray
工程经验之积累Effective c++、More Effective c++、Exceptional c++
c++八大金刚:
1、Essentital c++---lippman---C++之父,旁枝暂略,主攻核心,轻薄短小,初学者
2、The c++ programming language----C++之父,技术权威,用词深峻,思想深远,c++百科全书代表,圣经。
3、c++ Primer----lippman---纵横书市十数年,c++最佳教本,c++百科全书代表。
4、Inside the c++ object model-----lippman----揭示c++底层,非常好,非常难。
5、Effective c++-----通过50个编程实例,展示专家经验,行文有趣,深处浅出。
6、More Effective c++----通过35个编程实例,展示专家经验,行文有趣,深处浅出。
7、The c++ standard libray---c++标准库的百科全书。
8、设计模式:可复用面向对象软件的基础------good!
4、c
C程序设计语言(第2版·新版)---C语言“倚天屠龙双剑”---Brian W.Kernighan“C语言之父”
C Primer Plus中文版(第五版)--------C语言“倚天屠龙双剑”---Stephen Prata
C程序设计(第三版)---------------------------谭浩强
C语言大全(第四版)---------------------------HERBERT SCHILDT
C语言接口与实现:创建可重用软件的技术-------------DAVID R.HANSON
C语言参考手册(原书第5版)--------------------------Samuel P.Harbison
C程序设计教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱与缺陷-----------------------------------Andrew Koenig
5、VB
Visual Basic .NET技术内幕-----VB编程三剑客-----------Francesco Balena“vb首席大师”
Windows程序设计-Visual Basic.NET语言描述--VB编程三剑客-----Charles Petzold“windows编程泰山北斗”---
.NET框架程序设计:Visual Basic.NET语言描述--VB编程三剑客--Jeffrey Richter“windows编程泰山北斗”---
Visual Basic 6编程技术大全------------------------Francesco Balena“vb首席大师”
Visual Basic.NET 从入门到精通-------------------------Petroutsos,E.
高级VISUAL BASIC编程-----------------------------------MATTHEW CURLAND
6、Delphi
Inside VCL(深入核心——VCL架构剖析)----------李维
Delphi 7高效数据库程序设计--------------李维
面向对象开发实践之路(Delphi版)----------李维
7、VC
Windows 程序设计(第5版)-----Charles Petzold“windows编程泰山北斗”---
Windows核心编程----------Jeffrey Richter“windows编程泰山北斗”---
Windows高级编程指南---------Jeffrey Richter“windows编程泰山北斗”---
深入浅出MFC(第二版)-----“MFC四大天王”-------侯捷
MFC Windows程序设计(第2版)---MFC四大天王”---------Jeff Prosise
Visual C++ 技术内幕(第4版)--MFC四大天王”--------David Kruglinski
深入解析MFC-------------MFC四大天王”-----------George Shepherd
Visual C++.NET 技术内幕(第6版)-MFC四大天王”------------David Kruglinski
8、vf
Visual Foxpro程序设计参考手册-------------------张洪举
专家门诊——Visual FoxPro开发答疑160问-------------------张洪举
Visual FoxPro 6.0/9.0解决方案与范例大全-------------------张洪举
Visual FoxPro软件开发模式与应用案例-------------------张洪举
9、黑客
应用密码学(协议算法与C源程序-----------Bruce Schneier
网络信息安全的真相-----------Bruce Schneier
黑客大曝光:网络安全机密与解决方案(第5版)--------STUART MCCLURE
软件加密技术内幕------------看雪学院
加密与解密——软件保护技术与完全解决方案------------看雪学院
加密与解密(第二版)--------段钢
10、汇编
Intel微处理器结构、编程与接口(第六版)---------Barry B. Brey
80*86、奔腾机汇编语言程序设计---------Barry B. Brey
Windows环境下32位汇编语言程序设计(第2版)-----------罗云彬
IBM-PC汇编语言程序设计(第2版) 本书是国内优秀教材--------沈美明 温冬婵
IBM PC汇编语言程序设计(第五版) 这本书籍是国外优秀教材-------PETER ABEL著,沈美明 温冬蝉译
11、驱动开发
Windows WDM设备驱动程序开发指南------------------------------------ Chris Cant
Windows 2000/XP WDM设备驱动程序开发(第2版)--------------------------武安河
WINDOWS 2000/XP WDM设备驱动程序开发-------------------------------- 武安河
12、网络
计算机网络第四版中文版----网络编程三剑客--------------Andrew S.Tanenbaum
TCP/IP详解3卷本--------------------Richard Stevens----网络编程三剑客
UNIX网络编程2卷本--------------------Richard Stevens----网络编程三剑客
用TCP/IP进行网际互联-----------Douglas E. Comer
高级TCP/IP编程-------------------Jon C. Snader
C++网络编程-----------------------Douglas Schmidt
UNIX环境高级编程(第2版)--------------------Richard Stevens
13、算法
计算机程序设计艺术-------Donald.E.Knuth----------算法“倚天屠龙”双剑
算法导论-----------------Thomas H. Cormen--------算法“倚天屠龙”双剑
离散数学及其应用----------Kenneth H.Rosen
具体数学—计算机科学基础--------Donald.E.Knuth
14、图形编程
Windows 图形编程----------------FENG YUAN --图形编程界的Charles Petzold之书
15、数据结构
数据结构 C++语言描述》58.00(Data Structures C++) William Ford,William Topp 刘卫东 沈官林
数据结构算法与应用-C++语言描述》49.00Sartej Sahni 汪诗林 孙晓东等机械工业出版社
16、软件工程
设计模式--可复用面向对象软件的基础
重构—改善既有代码的设计
17、操作系统
深入理解计算机系统(修订版)-------RANDAL E.BRYANT
18、Unix
UNIX 网络编程 卷I 套接字联网API(英文版 第三版
UNIX 编程艺术
UNIX环境高级编程(英文影印第2版-----UNIX编程“圣经
UNIX环境高级编程(英文影印版)(第2版)
UNIX环境高级编程(第2版)
UNIX环境高级编程(第2版)---UNIX编程“圣经
UNIX网络编程 第1卷:套接口API(第3版)
UNIX网络编程卷2:进程间通信(第2版)(英文影印版)
UNIX 网络编程(第二版)第2卷:进程间通信
UNIX编程环境
UNIX 网络编程 卷I 套接字联网API(英文版 第三版
UNIX系统编程
UNIX环境高级编程
UNIX 网络编程 卷I 套接字联网API(英文版 第三版)
UNIX网络编程 第1卷:套接口API(第3版)
UNIX 网络编程(第二版)第2卷:进程间通信
UNIX网络编程卷2:进程间通信(第2版)(英文影印版)
UNIX 网络编程(第2版)第1卷:套接口API和X/Open 传输接口API
UNIX网络编程(卷1):连网的APLS:套接字与XTI(第二版)(英文影印版)
UNIX环境高级编程
Unix技术手册
19、Linux
Linux内核设计与实现
Linux内核完全注释
LINUX内核分析及编程
GNU/Linux 编程指南(第二版)
Linux设备驱动程序(第三版)
嵌入式设计及Linux驱动开发指南——基于ARM 9处理器
Linux设备驱动程序 第三版(英文影印版)
Linux内核设计与实现(第2版)
Linux内核设计与实现(英文影印版)(第2版)
linux技术手册
20、游戏编程
Windows游戏编程大师技巧(第二版
游戏之旅--我的编程感悟
OpenGL超级宝典:第三版
OpenGL编程指南(第四版)
java 游戏高级编程
J2ME手机游戏编程入门
游戏之旅——我的编程感悟
游戏开发中的人工智能(英文影印版)
3D游戏:卷2 动画与高级实时渲染技术
面向对象的游戏开发
java 游戏高级编程
3D游戏编程大师技巧
游戏编程精粹
面向对象的游戏开发
3D游戏 卷1:实时渲染与软件技术
3D游戏:卷2 动画与高级实时渲染技…
J2ME手机游戏编程入门
Direct3D游戏编程入门教程(第二版…
21、移动开发
Windows Mobile手机应用开发
SYMBIAN OS C++手机应用开发
Windows Mobile手机应用开发--傅曦 齐宇 徐骏
SYMBIAN OS C++手机应用开发 (第2卷)------------------RICHARD HARRISON著,周良忠 王伯欣译
SYMBIAN OS C++手机应用开发---------------RICHARD HARRISON著,周良忠译
Windows CE.net内核定制及应用程序开发---------周毓林 宁杨 陆贵强 付林林
嵌入式系统Windows CE 开发技巧与实例--傅曦
Palm OS编程实践---绝版
22、单片机
单片机轻松入门----------------------------------周坚(平凡老师)
单片机典型模块设计实例导航-----------------------求是科技
例说8051----------------------------------------张义和 陈敌北
KEIL CX51 V7.0单片机高级语言编程与ΜVISION2应用实践-----徐爱钧
单片机应用程序设计技术(修订版)--------------------周航慈
8051单片机实践与应用-------------------------------吴金戎
MCS-51系列单片机实用接口技术---------------------李华
23、串并口通讯
Visual C++/Turbo C串口通信编程实践------------------龚建伟
VISUAL BASIC与RS-232串行通信控制(最新版)----------范逸之
24、电子
无线电识图与电路故障分析轻松入门(第二版) -------------------胡斌
无线电元器件检测与修理技术轻松入门(第二版) -------------------胡斌
图表细说电子技术识图-------------------胡斌
图表细说电子元器件-------------------胡斌
图表细说元器件及实用电路-------------------胡斌
================================================================
六、怎样成为一名程序员
通过以下4个阶段的训练, 没有任何编程基础人就可以成为一名普通的程序员。
第一阶段:掌握一种编程语言
学习内容:学习任意一种主流的编程语言。例如C++语言。
学习目标:熟练掌握一种语言的语法和基本的编程技巧。
学习时间:3个月左右
注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器在内的集成化、可视化的软件开发工具。C++源程序可以在Visual C++ 6.0里编写,也可以在记事本里编写,而同一个C++源程序可以用Visual C++ 6.0编译、执行,也可以用C++ Builder 5.0 编译、执行,所以: C++ 不等于 Visual C++ 6.0
第二阶段:掌握一种编程工具
学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的编程语言是C++,那么编程工具要选Visual C++ 6.0或者C++ Builder 5.0。
学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。
学习时间:3个月左右
注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。
第三阶段:掌握“算法与数据结构”这门课程
学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。
学习目标:熟练掌握各种常用的算法与数据结构
学习时间:4个月左右
注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。
第四阶段:实现一个模拟的小型软件项目
学习内容:软件项目的开发过程
学习目标:掌握软件项目的基本开发过程和方法
学习时间:4个月左右
注意事项:自己完成一个模拟的小型软件项目,强烈推荐做一个MIS(管理信息系统)软件,参考用书推荐“中小型信息管理系统开发实例系列丛书”,人民邮电出版社,它的例子详实有效,以它为基础再加以扩展,就可以做出实用的MIS软件来。此丛书包括多种开发工具,大家可以选择适合自己的:《VISUAL FOXPRO6.0 数据库系统开发实例导航》 《java数据库系统开发实例导航》 《VISUAL BASIC数据库系统开发实例导航》《VISUAL C++6.0数据库系统开发实例导航》 《ASP.NET数据库管理系统开发实例导航》 《DELPHI数据库系统开发实例导航》《POWERBUILDER 8.0数据库系统开发实例导航》。
最后将完成的模拟软件刻成光盘,作为自己的作品去面试,以此踏上自己光辉的职业程序员之路!
本文来自作者[水香]投稿,不代表溟宇号立场,如若转载,请注明出处:https://gumingyu.com/zlan/202508-14340.html
评论列表(3条)
我是溟宇号的签约作者“水香”
本文概览:想成为编程高手,那就耐心把以下文章看完!一、为何要学编程?每个人的动机不一样。大致有:1、为了找个好工作;或为了有更好的机会和更好的发展。 2、看到别人超厉害,所以也想学。 3...
文章不错《c语言是干嘛的》内容很有帮助