验证码生成器类

  1. package com.itest.util;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.p_w_picpath.BufferedImage;
  6. import java.io.File;
  7. import java.io.FileOutputStream;
  8. import java.io.IOException;
  9. import java.io.OutputStream;
  10. import java.util.Random;
  11. import com.itest.util.Md5Util;
  12. import javax.p_w_picpathio.ImageIO;
  13. import com.itest.util.*;
  14. /**
  15. * 验证码工具类
  16. *
  17. */
  18. public class IdentifyUtil {
  19. private int width = 60;
  20. private int height = 20;
  21. public IdentifyUtil(int width, int height) {
  22. this.width = width > 0 ? width : this.width;
  23. this.height = height > 0 ? height : this.height;
  24. }
  25. /**
  26. * 获得随即字符串
  27. *
  28. * @return
  29. */
  30. public String getRandomString() {
  31. IdentifyData data=new IdentifyData();
  32. Random random = new Random();
  33. int rand=random.nextInt(data.data.length());
  34. data.data.substring(rand, rand+4);
  35. return  data.data.substring(rand, rand+4);
  36. }
  37. /**
  38. *
  39. * @param randomString
  40. */
  41. public String createImage(String path,String randomString) {
  42. BufferedImage p_w_picpath = new BufferedImage(width, height,
  43. BufferedImage.TYPE_INT_RGB);
  44. // 获取图形上下文
  45. Graphics g = p_w_picpath.getGraphics();
  46. // 设定背景色
  47. g.setColor(getRandColor(200, 250));
  48. g.fillRect(0, 0, width, height);
  49. // 设定字体
  50. g.setFont(new Font("楷体", Font.BOLD, 20));
  51. Random random = new Random();
  52. // 随机产生155条干扰线,使图象中的认证码不易被其它程序探测到
  53. g.setColor(getRandColor(160, 200));
  54. for (int i = 0; i < 155; i++){
  55. int x = random.nextInt(width);
  56. int y = random.nextInt(height);
  57. int xl = random.nextInt(12);
  58. int yl = random.nextInt(12);
  59. g.drawLine(x, y, x + xl, y + yl);
  60. }
  61. char[] rondomChars=randomString.toCharArray();
  62. for (int i = 0; i < rondomChars.length; i++){
  63. g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));
  64. g.drawChars(rondomChars, i, 1, 20* i + 8,24);
  65. }
  66. // 图象生效
  67. g.dispose();
  68. String fileName=Md5Util.MD5(randomString);
  69. path+=fileName+".jpg";
  70. File file= new File(path);
  71. OutputStream os=null;
  72. try{
  73. os=new FileOutputStream (file);
  74. ImageIO.write(p_w_picpath, "JPEG", os);
  75. }catch (IOException e) {
  76. System.out.println("系统信息:[at:IdentifyUtil],写入文件错误!");
  77. e.printStackTrace();
  78. }catch (Exception e){
  79. e.printStackTrace();
  80. }finally{
  81. try{
  82. os.flush();
  83. os.close();
  84. }catch(IOException e){
  85. System.out.println("系统信息:[at:IdentifyUtil],未能正确保存验证码图片文件!");
  86. }
  87. }
  88. return  fileName+".jpg";
  89. }
  90. /**
  91. * 获得随即颜色值
  92. *
  93. * @param fc
  94. * @param bc
  95. * @return
  96. */
  97. private Color getRandColor(int fc, int bc) {
  98. // 给定范围获得随机颜色
  99. Random random = new Random();
  100. if (fc > 255)
  101. fc = 255;
  102. if (bc > 255)
  103. bc = 255;
  104. int r = fc + random.nextInt(bc - fc);
  105. int g = fc + random.nextInt(bc - fc);
  106. int b = fc + random.nextInt(bc - fc);
  107. return new Color(r, g, b);
  108. }
  109. /*
  110. * 删除文件
  111. */
  112. public Boolean delIdentify(String failname){
  113. File file= new File(failname);
  114. file.delete();
  115. return true;
  116. }
  117. }

