序  前言  第1篇面向过程的软件工程  第1章软件危机、软件工程  11软件工程的发展史  111程序设计时代  112程序系统时代  113软件工程时代  12软件危机主要表现形式  13产生软件危机的原因及解决途径  131产生软件危机的原因  132解决软件危机的途径  14软件和软件工程  141软件  142软件工程  15软件质量  16软件的生存周期及开发模型  161软件生存周期  162软件开发模型  17习题  第2章可行性研究  21可行性研究的目的与任务  22可行性研究的步骤  23系统流程图  231系统流程图的符号  232系统流程图示例  24成本-效益分析  241货币的时间价值  242投资回收期  243纯收入  25可行性研究报告的主要内容  26习题  第3章软件需求分析  31需求分析的任务和步骤  311需求分析的任务  312需求分析的步骤  32需求获取的常用方法  321常规的需求获取方法  322快速建立软件原型来获取需求  33需求分析的方法  331功能分解方法  332结构化分析方法  333信息建模方法  334面向对象的分析  34结构化分析方法  341自顶向下逐层分解的分析策略  342结构化分析描述工具  343数据流图  344数据字典  345加工逻辑的描述  35需求分析图形工具  351层次方框图  352Warnier图  353IPO图  36SA方法的应用  37习题  第4章软件总体设计  41软件总体设计的目标和任务  42软件设计的概念和原理  421模块和模块化  422抽象  423信息隐蔽和局部化  424模块独立性及其度量  43软件结构设计准则  44软件结构设计的图形工具  441软件结构图  442层次图  443HIPO图  45结构化设计方法  451数据流图的类型  452结构化设计方法的步骤  453变换型分析设计  454事务型分析设计  46习题  第5章软件详细设计  51详细设计的目的与任务  52结构化程序设计  53详细设计工具  531程序流程图  532NS图  533PAD图  534过程设计语言  54习题  第6章软件编码  61程序设计语言的分类  611基础语言  612结构化语言  613面向对象的语言  62程序设计语言的选择  63程序设计风格  631程序内部文档  632数据说明  633语句构造  634输入/输出  635效率  64习题  第7章软件测试  71软件测试的目标  72软件测试的原则  73软件测试方法  731静态测试与动态测试  732黑盒测试法与白盒测试法  74软件测试用例的设计  741白盒技术  742黑盒技术  75软件测试过程  751单元测试  752集成测试  753确认测试  754系统测试  76调试  761调试的目的  762调试技术  77习题  第8章软件维护  81软件维护的分类  82软件维护的特点  821结构化维护与非结构化维护  822维护的代价  823软件维护中存在的问题  83软件可维护性  831软件可维护性的定义  832软件可维护性的度量  833提高软件可维护性的方法  84维护的副作用  85软件再工程  851软件再工程与逆向工程的概念  852实施软件再工程的原因  853软件再工程技术  86习题  第2篇UML与面向对象的软件工程  第9章UML简介  91UML概述  911UML的组成  912UML的特点和用途  913UML的模型视图简介  92UML软件开发工具简介  921RationalRose  922Visio简介  93习题  第10章面向对象的概念  101面向对象的方法学  1011面向对象建模  1012面向对象的方法与传统软件方法的比较  102对象与类及其UML表示  1021对象  1022类与实例  1023对象属性与操作  1024对象类的关联  103聚集、组合、继承和多态  1031聚集与组合  1032抽象与继承  1033多态  104习题  第11章对象设计模式  111对象设计模式概念  1111历史背景  1112对象设计模式  1113设计模式的分类  112几种典型的对象设计模式及应用  1121行为型模式中的职
2025/6/29 10:27:15 3MB 软件工程原理
1
针对高光谱图像特征利用不足和训练样本难以获取的问题,提出了一种具有多特征和改进堆栈稀疏自编码网络的高光谱图像分类算法。
采用流形学习获得高光谱图像的低维数据结构,并提取高光谱图像的光谱特征、具有空间信息的局部二值模式(LBP)特征及拓展多属性剖面(EMAP)特征。
利用主动学习查询特征性强的未标记样本并将其标记,利用融合空谱联合信息的样本训练堆栈主动稀疏自编码神经网络并用Softmax分类器对其分类。
Indianpines数据集的总体分类精度达到98.14%,PaviaU数据集总体分类精度达到97.24%。
实验结果表明,该算法分类精度高,边界点分类效果更好。
2025/6/29 4:53:23 12.88MB 图像处理 高光谱图 多特征 流形学习
1
Autocad插件,可以局部放大图形,自动添加符号
2025/6/26 10:29:30 18KB cad快捷功能插件
1
链路预测各项指标代码,模型代码,局部朴素贝叶斯模型等
1

