自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(98)
  • 资源 (2)
  • 收藏
  • 关注

原创 8_String 和 StringBuffer,StringBuilder 的区别是什么?

可变性 简单的来说: String 类中使用 final 关键字字符数组保存字符串, private final char value[] , 所以 String 对象是不可变的。 而 StringBuilder 与StringBuffer 都继承自 AbstractStringBuilder 类, 在 AbstractStringBuilder 中也是使用字符数组保存字符串 char[]value 但是没有用 final 关键字修饰, 所以这两种对象都是可变的。 线程安全性 String 中的对象是不可变

2021-10-17 21:24:08 204

原创 41_反射的实现方式?

获取 Class 对象,有 4 中方法: 1)Class.forName(“类的路径”); 2)类名.class 3)对象名.getClass() 4)基本类型的包装类, 可以调用包装类的 Type 属性来获得该包装类的 Class 对象

2021-09-19 15:16:40 198

原创 18_Java 集合体系有什么?

集合类存放于 Java.util 包中, 主要有 3 种:set(集)、list(列表包含 Queue) 和 map(映射)。 1.Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 2.Iterator:迭代器,可以通过迭代器遍历集合中的数据。 3.Map:是映射表的基础接口。 1.Iterator 接口 Iterator 接 口 是 一 个 用 于 遍 历 集 合 中 元 素 的 接 口 , 主 要 包 含hashNext(),next(),remov

2021-09-17 16:04:29 228

原创 22_ConcurrentHashMap 特点?

Segment 段 ConcurrentHashMap 和 HashMap 思路是差不多的, 但是因为它支持并发操作,所以要复杂一些。 整个 ConcurrentHashMap 由一个个 Segment 组成, Segment 代表”部分”或”一段“的意思, 所以很多地方都会将其描述为分段锁。 线程安全(Segment 继承 ReentrantLock 加锁) 注意,行文中,我很多地方用了“槽”来代表一个 segment。 简单理解就是, ConcurrentHashMap 是一个 Segment 数组,

2021-09-17 15:58:01 212

原创 21.2谈一下 hashMap 中什么时候需要进行扩容,扩容 resize() 又是如何实现的?

调用场景: 1.初始化数组 table 2.当数组 table 的 size 达到阙值时进行扩容 实现过程: <0 >0 通过判断旧数组的容量是否大于 0 来判断数组是否初始化过。 如果小于 0:进行初始化,判断是否调用无参构造器。 如果调用了无参构造器: 使用默认的大小和阙值<阈值 12. 阀值=默认大小为 16 乘以负载因子 0.75。 如果没有调用无参构造器: 使用构造函数中初始化的容量, 当然

2021-09-17 15:51:05 992

原创 21.1HashMap 底层实现原理?

HashMap 根据键的 hashCode 值存储数据 可以直接定位到它的值 访问速度很快 遍历顺序却不确定 最多允许一个键为null 允许多条记录的值为 null 非线程安全 多个线程同时写 HashMap,可能会导致数据的不一致 HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值. 因而具有很快的访问速度,但是遍历顺序却不确定的. HashMap 最多只允许一条记录的键为 null,允许多条记录的值为 null。 H...

2021-09-17 11:28:48 146

原创 32_线程池的核心参数有哪些?

1. 核心线程数 2. 最大线程数 3. 线程空闲时间 4. 单位 5. 任务队列容量 6. 线程工厂 7. 任务拒绝处理器(拒绝策略) corePoolSize = 1 核心线程数 maxPoolSize = Integer.MAX_VALUE 最大核心线程数 keepAliveTime = 60 秒 线程空闲时间 queueCapacity = Integer.MAX_VALUE 任务队列容量 allowCoreThreadTimeout = false 允许核心线程超时 rejectedExecuti

2021-09-17 10:54:55 180

原创 9_自动装箱与拆箱

装箱:将基本类型用它们对应的引用类型包装起来; 拆箱:将包装类型转换为基本数据类型; 装箱 拆箱 基本类型->引用类型包装 包装类型->基本数据类型

2021-09-17 10:31:30 115

原创 2_&和&&的区别

