程序人生
文章平均质量分 62
ucliaohh
丹景春醉容,明月问归期
展开
-
典型与层次式架构设计
接口是采用中立的方式进行定义的,它独立于实现服务的硬件平台、操作系统和编程语言,这使得构件在各系统中的服务以一种统一和通用的方式进行交互。特定领域软件架构DSSA是在一个特定应用领域中为一组应用提供组织结构参考的标准软件架构,是一个特定的问题领域中支持一组应用的领域模型、参考需求、参考架构等组成的开发基础,其目标是支持在一个特定领域中多个应用的生成。2个领域:垂直域是在一个特定领域中通用的软件架构,是一个完整的架构。2、视图:是用户看到并与之交互的界面,视图向用户显示相应的数据,并能接收用户的输入。原创 2023-07-22 11:13:01 · 97 阅读 · 0 评论 -
项目生命周期模型
原则:快速迭代、让测试和开发参与需求讨论、编写可测试的需求文档、多沟通减少文档、做好产品原型、尽早考虑测试。的项目,可以在项目周期中不断进行风险评估和调整,但需要投入大量的时间和人力成本。的项目,但缺点是原型难以与实际系统集成、开发人员可能会陷入过多开发原型的陷阱。的项目,但缺点是开发周期长、不适应需求变更、测试和修复漏洞成本高。的项目,可以快速响应需求变化,但需要团队成员的高度协作和沟通。,可以提高测试效率,但需要考虑好测试用例的设计和覆盖率。是一种测试驱动的模型,将。原创 2023-07-23 20:35:19 · 69 阅读 · 0 评论 -
软件架构风格
因为管道过滤器是把数据处理职能做成过滤器,把数据传递做成管道,此时如果流程不发生变化,是可以通过这种方式实现的,但一旦流程变化,或是扩展功能,需要对过滤器进行修改调整,或是流程在程序层面重建,此时必须修改代码完成任务。机器学习流程定义的灵活性高,可扩展能力强,因为解释器风格可以通过自定义流程规则及配套流程解释引擎开发,做到用户层面的流程完全定义,而不需要修改代码,所以无论是修改已有的业务流程,还是要扩展不同的角色,创建新角色的流程都非常便利。连接件是对象间交互的方式,对象是通过函数和过程调用来交互的。原创 2023-07-22 10:51:15 · 397 阅读 · 0 评论 -
UML建模与架构文档化
而活动图描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,而非系统的处理过程。基础用例是实实在在与用户需求有对应关系的用例,是从用户需求获取的渠道得到的,而抽象用例是从基础用例中抽取的用例的公共部分,是为了避免重复工作,优化结构而提出的用例。它描述的是对象活动的顺序关系所遵循的规则,它着重表现的是系统的行为,可以表达并发执行的过程,可以有多个结束状态。而基本用例用于设计阶段,描述了用例的实现方式。通信协作图是一种交互图,它强调的是发送和接收消息的对象之间的组织结构,强调通信的方式。原创 2023-07-22 11:49:42 · 124 阅读 · 0 评论 -
设计模式基本概念
行为型11种(责备三者两器,命令状态莫策)包括:责任链、备忘录、访问者、中介者、观察者、迭代器、解释器、命令、状态、模板方法、策略模式。访问者模式Visitor:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素新的操作,为数据结构中的每个元素提供多种访问方式。备忘录模式Memento:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态,它提供了一种可以恢复状态的机制。原创 2023-07-21 20:12:49 · 47 阅读 · 0 评论 -
混合软件架构(B/S & C/S)
本文介绍了首先分析了C/S架构和B/S架构的各自的优缺点,然后说明使用混合C/S架构和B/S架构的必要性,并以校园一卡通系统为例,综合实际情况,讨论了C/S和B/S混合架构的应用。实践证明,在系统开发中,使用B/S和C/S混合软件架构,能节省开发和维护成本,使系统具有良好的开放性,易扩展性,便于移植等优点。2010年3月,我所在的学校模拟组织开发了一套校园一卡通系统。在这个项目中,我担任系统系统架构师职务,主要负责该项目的的需求分析和系统设计的工作。3.B/S和C/S混合使用。2.B/S和C/S优缺点。原创 2023-09-19 21:40:42 · 1249 阅读 · 0 评论 -
软件系统知识
主要任务是回答系统“怎么做”的问题,根据系统说明书规定功能要求,具体设计实现逻辑模型的技术方案,设计新系统的物理模型。甘特图是一种简单的水平条形图,它以一个日历为基准描述项目任务,横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,线段的起点和终点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。主要任务是回答系统“做什么”问题,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,提出新系统的逻辑模型。将设计的系统付诸实施。原创 2023-07-22 11:55:24 · 130 阅读 · 0 评论 -
最短路径算法
*-------------------------------------- 主函数 ---------------------------------------*//*-------------------------------------- 函数菜单操作 ------------------------------*//*--------------------------------- 有向图 函数操作 --------------------------*/原创 2022-12-18 10:58:33 · 302 阅读 · 0 评论 -
基于异步选择模型的应用服务器设计
基于异步选择模型的应用服务器设计原创 2022-12-18 10:55:33 · 61 阅读 · 0 评论 -
C# 中的 Infinity 和 NaN
但是,double 和 float 类型实际上有一个可以表示无穷大的特殊值:5.0/0.0 = Infinity(无穷大),这个规则唯一的例外是 0.0/0.0 = NaN (Not a Number)。C# 语言中,对于 int,long 和 decimal 类型的数,任何数除以 0 所得的结果是无穷大,不在 int,long 和 decimal 类型的范围之内,所以计算 6/0 之类的表达式会出错。原创 2022-12-18 10:38:37 · 1715 阅读 · 0 评论 -
C# out 和 ref 用法
要说明的是:只要他在定义的时候被赋值过(包括空值),调用函数时都取定义时所赋的值,但是如果在定义时不做任何处理,则取调用时所赋的值。// 这里对 ref 修饰的 str1 的操作可以不做任何处理,则在函数调用时取值。但在调用的时候要求相对宽松,不需要任何赋值或初始化为空操作,输出的结果也就只能取在定义的时候所赋的值。// 这里对 out 修饰的 str2 的操作可以仅仅只做声名。以 ref 修饰的变量在定义的时候要求不严格, 三种情况都是可以的:1. 赋值;//out 不需要初始化。原创 2022-12-18 10:20:25 · 1385 阅读 · 0 评论 -
深入浅出解释 FFT(一)—— 用 fft 求频谱
An/(N/2)*cos (2*pi*Fn*t+Pn),即 2*An/N*cos (2*pi*Fn*t+Pn)。An = 根号 a*a+b*b,相位就是 Pn=atan2 (b,a)。50Hz 信号的幅度为:384/(N/2)=384/(256/2)=3;幅度为 192/(N/2)=192/(256/2)=1.5。一点 n(n 从 1 开始)表示的频率为:Fn=(n-1)*Fs/N;转载 2022-12-17 12:45:16 · 4644 阅读 · 0 评论 -
数据归一化和两种常用的归一化方法
数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。这种方法给予原始数据的均值(mean)和标准差(standard deviation)进行数据的标准化。其中 max 为样本数据的最大值,min 为样本数据的最小值。这种方法有个缺陷就是当有新数据加入时,可能导致 max 和 min 的变化,需要重新定义。为所有样本数据的均值,为所有样本数据的标准差。转载 2022-12-17 12:43:03 · 443 阅读 · 0 评论 -
CDialog0 dialog(dialogs.get_Item(Excel::xlDialog)
Application.Dialogs (xlDialogOpen).Show 显示 “文件” 菜单的 “打开” 对话框。已否决该对象或成员,但它仍保留向后兼容性的对象模型的一部分。在新的应用程序中),不应使用它。转载 2022-12-16 08:23:36 · 129 阅读 · 0 评论 -
vs 的 tfs 账号更改
原因是这样的,当我们第一次登陆账号时,会生成一个凭据到我们的计算机,方便下次打开 vs 时不用再输入账号和密码,所以会一直记录我们登陆的账号。点击开始菜单 =》控制面板 =》凭据管理器 =》普通凭据,然后删除即可,记住删除时查看是不是 tfs 服务器地址。vs 更换账户,可能不常用,当时有时特殊化,需要进行账号更改,但是打开 vs 后发现没有地方可以注销账户的,为什么呢?原创 2022-12-16 08:18:48 · 495 阅读 · 0 评论 -
VC 调试无法进入断点解决方法
警告有两个,一个是文件的,不带行号,另一个带行号。然后开始逐步逼近问题,把注释前后汉字逐个拿掉,直到问题消失,最后剩下来的核心词是 “即时消息”,搜索这个词,果然在整个项目里只有一个。修一个 Bug,提交,然后更新了一下,编译,运行,发现我也染上这个症状了 —— 只有那个文件无法插入断点。1. 解决方案配置是 Debug ,但没有在工程属性页中 “Alt+F7”->“配置属性”->“C/C++”->“常规”->“调试信息格式”,选择 “用于 “编辑并继续” 的程序数据库 (/ZI)”。呵呵,应该就是它了。转载 2022-12-15 09:11:12 · 1170 阅读 · 0 评论 -
舌尖上的程序员
码完代码,他起身关上电脑,用滚烫的开水为自己泡制一碗腾着热气的老坛酸菜面。中国的程序员更偏爱拉上窗帘,在黑暗中享受这独特的美食。这是现代工业给一天辛苦劳作的人最好的馈赠。南方一带生长的程序员虽然在京城多年,但仍口味清淡,他们往往不加料包由脸颊自然淌下的热泪补充恰当的盐分。他们相信,用这种方式能够抹平思考着现在是不是过去想要的未来而带来的大部分忧伤转载 2015-01-23 10:23:29 · 626 阅读 · 1 评论 -
计算机网络的各种基本概念总结(七层模型,TCP,HTTP,socket,RPC 等)
基于 WebSocket 建立的连接是一种全双工的连接,连接双方没有主次关系,任何一方都可以主动向另一方发起请求,是一种真正的持久连接,这一点和 HTTP 协议的长连接或者轮询连接是不一样的。TCP 协议下可以建立长连接或者短连接,长连接和短连接在建立连接的时候都需要 3 次握手,不同之处在于,短连接在传送完信息之后连接就会关闭,长连接则不会立即关闭。socket 作为套接字,只是网络通信的两端,本身没有连接的概念,平时所谓的 socket 连接,往往指的都是 HTTP 的长连接。转载 2022-12-14 08:19:18 · 271 阅读 · 0 评论 -
串口通信简介
串口通信简介原创 2022-12-14 08:16:01 · 95 阅读 · 0 评论 -
TCP、UDP、HTTP、SOCKET、WebSocket 之间的区别
TCP、UDP、HTTP、SOCKET、WebSocket 之间的区别转载 2022-12-14 08:13:09 · 290 阅读 · 0 评论 -
区块链初探
中国麻将:世界上最早的区块链项目原创 2022-12-13 08:35:45 · 91 阅读 · 0 评论 -
简单工厂、工厂方法、抽象工厂
普通工厂产出是一个产品(实例),抽象工厂产出是一个抽象(接口)。区别在于,若添加一个新的产品,前者是修改工厂,后者是创建新工厂(符合“闭合原则”)。1.简单工厂其实不是一个标准的的设计模式。GOF 23种设计模式中只有「工厂方法模式」与「抽象工厂模式」。简单工厂模式可以看为工厂方法模式的一种特例,为了统一整理学习,就都归为工厂模式。有了工厂类之后,可以使用工厂创建对象:工厂类是整个简单工厂模式的关键。包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象。通过使用转载 2022-02-17 10:37:58 · 876 阅读 · 0 评论 -
常用正则表达式
常用的:非负整数:"^\d+$"正整数:"^[0-9]*[1-9][0-9]*$"非正整数(负整数 + 0):"^((-\d+)|(0+))$"负整数:"^-[0-9]*[1-9][0-9]*$"整数:"^-?\d+$"非负浮点数(正浮点数 + 0):"^\d+(\.\d+)?$" 正浮点数:"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"非正浮点数(负浮点数 + 0):"^((原创 2022-02-16 10:18:22 · 63 阅读 · 0 评论 -
防错性编程
一般说来,当在被某一问题困扰了很长时间,用几天甚至几周查不错代码缺陷的时候,程序员才真正意思到防错性代码的重要性,在编写代码的时候,简单加入几句断言或检查,可能在调试的时候“随手”就能发现并修改这些可能造成严重问题的缺陷。对于可靠性有苛刻要求的产品,这点尤为重要。1. 1. 断言断言用于确保某一个语句或运算结果符合预期,如果不是的话就将程序暂停,便于调试和修改。断言可以消除相互矛盾的假设,消除传入子程序的不良数值等等,在修改代码时可以保护代码改动是否影响到了程序其它部分。简单的断言包括:指针原创 2021-12-24 09:35:33 · 296 阅读 · 0 评论 -
日志设计规范
日志是软件调试和测试的重要手段,良好的日志不仅可以清晰反应代码运行状态,出现问题时,可以大大缩短缺陷定位的时间和工作量。尤其对于后台服务,只有日志能反应程序运行情况。 比如,有些缺陷是很难复现的(能复现的缺陷很容易修改),如果在问题发生的时候,抓住难得的“机会”获取运行状态并输出合适的日志信息,基本上就能定位缺陷了。 从软件开发、调试以及测试过程,培养规范输出日志的习惯,可可大大减少软件开发的调试工作量。 目前代码调试日志暂不支持国际化,统一使用英文,不允许使用中文。1.1 日志编号日志编号主要时用原创 2021-12-24 09:33:46 · 993 阅读 · 0 评论 -
状态机使用
铁路信号为例:扳动/过车 //3种状态下,共4种信号,共12个处理分支。以下代码为状态机处理代码 //-------未录像状态: //扳动开始信号 -》发送开始录像 //过车开始信号 -》发送开始录像 //扳动结束信号 -》忽略 //过车结束信号 -》忽略 //-------扳动录像状态: //扳动开始信号 -》忽略 //过车开始信号 -》忽略 //扳动结束信号 -》延时后发送结束录像 //过车结束信号 -》忽略...原创 2021-12-24 09:30:40 · 69 阅读 · 0 评论