首页 > 学术发表知识库 > java毕业论文英文版

java毕业论文英文版

发布时间:

java毕业论文英文版

MAXIMO是IBM公司的产品, MAXIMO以工单的创建、审批、执行、关闭为主线,合理、优化地安排相关的人、财、物资源,将传统的被动检修转变为积极主动的预防性维修,与实时数据采集系统集成,可以实现预测性维修。通过跟踪记录企业全过程的维护历史活动,将维修人员的个人知识转化为企业范围的智力资本。集成的工作流与业务流程配置功能,使得用户可以方便地进行系统的授权管理和应用的客户化改造工作。在商业竞争日益激烈的今天,对于拥有高价值资产的企业来说,设备维护已不再局于成本范畴,更成为获取利润的战略工具。 MAXIMO系列产品使这个目标得以实现。 EAM(Enterprise Asset Management) 即企业资产维护管理系统, 它是面向资产 密集型 (Asset -intensive) 企业的企业信息化解决方案的总称,其前身称作 CMMS (Computerized Maintenance Management System)计算机维修管理系统, 主要适用于资产密集型企业对高价值固定资产的维护、保养、跟踪等信息管理。它以提高资产可利用率、降低企业运行维护成本为目标。以优化企业维修资源为核心,通过信息化手段,合理安排维修计划及相关资源与活动,从而提高企业的经济效益和企业的市场竞争力。 今天,EAM系统涵盖了维护、修理和运营所涉及的方方面面,从库存和采购到工作管理和建立设备模型,但这些仅是EAM系统的基本功能。EAM系统通过创建背后信息来提升维护技术,这些背后的信息在实施EAM之前并不存在,它是加速故障诊断和工作建立的知识基础。优秀的EAM系统的领先性在于其对复杂设备的建模能力,如从公路、管道、线路到产品流程。EAM系统提供任何工厂和服务领域所需的成熟技术,不受设备所处室内外位置的影响。它还通过连接终端用户和最有效的信息源支持简化运营工作,并且这些信息都是在系统中预先设置的。此外,一个端到端的电子商务解决方案可以最大程度降低目标实现的成本。 EAM系统以用户需要的所有工具开发和设置,用户无需编程,今天的EAM系统可以适合任何工厂的特定需要,无论工厂的规模大小。 它包括:设备管理、工单管理、预防性维护管理、资源管理、作业计划管理、安全管理、库存管理、采购管理、系统管理、应用设置、屏幕编辑等基本模块,以及工作流管理、决策分析等可选模块。 多年来,MAXIMO专注于企业资产维护领域,始终站在技术发展的前沿。90年代,它是第一个采用 Client/Server 结构的EAM软件供应商。如今,在风起云涌的互联网 应用大潮中,MAXIMO将它的产品置于Internet技术基础之上。它可以运行在多种常用的服务器硬件平台和网络操作系统( UNIX或 NT)上,支持Windows NT/95/98/2000 客户机环境。 MAXIMO适用领先的商业化关系型数据库,包括 Oracle和 Microsoft SQL Server。 MAXIMO 的设计宗旨是: 提高工人工作的安全性和效率 减少停机时间 控制维护费用 降低零件库存和费用 提高采购效率 充分利用设备、设施、人力及其它资源 MAXIMO 是目前市场上最广泛使用的企业资产管理系统。针对不同行业, MRO 软件公司设计了相应的应用解决方案: MAXIMO for Facilities、 MAXIMO for Industry。MyEclipse,是一个十分优秀的用于开发Java, J2EE的Eclipse插件集合,MyEclipse的功能非常强大,支持也十分广泛,尤其是对各种开元产品的支持十分不错。目录简介分类版本使用配置开发项目发布展开编辑本段简介myeclipse6.6MyEclipse企业级工作平台(MyEclipse Enterprise Workbench ,简称MyEclipse)是对Eclipse IDE的扩展,利用它我们可以在数据库和JavaEE的开发、发布,以及应用程序服务器的整合方面极大的提高工作效率。它是功能丰富的JavaEE集成开发环境,包括了完备的编码、调试、测试和发布功能,完整支持HTML, Struts, JSF, CSS, Javascript, SQL, Hibernate。编辑本段分类 在结构上,MyEclipse的特征可以被分为7类: 1. JavaEE模型 2. WEB开发工具 3. EJB开发工具 4. 应用程序服务器的连接器 5. JavaEE项目部署服务 6. 数据库服务 7. MyEclipse整合帮助 对于以上每一种功能上的类别,在Eclipse中都有相应的功能部件,并通过一系列的插件来实现它们。MyEclipse结构上的这种模块化,可以让我们在不影响其他模块的情况下,对任一模块进行单独的扩展和升级。 简单而言,MyEclipse是Eclipse的插件,也是一款功能强大的JavaEE集成开发环境,支持代码编写、配置、测试以及除错,MyEclipse6.0以前版本需先安装Eclipse。MyEclipse6.0以后版本安装时不需安装Eclipse。编辑本段Oracle公司是全球最大的信息管理软件及服务供应商,成立于1977年,总部位于美国加州 Redwood shore。2000财年(99年6月到2000年5月)营业额达101亿美元,再创Oracle公司销售额历史新高,比去年增长了13亿美元,盈利增长61%,达到21亿美元。Oracle公司现有员工超过三万六千人,服务遍及全球145个国家。Oracle公司拥有世界上唯一一个全面集成的电子商务套件Oracle Applications R11i,它能够自动化企业经营管理过程中的各个方面,深受用户的青睐,促使Oracle应用软件在2000财年第四季度的销售额达4.47亿美元,与SAP公司的同期应用软件销售额3.52亿美元相比,多出近1亿美元,这一事实表明,Oracle已经是世界最大的应用软件供应商。Oracle电子商务套件涵盖了企业经营管理过程中的方方面面,虽然它在不同的方面分别面对不同的竞争对手,而Oracle电子商务解决方案的核心优势就在于它的集成性和完整性,用户完全可以从Oracle公司获得任何所需要的应用功能,更重要的是,它们具有一致的基于Internet技术的应用体系结构,而如果用户想从其它厂商处获得Oracle电子商务所提供的完整功能,不仅需要从多家厂商分别购买不同的应用,而且需要另请咨询公司把这些不同的应用装配起来,还必须确保它们能够协同地工作。 先进的产品和高效率的企业运作,是Oracle公司利润得以继续增长的重要原因,一年前,Oracle公司确定了通过采用自身的Internet电子商务解决方案,实现每年节省10亿美元企业日常运作费用的目标,这一数据相当于将年度利润率提高10%。编辑本段基本信息公司LOGO公司类型: 上市公司 (NASDAQ: ORCL) 成立时间: 1977年 总部地点: 美国加州红木滩市 首席执行官: 劳伦斯·埃里森 Lawrence (Larry) J. Ellison, 口号: 信息驱动 产业: 数据库软件 企业资源计划 客户关系管理 年营业额 $117.99 亿美元 (2005年) 税前盈余 $40.22 亿美元 (2005年) 净利 $28.86 亿美元 (2005年) 市值 员工数 49,872 (2005年)编辑本段主要产品 服务器及工具(主要竞争对手:国际商用机器、微软) 甲骨文公司的主要产品目前分为两大类: 数据库服务器:2007年最新版本11G 应用服务器: Oracle Application Server 开发工具:Oracle JDeveloper,Oracle Designer,Oracle Developer,等等 Oracle公司总部应用软件(主要竞争对手:德国SAP公司。) 企业资源计划(ERP)软件。已有10年以上的历史。2005年,并购了开发企业软件的仁科软件公司以增强在这方面的竞争力。 客户关系管理(CRM)软件。自1998年开始研发这种软件。2005年,并购了开发客户关系管理软件的希柏软件公司(Siebel)。 人力资源管理软件(HCM)。收购了仁科(PeopleSoft)软件。编辑本段应用产品甲骨文公司服务器技术执行副总裁ChuckOracle应用产品包括财务、供应链、制造、项目管理、人力资源和市场与销售等150多个模块,荣获多项世界大奖,现已被全球近7600多家企业所采用。由于在电子商务方面的杰出表现,Oracle公司在美国Mongan Stanley公司最新公布的权威性全球企业1000强中,从去年的第122名一跃成为第13名,成为全球第二大独立软件公司和最大的电子商务解决方案供应商。目前, Amazon和Dell等全球十个最大的Internet电子商务网站、全球十个最大的B-to-B网站中的九个、93%的上市.COM公司、65家“财富全球100强”企业均不约而同地采用Oracle电子商务解决方案。四年前电子商务在全球范围内还仅处于萌芽状态时,Oracle公司便前瞻性地作出了从领先的数据库厂商向以Internet计算为基础的完整的电子商务解决方案供应商转型的战略部署。这一前瞻性战略为Oracle带来了巨大的利益,今天,Oracle能够领先于竞争对手提供包括平台产品、应用产品和完善的服务在内的先进的、完整的、集成的电子商务解决方案,可以无缝集成供应链管理(SCM)、企业资源管理(ERP)、客户资源管理(CRM)和企业商业智能(BI)和电子商务应用IP(Internet Pocurement)、Exchange、Portal-to-go等产品。Oracle从低端到高端的所有方案100%基于Internet应用体系结构,都可以通过Web安全、直接地访问,使企业能够通过Web完成包括报价、定单、支付、执行、服务等在内的企业业务过程的所有环节,帮助企业将现有业务内容快速转移到电子商务,迅速获得来自电子商务的高效益。编辑本段历史沿革Oracle 数据库70年代 一间名为Ampex的软件公司,正为中央情报局设计一套名叫Oracle的数据库,Ellison是程序员之一。 甲骨文公司CEO拉里1977年艾利森与女上司Robert Miner创立“软件开发实验室”(Software Development Labs),当时IBM发表“关系数据库”的论文,艾利森以此造出新数据库,名为甲骨文。 1978年公司迁往硅谷,更名为“关系式软件公司” (RSI),两年后,共有8名员工,年收入少于100万美金。最先提出“关系数据库”的IBM采用RSI的数据库。1982年再更名为甲骨文(Oracle)。 1984年三年内,先后进军加拿大、荷兰、英国、奥地利、日本、德国、瑞士、瑞典、澳大利亚、芬兰、法国、香港、挪威、西班牙。1986年上市时,年收入暴升至5500万美元,同年3月招股,集资3150万美元。 1987年年收入达到 1.31 亿美元,甲骨文一年后成为世界第四大软件公司。两年内再进军墨西哥、巴西、中国、塞浦路斯、马来西亚及新西兰。一年后,收入再升一倍至2.82亿美元。 1990年甲骨文两年内挥军进入智利、希腊、韩国、葡萄牙、土耳其、委内瑞拉、台湾、比利时、阿根廷、哥伦比亚、哥斯达黎加及菲律宾等地,但是当年甲骨文的业绩首次发生亏损,市值急跌80%,艾利森首次安排资深管理人员参与经营。 Oracle 数据库1992年旗舰产品Oracle 7面世,使该公司业务重新步上轨道,年收入达到11.79亿美元。曾被视为甲骨文接班人、但后来被踼出局的Raymond Lane担任营运总监。 1995年艾利森宣布PC已死,把全数产品推向互联网发展,并另组“网络计算机公司”(Network Computer),销售“网络计算机”,最终被淘汰收场。 2000年科网接近尾声时,推出E-Business Suite,抢占应用产品市场,与昔日的生意伙伴构成严重利益冲突。同期微软及IBM数据技术提升,此后Oracle新增订单数目的占有率,在两年内下跌6.6%,业务倒退10%。 2003年敌意收购仁科软件公司,引起业界哄动。两公司的争议新闻层出不穷。同年美国司法部落案阻止甲骨文收购。 2009年4月20日,甲骨文公司宣布将以每股9.50美元,总计74亿美金收购太阳计算机系统公司。编辑本段起源 1970年的6月,IBM公司的研究员埃德加·考特 (Edgar Frank Codd) 在 Communications of ACM 上发表了那篇著名的《大型共享数据库数据的关系模型》(A Relational Model of Data for Large Shared Data Banks)的论文。这是数据库发展史上的一个转折。要知道,当时还是层次模型和网状模型的数据库产品在市场上占主要位置。从这篇论文开始,拉开了关系型数据库软件革命的序幕。 虽然早在1970年就诞生了关系模型理论,但是市场上迟迟不见关系型数据库管理软件的推出。主要原因是很多反对者认为关系型数据库速度太慢,比不上当时的层次式数据库。值得好笑的是,IBM虽然1973年就启动了System R的项目来研究关系型数据库的实际可行性,也没有及时推出这样的产品,因为当时IBM的的IMS(著名的层次型数据库)市场不错,如果推出关系型数据库,牵涉到IBM很多人的自身利益。再者,IBM庞大复杂的官僚机构处在决策上远不那么灵活。 美国 Oracle 公司总部一瞥1977年6月,Larry Ellison与Bob Miner和Ed Oates在硅谷共同创办了一家名为软件开发实验室(Software Development Laboratories,SDL)的计算机公司(ORACLE公司的前身)。那个时候,32岁的Larry Ellison,这个读了三家大学都没能毕业的辍学生,还只是一个普通的软件工程师。公司创立之初,Miner是总裁,Oates为副总裁,而Ellison,因为一个合同的事情,还在另一家公司上班。没多久,第一位员工Bruce Scott(用过ORACLE数据库软件的人都知道有个Scott用户的吧?没错,就是这个Scott,至于Scott用户的密码Tiger,那是Scott养的猫的名字)加盟进来,在Miner和Oates有些厌倦了那种合同式的开发工作后,他们决定开发通用软件,不过们还不知道自己能开发出来什么样的产品。Oates最先看到了埃德加·考特的那篇著名的论文连同其他几篇相关的文章并推荐Ellison和Miner也阅读一下。Ellison和Miner预见到数据库软件的巨大潜力(跟着IBM走,没错),于是,SDL开始策划构建可商用的关系型数据库管理系统(RDBMS)。 很快他们就弄出来一个不太像样的产品,或者具体的说,更像一个Demo。根据Ellison和Miner他们在前一家公司从事的一个由中央情报局投资的项目代码,他们把这个产品命名为ORACLE。因为他们相信,ORACLE(字典里的解释有“神谕, 预言”之意)是一切智慧的源泉。1979年,SDL更名为关系软件有限公司(Relational Software,Inc.,RSI),毕竟“软件开发实验室”不太像一个大公司的名字。1983年,为了突出公司的核心产品,RSI再次更名为ORACLE。编辑本段发展历程发布ORACLE产品 RSI在1979年的夏季发布了可用于DEC公司的PDP-11计算机上的商用ORACLE产品,这个数据库产品整合了比较完整的SQL实现,其中包括子查询、连接及其他特性。但不得不说,软件不是很稳定,并缺少事务处理这样的重要功能。出于市场策略,公司宣称这是该产品的第二版,但却是实际上的第一版。之所以被命名为第2版而不是第1版,是因为Ellison认为潜在的客户更愿意购买第2个版本,而不是初始版本。(虽然这样做有些不太诚实,还是要承认这是个十分高明的技巧。到现在还有一些公司把自己卖给客户的版本叫做1.0 ,学学1979年的ORACLE吧!)多年以后的今天,ORACLE公司声称是他们第一个提供了第一个SQL关系型数据库管理系统。 虽然软件不是很好,但是客户还是有的。美国中央情报局迫不及待的想买一套这样的软件来满足他们的需求。但在咨询了IBM公司之后发现IBM没有可以商用的产品,他们联系了RSI。于是RSI有了第一个客户。在当时,政府和军方的机构往往同时有几种计算机,而那时还没有什么“软件可移植”这样的说法,当然,也几乎没有具有这样的能力的应用软件。也就是说,给PDP-11开发的ORACLE数据库不能用在IBM主机和DEC的VAX上。很快用户就表现出来这样的需求:ORACLE能否同时在不同的操作系统上运行?这给RSI带来了新的挑战(主要是Miner和Scott)。70年代末期和80年代早期的软件一般都设计成在单一操作系统上运行,具有可移植能力的软件很少。发布ORACLE第三版 1983年3月,RSI发布了ORACLE第三版。Miner和Scott历尽艰辛用C语言重新写就这一版本。要知道,C语言当时推出不久,用它来写ORACLE软件也是具有一定的风险的,但除此之外,别无他法。很快就证明了这样做是多么的正确:C编译器便宜而又有效,还有很好的移植性。从现在起,ORACLE产品有了一个关键的特性:[可移植性]。ORACLE第3版还推出了SQL语句和事务处理的“原子性”--SQL语句要么全部成功,要么全部失败,事务处理要么全部提交,要么全部回滚。ORACLE第3版还引入了非阻塞查询,使用存储在"Before Image File"中的数据来查询和回滚事务,从而避免了读锁定(read lock)的使用(虽然通过使用表级锁定限制了它的吞吐量)。同样是1983年,IBM发布了姗姗来迟的Database 2(DB2),但只可在MVS上使用。不管怎么说,ORACLE已经占取了先机。 在开发第三版还没有结束的时候,Scott离开了ORACLE。当时用C语言改写ORACLE的压力很大,无休止的软件调试终于让Scott不堪重负,选择了一走了之。把剩下的重担交给了Miner一个人。在出售了自己的%4的股票之后,Scott 后来创建了Gupta公司(现更名为Centura Software)和PointBase公司(提供百分之百纯Java嵌入式数据库),都是开发和数据库相关的产品。多年后有人问到他的%4的ORACLE股票的时候,Scott,这个曾经给ORACLE写出第一行代码的技术高手,也只能报以一笑了。如果能坚持下来,那是一笔几亿美金的财富。不过当时的Scott没有那么多的想法,他只是太累了。可移植性 ORACLE最先将其软件移植到DEC VAX计算机上的VMS操作系统上。早在1979年公司就已经雇了一位DEC公司的技术高手Robot Brandt进行VAX上ORACLE的开发。开始的时候资金有限,只能到加州大学伯克利分校去蹭机器进行开发,后来好一些,但机器也是借来的。尽管困难重重,Brandt还是比较成功的完成了移植工作。随着VAX小型机的大量销售乃至供不应求,ORACLE软件也成为VAX上最受欢迎的程序。这一点要归功于Larry对市场的先知先觉。如果说,是IBM引领着ORACLE公司走上数据库的大船,那么DEC公司的VAX就是带着他们扬帆出海了。短短的几年之后,ORACLE数据库被移植到各种主要平台之上。ORACLE产品也一直因为有可移植性这个关键特性而被那些潜在的客户关注。 Oates这个时候因为婚姻趋于破裂而情绪沮丧,已经不能把精力全部放到公司上,不得不离开公司。几年后,他又重返公司,重新为ORACLE做出巨大的贡献,他许下诺言,在公司员工超过1万人的时候会再度离开。1999年,他完成了心愿。现在他正在纵情于音乐,自得其乐。 很长一段时间里,公司研发由Miner独力承担。Miner视金钱如无物,为人低调,和Ellison的锋芒必露形成鲜明的对比。在公司里,大家一致认为他是老好人,他也深受员工爱戴。Ellison是公司的大脑,Miner则当之无愧的成为公司的心脏。他是个沉默的英雄,正如Steve Jobs背后的Steve Wozniak一样。