&:逻辑与(and),运算符两边的表达式均为 true 时,整个结果才为 true。 &&:短路与,如果第一个表达式为 false 时,第二个表达式就不会计算了。 & && 逻辑与 短路与 两边的表达式均为 true 第一个表达式为 false 才为 true 第二个表达式就不会计算 ...

2021-09-16 09:43:23 281

原创 3_面向对象的特征?

**封装** 将对象属性和方法的代码封装到一个模块中,也就是一个类中, 保证软件内部具有优良的模块性的基础,实现“高内聚,低耦合”。 **抽象**: 找出一些事物的相似和共性之处,然后归为一个类, 该类只考虑事物的相似和共性之处。 抽象包括行为抽象和状态抽象。 **继承**: 在已经存在的类的基础上进行,将其定义的内容作为自己的内容, 并可以加入新的内容或者修改原来的方法适合特殊的需要。 **多态** 同一操作作用于不同的对象, 可以有不同的解释,产生不同的执行结果,就是多态, 简

2021-09-16 09:43:05 117

原创 4_Java 创建对象的方式有哪些?

1.使用 new 关键字 2.使用反射机制创建对象: (1)使用 Class 类的 newInstance 方法 (2)java.lang.reflect.Constructor 类里也有一个 newInstance 方法可以创建对象。 3.使用 clone 方法: 先实现 Cloneable 接口并实现其定义的 clone 方法 4.使用反序列化 1.使用 new 关键字 2.使用反射机制创建对象: (1)使用 Class 类的 newInstance 方法 (2)java.lang.refl

2021-09-16 09:42:52 137

原创 5_常见的数据结构有哪些?

数组 集合 链表 列表 堆栈 队列 数组: 数组是最常用的数据结构,数组的特点是长度固定,可以用下标索引,并且所有的元素的类型都是一致的。数组常用的场景有:从数据库里读取雇员的信息存储为 EmployeeDetail[ ];把一个字符串转换并存储到一个字节数组中便于操作和处理等等。尽量把数组封装在一个类里,防止数据被错误的操作弄乱。另外, 这一点也适合其他的数据结构。 列表: 列表和数组很相似,只不过它的大小可以改变。列表一般都是通过一个固定大小的数组来实现的,并且会在需要...

2021-09-16 09:42:41 487

原创 1_重载和重写的区别

重载: 发生在同一个类中, 方法名必须相同,参数类型不同,个数不同, 顺序不同, 方法返回值和访问修饰符可以不同, 发生在编译时。 重写: 发生在父子类中, 方法名,参数列表必须相同, 返回值范围小于等于父类, 抛出的异常范围小于等于父类, 访问修饰符范围大于等于父类; 如果父类方法访问修饰符为 private 则子类就不能重写该方法。 重载 重写 同一个类中 父子类中 参数类型不同,个数不同, 顺序不同 方法名,参数列表必须相同 方法返回值和访问修饰符可以

2021-09-11 09:23:59 156

原创 37_什么是GC

内存空间是有限的,那么在程序运行时如何及时的把不再使用的对象清除将内存释放出来,这就是 GC 要做的事。 GC 的区域在哪里? JVM 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭, 栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理。因此, 我们的内存垃圾回收主要集中于 Java 堆和方法区中,在程序运行期间,这部分内存的分配和使用都是动态的。 GC 的操作对象是什么? 需要进行回收的对象就是已经没有存活的对象,判断一个对象是否存活常用的有两种办法:引用计数和可达分析。 

2021-09-11 09:16:03 144

原创 8_请介绍下 Jsonp 原理

jsonp 的最基本的原理是:动态添加一个`<script>`标签, 使用 script 标签的 src 属性没有跨域的限制的特点实现跨域。 首先在客户端注册一个 callback,然后把 callback 的名字传给服务器。 此时,服务器先生成 json 数据。 然后 以 javascript 语法的方式, 生成一个 function , function 名字就是传递上来 的参数 jsonp。 最后将 json 数据直接以入参的方式,放置到 function 中, 这样就生成了一段 js

2021-09-11 09:13:45 103

原创 7_Ajax 的优势

通过异步模式,提升了用户体验。 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。 Ajax 引擎在客户端运行, 承担了一部分本来由服务器承担的工作, 从而减少了大用户量下的服 务器负载。 通过异步模式,提升了用户体验。 优化了浏览器和服务器之间的传输,减少不必要的数据往返,减少了带宽占用。 Ajax 引擎在客户端运行,承担了一部分本来由服务器承担的工作,从而减少了大用户量下的服 务器负载。 ...

