首页 > 编程语言 >java高级笔记汇总

java高级笔记汇总

时间:2023-12-11 15:55:06浏览次数:51  
标签:java 对象 汇总 笔记 stu 线程 数据 连接 客户端

一、理论知识背诵汇总篇

1、Java常用类

  1. System类
  2. Date类(日期类)
  3. DateFormat类(日期格式化类)
  4. SimpleDateFormat类
  5. Math类
  6. Random类
  7. BigInteger(大整数)类
  8. BigDecimal(大小数)类
  9. Timer定时器

2、枚举(将类的对象固定下来)

只能使用它的对象,而不能增加和修改枚举的属性

3、单例模式

一个类中只允许产生唯一的一个对象

3.1 实现步骤:

  1. 定义一个属性,保存当前类的静态对象(单例对象)
  2. 将构造方法私有
  3. 创建一个静态get()方法返回这个单例对象
    (1)懒汉模式:创建实例的过程在get()方法中
  • 优点:使用的时候才创建实例,避免内存浪费
  • 缺点:线程不安全,无法保证绝对的单例
    (2)饿汉模式:直接在属性中实例化,类加载的时候单例对象就准备好了
  • 优点:线程安全,执行效率高
  • 缺点:不需要的时候也会创建实例,会导致内存浪费
    image

4、字符串

4.1 包装类

装箱:将基本数据类型转换为包装类型
拆箱:包装类转基本数据类型
基本类型->包装类型:

  • byte -> Byte
  • short -> Short
  • int- > Integer
  • long -> Long
  • float -> Float
  • double -> Double
  • char -> Character
  • boolean -> Boolean

4.2 正则表达式

image
image
image

4.3 StringBuffered和StringBuilder

image
image

5、集合框架

1、集合和数组的区别:

  • 集合存放对象,数组存放基本类型数据
  • 集合数据可以是不同类,数组数据是同类型
  • 集合可修改,数组不可修改

2、List、Set、Map区别

(1)List集合:有序可重复

  • ArrayList:
    • 读取快,增删慢;
    • 线程不安全;
    • 初始大小是10,扩充时扩充50%
  • LinkedList
    • 读取慢,增删快;
    • 线程不安全;
    • 没有扩容机制,使用首尾添加操作addFirst()和addLast()
  • Vector

(2)Set集合:无序不重复

  • HashSet:散列存放,无序
  • TreeSet:有序存放,自然排序

hashCode:散列码是由对象导出的一个整型值。散列码是没有规律的。类的hashCode()方法继承自Object类,因此每个对象都有一个默认的散列码,他的值为对象的存储地址(由对象的物理存储地址通过散列转换来的)

HashSet原理
存对象时,首先取得hashCode值与hash表的值比较;如果不存在则可以存入集合并把hashCode存入hash表中;
否则通过“==”和equals()方法判断跟集合中的对象是否为同一对象,都为false才能添加成功。

TreeSet原理
存放时调用CompareTo()方法,根据返回值比较元素大小,然后进行“升序”排列。

(3)Map集合:以键值对形式存储数据

  1. HashMap、HashTable、TreeMap的区别:
  • HashMap:
    • 线程不安全;
    • 无序;
    • 允许Key出现一次null,Value允许null;
  • HashTable:
    • 线程安全;
    • 无序;
    • Key和Value都不允许null;
  • TreeMap:
    • 线程不安全;
    • 自然升序;
    • Key不允许null,Value允许null;

3、Iterator迭代器

迭代器:不管索引和类型都能够将类型遍历出

迭代器实现步骤:

  • 使用iterator()方法要求容器返回一个Iterator
  • 调用next()从第一个往后获取序列的元素
  • 使用hasNext()检查是否还有元素
  • 使用remove()方法将迭代器新返回的元素删除

泛型:定义那些还不明确的参数类型

6、IO流

image
image
image

7、数据库操作

1、查询:

