- 博客(27)
- 资源 (3)
- 收藏
- 关注
原创 遗传算法中几种交叉算子小结
1、Partial-Mapped Crossover (PMX) 过程: 第一步,随机选择一对染色体(父代)中几个基因的起止位置(两染色体被选位置相同): 第二步,交换这两组基因的位置: 第三步,做冲突检测,根据交换的两组基因建立一个映射关系,如图所示,以1-6-3这一映射关系为例,可以看到第二步结果中子代1存在两个基因1
2017-05-24 21:23:42 9275 1
原创 多目标决策问题
指标按其值是否为数值,可分为定量指标和定性指标(或称模糊的)。 传统上,指标按其具体含义可分为效益型,成本型,固定型和区间型。效益型指标是指其值越大越好的指标;成本型指标是指其值越小越好的指标;固定型指标是指其值不能太大,又不能太小,而以稳定在某个固定值为最佳的指标;或者说其值越接近某个值越好的指标;区间型指标是指其值以落在某个固定区间为最佳的指标,或者说,其值越接近某个固定区间(包括落入该区间)
2017-05-21 21:55:37 6887
原创 c++学习(九)
程序的多文件组织:一个程序包括多个源文件(.cpp)/头文件(.h),比如main.cpp,student.cpp。在源文件中可以引用自己定义的头文件,比如#include "students.h"。之所以用““””而不用,那么在找相应文件的时候会去系统文件夹中找,而如果用""会优先去当前目录寻找。而我们自己编写的头文件是存储在当前目录下和原文家一个目录的,所以要用""。编译的过程中,每一
2017-05-19 13:07:45 298
转载 c++中new和delete的使用方法
对于计算机程序设计而言,变量和对象在内存中的分配都是编译器在编译程序时安排好的,这带来了极大的不便,如数组必须大开小用,指针必须指向一个已经存在的变量或对象。对于不能确定需要占用多少内存的情况,动态内存分配解决了这个问题。 new和delete运算符是用于动态分配和撤销内存的运算符。一、new用法1.开辟单变量地址空间 使用new运算符时必须已知数据类型,
2017-05-19 11:34:04 247
原创 c++学习(八)
访问对象中成员的3种方法:1.通过对象名和成员运算符(.)访问对象中的成员2. 通过指向对象的指针访问对象中的成员例如:Time t1,*p;p=&t1;t1.set_time();(*p).show_time();p->show_time();3. 通过对象的引用变量访问对象中的成员引用变量共占同一段存储单元,实际上它们是同一个对象,只是用不同的名
2017-05-18 19:26:01 918
原创 c++学习(六)
类是对象的抽象,对象是类的实例。面向过程中,程序=算法+数据结构,算法和数据结构相互独立,分开设计。面向对象中,算法和数据封装在一个对象中。需要设计所需要的各种类和对象;向有关对象发送消息,以完成所需的任务。c++中类的声明中包括类名,数据成员以及成员函数。成员的访问权限有:private(只能在类的内部访问)public(可以在类的外部使用)protected。类中的成员函数可以
2017-05-18 15:17:32 183
转载 c语言中的野指针
“野指针”不是NULL指针,是指向“垃圾”内存的指针。人们一般不会错用NULL指针,因为用if语句很容易判断。但是“野指针”是很危险的,if语句对它不起作用。“野指针”的成因主要有两种:(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。
2017-05-18 14:29:22 563
原创 c++学习(五)
c语言中的字符串函数include<string.h>: int strcmp(const char *str1,const char *str2)按照字典方式比较字符串str1和字符串str2。如果str1小于str2,返回一个负数;如果str1等于str2,返回一个0;否则返回一个正数。 c++中的字符串函数include<cstring>: 字符串之间相互的赋值或者赋值可以用strcpy
2017-05-18 14:23:09 165
原创 函数重载 函数模板
重载函数的参数个数、参数类型或参数顺序三者中必须至少有一种不同,函数返回值类型可以相同也可以不同。函数重载与参数的默认值不要冲突。比如:int max(int a,int b,int c=5)和int max(int a,int b),那么当调用max(a,b)的时候会引起歧义,不知道调用的是哪个函数。
2017-05-18 12:23:09 475
原创 c++学习(四)
有默认参数的函数: 函数声明时为形参指定默认值,eg:float volume(float h,float r=12.5)//形参r指定默认值为12.5 函数调用时,实参的个数可以和形参的个数不同 eg:volume(32.2)``//相当于volume(32.2,12.5) 实参未给定的,从形参的默认值得到值。 因为实参和形参的结合是从左至右顺序进行的,所以指定默认值的参数必须放在形参表列
2017-05-17 21:45:58 164
原创 c++学习(三)
内置函数(inline):又叫内联函数。在编译时将所调用的函数的代码直接嵌入到主调函数中。同时用实参代替形参。可以节省一定的时间和空间的开销。例如:inline int max(int,int,int)。在声明和定义函数的同时写inline,也可以只在其中一处声明inline,效果是一样的。 c语言中提升效率的方法是宏定义:#define area(a,b) (a)*(b)定义了函数area(a,
2017-05-17 21:31:53 191
原创 c++学习(二)
c++中的输入和输出用“流”的方式实现。 cin>>b将键盘上输入的值保存到变量b中。cin是输入流。>>是提取。 cout<<b从内存中将b的值取出通过插入运算符<<送到输出流对象cout中,通过这个输出流对象进到屏幕中。 流对象cin、cout和流运算符的定义存放在c++的输入输出流库iostream中;cout和cin并不是c++本身提供的语句,运算符<<和>>也不是c++本身提供的运算
2017-05-17 21:08:51 258
转载 C语言中static全局变量与普通的全局变量的区别
static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局
2017-05-17 16:40:16 2881
原创 c++学习(一)
c语言 :stdio.h : math.h : string.h :stdlib.hc++ : iostream : cmath : cstring : cstdlibc++当然也支持c语言的头文件,但是最好还是按照c++自己的方式来使用头文件。 c++相比于c语言基本类型中多出了bool型(逻辑型,逻辑型常量有两个:false 以及 true)。在编译系统处理逻辑数据时,将f
2017-05-17 16:39:40 180
原创 c语言知识结构
c++的四个部分: c语言 面向对象的c++ 模板c++ STL 开发环境和类库: Qt MFC wxWidgets cocos2d(游戏引擎)c语言的数据类型包括基本类型,构造类型以及指针类型。基本类型包括数值型数据和空类型(void)。数值型数据包括整形、字符型以及浮点型。因为字符型用ASCII码表示,所以也是数值型。字符型也包括有符号以及无符号。整型包括有符号和无符号。并
2017-05-17 15:27:32 346
转载 守护进程 daemon
Daemon Daemon程序是一直运行的服务端程序,又称为守护进程。通常在系统后台运行,没有控制终端不与前台交互,Daemon程序一般作为系统服务使用。Daemon是长时间运行的进程,通常在系统启动后就运行,在系统关闭时才结束。一般说Daemon程序在后台运行,是因为它没有控制终端,无法和前台的用户交互。Daemon程序一般都作为服务程序使用,等待客户端程序与它通信。我们也把运行的Daemo
2017-05-16 18:59:22 450
转载 协作多线程和抢占多线程
1. 多任务在计算中,多任务是一种多个任务(也称之为进程)共享处理资源(如CPU)的方法。在多任务操作系统上,例如Windows XP,您可以同时运行多个应用程序。多任务实质是指操作系统在每个计算任务间快速切换,以致于看上去不同的应用似乎在同时执行多项操作。当CPU时钟频率稳步提高时,不仅应用程序的运行速率可以更快,而且操作系统在应用间的切换速率也更快。这样就提供了更好的整体性能——一台计算机可以
2017-05-16 16:18:46 3070
原创 线程和进程的区别
进程和线程的简单定义:进程:程序的一次执行。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程:CPU的基本调度单位。线程是CPU调度和分派的基本单位,是比进程更小的能独立运行的基本单位。与同属一个进程的其他的线程共享进程所拥有的全部资源。进程和线程的主要差别在于它们是不同的操作系统资源管理方式。(注意:它们都是操作系统的资源
2017-05-16 15:41:26 211
原创 Maven
Maven是一个项目构建和管理的工具。1.jar包从哪来的2. api文档如何来的3. 源码从哪来的4. 如何关联源码:每换一次工程都要手动关联一次5. 如何管理这些资源Maven可以解决以上所有问题,它可以自动下载jar包(强制性精确的jar包管理及自动下载)、文档以及源码并且自动关联。同时还能进行项目的打包和部署,打包是为了将代码扔到生产环境里。Maven还可以辅助测试
2017-05-12 19:47:07 143
原创 method chaining 方法链
Method chaining, also known as named parameter idiom, is a common syntax for invoking multiple method calls in object-oriented programming languages. Each method returns an object, allowing the calls
2017-05-12 12:45:30 1068
原创 Java中的数组和c中的数组
1. Java中的数组在初始化的时候不允许指定数组的大小。初始化方式可以为:int a1 []={1,2,3,4,5};或者int a2=[];a2=a1;但是在c语言中,数组在定义时一般情况下需要指定数组的大小,int count[4];并且只有在定义数组的同时初始化它的时候下可以不指定数组的长度,例如:int count[]={3,2,1};2. Java中数组之
2017-05-11 21:22:04 391
原创 Eclipse的使用
使用Eclipse时,鼠标移动到方法上面就是自动弹出浏览导航页面。这是因为Eclipse它有鼠标悬停提示(主要是变量类型声明和Doc帮助提示)的功能,突然弹出的窗口妨碍视线还影响思路,关闭方法如下: Window(窗口)->Preferences(首选项)->Java->Editor(编辑器)->Hovers(悬浮提示) 将[Combined Hover](组合的悬浮提示)取消即可。
2017-05-11 19:47:38 109
转载 System.gc()和System.runFinalization()
//垃圾回收 System.gc(); System.runFinalization();runFinalizationpublic static void runFinalization()运行处于挂起终止状态的所有对象的终止方法。 调用该方法说明 Java 虚拟机做了一些努力运行已被丢弃对象的 finalize 方法,但是这些对象的 finalize 方
2017-05-11 17:16:02 269
转载 Java中的垃圾回收机制
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象;而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾回收意味着程序不再需要的对象是"无用信息",这些信息将被丢弃。当一个对象不再被引用的时候,内存回收它占领的空间,以便空间被后来的新对象使用。事实上
2017-05-11 16:39:55 179
转载 c语言中的命名空间
C语言中的命名空间命名空间是为了解决 “在相同作用域内如何区分相同的标识符”。说明:①只有在相同作用域的情况下才能使用到命名空间去区分标识符,在嵌套的作用域、不同的作用域区分标识符都用不到命名空间的概念。②在相同的作用域内,如果命名空间不同,标识符可以使用相同的名称。否则,即如果命名空间相同同,编译器会报错,提示重复定义。按照C99(章节6.2.3),命名空间可以分为四种:
2017-05-11 14:25:58 8076 2
原创 递归之汉诺塔问题
汉诺塔问题的圆盘的最大数量为64,include include define N 10int a[N][3]={0};//全局数组,因为每个函数都要用这个数组 void show(int a[N][3]);//显示的作用 void hanno(int n,char A,char B,char C);//移动的过程就是模型model void move(char X,char Y);//算法和
2017-05-10 15:50:23 272
原创 c语言中生成某一范围的随机数
C语言中用rand()函数产生20-90的随机整数20-90共有71个数字,所以是rand()%71+20 ;用rand()生成-20-20的随机数-20-20共有41个数字,所以是rand()%41-20;需要注意的是,在运行以上代码之前最好设定一下:srand(time(NULL));//用系统当前时间设置rand()随机序列种子,保证每次运行随机序列不一样
2017-05-09 10:14:24 112010 10
Geometry for Computer Graphics
2018-05-09
Polygon Mesh Processing
2018-05-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人