Summary: in recent years, as sales scale of constantly expanded, staff number, and products number and customer number also corresponding increased, about staff, and products and customer of various amount also multiplied increased, face with huge of amount, traditional of artificial way management will led to sales system management Shang of chaos, human and material too much waste, sales management costs of increased, to make company burden overweight, effect whole company of operation and control management, therefore, must developed a effective, and reasonable, Normative and practical sales management system for centralized management of all kinds of information. Based on the present situation and development trend of sales management system, sales management for medium and small enterprises, in order to overcome the low efficiency of manual operations management, improving the management and efficiency, reducing staff workload and complexity. Especially the accumulation of information, would greatly increase the complexity of manual management.As alternative to manually manage computer management system design objectives. Enterprise development resources, such as manpower, material resources, productivity is limited, so we save as much as possible on the management of these resources and management to avoid confusion. So we need to adopt alternative to manually manage computer management. This system uses the Java programming language, Mysql database, employee information, customer information, advance cargo information for centralized management of companies in three ways. Considerably saves company resources such as manpower, material and financial resources, and effective, reasonable and standard to manage all aspects of the company.Which enables the company to create greater efficiency, apart from the company in the competitive world of shopping malls. Keyword: sales management, customer information, and cargo information staff management; information management;

package homework.day15;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.KeyStroke;import javax.swing.undo.UndoManager;/*** Autho : showncx* time : Oct 14, 2008 8:31:00 AM* insert here....*/public class NoteBook extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;private JFileChooser fileDialog;private JTextArea content;private JDialog dialog;private JPopupMenu jpm;private JTextField rep_word1,rep_word2;private String rep_director,rep_newword;private JLabel rep_mes1,rep_mes2;// private boolean isUndo = false;private String fileInfo = null;private String[] menus = new String[]{"File","Edit","Format","View","Help"};private String[][] menuItems = new String[][]{{"new","open","save","anotherSave","","setter","print","exit"},{"undo","","cut","copy","paste","delete","","forward/replace","goto","","allselect","time/date"},{"auto_change","font"},{"status"},{"help"}};private String[] popItems = new String[]{"undo","","cut","copy","paste","delete","selectall","","a_it's so short want it longger..."};// private LinkedList oldContent = new LinkedList();private UndoManager undoManager;/*** the constructor*/public NoteBook(){super("NoteBook");initJPopMenu();undoManager = new UndoManager();fileDialog = new JFileChooser();fileDialog.setCurrentDirectory(new File("E:\\")) ;content = new JTextArea();content.getDocument().addUndoableEditListener(undoManager);// content.getDocument().addDocumentListener(new DocumentListener(){//// public void changedUpdate(DocumentEvent e) {// if(!isUndo){//// oldContent.add(content.getText());// isUndo = false;// }//// isUndo = false;// }//// public void insertUpdate(DocumentEvent e) {// if(!isUndo){//// oldContent.add(content.getText());// System.out.println("insert--update");// isUndo = false;// }// isUndo = false;// }//// public void removeUpdate(DocumentEvent e) {// if(!isUndo){//// oldContent.add(content.getText());// isUndo = false;// }//// isUndo = false;// }// });content.addMouseListener(new MouseAdapter(){@Overridepublic void mouseClicked(MouseEvent e) {if(e.getButton() == 3){jpm.show(content, e.getX(), e.getY());}}});content.setFont(new Font("font1",25,25));JScrollPane jsp = new JScrollPane(content);this.add(jsp);this.setJMenuBar(getMenuBar(menuItems,menus));this.pack();this.setSize(500,400);this.setLocation(200,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}//end constructor//------------------------------------------------------------------------------------------------------/*** for the pop_bar right click*/public void initJPopMenu(){jpm = new JPopupMenu();for(int i = 0 ; i < popItems.length ; i ++){String popItemName = popItems[i];if("".equals(popItemName)){jpm.addSeparator();}else{JMenuItem jmItem = new JMenuItem(popItemName);jmItem.setMnemonic(popItemName.charAt(0));jmItem.addActionListener(this);jpm.add(jmItem);}}}//------------------------------------------------------------------------------------------------------//------------------------------------------------------------------------------------------------------/*** init the menuBar* */public JMenuBar getMenuBar(String[][] menuItens,String[] menus){JMenuBar jmb = new JMenuBar();for(int i = 0; i < menus.length ; i ++){String jmName = menus[i];JMenu jm = new JMenu(jmName);jm.setMnemonic(jmName.charAt(0));for(int j = 0; j < menuItems[i].length ; j ++){if(!"".equals(menuItems[i][j])){String itemName = menuItems[i][j];JMenuItem jmItem = new JMenuItem(itemName) ;if("undo".equals(menuItems[i][j])){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));}else if("cut".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));}else if("copy".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));}else if("paste".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));}else if("forward/replace".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));}else if("selectall".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));}else if("new".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));}else if("open".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));}else if("save".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));}else if("font".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_MASK));}else if("exit".equals(itemName)){jmItem.setMnemonic('e');}jmItem.addActionListener(this);jm.add(jmItem);}else{jm.addSeparator();}}jmb.add(jm);}return jmb;}//-------------------------------------------------------------------------------------------------------------//-------------------------------------------------------------------------------------------------------------/*** //create the forward/replace dialog*/public JDialog createDialog(){JDialog dialog = new JDialog(this,"forward/repalce");rep_mes1 = new JLabel("the word you want to replace..");rep_mes2 = new JLabel("the one replace to the oldone...");rep_word1 = new JTextField();rep_word2 = new JTextField();JButton rep_btn = new JButton("replace");rep_btn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {String contentAll = content.getText();rep_director = rep_word1.getText();rep_newword = rep_word2.getText();content.replaceRange(rep_newword, contentAll.indexOf(rep_director), contentAll.indexOf(rep_director)+rep_director.length());}});JButton rep_btn2 = new JButton("forward");rep_btn2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {int selectEnd = content.getSelectionEnd();if(selectEnd == 0 || selectEnd == -1 || selectEnd >= content.getText().length()){selectEnd = 0;}rep_director = rep_word1.getText();int nextStart = content.getText().indexOf(rep_director,selectEnd);content.setSelectionStart(nextStart);content.setSelectionEnd(nextStart+rep_director.length());}});dialog.setLayout(new GridLayout(4,1,2,2));dialog.add(rep_mes1);dialog.add(rep_word1);dialog.add(rep_mes2);dialog.add(rep_word2);dialog.add(rep_btn);dialog.add(rep_btn2);return dialog;}@SuppressWarnings("deprecation")public void actionPerformed(ActionEvent e){String currentOper = e.getActionCommand();if("new".equals(currentOper)){String currentContent = content.getText();if("".equals(currentContent) || currentContent == null){this.content.setText("");}else{/*** 关于新建的操作.....*/}}else if("open".equals(currentOper)){content.setText("");fileDialog.showOpenDialog(this);File selectedFile = fileDialog.getSelectedFile();if(selectedFile != null){fileInfo = selectedFile.getPath();try {this.setTitle(selectedFile.getName());InputStream filein = new FileInputStream(selectedFile);byte[] temp = new byte[20];while(true){int i = filein.read(temp);if( i == -1) break;content.setText(content.getText()+new String(temp,0,i));}filein.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e1) {e1.printStackTrace();}}}else if("save".equals(currentOper)){// oldContent.clear();if( null != fileInfo){try {File currentFile = new File(fileInfo);OutputStream fileout = new FileOutputStream(currentFile);byte[] temp = content.getText().getBytes();fileout.write(temp);fileout.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2) {e2.printStackTrace();}}else{fileDialog.showSaveDialog(this);String dir = fileDialog.getCurrentDirectory().getPath();String fileName = fileDialog.getSelectedFile().getName();if(!"".equals(fileName) && fileName != null){try {File currentFile = new File(dir,fileName);OutputStream fileout = new FileOutputStream(currentFile);byte[] temp = content.getText().getBytes();fileout.write(temp);fileout.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2) {e2.printStackTrace();}}}}else if("anotherSave".equals(currentOper)){fileDialog.showSaveDialog(this);String dir = fileDialog.getCurrentDirectory().getPath();String fileName = fileDialog.getSelectedFile().getName();if(!"".equals(fileName) && fileName != null){try {File currentFile = new File(dir,fileName);OutputStream fileout = new FileOutputStream(currentFile);byte[] temp = content.getText().getBytes();fileout.write(temp);fileout.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2) {e2.printStackTrace();}}}else if("exit".equals(currentOper)){System.exit(0);}else if("undo".equals(currentOper)){if(undoManager.canUndo()){undoManager.undo();}/*isUndo = true;// System.out.println("undo之前的记录集合:--"+oldContent.toString());if(oldContent.size() > 0){content.setText(oldContent.get(oldContent.size()-2));// System.out.println("当前想要删除的字符串:--"+oldContent.get(oldContent.size()-1));// System.out.println("没有删除之前的记录集合长度:--"+oldContent.size());oldContent.remove(oldContent.size()-1);// System.out.println("删除之后的记录集合长度:--"+oldContent.size()+"&&&&&");}System.out.println("undo之后的记录集合:--"+oldContent.toString());*/}else if("cut".equals(currentOper)){// oldContent.add(content.getText());content.cut();}else if("copy".equals(currentOper)){content.copy();}else if("paste".equals(currentOper)){content.paste();}else if("delete".equals(currentOper)){content.replaceSelection("");}else if("forward/replace".equals(currentOper)){dialog = createDialog();dialog.setSize(300,150);dialog.setLocation(250, 250);dialog.setVisible(true);}else if("selectall".equals(currentOper)){this.content.setSelectionStart(0);this.content.setSelectionEnd(content.getText().length());}else if("auto_change".equals(currentOper)){}else if("font".equals(currentOper)){TableDialogFont fontDlg = new TableDialogFont();Font f = content.getFont();fontDlg.setInitFont(f,content);fontDlg.setTitle("设置字体");fontDlg.setLocationRelativeTo(null);fontDlg.setModal(true);fontDlg.setVisible(true);}else if("help".equals(currentOper)){}}public static void main(String[] args) {// TODO Auto-generated method stubnew NoteBook();}}