《VC6多线程编程实例解析》在计算机科学领域,多线程是并发执行的程序设计中的一个重要概念。
在Microsoft Visual C++ 6.0(简称VC6)环境下,多线程技术允许应用程序同时执行多个不同的任务,提高了程序的响应速度和效率。
本资源“VC6-多线程例子.rar”提供了关于如何在VC6中实现多线程编程的实例,旨在帮助开发者更好地理解和应用这一技术。
一、多线程基础多线程是操作系统为提高系统资源利用率和响应时间而引入的概念。
一个进程可以包含多个线程,每个线程都有自己的程序计数器、栈和局部变量,共享全局变量和进程资源。
通过创建线程,程序可以在同一进程中并行执行不同的任务,比如用户界面更新、网络通信和计算等。
二、VC6中创建线程在VC6中,我们可以使用CWinThread类来创建线程。
需要从CWinThread派生一个新的类,并重写其成员函数,如Run(),以定义线程的主要执行逻辑。
然后,在应用程序中创建该类的对象,调用其CreateThread()方法启动新线程。
三、线程同步与通信多线程编程中,线程间的同步和通信至关重要,以避免数据竞争和死锁等问题。
VC6提供了多种同步机制,如CSyncObject类、CRITICAL_SECTION、Mutex、Semaphore和Event等。
例如,CRITICAL_SECTION用于保护临界区,确保同一时间只有一个线程可以访问特定的代码或资源。
四、线程优先级每个线程都有一个优先级,用于决定操作系统调度线程的顺序。
VC6提供了一系列函数,如SetThreadPriority(),用于设置线程的优先级。
然而,不恰当的优先级设置可能导致优先级反转和优先级继承问题,因此需谨慎处理。
五、线程的生命周期线程从创建到销毁经历一系列状态:创建、就绪、运行、等待、恢复和终止。
在VC6中,线程可以通过调用ExitThread()函数主动结束,或者当其运行完毕或被其他线程取消时被动结束。
六、实例分析——ThreadSample"ThreadSample"是这个压缩包内的核心文件,它可能包含了创建、管理以及同步线程的示例代码。
通过研究这个例子,你可以了解如何在实际项目中实现多线程,包括如何定义线程函数、如何传递参数、如何在不同线程间共享数据以及如何进行线程安全的编程。
总结,VC6-多线程例子.rar是一个实用的教学资源,它可以帮助开发者掌握在VC6环境下进行多线程编程的关键技术和实践经验。
通过深入学习和实践其中的ThreadSample,你将能够有效地利用多线程提升你的程序性能。
2025/6/20 8:28:31 236KB
1

