概率编程实例
Ⅰ 用mathematica实现对含有概率密度函数的积分(用于计算期望值),并且绘图,最举个编程例子。
是你的函数定义语法错了,函数定义方括号里面的变量要有下划线,要像下面这样的。
f[s_]:=Integrate[(1.2*r-500-0.2*s)*
PDF[NormalDistribution[10000,1500],r],{r,0,s}]+
Integrate[(s-500)*PDF[NormalDistribution[10000,1500],r],{r,s,
20000}];
Plot[f[s],{s,0,10000}]
Ⅱ B、 一个人爬楼梯,可能走一步、两部、三步。编程,求他上一有10阶的梯级的走法
/********************************************************
/* 程 序 名:超级楼梯(递归算法)
/* 作 者:为了娶个美女老婆而AC
/* 编程时间:2009年8月2日
/* 主要功能:递归算法的实现
*********************************************************/
#include<iostream>
using namespace std;//编译命令
int num=0;//定义全局变量num,记录方案数
int Try(int i)//建立递归函数,i表示阶梯数
{
int j;//j表示每步所走的台阶数
for(j=1; j<3; j++)//循环
{
if(i==j)//如果台阶刚好走完
{
num++;//方案数加1
}
else if(i>j)//如尚未走完
{
Try(i-j);//递归,试剩下的台阶
}
}
return num;//返回方案数
}
int main()
{ //主函数开始
int n,h=0;//定义变量
scanf("%d",&n);//输入测试实例的个数
while(n-- && scanf("%d",&h)!=EOF)//循环并输入要走台阶数
{
num=0;//将每次测试的方案数清0
printf("%d\n",Try(h-1));//输出提示信息
}
return 0;//主函数结束
}
Ⅲ 懂编程的高手......请进!菜鸟也可以进但不要瞎说...拜托!
由于不同的操作系统平台上的编程语言又有很多种,这里只说windows平台上的。
1.编程语言分多种.就是根据他们的特点来分的,现在编程语言不仅仅是定义一种语言,还要有好的
开发环境。如vb和delphi都有很好的界面,而vc更适合系统软件的开发,而java适于网络和跨平台
的软件的开发,而javascript和vbscript等适于网页和简单的编程,理解他们去别的方法就是学习
他们.在学习中发现区别和联系
2.一般情况下,现在写一个软件有很大的可能要用到好几种语言,这是为了应用各个语言的特点和
方便性,即选中一种语言作为主要的开发语言,而选其他的语言作为辅助,如选择vb作为主开发工
具,而可以用vc来开发一些用到的系统方面的函数,以便利用vc的mfc和快速执行的特点。
3.只要这一门语言是完整的编程语言,不同的编程语言是能写出同样的应用软件的,不过系统软件
就不好说了
4.编同一个软件,用不同的语言,体积是不同的。汇编最小吧
5.没有一种语言是别的语言的基础,学语言没有基础而言。不能说学会英语了就一定能学好汉语,
呵呵
6.那些黑客和能破解软件的高手不一定需要懂编程,因为现在好多的高手已经开发了大量的傻瓜式
软件。当然,要成为真正的高手,编程时必须的,你要开发自己的软件嘛
7.想学编程如果是编写应用软件,没必要懂计算机软硬件和操作系统,当然要编写系统软件就需要
了
8.我就是自学学会编程的,只要你的智力正常,就能学会,呵呵,开玩笑的
9.如果仅仅向编写一些应用软件,不进行驱动程序的开发,你懂得vb就行了。这个开发环境很容易
学习,建议你买一本《Visual Basic程序设计基础教程》,按照里面的章节练习就行了。不要有什
么压力,编程很容易的
10当然一个软件中能用到几种编程语言,建议你参见我在
http://..com/question/20641925.html上的回答
11如果要察看软件是那种语言写的,你要懂得PE结构,自己看看msdn
Ⅳ 数学与数学应用这个专业怎么样
数学专业,在大众化的眼光看来,毕业后的就业前景无非是当老师或者搞科研,似乎太古板且就业道路狭窄。然而,这些都是偏见,数学专业毕业的研究生早已是金融界、IT界、科研界的“香饽饽”,数学专业的就业前景有你看不见的“前途似锦”!
在大学的数学学院里,除了基础数学专业外,大多数还设置了应用数学、信息与计算科学、概率与统计精算、数学与控制科学等专业。这些现代数学的分支超越了传统数学的范畴,延伸到了各个社会领域,以数学为工具探讨和解决非数学问题,为人类社会发展做出了巨大的贡献。当然,这些专业的学生也受到了各个相关领域的欢迎。
基础数学:适合做研究或从事教学
基础数学又叫纯粹数学,即按照数学内部的需要,或未来可能的应用,对数学结构本身的内在规律进行研究,而并不要求同解决其他学科的实际问题有直接的联系,只是以纯粹形式研究事物的数量关系和空间形式。
基础数学是数学科学的核心。它不仅是其它应用性数学分支的基础,而且也为自然科学、技术科学及社会科学提供必不可少的语言、工具和方法。微分几何、数学物理、偏微分方程等都属于基础数学范畴。人们耳熟能详的陈景润证明“1+2”哥德巴赫猜想的故事就发生在这个领域。
●就业前景
该专业需要学生具备扎实的数学理论基础,为高等院校和科研机构输送数学、应用数学及相关学科的研究生。前几年相对于数学学科其他几个专业来说,就业面相对狭窄,但是这几年各门与数学相关的学科发展迅速,这方面所需要的研究和教学人才的数量也大大增加,尤其是与数学相关联学科的教学人才大多数需要扎实的基础数学基础,因此需求量也增多了。
计算数学:涉及众多交叉学科
计算数学是伴随着计算机的出现而迅猛发展起来的新学科,涉及计算物理、计算化学、计算力学、计算材料学、环境科学、地球科学、金融保险等众多交叉学科。它运用现代数学理论与方法解决各类科学与工程问题,分析和提高计算的可靠性、有效性和精确性,研究各类数值软件的开发技术。既突出了解决信息、电子与计算机领域中的某些核心理论技术问题,又注意到从这些高新技术中抽象出新的数学理论;在保持应用数学与计算数学主体研究方向优势的基础上,重视并加强信息科学的数学基础、数据分析与统计计算、科学计算、现代优化、电子系统的数值模拟、生物系统的数学建模等研究。
专业背景:要求考生具备基础数学、应用数学、信息技术、计算机科学、数据处理和系统分析,工程学、以及数字图像等学科知识。
研究方向:工程问题数值方法、发展方程与动力系统的数值方法、数值逼近与数字图像处理、计算机图形学与计算机软件、光学与电磁学中的数学问题等。
●就业前景
站在数学的肩膀上,这个方向的同学考博或出国占极大优势。研究生毕业如果从事程序开发工作,薪水一般较高,但工作强度也相对较大。
另外,这个专业的毕业生还可到各大高校从事教学工作,既可以进一步开展研究,也为培养专业人才作贡献。
概率和统计:政府部门需求量大增
作为数学的分支,概率学是研究随机事件的一门科学技术,涉及工程、生物学、化学、遗传学、博弈论、经济学等多方面的应用,几乎遍及所有的科学技术领域,可以说是各种预测的基石。统计学是关于收集、整理、分析和解释统计数据的科学,主要通过利用概率论建立数学模型,收集所观察系统的数据,进行量化的分析、总结,并进而进行推断和预测,为相关决策提供依据和参考。
概率论与数理统计是本世纪迅速发展的学科,研究各种随机现象的本质与内在规律性以及自然科学、社会科学等各个学科中各种类型数据的科学的综合处理及统计推断方法。随着人类社会各种体系的日益庞大、复杂、精密,计算机的广泛使用,概率统计的重要性将越来越大。
●就业前景
主要到企业、事业单位和经济、政府管理部门从事统计调查、统计信息管理、数量分析等开发、应用和管理工作,或在科研、教育部门从事研究和教学工作。就业机会非常广泛,一些金融部门和单位对统计学专业人才的需求甚至已经超过了一些热门的经济学专业。尤其是近年来,政府部门决策强调科学性,统计部门的力量增大,因此每年政府招收公务员时,对统计方面的毕业生需求也大增。
应用数学:发展空间最广阔
应用数学包括两个部分,一部分就是与应用有关的数学,另外一部分是数学的应用,即以数学为工具,探讨解决科学、工程学和社会学方面的问题。应用数学主要是应用于两个领域,一是计算机,随着计算机的飞速发展,需要一大批懂数学的软件工程师做相应的数据库的开发;二是经济学,现在的经济学有很多都需要用非常专业的数学进行分析,应用数学有很多相关课程本身设计就是以经济学实例为基础的。
应用数学与纯数学最大的区别就是与实际的结合:设法解决自然现象与社会发展提出的数学问题,并将其探讨结果应用回到自然界与社会中去。
●就业前景
无论是进行科研数据分析、软件开发、三维动画制作,还是从事金融保险、国际经济与贸易、工商管理、化工制药、通讯工程、建筑设计等,都离不开相关的数学专业知识。该专业毕业生的就业去向也大多集中在与信息产业相关的各大集团公司、科研设计单位、金融机构等,并且在出国或深造上也有很大的优势。据相关人士介绍,如果本科学应用数学,报考硕士时选择发展方向时就有很大优势,尤其是金融与经济比本专业毕业生有大的优势,也能向更高层次发展。
数学教育
●就业前景
需求大,待遇稳定
就业分析:我国数学教师需求量最大。数学教师十分抢手。拓宽师资渠道,面向社会招聘教师,已成为教育人事制度改革的重要举措。这无疑为数学教育专业毕业生就业提供了很大的发展空间。
Ⅳ 哪位计算机达人知道概率如何用编程实现啊
详细代码请参阅我下面给出的参考地址 东西太多 不好复制
很多算法的每一个计算步骤都是固定的,而在下面我们要讨论的概率算法,允许算法在执行的过程中随机选择下一个计算步骤。许多情况下,当算法在执行过程中面临一个选择时,随机性选择常比最优选择省时。因此概率算法可在很大程度上降低算法的复杂度。
概率算法的一个基本特征是对所求解问题的同一实例用同一概率算法求解两次可能得到完全不同的效果。这两次求解问题所需的时间甚至所得到的结果可能会有相当大的差别。一般情况下,可将概率算法大致分为四类:数值概率算法,蒙特卡罗(Monte Carlo)算法,拉斯维加斯(Las Vegas)算法和舍伍德(Sherwood)算法。
数值概率算法常用于数值问题的求解。这类算法所得到的往往是近似解。而且近似解的精度随计算时间的增加不断提高。在许多情况下,要计算出问题的精确解是不可能或没有必要的,因此用数值概率算法可得到相当满意的解。
蒙特卡罗算法用于求问题的准确解。对于许多问题来说,近似解毫无意义。例如,一个判定问题其解为“是”或“否”,二者必居其一,不存在任何近似解答。又如,我们要求一个整数的因子时所给出的解答必须是准确的,一个整数的近似因子没有任何意义。用蒙特卡罗算法能求得问题的一个解,但这个解未必是正确的。求得正确解的概率依赖于算法所用的时间。算法所用的时间越多,得到正确解的概率就越高。蒙特卡罗算法的主要缺点就在于此。一般情况下,无法有效判断得到的解是否肯定正确。
拉斯维加斯算法不会得到不正确的解,一旦用拉斯维加斯算法找到一个解,那么这个解肯定是正确的。但是有时候用拉斯维加斯算法可能找不到解。与蒙特卡罗算法类似。拉斯维加斯算法得到正确解的概率随着它用的计算时间的增加而提高。对于所求解问题的任一实例,用同一拉斯维加斯算法反复对该实例求解足够多次,可使求解失效的概率任意小。
舍伍德算法总能求得问题的一个解,且所求得的解总是正确的。当一个确定性算法在最坏情况下的计算复杂性与其在平均情况下的计算复杂性有较大差别时,可以在这个确定算法中引入随机性将它改造成一个舍伍德算法,消除或减少问题的好坏实例间的这种差别。舍伍德算法精髓不是避免算法的最坏情况行为,而是设法消除这种最坏行为与特定实例之间的关联性。
Ⅵ 请教!!
可读 有两种说法
1 是指 文件属性是 -R 的(文件可读属性)
2 指 文件是可视化编辑的,譬如 .txt、.html文件等,都是可以直接读写的,二进制文件、.exe文件就是不可读文件
可执行文件一般指 .exe、.com的文件,是可以独立执行完成预定任务的一个程序
什么是数据库?
数据库是以某种文件结构存储的一系列信息表,这种文件结构使您能够访问这些表、选择表中的列、对表进行排序以及根据各种标准选择行。数据库通常有多个 索引与这些表中的许多列相关联,所以我们能尽可能快地访问这些表。
以员工记录为例,您可以设想一个含有员工姓名、地址、工资、扣税以及津贴等内容的表。让我们考虑一下这些内容可能如何组织在一起。您可以设想一个表包含员工姓名、地址和电话号码。您希望保存的其它信息可能包括工资、工资范围、上次加薪时间、下次加薪时间、员工业绩评定等内容。
这些内容是否应保存在一个表格中?几乎可以肯定不应该如此。不同类别的员工的工资范围可能没有区别;这样,您可以仅将员工类型储存在员工记录表中,而将工资范围储存在另一个表中,通过类型编号与这个表关联。考虑以下情况:
Key Lastname SalaryType SalaryType Min Max
1 Adams 2 1 30000 45000
2 Johnson 1 2 45000 60000
3 Smyth 3 3 60000 75000
4 Tully 1
5 Wolff 2
SalaryType 列中的数据引用第二个表。我们可以想象出许多种这样的表,如用于存储居住城市和每个城市的税值、健康计划扣除金额等的表。每个表都有一个主键列(如上面两个表中最左边的列)和若干数据列。在数据库中建立表格既是一门艺术,也是一门科学。这些表的结构由它们的范式指出。我们通常说表属于1NF、2NF 或 3NF。
第一范式:表中的每个表元应该只有一个值(永远不可能是一个数组)。(1NF)
第二范式:满足 1NF,并且每一个非主键列完全依赖于主键列。这表示主键和该行中的剩余表元之间是 1 对 1 的关系。(2NF)
第三范式:满足 2NF,并且所有非主键列是互相独立的。任何一个数据列中包含的值都不能从其他列的数据计算得到。(3NF)
现在,几乎所有的数据库都是基于“第三范式 (3NF)”创建的。这意味着通常都有相当多的表,每个表中的信息列都相对较少。
从数据库中获取数据
假设我们希望生成一个包含员工及其工资范围的表,在我们设计的一个练习中将使用这个表。这个表格不是直接存在在数据库中,但可以通过向数据库发出一个查询来构建它。我们希望得到如下所示的一个表:
Name Min Max
Tully $30,000.00 $45,000.00
Johnson $30,000.00 $45,000.00
Wolff $45,000.00 $60,000.00
Adams $45,000.00 $60,000.00
Smyth $60,000.00 $75,000.00
我们发现,获得这些表的查询形式如下所示
SELECT DISTINCTROW Employees.Name, SalaryRanges.Min,
SalaryRanges.Max FROM Employees INNER JOIN SalaryRanges ON Employees.SalaryKey = SalaryRanges.SalaryKey
ORDER BY SalaryRanges.Min;
这种语言称为结构化查询语言,即 sql,而且它是几乎目前所有数据库都可以使用的一种语言。SQL-92 标准被认为是一种基础标准,而且已更新多次。
数据库的种类
PC 上的数据库,如 dBase、Borland Paradox、Microsoft Access 和 FoxBase。
数据库服务器:IBM DB/2、Microsoft SQL Server、 Oracle、Sybase、SQLBase 和 XDB。
所有这些数据库产品都支持多种相对类似的 SQL 方言,因此,所有数据库最初看起来好象可以互换。每种数据库都有不同的性能特征,而且每一种都有不同的用户界面和编程接口。
ODBC
如果我们能够以某种方式编写不依赖于特定厂商的数据库的代码,并且能够不改变自己的调用程序即可从这些数据库中得到相同的结果,那将是一件很好的事。如果我们可以仅为所有这些数据库编写一些封装,使它们具有相似的编程接口,这种对数据库编程独立于供应商的特性将很容易实现。
什么是 JDBC?
JDBC 是对 ODBC API 进行的一种面向对象的封装和重新设计,它易于学习和使用,并且它真正能够使您编写不依赖厂商的代码,用以查询和操纵数据库。尽管它与所有 Java API 一样,都是面向对象的,但它并不是很高级别的对象集.
除 Microsoft 之外,多数厂商都采用了 JDBC,并为其数据库提供了 JDBC 驱动程序;这使您可轻松地真正编写几乎完全不依赖数据库的代码。另外,JavaSoft 和 Intersolv 已开发了一种称为 JDBC-ODBC Bridge 的产品,可使您连接还没有直接的 JDBC 驱动程序的数据库。支持 JDBC 的所有数据库必须至少可以支持 SQL-92 标准。这在很大程度上实现了跨数据库和平台的可移植性。
安装和使用 JDBC
JDBC 的类都被归到 java.sql 包中,在安装 Java JDK 1.4时会自动安装。然而,如果您想使用 JDBC-ODBC 桥。JDBC-ODBC 驱动程序可从 Sun 的 Java 网站 (http://java.sun.com/) 轻松地找到并下载。在您扩充并安装了这个驱动程序后,必须执行下列步骤:
将 \jdbc-odbc\classes; 路径添加到您的 PATH 环境变量中。
将 \jdbc-odbc\classes; 路径添加到您的 CLASSPATH 环境变量中。
JDBC 驱动程序的类型
Java 程序连接数据库的方法实际上有四种:
1. JDBC-ODBC 桥和 ODBC 驱动程序 -- 在这种方式下,这是一个本地解决方案,因为 ODBC 驱动程序和桥代码必须出现在用户的每台机器中。从根本上说这是一个临时解决方案。
2. 本机代码和 Java 驱动程序 -- 它用另一个本地解决方案(该平台上的 Java 可调用的本机代码)取代 ODBC 和 JDBC-ODBC 桥。
3. JDBC 网络的纯 Java 驱动程序 -- 由 Java 驱动程序翻译的 JDBC 形成传送给服务器的独立协议。然后,服务器可连接任何数量的数据库。这种方法使您可能从客户机 Applet 中调用服务器,并将结果返回到您的 Applet。在这种情况下,中间件软件提供商可提供服务器。
4. 本机协议 Java 驱动程序 -- Java 驱动程序直接转换为该数据库的协议并进行调用。这种方法也可以通过网络使用,而且可以在 Web 浏览器的 Applet 中显示结果。在这种情况下,每个数据库厂商将提供驱动程序。
如果您希望编写代码来处理 PC 客户机数据库,如 dBase、Foxbase 或 Access,则您可能会使用第一种方法,并且拥有用户机器上的所有代码。更大的客户机-服务器数据库产品(如 IBM 的 DB2)已提供了第 3 级别的驱动程序。
两层模型和三层模型
当数据库和查询它的应用程序在同一台机器上,而且没有服务器代码的干预时,我们将生成的程序称为两层模型。一层是应用程序,而另一层是数据库。在 JDBC-ODBC 桥系统中通常是这种情况。
当一个应用程序或 applet 调用服务器,服务器再去调用数据库时,我们称其为三层模型。当您调用称为“服务器”的程序时通常是这种情况。
编写 JDBC 代码访问数据库
用 ODBC 注册您的数据库
连接数据库
所有与数据库有关的对象和方法都在 java.sql 包中,因此在使用 JDBC 的程序中必须加入 "import java.sql.* "。 JDBC 要连接 ODBC 数据库,您必须首先加载 JDBC-ODBC 桥驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
该语句加载驱动程序,并创建该类的一个实例。然后,要连接一个特定的数据库,您必须创建 Connect 类的一个实例,并使用 URL 语法连接数据库。
String url = "jdbc:odbc:Northwind";
Connection con = DriverManager.getConnection(url);
请注意,您使用的数据库名是您在 ODBC 设置面板中输入的“数据源”名称。
URL 语法可能因数据库类型的不同而变化极大。
jdbc:subprotocol:subname
第一组字符代表连接协议,并且始终是 jdbc。还可能有一个子协议,在此处,子协议被指定为 odbc。它规定了一类数据库的连通性机制。如果您要连接其它机器上的数据库服务器,可能也要指定该机器和一个子目录:
jdbc:bark//doggie/elliott
最后,您可能要指定用户名和口令,作为连接字符串的一部分:
jdbc:bark//doggie/elliot;UID=GoodDog;PWD=woof
访问MSSQL Server方法:(驱动程序需要:msutil.jar,msbase.jar,mssqlServer.jar)
DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver
URL=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo
username=sa
password=
maxcon=10
mincon=1
poolName=SkyDev
利用我们开发的数据库类,使用方法如下:
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost",
1433, "demo", "sa", ""));
Connection con = DbO.getConnection();
//类代码(不含连接工厂实现)
package skydev.moles.data;
public final class SqlServerConnectionFactory
extends ConnectionFactory {
private final String dbDriver =
"com.microsoft.jdbc.sqlserver.SQLServerDriver";
private String host;
private int port;
private String databaseName;
public SqlServerConnectionFactory() {
super.setDriverName(dbDriver);
}
/**
*
* @param host 数据库所在的主机名:如"localhost"
* @param port SQL服务器运行的端口号,如果使用缺省值 1433,传入一个负数即可
* @param databaseName 数据库名称
* @param userName 用户名
* @param password 口令
*/
public SqlServerConnectionFactory(String host,
int port,
String databaseName,
String userName,
String password) {
this.setHost(host);
this.setPort(port);
this.setDatabaseName(databaseName);
this.setUserName(userName);
this.setPassword(password);
init();
}
private void init() {
super.setDriverName(dbDriver);
super.setUrl("jdbc:microsoft:sqlserver://" + host.trim() + ":" +
new Integer(port).toString() + ";DatabaseName=" +
databaseName.trim());
//super.setUrl("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo");
}
……
//------------------------------------------------------------------------------------
访问MySQL的方法:
DBDriver=com.mysql.jdbc.Driver
URL=jdbc:mysql://localhost/demo
username=
password=
maxcon=5
mincon=1
poolName=zhengmao
访问数据库
一旦连接到数据库,就可以请求表名以及表列的名称和内容等信息,而且您可以运行 SQL 语句来查询数据库或者添加或修改其内容。可用来从数据库中获取信息的对象有:
DatabaseMetaData 有关整个数据库的信息:表名、表的索引、数据库产品的名称和版本、数据库支持的操作。
ResultSet 关于某个表的信息或一个查询的结果。您必须逐行访问数据行,但是您可以任何顺序访问列。
ResultSetMetaData 有关 ResultSet 中列的名称和类型的信息。
尽管每个对象都有大量的方法让您获得数据库元素的极为详细的信息,但在每个对象中都有几种主要的方法使您可获得数据的最重要信息。然而,如果您希望看到比此处更多的信息,建议您学习文档以获得其余方法的说明。
ResultSet
ResultSet 对象是 JDBC 中最重要的单个对象。从本质上讲,它是对一个一般宽度和未知长度的表的一种抽象。几乎所有的方法和查询都将数据作为 ResultSet 返回。ResultSet 包含任意数量的命名列,您可以按名称访问这些列。它还包含一个或多个行,您可以按顺序自上而下逐一访问。在您使用 ResultSet 之前,必须查询它包含多少个列。此信息存储在 ResultSetMetaData 对象中。
//从元数据中获得列数
ResultSetMetaData rsmd;
rsmd = results.getMetaData();
numCols = rsmd.getColumnCount();
当您获得一个 ResultSet 时,它正好指向第一行之前的位置。您可以使用 next() 方法得到其他每一行,当没有更多行时,该方法会返回 false。由于从数据库中获取数据可能会导致错误,您必须始终将结果集处理语句包括在一个 try 块中。
您可以多种形式获取 ResultSet 中的数据,这取决于每个列中存储的数据类型。另外,您可以按列序号或列名获取列的内容。请注意,列序号从 1 开始,而不是从 0 开始。ResultSet 对象的一些最常用方法如下所示。
getInt(int); 将序号为 int 的列的内容作为整数返回。
getInt(String); 将名称为 String 的列的内容作为整数返回。
getFloat(int); 将序号为 int 的列的内容作为一个 float 型数返回。
getFloat(String); 将名称为 String 的列的内容作为 float 型数返回。
getDate(int); 将序号为 int 的列的内容作为日期返回。
getDate(String); 将名称为 String 的列的内容作为日期返回。
next(); 将行指针移到下一行。如果没有剩余行,则返回 false。
Close(); 关闭结果集。
getMetaData(); 返回 ResultSetMetaData 对象。
ResultSetMetaData
您使用 getMetaData() 方法从 ResultSet 中获取 ResultSetMetaData 对象。您可以使用此对象获得列的数目和类型以及每一列的名称。
getColumnCount(); 返回 ResultSet 中的列数。
getColumnName(int); 返回列序号为 int 的列名。
getColumnLabel(int); 返回此列暗含的标签。
isCurrency(int); 如果此列包含带有货币单位的一个数字,则返回 true。
isReadOnly(int); 如果此列为只读,则返回 true。
isAutoIncrement(int); 如果此列自动递增,则返回 true。这类列通常为键,而且始终是只读的。
getColumnType(int); 返回此列的 SQL 数据类型。这些数据类型包括
BIGINT
BINARY
BIT
CHAR
DATE
DECIMAL
DOUBLE
FLOAT
INTEGER
LONGVARBINARY
LONGVARCHAR
NULL
NUMERIC
OTHER
REAL
SMALLINT
TIME
TIMESTAMP
TINYINT
VARBINARY
VARCHAR
DatabaseMetaData
DatabaseMetaData 对象可为您提供整个数据库的信息。您主要用它获取数据库中表的名称,以及表中列的名称。由于不同的数据库支持不同的 SQL 变体,因此,也有多种方法查询数据库支持哪些 SQL 方法。
getCatalogs() 返回该数据库中的信息目录列表。使用 JDBC-ODBC Bridge 驱动程序,您可以获得用 ODBC 注册的数据库列表。这很少用于 JDBC-ODBC 数据库。
getTables(catalog, schema,tableNames, columnNames) 返回表名与 tableNames 相符而且列名与 columnNames 相符的所有表的说明。
getColumns(catalog, schema,tableNames, columnNames) 返回表名与 tableNames 相符而且列名与 columnNames 相符的所有表列说明。
getURL(); 获得您所连接的 URL 名称。
getDriverName(); 获得您所连接的数据库驱动程序的名称。
获取有关表的信息
您可以使用 DataBaseMetaData 的 getTables() 方法来获取数据库中表的信息。这个方法有如下4个 String 参数:
results =dma.getTables(catalog, schema, tablemask, types[]);
其中参数的意义是:
Catalog 要在其中查找表名的目录名。对于 JDBC-ODBC 数据库以及许多其他数据库而言,可将其设置为 null。这些数据库的目录项实际上是它在文件系统中的绝对路径名称。
Schema 要包括的数据库“方案”。许多数据库不支持方案,而对另一些数据库而言,它代表数据库所有者的用户名。一般将它设置为 null。
Tablemask 一个掩码,用来描述您要检索的表的名称。如果您希望检索所有表名,则将其设为通配符 %。请注意,SQL 中的通配符是 % 符号,而不是一般 PC 用户的 * 符号。
types[] 这是描述您要检索的表的类型的 String 数组。数据库中通常包括许多用于内部处理的表,而对作为用户的您没什么价值。如果它是空值,则您会得到所有这些表。如果您将其设为包含字符串“TABLES”的单元素数组,您将仅获得对用户有用的表格。
一个简单的 JDBC 程序
我们已经学习了 JDBC 的所有基本功能,现在我们可以编写一个简单的程序,该程序打开数据库,打印它的表名以及某一表列的内容,然后对该数据库执行查询。此程序如下所示:
package skydevkit;
import java.sql.*;
public class JdbcOdbc_test {
ResultSet results;
ResultSetMetaData rsmd;
DatabaseMetaData dma;
Connection con;
public JdbcOdbc_test() throws SQLException {
String url = "jdbc:odbc:Northwind";
try {
//加载 JDBC-ODBC 桥驱动程序
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection(url);//连接数据库
dma = con.getMetaData();//获取数据库的元数据
System.out.println("Connected to:" + dma.getURL());
System.out.println("Driver " + dma.getDriverName());
} catch (Exception e) {
System.out.println(e);
}
try {
Statement stmt = con.createStatement();
results = stmt.executeQuery("select * from 客户;");
ResultSetMetaData resultMetaData = results.getMetaData();
int cols = resultMetaData.getColumnCount();
String resultRow = "";
for (int i = 1; i < cols; i++) {
resultRow += resultMetaData.getColumnName(i) + ";";
}
System.out.println(resultRow);
while (results.next()) {
resultRow = "";
for (int i = 1; i < cols; i++) {
try {
resultRow += results.getString(i) + ";";
} catch (NullPointerException e) {
System.out.println(e.getMessage());
}
}
System.out.println(resultRow);
}
} catch (Exception e) {
System.out.println("query exception");
} finally {
results.close();
}
}
}
补充高级内容
关于调用SQLServer存储过程的例子:(用到了我们开发的数据库连接类)
CREATE PROCEDURE [dbo].[sp_getStudentByName](@name char(10))
AS
Select * from Students where [Name]=@name
GO
DbObject DbO = new DbObject(new SqlServerConnectionFactory("localhost",
1433, "demo", "sa", ""));
Connection con = DbO.getConnection();
CallableStatement pstmt = null;
System.out.println("TestDB1()............");
/* try {
pstmt = con.prepareCall("{call sp_getStudentById(?)}");
pstmt.setInt(1, 1);
}*/
try {
pstmt = con.prepareCall("{call sp_getStudentByName(?)}"); //注意参数如何传递
pstmt.setString(1, "Tom");
}
……
使用输出参数:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY
GO
try {
pstmt = con.prepareCall("{call sp_insertStudent(?,?,?)}");
pstmt.setString(1, "zengqingsong");
pstmt.setInt(2, 22);
pstmt.registerOutParameter(3, Types.INTEGER);
pstmt.executeUpdate();
int id = pstmt.getInt(3);
System.out.println(id);
}
使用返回参数的例子:
CREATE PROCEDURE [dbo].[sp_insertStudent](@name char(10),@age int,@id int OUTPUT) AS
insert into Students([Name],[Age]) values (@name,@age)
select @id=@@IDENTITY –测试输出参数
return 30 –测试返回30
GO
try {
pstmt = con.prepareCall("{?=call sp_insertStudent(?,?,?)}");
pstmt.setString(2, "zengqingsong");
pstmt.setInt(3, 22);
pstmt.registerOutParameter(4, Types.INTEGER);
pstmt.registerOutParameter(1, Types.INTEGER);
int ret = pstmt.executeUpdate(); //执行影响的行数
int ret2 = pstmt.getInt(1); //返回参数(输出参数)
int id = pstmt.getInt(4); //输出参数
System.out.println(ret);
System.out.println(ret2);
System.out.println(id);
Ⅶ 三菱PLC编程应聘需要注意什么可能会问什么问题呢对于无经验的需要怎么回答才有可能通过呢
一般不会现场接线,主要是问接触过哪些品牌型号,能不能看懂程序,能不能编一些较复杂的程序,例如数据处理,通讯之类的,可能现场要用熟悉的机型编个小程序试试。例如正反转,星三角启动,计时计数,顺序控制,等
Ⅷ 卡尔曼滤波中的真实值,测量值,预测值,估计值怎么区分
卡尔曼滤波中的真实值,测量值,预测值,估计值区分方法:
1、真实值为目标运动的真实轨迹上的坐标,是理论上假设的一个参考值,不带偏差时的真值;
2、测量值则是kalman滤波中的量测矩阵Z,是测量设备/传感器/等等测到的数值,带有偏差;
3、预测值则是通过状态转移矩阵,由上一时刻的估计值得到现在时刻的预测值,即x(k|k-1)=F*x(k-1|k-1),从上一时刻的估计值出发,先验估计出来的值,带有偏差;
4、估计值就是经kalman滤波得到的状态更新值x(k|k),是综合考虑测量值和预测值,后验估计出来的值,也有偏差,只是偏差比测量值和预测值的都小。
(8)概率编程实例扩展阅读:
卡尔曼滤波(Kalman filtering)是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
斯坦利·施密特(Stanley Schmidt)首次实现了卡尔曼滤波器。卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。
Kalman滤波便于计算机编程实现,并能够对现场采集的数据进行实时的更新和处理,Kalman滤波是目前应用最为广泛的滤波方法,在通信,导航,制导与控制等多领域得到了较好的应用。
参考资料来源:网络-卡尔曼滤波
Ⅸ 倍率和概率的区别是什么
二倍率与四倍率是指塔吊滑轮组的倍数。二倍率是两绳,四倍率是四绳。
二倍率与四倍率没啥区别,只是在最大臂长时二倍率能多吊一些,而四倍率在最大力矩时能多吊些。
定义:表征随机事件发生可能性大小的量,是事件本身所固有的不随人的主观意愿而改变的一种属性。概率,又称或然率、机会率或机率、可能性,是数学概率论的基本概念,是一个在0到1之间的实数,是对随机事件发生的可能性的度量。表示一个事件发生的可能性大小的数,叫做该事件的概率。它是随机事件出现的可能性的量度,同时也是概率论最基本的概念之一。人们常说某人有百分之多少的把握能通过这次考试,某件事发生的可能性是多少,这都是概率的实例。但如果一件事情发生的概率是1/n,不是指n次事件里必有一次发生该事件,而是指此事件发生的频率接近于1/n这个数值。
倍率,使操作者在加工期间能够修改速度的编程值(例如,进给率、主轴转速等)的手工控制功能。具体的看网络!
Ⅹ 《概率编程实战》epub下载在线阅读全文,求百度网盘云资源
《概率编程实战》([美]艾维·费弗 (Avi Pfeffer))电子书网盘下载免费在线阅读
链接:https://pan..com/s/1t69i_7zyBDoE6ApMaHeRrQ
书名:概率编程实战
作者:[美]艾维·费弗 (Avi Pfeffer)
译者:姚军
出版社:人民邮电出版社
出版年份:2017-4
页数:368
内容简介:
概率推理是不确定性条件下做出决策的重要方法,在许多领域都已经得到了广泛的应用。概率编程充分结合了概率推理模型和现代计算机编程语言,使这一方法的实施更加简便,现已在许多领域(包括炙手可热的机器学习)中崭露头角,各种概率编程系统也如雨后春笋般出现。本书的作者Avi Pfeffer正是主流概率编程系统Figaro的首席开发者,他以详尽的实例、清晰易懂的解说引领读者进入这一过去令人望而生畏的领域。通读本书,可以发现概率编程并非“疯狂科学家”们的专利,无需艰深的数学知识,就可以构思出解决许多实际问题的概率模型,进而利用现代概率编程系统的强大功能解题。本书既可以作为概率编程的入门读物,也可以帮助已经有一定基础的读者熟悉Figaro这一概率编程利器。
作者简介:
Avi Pfeffer是概率编程的先驱,Figaro概率编程语言的首席设计者和开发者。在Charles River Analytics公司,Avi Pfeffer致力于Figaro在多个问题上的应用,包括恶意软件分析、汽车健康监控、气象模型建立和工程系统评估。在闲暇时,Avi Pfeffer是一位歌手、作曲家和音乐制作人。他和妻子及三个孩子在马萨诸塞州坎布里奇生活。