随机中文字符数据类。提供中文字符供生成器从中随机选取字符此处只做演示,实际使用时候可由文件代替也可从数据库总取出

  1. package com.itest.util;
  2. public class IdentifyData {
  3. public String data="冯诺伊曼是二十世纪最重要的数学家之一在纯粹数学和应用数学方面都有杰出的贡献他的工作大致可以分为两个时期年以前主要是纯粹数学的研究在数理逻辑方面提出简单而明确的序数理论并对集合论进行新的公理化其中明确区别集合与类其后他研究希尔伯特空间上线性自伴算子谱理论从而为量子力学打下数学基础年起他证明平均遍历定理开拓了遍历理论的新领域年他运用紧致群解决了希尔伯特第五问题此外他还在测度论格论和连续几何学方面也有开创性的贡献从年他和默里合作创造了算子环理论即现在所谓的冯诺伊曼代数年以后冯诺伊曼转向应用数学如果说他的纯粹数学成就属于数学界那么他在力学经济学数值分析和电子计算机方面的工作则属于全人类第二次世界大战开始冯诺伊曼因战事的需要研究可压缩气体运动建立冲击波理论和湍流理论发展了流体力学从年起他同莫根施特恩合作写作博弈论和经济行为一书这是博弈论又称对策论中的经典著作使他成为数理经济学的奠基人之一冯诺伊曼对世界上第一台电子计算机电子数字积分计算机的设计提出过建议年月他在共同讨论的基础上起草电子离散变量自动计算机设计报告初稿这对后来计算机的设计有决定性的影响特别是确定计算机的结构采用存储程序以及二进制编码等至今仍为电子计算机设计者所遵循年冯诺依曼开始研究程序编制问题他是现代数值分析——计算数学的缔造者之一他首先研究线性代数和算术的数值计算后来着重研究非线性微分方程的离散化以及稳定问题并给出误差的估计他协助发展了一些算法特别是蒙特卡罗方法年代末他开始研究自动机理论研究一般逻辑理论以及自复制系统在生命的最后时刻他深入比较天然自动机与人工自动机他逝世后其未完成的手稿在年以计算机与人脑为名出版冯诺伊曼的主要著作收集在冯诺伊曼全集卷中无论在纯粹数学还是在应用数学研究方面冯诺依曼都显示了卓越的才能取得了众多影响深远的重大成果不断变换研究主题常常在几种学科交叉***中获得成就是他的特色最简单的来说他的精髓贡献是点进制思想与程序内存思想回顾世纪科学技术的辉煌发展时不能不提及世纪最杰出的数学家之一的冯诺依曼众所周知年发明的电子计算机大大促进了科学技术的进步大大促进了社会生活的进步鉴于冯诺依曼在发明电子计算机中所起到关键性作用他被西方人誉为计算机之父而在经济学方面他也有突破性成就被誉为博弈论之父在物理领域冯诺依曼在年代撰写的量子力学的数学基础已经被证明对原子物理学的发展有极其重要的价值在化学方面也有相当的造诣曾获苏黎世高等技术学院化学系大学学位与同为犹太人的哈耶克一样他无愧是上世纪最伟大的全才之一约翰冯诺依曼冯诺依曼在数学的诸多领域都进行了开创性工作并作出了重大贡献在第二次世界大战前他主要从事算子理论集合论等方面的研究年关于集合论中超限序数的论文显示了冯诺依曼处理集合论问题所特有的方式和风格他把集会论加以公理化他的公理化体系奠定了公理集合论的基础他从公理出发用代数方法导出了集合论中许多重要概念基本运算重要定理等特别在年的一篇论文中冯诺依曼就指出了任何一种公理化系统中都存在着无法判定的命题年冯诺依曼解决了希尔伯特第问题即证明了局部欧几里得紧群是李群年他又把紧群理论与波尔的殆周期函数理论统一起来他还对一般拓扑群的结构有深刻的认识弄清了它的代数结构和拓扑结构与实数是一致的他对算子代数进行了开创性工作并奠定了它的理论基础从而建立了算子代数这门新的数学分支这个分支在当代的有关数学文献中均称为冯诺依曼代数这是有限维空间中矩阵代数的自然推广冯诺依曼还创立了博弈论这一现代数学的又一重要分支年发表了奠基性的重要论文博弈论与经济行为论文中包含博弈论的纯粹数学形式的阐述以及对于实际博弈应用的详细说明文中还包含了诸如统计理论等教学思想冯诺依曼在格论连续几何理论物理动力学连续介质力学气象计算原子能和经济学等领域都作过重要的工作冯诺依曼对人类的最大贡献是对计算机科学计算机技术数值分析和经济学中的博弈论的开拓性工作现在一般认为机是世界第一台电子计算机它是由美国科学家研制的于年月日在费城开始运行其实由汤米费劳尔斯等英国科学家研制的科洛萨斯计算机比机问世早两年多于年月日在布莱奇利园区开始运行机证明电子真空技术可以大大地提高计算技术不过机本身存在两大缺点没有存储器它用布线接板进行控制甚至要搭接几天计算速度也就被这一工作抵消了机研制组的莫克利和埃克特显然是感到了这一点他们也想尽快着手研制另一台计算机以便改进年诺伊曼参加×××的研制工作该工作涉及到极为困难的计算在对原子核反应过程的研究中要对一个反应的传播做出是或否的回答解决这一问题通常需要通过几十亿次的数学运算和逻辑指令尽管最终的数据并不要求十分精确但所有的中间运算过程均不可缺少且要尽可能保持准确他所在的洛斯阿拉莫斯实验室为此聘用了一百多名女计算员利用台式计算机从早到晚计算还是远远不能满足需要无穷无尽的数字和逻辑指令如同沙漠一样把人的智慧和精力吸尽被计算机所困扰的诺伊曼在一次极为偶然的机会中知道了计算机的研制计划从此他投身到计算机研制这一宏伟的事业中建立了一生中最大的丰功伟绩年夏的一天正在火车站候车的诺伊曼巧遇戈尔斯坦并同他进行了短暂的交谈当时戈尔斯坦是美国弹道实验室的军方负责人他正参与计算机的研制工作在交谈在戈尔斯坦告诉了诺伊曼有关的研制情况具有远见卓识的诺伊曼为这一研制计划所吸引他意识到了这项工作的深远意义冯诺依曼由机研制组的戈尔德斯廷中尉介绍参加机研制小组后便带领这批富有创新精神的年轻科技人员向着更高的目标进军年他们在共同讨论的基础上发表了一个全新的存储程序通用电子计算机方案的缩写在这过程中冯诺依曼显示出他雄厚的数理基础知识充分发挥了他的顾问作用及探索问题和综合分析的能力诺伊曼以关于的报告草案为题起草了长达页的总结报告报告广泛而具体地介绍了制造电子计算机和程序设计的新思想这份报告是计算机发展史上一个划时代的文献它向世界宣告电子计算机的时×××始了方案明确奠定了新机器由五个部分组成包括运算器逻辑控制装置存储器输入和输出设备并描述了这五部分的职能和相互关系报告中诺伊曼对中的两大设计思想作了进一步的论证为计算机的设计树立了一座里程碑设计思想之一是二进制他根据电子元件双稳工作的特点建议在电子计算机中采用二进制报告提到了二进制的优点并预言二进制的采用将大简化机器的逻辑线路现在使用的计算机其基本工作原理是存储程序和程序控制它是由世界著名数学家冯诺依曼提出的美籍匈牙利数学家冯诺依曼被称为计算机之父实践证明了诺伊曼预言的正确性如今逻辑代数的应用已成为设计电子计算机的重要手段在中采用的主要逻辑线路也一直沿用着只是对实现逻辑线路的工程方法和逻辑电路的分析方法作了改进程序内存程序内存是诺伊曼的另一杰作通过对的考察诺伊曼敏锐地抓住了它的最大弱点--没有真正的存储器只在个暂存器它的程序是外插型的指令存储在计算机的其他电路中这样解题之前必需先相好所需的全部指令通过手工把相应的电路联通这种准备工作要花几小时甚至几天时间而计算本身只需几分钟计算的高速与程序的手工存在着很大的矛盾针对这个问题诺伊曼提出了程序内存的思想把运算程序存在机器的存储器中程序设计员只需要在存储器中寻找运算指令机器就会自行计算这样就不必每个问题都重新编程从而大大加快了运算进程这一思想标志着自动运算的实现标志着电子计算机的成熟已成为电子计算机设计的基本原则年月间冯诺依曼和戈尔德斯廷勃克斯在方案的基础上为普林斯顿大学高级研究所研制计算机时又提出了一个更加完善的设计报告电子计算机逻辑设计初探以上两份既有理论又有具体设计的文件首次在全世界掀起了一股计算机热它们的综合设计思想便是著名的冯诺依曼机其中心就是有存储程序原则指令和数据一起存储这个概念被誉为计算机发展史上的一个里程碑它标志着电子计算机时代的真正开始指导着以后的计算机设计自然一切事物总是在发展着的随着科学技术的进步今天人们又认识到冯诺依曼机的不足它妨碍着计算机速度的进一步提高而提出了非冯诺依曼机的设想冯诺依曼还积极参与了推广应用计算机的工作对如何编制程序及搞数值计算都作出了杰出的贡献冯诺依曼于年获美国数学会的波策奖年获美国总统的功勋奖章美国海军优秀公民服务奖年获美国总统的自由奖章和爱因斯坦纪念奖以及费米奖相关书籍冯诺依曼逝世后未完成的手稿于年以计算机与人脑为名出版他的主要著作收集在六卷冯诺依曼全集中年出版另外冯诺依曼年代出版的著作博弈论和经济行为使他在经济学和决策科学领域竖起了一块丰碑他被经济学家公认为博弈论之父当时年轻的约翰纳什在普林斯顿求学期间开始研究发展这一领域并在年凭借对博弈论的突出贡献获得了诺贝尔经济学奖编辑本段生平经历前半生诺伊曼著名美籍匈牙利数学家年月日生于匈牙利布达佩斯的一个犹太人家庭冯诺依曼的父亲麦克斯年轻有为风度翩翩凭着勤奋机智和善于经营年轻时就已跻身于布达佩斯的银行家行列冯诺依曼的母亲是一位善良的妇女贤慧温顺受过良好教育冯诺伊曼从小就显示出数学天才关于他的童年有不少传说大多数的传说都讲到冯诺伊曼自童年起在吸收知识和解题方面就具有惊人的速度六岁时他能心算做八位数乘除法八岁时掌握微积分十二岁就读懂领会了波莱尔的大作函数论要义微积分的实质是对无穷小量进行数学分析人类探索有限无限以及它们之间的关系由来已久世纪由牛顿莱布尼茨发现的微积分是人类探索无限方面取得的一项激动人心的伟大成果三百年来它一直是高等学府的教学内容随着时代的发展微积分在不断地改变它的形式概念变得精确了基础理论扎实了甚至有不少简明恰当的陈述但不管怎么说八岁的儿童要弄懂微积分仍然是罕见的上述种种传闻虽然不尽可信但冯诺伊曼的才智过人则是与他相识的人们的一致看法年夏天约翰进入了大学预科班学习是年月日奥匈帝国借故向塞尔维亚宣战揭开了第一次世界大战的序幕由于战争动乱连年不断冯诺依曼全家离开过匈牙利以后再重返布达佩斯当然他的学业也会受到影响但是在毕业考试时冯诺依曼的成绩仍名列前茅年冯诺依曼通过成熟考试时已被大家当作数学家了他的第一篇论文是和菲克特合写的那时他还不到岁麦克斯由于考虑到经济上原因请人劝阻年方的冯诺依曼不要专攻数学后来父子俩达成协议冯诺依曼便去攻读化学其后的四年间冯诺依曼在布达佩斯大学注册为数学方面的学生但并不听课只是每年按时参加考试与此同时冯诺依曼入柏林大学年年又进入瑞士苏黎世联邦工业大学学习化学年他在苏黎世的获得化学方面的大学毕业学位通过在每学期期末回到布达佩斯大学通过课程考试他也获得了布达佩斯大学数学博士学位冯诺依曼的这种不参加听课只参加考试的求学方式当时是非常特殊的就整个欧洲来说也是完全不合规则的但是这不合规则的学习方法却又非常适合冯诺依曼冯诺依曼在柏林大学学习期间曾得到化学家哈贝尔的悉心栽培哈贝尔是德国著名的化学家由于合成氨而获诺贝尔奖逗留在苏黎世期间冯诺依曼常常利用空余时间研读数学写文章和数学家通信在此期间冯诺依曼受到了希尔伯特和他的学生施密特和外尔的思想影响开始研究数理逻辑当时外尔和波伊亚两位也在苏黎世他和他们有过交往一次外尔短期离开苏黎世冯诺依曼还代他上过课聪明的智慧加上得天独厚的栽培冯诺依曼在茁壮地成长当他结束学生时代的时候他已经漫步在数学物理化学三个领域的某些前沿年春冯诺依曼到哥廷根大学任希尔伯特的助手年冯诺依曼在柏林大学任兼职讲师期间他发表了集合论代数和量子理论方面的文章年冯诺依曼到波兰里沃夫出席数学家会议那时他在数学基础和集合论方面的工作已经很有名气年冯诺依曼转任汉堡大学兼职讲师年他首次赴美成为普林斯顿大学的客座讲师善于汇集人才的美国不久就聘冯诺依曼为客座教授冯诺依曼曾经算过德国大学里现有的和可以期待的空缺很少照他典型的推理得出在三年内可以得到的教授任命数是三而参加竞争的讲师则有名之多在普林斯顿冯诺依曼每到夏季就回欧洲一直到年担任普林斯顿高级研究院教授为止当时高级研究院聘有六名教授其中就包括爱因斯坦而年仅岁的冯诺依曼是他们当中最年轻的一位在高等研究院初创时间欧洲来访者会发现那里充满着一种极好的不拘礼节的浓厚的研究风气教授们的办公室设置在大学的优美大厦里生活安定思想活跃高质量的研究成果层出不穷可以这样说那里集中了有史以来最多的有数学和物理头脑的人才年冯诺依曼和玛丽达柯维斯结婚年他们的女儿玛丽娜出生在普林斯顿冯诺依曼家里常常举办时间持续很长的社交聚会这是远近皆知的年冯诺依曼与妻子离婚年又与克拉拉丹结婚并一起回普林斯顿丹随冯诺依曼学数学后来成为优秀的程序编制家与克拉拉婚后冯诺依曼的家仍是科学家聚会的场所还是那样殷勤好客在那里人人都会感到一种聪慧的气氛二次大战欧洲战事爆发后冯诺依曼的活动越出了普林斯顿参与了同反法西斯战争有关的多项科学研究计划年起他成了制造×××的顾问战后仍在政府诸多部门和委员会中任职年又成为美国原子能委员会成员冯诺依曼的多年老友原子能委员会主席斯特劳斯曾对他作过这样的评价从他被任命到年深秋冯诺依曼干得很漂亮他有一种使人望尘莫及的能力最困难的问题到他手里都会被分解成一件件看起来十分简单的事情……用这种办法他大大地促进了原子能委员会的工作晚年冯诺依曼的健康状况一直很好可是由于工作繁忙到年他开始感到十分疲劳年的夏天射线检查出他患有×××但他还是不停的工作病势扩展后来他被安置在轮椅上继续思考演说及参加会议长期而无情的疾病折磨着他慢慢地终止了他所有的活动年月他进入华盛顿的沃尔特里德医院年月日在医院逝世享年岁集合论数学基础冯诺依曼的第一篇论文是和菲克特合写的是关于车比雪夫多项式求根法的菲叶定理推广注明的日期是年那时冯诺依曼还不满岁另一篇文章讨论一致稠密数列用匈牙利文写就题目的选取和证明手法的简洁显露出冯诺依曼在代数技巧和集合论直观结合的特征年当冯诺依曼还是苏黎世的大学生时发表了超限序数的论文文章第一句话就直率地声称本文的目的是将康托的序数概念具体化精确他的关于序数的定义现在已被普遍采用强烈企求探讨公理化是冯诺依曼的愿望大约从年到年他的大多数文章都尝试着贯彻这种公理化精神以至在理论物理研究中也如此当时他对集合论的表述处理尤感不够形式化在他年关于集合论公理系统的博士论文中开始就说本文的目的是要给集合论以逻辑上无可非议的公理化论述有趣的是冯诺依曼在论文中预感到任何一种形式的公理系统所具有的局限性模糊地使人联想到后来由哥德尔证明的不完全性定理对此文章著名逻辑学家公理集合论奠基人之一的弗兰克尔教授曾作过如下评价我不能坚持说我已把文章的一切理解了但可以确有把握地说这是一件杰出的工作并且透过他可以看到一位巨人年冯诺依曼发表了论文集合论的公理化是对上述集合论的公理化处理该系统十分简洁它用第一型对象和第二型对象相应表示朴素集合论中的集合和集合的性质用了一页多一点的纸就写好了系统的公理它已足够建立朴素集合论的所有内容并借此确立整个现代数学冯诺依曼的系统给出了集合论的也许是第一个基础所用的有限条公理具有像初等几何那样简单的逻辑结构冯诺依曼从公理出发巧妙地使用代数方法导出集合论中许多重要概念的能力简直叫人惊叹不已所有这些也为他未来把兴趣落脚在计算机和机械化证明方面准备了条件年代后期冯诺依曼参与了希尔伯特的元数学计划发表过几篇证明部分算术公理无矛盾性的论文年的论文关于希尔伯特证明论最为引人注目它的主题是讨论如何把数学从矛盾中解脱出来文章强调由希尔伯特等提出和发展的这个问题十分复杂当时还未得到满意的解答它还指出阿克曼排除矛盾的证明并不能在古典分析中实现为此冯诺依曼对某个子系统作了严格的有限性证明这离希尔伯特企求的最终解答似乎不远了这是恰在此时年哥德尔证明了不完全性定理定理断言在包含初等算术或集合论的无矛盾的形式系统中系统的无矛盾性在系统内是不可证明的至此冯诺依曼只能中止这方面的研究冯诺依曼还得到过有关集合论本身的专门结果他在数学基础和集合论方面的兴趣一直延续到他生命的结束编辑本段量子理论的数学基础算子环遍历理论在年间冯诺依曼在纯粹数学方面取得的成就更为集中创作更趋于成熟声誉也更高涨后来在一张为国家科学院填的问答表中冯诺依曼选择了量子理论的数学基础算子环理论各态遍历定理三项作为他最重要数学工作年冯诺依曼已经在量子力学领域内从事研究工作他和希尔伯待以及诺戴姆联名发表了论文量子力学基础该文的基础是希尔伯特年冬所作的关于量子力学新发展的讲演诺戴姆帮助准备了讲演冯诺依曼则从事于该主题的数学形式化方面的工作文章的目的是将经典力学中的精确函数关系用概率关系代替之希尔伯特的元数学公理化的方案在这个生气勃勃的领域里获得了施展并且获得了理论物理和对应的数学体系间的同构关系对这篇文章的历史重要性和影响无论如何评价都不会过高冯诺依曼在文章中还讨论了物理学中可观察算符的运算的轮廓和埃尔米特算子的性质无疑这些内容构成了量子力学的数学基础一书的序曲世界闻名的斯普林格出版社出版了他的量子力学的数学基础它是冯诺依曼主要著作之一初版为德文年出了法文版年为西班牙文版年被译成英文出版至今仍不失为这方面的经典著作当然他还在量子统计学量子热力学引力场等方面做了不少重要工作客观地说在量子力学发展史上冯诺依曼至少作出过两个重要贡献狄拉克对量子理论的数学处理在某种意义下是不够严格的冯诺依曼通过对×××算子的研究发展了希尔伯特算子理论弥补了这个不足此外冯诺依曼明确指出量子理论的统计特征并非由于从事测量的观察者之状态未知所致借助于希尔伯待空间算子理论他证明凡包括一般物理量缔合性的量子理论之假设都必然引起这种结果对于冯诺依曼的贡献诺贝尔物理学奖获得者威格纳曾作过如下评价在量子力学方面的贡献就是以确保他在当代物理学领域中的特殊地位在冯诺依曼的工作中希尔伯特空间上的算子谱论和算子环论占有重要的支配地位这方面的文章大约占了他发表的论文的三分之一它们包括对线性算子性质的极为详细的分析和对无限维空间中算子环进行代数方面的研究算子环理论始于年下半年冯诺依曼十分熟悉诺特和阿丁的非交换代数很快就把它用于希尔伯特空间上有界线性算子组成的代数上去后人把它称之为冯诺依曼算子代数年间冯诺依曼发表了六篇关于非交换算子环论文可谓世纪分析学方面的杰作其影响一直延伸至今冯诺依曼曾在量子力学的数学基础中说过由希尔伯特最早提出的思想就能够为物理学的量子论提供一个适当的基础而不需再为这些物理理论引进新的数学构思他在算子环方面的研究成果应验了这个目标冯诺依曼对这个课题的兴趣贯穿了他的整个生涯算子环理论的一个惊人的生长点是由冯诺依曼命名的连续几何普通几何学的维数为整数等冯诺依曼在著作中已看到决定一个空间的维数结构的实际上是它所容许的旋转群因而维数可以不再是整数连续级数空间的几何学终于提出来了年冯诺依曼发表了关于遍历理论的论文解决了遍历定理的证明并用算子理论加以表述它是在统计力学中遍历假设的严格处理的整个研究领域中获得的第一项精确的数学结果冯诺依曼的这一成就可能得再次归功于他所娴熟掌握的受到集合论影响的数学分析方法和他自己在希尔伯特算子研究中创造的那些方法它是世纪数学分析研究领域中取得的最有影响成就之一也标志着一个数学物理领域开始接近精确的现代分析的一般研究此外冯诺依曼在实变函数论测度论拓扑连续群格论等数学领域也取得不少成果年希尔伯特在那次著名的演说中为世纪数学研究提出了个问题冯诺依曼也曾为解决希尔伯特第五问题作了贡献编辑本段一般应用数学年是冯诺依曼科学生涯的一个转换点在此之前他是一位通晓物理学的登峰造极的纯粹数学家此后则成了一位牢固掌握纯粹数学的出神入化的应用数学家他开始关注当时把数学应用于物理领域去的最主要工具——偏微分方程研究同时他还不断创新把非古典数学应用到两个新领域对策论和电子计算机冯诺依曼的这个转变一方面来自他长期对数学物理问题的钟情另一方面来自当时社会方面的需要第二次世界大战爆发后冯诺依曼应召参与了许多军事科学研究计划和工程项目年任马里兰阿伯丁试验弹道研究实验室科学顾问年在华盛顿海军军械局年任洛斯阿拉莫斯实验室顾问年陆军特种武器设计委员会委员年美国空军华盛顿科学顾问委员会成员年原子能技术顾问小组成员年×××顾问委员会主席冯诺依曼研究过连续介质力学很久以来他对湍流现象一直感兴趣年他关注纳维—斯克克斯方程的统计处理可能性的讨论年他为海军研究部写了湍流的最新理论冯诺依曼研究过激波问题他在这个领域中的大部分工作直接来自国防需要他在碰撞激波的相互作用方面贡献引入注目其中有一结果是首先严格证明了恰普曼—儒格假设该假设与激波所引起的燃烧有关关于激波反射理论的系统研究由他的激波理论进展报告开始冯诺依曼研究过气象学有相当一段时间地球大气运动的流体力学方程组所提出的极为困难的问题—直吸引着他随着电子计算机的出现有可能对此问题作数值研究分析冯诺依曼搞出的第一个高度规模化的计算处理的是一个二维模型与地转近似有关他相信人们最终能够了解计算并实现控制以致改变气候冯诺依曼还曾提出用聚变引爆核燃料的建议并支持发展×××年军队发嘉奖令表扬他是物理学家工程师武器设计师和爱国主义者编辑本段对策论冯诺依曼不仅曾将自己的才能用于武器研究等而且还用于社会研究由他创建的对策论无疑是他在应用数学方面取得的最为令人羡慕的杰出成就现今对策论主要指研究社会现象的特定数学方法它的基本思想就是分析多个主体之间的利害关系时重视在诸如下棋玩扑克牌等室内游戏中竞赛者之间的讨价还价交涉结伙利益分配等行为方式的类似性对策论的一些想法年代初就曾有过真正的创立还得从冯诺依曼年关于社会对策理论的论文算起在这篇文章中他证明了最小最大定理这个定理用于处理一类最基本的二人对策问题如果对策双方中的任何一方对每种可能的策略考虑了可能遭到的最大损失从而选择最大损失最小的一种为最优策略那么从统计角度来看他就能够确保方案是最佳的这方面的工作大致已达到完善在同一篇论文中冯诺依曼也明确表述了个游戏者之间的一般对策对策论也被用于经济学经济理论中的数学研究方法大致可分为定×××为目标的纯粹理论和以实证的统计的研究为目标的计量经济学前者称为数理经济学正式确立于本世纪年代之后无论在思想上或方法上都明显地受到对策论的影响数理经济学过去模仿经典数学物理的技巧所用的数学工具主要是微积分和微分方程将经济问题当成经典力学问题处理显然几十个商人参加的贸易洽谈会用经典数学分析处理其复杂程度远远超过太阳系行星的运动这种方法的效果往往很难是预期的冯诺依曼毅然放弃这种简单的机械类比代之以新颖的对策论观点和新的数学—和凸性的思想年冯诺依曼和摩根斯特思合著的对策论和经济行为是这方面的奠基性著作论文包含了对策论的纯粹数学形式的阐述以及对于实际应用的详细说明这篇论文以及所作的与某些经济理论的基本问题的讨论引起了对经济行为和某些社会学问题的各种不同研究时至今日这已是应用广泛羽毛日益丰盛的一门数学学科有些科学家热情颂扬它可能是世纪前半期最伟大的科学贡献之一编辑本段计算机对冯诺依曼声望有所贡献的最后一个课题是电子计算机和自动化理论早在洛斯阿拉莫斯冯诺依曼就明显看到即使对一些理论物理的研究只是为了得到定性的结果单靠解析研究也已显得不够必须辅之以数值计算进行手工计算或使用台式计算机所需化费的时间是令人难以容忍的于是冯诺依曼劲头十足的开始从事电子计算机和计算方法的研究年间冯诺依曼形成了现今所用的将一组数学过程转变为计算机指令语言的基本方法当时的电子计算机如缺少灵活性普适性冯诺依曼关于机器中的固定的普适线路系统关于流图概念关于代码概念为克服以上缺点作出了重大贡献尽管对数理逻辑学家来说这种安排是显见的计算机工程的发展也应大大归功于冯诺依曼计算机的逻辑图式现代计算机中存储速度基本指令的选取以及线路之间相互作用的设计都深深受到冯诺依曼思想的影响他不仅参与了电子管元件的计算机的研制并且还在普林斯顿高等研究院亲自督造了一台计算机稍前冯诺依曼还和摩尔小组一起写出了一个全新的存贮程序通用电子计算机方案长达页的报告轰动了数学界这一向专搞理论研究的普林斯顿高等研究院也批准让冯诺依曼建造计算机其依据就是这份报告速度超过人工计算千万倍的电子计算机不仅极大地推动数值分析的进展而且还在数学分析本身的基本方面刺激着崭新的方法的出现其中由冯诺依曼等制订的使用随机数处理确定性数学问题的蒙特卡洛法的蓬勃发展就是突出的实例世纪那种数学物理原理的精确的数学表述在现代物理中似乎十分缺乏基本粒子研究中出现的纷繁复杂的结构令人眼花廖乱要想很决找到数学综合理论希望还很渺茫单从综合角度看且不提在处理某些偏微分方程时所遇到的分析困难要想获得精确解希望也不大所有这些都迫使人们去寻求能借助电子计算机来处理的新的数学模式冯诺依曼为此贡献了许多天才的方法它们大多分载在各种实验报告中从求解偏微分方程的数值近似解到长期天气数值须报以至最终达到控制气候等在冯诺依曼生命的最后几年他的思想仍甚活跃他综合早年对逻辑研究的成果和关于计算机的工作把眼界扩展到一般自动机理论他以特有的胆识进击最为复杂的问题怎样使用不可靠元件去设计可靠的自动机以及建造自己能再生产的自动机从中他意识到计算机和人脑机制的某些类似这方面的研究反映在西列曼讲演中逝世后才有人以计算机和人脑的名字出了单行本尽管这是未完成的著作但是他对人脑和计算机系统的精确分析和比较后所得到的一些定量成果仍不失其重要的学术价值编辑本段逸闻一次在一个数学聚会上有一个年轻人兴冲冲的找到他向他求教一个问题他看了看就报出了正确答案年轻人高兴地请求他告诉自己简便方法并抱怨其他数学家用无穷级数求解的烦琐冯诺依曼却说道你误会了我正是用无穷级数求出的可见他拥有过人的心算能力据说有一天冯诺依曼心神不定地被同事拉上了牌桌一边打牌一边还在想他的课题狼狈不堪地输掉了元钱这位同事也是数学家突然心生一计想要捉弄一下他的朋友于是用赢得的元钱购买了一本冯诺依曼撰写的博弈论和经济行为并把剩下的元贴在书的封面以表明他战胜了×××经济理论家着实使冯诺依曼好没面子另一则笑话发生在计算机研制时期有几个数学家聚在一起切磋数学难题百思不得某题之解有个人决定带着台式计算器回家继续演算次日清晨他眼圈黑黑面带倦容走进办公室颇为得意地对大家炫耀说我从昨天晚上一直算到今晨点半总算找到那难题的种特殊解答它们一个比一个更难咧说话间冯诺依曼推门进来什么题更难?虽只听到后面半句话但更难二字使他马上来了劲有人把题目讲给他听教授顿时把自己该办的事抛在爪哇国兴致勃勃地提议道让我们一起算算这种特殊的解答吧大家都想见识一下教授的神算本领只见冯诺依曼眼望天花板不言不语迅速进到入定状态约莫过了分来钟就说出了前种解答又在沉思着第种……青年数学家再也忍不住了情不自禁脱口讲出答案冯诺依曼吃了一惊但没有接话茬又过了分钟他才说道你算得对那位数学家怀着崇敬的心情离去他不无揶揄地想还造什么计算机哟教授的头脑不就是一台超高速计算机吗?然而冯诺依曼却呆在原地陷入苦苦的思索许久都不能自拔有人轻声向他询问缘由教授不安地回答说我在想他究竟用的是什么方法这么快就算出了答案听到此言大家不禁哈哈大笑他用台式计算器算了整整一个夜晚冯诺依曼一愣也跟着开怀大笑起来冯诺依曼的经典理论冯诺依曼体系机构说到计算机的发展就不能不提到美国科学家冯诺依曼从世纪初物理学和电子学科学家们就在争论制造可以进行数值计算的机器应该采用什么样的结构人们被十进制这个人类习惯的计数方法所困扰所以那时以研制模拟计算机的呼声更为响亮和有力世纪年代中期美国科学家冯诺依曼大胆的提出抛弃十进制采用二进制作为数字计算机的数制基础同时他还说预先编制计算程序然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作冯诺依曼理论的要点是数字计算机的数制采用二进制计算机应该按照程序顺序执行人们把冯诺依曼的这个理论称为冯诺依曼体系结构从并不是冯诺依曼体系到当前最先进的计算机都采用的是冯诺依曼体系结构所以冯诺依曼是当之无愧的数字计算机之父根据冯诺依曼体系结构构成的计算机必须具有如下功能把需要的程序和数据送至计算机中必须具有长期记忆程序数据中间结果及最终运算结果的能力能够完成各种算术逻辑运算和数据传送等数据加工处理的能力能够根据需要控制程序走向并能根据指令控制机器的各部件协调操作能够按照要求将处理结果输出给用户为了完成上述的功能计算机必须具备五大基本组成部件包括输人数据和程序的输入设备记忆程序和数据的存储器完成数据加工处理的运算器控制程序执行的控制器输出处理结果的输出设备";
  4. }