在MATLAB中,计算三维散乱点云的曲率是一项重要的几何分析任务,尤其是在计算机图形学、图像处理和机器学习等领域。
曲率是衡量表面局部弯曲程度的一个度量,可以帮助我们理解点云数据的形状特征。
曲率的计算通常涉及主曲率、高斯曲率和平均曲率三个关键概念。
主曲率是描述曲面在某一点沿两个正交方向弯曲的程度,通常记为K1和K2,其中K1是最大曲率,K2是最小曲率。
主曲率可以提供关于曲线形状的局部信息,例如,当K1=K2时,表明该点处的曲面是球形;
当K1=0或K2=0时,可能对应于平面区域。
高斯曲率(Gaussian Curvature)是主曲率的乘积,记为K = K1 * K2。
高斯曲率综合了主曲率的信息,能反映曲面上任意点的全局弯曲特性。
如果高斯曲率为正,表明该点在凸形曲面上;
若为负,则在凹形曲面上;
为零时,表示该点位于平面上。
平均曲率(Mean Curvature)是主曲率的算术平均值,H = (K1 + K2) / 2。
它提供了曲面弯曲的平均程度,对于理解物体表面的整体形状变化非常有用。
例如,平均曲率为零的点可能表示曲面的边缘或者尖锐转折。
在MATLAB中,计算这些曲率通常需要以下步骤:1. **数据预处理**:你需要加载散乱点云数据。
这可以通过读取txt文件(如www.pudn.com.txt)或使用特定的数据集来完成。
数据通常包含每个点的XYZ坐标。
2. **邻域搜索**:确定每个点的邻域,通常采用球形邻域或基于距离的邻域。
邻域的选择直接影响曲率计算的精度和稳定性。
3. **拟合曲面**:使用最近邻插值、移动最小二乘法(Moving Least Squares, MLS)或其他方法,将点云数据拟合成一个连续曲面。
在本例中,"demo_MLS"可能是一个实现MLS算法的MATLAB脚本。
4. **计算几何属性**:在拟合的曲面上,计算每个点的曲率。
这涉及到计算曲面的曲率矩阵、主轴和主曲率。
同时,高斯曲率和平均曲率可以通过已知的主曲率直接计算得出。
5. **结果可视化**:你可以使用MATLAB的图形工具,如`scatter3`或`patch`函数,将曲率信息以颜色编码的方式叠加到原始点云上,以直观展示曲率分布。
在实际应用中,曲率计算对于识别物体特征、形状分析和目标检测等任务具有重要价值。
例如,在机器人导航、医学图像分析和3D重建等领域,理解点云数据的几何特性至关重要。
总结来说,MATLAB中的算法通过一系列数学操作和数据处理,可以有效地计算三维散乱点云的主曲率、高斯曲率和平均曲率,从而揭示其内在的几何结构和形状特征。
正确理解和运用这些曲率概念,有助于在相关领域进行更深入的研究和开发。
2025/6/18 16:18:34 130KB
1

【珠海亿胜生物制药有限公司人力资源改善方案】珠海亿胜生物制药有限公司正寻求改善其人力资源管理,以适应其作为全球生物科技制药公司的战略定位。
此改善方案由深圳市博信达企业管理咨询有限公司提供,旨在解决企业在不同发展阶段所面临的人力资源管理问题。
在创业期,企业通常面临资金短缺、人才招聘和市场开拓的挑战,此时人力资源管理的重点是大量招聘并建立基本的薪酬制度。
随着企业进入稳步发展阶段,人力资源管理需要关注人才流失、培训和发展,以确保制度公平和稳定。
在企业“上台阶”阶段,企业文化建设、制度优化以及品牌经营成为重点,此时应注重员工与工作的融合,建立更为丰富和人性化的薪酬体系。
珠海亿胜目前可能面临系统性问题,而非单一模块的改良能解决。
工作分析与职位评价是基础,能明确职位要求、绩效任务和角色,构建战略导向的薪酬体系,影响员工行为,促进个人和组织的共同发展。
招聘体系也需基于科学的职位分析,并通过绩效评价确保效果。
博信达公司提出的指导思想包括:1. 以点带面,全面提升系统化管理效率。
这意味着任何调整都应考虑全局影响,避免局部改革的局限性,重视人力资源管理体系的整体性和关联性。
2. 建立战略性的价值评价和价值分配体系。
员工满意度源于价值评价和分配的合理与否,因此,建立职位评估、绩效管理和薪酬体系是吸引、留住和激励优秀员工的关键。
方案建议从工作分析与职位评估开始,但同时要考虑绩效和薪酬体系的设计。
职位评价是确定职位相对价值的过程,用于构建统一的职位结构。
这涉及对职位内容、价值和市场水平的综合考量,以确保公平性和竞争力。
咨询的目标不仅是制定制度,更重要的是通过强化人力资源管理的关键环节来提高效率,支持企业目标的实现。
咨询公司的价值在于帮助企业构建前瞻性的、自我完善的管理系统,赋予企业应对变化的能力。
珠海亿胜的人力资源改善方案将是一个全面的、系统的过程,涵盖了从职位定义、价值评估、绩效管理到薪酬激励的多个层面,旨在打造一个适应企业发展、激发员工潜力的高效人力资源体系。
2025/6/16 2:41:58 79KB
1