java毕业论文

毕业设计就看结果,哪个管你的具体过程哦。能跑起来运行就可以了,至于你的论文,肯定是按需求文档写呗

目 录一、概要设计……………………………………………………………3二、程序整体设计说明…………………………………………….…..4三、程序部分源代码及注释…………………………………………….9四、测试结果………………………………………………………….24五、设计心得…………………………………………………………25六、致 谢…………………………………………………………25七、参考文献…………………………………………………………25【摘 要】该程序是一个图形界面的java文档编辑器,其界面主要采用了awt包, 程序实现了文本编辑器的基本功能有:新建文件、打开文件、文件保存、文件另存为、剪切、复制、粘贴、删除、查找/替换、改变字体大小,另外还利用Time类的schedule方法实现了文件的定时自动更新功能,并创建备份文件,由于该编辑器是用的awt包,所以在技术上没有实现将Java的关键字以不同颜色显示功能。【关键字】java 编辑器一、概要设计Java程序编辑器是:图形界面、线程、流与文件等技术的综合应用。图形界面的实现:考虑到简单、实用、高效等特点,就选择了AWT来完成实现,在选择组件上,文本编辑区就选用了TaxtArea作为主要的部件。线程实现文件自动保存:在相关的参考书上查阅到在Time类中有一个schedule方法可以在后台自动完成一定的功能,而且调用起来相当简单,于是就用了Time类中的schedule方法来实现文件自动保存及备份功能。文件操作的实现:利用了字符文件流FileReader和FileWriter类来实现。由于Java的特性,可能用任何一个编辑器来编辑,于是就将Windows中的记事本作为模仿对象,根据实现情况删减了其中的一些功能,如自动换行,设置字体,打印等功能。在设计类的时候,考虑到简单明了,就用了两个类,一个主类和一个默认属性类作为程序的整体框架,所有的对象和方法都是在默认属性类中创建和实现的,以及为各组件注册事件监听程序也是在默认属性类中实现的。主类完成对象的实例化及显示。这们设计的优点是:条理清晰,容易理解,容易修改。这样设计的缺点是:不利于共享类中的方法。二、程序整体设计说明2.1、程序框架图2.2、程序中所用类说明(1)用户自定义类类名:EditInstantiation作用:实例化对象继承的父类:WindowAdapter主要成员变量:Frame myFrm // 定义主窗体TextArea myText // 定义文本编辑区Dialog myDlgFind,myDlgFindont //查找及设置字体对话框TextField TFfind, TFreplace, TffontSize//查找对话框和字体窗体中的文本行Button BfontOK, Bfind, Breplace, Bnext, Bcancel //定义和创建各按钮Label Lf, Lr, Ls //定义和创建各标签MenuBar Mbbar //定义和创建主菜单Menu Mfile,Medit,Mformation,Mhelp //定义和创建主菜单中的选项Toolkit toolKitClipboard myCB //剪切板对象FileDialog myFDlg //定义文件对话框Choice ChfontName //定义和创建字体选择框private int VIindex = 1; //构成文件名后缀变量private String VSsubFixStr=".java"; //构成文件名扩展名变量private String VSmyFileName = "Document1",VSmyBFileName;//文件名及备份文件名变量private File VFmyFile=new File(VSmyFileName+VIindex+".java");//文件名变量private int VIsearchPosition=0; //查找位置指针private Timer VTtime; //实例化一个Time类private int VImin=1; // schedule方法中的一个时间参数private int VItype=JOptionPane.INFORMATION_MESSAGE;//提示对话框类型private String VStitle; //提示对话框标题private String VSmessage; //提示对话框信息private boolean VBchanged = true; //改变字体的一个标识private int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2; //设置字体大小及步长主要成员方法:public void init() //初始化各部件菜单的定义和事件的监听public void displayEdit ()//显示窗体及调用Time中的schedule方法public void windowClosing () //关闭窗体public void save //保存文件方法a.内部类类名:KeyEvents作用:实现菜单的事件的响应功能继承的父类:KeyAdapter主要成员变量:无成员方法:actionPerformed()、keyPressed()b.内部类类名:FindKeyEvent作用:实现查找中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:actionPerformed ()c.内部类类名:fontEvent作用:实现字体中各部件事件的响应功能继承的父类:无主要成员变量:无成员方法:ItemListener(),ActionListener()(2)用户自定义类与Java类的继承关系图如下:自定义类 Java 类线程使用说明2.3、实现接口方法本程序用到的方法有:schedule其方法描述如下:schedule(事件,启动时间,间隔时间);2.4、线程应用本程序为文本编辑器,为实现自动更新,应用到了线程,每隔1分钟对文件进行自动更新2.5、异常处理说明(1)打开文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常(2)保存文件时的异常处理需要处理的异常:IOException处理方法:捕获异常后,显示捕获的异常2.6、程序运行效果及存在的问题(1)程序运行主要界面如下:a、主界面b、打开文件对话框c、保存文件对话框d、另存为文件对话框e、查找/替换对话框f.字体对话框2.7.程序尚还存在的问题我花费了近一个多星期的时间,查阅了许多相关的资料,终于把这个Java编辑器,程序基本实现了该课程设计的基本要求。但由于自己水平有限,使得程序还有不是很完善,首先,最重要的一点是该设计的最重要的功能自动改变java关键字的颜色没有实现。三、程序部分源代码及注释//****************************************************// class name :Edit// implements :none// extends :none// attribute :public// founction :entrance of the class//*****************************************************public class Edit{ //主类public static void main(String args[]){EditInstantiation myEdit= new EditInstantiation();myEdit.init(); //初始化myEdit.displayEdit(); //显示窗体}//****************************************************// class name :EditInstantiation// implements :none// extends :WindowAdapter// attribute :default// founction :EditInstantiation of the main class//*****************************************************class EditInstantiation extends WindowAdapter{ //默认属性类//define sources 定义各部件Frame myFrm=new Frame("我的编辑器"); //定义窗体TextArea myText=new TextArea(); //定义窗体Dialog myDlgFind=new Dialog(myFrm,"查找",true); //定义查找对话框Dialog myDlgFindont=new Dialog(myFrm,"字体",true); //定义字体对话框TextField TFfind=new TextField(30);//定义查找对话中的查找输入框TextField TFreplace=new TextField(30); //定义查找对话中的替换输入框TextField TFfontSize,TFfontDemo;//定义字体大小文本框和示例框Choice CHfontName;//定义字体大小选择框List LTfontSize; //定义字体大小标签Button BfontOK,BfontCancel; //定义字体大小对话中的确定及取消按钮Button Bfind=new Button("查找");//定义查找对话中的查找按钮Button Breplace=new Button("替换");//定义查找对话中的替换及取消按钮Button Bnext=new Button("下一个");//定义查找对话中的下一个及取消按钮Button Bcancel=new Button("取消");//定义查找对话中的确定及取消按钮Label Lf=new Label("查找内容:");Label Lr=new Label("替换为: ");Label Ls=new Label("字体大小:");FileDialog myFDlg;Clipboard myCB=Toolkit.getDefaultToolkit().getSystemClipboard(); //剪切板对象Menu Mfile,Medit,Mformation,Mhelp;MenuBar MBbar;//define varities //定义各变量private int VIindex = 1;private String VSsubFixStr=".java";private String VSmyFileName = "Document1",VSmyBFileName;private File VFmyFile=new File(VSmyFileName+VIindex+".java");private int VIsearchPosition=0;private Timer VTtime;private int VImin=1; // parameter in time schedulprivate int VItype=JOptionPane.INFORMATION_MESSAGE;private String VStitle;private String VSmessage;// flag of the changeingprivate boolean VBchanged = true;// the scope of the fontprivate int VIfontSizeMin = 8, VIfontSizeMax = 40, VIfontSizeChangedStep = 2;//************************************************//founction name:init()//parameter :none//attribute :public//founction :initia all compont//************************************************public void init(){ //初始化各部件//------------------ set menu ------------------MBbar=new MenuBar();myFrm.setMenuBar(MBbar);Mfile=new Menu("文件");Medit=new Menu("编辑");Mformation=new Menu("格式");Mhelp=new Menu("帮助");MBbar.add(Mfile);MBbar.add(Medit);MBbar.add(Mformation);MBbar.add(Mhelp);//文件菜单 add File menuMfile.add(new MenuItem("新建",new MenuShortcut(KeyEvent.VK_N)));Mfile.add(new MenuItem("打开",new MenuShortcut(KeyEvent.VK_O)));Mfile.add(new MenuItem("保存",new MenuShortcut(KeyEvent.VK_S)));Mfile.add(new MenuItem("另存为"));Mfile.addSeparator();//分隔线Mfile.add(new MenuItem("退出",new MenuShortcut(KeyEvent.VK_E)));//编辑菜单 add Edit menuMedit.add(new MenuItem("剪切"));//,new MenuShortcut(KeyEvent.VK_X)));Medit.add(new MenuItem("复制"));//new MenuShortcut(KeyEvent.VK_C)));Medit.add(new MenuItem("粘贴"));//new MenuShortcut(KeyEvent.VK_V)));Medit.add(new MenuItem("删除"));//new MenuShortcut(KeyEvent.VK_D)));Medit.addSeparator();//分隔线Medit.add(new MenuItem("查找/替换",new MenuShortcut(KeyEvent.VK_F)));Medit.addSeparator();//分隔线Medit.add(new MenuItem("全选",new MenuShortcut(KeyEvent.VK_A)));//格式菜单 add Formation menuMformation.add(new MenuItem("字体",new MenuShortcut(KeyEvent.VK_U)));//帮助菜单 add Formation menuMhelp.add(new MenuItem("关于作者"));//----------------- menu add end -------------------------//add Menu Action ListenerMfile.addActionListener(new KeyEvents());Medit.addActionListener(new KeyEvents());Mformation.addActionListener(new KeyEvents());Mhelp.addActionListener(new FindKeyEvent());//--------------------------- Find dialog-----------------myDlgFind.setSize(350,115);myDlgFind.setLocation(250,150);myDlgFind.setLayout(new FlowLayout(FlowLayout.CENTER));myDlgFind.setBackground(Color.LIGHT_GRAY);Bfind.setEnabled(false);Breplace.setEnabled(false);Bnext.setEnabled(false);myDlgFind.add(Lf);myDlgFind.add(TFfind);myDlgFind.add(Lr);myDlgFind.add(TFreplace);myDlgFind.add(Bfind);myDlgFind.add(Breplace);myDlgFind.add(Bnext);myDlgFind.add(Bcancel);myDlgFind.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){myDlgFind.setVisible(false);}});//为查找对话框窗体注册事件监听TFfind.addKeyListener(new KeyEvents());//注册事件监听Bfind.addActionListener(new FindKeyEvent());Breplace.addActionListener(new FindKeyEvent());Bcancel.addActionListener(new FindKeyEvent());Bnext.addActionListener(new FindKeyEvent());//--------------- end add action listener ------------//================set font dialog ==============//font size text fieldTFfontSize = new TextField("8",14);TFfontSize.selectAll();//font size list fieldLTfontSize = new java.awt.List(5, false);LTfontSize.addItemListener(new fontEvent());for(int i = VIfontSizeMin; i <= VIfontSizeMax; i = i + VIfontSizeChangedStep)LTfontSize.add(i + "");//添加字体大小LTfontSize.select(0);//two Button Ok CancelBfontOK = new Button("确定");BfontOK.addActionListener(new fontEvent());BfontCancel = new Button("取消");BfontCancel.addActionListener(new fontEvent());//a TextField for demo the fontTFfontDemo = new TextField("Java awt",37);TFfontDemo.setEditable(false);// my font dialog设置字体对话框myDlgFindont.setLayout(new FlowLayout(FlowLayout.LEFT));myDlgFindont.setBackground(Color.LIGHT_GRAY);myDlgFindont.add(Ls);myDlgFindont.add(TFfontSize);myDlgFindont.add(BfontOK);myDlgFindont.add(BfontCancel);myDlgFindont.add(LTfontSize);myDlgFindont.add(TFfontDemo);myDlgFindont.setSize(300,200);myDlgFindont.setLocation(300,200);myDlgFindont.setResizable(false);myDlgFindont.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {myDlgFindont.show(false);}}); //为字体对话框窗体注册事件监听//=============end set font dialog// =======set Edit frame设置编辑器窗休myFrm.add(myText,BorderLayout.CENTER);myFrm.setSize(500,400);myFrm.setBackground(Color.lightGray);myFrm.addWindowListener(this);myFrm.setSize(500,400);myFrm.setLocation(200,100);myFrm.setTitle("Java编辑器");}//************************************************//founction name:displayEdit()//parameter :none//attribute :public//founction :initial and display the frame//************************************************public void displayEdit(){ //显示窗体myFrm.setVisible(true);//---------------------- auto save ---------------------VTtime = new Timer(true);VTtime.schedule(new java.util.TimerTask(){public void run(){if(VSmyFileName!=null){save(VSmyFileName+".java");VSmyBFileName=VSmyFileName+".bak";} //添加自动保存功能save(VSmyBFileName);}}, VImin*60*1000,VImin*60*1000);//parament 1 the task//parament 2 when to start the task//parament 3 set the interval time }//****************************************************// class name :KeyEvents// implements :ActionListener// extends :KeyAdapter// attribute :default// founction :implement the mouse and key action//*****************************************************class KeyEvents extends KeyAdapter implements ActionListener{//********************************************************//founction name:actionPerformed()//parameter :none//attribute :public//return :void//founction :realize the key action in the menu//*********************************************************public void actionPerformed(ActionEvent e){//完成菜单事件的功能// File Menuif (e.getActionCommand()=="新建"){//remind youJFrame aFrame=new JFrame();aFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);JOptionPane optionPane=new JOptionPane();String choices[]={"是","否","取消"};int n=optionPane.showOptionDialog(aFrame,"文件正文已更改,是否保存更改","文本编辑器",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.WARNING_MESSAGE,null,choices,choices[0]);//保存文件后新建if(n==0){//若文件存在,保存在原文件中,再新建文件try{if(VFmyFile.exists()){save(VSmyFileName); // call the save founctionmyText.setText("");VIindex++;}else{//若文件不存在,则保存后再新建myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);myFDlg.setFile(VSmyFileName);myFDlg.show();VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();save(VSmyFileName);myText.setText("");VIindex++;}}catch(Exception ne){}}//不保存文件新建if(n==1){myText.setText("");VIindex++;}//取消新建if(n==0){return;}}//打开菜单 Open Menuif (e.getActionCommand()=="打开") {myFDlg=new FileDialog(myFrm,"打开",FileDialog.LOAD);myFDlg.show();if (myFDlg.getFile()!="") {VFmyFile=new File(myFDlg.getDirectory()+myFDlg.getFile());VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();if( VFmyFile.exists()){try{FileReader fr=new FileReader(VFmyFile);BufferedReader br=new BufferedReader(fr);String text;myText.setText("");while ((text=br.readLine())!=null)myText.append(text+"\r\n");br.close();fr.close();}catch(IOException ioe){VStitle="提示";VSmessage="打开文件出错";JOptionPane.showMessageDialog(myFrm,VSmessage,VStitle,VItype);}}}}//保存菜单 Save Menuif (e.getActionCommand()=="保存"){myFDlg=new FileDialog(myFrm,"保存文件",FileDialog.SAVE);myFDlg.setFile(VSmyFileName);myFDlg.show();VSmyFileName=myFDlg.getFile();if(VSmyFileName!=null){VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();save(VSmyFileName);}}//另存为菜单 SaveAs Menuif (e.getActionCommand()=="另存为"){myFDlg=new FileDialog(myFrm,"文件另存为",1);myFDlg.setFile(VSmyFileName);myFDlg.show();VSmyFileName=myFDlg.getFile();if(VSmyFileName!=null){VSmyFileName=myFDlg.getDirectory()+myFDlg.getFile();save(VSmyFileName);}}//退出菜单 exit Menuif (e.getActionCommand()=="退出")System.exit(0);//编辑 Edit Menuif (e.getActionCommand()=="剪切"){//CutString text =myText.getSelectedText();StringSelection selection = new StringSelection(text);myCB.setContents(selection, null);myText.replaceRange("",myText.getSelectionStart(),myText.getSelectionEnd());}if (e.getActionCommand()=="复制"){//copyString text=myText.getSelectedText();if(text!=null){StringSelection selection=new StringSelect

