ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java个人知识点总结(基础篇)

2021-12-21 23:00:06  阅读:200  来源: 互联网

标签:总结 知识点 Java onload session cookie java 异常


temp = sort[j];

sort[j] = sort[j + 1];

sort[j + 1] = temp;

}

}

}

System.out.println(“排列后的顺序为:”);

for(int i=0;i<sort.length;i++){

System.out.print(sort[i]+"   ");

}

}

public static void main(String[] args) {

sort();

}

}

二分查找法

**十八、**时间类型转换

public class DateFormat {

public static void fun() {

SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日”);

String newDate;

try {

newDate = sdf.format(new SimpleDateFormat(“yyyyMMdd”)

.parse(“20121115”));

System.out.println(newDate);

} catch (ParseException e) {

e.printStackTrace();

}

}

public static void main(String args[]) {

fun();

}

}

阶乘

public class Multiply {

public static int multiply(int num) {

if (num < 0) {

System.out.println(“请输入大于0的数!”);

return -1;

} else if (num == 0 || num == 1) {

return 1;

} else {

return multiply(num - 1) * num;

}

}

public static void main(String[] args) {

System.out.println(multiply(10));

}

}

UE和UI的区别

UE是用户体验度

UI界面原型(用户界面)(相当于买房时用的模型)

设计UI的作用:

1、帮助程序员工作(界面已由美工设计完成)

2、提前让用户对项目有个宏观的了解,知道效果是什么样子。

osi七层模型

第一层:物理层

第二层:数据链路层

第三层:网络层

第四层:传输层

第五层:会话层

第六层:表示层

第七层:应用层

线程和进程的区别

1.线程(Thread)与进程(Process)

进程定义的是应用程序与应用程序之间的边界,通常来说一个进程就代表一个与之对应的应用程序。不同的进程之间不能共享代码和数据空间,而同一进程的不同线程可以共享代码和数据空间。

如果你依然觉得有些茫然,不如加入我的Java架构师之路:766529531 跟有多年Java开发经验的资深工程师聊一聊。也可获取免费的视频学习资料以及电子书学习资料喔!

1、一个进程可以包括若干个线程,同时创建多个线程来完成某项任务,便是多线程。

2、实现线程的两种方式:继承Thread类,实现Runable接口

jvm的内存结构

1、java虚拟机的内存结构分为堆(heap)和栈(stack),堆里面存放是对象实例也就是new出来的对象。栈里面存放的是基本数据类型以及引用数据类型的地址。

2、对于所谓的常量是存储在方法区的常量池里面。

内存泄露和内存溢出

内存泄露(memory leak),是指应用程序在申请内存后,

无法释放已经申请的内存空间.一次内存泄露危害可以忽略,

但如果任其发展最终会导致内存溢出(out of memory).

如读取文件后流要进行及时的关闭以及对数据库连接的释放。

内存溢出(out of memory)是指应用程序在申请内存时,

没有足够的内存空间供其使用。

如我们在项目中对于大批量数据的导入,采用分段批量提交的方式。

单例

单例就是该类只能返回一个实例。

单例所具备的特点:

1.私有化的构造函数

2.私有的静态的全局变量

3.公有的静态的方法

单例分为懒汉式、饿汉式和双层锁式

饿汉式:

public class Singleton1 {

private Singleton1() {};

private static Singleton1 single = new Singleton1();

public static Singleton1 getInstance() {

return single;

}

}

懒汉式:

public class Singleton2 {

private Singleton2() {}

private static Singleton2 single=null;

public tatic Singleton2 getInstance() {

if (single == null) {

single = new Singleton2();

}

return single;

}

}

线程安全:

public class Singleton3 {

private Singleton3() {}

private static Singleton3 single ;

public static Singleton3 getInstance() {

if(null == single){

synchronized(single ){

if(null == single){

single = new Singleton3();

}

}

}

return single;

}

}

参考:

通过双重判断来保证单列设计模式在多线程中的安全性,

并且它在性能方面提高了很多。

synchronized在方法上加锁 (同步锁)

synchronized在代码块内部加锁 (同步代码块)

synchronized(同步锁)

使用synchronized如何解决线程安全的问题?

1.synchronized在方法上加锁

2.synchronized在代码块内部加锁

1.懒汉  2.饿汉 3.双重判断

解析xml文件的几种技术

1、 解析xml的几种技术

1.dom4j

2.sax

3.jaxb

4.jdom

5.dom

1.dom4j

dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。

2.sax

SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。

3.jaxb

JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。

2、dom4j 与 sax 之间的对比:【注:必须掌握!】

dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,

sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml

也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性

所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j

