自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

woshibendangao的专栏

不积跬步,无以至千里!

  • 博客(275)
  • 资源 (3)
  • 收藏
  • 关注

原创 关于本博客...

本人属菜鸟一枚,但不会放弃前进的脚步。受学长的影响,渐渐地也养成了写笔记的习惯。临近毕业之际,也算是对自己大学内所学的知识的一次总结和回顾,以及查漏补缺和加深理解和记忆,这样在准备面试以及巩固知识的时候能有一个完整的索引。所以最近更新的频率会比较高,这就是更新笔记的初衷吧。本人算是有轻微的强迫症吧,呵呵,喜欢追求完美,所以无论是转载的还是原创的,我都会用自己喜欢和看着舒服的格式来整

2013-12-19 17:09:19 861

原创 软件架构系列感想(六)

1、代码不会讲述完整的故事。编写好的代码很重要,重构迫使我们考虑让方法变得更小、更可复用和自文档化,每个人都应该追求易于阅读、理解和维护的好代码。了解系统的设计意图,可以通过代码库如何被拆分为子项目、目录、包、命名空间等对整体架构做出一些判断,也可以根据对这个项目有限的了解、业务领域、你对团队如何构建软件的期望以及你对所用技术的知识,做出自己的假设。(1)软件系统如何融入已有的系统形态(2)为什么...

2018-04-04 17:03:33 316

原创 软件架构系列感想(五)