java程序站专门收集整理了《Java工程师成神之路(1)》问题和答案整理成册,分成系列文章分享给大家。基础篇01面向对象→ 什么是面向对象、面向过程?面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向对象的三大基本特征和五大基本原则?一、三大基本特征:封装、继承、多态1、封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏2、继承:所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展3、多态:所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用二、五大基本原则1、单一职责原则(SRP)是指一个类的功能要单一,不能包罗万象2、开放封闭原则(OCP)一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的3、里氏替换原则(LSP)子类应当可以替换父类并出现在父类能够出现的任何地方。继承的体现4、依赖倒置原则(DIP)具体依赖抽象,上层依赖下层。5、接口隔离原则(ISP)模块间要通过抽象接口隔离开,不通过具体的类关联,降低耦合度→ 平台无关性什么是平台无关性,Java是如何做到平台无关的?平台无关(跨平台): 一种语言在计算机上的运行不受平台的约束,一次编译到处运行。Java经过编译之后生成的.class 的字节码文件,运行平台上只要有JVM就能运行,不需要进行再次编译JVM 还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala)→ 值传递值传递、引用传递java中只存在值传递,只存在值传递!!! 然而我们经常看到对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。但是不要被这个假象所蒙蔽,实际上这个传入函数的值是对象引用的拷贝,即传递的是引用的地址值,所以还是按值传递。为什么说 Java 中只有值传递?Java 语言的参数传递只有「按值传递」。当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的方法内改变,但对象的引用(不是引用的副本) 是永远不会改变的。按值传递的精髓是:传递的是存储单元中的内容,而不是存储单元的引用!→ 封装、继承、多态继承多态方法重载与方法重写修饰符代码块final关键字代码块的执行顺序:静态代码块优先于构造代码块,构造代码块优先于构造方法。02 Java 基础知识→ 基本数据类型7 种基本数据类型:整型、浮点型、布尔型、字符型以及取值范围?什么是浮点型?什么是单精度和双精度?单精度浮点数(float)与双精度浮点数(double)的区别如下:(1)在内存中占有的字节数不同单精度浮点数在机内占4个字节双精度浮点数在机内占8个字节(2)有效数字位数不同单精度浮点数有效数字8位双精度浮点数有效数字16位(3)所能表示数的范围不同单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308(4)在程序中处理速度不同一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快为什么不能用浮点型表示金额?金额计算不能用doube!必须用BigDecimal1.出现科学计数法2.计算金额不准确,丢失精度→ 自动拆装箱什么是包装类型、什么是基本类型?1、为什么存在基本类型:在Java中正常应该设置对象,然后通过new一个对象存储在堆中,再通过栈的引用来使用对象,但对于简单的小的变量,用new显的繁琐麻烦,所以产生了基本类型2、有了基本类型,为什么还会产生包装类型:(1)什么是包装类:包装类型相当于将基本类型包装起来,使其具有对象的性质,并且可以添加属性和方法,丰富了基本类型的操作。(2)包装类型具有哪些好处:符合Java面向对象编程特征使用集合Collection就一定要用包装类型需要往ArrayList,HashMap放东西,int和double是放不进去的3、二者相互转换(1)int转换integerint i=0ineger ii=new integer(i)(2)integer转intinteger ii=new interger(0)int i=ii.intValue();4、二者的区别(1)基本类型直接声明而包装类型需使用new关键字来在堆中分配内存空间(2)基本类型存储在栈中而包装类型存储在堆中通过引用(3)基本类型初始值,int为0,boolean为false。包装类型初始值为null(4)基本类型直接赋值使用就好,包装类型需要在集合如Collection、map时会使用什么是自动拆装箱?自动装箱: 就是将基本数据类型自动转换成对应的包装类。自动拆箱:就是将包装类自动转换成对应的基本数据类型。自动装箱都是通过包装类的valueOf()方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。Integer 的缓存机制?当使用自动装箱的时候,也就是将基本数据类型传递给对象类的时候触发自动装箱。这个时候java虚拟机会创建一系列的整数并且缓存到一个数组中以便直接使用,这就是缓存策略→ String字符串的不可变性JDK 6 和 JDK 7 中 substring 的原理及区别?JDK6中,String是通过字符数组实现的,String类包含三个成员变量:char value[], int offset,int count。他们分别用来存储真正的字符数组,数组的第一个位置索引以及字符串中包含的字符个数。JDK6中的substring导致的问题如果字符串很长,但是只需substring切割很短的一段。这可能导致性能问题,因为只需要的是一小段字符序列,却引用了整个字符串(因为这个很长的字符数组一直被引用,而无法被回收,就可能导致内存泄露)。在JDK 6中,一般用以下方式来解决该问题,原理其实就是生成一个新的字符串并引用他。x = x.substring(x, y) + ""JDK 7 中的substring上述问题,在JDK7中得到解决。在jdk 7 中,substring方法会在堆内存中创建一个新的数组。//JDK 7public String(char value[], int offset, int count) {//check boundarythis.value = Arrays.copyOfRange(value, offset, offset + count);}public String substring(int beginIndex, int endIndex) {//check boundaryint subLen = endIndex - beginIndex;return new String(value, beginIndex, subLen);}replaceFirst、replaceAll、replace 区别?· replace(CharSequence target, CharSequence replacement) ,用replacement替换所有的target,两个参数都是字符串。· replaceAll(String regex, String replacement) ,用replacement替换所有的regex匹配项,regex很明显是个正则表达式,replacement是字符串。· replaceFirst(String regex, String replacement) ,基本和replaceAll相同,区别是只替换第一个匹配项。String s = "my.test.txt";System.out.println(s.replace(".", "#")); // replace将字符串中的. 都替换为 #System.out.println(s.replaceAll(".", "#")); // replaceAll 用到了正则表达式,其中. 是任意字符的意思,所以结果是字符串全部替换为#System.out.println(s.replaceFirst(".", "#")); // replaceFirst 用到了正则表达式, 其中. 是任意字符的意思,所以第一个字符被#号代替System.out.println(s.replaceFirst("\\.", "#")); // 正则表达式中双杠是原生字符串的意思,所以结果是字符串中第一个. 被#代替得到String 对“+”的重载?String 类底层是一个 final 修饰的 char 类型数组,意味着 String 类的对象是不可变的,所以 String 对象可以共享。String 类中的每一个看起来会修改 String 值的方法,实际上都是创建了一个全新的 String 对象,用来包含修改后的字符串内容,这也可以说明 String 对象具有只读的属性。String fruit = "Apple," + "Pear," + "Orange";编译器会创建一个 StringBuilder 对象,用来构造最终要生成的 String,并为每一个字符串调用一次 StringBuilder 中的 append() 方法,因此代码一共执行了三次 append() 方法。最后调用 toString 生成最终的结果,并保存为 fruit。字符串拼接的几种方式和区别?1.无论如何直接用“+”号连接字符串都是最慢的2.在拼接少数字符串(不超过4个)的时候,concat效率是最高的3.多个字符串拼接的时候,StringBuilder/StringBuffer的效率是碾压的4.在不需要考虑线程安全问题的时候,使用StringBuilder的效率比StringBuffer更高String.valueOf 和 Integer.toString 的区别?String.valueOf()可以应用到任何数据类型,且不会有异常报出。Integer.toString()表示先讲int转换成Integer型,然后再将Integer转换成String型。总的来说 String.valueOf()用的比较多(应用的数据类型无限制),但是基本上每个JAVA对象都会有一个toString方法。2个方法的运行结果还是一样的,只是原理(运行过程)不一样.switch 对 String 的支持?java中switch支持String,是利用String的hash值,本质上是switch-int结构。并且利用到了equals方法来防止hash冲突的问题。最后利用switch-byte结构,精确匹配。字符串池、常量池(运行时常量池、Class 常量池)、intern?1.全局常量池在每个VM中只有一份,存放的是字符串常量的引用值。2.class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量的符号引用。3.运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。→ 熟悉 Java 中各种关键字transient、instanceof、final、static、volatile、synchronized、const 原理及用法transient:修饰变量,在实现Serializable接口的类中,可以避免持久化,但是如果实现的是Externalizable接口,那么手动序列化会无视 transient。instanceof:对象 instanceof 类,检查对象是否是这个类或者这个类的子类的对象,返回布尔值。volatile:轻量级的线程安全的实现,但是要注意用法,某些场合不适合用volatile,保证可见性,有序性synchronized:线程安全的修饰符,锁住对象的访问权限。final:final修饰类:该类不可继承final修饰方法:该方法不能被子类覆盖(但它不能修饰构造函数)final修饰字段属性:属性值第一次初始化后不能被修改使用final可以提高程序执行的效率,将一个方法设成final后编译器就可以把对那个方法的所有调用都置入“嵌入”调用里。static:static修饰成员函数则该函数不能使用this对象static不能修饰构造函数、函数参数、局部成员变量static修饰成员字段则当类被虚拟机加载时按照声明先后顺序对static成员字段进行初始化。static修饰语句块:当类被虚拟机加载时按照声明先后顺序初始化static成员字段和static语句块static所修饰的方法和字段只属于类,所有对象共享,java不能直接定义全局变量,是通过static来实现的。java中没有const,不能直接定义常量,是通过static final组合来实现的。专注java职场经验,技术分享,欢迎关注公众号:程序秘籍

