• 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垃圾回收器回收

  • 相关阅读:
    源码安装并运行Haproxy
    服务器的维护是如何操作的
    【基于Kmeans、Kmeans++和二分K均值算法的图像分割】数据挖掘实验三
    GC8837国产驱动芯片,可以替代TI的DRV8837C,具有 PWM(IN/IN)输入接口, 与行业标准器件兼容,并具有过温保护功能。
    MAVEN
    GIT 创建一个新仓库 || 推送现有文件夹|| 推送现有的 Git 仓库
    【CSDN传疯了】史上最强Opencv神技——带你体会AI魅力,揭秘人脸检测识别与猫脸检测技术哦~
    什么是会话劫持攻击以及如何防止会话劫持
    helm部署gitlab-runner问题解决
    ElasticSerach基础语法
  • 原文地址:https://blog.csdn.net/qq_56951318/article/details/126431580