




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA基础篇,JAVA优点,平台无关性分布式应用多线程纯面向对象应用范围广(1)Java的桌面应用(2)JavaWeb应用(3)Java企业级应用(4)Java嵌入式应用,JAVA编译原理,Java编译程序将Java源程序编译成JVM可执行代码Java字节码.JAVA源文件(.java)字节码(.class)运行jvm字节码的工作是由解释器来完成的。解释执行过程分三步进行:代码的装入、代码的校验、和代码的执行。代码的装入:类装载器classloader代码的校验:被装入的代码由字节码校验器进行检查代码执行:1)即时编译方式:解释器先将字节编译成机器码,然后再执行该机器码。2)解释执行方式:解释器通过每次解释并执行一小段代码来完成java字节,J2SE的运行环境设置,安装JAVASDK(JavaSoftwareDevelopmentKit)通常,我们需要设置三个环境变量:JAVA_HOME、PATH和CLASSPATHJAVA_HOME:SDK的安装目录如:c:javaPATH:指定一个路径列表,用于搜索可执行文件的。如:d:oracleproduct10.1.0Db_2bin;%JAVA_HOME%binCLASSPATH:也指定一个路径列表,是用于搜索Java编译或者运行时需要用到的类。如:.;%JAVA_HOME%libtools.jar;%JAVA_HOME%librt.jar;,JAVA基本数据类型,进制二进制、八进制、十进制整型byte(1个字节)int(4个字节)Integershort(2个字节)Shortlong(8个字节)浮点型float(4个字节)double,JAVA基本数据类型,字符型char布尔型boolean数制:十进制:10八进制:012十六进制:0 x10,String函数,常用函数indexOf()substring()lastIndexOf()replace()replaceAll()matches()split()toUpperCase(),chardata=a,b,c;Stringstr=newString(data);System.out.println(abc);Stringcde=cde;System.out.println(abc+cde);Stringc=abc.substring(2,3);Stringd=cde.substring(1,2);,Date,Date类型DateFormat.format(Datedate)Datedate=newDate();/System.out.println(DateFormat.getInstance().format(date);SimpleDateFormatsdf=newSimpleDateFormat(yyyy-MM-ddHH:mm:ss);/MMHHhhSystem.out.println(sdf.format(date);Calendar类型Calendarcal=Calendar.getInstance();cal.set(Calendar.DAY_OF_MONTH,20);GregorianCalendar类型GregorianCalendargc=newGregorianCalendar();gc.setTime(date);,数组,一维组二维数组三维数组例子:intintArr=newint1,3,4;charcharArr=newchara,b;,面向对象,类(内部类)访问控制符类:public/protected/对象包重载(多态)继承依赖聚合继承,接口,接口声明接口实现接口多重实现接口继承,抽象,抽象类抽象方法,集合框架,映射(map)、集(set)、列表(list)、树(tree)、数组(array)、散列表(hashtable),集合基类,Collection接口是一组允许重复的对象。Set接口继承Collection,但不允许重复。List接口继承Collection,允许重复,并引入位置下标。Map接口既不继承Set也不继承Collection。,Collection接口,添加、删除元素booleanadd(Objectelement)booleanremove(Objectelement)查询操作:intsize()booleanisEmpty()booleancontains(Objectelement)Iteratoriterator(),Set接口,HashSetTreeSet(有序),List接口,voidadd(intindex,Objectelement)booleanaddAll(intindex,Collectioncollection)Objectget(intindex)intindexOf(Objectelement)intlastIndexOf(Objectelement)Objectremove(intindex)Objectset(intindex,Objectelement)ListIteratorlistIterator()ListIteratorlistIterator(intstartIndex)ListsubList(intfromIndex,inttoIndex)ArrayList类和LinkedList类,Map接口,JAVAIO,File对象canRead()canWrite()delete()deleteOnExist()Exists()getAbsoluteFile()length()list()getName()getParent()getPath()listFiles()mkdir(),InputStream抽象类及其子类字节流,AudioInputStreamByteArrayInputStreamFileInputStreamFilterInputStreamObjectInputStreamPipedInputStreamSequenceInputStreamStringBufferInputStream,OutputStream,ByteArrayOutputStreamFileOutputStreamFilterOutputStreamObjectOutputStreamPipedOutputStream,以字节为导向的stream,Input和OutputInputStream1)ByteArrayInputStream:把内存中的一个缓冲区作为InputStream使用2)StringBufferInputStream:把一个String对象作为InputStream3)FileInputStream:把一个文件作为InputStream,实现对文件的读取操作4)PipedInputStream:实现了pipe的概念,主要在线程中使用5)SequenceInputStream:把多个InputStream合并为一个InputStream,OutputStream,1)ByteArrayOutputStream:把信息存入内存中的一个缓冲区中2)FileOutputStream:把信息存入文件中3)PipedOutputStream:实现了pipe的概念,主要在线程中使用4)SequenceOutputStream:把多个OutStream合并为一个OutStream,以Unicode字符为导向的stream,InputStream1)CharArrayReader:与ByteArrayInputStream对应2)StringReader:与StringBufferInputStream对应3)FileReader:与FileInputStream对应4)PipedReader:与PipedInputStream对应OutStream1)CharArrayWriter:与ByteArrayOutputStream对应2)StringWriter:无与之对应的以字节为导向的stream3)FileWriter:与FileOutputStream对应4)PipedWriter:与PipedOutputStream对应,线程,进程、线程(单CPU,多CPU)单线程、多线程,单线程代码1,多线程代码,线程,用Thread类创建线程用Runnable接口创建线程start()run()join()线程合并,后台线程与联合线程,如果我们对某个线程对象在启动(调用start方法)之前调用了setDaemon(true)方法,这个线程就变成后台线程。对于Java程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程在运行,这)个进程就会结束。Pp.join()的作用就是把pp所对于的线程合并到调用pp.join;语句的线程中。,使用Runnable接口创建多线程,适合多个相同程序的代码的线程去处理同一资源的情况,把虚拟的CPU(线程)同程序的代码、数据有效分离,较好体现了面向对象的设计思想可以避免由于JAVA的继承特性带来的局限。假若一个类已经继承了另一类,则我们只能使该类实现Runnable当线程被构造时,需要的代码和数据通过另一个对象作为构造参数传递时去,这个对象就是实现了Runnable接口。,多线程的应用,网络聊天程序发送键盘的数据,接收别人发送的数据,从键盘上读取输入,发送键盘的数据给对方,接收对方的数据,从键盘上读取输入,发送键盘的数据给对方,接收对方的数据,多线程应用2,批量数据copy的问题WEB服务器的请求及处理,多线程同步,例子演示代码块同步方法块同步,产生者与消费者例子,一个往消息队列中放入消息一个往消息队列中取出消息消息内容包括产生的ID号及内容三个生产者,三个消费者,线程间的通讯,wait()/如队列为空,我们可以等待,或队列已经满的时候notify()/通知由wait()而等待的线程,如我们往某个列队中放数据时,这时可以通知。notifyAll(),JAVA反射,AWT,Swing,JDBC编程,应用程序,JDBC,MySQLDriver,Db2Driver,OracleDriver,MySQL,Db2,MySQL,连接数据库的步骤,注册驱动(只做一次)建立连接(Conntection)创建执行SQL的语句(Statement)执行语句处理执行结果释放资源,注册驱动,Class.forName(“com.mysql.jdbc.Driver”);推荐这种方式,不会对具体的驱动类产生依赖。DriverManager.registerDriver(com.mysql.jdbc.Driver);会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。System.setProperty(“jdbc.drivers”,“driver1:driver2”);虽然不会对具体的驱动类产生依赖;但注册不太方便,所以很少使用。驱动类型(四种类型),建立连接(Connection),Connectionconn=DriverManager.getConnection(url,user,password);url格式:JDBC:子协议:子名称/主机名:端口/数据库名?属性名=属性值st.executeQuery(sql);PreparedStatementStringsql=“select*fromtable_namewherecol_name=?”;PreparedStatementps=conn.preparedStatement(sql);ps.setString(1,“col_value”);ps.executeQuery();,处理执行结果(ResultSet),ResultSetrs=statement.executeQuery(sql);While(rs.next()rs.getString(“col_name”);rs.getInt(“col_name”);/,释放资源,释放ResultSet,Statement,Connection.数据库连接(Connection)是非常稀有的资源,用完后必须马上释放,如果Connection不能及时正确的关闭将导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。,基本的CRUD(创建、读取、更新、删除),模板代码Connectionconn=null;Statementst=null;ResultSetrs=null;try/获得Connection/创建Statement/处理查询结果ResultSetfinally/释放资源ResultSet,Statement,Connection,插入记录,增加对应SQL的INSERT,返回增加成功的行(记录)数conn=getConnection();Statementst=conn.createStatement();Stringsql=“insertintouser(name,age,regist_date)”+“values(name,10,now()”;inti=st.executeUpdate(sql);/i为插入的记录数,读取记录,读取(查询)对应SQL的SELECT,返回查询结果conn=getConnection();st=conn.createStatement();Stringsql=selectid,name,age,regist_datefromuser;rs=st.executeQuery(sql);while(rs.next()System.out.print(rs.getInt(id)+tt);System.out.print(rs.getString(name)+tt);System.out.print(rs.getInt(age)+tt);System.out.print(rs.getTimestamp(regist_date)+tt);System.out.println();,SQL注入,PreparedStatement和Statement,在SQL中包含特殊字符或SQL的关键字(如:or1or)时Statement将出现不可预料的结果(出现异常或查询的结果不正确),可用PreparedStatement来解决。PreperedStatement(从Statement扩展而来)相对Statement的优点:1.没有SQL注入的问题。2.Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。3.数据库和驱动可以对PreperedStatement进行优化(只有在相关联的数据库连接没有关闭的情况下有效)。,数据类型,详细信息见java.sql.Types几种特殊且比较常用的类型1.DATA,TIME,TIMESTAMPdate,time,datetime存:ps.setDate(i,d);ps.setTime(i,t);ps.setTimestamp(i,ts);取:rs.getDate(i);rs.getTime(i);rs.getTimestamp(i);2.CLOBtext存:ps.setCharacterStream(index,reader,length);ps.setString(i,s);取:reader=rs.getCharacterStream(i);reader=rs.getClob(i).getCharacterStream();string=rs.getString(i);3.BLOBblob存:ps.setBinaryStream(i,inputStream,length);取:rs.getBinaryStream(i);rs.getBlob(i).getBinaryStream();,一个简单用户相关的数据访问层,J2EE三层架构简介表示层、业务逻辑层、数据访问层,三层之间用接口隔离。定义domain对象User,定义存取用户的接口用JDBC实现接口用配置文件(properties)和反射实现与具体类的耦合,事务(ACID),原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。一致性(consistency):在事务处理执行前后,数据库是一致的(数据库数据完整性约束)。隔离性(isolcation):一个事务处理对另一个事务处理的影响。持续性(durability):事务处理的效果能够被永久保存下来。connection.setAutoCommit(false);/打开事务。mit();/提交事务。connection.rollback();/回滚事务。,事务(SavePoint),当只想撤销事务中的部分操作时可使用SavePointSavePointsp=connection.setSavepoint();connection.rollerbak(sp);mit();,事务(JTA),跨越多个数据源的事务,使用JTA容器实现事务。分成两阶段提交。javax.transaction.UserTransactiontx=(UserTransaction)ctx.lookup(“jndiName);tx.begin();/connection1connection2(可能来自不同的数据库)mit();/tx.rollback();,隔离级别多线程并发读取数据时的正确性,connection.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED);V:可能出现,X:不会出现,存储过程,存储过程CallableStatement(从PreperedStatement扩展来)cs=connection.prepareCall(“callpsname(?,?,?)”);cs.registerOutParameter(index,Types.INTEGER);cs.setXXX(i,xxxx);cs.executeUpdate();intid=cs.getInt(index);,其他的几个API,PreparedStatement.getGeneratedKeys()PreparedStatementps=connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);ps.executeUpdate();ResultSetrs=st.getGeneratedKeys();rs.getInt(1);批处理,可以大幅度提升大量增、删、改的速度。PreparedStatement.addBatch();PreparedStatement.executeBatch();,其他的几个API,可滚动的结果集Statementst=connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);ResultSetrs=st.executeQuery(sql);rs.beforeFirst();rs.afterLast();rs.first();rs.isFirst();rs.last();rs.isLast();rs.absolute(9);rs.moveToInsertRow();可更新的结果集conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);rs.updateString(colname,newvalue);rs.updateRow();,DatabaseMetaData和ParameterMetaData,DatabaseMetaDatameta=connection.getMetaData();通过DatabaseMetaData可以获得数据库相关的信息如:数据库版本、数据库名、数据库厂商信息、是否支持事务、是否支持某种事务隔离级别,是否支持滚动结果集等。ParameterMetaDatapmd=preparedStatement.getParameterMetaData();通过ParameterMetaData可以获得参数信息。,ResultSetMetaData,ResultSetMetaDatameta=rs.getMetaData();通过ResultSetMetaData可以获得结果有几列、各列名、各列别名、各列类型等。可以将ResultSet放入Map(key:列名value:列值)。用反射ResultSetMetaData将查询结果读入对象中(简单的O/RMapping)1)让SQL语句中列别名和要读入的对象属性名一样;2)通过ResultSetMetaData获得结果列数和列别名;3)通过反射将对象的所有setXxx方法找到;4)将3)找到的方法setXxx和2)找到的列别名进行匹配(即方法中的xxx于列别名相等);5)由上一步找到的方法和列别名对应关系进行赋值Method.invoke(obj,rs.getObject(columnAliasName);,数据源和连接池,DataSource用来取代DriverManager来获取Connection;通过DataSour
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 第5课 第二子目 古代朝鲜与日本文化 教学设计-2023-2024学年高二下学期历史统编版(2019)选择性必修3文化交流预传播
- 2024-2025学年高中政治 第三单元 收入与分配 第八课 第二框 征税和纳税说课稿 新人教版必修1
- 贵州建筑加固方案设计(3篇)
- 高层快速建筑方案设计(3篇)
- 电动车主机协同-洞察及研究
- 有害垃圾箱知识培训内容课件
- 吉林长春版《心理健康》二年级上 第九课 诚实的孩子人人夸 教案
- 6.3.用关系式表示变量之间的关系说课稿 -2024-2025学年北师大版数学七年级下册
- 单体建筑方案设计是什么(3篇)
- 刺激战场建筑方案设计(3篇)
- 化工机械法兰连接课件
- 面肌痉挛手术护理要点
- 情绪识别与营销-洞察及研究
- 室上性心动过速急救护理
- 2025年国家自然科学基金委员会招聘工作人员的(一)笔试模拟试题附答案详解
- 2025年村官、村干部相关法律知识考试题(附含答案)
- 工会考试试题及答案青岛
- 《中国成人呼吸系统疾病家庭氧疗指南(2024年)》解读 2
- 稻虾养殖技术课件
- (高清版)DB34∕T 5154-2025 基于云制造的工业互联网架构要求
- 党校中青班入学考试试题及答案
评论
0/150
提交评论