你在大学里学的是知识吗?你学的是思维方式!今天知识很廉价,b站里各种授课,各种网课。大学里的教材都很陈旧,都是好多年前的东西了。当你踏上社会,用人单位用的是好多年前的旧知识?书本上有的才会要求你做?全都不是,全都是你没接触过,没学过的东西。你在大学里面学的唯一有用的就是你对于你的专业的思维方式。运用你的编程思维方式,去解决工作上的一个又一个项目。程序员的思维方式是什么?面相对象+数据结构+算法。你告诉我,你用面相过程来先毕业论文?你弄个文凭是用来干嘛的?你4年大学学的是啥?我是面试官,我问你毕业设计写的是啥,你就给我这个?

java语言毕业论文

TAGS: 毕业论文 计算机 基于 远程 对象 RMI 方法 实现 调用 哪位老兄有计算机毕业设计论文啊?是基于java的,小弟急用,谢谢!用RMI开发基于Java的企业分布式应用我站还提供更多的免费计算机论文,但免费论文仅供参考,建议广大网友下载后不要轻易采用。摘要由于Java具有跨平台、代码可移植性、安全高效等广泛而强大的功能,因而在开发网络分布式应用的时候,可以用它自身的机制实现分布式计算,一种基于Java的远程方法调用(RMI)为我们开发企业分布式应用提供了行之有效的解决方案。关键词 Java RMI 企业分布式应用 1 概述随着电力企业信息化建设的不断深入和发展,企业内部和企业与企业之间对信息、对数据的交换量大大增加,这些信息与数据越来越需要在不同的计算机网络间传送和交流。同时,由于各单位、各部门之间的现存的计算机网络硬件设备与操作系统千差万别,应用水平也参差不齐,因此,开发出跨平台、可移植、高效安全的网络分布式应用来服务于电力企业,就显得尤为重要。在当今的编程术语里,分布式计算已经成为很常见的词,它将企业的业务数据和程序分布在网络的不同物理位置上,通过调动网络上多台计算机的处理能力,发挥远程调用数据的功能。远程方法调用(Remote Method Invocation ,RMI),可以在不同的Java虚拟机(JVM)之间实现对象与对象的通信。JVM可以位于相同或不同计算机上,在多个JVM中,一个JVM可以调用存储在其它JVM的对象的方法。本文主要介绍RMI的特点,分析应用RMI进行企业分布式计算的原理,以及利用RMI实现基于Java的企业分布式应用的具体步骤。2 远程方法调用(RMI)的特点2.1 TCP编程的缺点由于Java编程语言设计之初就是面向对象和支持网络的,因此,基于对象的RMI机制已经内置在Java平台中。我们经常会在网络开发中使用TCP/IP编程,这样,自然而然地就会涉及到Socket(套接字)编程。但是,使用Socket编程需要大量重复编码,在复杂分布式操作时显得非常麻烦,而且易于出错。因此,如何快速、高效、安全、可扩展地进行网络分布式计算,是开发者们一贯追求和倡导的主题。直到RMI的出现,这种繁杂、低效的开发情况才有很大改观。2.2 RMI编程的特点当我们利用对象序列化在网络上分配对象时,RMI提供了非Java平台无法匹敌的独特而强电子商务资料库)*!%267'$#7'455大的分布式计算模型,RMI主要有以下特点:? 客户机可以向本地方法一样调用远程服务器上的方法;? 可以根据接口指定客户机/服务器编程合约;? 可以从服务器对象缺省二进制类文件,自动生成调动/反调动代码;? 将Java编程模型扩展到机器边界(和Java虚拟机(JVM)边界之外),不需要任何特殊语法;? 还可以和一个远程方法调用中的数据同时传输行为(代码)。尽管RMI不是唯一的企业级远程对象访问方案,但它却是最容易实现的。2.3 RMI与CORBA作为分布式应用程序框架的规范,COBRA首当其冲,它是由对象管理组织(OMG)开发的。与CORBA不同的是,CORBA能够利用不同编程语言(例如C/C++、Basic等)开发实现分布式应用,而RMI是一种纯Java解决方案。在RMI中,程序的所有部分都由Java语言编写,这样,开发出来的程序完全符合Java规范,便于实现跨平台访问、扩展和移植。按照笔者所在西北电力建设集团公司的情况看,服务器操作系统主要有Linux和Windows2000 Server,分别存在于公司和部门当中,它们是不同的系统平台;同时,公司下属各个工程项目部又距离很远,近的几十公里,远则达到上千公里甚至位于国外,因此跨平台和远程访问这两大功能在开发企业应用系统时就必须考虑,而RMI恰恰能够用它的自身特点来满足编程需要。3 RMI基本体系结构简介RMI通过TCP/IP在内部使用Socket,象其名称暗示的那样,它能够帮助我们查找并执行远程对象的方法。RMI的目的是让位于不同JVM中的对象,在外观及行为上都像是本地的对象。通常,我们把调用这种远程对象的JVM,称为客户机;而把包括这种远程对象的JVM,称为服务器。尽管对一个远程对象的引用和获得对本地对象的引用有所不同,但我们可以把远程对象像本地对象一样使用。应用程序并不知道一个对象是远程的还是本地的。实际上,远程对象上被调用的方法与本地对象上调用的方法,具有相同的语法结构。作为RMI的底层(会包含复杂的Socket操作),它会自动截获方法调用,找到远程对象,然后处理远程请求。笔者认为,RMI设计的重要之处,就在于不但在设计上实现了远程访问功能,而且实现了设计的透明性。RMI的基本体系结构,概括起来说,由三个抽象层组成:3.1 存根/框架层(Stubs/Skeletons Layer)