如果你依然觉得有些茫然,不如加入我的Java架构师之路:766529531 跟有多年Java开发经验的资深工程师聊一聊。也可获取免费的视频学习资料以及电子书学习资料喔!

项目的生命周期

1.需求分析

2.概要设计

3.详细设计(用例图,流程图,类图)

4.数据库设计(powerdesigner)

5.代码开发(编写)

6.单元测试(junit 白盒测试)(开发人员)

svn版本管理工具(提交,更新代码,文档)

7.集成测试 (黑盒测试,loadrunner(编写测试脚本)(高级测试))

8.上线试运行 (用户自己体验)

9.压力测试(loadrunner)

10.正式上线

11.维护

OSCache的判断

Object obj = CacheManager.getInstance().getObj(“oaBrandList”);

//从缓存中取数据

if (null == obj)  {

obj = brandDao.getBrandList();

//如果为空再从数据库获取数据

//获取之后放入缓存中

CacheManager.getInstance().putObj(“oaBrandList”, obj);

}

return (List)obj;

经常访问的技术网站

1.csdn(详细步骤的描述)

2.iteye(详细步骤的描述)

3.oschina(开源中国获取java开源方面的信息技术)

4.java开源大全 www.open-open.com(获取java开源方面的信息技术)

5.infoq(对java,php,.net等这些语言的一些最新消息的报道)

项目团队中交流的工具

飞秋(局域网) qq(局域网,外网)

RTX(局域网,外网) 邮箱(局域网,外网)

平时浏览的书籍

实战经验:

*** in action(实战)

***深入浅出

***入门指南

思想基础:

大话设计模式 重构

java Exception体系结构

java异常是程序运行过程中出现的错误。Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。在Java API中定义了许多异常类,分为两大类,错误Error和异常Exception。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常(非runtimeException),也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。

1、Error与Exception

Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。

这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。

Exception是程序本身可以处理的异常,这种异常分两大类运行时异常和非运行时异常。程序中应当尽可能去处理这些异常。

2、运行时异常和非运行时异常

运行时异常:都是RuntimeException类及其子类异常:     IndexOutOfBoundsException索引越界异常

ArithmeticException:数学计算异常

NullPointerException:空指针异常

ArrayOutOfBoundsException:数组索引越界异常

ClassNotFoundException:类文件未找到异常

ClassCastException:造型异常(类型转换异常)

这些异常是不检查异常(Unchecked Exception),程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的。

非运行时异常:是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如:

IOException、文件读写异常

FileNotFoundException:文件未找到异常

EOFException:读写文件尾异常

MalformedURLException:URL格式错误异常

SocketException:Socket异常

SQLException:SQL数据库异常

session和cookie的区别

session是存储在服务器端,cookie是存储在客户端的,所以安全来讲session的安全性要比cookie高,然后我们获取session里的信息是通过存放在会话cookie里的sessionid获取的。又由于session是存放在服务器的内存中,所以session里的东西不断增加会造成服务器的负担,所以会把很重要的信息存储在session中,而把一些次要东西存储在客户端的cookie里,然后cookie确切的说分为两大类分为会话cookie和持久化cookie,会话cookie确切的说是存放在客户端浏览器的内存中,所以说他的生命周期和浏览器是一致的,浏览器关了会话cookie也就消失了,然而持久化cookie是存放在客户端硬盘中,而持久化cookie的生命周期就是我们在设置cookie时候设置的那个保存时间,然后我们考虑一问题当浏览器关闭时session会不会丢失,从上面叙述分析session的信息是通过sessionid获取的,而sessionid是存放在会话cookie当中的,当浏览器关闭的时候会话cookie消失所以我们的sessionid也就消失了,但是session的信息还存在服务器端,这时我们只是查不到所谓的session但它并不是不存在。那么,session在什么情况下丢失,就是在服务器关闭的时候,或者是sessio过期,再或者调用了invalidate()的或者是我们想要session中的某一条数据消失调用session.removeAttribute()方法,然后session在什么时候被创建呢,确切的说是通过调用session.getsession来创建,这就是session与cookie的区别

字节流与字符流的区别

stream结尾都是字节流,reader和writer结尾都是字符流

两者的区别就是读写的时候一个是按字节读写,一个是按字符。

实际使用通常差不多。

在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。

只是读写文件,和文件内容无关的,一般选择字节流。

final,finally,finalize三者区别

Final是一个修饰符:

当final修饰一个变量的时候,变量变成一个常量,它不能被二次赋值

当final修饰的变量为静态变量(即由static修饰)时,必须在声明这个变 量的时候给它赋值

当final修饰方法时,该方法不能被重写

当final修饰类时,该类不能被继承

