
软件设计
文章平均质量分 55
iw1210
这个作者很懒,什么都没留下…
展开
-
类与类之间的几种关系(继承、实现、依赖、关联、聚合、组合)
聚集(Aggregation)是一种特殊形式的关联。聚集表示类之间的关系是整体与部分的关系。一辆轿车包含四个车轮、一个方向盘、一个发动机和一个底盘,这是聚集的一个例子。在需求分析中,"包含"、"组成"、"分为……部分"等经常设计成聚集关系。聚集可以进一步划分成共享聚集(Shared Aggregation)和组成。例如,课题组包含许多成员,但是每个成员又可以是另一个课题组的成员,即部分可以参加多个转载 2014-06-02 10:49:56 · 19310 阅读 · 0 评论 -
C语言实现异常处理(使用 setjmp 和 longjmp 函数)
C语言实现异常处理(使用 setjmp 和 longjmp 函数)废话少说,直接贴上 MSDN 的实例代码,如果看不懂说明你水平不行 :) // crt_fpreset.c// This program uses signal to set up a// routine for handling floating-point errors.#include #inc原创 2015-03-19 17:35:00 · 738 阅读 · 0 评论 -
线程池
什么是线程池? 诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资源的转载 2015-04-03 17:34:46 · 546 阅读 · 0 评论 -
ACE的SOCKET通信:handle_input 函数的返回值不能随便写!
ACE的SOCKET通信:handle_input 函数的返回值不能随便写!如果用ACE做两个SOCKET客户端(Client),并且重载handle_input函数,返回数值3。运行发现先触发handle_input的那个Client对象一直接收服务器数据正常;另一个Client对象在服务器发送数据时也不会触发handle_input。如果把handle_input的返回值改为0后,两个原创 2015-04-21 11:26:07 · 2973 阅读 · 0 评论 -
【 程序运行时出现莫名奇妙的异常现象的原因之总结 】
【 程序运行时出现莫名奇妙的异常现象的原因之总结 】1. 第三方的库与对应的 .h 文件版本不一致。解决办法:确定库和对应的 .h 文件版本一致后,重新编译程序。原创 2015-03-13 17:35:25 · 2174 阅读 · 0 评论 -
树、森林和二叉树之间的转换
树、森林和二叉树之间的转换 树转换为二叉树1. 加线 在所有兄弟结点之间加一条连线。2. 去线 树中的每个结点,只保留它与第一个孩子结点的连线,删除它与其它孩子结点之间的连线。3. 层次调整 以树的根节点为轴心,将整棵树顺时针旋转一定角度,使之结构层次分明。(注意第一个孩子是结点的左孩子,兄弟转换过来的孩子是结点的右孩子)森林转换为转载 2015-04-08 14:33:53 · 14027 阅读 · 8 评论 -
Linux下用C语言检查指定程序名的运行实例个数
Linux下用C语言检查指定程序名的运行实例个数。直接上源代码:#include#include// // 名称:detect_process// 描述:检查指定程序名的运行实例个数。// 参数:指定程序名称。// 返回:大于等于0 - 实例个数,-1 - 出现错误。int detect_process(const char * process_name原创 2015-06-18 15:57:43 · 1736 阅读 · 0 评论 -
并行处理:分叉(fork)和线程(thread)
并行处理:分叉(fork)和线程(thread) 分叉(fork)是UNIX术语,当分叉一个进程(一个运行的程序)时,基本上是复制了它,并且分叉后的两个进程都从当前的执行点继续运行,并且每个进程都有自己的内存副本(比如变量)。一个进程(原来的那个)成为父进程,另一个(复制的)成为子进程。如果你是一个科幻小说迷,可以把它们想象成并行的宇宙(parallel un原创 2016-05-10 17:06:06 · 6328 阅读 · 0 评论 -
用 JSONP 实现跨域请求
用 JSONP 实现跨域请求参考:1. 轻松搞定JSONP跨域请求http://blog.youkuaiyun.com/u014607184/article/details/520278792. jsonp与JAVA的配合使用http://www.cnblogs.com/dream0530/p/6179819.html3. Jsonp和java操作例子htt原创 2017-09-26 20:06:09 · 408 阅读 · 0 评论 -
几句话就理解 POJO、JavaBean、EJB、DAO、DTO、VO、PO、BO、DO
几句话就理解 POJO、JavaBean、EJB、DAO、DTO、VO、PO、BO1. POJOPOJO(Plain Old Java Object)这种叫法是Martin Fowler、Rebecca Parsons和Josh MacKenzie在2000年的一次演讲的时候提出来的。按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译原创 2017-10-18 20:16:36 · 1228 阅读 · 0 评论 -
前端用AJAX把数组传给后端控制器数组参数的方法
前端用AJAX把数组传给后端控制器数组参数的方法分两种情况:1. 数组元素是基本类型数据的数组。2. 数组元素是普通类对象的数组。下面分别讲解。一、数组元素是基本类型数据的数组这种情况比较简单,下面是示例代码。控制器代码:@Controller@RequestMapping(value = "testctrl") @ResponseBody @RequestMapping(value = "...原创 2018-03-27 19:28:28 · 3655 阅读 · 1 评论 -
人工智能(AI)的模式识别、机器学习和深度学习
人工智能(AI)的模式识别、机器学习和深度学习模式识别(pattern recognition)、机器学习(machine learning)和深度学习(deep learning)代表三种不同的思想流派。模式识别是最古老的(作为一个术语而言,可以说是很过时的)。机器学习是最基础的(当下初创公司和研究实验室的热点领域之一)。而深度学习是非常崭新和有影响力的前沿领域,我们甚至不会去思考后深度学...原创 2018-12-18 17:53:59 · 6119 阅读 · 1 评论 -
设计模式:Inheritance(继承) 和 Delegation(委托)
设计模式:Inheritance(继承) 和 Delegation(委托)今天继续讲Design Pattern的内容。所谓 Design Pattern,翻译过来就是设计模式,是OO语言的一些基本运用。今天介绍Design Pattern中的两个基本概念,Inheritance(继承) 和Delegation(委托)。先定义一个位图类:class CBitmap {.原创 2014-06-23 10:27:40 · 5419 阅读 · 0 评论 -
在Windows系统下,ACE中的 Reactor 最终调用 WaitForMultipleObjects 函数,Priority Reactor 和 Proactor 最终调用 select 函数。
在Windows系统下,ACE中的Reactor最终调用系统的WaitForMultipleObjects函数原创 2014-06-19 18:50:34 · 899 阅读 · 0 评论 -
修改ACE的Reactor模式示例中的参数后测试,依据测试结果,猜测Reactor似乎可以突破62个事件的限制。但是...
【猜测】ACE的Reactor模式示例中,事件,可以分批 Reactor超过62限制,但会有事件漏掉。原创 2014-06-19 16:24:32 · 749 阅读 · 0 评论 -
COM“可重用性”的两种模型:包容和聚合
http://baike.baidu.com/link?url=mR78uRA1-U4NJ1KvAFHc4KCKclk0Kdr5tbhTdDcXSovEgXON3zx0DlpuVg6Sz8VS转载 2014-06-02 14:58:56 · 1743 阅读 · 0 评论 -
具体类、虚类、抽象类(纯虚类)、接口
具体类、抽象类、接口先明确两个概念:具体函数 和 抽象函数1. 具体函数,也称具体方法,即使函数体是实现了的,不是纯虚函数。2. 抽象函数,也称抽象方法,即使函数体是未实现的,是纯虚函数。具体类、抽象类、接口的定义:1. 具体类里的所有方法都是具体的,即所有方法都不是纯虚函数。2. 抽象类里有具体方法,也有抽象方法。3. 接口里的所有方法都是抽象的,即所有方法都是纯虚函原创 2014-06-23 12:25:39 · 7594 阅读 · 2 评论 -
设计模式:Interface Inheritance (接口继承)和 Implementation Inheritance(实现继承)
设计模式:Interface Inheritance (接口继承)和 Implementation Inheritance(实现继承)先阅读《具体类、抽象类、接口》:http://blog.youkuaiyun.com/iw1210/article/details/33727491纯虚函数(pure virtual):派生类继承这个函数,并实现该函数。虚函数(impure virtual):派生类原创 2014-06-23 12:27:15 · 2431 阅读 · 0 评论 -
ACE 服务配置:静态服务 和 动态服务
ACE允许运行时动态地配置服务和流,无论它们是静态地链接进用户程序中,还是其对象是从共享库中动态地加载,既可以配置服务(一个对象代表一个服务),也可以配置流(基于配置文件而非编译时期装配模块)。运行时配置的益处在于:● 多种类型的服务可以链接进程序中,也可以从共享库中动态地加载,通过配置文件决定运行时需要激活哪些服务;● 在服务初始化时传入不同的参数或指定专用的配置文件转载 2014-06-23 17:44:45 · 2797 阅读 · 0 评论 -
COM(组件对象模型)
COM简介(COM),是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无转载 2014-06-02 14:49:22 · 5275 阅读 · 0 评论 -
设计模式之 Visitor 模式(访问者模式)
设计模式之 Visitor 模式(访问者模式)转载 2014-06-02 17:07:35 · 648 阅读 · 0 评论 -
软件设计的粒度
软件设计的粒度 说起粒度,最先进入我脑海的就是一杯沙子和一杯石头。粒度也是我进入公司后听到最有分量的一个词,因为那时导师告诉我这很重要,但很难言传,需要自己去领悟才能把握。做设计要注意粒度,写代码也要注意粒度。对于同一个问题的分解,每个人都会根据不同的动机有不同的分解方法和分解粒度。那么怎么去把握粒度呢? 关于这个问题,让我们先看看一个生活中的例子。同样一个任务,有的人可能预转载 2014-05-30 13:23:10 · 3276 阅读 · 0 评论 -
设计模式之 Bridge 模式(桥接模式)
如果你想要写一个游戏,并且想让这个游戏同时支持PC和手机,那么怎么样的设计可以避免写两套代码,并且不影响可扩展性呢?说起来还是比较简单的,只要把对平台的依赖部分抽取成抽象的接口(比如说绘图部分),并且针对抽取出来的接口,分别实现PC版和手机版就行了。系统的其他部分只要调用那套抽取出来的接口就可以完成所有的功能。这样来看,系统的其他部分是不依赖具体的平台的,也就具有了良好的扩展性。这个就是Bridg转载 2014-06-02 16:33:46 · 761 阅读 · 0 评论 -
Abstract Factory、Builder和Factory模式的差异
Abstract Factory、Builder和Factory模式的差异采用Abstract Factory、Builder和Factory模式可以分离接口和具体实现,本文通过类比讨论三者间的差异。 下面举例说明三者间的差异,其中客户相当于模式使用者,商家相当于模式本身: 1. Factory类似购买品牌机,客户可以选择联想或DELL,商家的模式是提供各类品牌整机;转载 2014-06-02 17:51:02 · 1049 阅读 · 0 评论 -
各种设计模式的形象描述
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 设计模式的书相信很多人都看过。对于设计模式这样一种方法,相信不同的人有不同的理解。我在这里写的博客只是我个人对设计模式的粗浅认识。文中肯定存在很多的不足和不成熟之处,希望朋友们谅解。望大家多多指正,谢谢!01)C语言和设计模式(继承、封装、多态)02)C语言和转载 2014-06-17 12:14:28 · 782 阅读 · 0 评论 -
ACE中的两种I/O多路复用模式 Reactor 和 Proactor 的比较
ACE中的两种I/O多路复用模式:Reactor 和 Proactor一般情况下,I/O 复用机制需要事件分离器(event demultiplexor)。事件分离器的作用,即将那些读写事件源分发给各读写事件的处理者,就像送快递的在楼下喊:谁的什么东西送了,快来拿吧。开发人员在开始的时候需要在分离器那里注册感兴趣的事件,并提供相应的处理者(event handlers),或者是回调函数;事转载 2014-06-18 12:46:25 · 1305 阅读 · 0 评论 -
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)
用 Java 操作管理 Openfire(比如管理用户,包括创建、删除用户等)1. 为 Openfire 安装 REST API 插件安装后在管理平台的插件列表里可以看到 REST API 插件:2. 配置 REST API 插件打开 REST API 插件属性页面,配置插件:注意,如果打不开插件的属性页面,可能是插件版本与 Openfire 的版本不适配的缘故,到 Openfire...原创 2019-04-01 15:43:33 · 2546 阅读 · 1 评论