select * from stu;

2、增加:

insert into stu(id,name,age,sex) Values(1003,”王五”,13,”女”);

3、删除:

delete from stu where name=”李四”;

4、更新/修改:

update stu set name=”张三” where id=1001;

5、模糊查询:

select * from stu where name like ‘%李%’

6、分组查询:

select * from stu group by age;(按年龄分组)

7、集合函数:常与group by一起使用

  • count():统计记录数
  • sum():求和
  • avg():平均值
  • max():最大值
  • min():最小值

8、连接查询

  • 内连接:inner join
    Select * from stu inner join class On stu.class.id=class.id;
  • 左外连接:left join
    Select * from stu Left join class On stu.class.id=class.id;
  • 右外连接:right join
    Select * from stu Right join class On stu.class.id=class.id;

8、JDBC连接数据库

连接数据库

  • 加载JDBC驱动
  • 连接数据库,传入连接地址、用户名、密码
  • 关闭连接资源

9、Web开发和服务器(Tomcat服务器)

1、Tomcat服务器:

将项目部署到Tomcat中,启动项目,用户就可以访问了。

2、部署项目:

要将java项目装成war包拷贝到webapps中即可

10、Servlet技术

1、作用:

使用Servlet,可以收集来自网页的用户输入,呈现来自数据库或者其他源的纪录,还可以动态创建网页。

2、一个类继承HttpServlet就成了一个Servlet

3、Servlet主要任务:

  • 读取客户端发送到后台的数据
  • 处理数据并生成结果。这个过程可能访问数据库,也可以直接计算得出对应的响应
  • 发送响应数据到客户端

4、Cookie:

定义:由服务端产生,再发送给客户端保存的一组数据
作用:客户端访问服务端,第一次访问结束后,就会产生一个Cookie,把这个Cookie保留到客户端,下次可以直接访问

5、Session:

定义:由服务端产生的一组数据用于会话跟踪,保存在服务端

6、Cookie和Session比较

  1. 存储位置不同:
  • Cookie的数据信息存放在客户端浏览器上;
  • Session的数据信息存放在服务器上。
  1. 存储容量不同:
  • 单个Cookie保存数据<=4KB;
  • Session没有上限。
  1. 存储方式不同:
  • Cookie只能保管ASCII字符串;
  • Session可存储任何数据。
  1. 隐私策略不同:
  • Cookie对客户端可见,不安全;
  • Session存储在服务器上,不存在敏感信息泄露风险。
  1. 生命周期不同:
  • Cookie在设置的有效期内,无论是否关闭窗口都依然存在;
  • Session关闭窗口就会失效。

7、请求转发和重定向:

定义

请求转发: servlet将客户端请求直接交给另一个servlet或某个页面
重定向: servlet设置客户端重新发送一个新请求到另一个servlet或某个页面

请求转发和重定向的区别

  • 请求转发是一次请求,重定向是两次请求
  • 请求转发可以共享请求参数,重定向之后就获取不了共享参数了

11、JSP技术(动态网页开发技术)

1、jsp通过网页表单获取用户输入数据、访问数据库或其他数据源,然后动态地创建网页

2、Servlet与Jsp的区别:

  • Servlet:在java代码中嵌套html
  • Jsp:在html中嵌套java代码(本质上是servlet)

3、JSP语法结构:

三种形式结构:

  • JSP脚本:<%java 代码%>
    编写具体业务逻辑,也可以定义局部变量或调用方法,但不能定义方法
  • JSP声明:<!java 代码>
    声明全局变量或方法
  • JSP表达式:<%=java 变量或表达式%>
    将已经声明的变量或表达式输出到网页上

4、JSP指令:设置与整个JSP页面相关的属性

  • <%@page...%>:定义页面的依赖属性(引入java类...),写在jsp开头
  • <%@include... %>:包含其他文件,一般是其他前端页面
  • <%@taglib...%>:引入标签库的定义,可以使自定义标签