1、通用的抽象集合。可以将软件系统简单的理解成由多个容器构成,容器又由多个组件构成,组件由一个或多个类实现。类(在一个面向对象系统里,类是最小结构单元)组件(组件可以想象成一个或多个类组成的逻辑群组,通常由多个类在更高层次的约束下组合而成)容器(指一个在其内部可以执行组件或驻留数据的东西)系统(系统是最高的抽象层次,代表了能够提供价值的东西)2、软件的静态视图。语境(设定场景的高层次图,包括关键的...

2018-04-04 14:59:08 294

原创 软件架构系列感想(四)

1、技术约束。时间和预算是大多数软件开发者都熟悉的约束,还有一些在大型组织里经常碰到的一些技术相关的约束:(1)批准的技术清单(目的是限制组织必须支持,运行,维护和购买许可证的技术)(2)现有系统的互操作性(有时别的系统需要和你构建的系统整合,这时组织性的约束规定了你可以用于整合的协议和技术)(3)目标部署平台(包括嵌入式设备、windows或Linux服务器的可用性,以及云)(4)技术成熟度(有...

2018-04-04 13:05:51 279

原创 软件架构系列感想(三)

1、未来的架构师在哪里?我们可能花了很长时间谈论编写代码、自动化测试、自动化部署、工具、各种技术,以及所有相关的流程,而可用的软件是关键。多想想这些问题:(1)你上次写代码是什么时候(2)你上次重构是什么时候(3)你上次测试你的代码是什么时候(4)你上次设计东西是什么时候(5)你上次从零开始设计一个软件系统是什么时候(6)你上次从零开始设计一个会由一个团队来实现的软件系统是什么时候2、有些人过于渴...

2018-04-04 12:10:06 299

原创 软件架构系列感想(二)

3、软件架构师是什么?应用程序架构的关注点是应用程序,通常包括将应用程序解构为类和组件,确保设计模式的正确应用,构建和使用框架等等。本质上,应用程序架构谈论的是软件设计的低级别切面,通常只考虑单一的技术栈。结构单元主要以软件为基础,包括编程语言和结构、类库、框架、api等。它由类、组件、函数、模块、设计模式等加以描述。应用程序架构着重考虑软件和代码组织。大多数软件系统实际上是由横跨不同层次和技术的...

2018-03-25 11:16:44 579 1

原创 软件架构系列感想(一)

1、什么是架构?架构是一种能力,架构角色则是要求你在具体事物中行使某些行为,而架构师则是用来标识这些能力与行为的一个职务。对于不同的人来说,可能意味着什么是不一样的。模块、连接、依赖和接口;大局观;改变成本很高的事情;难以改变的事情;更加兼顾全局的设计;接口而非实现;审美(比如艺术般的整洁代码);概念模型;满足非功能需求/质量属性;每件事情都有架构;沟通能力(抽象、语言、词汇);计划;一定程度的严...

2018-03-25 10:57:45 990 1

原创 《软件工程》之开发访谈

《立项阶段》1、立项建议——产品构思提交给总工程师,撰写立项建议书。2、可行性分析——制定调研计划,生成立项可行性分析报告。3、立项评审——形成立项评审记录表。4、项目筹备——任命项目经理、同时定义QA、CCB等角色。《计划阶段》1、客户需求——由项目经理和开发主管来参与客户需求开发,形成用户需求访谈录,编写用户需求说明书,项目经理组织组织评审。2、项目估计——

2017-03-21 08:36:39 2597

原创 《软件工程》笔记

——软件工程是一门研究应用工程化方法构建和维护有效的、实用的和高质量的软件的学科。工程包括了管理、过程和技术三个方面,过程指软件的开发、维护过程及管理过程。涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等。目标:达到要求的软件功能。取得较好的软件性能。付出较低的开发成本。开发的软件易于移植。开发的软件易于维护,需要较低的维护费用。能按时完成开发

2017-03-17 09:08:19 1193

原创 程序设计的50条感想

1、敏捷开发——在一个高度协作的环境中,不断地使用反馈进行自我调整和完善2、阅读代码的频率越高越好3、使用单元测试4、迭代和增量式的学习5、跟踪技术变化——你不需要精通所有技术,但需要清楚知道行业的方向,从而规划你的项目和职业生涯6、CRCC即类—职责—协作—的设计方法7、不要在前期做大量的设计8、不需要开发你能下载到的东西9、防止提交破坏系统的代码——(1)在本地

2017-03-16 10:05:10 1075

原创 《软件调试》笔记

一、插装——开发人员编写的额外代码,来提高程序的可观察性和可控制性。二、发现bug的机会:(1)可调试的源代码(2)插装(3)宏定义(4)编译器标志(5)静态检查器(6)选择的库(7)链接器选项(8)代码插装工具(9)测试用例/输入数据(10)调试器:源代码、剖析、内存读取、操作系统调用跟踪器(如truss和strace)三、用户态调试器——查看调试目标状态

2017-03-16 09:04:19 1434

原创 代码大全(9)之软件测试及调试

单元测试要点:对每个需求进行测试,以便确保需求得到实现对和设计有关程序进行测试以确保设计得到了实现在详细测试的基础上对需求和设计测试增加基本测试不完全测试善于结构的测试数据流测试(数据的状态:已定义数据、已使用数据、已无效的数据)测试用例:每个子程序的要求是否有自己的测试用例子程序结构的每个部分是否都有自己的测试用例程序中每一行代码都是否至少

2017-03-14 15:25:03 2271

原创 代码大全(8)之软件质量

随项目增大而工作量增大的活动:计划管理交流需求开发系统功能设计接口设计和描述总体结构综合错误消除系统测试文档生成配置管理一般:你的软件配置管理计划是否用于帮助程序员,并能将额外开销减至最少你使用SCM手段能否避免对项目失控你所在组是否有修改请求,请示控制可以是非正式方式或正式方式你是否能比较正确地估计每次修改的影响

2017-03-14 15:20:56 629

原创 代码大全(7)之结构设计

使用抽象数据类型优点(ADT):可以隐藏实现细节把改动的影响限制在局部更容易改进性能减少修改时犯错误的可能性使程序成为自说明的避免了在程序中四处传递数据的麻烦准则:把典型的计算机专业数据结构构建为抽象数据类型把常见的目标如文件等处理为抽象数据类型即使是简单的问题也应该考虑使用抽象数据类型可以提供一对互补的操作应相对ADT所存储的介质独立地引用

2017-03-14 15:17:46 1368

原创 代码大全(6)之数据类型

自建数据类型的准则:1、建立具有面向功能名称的类型2、要避免使用含有已定义变量类型的名称3、避免使用已定义类型4、不要对已定义类型重新定义5、定义替换类型以增强移植性6、使用其他类型来建立新类型如何避免初始化错误:1、检查输入参数的有效性2、在使用变量的位置附近对其进行初始化3、要特别注意计数器和累加器4、查找需要重新进行初始化的地方5、对命

2017-03-14 09:44:31 1178

原创 代码大全(5)之面向对象设计

设计的层次:1、划分成子系统2、划分成模块3、划分成子程序4、子程序内部的设计结构化设计的组成:1、系统组织。系统被设计成几个黑盒子,明确定义的子程序和模块、接口的实现细节对其他子程序来说都是隐含的2、开发设计的策略3、评估设计准则4、关于问题的明确说明,是解决问题的指导原则5、表达设计的图形和语言工具,包括PDL和结构图面向对象的关键思

2017-03-14 09:39:03 550

原创 代码大全(4)之模块化

常见需要隐藏的信息:1、容易被改动的区域对硬件有依赖的地方;输入和输出;非标准语言特性;难以设计和实现的域;状态变量;数据规模限制;商业规则;2、复杂的数据对复杂数据的使用程度,主要取决于程序。3、复杂的逻辑隐含复杂的逻辑可言改善程序的可读性4、在程序语言层次上的操作一般在设计一组在程序语言语句层次上操作数据的子程序时,应该把对数据操作隐含在子程序组中,这样程序

2017-03-14 08:56:39 759

原创 代码大全(3)之子程序

子程序在结构设计中应该被指出:子程序将要包含的信息子程序的输入子程序的输出,包括受到影响的全局变量子程序将如何处理错误创建子程序:是否检查过先决条件已经满足了吗定义子程序将要解决的问题了吗结构设计是否足够清楚如何测试子程序是否从模块化水平或满足时间和内存需求角度考虑过效率问题是否查阅过参考书,寻找有帮助的算法必要时,是否在逻辑设计之前考虑了数据

2017-03-14 08:52:19 741

原创 代码大全(2)之先决条件

需求内容:系统的所有输入都定义了吗,包括他们的来源、精度、取值范围和频率?系统所有的输出都定义了吗,包括他们的目标、精度、取值范围、频率和格式?所有的报告格式都定义了吗,所有的硬件和软件接口都定义了吗所有的通信界面都定义了吗,包括握手、错误检查以及通信约定是否从用户的观点出发,定义了所有必要操作的反映时间是否定义了时间问题,如处理时间、数据传输率以及系统吞吐能力是否

2017-03-14 08:48:05 432

原创 代码大全(1)之软件创建

软件创建:问题定义需求分析实现计划总体设计详细设计创建及实现系统集成单元测试系统测试校正性的维护功能强化“编程”隐含着把已经设计好的程序机械的翻译成机器语言的过程,“创建”指的是创造性和决策性活动,包含一些特定的任务:验证基础工作已经完成,可以进行创建工作设计和编写子程序与模块创立数据类型并命名变量选择控制结构并组织语句块找出

2017-03-14 08:43:49 416

原创 __cdecl __fastcall与 __stdcall

__cdecl   __fastcall与   __stdcall   调用约定:   __cdecl   __fastcall与   __stdcall,三者都是调用约定(Calling   convention),它决定以下内容:1)函数参数的压栈顺序,2)由调用者还是被调用者把参数弹出栈,3)以及产生函数修饰名的方法。   1、__stdcall调用约定:函数的参数自右向

