java的一些知识点部分总结分析.docx
- 文档编号:5700681
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:14
- 大小:24.90KB
java的一些知识点部分总结分析.docx
《java的一些知识点部分总结分析.docx》由会员分享,可在线阅读,更多相关《java的一些知识点部分总结分析.docx(14页珍藏版)》请在冰豆网上搜索。
java的一些知识点部分总结分析
单例模式
第一种(懒汉,线程不安全):
Singleton instance:
单实例
2 2 private static Singleton instance;
3 private Singleton (){}
4 public static Singleton getInstance() {
5 if (instance == null) {
6 instance = new Singleton();
7 }
8 return instance;
9 }
10 }
11
第二种(懒汉,线程安全):
1 public class Singleton {
2 private static Singleton instance;
3 private Singleton (){}
4 public static synchronized Singleton getInstance() {
5 if (instance == null) {
6 instance = new Singleton();
7 }
8 return instance;
9 }
10 }
11
第三种(饿汉):
1 public class Singleton {
2 private static Singleton instance = new Singleton();创建对象
3 private Singleton (){}私有化构造器,防止外部调用
4 public static Singleton getInstance() {
5 return instance;
6 }
7 }
8
第四种(饿汉,变种):
1 public class Singleton {
2 private Singleton instance = null;
3 static {
4 instance = new Singleton();
5 }
6 private Singleton (){}
7 public static Singleton getInstance() {
8 return this.instance;
9 }
10 }
11
第五种(静态内部类):
1 public class Singleton {
2 private static class SingletonHolder {
3 private static final Singleton INSTANCE = new Singleton();
4 }
5 private Singleton (){}
6 public static final Singleton getInstance() {
7 return SingletonHolder.INSTANCE;
8 }
9 }
10
第六种(枚举):
1 public enum Singleton {
2 INSTANCE;
3 public void whateverMethod() {
4 }
5 }
6
第七种(双重校验锁):
1 public class Singleton {
2 private volatile static Singleton singleton;
3 private Singleton (){}
4 public static Singleton getSingleton() {
5 if (singleton == null) {
6 synchronized (Singleton.class) {
7 if (singleton == null) {
8 singleton = new Singleton();
9 }
10 }
11 }
12 return singleton;
13 }
14 }
15
冒泡排序例子
staticvoidbubble_sort(int[]unsorted)
{
for(inti=0;i { for(intj=i;j { if(unsorted[i]>unsorted[j]) { inttemp=unsorted[i]; unsorted[i]=unsorted[j]; unsorted[j]=temp; } } } } staticvoidMain(string[]args) { int[]x={6,2,4,1,5,9}; bubble_sort(x); foreach(variteminx) { Console.WriteLine(item); } Console.ReadLine(); } Get和post的区别 1、GET请求,请求的数据会附加在URL之后,以? 分割URL和传输数据,多个参数用&连接。 URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。 POST请求: POST请求会把请求的数据放置在HTTP请求包的包体中。 上面的item=bandsaw就是实际的传输数据。 因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。 2、传输数据的大小 在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。 但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。 因此,在使用GET请求时,传输数据会受到URL长度的限制。 对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。 3、安全性 POST的安全性比GET的高。 这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。 比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。 除此之外,GET请求提交的数据还可能会造成Cross-siterequestfrogery攻击 事务四大特性(简称ACID) 1、原子性(Atomicity): 事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 2、一致性(Consistency): 几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。 3、隔离性(Isolation): 事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。 4、持久性(Durability): 对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。 Java中的4大作用域及作用范围 PageContext对象(作用域) PageContext对象就是指向当前JSP页面本身 request对象(作用域) 客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。 它是HttpServletRequest类的实例。 session对象(作用域) session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。 它是HttpSession类的实例. application对象(作用域) application对象实现了用户间数据的共享,可存放全局变量。 它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。 服务器的启动和关闭决定了application对象的生命。 它是ServletContext类的实例。 请求转发和请求重新定向的定义及区别? 请求转发 请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。 此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变 请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应 RequestDispatcher rd = request.getRequestDispatcher(path); rd.forward(request,response);或request.getRequestDispatcher(path) .forward(request,response); 请求重新定向 重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址 重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求 response.sendRedirect(path); Abstract和interface的区别 Abstract: 抽象不能创建实例对象 抽象方法没有方法体 可以有抽象方法也可以有普通方法 不能有抽象的构造器不能有静态的抽象方法 Interface: 接口是抽象的特例 方法全部是抽象方法 接口中的方法默认为publicabstract类型 接口中的成员变量类型默认为publicstaticfinal。 区别: 1.抽象类可以有构造方法,接口中不能有构造方法。 2.抽象类中可以有普通成员变量,接口中没有普通成员变量 3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。 4.抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然 eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为publicabstract类型。 5.抽象类中可以包含静态方法,接口中不能包含静态方法 6.抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是publicstaticfinal类型,并且默认即为publicstaticfinal类型。 7.一个类可以实现多个接口,但只能继承一个抽象类。 Final 1、final修饰的类不能被继承。 2、Sting就是一个被final修饰的类,我们只能用,不能被继承 3、final不仅可以修饰类,还可以修饰变量,被final修饰的变量就是一个常量,只能赋值一次,修饰属性,属性不可变,修饰方法,方法不可覆盖 4、注意final和finally的区别,final是修饰类或者变量,finally是在异常处理中使用,如: Try{}catch(){}finally{}中,finally的作用一般用于必须处理的事情,如关闭连接 String、Stringbuffer及StringBulider的区别 1.在执行速度方面的比较: StringBuilder>StringBuffer>String 2.StringBuilder: 线程非安全的StringBuffer: 线程安全的 3.String: 字符串常量StringBuffer: 字符创变量StringBuilder: 字符创变量 总结: 1.如果要操作少量的数据用=String 2.单线程操作字符串缓冲区下操作大量数据=StringBuilder 3.多线程操作字符串缓冲区下操作大量数据=StringBuffer 正则表达式 Length属性和length()方法 String: 有length()方法,没有length属性 数组: 有length属性,没有length()方法 异常的种类 异常大体分为编译异常和运行异常两类(Exception 各种异常的根类) 1、ArithmeticException算数运算错误异常 2、ArrayIndexOfOutBoundsException数组下标越界 3、NullPointException空指针异常 4、NumberFormatException字符串转换成数字异常 5、ClassCastException-类型强制转换异常。 throws,throw,try,catch,finally分别代表什么意义? try: 指定一块预防所有“异常”的程序。 catch: 紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的“异常”的类型。 throw: 用来明确地抛出一个“异常”。 throws: 标明一个成员函数可能抛出的各种“异常”。 Finally: 不管发生什么“异常”都被执行一段代码。 JSP中九大内置对象 request 请求对象 类型javax.servlet.ServletRequest 作用域Request response 响应对象 类型javax.servlet.SrvletResponse 作用域 Page pageContext 页面上下文对象 类型javax.servlet.jsp.PageContext 作用域 Page session 会话对象 类型javax.servlet.http.HttpSession 作用域 Session application 应用程序对象 类型javax.servlet.ServletContext 作用域 Application out 输出对象 类型javax.servlet.jsp.JspWriter 作用域 Page config 配置对象 类型javax.servlet.ServletConfig 作用域 Page page 页面对象 类型javax.lang.Object 作用域 Page exception 例外对象 类型javax.lang.Throwable 作用域 page Ajax的优势 <1>.无刷新更新数据。 AJAX最大优点就是能在不刷新整个页面的前提下与服务器通信维护数据。 这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息,减少用户等待时间,带来非常好的用户体验。 <2>.异步与服务器通信。 AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。 优化了Browser和Server之间的沟通,减少不必要的数据传输、时间及降低网络上数据流量。 <3>.前端和后端负载平衡。 AJAX可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。 并且减轻服务器的负担,AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求和响应对服务器造成的负担,提升站点性能。 <4>.基于标准被广泛支持。 AJAX基于标准化的并被广泛支持的技术,不需要下载浏览器插件或者小程序,但需要客户允许JavaScript在浏览器上执行。 随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。 同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。 <5>.界面与应用分离。 Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离),有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、也更加适用于现在的发布系统。 构造器本质 默认的构造器本质是一个无参数,静态的,被final修饰的方法(final修饰的方法不能被重写,不能被继承) Error与Exception有什么区别? Error(错误)表示系统级的错误和程序不必处理的异常,是java运行环境中的内部错误或者硬件问题,比如,内存资源不足等,对于这种错误,程序基本无能为力,除了退出运行外别无选择。 Exception(违例)表示需要捕捉或者需要程序进行处理的异常,它处理的是因为程序设计的瑕疵而引起的问题或者在外的输入等引起的一般性问题,是程序必须处理的。 java中有几种方法可以实现一个线程 有两种实现方法,分别是继承Thread([θred])类与实现Runnable接口 用synchronized(['sɪŋkrənaɪzd])关键字修饰同步方法 多线程有几种实现方法? 同步有几种实现方法? 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify wait(): 使一个线程处于等待状态,并且释放所持有的对象的lock。 sleep(): 使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException(中断异常)异常。 notify(): 唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒 某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。 Allnotity(): 唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是 让它们竞争。 Set集合、List集合和Map集合的区别 Set中的对象不按特定方式排序,并且没有重复对象。 但它的有些实现类能对集合中的对象按特定方式排序,例如TreeSet类,它可以按照默认排序,也可以通过实现java.util.Comparator List中的对象按照索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象,如通过list.get(i)方式来获得List集合中的元素。 Map中的每一个元素包含一个键对象和值对象,它们成对出现。 键对象不能重复,值对象可以重复。 Collection和Collections的区别。 Collection是集合类的上级接口,继承与他的接口主要有Set和List. Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。 Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别? 看set里存的是基本类型还是引用类型基本类型用==,引用类型用equals “==”和equals的区别 “==” 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即堆栈中的内容是否相同。 “equals” equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。 什么是servlet? Servlet是SUN推出的一套规范,规定了如何用Java来开发动态网站。 也就是说,Java可以用来开发网站后台,但是要遵循一定的标准。 Jsp中的标签有哪些 一、Include指令 include>标签表示包含一个静态的或者动态的文件。 语法: includepage="path"flush="true"/> or includepage="path"flush="true"> paramname="paramName"value="paramValue"/> include> 注: 1、page="path"为相对路径,或者代表相对路径的表达式。 2、flush="true"必须使用flush为true,它默认值是false。 3、 param>子句能让你传递一个或多个参数给动态文件,也可在一个页面中 使用多个 param>来传递多个参数给动态文件。 二、Forward指令 forward>标签表示重定向一个静态html/jsp的文件,或者是一个程序段。 语法: forwardpage="path"}/> or forwardpage="path"}> paramname="paramName"value="paramValue"/>…… forward> 注: 1、page="path"为一个表达式,或者一个字符串。 2、 param>name指定参数名,value指定参数值。 参数被发送到一个动态 文件,参数可以是一个或多个值,而这个文件却必须是动态文件。 要传递多个参 数,则可以在一个JSP文件中使用多个 param>将多个参数发送到一个动态 文件中。 三、UseBean指令 useBean>标签表示用来在JSP页面中创建一个BEAN实例并指定它的名字以 及作用范围。 语法: useBeanid="name"scope="page|request|session|application"typeSpec/> 其中typeSpec有以下几种可能的情况: class="className"|class="className"type="typeName"| beanName="beanName"type="typeNa
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 一些 知识点 部分 总结 分析