5、JSP四大作用域

  • Page(页面作用域):代表当前网页,只在当前页面有效
  • request(请求作用域):在当前请求中有效
  • session(会话作用域):在当前会话中有效,浏览器关闭则失效
  • application(应用程序作用域):在服务器开启期间都有效
    除page外,其他对象都可以通过setAttribute赋值和getAttribute取值。

6、EL表达式:获取作用域中的数据(取值)

语法:${作用域名+Scope.数据的属性名}

例:${requestScope.name}——request中的数据

7、JSTL标准标签库:对集合进行遍历

核心标签库:

  1. <c:if>:和if语句一样
  2. <c:forEach>:基础迭代标签
  3. <c:choose>:相当于if
  4. <c:when>:条件
  5. <c:otherwise>:相当于else

12、多线程

1、并发执行和并行执行:

  • 并发执行:多个进程使用同一个CPU,每个进程独占CPU一会,然后让出CPU资源,给其他进程使用
  • 并行执行:多个进程,在同一时刻,每个进程都有一个CPU进行运算

2、进程和线程

  • 进程:程序的一次动态执行过程
  • 线程:是CPU调度和分派的基本单位,可与同一个进程的其他线程共享资源

进程和线程的关系:

  1. 进程的产生,肯定会产生至少一个线程
  2. 进程关闭,该进程内所有线程全部销毁
  3. 线程销毁,进程未必会关闭

3、多线程:一个进程内的多个任务并发执行

多线程的实现

  1. 继承Thread类,重写run()方法
  2. 实现Runnable接口,实现run()方法

4、线程同步(同步指协同、协助、互相配合):

定义:当有一个线程对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作

5、用synchronize给对象加互斥锁的两种实现方式:

  1. 给代码块加锁(锁定对象)
  2. 给方法加锁(锁定方法实现的过程)

6、线程死锁:不同的线程都在等待那些根本不可能被释放的锁

避免死锁技巧:保证每个线程都按照同样的顺序去访问资源

13、网络编程

1、socket(套接字)使用TCP提供了两台计算机的通信机制。

当连接建立时,服务器会创建一个socket对象。客户端和服务器可以通过socket对象的写入和读取进行通信

2、socket通信三种模式:

  1. 流式套接字:提供一个面向连接,可靠的数据传输服务,数据无差错,无重复发送,且按发送顺序接收(TCP:传输数据前要先建立连接)
  2. 数据报式套接字:面向无连接,数据报以独立形式发送,不提供无差错保证,数据可能丢失或重复,接受顺序无序(UDP:不用建立连接)
  3. 原始式套接字:允许对较低层次协议,如IP直接访问

3、IP地址:计算机的唯一标识号

端口号:不同的应用程序通过端口号区分

4、TCP协议(客户端、服务端)的三次握手过程:

  1. 客户端向服务端发出连接请求,等待服务器确认

  2. 服务器向客户端回送一个响应,通知客户端收到了连接请求

  3. 客户端再次向服务器发送连接确认信息,确认连接

5、UDP通信和TCP通信

  1. UDP通信(发送端、接收端)
    DatagramPacket:封装UDP通信中的数据
  2. TCP通信(客户端、服务端)
    ServerSocket类:表示服务器端
    Socket类:表示客户端

6、TCP和UDP的一个主要区别:

UDP只有发送端和接收端,不区分客户端和服务器端,计算机之间可以任意发送数据;
TCP严格区分客户端和服务器端,在通信时,必须先由客户端去连接服务器端才能实现通信,服务器不可以主动连接客户端

14、反射

1、反射:

定义:对于任意一个类,都能够通过对象等信息知道这个类的所有属性和方法

2、相关实现类:

  • Class类:反射的核心类,获取类的属性方法等成员信息
  • Field类:获取和设置类中属性
  • Method类:调用类的方法
  • Constructor类:调用类的构造方法