2015-01-13 17:23:18 421

原创 编程之美--双线程高效下载

一,题目        网络上下载数据,然后存储到硬盘上。简单做法是:先下载一块然后写到硬盘,然后再下载,再写到硬盘上。        缺点:需要先下载完才能写入硬盘,下载和写是串行操作。        改进:让两个线程并行进行,设置缓冲区,采用信号量的形式。                    下载线程,只要缓冲区有空余就下载,下载完成之后告诉写线程缓冲区有数据

2014-09-07 16:07:10 551

原创 编程之美--二分查找算法

二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以

2014-08-18 14:51:29 641

原创 编程之美--分层遍历二叉树

1.输出二叉树某一层结点(从左到右)把输出二叉树第K层结点转换成:分别输出"以该二叉树根结点的左右子树为根的两棵子树"中第K-1层结点。

2014-08-18 14:48:26 569

原创 编程之美--求二叉树中节点的最大距离

1234567891011121314151617181920212223242526272829303132333435

2014-08-18 14:41:01 620

原创 编程之美--最短摘要的生成

题目:抽象点说,就是在一个字符串中,找一些目标字符串,找到包含所有目标字符串的最小字符串。题目虽然叫做最短摘要生成,但和实际的搜索snippet的计算还是有比较大的差距的。解法:一种比较好的解法,策略还是使用双指针双指针对于很多算法设计很有价值,算法的思想是采用两个指针,开始两个指针都指向缓冲区的头部,尾指针向后扫描,直到头指针和尾指针中间包含了全部的关键字,那么头指针向后移动,直到包

