当前位置: 首页 > news >正文

Java基础回顾 Day4

多线程相关

runnable接口实现,解决单继承的问题,因为继承Thread类就不能继承其他类了

Callable接口的特点是满足线程需要返回值和抛出异常的情况

在创建线程后的任何时候都可以重新设置,线程已经创建,可以使用 Thread.setPriority() 方法在任何时候改变线程的优先级。

线程的优先级在 Java 中的有效范围是 1 到 10,其中 5 是默认的优先级。

 notify是唤醒所在对象wait pool中的第一个线程。

wait()和sleep()对比

调用对象:wait() 是 Object 类的一个方法,它必须在同步块或同步方法中调用,用于释放当前线程持有的锁,并使线程进入等待队列,直到其他线程调用同一对象的 notify() 或 notifyAll() 方法。而 sleep() 是 Thread 类的静态方法,线程调用时不需要持有锁,它会让当前线程休眠指定的时间。

释放锁:wait() 会释放对象的锁,而 sleep() 不会释放锁。

目的:wait() 主要用于线程间的通信,线程进入等待状态直到被唤醒;sleep() 主要用于控制线程的暂停时间,通常不用于线程间的协调。

JDBC相关

JDBC API:供程序员调用的接口与类,集成在java.sql和 javax.sql 包中。

DBC中与数据库建立连接是通过调用 DriverManager类的静态方法 getConnection() 实现的。
例:Connection connection = DriverManager.getConnection(url, username, password);

ResultSet 对象是executeQuery()方法的返回值,它被称为结果集,它代表符合SQL语句条件的所有行,并且它通过一套getXXX方法(这些get方法可以访问当前行中的不同列)提供了对这些行中数据的访问。

ResultSet对象自动维护指向当前数据行的游标。每调用一次 next() 方法,游标向下移动一行。

JDBC自动提交事务,可以通过调用 setAutoCommit(false) 来禁止自动提交。

 Statement的executeUpdate()方法会返回值是int类型,含义是DML操作影响记录数 

初始时,ResultSet的游标指向的是“前一行”数据

JDBC对Java程序员而言是接口模型,对实现与数据库连接的服务提供商而言是API。

当Statement关闭时,ResultSet也会被自动关闭。

用户不必关闭ResultSet。当它的 Statement 关闭、重新执行或用于从多结果序列中获取下一个结果时,该ResultSet将被自动关闭。

execute、executeQuery、executeUpdate区别

execute:通用执行,返回boolean(是否有结果集)。
executeQuery:执行查询,返回ResultSet。
executeUpdate:执行DML/DDL,返回影响的行数(int)。

相对于Statement,PreparedStatement的优点

支持预编译,效率更高。
可以防止SQL注入攻击。
支持动态设置参数。

JDBC的事务管理

事务管理允许将一组操作作为一个整体进行处理,要么全部成功,要么全部回滚。它确保了数据一致性和完整性,避免部分操作成功,部分操作失败造成的不一致。

ResultSet

表示查询结果的数据表,通过游标逐行访问数据,支持通过列名或索引获取值。

JDBC驱动类型

类型1:JDBC-ODBC桥接
类型2:本地API驱动(部分Java,部分本地代码)
类型3:网络协议驱动(纯Java,中间件转发)
类型4:原生协议驱动(直接与数据库通信,纯Java)

JDBC操作步骤

1.加载驱动类
2.建立数据库连接
3.创建PrepareStatement和Connection对象(创建sql语句,创建PrepareStatement,替换占位符)
4.执行sql语句
5.处理结果集
6.关闭资源

其他

递归的应用场景:不知道要循环多少次,循环条件无法获取
删除文件夹经常需要递归操作

在 Java 中,字符串和字节数组之间的转换可以通过 getBytes() 和 new String() 方法来实现。

红黑树的口诀是:“左根右,根叶黑,不红红,黑路同。”

相关文章:

  • Sentinel 笔记
  • 【JAVA架构师成长之路】【Redis】第13集:Redis缓存击穿原理、规避、解决方案
  • Hadoop命令行语句
  • Jackson 详解
  • 三、OpenGL中三角形的绘制
  • Web前端开发——HTML基础下
  • µCOS-III从入门到精通 第十章(µC/OS-III消息队列)
  • “国产AI之光”Manus,会成为下一个DeepSeek吗?
  • RHCE9.0版本笔记5:防火墙的本地/远程登录方式
  • linux查看python版本
  • conda 配置新环境时package will be install 和 package will be download 的区别
  • [Lc7_分治-快排] 快速选择排序 | 数组中的第K个最大元素 | 库存管理 III
  • p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳
  • MySQL如何给其他账号分配权限?
  • Java基础系列:深入理解八大基本数据类型及避坑指南
  • python 程序一次启动有两个进程的问题(flask)
  • Jetpack Compose — 入门实践
  • 完全日期(日期枚举问题)--- 数学性质题型
  • Linux系统重置密码
  • Kubernetes中的微服务
  • 想自己做网站推广/济宁百度推广价格
  • 电商货源网站/今日国内新闻最新消息大事
  • 中山高端网站建设价格/营销管理制度范本
  • 网上营销渠道/网站seo关键词
  • 做业务不花钱的网站有哪些/网站设计模板
  • 网站建设框架搭建/seo营销技巧