Final不能修饰抽象类,因为抽象类中会有需要子类实现的抽象方法,(抽 象类中可以有抽象方法,也可以有普通方法,当一个抽象类中没有抽象方 法时,这个抽象类也就没有了它存在的必要)

Final不能修饰接口,因为接口中有需要其实现类来实现的方法

Finally:

Finally只能与try/catch语句结合使用,finally语句块中的语句一定会执行,并且会在return,continue,break关键字之前执行

finalize:

Finalize是一个方法,属于java.lang.Object类,finalize()方法是GC(garbage collector垃圾回收)运行机制的一部分,finalize()方法是在GC清理它所从属的对象时被调用的

Io流的层次结构

从流的方向

输入流 输出流

从流的类型上

字符流字节流

inputstream和outputstream都是抽象类

它们下面的实现包括

FileInputStream,BufferedInputStream

FileOutputStream,BufferedOutputStream

reader和 writer

FileReader,BufferedReader,StringReader

FileWriter,BufferedWriter,StringWriter,PrintWriter

JAVA:

Java是面向对象的,跨平台的,它通过java虚拟机来进行跨平台操作,它可以进行自动垃圾回收的【c语言是通过人工进行垃圾回收】,java还会进行自动分配内存。【c语言是通过指定进行分配内存的】,只需要new一个对象,这个对象占用了多少空间,不需要我们来管,java虚拟机负责管这些,用完之后也不需要我们来释放,java虚拟机会自动释放

JavaSE JavaEE JavaME区别

是什么:

Java SE=Java Standard Edition=j2se = java 标准版

Java EE=Java Enterprise Edition=j2ee= java 企业版

Java ME=Java Mobile Edition=j2me = java移动版

特点:

SE主要用于桌面程序(swing),控制台开发(main程序)。

EE企业级开发(JSP,EJB,Spring MVC,Struts,hibernate,ibatis等),

用于企业级软件开发,网络开发,web开发。

ME嵌入式开发(手机,小家电,PDA)。[苹果的ios,黑莓]

三者之间的关系:

Java SE(Java Platform, Standard Edition,Java标准版)就是基于JDK和JRE的。

Java SE为Java EE提供了基础。

Java EE除了基于我们这个所谓的Java SE外,还新加了企业应用所需的类库

JDK  JRE  JVM的区别:

Jdk【Java Development ToolKit】就是java开发工具箱, JDK是整个JAVA的核心里边包含了jre,它除了包含jre之外还包含了一些javac的工具类,把java源文件编译成class文件,java文件是用来运行这个程序的,除此之外,里边还包含了java源生的API,java.lang.integer在rt的jar包里边【可以在项目中看到】,通过rt这个jar包来调用我们的这些io流写入写出等

JDK有以下三种版本:

J2SE,standard edition,标准版,是我们通常用的一个版本

J2EE,enterpsise edtion,企业版,使用这种JDK开发J2EE应用程序

J2ME,micro edtion,主要用于移动设备、嵌入式设备上的java应用程序

Jre【Java  Runtime  Enviromental】是java运行时环境,那么所谓的java运行时环境,就是为了保证java程序能够运行时,所必备的一基础环境,也就是它只是保证java程序运行的,不能用来开发,而jdk才是用来开发的,所有的Java程序都要在JRE下才能运行。

包括JVM和JAVA核心类库和支持文件。与JDK相比,它不包含开发工具——编译器、调试器和其它工具。

Jre里边包含jvm

Jvm:【Java Virtual Mechinal】因为jre是java运行时环境,java运行靠什么运行,而底层就是依赖于jvm,即java虚拟机,java虚拟机用来加载类文件,java中之所以有跨平台的作用,就是因为我们的jvm

关系:

J2se是基于jdk和jre,

JDK是整个JAVA的核心里边包含了jre,

Jre里边包含jvm

报错的状态码:

301 永久重定向

302 临时重定向

304 服务端 未改变

403 访问无权限

200 正常

404 路径

500 内部错误

协议以及默认的端口号

ftp   21    文件传输协议

Pop3 110  它是因特网 http://baike.baidu.com/view/1706.htm电子邮件 http://baike.baidu.com/view/1524.htm的第一个离线 http://baike.baidu.com/view/113466.htm协议标准

Smtp  25   简单邮件传输协议

http   80   超文本传输协议

oracle 默认端口号1521

mysql默认端口号 3306

抽象类与接口的区别

1.一个类只能进行单继承,但可以实现多个接口。

2.有抽象方法的类一定是抽象类,但是抽象类里面不一定有抽象方法;

接口里面所有的方法的默认修饰符为public abstract,接口里的成员变量默认的修饰符为pulbic static final。

关系:

接口和接口继承

接口和抽象类抽象类实现接口

类和抽象类类继承抽象类

类和类继承

修饰符的作用