2014-08-18 14:38:07 698

原创 编程之美--计算字符串的相似度

1、题目:给定任意两个字符串, 计算他们的相似度。

2014-08-18 14:28:18 649

原创 编程之美--从无头单链表中删除节点

1、题目:假设有一个没有头指针的单链表。一个指针指向此单链表中间的

2014-08-18 14:24:00 675

原创 编程之美--数组循环移位

1、题目:设计一个算法,

2014-08-18 14:15:25 948

原创 编程之美--求数组中最长递增子序列

1、题目:求一个一维数组(N个元素)中最长递增子序列的

2014-08-18 12:21:43 563

原创 编程之美--快速寻找满足条件的两个数

1、题目:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值。

2014-08-18 12:10:58 552

原创 编程之美--寻找数组中的最大值和最小值

1、题目:对于一个由N个整数组成的数组,

2014-08-18 11:52:12 1031

原创 编程之美--最大公约数问题

1、题目:求两个正整数的最大公约数,如果两个z整数

2014-08-18 11:35:17 588

原创 编程之美--寻找发帖水王

1、题目:找出数组中出现次数超过

2014-08-18 11:24:06 598

原创 编程之美--不要被阶乘吓倒

题目:给定一个整数N,那么N的阶乘N!

2014-08-18 11:11:30 557

原创 最小堆与最大堆

最大堆和最小堆是二叉堆的两种形式。最大堆:根结点的键值是所有堆结点键值中最大者,且每个结点的值都比其孩子的值大。最小堆:根结点的键值是所有堆结点键值中最小者,且每个结点的值都比其孩子的值小。最小堆和最大堆的增删改相似,其实就是把算法中的大于改为小于,把小于改为大于。生成最大堆:最大堆通常都是一棵完全二叉树,因此我们使用数组的形

2014-08-10 16:59:06 1062

原创 数据结构知识点整理

1、数据结构的定义?

2014-08-06 12:44:03 1199

原创 栈实现括号匹配

算法:检测表达式中的字符,若是左括号就入栈,如果是右括号就出栈一个元素与其配对,配对成功则继续访问下一个字符,否则退出。出现非括号字符则跳过。

2014-08-06 12:15:48 879

原创 算法知识点整理

1、算法的几个基本特征是什么?

2014-08-06 11:21:38 1715

原创 MFC知识点整理

1、MFC包含哪几类程序?

2014-08-06 10:50:00 1280

十五个经典算法

十五个经典的算法,思想很重要,分享给大家

2013-12-08

windows核心代码分析

windows开发核心代码分析,具有很好的参考价值,分享给大家!

2013-12-08

windows图形编程

很好的windows图形编程书,分享给大家。

2013-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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