2021-09-11 09:13:34 127

原创 6_如何解决 ajax 跨域问题?

跨域问题来源于 JavaScript 的"同源策略",即只有 协议+主机名+端口号 (如存在)相同,则允许相互访问。也就是说 JavaScript 只能访问和操作自己域下的资源,不能访问和操作其他域下的资源。跨域问题是针对 JS 和 ajax 的, html 本身没有跨域问题。 跨域问题解决方案 1.响应头添加 Header 允许访问 跨域资源共享(CORS)Cross-Origin Resource Sharing 这个跨域访问的解决方案的安全基础是基于"JavaScript 无法控制该 HTTP 头"它

2021-09-11 09:13:19 110

原创 5_Ajax 提交请求 默认是 异步还是同步,怎么改成同步?

控制 ajax 请求参数 async 属性的值可以切换成同步请求或异步请求。 同步请求:(false)同步请求即是当前发出请求后,浏览器什么都不能做, 必须得等到请求完成返回数据之后,才会执行后续的代码, 相当于是排队,前一个人办理完自己的事务,下一个人才能接着办。 也就是说,JS 代码加载到当前AJAX的时候会把页面里所有的代码停止加载, 页面处于一个假死状态, 当这个 AJAX 执行完毕后才会继续运行其他代码页面解除假死状态。 异步请求:(true) 异步请求就当发出请

2021-09-11 09:10:20 1013

原创 4_ajax 请求时,如何解释 json 数据?

使 用 eval() 或 者 JSON.parse() 鉴 于 安 全 性 考 虑 , 推 荐 使 用 JSON.parse()更靠谱,对数据的安全性更好. 使 用 eval() 或 者 JSON.parse() 鉴 于 安 全 性 考 虑 , 推 荐 使 用 JSON.parse()更靠谱,对数据的安全性更好. ...

2021-09-11 09:10:05 95

原创 3 阐述一下异步加载 JS?

1.异步加载的方案: 动态插入 script 标签 2.通过 ajax 去获取 js 代码,然后通过 eval 执行 3.script 标签上添加 defer 或者 async 属性 4.创建并插入 iframe,让它异步执行 js 1.异步加载的方案: 动态插入 script 标签 2.通过 ajax 去获取 js 代码,然后通过 eval 执行 3.script 标签上添加 defer 或者 async 属性 4.创建并插入 iframe,让它异步执行 js ...

2021-09-11 09:09:36 121

原创 2_Ajax 创建的过程?

1.创建 XMLHttpRequest 对象,也就是创建一个异步调用对象 2.创建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信 息 3.设置响应 HTTP 请求状态变化的函数 4.发送 HTTP 请求 5.获取异步调用返回的数据 6.使用 JavaScript 和 DOM 实现局部刷新 1.创建 XMLHttpRequest 对象,也就是创建一个异步调用对象 2.创建一个新的 HTTP 请求,并指定该 HTTP 请求的方法、URL 及验证信 息 3.设置响应 HTTP

2021-09-11 09:09:20 83

原创 1_谈谈你对 Ajax 的认识?

Ajax 是一种创建交互式网页应用的的网页开发技术; “Asynchronous JavaScript and XML”的缩写。

2021-09-11 09:06:48 117

原创 20_List 和 Map、Set 的区别?

结构特点: List 和 Set 是存储单列数据的集合,Map 是存储键和值这样的双列数据的集合; List 中存储的数据是有顺序,并且允许重复; Map 中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的,Set 中存储的数据是无序的,且不允许有重复,但元素在集合中的位置由元素的 hashcode 决定,位置是固定的(Set 集合根据 hashcode 来进行数据的存储,所以位置是固定的,但是位置不是用户可以控制的,所以对于用户来说 set 中的元素还是无序的); 实现类 List

2021-09-10 14:10:21 123

原创 19_List 的三个子类的特点?

ArrayList 底层结构是数组,底层查询快,增删慢 LinkedList 底层结构是链表型的,增删快,查询慢 Voctor 底层结构是数组 线程安全的,增删慢,查询慢 ArrayList 底层结构是数组,底层查询快,增删慢 LinkedList 底层结构是链表型的,增删快,查询慢 Voctor 底层结构是数组 线程安全的,增删慢,查询慢 ...