误差反向传播(Backpropagation,简称BP)是深度学习领域中最常见的训练人工神经网络(Artificial Neural Network,ANN)的算法。
它主要用于调整网络中权重和偏置,以最小化预测结果与实际值之间的误差。
在本项目中,我们看到的是如何利用BP算法构建一个两层神经网络来识别MNIST手写数字数据集。
MNIST数据集包含60,000个训练样本和10,000个测试样本,每个样本都是28x28像素的灰度图像,代表0到9的手写数字。
BP算法通过迭代过程,对每个样本进行前向传播计算预测结果,并使用梯度下降优化方法更新权重,以提高模型在训练集上的表现。
文件"bp_two_layer_net.py"可能包含了实现BP算法的主体代码,它定义了网络结构,包括输入层、隐藏层和输出层。
"net_layer.py"可能是定义神经网络层的模块,包括前向传播和反向传播的函数。
"train_bp_two_neuralnet.py"很可能是训练脚本,调用前面的网络和训练数据,执行多次迭代以优化权重。
"buy_orange_apple.py"、"layer_naive.py"、"gradient_check.py"和"buy_apple.py"这四个文件的名称看起来与主题不太直接相关,但它们可能是辅助代码或者示例程序。
"buy_orange_apple.py"可能是一个简单的决策问题,用于帮助理解基本的逻辑操作;
"layer_naive.py"可能包含了一个基础的神经网络层实现,没有使用高级库;
"gradient_check.py"可能是用来验证反向传播计算梯度正确性的工具,这对于调试深度学习模型至关重要;
而"buy_apple.py"可能是另一个类似的小示例,用于教学或练习目的。
在BP算法中,计算图的概念很重要。
计算图将计算过程表示为一系列节点和边,节点代表操作,边代表数据。
在反向传播过程中,通过计算图的反向遍历,可以高效地计算出每个参数对损失函数的影响,从而更新参数。
在深度学习中,神经网络的优化通常依赖于梯度下降算法,它根据梯度的方向和大小来更新权重。
对于大型网络,通常采用随机梯度下降(Stochastic Gradient Descent, SGD)或其变种,如动量SGD、Adam等,以提高训练速度和避免局部最优。
总结来说,这个项目涉及了误差反向传播算法在神经网络中的应用,特别是在解决MNIST手写数字识别问题上的实践。
通过理解和实现这些文件,我们可以深入理解BP算法的工作原理,以及如何在实际问题中构建和训练神经网络。
同时,它也展示了计算图和梯度检查在深度学习模型开发中的关键作用。
2025/6/15 20:24:19 5KB
1
简介:
### 开发51单片机操作系统时应注意的问题#### 一、引言随着嵌入式系统的广泛应用,针对特定硬件平台的操作系统开发变得尤为重要。
51单片机作为一款经典的微控制器,在工业控制、家用电器等领域有着广泛的应用。
然而,由于其硬件资源的限制,在51单片机上开发操作系统面临诸多挑战。
本文将详细介绍开发51单片机操作系统时需要注意的关键问题。
#### 二、关键问题详解##### 1. 操作系统软件的代码长度控制51系列单片机由于硬件资源的限制(如ROM空间较小),因此对于操作系统代码的大小有严格的要求。
通常情况下,一个基于51单片机的应用程序大约需要7至8KB的ROM空间。
相比之下,如果操作系统本身就需要几十KB的空间,那么留给用户应用程序的空间将非常有限,这显然不利于实际应用。
例如,流行的嵌入式操作系统往往体积较大,无法适用于51单片机。
为了克服这一限制,开发者需要采取以下措施:- **精简设计**:简化操作系统的功能模块,确保核心功能的同时尽可能减小代码量。
- **模块化**:采用模块化设计,允许用户根据具体需求选择加载必要的模块,从而降低整体代码量。
- **代码优化**:通过高效的编码技巧来减少代码长度,比如使用更简洁的数据结构和算法。
##### 2. 控制操作系统对片内RAM的占用51系列单片机仅有128或256字节的片内RAM空间,这对于运行操作系统而言是非常有限的。
如果操作系统占用过多的RAM空间,将严重影响用户应用程序的正常运行。
因此,开发者需要特别注意以下几点:- **最小化RAM使用**:减少操作系统的RAM占用,确保有足够的空间供用户应用程序使用。
- **合理分配资源**:优化RAM的使用方式,避免不必要的资源浪费。
- **外部RAM利用**:在不影响性能的前提下,考虑将部分数据存储在外置RAM中,以减轻内部RAM的压力。
##### 3. 解决函数的重入问题对于实时占先式操作系统而言,函数的重入性至关重要。
重入函数能够在不破坏数据的情况下被多个任务调用。
要实现函数的重入性,必须满足以下条件之一:- **不使用共享资源**:确保函数内部没有依赖任何共享资源。
- **使用中断禁用**:在使用共享资源时暂时禁用中断,以保证数据的一致性。
- **信号量机制**:通过申请和释放信号量来管理对共享资源的访问。
在标准C中实现这些条件相对简单,但在Keil C51编译器环境下,由于局部变量的静态分配特性,实现起来较为复杂。
开发者可以通过以下策略应对这一挑战:- **手动管理资源**:显式地控制共享资源的访问,避免自动管理带来的不确定性。
- **代码审查**:仔细检查函数中的资源使用情况,确保符合重入性的要求。
- **测试验证**:通过严格的测试来验证函数的重入性,确保其在多任务环境下的正确运行。
##### 4. 堆栈的分配与管理在占先式操作系统中,任务之间的切换频繁发生,因此需要合理分配和管理堆栈空间。
每个任务都需要有自己的堆栈,用于保存任务状态信息。
由于51单片机的RAM空间有限,堆栈的分配策略成为了一项重要的考量因素。
- **按需分配**:根据任务的实际需求动态分配堆栈空间,避免过度预分配造成的资源浪费。
- **优化堆栈使用**:通过调整任务的设计和编码方式来减少堆栈的需求。
- **复用机制**:探索堆栈空间的复用机制,如在任务间共享堆栈空间等方法。
#### 三、结论开发51单片机操作系统是一项充满挑战的任务,需要开发者在有限的硬件资源下,精心设计并优化操作系统的各个方面。
通过本文所述的关键问题及解决方案的探讨,希望能够帮助开发者更好地理解和应对这些挑战,成功开发出高效、可靠的51单片机操作系统。
2025/6/15 19:58:32 63KB
1
电机优化在建参数变量时有两种变量:1、ProjectVariables。
相当于全局变量;
2、localVariables。
相当于局部变量;
ProjectVariables能在一个project下各个2D、3D、RMxprt下用,设置在DesignProperties下建立;
localVariables则只能在一个project下的某一个模型下用。
设置在designproperties下建立;
在建参数变量时有两种变量:1、ProjectVariables。
相当于全局变量;
2、localVariables。
相当于局部变量;
ProjectVariables能在一个project下各个2D、3D、RMxprt下用,设置在DesignProperties下建立;
localVariables则只能在一个project下的某一个模型下用。
设置在designproperties下建立;
在建参数变量时有两种变量:1、ProjectVariables。
相当于全局变量;
2、localVariables。
相当于局部变量;
ProjectVariables能在一个project下各个2D、3D、RMxprt下用,设置在DesignProperties下建立;
localVariables则只能在一个project下的某一个模型下用。
设置在designproperties下建立;
电机
2025/6/8 14:18:06 119KB 电机优化
1
共 564 条记录 首页 上一页 下一页 尾页
在日常工作中,钉钉打卡成了我生活中不可或缺的一部分。然而,有时候这个看似简单的任务却给我带来了不少烦恼。 每天早晚,我总是得牢记打开钉钉应用,点击"工作台",再找到"考勤打卡"进行签到。有时候因为工作忙碌,会忘记打卡,导致考勤异常,影响当月的工作评价。而且,由于我使用的是苹果手机,有时候系统更新后,钉钉的某些功能会出现异常,使得打卡变得更加麻烦。 另外,我的家人使用的是安卓手机,他们也经常抱怨钉钉打卡的繁琐。尤其是对于那些不太熟悉手机操作的长辈来说,每次打卡都是一次挑战。他们总是担心自己会操作失误,导致打卡失败。 为了解决这些烦恼,我开始思考是否可以通过编写一个全自动化脚本来实现钉钉打卡。经过一段时间的摸索和学习,我终于成功编写出了一个适用于苹果和安卓系统的钉钉打卡脚本。
2024-04-09 15:03 15KB 钉钉 钉钉打卡