大数据——Java 知识点整理_java大数据需要掌握哪些框架的哪些内容

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

        char v1[] = value;
        char v2[] = anotherString.value;
        int i = 0;
        while (n-- != 0) {
            if (v1[i] != v2[i])
                return false;
            i++;
        }
        return true;
    }
}
return false;

}


原来是 String 重写了 Object 的 equals 方法,把引用比较改成了值比较。


**总结** :== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类重写了 equals 方法,比如 String、Integer 等把它变成了值比较,所以一般情况下 equals 比较的是值是否相等。


### 6. HashMap 的底层结构


JDK1.7之前:


* HashMap的底层结构为**数组+链表**
* 创建时初始化容量为16


JDK1.8之后:


HashMap的底层结构为**数组+链表+红黑树**


创建时不初始化,存入第一个值是初始化 容量为16


通过键的hashcode与容量值取余,得到键的存放节点,如果该节点上无其他键,则直接存放,若为同键,则值覆盖,若为不同键,则按链表存储,当该节点下存放的键超过7个时,则按红黑树存储


### 7. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?


不对,两个对象的hashCode()相同,equals()不一定为true。


代码示例:



String str1 = “通话”;
String str2 = “重地”;
System.out.println(String.format(“str1:%d | str2:%d”, str1.hashCode(),str2.hashCode()));
System.out.println(str1.equals(str2));


执行的结果



str1:1179395 | str2:1179395

false


代码解读:很显然“通话”和“重地”的 hashCode() 相同,然而 equals() 则为 false,因为在散列表中,hashCode()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等。


### 8. 集合框架的特点


List:有序,可重复


Set:无序,不可重复


Map:无序,键不重复,值可重复


### 9. 集合框架底层结构的优缺点




|  |  |  |
| --- | --- | --- |
| 类别 | 优点 | 缺点 |
| 数组 | 有下标索引,遍历快 | 中间插入和删除开销大 长度固定,不利于扩展 |
| 链表 | 插入和删除效率高 | 遍历的效率低 |
| 红黑树 | 二分查找 | 平衡算法开销大 区间检索效率低 |
| HashMap | 键值映射         | Hash冲突 |


### 10. String、StringBuffer、StringBuilder对比


String:是不可变对象,每次对String类型进行改变其实都等同于生成一个新的String对象


StringBuffer:可变字符串,线程安全


StringBuilder:可变字符串,单线程,线程不安全


性能:StringBuilder>StringBuffer>String


### 11. String 类的常用方法都有哪些?


* index():返回指定字符的索引
* charAt():返回指定索引处的字符
* replace():字符串替换
* trim():去除字符串两端空白
* split():分割字符串,返回一个分割后的字符串数组
* getBytes():返回字符串byte类型数组
* length():返回字符串长度
* toLowerCase():将字符串转成小写字母
* toUpperCase():将字符串转成大写字符
* substring():截取字符串
* equals():字符串比较


### 12. Java OOP 的特性和理解


继承:


* 优点:允许和鼓励重用,面向修改是封闭的,面向扩展是开放的
* 缺点:强耦合,单根继承
* 父类的哪些内容不能被继承:构造方法、被 private 修饰的方法不能被子类访问


封装:


* 把过程和数据包装起来


多态:


* 继承同一接口的类的方法可以有多种实现方式
* 重载:同类中,方法名相同,参数不同
* 重写:子类重写父类的同名同参方法


### 13. 对抽象类 abstract 和接口 interface 的理解


抽象类 abstract:


* 抽象类可以和不同类一样有属性,构造方法,普通方法
* 抽象类可以有抽象方法,但不同类不可以有抽象方法
* 继承抽象类的子类必须重写抽象方法,除非子类也是抽象类
* 抽象类不可以直接实例化


接口 interface


* 不可以像普通类一样有属性,构造方法,不同方法
* 接口中的变量默认为公共的静态常量
* 接口中的方法默认为公共的抽象方法
* 子类必须重写接口中的所有方法,除非子类为抽象类或者接口
* 不可以直接实例化


### 14. Java中正则的应用


* 正则的理解:字符串符合自定义的规则
* 应用:字符串提取、验证、提取、分割等


### 15. 对于线程的理解和应用


进程是运行程序,线程是进程内部的执行序列


应用:多线程并发,提高执行的性能(例如hadoop 按行读取时是并发执行的)


### 16. 对于锁的理解和应用


理解:在并发编程中,多个线程访问同一对象,为了保证数据的一致性,需要上锁


应用:


* 独占锁:可以进行读写操作
* 共享锁:只有读的权限
* 互斥锁:同一时间只允许一个访问者对其访问
* 读写锁:写只允许一个,读可以有多个


### 17. java中流分为几种?


按方向来分:输入流(input)、输出流(output)


按类型来分:字节流和字符流


按功能来分:节点流和处理流


* 节点流:直接面向数据源,并封装对于数据源基本操作的流
* 处理流:以节点流或其他处理流为构造参数,扩展对于构造对象的行为


### 18. Java中是如何实现对象的序列化和反序列化的?


* 序列化:将对象写入IO流
* 反序列化:从IO流中恢复对象
* 实现序列化的两种方式:
	+ 实现Seriazable接口或者Externalizable接口
	+ 使用Externalizable接口必须实现writeExternal和ReadExternal方法
* 如果想指定字段不被序列化,可以加transient关键词修饰,反序列化时会赋予默认值null/0/false


### 19. Files的常用方法有哪些?


* Files.exists():检查文件路径是否已存在
* Files.createFile():创建文件
* Files.createDirectory():创建文件夹
* Files.delete():删除一个文件或路径
* Files.copy():复制文件
* Files.move():移动文件
* Files.size():查看文件个数
* Files.read():读取文件
* Files.write():写入文件


### 20. 谈谈关于 Java 反射的理解和应用


* 理解:java 代码编译后会生成 .class 文件,反射是通过字节码文件找到一个类、类的属性和方法。
* 反射的实现:
	+ Class:获取类的对象
	+ Constructor:获取类的构造方法
	+ Field:获取类的属性
	+ Method:获取类的方法
* 应用:jdbc获取指定类的所有属性


### 21. jdbc 的标准接口有哪些,分别有什么作用?


1. Driver 接口
	1. 定义数据库驱动对象应该具备的一些能力
	2. 加载驱动:Class.forName("com.mysql.jdbc.Driver");
2. Connection 接口
	1. 创建与数据库的连接(会话)对象
	2. 连接数据库Connection conn = DriverManager.getConnection(String url, String user, String password);
3. Statement 接口
	1. sql语句编译,有**SQL注入风险**
4. PreparedStatement 接口
	1. sql语句预编译
	2. PreparedStatement pst = conn.preparestatement(String sql);
5. ResultSet 接口
	1. 返回数据结果集
	2. 通过对结果集遍历,得到结果数据
6. CallableStatement 接口
	1. 用于执行SQL存储过程的接口




![img](https://img-blog.csdnimg.cn/img_convert/70d415482ad7a11e9c09892482e0f568.png)
![img](https://img-blog.csdnimg.cn/img_convert/31c615af58d1caba39c0639d37a09134.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**






[外链图片转存中...(img-t2wSiRIe-1715803907223)]
[外链图片转存中...(img-SFp6tIth-1715803907223)]

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!**

**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

**[如果你需要这些资料,可以戳这里获取](https://bbs.csdn.net/topics/618668825)**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值