Md5生成工具类

  1. package com.itest.util;
  2. import java.io.UnsupportedEncodingException;
  3. import java.security.MessageDigest;
  4. import java.security.NoSuchAlgorithmException;
  5. import sun.misc.BASE64Encoder;
  6. public class Md5Util {
  7. /**
  8. * 获得md5加密的字符串
  9. * @param str
  10. * @return
  11. */
  12. public static String MD5(String str) {
  13. MessageDigest messageDigest = null;
  14. try {
  15. messageDigest = MessageDigest.getInstance("MD5");
  16. messageDigest.reset();
  17. messageDigest.update(str.getBytes("UTF-8"));
  18. } catch (NoSuchAlgorithmException e) {
  19. System.out.println("NoSuchAlgorithmException caught!");
  20. } catch (UnsupportedEncodingException e) {
  21. e.printStackTrace();
  22. }
  23. byte[] byteArray = messageDigest.digest();
  24. StringBuffer md5StrBuff = new StringBuffer();
  25. for (int i = 0; i < byteArray.length; i++) {
  26. if (Integer.toHexString(0xFF & byteArray[i]).length() == 1)
  27. md5StrBuff.append("0").append(Integer.toHexString(0xFF & byteArray[i]));
  28. else
  29. md5StrBuff.append(Integer.toHexString(0xFF & byteArray[i]));
  30. }
  31. return md5StrBuff.toString();
  32. }
  33. }