2021-09-10 14:10:11 102

原创 16_手写冒泡排序

public class Sort { public static void sort() { Scanner input = new Scanner(System.in); int sort[] = new int[10]; int temp; System.out.println(“请输入 10 个排序的数据:”); for (int i = 0; i < sort.length; i++) { sort[i] = input.nextInt(); } for (int i = 0; i &lt.

2021-09-10 14:09:58 117

原创 17_BIO、NIO、AIO 有什么区别?

BIO: Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO, 它的特点是模式简单使用方便,并发处理能力低。 NIO: New IO 同步非阻塞 IO,是传统 IO 的升级, 客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。 AIO: Asynchronous IO 是 NIO 的升级,也叫 NIO2, 实现了异步非堵塞 IO ,异步 IO 的操作基于事件和回调机制。 BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简

2021-09-10 14:09:44 112

原创 15_什么是单例模式?有几种?

单例模式: 某个类的实例在 多线程环境下只会被创建一次出来。 饿汉式: 线程安全,一开始就初始化。 懒汉式: 非线程安全,延迟初始化。 双检锁: 线程安全,延迟初始化。 单例模式有饿汉式单例模式、懒汉式单例模式和双检锁单例模式三种。 饿汉式:线程安全,一开始就初始化。 懒汉式:非线程安全,延迟初始化。 双检锁:线程安全,延迟初始化。 ...

2021-09-10 14:09:24 177

原创 14_接口和抽象类的区别是什么

接口 抽象类 方法默认是 public 所有方法在接口中不能有实现 可以有非抽象的方法 实例变量默认是 final 类型 不一定 一个类可以实现多个接口 最多只能实现一个抽象类 要实现接口的所有方法 不一定 不能用 new 实例化 可以声明 必须引用一个实现该接口的对象 行为的抽象,是一种行为的规范 对类的抽象,是一种模板设计 1.接口的方法默认是 public,所有方法在接口中不能有实现(Java 8 开始接口方法可以有默认实现),抽象类可以有非...

2021-09-10 14:09:10 158

原创 13_error 和 exception 的区别?

Error Exception 与虚拟机相关的问题 程序可以处理的异常 仅靠程序本身无法恢复和和预防,建议让程序终止 可以捕获且可能恢复 Error 类和 Exception 类的父类都是 Throwable 类,他们的区别如下。 Error 类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空 间不足,方法调用栈溢出等。对于这类 错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。 Exception 类表示程序可以处理的异常,可以捕获且...

2021-09-10 14:08:59 124

原创 12_Java 中的异常处理?

在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。 Throwable: 有两个重要的子类: Exception(异常) Error(错误) 二者都是 Java 异常处理的重要子类,各自都包含大量子类。 ...

2021-09-10 14:08:49 96

原创 11_关于final 关键字的一些总结?

final 关键字主要用在三个地方:变量、方法、类。 1.对于一个 final 变量, 基本数据类型的变量,则其数值一旦在初始化之后便不能更改; 如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象 2. final 修饰一个类时,表明这个类不能被继承。 final 类中的所有成员方法都会被隐式地指定为 final 方法。 3.使用 final 方法的原因有两个。 第一个原因是把方法锁定,以防任何继承类修改它的含义; 第二个原因是效率。 在早期的 Java 实现

2021-09-10 14:08:32 159

原创 10_== 与 equals

== : 它的作用是判断两个对象的地址是不是相等。 即: 判断两个对象是不是同一个对象。 基本数据类型==比较的是值 引用数据类型==比较的是内存地址 equals() : 它的作用也是判断两个对象是否相等。 一般有两种使用情况 情况 1:类没有覆盖 equals() 方法。 则通过 equals() 比较该类的两个对象时, 等价于通过“==”比较这两个对象。 情况 2:类覆盖了 equals() 方法。 一般,我们都覆盖 equals() 方法来两个对象的内容相等; 若它们的内容相等,则

2021-09-10 14:08:18 101

原创 23_HashTable?

Hashtable 是遗留类,很多映射的常用功能与 HashMap 类似, 不同的是它承自 Dictionary 类,并且是线程安全的, 任一时间只有一个线程能写Hashtable,并发性不如 ConcurrentHashMap, 因为 ConcurrentHashMap 引入了分段锁。 Hashtable 不建议在新代码中使用,不需要线程安全的场合可以用 HashMap 替换, 需要线程安全的场合可以用 ConcurrentHashMap 替换。 Hashtable 是遗留类,很多映射的常用功能与 H

2021-09-08 11:49:45 148

原创 24_HashMap 和 HashTable 有什么区别?

HashMap HashTable 非线程安全 线程安全 Map 的一个实现类 线程安全的一个集合 键和值都允许有 null 值 不允许键和值有 null 值 因线程安全效率高 多个线程访问时不需要自己为它的方法实现同步 被多个线程访问的时候需要自己为它的方法实现同步 不同步 同步 适合于单线程环境 适合于多线程环境 HashMap 是线程不安全的,是 Map 的一个实现类,是将键映射到值得对象,不允许键值重复,允许空键和空值;由于非线程安全,HashMap 的...

2021-09-08 11:49:31 119

原创 25_HashMap,HashTable,ConcurrentHashMap 之间的区别?

性能:ConcurrentHashMap(线程安全) > HashMap > HashTable(线程安全) HashMap HashTable ConcurrentHashMap 非线程安全 线程安全 键和值都允许有 null 值 不允许键和值有 null 值 因线程安全效率高 多个线程访问时不需要自己为它的方法实现同步 被多个线程访问的时候需要自己为它的方法实现同步 不同步 同步 适合于单线程环境 适合于多线程环境 Synchroniz

2021-09-08 11:49:14 129

原创 26_什么是线程?线程和进程的区别?

线程 进程 是进程的一个实体, 具有一定独立功能的程序关于某个数据集合上的一次运行活动 cpu 调度和分派的基本单位,比进程更小的可以独立运行的基本单位 操作系统进行资源分配和调度的一个独立单位 线程的划分尺度小于进程 多线程程序拥有高并发性 线程之间内存共享 进程在运行时各自内存单元相互独立 多线程编程可以拥有更好的性能和用户体验。 多线程编程对于其它程序是不友好的,占据大量 cpu 资源 线程:是进程的一个实体,是 cpu 调度和分派的基本单位,是比进程更小的可以...

2021-09-08 11:49:00 111

原创 27_创建线程有几种方式

1.继 承 Thread 类 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。 启动线程的唯一方法就是通过 Thread 类的 start()实例方法。 start()方法是一个 native 方法,它将启动一个新线程,并执行 run()方法。 2.实现 Runnable 接口 如果自己的类已经 extends 另一个类,就无法直接 extends Thread,此时,可以实现一个 Runnable 接口。 3.实现 Callable 接口 Callabled 接口有点

2021-09-08 11:48:43 111

原创 28_线程的基本方法有什么?

线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等。 1.线程等待(wait) 2.线程睡眠(sleep) 3.线程让步(yield) 4.线程中断(interrupt) 5.Join 等待其他线程终止 6.线程唤醒(notify) 1.线程等待(wait) 调用该方法的线程进入 WAITING 状态,只有等待另外线程的通知或被中断才会返回,需要注意的是调用 wait()方法后,会释放对象的锁。因此,wait 方法一般用在同步方法或同步代码块中。 2.线

2021-09-08 11:48:30 150

原创 29_在 java 中 wait 和 sleep 方法的不同?

wait sleep 等待时会释放锁 一直持有锁 线程间交互 暂停执行 最大的不同是在等待时 wait 会释放锁, 而 sleep 一直持有锁。 wait 通常被用于线程间交互, sleep 通常被用于暂停执行。

2021-09-08 11:48:16 106

原创 30_线程池原理

线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。 线程复用: 每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时Java 虚拟机会调用该类的 run 方法。 那么该类的 run() 方法中就是调用了Runnable 对象的 run() 方法。 我们可以继承重写 Thread 类

2021-09-08 11:48:01 99

MYSQL_50.one

MYSQL_50.one

2023-05-04

Mybatis_ALL_One.rar

Mybatis_ALL_One.rar

2021-08-10

P45 java方法01:什么是方法?.md

有关java中什么是方法的说明文档

2021-04-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除