java程序站专门收集整理了《Java工程师成神之路(1)》问题和答案整理成册,分成系列文章分享给大家。基础篇01面向对象→ 什么是面向对象、面向过程?面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。面向对象的三大基本特征和五大基本原则?一、三大基本特征:封装、继承、多态1、封装:也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏2、继承:所谓继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展3、多态:所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。这意味着,虽然针对不同对象的具体操作不同,但通过一个公共的类,它们(那些操作)可以通过相同的方式予以调用二、五大基本原则1、单一职责原则(SRP)是指一个类的功能要单一,不能包罗万象2、开放封闭原则(OCP)一个模块在扩展性方面应该是开放的而在更改性方面应该是封闭的3、里氏替换原则(LSP)子类应当可以替换父类并出现在父类能够出现的任何地方。继承的体现4、依赖倒置原则(DIP)具体依赖抽象,上层依赖下层。5、接口隔离原则(ISP)模块间要通过抽象接口隔离开,不通过具体的类关联,降低耦合度→ 平台无关性什么是平台无关性,Java是如何做到平台无关的?平台无关(跨平台): 一种语言在计算机上的运行不受平台的约束,一次编译到处运行。Java经过编译之后生成的.class 的字节码文件,运行平台上只要有JVM就能运行,不需要进行再次编译JVM 还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala)→ 值传递值传递、引用传递java中只存在值传递,只存在值传递!!! 然而我们经常看到对于对象(数组,类,接口)的传递似乎有点像引用传递,可以改变对象中某个属性的值。但是不要被这个假象所蒙蔽,实际上这个传入函数的值是对象引用的拷贝,即传递的是引用的地址值,所以还是按值传递。为什么说 Java 中只有值传递?Java 语言的参数传递只有「按值传递」。当一个实例对象作为参数被传递到方法中时,参数的值就是该对象的引用的一个副本。指向同一个对象,对象的内容可以在被调用的方法内改变,但对象的引用(不是引用的副本) 是永远不会改变的。按值传递的精髓是:传递的是存储单元中的内容,而不是存储单元的引用!→ 封装、继承、多态继承多态方法重载与方法重写修饰符代码块final关键字代码块的执行顺序:静态代码块优先于构造代码块,构造代码块优先于构造方法。02 Java 基础知识→ 基本数据类型7 种基本数据类型:整型、浮点型、布尔型、字符型以及取值范围?什么是浮点型?什么是单精度和双精度?单精度浮点数(float)与双精度浮点数(double)的区别如下:(1)在内存中占有的字节数不同单精度浮点数在机内占4个字节双精度浮点数在机内占8个字节(2)有效数字位数不同单精度浮点数有效数字8位双精度浮点数有效数字16位(3)所能表示数的范围不同单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308(4)在程序中处理速度不同一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快为什么不能用浮点型表示金额?金额计算不能用doube!必须用BigDecimal1.出现科学计数法2.计算金额不准确,丢失精度→ 自动拆装箱什么是包装类型、什么是基本类型?1、为什么存在基本类型:在Java中正常应该设置对象,然后通过new一个对象存储在堆中,再通过栈的引用来使用对象,但对于简单的小的变量,用new显的繁琐麻烦,所以产生了基本类型2、有了基本类型,为什么还会产生包装类型:(1)什么是包装类:包装类型相当于将基本类型包装起来,使其具有对象的性质,并且可以添加属性和方法,丰富了基本类型的操作。(2)包装类型具有哪些好处:符合Java面向对象编程特征使用集合Collection就一定要用包装类型需要往ArrayList,HashMap放东西,int和double是放不进去的3、二者相互转换(1)int转换integerint i=0ineger ii=new integer(i)(2)integer转intinteger ii=new interger(0)int i=ii.intValue();4、二者的区别(1)基本类型直接声明而包装类型需使用new关键字来在堆中分配内存空间(2)基本类型存储在栈中而包装类型存储在堆中通过引用(3)基本类型初始值,int为0,boolean为false。包装类型初始值为null(4)基本类型直接赋值使用就好,包装类型需要在集合如Collection、map时会使用什么是自动拆装箱?自动装箱: 就是将基本数据类型自动转换成对应的包装类。自动拆箱:就是将包装类自动转换成对应的基本数据类型。自动装箱都是通过包装类的valueOf()方法来实现的.自动拆箱都是通过包装类对象的xxxValue()来实现的。Integer 的缓存机制?当使用自动装箱的时候,也就是将基本数据类型传递给对象类的时候触发自动装箱。这个时候java虚拟机会创建一系列的整数并且缓存到一个数组中以便直接使用,这就是缓存策略→ String字符串的不可变性JDK 6 和 JDK 7 中 substring 的原理及区别?JDK6中,String是通过字符数组实现的,String类包含三个成员变量:char value[], int offset,int count。他们分别用来存储真正的字符数组,数组的第一个位置索引以及字符串中包含的字符个数。JDK6中的substring导致的问题如果字符串很长,但是只需substring切割很短的一段。这可能导致性能问题,因为只需要的是一小段字符序列,却引用了整个字符串(因为这个很长的字符数组一直被引用,而无法被回收,就可能导致内存泄露)。在JDK 6中,一般用以下方式来解决该问题,原理其实就是生成一个新的字符串并引用他。x = x.substring(x, y) + ""JDK 7 中的substring上述问题,在JDK7中得到解决。在jdk 7 中,substring方法会在堆内存中创建一个新的数组。//JDK 7public String(char value[], int offset, int count) {//check boundarythis.value = Arrays.copyOfRange(value, offset, offset + count);}public String substring(int beginIndex, int endIndex) {//check boundaryint subLen = endIndex - beginIndex;return new String(value, beginIndex, subLen);}replaceFirst、replaceAll、replace 区别?· replace(CharSequence target, CharSequence replacement) ,用replacement替换所有的target,两个参数都是字符串。· replaceAll(String regex, String replacement) ,用replacement替换所有的regex匹配项,regex很明显是个正则表达式,replacement是字符串。· replaceFirst(String regex, String replacement) ,基本和replaceAll相同,区别是只替换第一个匹配项。String s = "my.test.txt";System.out.println(s.replace(".", "#")); // replace将字符串中的. 都替换为 #System.out.println(s.replaceAll(".", "#")); // replaceAll 用到了正则表达式,其中. 是任意字符的意思,所以结果是字符串全部替换为#System.out.println(s.replaceFirst(".", "#")); // replaceFirst 用到了正则表达式, 其中. 是任意字符的意思,所以第一个字符被#号代替System.out.println(s.replaceFirst("\\.", "#")); // 正则表达式中双杠是原生字符串的意思,所以结果是字符串中第一个. 被#代替得到String 对“+”的重载?String 类底层是一个 final 修饰的 char 类型数组,意味着 String 类的对象是不可变的,所以 String 对象可以共享。String 类中的每一个看起来会修改 String 值的方法,实际上都是创建了一个全新的 String 对象,用来包含修改后的字符串内容,这也可以说明 String 对象具有只读的属性。String fruit = "Apple," + "Pear," + "Orange";编译器会创建一个 StringBuilder 对象,用来构造最终要生成的 String,并为每一个字符串调用一次 StringBuilder 中的 append() 方法,因此代码一共执行了三次 append() 方法。最后调用 toString 生成最终的结果,并保存为 fruit。字符串拼接的几种方式和区别?1.无论如何直接用“+”号连接字符串都是最慢的2.在拼接少数字符串(不超过4个)的时候,concat效率是最高的3.多个字符串拼接的时候,StringBuilder/StringBuffer的效率是碾压的4.在不需要考虑线程安全问题的时候,使用StringBuilder的效率比StringBuffer更高String.valueOf 和 Integer.toString 的区别?String.valueOf()可以应用到任何数据类型,且不会有异常报出。Integer.toString()表示先讲int转换成Integer型,然后再将Integer转换成String型。总的来说 String.valueOf()用的比较多(应用的数据类型无限制),但是基本上每个JAVA对象都会有一个toString方法。2个方法的运行结果还是一样的,只是原理(运行过程)不一样.switch 对 String 的支持?java中switch支持String,是利用String的hash值,本质上是switch-int结构。并且利用到了equals方法来防止hash冲突的问题。最后利用switch-byte结构,精确匹配。字符串池、常量池(运行时常量池、Class 常量池)、intern?1.全局常量池在每个VM中只有一份,存放的是字符串常量的引用值。2.class常量池是在编译的时候每个class都有的,在编译阶段,存放的是常量的符号引用。3.运行时常量池是在类加载完成之后,将每个class常量池中的符号引用值转存到运行时常量池中,也就是说,每个class都有一个运行时常量池,类在解析之后,将符号引用替换成直接引用,与全局常量池中的引用值保持一致。→ 熟悉 Java 中各种关键字transient、instanceof、final、static、volatile、synchronized、const 原理及用法transient:修饰变量,在实现Serializable接口的类中,可以避免持久化,但是如果实现的是Externalizable接口,那么手动序列化会无视 transient。instanceof:对象 instanceof 类,检查对象是否是这个类或者这个类的子类的对象,返回布尔值。volatile:轻量级的线程安全的实现,但是要注意用法,某些场合不适合用volatile,保证可见性,有序性synchronized:线程安全的修饰符,锁住对象的访问权限。final:final修饰类:该类不可继承final修饰方法:该方法不能被子类覆盖(但它不能修饰构造函数)final修饰字段属性:属性值第一次初始化后不能被修改使用final可以提高程序执行的效率,将一个方法设成final后编译器就可以把对那个方法的所有调用都置入“嵌入”调用里。static:static修饰成员函数则该函数不能使用this对象static不能修饰构造函数、函数参数、局部成员变量static修饰成员字段则当类被虚拟机加载时按照声明先后顺序对static成员字段进行初始化。static修饰语句块:当类被虚拟机加载时按照声明先后顺序初始化static成员字段和static语句块static所修饰的方法和字段只属于类,所有对象共享,java不能直接定义全局变量,是通过static来实现的。java中没有const,不能直接定义常量,是通过static final组合来实现的。专注java职场经验,技术分享,欢迎关注公众号:程序秘籍

你在大学里学的是知识吗?你学的是思维方式!今天知识很廉价,b站里各种授课,各种网课。大学里的教材都很陈旧,都是好多年前的东西了。当你踏上社会,用人单位用的是好多年前的旧知识?书本上有的才会要求你做?全都不是,全都是你没接触过,没学过的东西。你在大学里面学的唯一有用的就是你对于你的专业的思维方式。运用你的编程思维方式,去解决工作上的一个又一个项目。程序员的思维方式是什么?面相对象+数据结构+算法。你告诉我,你用面相过程来先毕业论文?你弄个文凭是用来干嘛的?你4年大学学的是啥?我是面试官,我问你毕业设计写的是啥,你就给我这个?

毕业设计就看结果,哪个管你的具体过程哦。能跑起来运行就可以了,至于你的论文,肯定是按需求文档写呗

java毕业论文日志

package homework.day15;import java.awt.Font;import java.awt.GridLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFileChooser;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.KeyStroke;import javax.swing.undo.UndoManager;/*** Autho : showncx* time : Oct 14, 2008 8:31:00 AM* insert here....*/public class NoteBook extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;private JFileChooser fileDialog;private JTextArea content;private JDialog dialog;private JPopupMenu jpm;private JTextField rep_word1,rep_word2;private String rep_director,rep_newword;private JLabel rep_mes1,rep_mes2;// private boolean isUndo = false;private String fileInfo = null;private String[] menus = new String[]{"File","Edit","Format","View","Help"};private String[][] menuItems = new String[][]{{"new","open","save","anotherSave","","setter","print","exit"},{"undo","","cut","copy","paste","delete","","forward/replace","goto","","allselect","time/date"},{"auto_change","font"},{"status"},{"help"}};private String[] popItems = new String[]{"undo","","cut","copy","paste","delete","selectall","","a_it's so short want it longger..."};// private LinkedList oldContent = new LinkedList();private UndoManager undoManager;/*** the constructor*/public NoteBook(){super("NoteBook");initJPopMenu();undoManager = new UndoManager();fileDialog = new JFileChooser();fileDialog.setCurrentDirectory(new File("E:\\")) ;content = new JTextArea();content.getDocument().addUndoableEditListener(undoManager);// content.getDocument().addDocumentListener(new DocumentListener(){//// public void changedUpdate(DocumentEvent e) {// if(!isUndo){//// oldContent.add(content.getText());// isUndo = false;// }//// isUndo = false;// }//// public void insertUpdate(DocumentEvent e) {// if(!isUndo){//// oldContent.add(content.getText());// System.out.println("insert--update");// isUndo = false;// }// isUndo = false;// }//// public void removeUpdate(DocumentEvent e) {// if(!isUndo){//// oldContent.add(content.getText());// isUndo = false;// }//// isUndo = false;// }// });content.addMouseListener(new MouseAdapter(){@Overridepublic void mouseClicked(MouseEvent e) {if(e.getButton() == 3){jpm.show(content, e.getX(), e.getY());}}});content.setFont(new Font("font1",25,25));JScrollPane jsp = new JScrollPane(content);this.add(jsp);this.setJMenuBar(getMenuBar(menuItems,menus));this.pack();this.setSize(500,400);this.setLocation(200,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}//end constructor//------------------------------------------------------------------------------------------------------/*** for the pop_bar right click*/public void initJPopMenu(){jpm = new JPopupMenu();for(int i = 0 ; i < popItems.length ; i ++){String popItemName = popItems[i];if("".equals(popItemName)){jpm.addSeparator();}else{JMenuItem jmItem = new JMenuItem(popItemName);jmItem.setMnemonic(popItemName.charAt(0));jmItem.addActionListener(this);jpm.add(jmItem);}}}//------------------------------------------------------------------------------------------------------//------------------------------------------------------------------------------------------------------/*** init the menuBar* */public JMenuBar getMenuBar(String[][] menuItens,String[] menus){JMenuBar jmb = new JMenuBar();for(int i = 0; i < menus.length ; i ++){String jmName = menus[i];JMenu jm = new JMenu(jmName);jm.setMnemonic(jmName.charAt(0));for(int j = 0; j < menuItems[i].length ; j ++){if(!"".equals(menuItems[i][j])){String itemName = menuItems[i][j];JMenuItem jmItem = new JMenuItem(itemName) ;if("undo".equals(menuItems[i][j])){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,InputEvent.CTRL_MASK));}else if("cut".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,InputEvent.CTRL_MASK));}else if("copy".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,InputEvent.CTRL_MASK));}else if("paste".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,InputEvent.CTRL_MASK));}else if("forward/replace".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F,InputEvent.CTRL_MASK));}else if("selectall".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,InputEvent.CTRL_MASK));}else if("new".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,InputEvent.CTRL_MASK));}else if("open".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,InputEvent.CTRL_MASK));}else if("save".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,InputEvent.CTRL_MASK));}else if("font".equals(itemName)){jmItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_D,InputEvent.CTRL_MASK));}else if("exit".equals(itemName)){jmItem.setMnemonic('e');}jmItem.addActionListener(this);jm.add(jmItem);}else{jm.addSeparator();}}jmb.add(jm);}return jmb;}//-------------------------------------------------------------------------------------------------------------//-------------------------------------------------------------------------------------------------------------/*** //create the forward/replace dialog*/public JDialog createDialog(){JDialog dialog = new JDialog(this,"forward/repalce");rep_mes1 = new JLabel("the word you want to replace..");rep_mes2 = new JLabel("the one replace to the oldone...");rep_word1 = new JTextField();rep_word2 = new JTextField();JButton rep_btn = new JButton("replace");rep_btn.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {String contentAll = content.getText();rep_director = rep_word1.getText();rep_newword = rep_word2.getText();content.replaceRange(rep_newword, contentAll.indexOf(rep_director), contentAll.indexOf(rep_director)+rep_director.length());}});JButton rep_btn2 = new JButton("forward");rep_btn2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e) {int selectEnd = content.getSelectionEnd();if(selectEnd == 0 || selectEnd == -1 || selectEnd >= content.getText().length()){selectEnd = 0;}rep_director = rep_word1.getText();int nextStart = content.getText().indexOf(rep_director,selectEnd);content.setSelectionStart(nextStart);content.setSelectionEnd(nextStart+rep_director.length());}});dialog.setLayout(new GridLayout(4,1,2,2));dialog.add(rep_mes1);dialog.add(rep_word1);dialog.add(rep_mes2);dialog.add(rep_word2);dialog.add(rep_btn);dialog.add(rep_btn2);return dialog;}@SuppressWarnings("deprecation")public void actionPerformed(ActionEvent e){String currentOper = e.getActionCommand();if("new".equals(currentOper)){String currentContent = content.getText();if("".equals(currentContent) || currentContent == null){this.content.setText("");}else{/*** 关于新建的操作.....*/}}else if("open".equals(currentOper)){content.setText("");fileDialog.showOpenDialog(this);File selectedFile = fileDialog.getSelectedFile();if(selectedFile != null){fileInfo = selectedFile.getPath();try {this.setTitle(selectedFile.getName());InputStream filein = new FileInputStream(selectedFile);byte[] temp = new byte[20];while(true){int i = filein.read(temp);if( i == -1) break;content.setText(content.getText()+new String(temp,0,i));}filein.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e1) {e1.printStackTrace();}}}else if("save".equals(currentOper)){// oldContent.clear();if( null != fileInfo){try {File currentFile = new File(fileInfo);OutputStream fileout = new FileOutputStream(currentFile);byte[] temp = content.getText().getBytes();fileout.write(temp);fileout.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2) {e2.printStackTrace();}}else{fileDialog.showSaveDialog(this);String dir = fileDialog.getCurrentDirectory().getPath();String fileName = fileDialog.getSelectedFile().getName();if(!"".equals(fileName) && fileName != null){try {File currentFile = new File(dir,fileName);OutputStream fileout = new FileOutputStream(currentFile);byte[] temp = content.getText().getBytes();fileout.write(temp);fileout.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2) {e2.printStackTrace();}}}}else if("anotherSave".equals(currentOper)){fileDialog.showSaveDialog(this);String dir = fileDialog.getCurrentDirectory().getPath();String fileName = fileDialog.getSelectedFile().getName();if(!"".equals(fileName) && fileName != null){try {File currentFile = new File(dir,fileName);OutputStream fileout = new FileOutputStream(currentFile);byte[] temp = content.getText().getBytes();fileout.write(temp);fileout.close();} catch (FileNotFoundException e1) {e1.printStackTrace();}catch (IOException e2) {e2.printStackTrace();}}}else if("exit".equals(currentOper)){System.exit(0);}else if("undo".equals(currentOper)){if(undoManager.canUndo()){undoManager.undo();}/*isUndo = true;// System.out.println("undo之前的记录集合:--"+oldContent.toString());if(oldContent.size() > 0){content.setText(oldContent.get(oldContent.size()-2));// System.out.println("当前想要删除的字符串:--"+oldContent.get(oldContent.size()-1));// System.out.println("没有删除之前的记录集合长度:--"+oldContent.size());oldContent.remove(oldContent.size()-1);// System.out.println("删除之后的记录集合长度:--"+oldContent.size()+"&&&&&");}System.out.println("undo之后的记录集合:--"+oldContent.toString());*/}else if("cut".equals(currentOper)){// oldContent.add(content.getText());content.cut();}else if("copy".equals(currentOper)){content.copy();}else if("paste".equals(currentOper)){content.paste();}else if("delete".equals(currentOper)){content.replaceSelection("");}else if("forward/replace".equals(currentOper)){dialog = createDialog();dialog.setSize(300,150);dialog.setLocation(250, 250);dialog.setVisible(true);}else if("selectall".equals(currentOper)){this.content.setSelectionStart(0);this.content.setSelectionEnd(content.getText().length());}else if("auto_change".equals(currentOper)){}else if("font".equals(currentOper)){TableDialogFont fontDlg = new TableDialogFont();Font f = content.getFont();fontDlg.setInitFont(f,content);fontDlg.setTitle("设置字体");fontDlg.setLocationRelativeTo(null);fontDlg.setModal(true);fontDlg.setVisible(true);}else if("help".equals(currentOper)){}}public static void main(String[] args) {// TODO Auto-generated method stubnew NoteBook();}}