sturts2 action中使用

  1. package com.itest.action;
  2. import java.io.IOException;
  3. import java.io.InputStream;
  4. import java.io.StringBufferInputStream;
  5. import java.util.Map;
  6. import org.apache.struts2.ServletActionContext;
  7. import com.opensymphony.xwork2.ActionContext;
  8. import com.opensymphony.xwork2.ActionSupport;
  9. import com.itest.util.IdentifyUtil;
  10. public class IdentifyAction extends ActionSupport {
  11. private InputStream inputStream;
  12. public InputStream getInputStream() {
  13. return inputStream;
  14. }
  15. public void setInputStream(InputStream inputStream) {
  16. this.inputStream = inputStream;
  17. }
  18. /**
  19. * 获得验证码
  20. * @return
  21. */
  22. public String identify() {
  23. ActionContext ctx = ActionContext.getContext();
  24. Map session=ctx.getSession();
  25. String path = ServletActionContext.getServletContext().getRealPath("/")+"web/p_w_picpath/";
  26. IdentifyUtil indentify = new IdentifyUtil(100, 31);
  27. String identifyStr=indentify.getRandomString();
  28. inputStream = new StringBufferInputStream(indentify.createImage(path,identifyStr));
  29. session.put("identify",identifyStr);
  30. return SUCCESS;
  31. }
  32. }

