• java学习笔记day04


    活动地址:CSDN21天学习挑战赛

     * 数据库事务:是数据库的特性
     *
     * Mysql的数据库引擎
     * 1.在MySQL中,只有使用了Innodb引擎的数据库才支持事务
     * 2.事务处理可以用来维护数据的完整性。保证sql语句要么全部执行,
     *      要么全部不执行。
     * 3. 发生在DML中,增删改。
     *
     * 事务的四大特征ACID
     * 1、原子性 A。
     *  一个事务,要么全部完成,要么全部不完成。
     * 2、一致性 C。
     *  在事务开始之前和事务结束之后,数据库的完整性没有被破坏。
     * 3、隔离性 Isolation
     *  数据库允许多个事务同时对数据进行处理。每个事务之间是相互隔离。
     * 4、持久性 D
     *  事务结束以后,对数据的增删改是永久性的。
     *
     *  术语:提交事务,回滚事务(事务回滚)
     *
     *  1、事务一旦提交,就不可能回滚。
     *  2、当一个连接对象被创建时,默认情况下自动提交事务。
     *  3、关闭连接时,数据会自动提交事务。
     *
     *  操作事务的步骤:
     *  1、关闭事务的自动提交
     *
     *  当做出增删改操作,把变化发生在内存中,提交事务,才会真正提交给数据库。

    1. @Test
    2. public void test01() {
    3. Connection conn = null;
    4. PreparedStatement pstmt1 = null;
    5. PreparedStatement pstmt2 = null;
    6. try {
    7. conn = JDBCUtil.getConnection();
    8. // 关闭事务的自动提交
    9. // true:开启(默认) false:关闭
    10. // 开启一个事务
    11. conn.setAutoCommit(false);
    12. // 把id为1的账户余额-1000
    13. String sql1 = "update bank set balance = balance - 1000 where id = 1";
    14. pstmt1 = conn.prepareStatement(sql1);
    15. pstmt1.executeUpdate();
    16. String sql2 = "update bank set balance = balance + 1000 where id = 2";
    17. pstmt2 = conn.prepareStatement(sql2);
    18. pstmt2.executeUpdate();
    19. int i = 10 / 0;
    20. // 提交事务
    21. conn.commit();
    22. System.out.println("转账成功...");
    23. } catch (Exception e) {
    24. try {
    25. // 事务回滚
    26. conn.rollback();
    27. } catch (SQLException ex) {
    28. throw new RuntimeException(ex);
    29. }
    30. throw new RuntimeException(e);
    31. } finally {
    32. JDBCUtil.close(conn,pstmt1);
    33. JDBCUtil.close(null,pstmt2);
    34. }
    35. }
    1. @Test
    2. public void test03() {
    3. Connection conn = null;
    4. PreparedStatement pstmt = null;
    5. ResultSet rs = null;
    6. try {
    7. conn = JDBCUtil.getConnection();
    8. String sql = "select * from user";
    9. pstmt = conn.prepareStatement(sql);
    10. rs = pstmt.executeQuery();
    11. // 获取元数据
    12. /*
    13. 元数据:表格本身的数据
    14. 表格的列名,结果集的列名
    15. */
    16. ResultSetMetaData metaData = rs.getMetaData();
    17. // System.out.println(metaData.getColumnName(1));
    18. // System.out.println(metaData.getColumnName(2));
    19. // System.out.println(metaData.getColumnCount());
    20. // metaData.get
    21. for (int i = 1; i <= metaData.getColumnCount() ; i++) {
    22. metaData.getColumnName(i);
    23. }
    24. while (rs.next()) {
    25. int id = rs.getInt("id");
    26. String username = rs.getString("username");
    27. String password = rs.getString("password");
    28. System.out.println("id:" + id + ",username:" + username + ",password:" + password);
    29. }
    30. } catch (ClassNotFoundException e) {
    31. throw new RuntimeException(e);
    32. } catch (SQLException e) {
    33. throw new RuntimeException(e);
    34. } catch (IOException e) {
    35. throw new RuntimeException(e);
    36. } finally {
    37. JDBCUtil.close(conn,pstmt,rs);
    38. }
    39. }

    线性结构:数据元素之间存在一对一的线性关系
    顺序存储结构:顺序存储的线性表为顺序结构,其中的存储元素(地址)是连续的
    链式存储结构:链式存储的线性表为链表,存储元素不(地址)一定是连续的
    线性结构常见的有:数组,队列,链表,栈
    非线性结构:二维数组,多维数组,广义表,树结构,图结构
    稀疏(sparsearray)数组:
    记录数组一共有几行几列,有多少个不同的值 int[sum+1][3]
    队列:
    银行排队(先入先出),
    是一个有序列表,可以用数组或是链表实现

    链表(linked list):
    是有序的列表,链表是以节点的方式来储存
    每个节点包含date域,next域(指向下一个节点),各个节点不一定是连续储存,
    链表分带头的链表和没有头节点的链表,根据实际的需求来确定

    基本的概念:
    数据结构表示数据在计算机中的存储和组织形式,主要描述数据元素之间的位置关系等,选择适当的数据结构可以提高计算机程序的运行效率(时间复杂度)和存储效率(空间复杂度)
    数据结构的三种层次:
    1,逻辑结构--抽象层:主要描述的是数据元素之间的逻辑关系

    1,静态存储区(方法区)
    主要放静态数据,全局static数据和常量.
    在程序编译时就分配好,在程序运行期间都存在
    2,栈区
    执行方法时,方法体内的局部变量在栈上创建
    方法执行结束内存自动释放
    效率很高,但是分配内存容量有限
    3,堆区(动态内存分配)
    new出来的内存
    这部分内存不使用时由java垃圾回收器回收

  • 相关阅读:
    【第2期赠书活动】〖Python 数据库开发实战 - Redis篇⑤〗- Redis 的常用配置参数
    再谈ThreadPoolExecutor
    机器学习(公式推导与代码实现)--sklearn机器学习库
    Spring Boot 编写 API 的 10条最佳实践
    nginx反向代理与负载均衡
    SpringCloud + SpringGateway 解决Get请求传参为特殊字符导致400无法通过网关转发的问题
    java 可变个数形参
    MySQL 进阶 怎么去了解MySQL的架构原理
    Day 85:网络构建 (代码抄写)
    C# Winform 系统方案目录的管理开发
  • 原文地址:https://blog.csdn.net/qq_56951318/article/details/126431580