论文写作日志

日志是日记的一种,是一种记录了我们的生活和情感的写作模式,以下是我J.L为大家分享的关于论文写作日志范文。

2013年11月28日,终于结束了为期三个月的教育实习,实习的结束,意味着毕业论文写作的开始,毕业论文的开始同样意味着大学生活的结束。想想这四年的时光过得可真快。

2013年12月

学院里公布要开始选导师了,并且自己要初步拟定论文的选择,一下子觉得毕业在即。选题是个比较困难的事,因为当初自己也没有一个明确的目标,到底要选择一个什么样的题目,但在选择导师的时候,我忽然想到大三有一门课程是《现代远程教育》,我对远程教育这方面的知识挺感兴趣的,所以我确定了论文的指导老师是马红亮老师,相应的论文选题在自己心里也有了大概。但是,马老师当时正在英国留学,所以只能等到来年3月份才能与到时见面,再做进一步的指导。

20xx年2月17日~2月28日

这段时间,刚过完年回到学校不久,身边的大多数同学都已经与导师见面,并且进一步的确定了论文题目,而我的导师还远在大洋彼岸留学,三月份才能回来,所以我就先自己搜集了一些资料,不过这些资料都是与远程教育有关的,没有导师的指导,我就像盲人一样瞎摸索,不知道重点,不也知道研究的关键,只是下载了一堆杂乱无章的资料。

20xx年3月

这是三月的第一个周末,晚点名的时候,我听身边的同学说马红亮老师出国回来了,于是我准备第二天就和导师联系,想尽快把论文的题目确定下来。

星期一的中午,我去找导师,一年多没见,老师看着比原来更帅、更有学问了。导师问我,自己有没有想做的课题,我说我想写与远程教育有关的论文,当老师问我具体是关于那个方面的,我自己却又答不上来,老师说这个范围太广了,我写不出来有价值的东西。不过老师说的确实也是实情,本科期间,专业知识我只是学了一点皮毛,甚至连了解都称不上,还想写那么有深度的文章,这不是难为自己么。于是,关于论文选题,不得不重新思考,正当我和导师思考的时候,马老师带的研究生学姐给了一个建议说:“现在手机微信很火,而且这个软件是新发展起来的,你可以想一下要是把这个软件引用到移动学习中怎么样?”学姐的一句话提醒了我和导师,所以论文的选题就这样定下来了,写微信在移动学习中的应用。

20xx年4月

3月,写完了开题报告,紧接着便是收集整理资料,之前手机的那些资料一点儿都用不上,现在又得重新开始,这一过程是漫长而枯燥的, 翻阅各种文献

资料,查找与自己论文有关的信息,渐渐地,与微信有关的资料我都熟悉了,对于自己的论文我也有了一个大概的提纲,并初步完成了开题报告,经过马红亮老师的知道、修改、签字,最终完成了毕业论文的开题报告。4月,主要完成了论文的初稿,在马老师的指导下,通过参考相关的书籍和文献资料,根据论文的写作提纲,经过一个月左右的时间,初步完成了论文的初稿,完成以后,我和导师联系,我把初稿拿给老师看,里面有很多问题,而且一些理论阐述得也不是很完善,于是我又重新对论文进行修改,第二次、第三次去找导师,虽然论文还有一些不足之处,但相比于第一次已经好了很多。

20xx年5月

在导师的指导下,我反复对论文进行了修改了,最终按照导师和学院的要求,完成了毕业论文的写作。5月16-18号按照论文答辩的要求准备毕业论文答辩前的材料,包括一篇英文文献的翻译,论文写作日志,填写并提交毕业论文答辩申请表。

在论文写作及修改过程中锻炼了自己的耐力,培养了自己的耐心,同时进一步受到马老师严谨、一丝不苟的工作态度的影响。他在论文写作上对我的启蒙和教诲将使我受益终生。

20xx年12月14日

今天学校举行了毕业论文动员大会,听到这个消息时,我才意识到毕业就要来临了,一丝紧迫感油然而生。

大会主要给我们每个人分配了论文小组,还为我们指派了论文的指导老师。然后,大会向我们公布了,论文写作的主要日程,从二月开始,到六月中旬止。时间上还算宽裕,从下一年二月就要开始选题了,我要充分利用这几个时间,先去了解一下往届的论文写作经验,然后去学习一下学长们的选题技巧,争取选择一个适合自己的题目,为写好论文做好准备。

说道毕业论文,对我们来说,如此重要的任务还是第一次,虽然毕业论文没有笔试,但是它比单纯的应试更难,因为毕业论文是对我们综合能力的一个全方位考量,我们要去认真的应对它。

20xx年2月12日

大学毕业终要来临,在珍贵的大四下半学期,我们迎来了四年中最后的时刻,就是完成我们的毕业论文。

下个星期就要开始毕业论文的选题了,我个人认为题目的选择是自己论文书写过程成功的开始,最终选择的题目要符合我心中以下的几个要求;

首先,是自己感兴趣的,要让自己在课外也能不由自主的去了解其内在的题目。

其次,是自己所擅长的,如果自己在这个题目上没有一点基础那还不如不选,因为那样不仅写不出优秀的论文更像是在黑暗中没有头绪的摸索。

最后,是主流的研究课题,因为如果选择了一个主流的研究的课题,在写作的过程中会有很多国际与国内的先进研究经验供我研究,使我写出优秀的毕业论文。

论文是我们大学中最重要的事情之一,我们要在认真、求是与创新的基础上书写我们大学生活最后的篇章。

20xx年2月17日

本周我们专业完成了毕业论文的选题,看到那么多的题目好多人都不知道选择什么好了,因为看到的都是陌生的,不过换个角度讲,如果毕业论文的题目都是平常见过的,那么我们也不需要毕业论文了。

同样的,我也在很多的论文题目中看花了眼,不知所措,感觉大部分都是略知一二,但是直观上却是模糊的,但还好我有自己制定的选题三原则,针对这三条原则,我在还没有被选走的题目中一个个筛选,最终在几个心仪的题目中选择了《会计电算化对现代审计工作的影响及对策》。

题目选好了,接下来的一周就应该进行中外论文材料的搜集,由于要求至少一篇外文文献,这应该是写作过程中最大的问题了,虽然觉得外文文献没什么用,但转念一想也是我们与时俱进的表现。

20xx年2月25日

一个星期又过去了,在这一个星期里我完成了外文文献的查找并将其翻译成中文,说到外文文献的查找,离不开学校图书馆为我们购买的各种数据库,里面应有尽有,可以查找各种中外文期刊,为我校师生写作论文提供了一个快捷、高效与低成本的写作平台。

本次我查找的外文文献自EBSCO数据库,在这个数据库里有一万余种外文期刊包含了各种学科,在上面搜索外文期刊相当的省时省力。

找好了外文期刊就要开始翻译了,在翻译的过程中也遇到了不少的麻烦。首先我的英文不是很好;其次有大量的专业词汇,普通英文字典无法查找,英英翻译也晦涩难懂,尽管有很多困难,但怀着“世上无难事,只怕有心人”的信念,一点点的坚持了下来,翻译了出来。现在就剩下下星期的开题答辩了,这也是毕业论文路上重要的一步,必须好好对待。

20xx年2月26日

这个星期五就要进行论文的开题答辩了,要做的事还很多,先要把论文开题报告按照给定的格式给做好送给老师检查,然后开始准备论文开题答辩的材料。

本次论文开题答辩将于三月二日开始,负责我们答辩的有杨家

新、吴伟荣和刘慧敏三位老师,而猜测老师在答辩过程中可能问及的问题也是我首先要做的,从我本次所研究课题的周边开始做起准备,但考虑到是开题答辩,问题应该不会太难,所以准备材料不必那么庞杂。

我的开题报告主要由以下几个部分构成;课题研究的目的和意义、课题研究的主要内容和研究方法。我猜测老师问的问题也应该和这几个有关,但是也不能把材料集中到这几个问题上,还应该从各位答辩老师的专业背景入手,猜测可能问及的问题。

闲话少说,开始准备。

20xx年3月2日

今天进行了开题报告的答辩,在十一栋二零八教室开题答辩组长杨家新以及组员吴伟荣和刘xx主持了开题报告的答辩。同学们都比较兴奋,因为从未经历过这种场面。

上午十点左右我和同学们一起相约来到举行答辩的教室,先把自己的开题报告交上去,然后按照老师念到名字的顺序依次上去把自己开题报告的内容向答辩组汇报,然后答辩老师会问你两个问题,问到后记下来写到事前发的一张纸上。

问我的两个问题幸好在我事前准备的范围之内,在我回答完毕之后,老师说我合格,并告诉我,今天问的问题,也是我今后论文的写作方向。

20xx年3月9日

今天把英文文献翻译交给了老师。

英文文献的中文翻译在英语不好的我看来是比较难的一个关卡,里面包含了大量的专业词汇,并有很多复杂的长难句,令我心生退意,但是想想今后的论文写作,这才是万里长征的第一步,一点点的也就翻译了过来。

交给老师后,老师在比较高的英文背景支持下,为我们一一挑出了英文的语法错误,并给我们提出了改正意见,把翻译不好的句子用红线标出,把用错的词给我们改正,很钦佩老师这种严谨治学的态度。

在老师的指导下,我终于完成了我的外文文献翻译,成功进入到了论文正文写作的阶段。

20xx年3月12日

终于进入到论文正文的写作过程,大学最重要的事情终于来临,心情不自觉的激动起来,如何写好论文这个疑问反复在我脑海里浮现。

写好论文的第一步是有一个好的结构,于是结构的分布便是我写作论文首先要解决的问题,在经过一个下午的苦思冥想,我决定把论文分为三个结构,这样做可以使得论文结构简单明朗,内容易于编排,同时给人一种简洁有力的感觉,所以初定位这种三结构写作模式。

三种结构,相辅相成,互相联系,给人一种代入感。在第一结构主要讲述研究课题的背景与相关基础知识,在中间的结构详细阐述研究课题的'重点研究问题,最后掌握课题发展方向与未来前景。

20xx年3月28日

论文的初稿完成了一半了,进度不算快但也不算很慢,一切都在有条不紊的进行,主要工作还是资料的搜集与整理。

由于研究的课题,对于所学专业知识而言还是略显深奥,所以在查找的同时我也在学习相关知识,同时结合自己的一些想法对论文进行一些构思。

论文的前半部分主要是介绍我所研究课题在中国的发展情况,这一部分相对来说比较好写,问题是之后的重点研究问题,希望我能从这些天研究材料中获取些宝贵的经验,为随后的难点打下知识的基础。

20xx年4月13日

论文的初稿终于基本完成,在这大半个月的时间内,耗费了大量的精力与时间,不可谓不辛苦,但是苦尽甘来,终于到了收获的时候。

本次论文初稿的写作,查阅了大量的资料,阅读了大量相关专业书籍,在国内外优秀科研结果的基础上加以吸收,并柔和自己独特见解,一点点的写了出来。