3、获取类信息的三种方法

  1. 通过对象名获取类信息
  2. 通过类名获取类信息
  3. 通过路径获取类信息
    image

15、垃圾回收机制(回收垃圾对象所占用的内存空间):

  • 调用System类的gc()静态方法:System.gc()
  • 调用Runtime对象的gc()实例方法:Runtime.getRuntime.gc()

二、总体重要笔记汇总篇

标签:java,对象,汇总,笔记,stu,线程,数据,连接,客户端
From: https://www.cnblogs.com/asdfghqwe/p/17894461.html

相关文章

  • 基于Java 的商城网站系统设计与实现(8000字论文)
    摘要随着我国经济活力的不断提升和互联网的快速发展,信息的重要性正在显现出来。电子商务作为经济发展的重要一环取得了突飞猛进的发展。由于具有高效便捷的优点,网上购物已经成为一种不可或缺的新型生活方式,近年来各大互联网企业纷纷布局电子商务,获得了巨大成功。而对于这些平台来......
  • 七星的随堂笔记
    打开CMD的方式开始+系统+命令提示符Win键+R输入cmd打开控制台(推荐使用)资源管理器的地址栏上加上cmd路径管理员方式运行:选择以管理员方式运行常用的DOS命令#盘符切换#查看当前目录下的所有文件dir#切换目录cdchangedirectory#返回上一级cd..#清理屏......
  • ChatGPT叫你如何在centos中配置javapath变量
    当使用vim编辑器时,你可以按照以下步骤来编辑bash配置文件:打开~/.bashrc文件:bashvim~/.bashrc或者,如果你选择在系统级别配置,可以使用:bashsudovim/etc/environment在vim中编辑文件:移动光标到文件末尾,按下i进入插入模式,然后添加以下行:bashexportJ......
  • java中的三目运算符
    格式:变量=condition?value1:value2condition是一个布尔表达式,如果为true,则返回value1,否则返回value2比如:变量a的赋值,如果x>y,则a=1,否则,a=2用ifelse代码如下:1importjava.util.Random;2publicclassTest3{3publicstaticvoidmain(String[]args){4......
  • java继承
    一、概述1、概念2、格式3、优缺点4、继承中变量的访问特点5、super示例: 6、继承中构造方法的访问特点7、继承中成员方法的访问特点  ......
  • JS(JavaScript)-事件-Event事件
     1.介绍:事件就是可以被JS侦测到的行为。用户操作鼠标或键盘后,触发了JS事件,然后产生相应机制。 三要素:事件源:事件被触发的对象,就是谁触发了这个事件;事件类型:如何触发,什么事件;比如:鼠标点击,键盘按下事件处理程序:通过一个函......
  • 《大道至简》读书笔记 12月
    读书笔记:《大道至简》第三章《大道至简》第三章着重探讨了字句的运用和语言的表达。作者通过简洁而深刻的文字,向我们展示了大道至简的真谛。在这一章中,作者首先指出了字句的重要性。他称字句为语言的精华,是信息传递的最基本单位。他举了一个生动的例子,比较了才华横溢的诗人和......
  • Mock框架moco学习笔记
    目录一、Moco框架基本介绍1.什么是Moco2.Moco原理简介3.Moco的配置和运行4.Moco启动以及第一个demo二、mock的启动及第一个demo1.创建startup.json文件2.启动moco3.浏览器输入本地网址127.0.0.1:8809/demo三、不带参数的get方法:Method(GET)四、带参数的get方法:queries五、不......
  • (来一套)JavaScript并查集模板
    code: classUnionFind{constructor(n){this.parent=Array.from({length:n},(_,i)=>i);this.size=newArray(n).fill(1);this.cnt=n;}findset(x){if(this.parent[x]===x){returnx......
  • java集合
    一、集合基础1、概述 2、ArrayList构造方法和添加方法 示例: 3、ArrayList的方法 ......