修饰符的作用范围:

private  default  protected public

同一个类中可以  可以   可以    可以

同一个包的类中 可以      可以    可以

不同包的子类中       可以      可以

不同包的类中        可以

onready和onload的区别

1.onready比onload先执行

2.onready是在页面解析完成之后执行,而onload是在页面所有元素加载后执行

3.onload只执行最后一个而onready可以执行多个。

参考:

[if !supportLists]1.[endif]执行时间window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 $(document).ready()可以同时编写多个,并且都可以得到执行 3.简化写法 window.onload没有简化写法 ( d o c u m e n t ) . r e a d y ( f u n c t i o n ( ) ) 可 以 简 写 成 (document).ready(function(){})可以简写成 (document).ready(function())可以简写成(function(){});

另外,需要注意一点,由于在$(document).ready() 方法内注册的事件,只要DOM 就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的html 下载完毕,并且已经解析为DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用Jquery 中另一个关于页面加载的方法—load() 方法。Load() 方法会在元素的onload 事件中绑定一个处理函数。如果处理函数绑定给window 对象,则会在所有内容( 包括窗口、框架、对象和图像等) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。 Jquery 代码如下: $(window).load(function (){ // 编写代码 });等价于JavaScript 中的以下代码 Window.onload = function (){ // 编写代码 }

switch默认接受几种数据类型

Short, int, byte, char

request 跟session的区别

1.他们的生命周期不同,

request对应的是一次请求,

session对应的是一次会话

2.request占用资源比较少,相对来说缺乏持续性,

而session资源消耗比较大,所以通常使用request来保存信息

找到解决svn冲突方法

对于svn冲突,可以采用手工处理将冲突的部分进行整合,

之后备份最新整合后的文件,采用覆盖更新的方式处理完

冲突之后,再把最新整合后的文件进行提交。

如果你依然觉得有些茫然,不如加入我的Java架构师之路:766529531 跟有多年Java开发经验的资深工程师聊一聊。也可获取免费的视频学习资料以及电子书学习资料喔!

反射的描述

通过字符串可以动态创建java对象,并且可以动态访问方法,

属性等。

我们在项目中的时候封装过数据库jdbc的持久层,
其中就利用反射这项
技术来达到通用
和灵活的目的。

indow.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕。 2.编写个数不同 window.onload不能同时编写多个,如果有多个window.onload方法,只会执行一个 $(document).ready()可以同时编写多个,并且都可以得到执行 3.简化写法 window.onload没有简化写法 ( d o c u m e n t ) . r e a d y ( f u n c t i o n ( ) ) 可 以 简 写 成 (document).ready(function(){})可以简写成 (document).ready(function())可以简写成(function(){});

[外链图片转存中…(img-m1hyItv6-1640096934695)]

另外,需要注意一点,由于在$(document).ready() 方法内注册的事件,只要DOM 就绪就会被执行,因此可能此时元素的关联文件未下载完。例如与图片有关的html 下载完毕,并且已经解析为DOM 树了,但很有可能图片还没有加载完毕,所以例如图片的高度和宽度这样的属性此时不一定有效。要解决这个问题,可以使用Jquery 中另一个关于页面加载的方法—load() 方法。Load() 方法会在元素的onload 事件中绑定一个处理函数。如果处理函数绑定给window 对象,则会在所有内容( 包括窗口、框架、对象和图像等) 加载完毕后触发,如果处理函数绑定在元素上,则会在元素的内容加载完毕后触发。 Jquery 代码如下: $(window).load(function (){ // 编写代码 });等价于JavaScript 中的以下代码 Window.onload = function (){ // 编写代码 }

switch默认接受几种数据类型

Short, int, byte, char

request 跟session的区别

1.他们的生命周期不同,

request对应的是一次请求,

session对应的是一次会话

2.request占用资源比较少,相对来说缺乏持续性,

而session资源消耗比较大,所以通常使用request来保存信息

找到解决svn冲突方法

对于svn冲突,可以采用手工处理将冲突的部分进行整合,

之后备份最新整合后的文件,采用覆盖更新的方式处理完

冲突之后,再把最新整合后的文件进行提交。

如果你依然觉得有些茫然,不如加入我的Java架构师之路:766529531 跟有多年Java开发经验的资深工程师聊一聊。也可获取免费的视频学习资料以及电子书学习资料喔!

反射的描述

通过字符串可以动态创建java对象,并且可以动态访问方法,

属性等。

我们在项目中的时候封装过数据库jdbc的持久层,
其中就利用反射这项
技术来达到通用
和灵活的目的。

标签:总结,知识点,Java,onload,session,cookie,java,异常
来源: https://blog.csdn.net/m0_65638285/article/details/122074930

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有