这次论文,多亏了学校的数据库,我主要在学校图书馆主页中的万方和维普期刊中寻找我需要的东西,收获还是蛮大的,现在论文已经交了上去就等着下个星期老师帮我们挑错和修改,如果没什么问题那我的论文便可以定稿,但这毕竟是我的一个心愿,论文的写作过程不可能一帆风顺的。

20xx年4月20日

今天是老师帮我们修改初稿的日子,事情果然没有设想中顺利,还是出现了一大堆错误,虽是预料之外,但也是情理之中。

老师事先通知从上午九点开始,所以一大早就来到了老师办公室,老师还是那般认真的给我作了修改,在修改的时候老师也和我们讨论论文的写作思路,以及和我们讨论相关论点的正确性。在修改后我的论文主要出现了如下问题。

首先是摘要的关键词书写顺序出现了问题;其次是有一些论点和课题无关;最后是一些结构上的微调等。但这并不是全部,老师说总的问题没有,但细节上有一堆问题,所以今后的论文修改要集中在细节上,感谢老师的认真修改。

20xx年5月4日

今天是五四青年节,祝各位奋斗在论文写作中的兄弟姐妹五四青年节快乐。

今天我的论文终于定稿了,这是一件大事,意味着我本科学士论文的写作过程基本完成了,我很兴奋也很高兴,但也有些许失落,因为大学即将离我而去,同学即将各奔东西。

在吸取初稿的错误教训后,好好地整改了一番,这次老师在修改的时候,对我的论文连连称赞,表扬了我认真积极的态度,说我可以定稿了,看着老师欣慰的笑容,我内心澎湃不已,感谢老师,我对你的教诲永世难忘。

20xx年5月7日

即将进行毕业答辩,这一周的工作主要就是进行答辩前的资格审查,也就是论文等材料的准备,其中包括现在正在写的论文日志。

查答辩前还有什么准备不充分的,看来老师又有的忙了,真的很感谢老师,虽然论文是我们写的,但是老师操的心一点不比我们少,做的工作也一点都不比我们少。

我的论文虽然已经定稿,但是还需打印到专门的纸上,如果不是我们老师的提醒我可能忘了还有这么一个步骤。

20xx年5月18日

所有材料都准备妥当,下一步就是熟悉材料准备毕业论文的答辩了。

老师这几天和我们交代了很多东西,有很多都是以前没有接触过的,比如论文的答辩技巧等,同时告诉我们不要紧张就像和平常一样,但是一定要做好准备工作不能一副不在乎的态度,答辩虽然不是笔试,但却是对一个即将毕业的大学生的一个综合考量,所以最忌讳轻敌。

听完老师说的我瞬间紧张了起来,突然发现自己还有好多都没有做好的,看看时间距离答辩还有一个多星期的时间,我要静下心来,好好地准备材料去迎接毕业论文答辩,争取取得优异成绩。

20xx年5月25日

明天就是毕业论文答辩的日子,今天晚上要晚点睡了,还要最后熟悉一下论文的内容以及我准备的材料。

这过去的一个星期里,我把考官将要问的问题详细的在依托论文的基础上分析了一下,在三个结构的背景下,我准备了一些材料,现在我需要再把它们记得牢固一些,论文已经看了好多遍了,结构与内容都记得差不多了,明天答辩时需要注意的有以下几点。

首先要给考官一个良好地印象,要把自己所了解的尽量的告诉考官;其次语气要缓慢,要让考官清楚自己说的什么;最后语言要简练,不说废话,引领考官深入的了解论文的精华。

20xx年5月26日

今天答辩的现场气氛给我们一种严肃与肃穆的感觉,这种场合使我们虽有些紧张,但更能让我们的大脑全神贯注,我排在靠前的位置答辩,虽然之前一直告诉自己平常心对待,但到了这个时候,说不紧张是人的。

答辩开始,我依照事前准备的材料详述了论文所阐述的问题以及本篇论文存在的意义等。这一部分平稳顺利的度过,考官接着问了我很多问题,但都是和论文相关的,也是我事先准备的,虽然都不是有直接关系,但意思都差不多,经过我的二次加工便回答了考官。答辩完了,虽然成绩没出来,但从考官还算满意的表情看来,我还是通过了毕业论文答辩。

四年的大学生涯就要说再见了,我想在这里说,再见,我亲爱的武昌分校。

毕业设计也就是对在校大学生最后一次知识的全面检验,就是对学生基本知识、基本理论和基本技能掌握与提高程度的一次总测试。下面我整理的毕业设计日志范文, 欢迎来参考!

201x年5月30日上午,我们的毕业论文答辩圆满结束了。当刘老师给我们送上人生的祝语时,一种即将离别的难舍之情油然而生,我开始眷恋培养我大学四年的母校,看着一张张熟悉的面孔,过去的欢乐和不快都烟消云散了,我所走过的每条小道,每间教室都就是那么的让人难以释怀,甚至,一草一木此刻都有了分别时难以割舍的眼泪。大学啊,当初充满憧憬的人间天堂;放飞梦想的游乐场;充满爱和善意的伊甸园,将与我永别了。人生但就是一过客而已,驻脚不能永久,起航才就是真正的目的。毕业了,青春散场了,而人生又踏上了另一个更加完美的征程。

毕业论文的完成给我大学四年的读书生涯划上了一个圆满的句号,也预示着我的人生开始了新的里程。然而,毕业论文从最初的选题到最后的顺利完成,虽说就是经历了一个长期的、复杂的、充满艰辛的过程,但它就是丰满的、充实的,让人引以自豪的。

201x年1月初,我们开始了论文题目和导师的选取,我选取贺老师就是因为她治学严谨,学术功底深厚,待人和蔼。随后,贺老师给我们进行了论题的解题和寒假任务的布置,较之别的组我们就是第一个开始着手论文写作准备的,这与贺老师的治学严谨就是分不开的。起初,在对解题上我和贺老师的理解和认识有些出入,经过反复的探讨之后,结论就是:我的论文重点就是个人学习环境设计,即就就是如何围绕博客来构建自我的个人学习环境。贺老师还给我带给了一些国内外对个人学习环境研究的比较好的专家和学者的网站,指导我如何利用校园网中的数据库的数字资源和收集Google、教育中文翻译、小桥流水等网站中的相关资料以及图书馆资源等等。我对贺老师所带给的这些丰富的资料在寒假期间进行了整理、分类、研读,并根据论文题目进行了分析,写出了具体的提纲和撰写开题报告。

201x年3月,我因找工作的缘故,没能和贺老师碰面,寒假期间的读书笔记、论文提纲、开题报告和文献综述都就是透过电子邮件上交的,而此刻和贺老师的交流与沟通主要依靠E-mail了。贺老师对我的论文提纲、开题报告和文献综述给予了必须的修改,比如论文提纲写的太简单,不够具体,重点不突出;开题报告中的任务要求和可行性分析部分不够严密科学以及文献综述中思维逻辑有些混乱等问题。我对论文提纲、开题报告和文献综述进行了进一步完善和修改,最后完成论文提纲、开题报告和文献综述的撰写。

3月对我来说就是一个十分关键又十分艰难的一个月,真就是身心疲惫,心力憔悴,由于一边要为找工作而奔波,一边要为写论文而忙碌,工作关系到毕业后的去向,而论文关系到能否顺利毕业的问题,二者对我来说都就是至关重要的。此刻就是论文的初写阶段,也就是至关重要的阶段,如果论文提纲没写好直接关系到论文的写作,于就是我就努力克服困难与痛苦。为了能摆脱因找工作所带来的无奈与苦闷,我就使自我尽力的往论文里钻,以此来打发我那空闷、疲倦、伤痕累累的心灵,真就是黄天不负有心人,在3月中旬也就是在我最无助的时候我找到了一份工作,给了我极大的慰藉,也给了我充足的时间去更好的完成论文的撰写,在接下来的时间里,我边工作边撰写论文。

201x年4月,我透过与贺老师的不断交流和沟通之后,在5月1日时我提交了论文初稿。从贺老师所回复的邮件中,对我的论文初稿给予了必须的肯定,另外,也指出了一些不足之处,比如论文的大部分就是陈述行的资料,真正融入个人的理解很少;论文结构有些松散,部分与部分之间衔接不够,未能很好的理解博客文化与个人学习环境之间的逻辑关系;格式不严格;参考文献也未标注。我反复的研读了贺老师给我所提出的宝贵推荐,重新审读论文的题目并与贺老师及时的沟通,于201x年5月20日,我以最快的速度提交了论文二稿,贺老师给予了我很高的评价和肯定,较之一稿有了很大的突破,不足之处就就是细节上的'问题太多,另外,对我所设计的基于博客文化的个人学习环境设计框架图提出了一些建设性的意见,比如个人学习环境设计的构成要素、理论依据及技术性、实用性等方面的支持。贺老师对我的工作和生活给予了必须的帮忙和关怀。

201x年5月25日,我上交了论文三稿。贺老师对我的这次修改很满意,说注意一下格式方面的修改就基本能够定稿了。当我从电子邮件上看到这些文字时,我顿时很欣慰,也感觉到整个人简单了许多,一种成就感油然而生,尤其就是看到自我所设计的有关个人学习环境的框架图时,很自豪,很满足。

5月27日最后定稿了。28日早上我匆忙的赶回学校,准备论文答辩,时间很紧迫。我反复熟悉和研读了我的论文资料,做了答辩时所务必的PPT文稿,同时也猜测了一下评委老师会问到的问题。答辩时虽有些紧张,但基本还算满意。

这就就是我大学四年毕业论文的整个过程,很艰辛,但也很幸福和自豪。

在那里我要感谢我的老师、同学在我最困难最无助的时候所给予的帮忙和鼓励。尤其就是我的导师贺平老师对我无微不至的关怀和细心的指导。

随着毕业日子的到来,毕业设计也接近了尾声。经过几周的奋战我的毕业设计最后完成了。在没有做毕业设计以前觉得毕业设计只就是对这几年来所学知识的单纯总结,但就是透过这次做毕业设计发现自我的看法有点太片面。毕业设计不仅仅就是对前面所学知识的一种检验,而且也就是对自我潜力的一种提高。透过这次毕业设计使我明白了自我原先知识还比较欠缺。自我要学习的东西还太多,以前老就是觉得自我什么东西都会,什么东西都懂,有点眼高手低。透过这次毕业设计,我才明白学习就是一个长期积累的过程,在以后的工作、生活中都就应不断的学习,努力提高自我知识和综合素质。

在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮忙,有什么不懂的大家在一齐商量,听听不一样的看法对我们更好的理解知识,所以在那里十分感谢帮忙我的同学。

我的心得也就这么多了,总之,不管学会的还就是学不会的的确觉得困难比较多,真就是万事开头难,不明白如何入手。最后最后做完了有种如释重负的感觉。此外,还得出一个结论:知识务必透过应用才能实现其价值!有些东西以为学会了,但真正到用的时候才发现就是两回事,所以我认为只有到真正会用的时候才就是真的学会了。

在此要感谢我的指导老师**对我悉心的指导,感谢老师给我的帮忙。在设计过程中,我透过查阅超多有关资料,与同学交流经验和自学,并向老师请教等方式,使自我学到了不少知识,也经历了不少艰辛,但收获同样巨大。在整个设计中我懂得了许多东西,也培养了我独立工作的潜力,树立了对自我工作潜力的信心,相信会对今后的学习工作生活有十分重要的影响。而且大大提高了动手的潜力,使我充分体会到了在创造过程中探索的艰难和成功时的喜悦。虽然这个设计做的也不太好,但就是在设计过程中所学到的东西就是这次毕业设计的最大收获和财富,使我终身受益。

java毕业论文项目

Java可以按照面向过程来实施项目,但是它本身是一门面向对象的语言,如果你是毕业论文的话,建议还是按照面向对象的方式来写,期间添加一些uml的图表体现,这样更容易拿到高分。

你好, 计算机专业的毕设一般分为这两部分: 源码+论文

首先说选题, 毕设课题以javaweb居多, 框架可以选用ssm, ssh, 或者springboot, 可以选做一些管理系统, 下面是一些常见的命题

等等, 这些课题可以按照你自己的实力做, 如果技术好的化, 或者有一些成品, 可以做的复杂一些, 比如前端可以layui优化一下, 权限系统采用shiro来做等等

论文方面比较简单但是比较麻烦, 各种文库都有很多javaweb的论文,但是直接拷贝的化会过不了查重系统, 需要你自己认真的重构调整一下

要看你用什么做,Java SE 做一些桌面应用, 一般只供自娱自乐。Java EE 可以做一个购物网站、员工管理系统、进销管理系统、班级管理系统 。这些系统都可以投入使用 。需求分析,可以在网上找一些例子 。

最近几年javaweb技术发展的特快, 许多很多年前的技术都已经不用了, 因为使用和学习太过繁琐, 而且都大四了, 如果以后想要在it业发展的话, 也需要学一些具体工作中用到的技术, 把这些技术用于毕设对自己有很好的帮助

  • 索引序列
  • java毕业论文英文版
  • java毕业论文
  • java语言毕业论文
  • java毕业论文日志
  • java毕业论文项目
  • 返回顶部