action的配置,没有用json格式直接使用的输出流。

  1. <action name="identify" class="com.itest.action.IdentifyAction" method="identify">
  2. <result name="success" type="stream">
  3. <param name="contentType">text/html</param>
  4. <param name="inputName">inputStream</param>
  5. </result>
  6. </action

每次请求这个action都会生成一个图片,删除的功能没有做,需要的同学自己研究

转载于:https://blog.51cto.com/qianqiuyidang/853912

java 生成图片验证码结合struts2使用相关推荐

  1. 用java如何做图片验证码,运用java生成图片验证码

    使用java生成图片验证码 本程序来源以下网址:http://www.linux521.com/2009/java/200909/8475.html 仅供学习和参考 import java.awt.B ...

  2. 后端生成图片验证码,Kotlin生成图片验证码,Java生成图片验证码,图片验证码的生成和校验

    后端生成图片验证码 注:以下代码主要使用kotlin进行编写,kotlin可兼容java,可以直接使用.IDEA也支持将java与kotlin代码进行互相转换. 1.引入依赖: Gradle(若你使用 ...

  3. Java生成图片验证码(有点仿QQ验证码的意思)

    看了挺多图片验证码的代码,感觉没什么长的好看点的,就自己动手写了个,写完发现跟QQ的有几分相似,比较满意. 功能包括:自定义图片尺寸和字符长度,随机背景颜色和字符颜色,随机字符偏移角度,字符平滑边缘, ...

  4. Java 生成图片验证码(包含全是字母、加减乘除、中文)3种方法

    如果你有幸看到这个篇文章  看了之后对你有帮助 请点赞 关注 评论 谢谢 第一种方法 全是字母和数字组成 package com.myFirstSpring.util;import java.awt. ...

  5. java 生成图片验证码

    https://vimsky.com/zh-tw/examples/detail/java-class-javax.servlet.ServletOutputStream.html 开发过程中,需要服 ...

  6. java生成图片验证码

    2019年8月29日17:52:34 public class CodeUtil {private static int width = 90;// 定义图片的widthprivate static ...

  7. Java代码生成图片验证码

    Java生成图片验证码 1.编写代码 copy 下面的代码 并运行main函数 import javax.imageio.ImageIO; import java.awt.*; import java ...

  8. java 3d验证码_Java实现验证码具体代码(图片、汉字)

    本文为大家分享两个实例,相信大家一定会喜欢. 实例1:随机生成验证码图片并将之输出为一个png文件 效果图: import java.awt.Color; import java.awt.Font; ...

  9. java生成验证码图片中仅有线条_Java实现验证码具体代码(图片、汉字)

    本文为大家分享两个实例,相信大家一定会喜欢. 实例1:随机生成验证码图片并将之输出为一个png文件 效果图: import java.awt.Color; import java.awt.Font; ...

最新文章

  1. 一些你可能忽略的护牙小技巧
  2. XingXingMVC页面跳转处理
  3. nagios 3.2安装详解(一)
  4. 奎屯电信助力智慧城市光网建设
  5. 怎么在linux上装java,如何在Ubuntu Linux上安装Java
  6. 装完黑苹果怎么装windows_BlackArch(黑Arch)、怎么装?
  7. 安卓java音乐播放器下一曲_Android实现简单音乐播放器(MediaPlayer)
  8. luci L大_“大众”果然没失望,空间大,颜值暴增
  9. Multicast注册中心
  10. 通过NodeJS自动生成的MySQL的REST风格API
  11. 详解 Ops 智能运维机器人,故障处理又快又准!
  12. 将Capicom调用代码封装到ActiveX——解决javascript调Capicom读取数字证书信息时,IE弹出安全提示的问题...
  13. 云智慧:创新思维助酷讯IT运维管理升级
  14. 循环链表(线性表的链式存储)---C语言版
  15. GDI+中发生一般性错误 Winform Image.Save(mstream, ImageFormat.Png)引发
  16. MINGW里面没有mingw32 make.exe
  17. ele input事件 输入后0.5秒触发
  18. 北邮教授石川:图神经网络需要解决的几个关键问题
  19. 华为2288服务器不显示BIOS,设置BIOS - RH2288H V3 服务器 V100R003 用户指南 41 - 华为
  20. 给软件工程师的自学建议

热门文章

  1. 在xp系统电脑上建立宽带连接服务器吗,windows 7与windows xp创建宽带连接的方法-电脑教程...
  2. mysql导入数据报错_MySQL导入数据库时报错,MySQL server has go away
  3. 同向放大器、反向放大器的区别
  4. Arcgis实验一 空间数据数字化、投影变换与仿射变换
  5. 驱动器中的软盘不对_在“提示”框中:基于位置的待办事项提醒,DIY软盘驱动器音乐以及易于访问的产品手册...
  6. 渗透学习日记day15
  7. 实验三:Windows7操作系统安全
  8. win10 生成Android 的 keystore 文件
  9. 一键取消所有淘宝垃圾短信
  10. python绘制哆啦a梦实训报告_python画哆啦A梦和大雄