4.7总结(内部类,JDBC API || 离散化,树状数组)

JAVA学习小结

一.内部类

        基础概念,用途和访问特点

什么是内部类:写在一个类中的另一个类称之为内部类;

内部类的用途:用于封装那些单独存在时没有意义,且是外部类的一部分的类(汽车发动机,人的心脏);提升代码的组织性,且更利于进行事件处理等操作。

访问特点

  • 内部类可以访问外部类的所有变量(包括私有);
  • 外部类访问内部类的成员时,必须创建对象。

        内部类的分类及其相关知识


二.JDBC API

Connection:

语句:
Connection connection = DriverManager.getConnection(url, user, password);

作用:建立与数据库的连接。
参数:url:数据库连接的URL。user:数据库用户名。password:数据库密码。

Statement:

语句:Statement statement = connection.createStatement();

作用:创建用于执行静态SQL语句的对象。

PreparedStatement:

语句:PreparedStatement preparedStatement = connection.prepareStatement(sql);

作用:创建预编译的SQL语句对象。

参数:sql:待执行的SQL语句,可以包含占位符?

ResultSet:

语句:ResultSet resultSet = statement.executeQuery(sql);

作用:执行SQL查询语句并返回结果集。

参数:sql:查询的SQL语句。

DriverManager:

语句:Class.forName(driver);

作用:加载并注册数据库驱动程序。

参数:driver:数据库驱动程序的类名。


增删查改小练习 

package com.demo;import java.sql.*;public class operation {public static void add(int id, String name, int age, String gender) throws Exception{//1.注册驱动// Class.forName("com.mysql.jdbc.Driver");Class.forName("com.mysql.cj.jdbc.Driver");// 修改部分结束//2.获取连接String url = "jdbc:mysql://localhost:3306/demo"; // 移除多余的空格String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);//System.out.println(conn); //测试是否连接上mysql数据库//3.定义sql语句String sql = "insert into tb_demo(id, name, age, gender) values (?, ?, ?, ?)";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setInt(1, id);pstmt.setString(2, name);pstmt.setInt(3, age);pstmt.setString(4, gender);//执行SQLint count = pstmt.executeUpdate(); //影响行数//处理结果//System.out.println(count > 0);//释放资源pstmt.close();conn.close();}public static void deleteById(int id) throws Exception{//1.注册驱动// Class.forName("com.mysql.jdbc.Driver");Class.forName("com.mysql.cj.jdbc.Driver");// 修改部分结束//2.获取连接String url = "jdbc:mysql://localhost:3306/demo"; // 移除多余的空格String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);//System.out.println(conn); //测试是否连接上mysql数据库//3.定义sql语句String sql = "delete from tb_demo where id = ?";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setInt(1, id); // 根据 id 来删除数据//执行SQLint count = pstmt.executeUpdate(); //影响行数//处理结果//System.out.println(count > 0);//释放资源pstmt.close();conn.close();}public static void finding() throws Exception {//1.注册驱动// Class.forName("com.mysql.jdbc.Driver");Class.forName("com.mysql.cj.jdbc.Driver");// 修改部分结束//2.获取连接String url = "jdbc:mysql://localhost:3306/demo"; // 移除多余的空格String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);//System.out.println(conn); //测试是否连接上mysql数据库//3.定义sql语句String sql = "select * from tb_demo";PreparedStatement pstmt = conn.prepareStatement(sql);//执行查询ResultSet rs = pstmt.executeQuery();//处理查询结果while (rs.next()) {// 获取查询结果的每一行数据int id = rs.getInt("id");String name = rs.getString("name");int age = rs.getInt("age");String gender = rs.getString("gender");// 打印数据System.out.println("id: " + id + ", name: " + name + ", age: " + age + ", gender: " + gender);}//释放资源rs.close();pstmt.close();conn.close();}public static void update(int id, String name, int age, String gender) throws Exception {//1.注册驱动// Class.forName("com.mysql.jdbc.Driver");Class.forName("com.mysql.cj.jdbc.Driver");// 修改部分结束//2.获取连接String url = "jdbc:mysql://localhost:3306/demo"; // 移除多余的空格String username = "root";String password = "root";Connection conn = DriverManager.getConnection(url, username, password);//System.out.println(conn); //测试是否连接上mysql数据库//3.定义sql语句String sql = "UPDATE tb_demo SET name = ?, age = ?, gender = ? WHERE id = ?";PreparedStatement pstmt = conn.prepareStatement(sql);pstmt.setString(1, name); // 设置新的名字pstmt.setInt(2, age); // 设置新的年龄pstmt.setString(3, gender); // 设置新的性别pstmt.setInt(4, id); // 设置更新条件,假设根据 id 来更新数据//执行更新操作int count = pstmt.executeUpdate(); // 影响行数//处理结果//System.out.println(count > 0);//释放资源pstmt.close();conn.close();}
}

算法

一.离散化

相关知识【算法基础——第八讲】离散化_离散化算法-CSDN博客

关键代码(映射 + 排序去重)

//映射
int getidx(int x)
{return lower_bound(X.begin(), X.end(), x) - X.begin() + 1;
}//排序去重
sort(X.begin(), X.end());
X.erase(unique(X.begin(), X.end()), X.end());

二.树状数组 

相关知识:树状数组(详细分析+应用),看不懂打死我!-CSDN博客

个人板子及理解

代码 

#include <bits/stdc++.h>
using namespace std;
using ll  = long long
const int N = 1e5 + 9;ll a[N], t[N];
int n, q;int lowbit(int x) {return x & (-x);} //找出与所有与该点相关的覆盖区间void update(int k, ll x)
{for(int i = k; i <= n; i += lowbit(i)) t[i] += x; //单点更新后随之更新覆盖区间
}ll getsum(ll k)
{ll res = 0;for(int i = k; i > 0; i -= lowbit(i)) res += t[i]; return res;
}int main ()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin >> n >> q;for(int i = 1; i <= n; ++ i) cin >> a[i];for(int i = 1; i <= n; ++ i) update(i, a[i]);while(q --){int op; cin >> op;if(op == 1){ll k, x; cin >> k >> x;update(k, x);}else{ll l, r; cin >> l >> r;cout << getsum(r) - getsum(l - 1) << '\n'; //前缀和思想}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/799332.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录CodeMirror一些常用的配置选项

mode&#xff1a;设置编辑器的语言模式&#xff0c;例如JavaScript、HTML、CSS、Markdown等。theme&#xff1a;设置编辑器的主题&#xff0c;例如ambiance、eclipse、monokai等。lineNumbers&#xff1a;设置是否显示行号。readOnly&#xff1a;设置是否只读。gutters&#xf…

【MySQL探索之旅】数据库设计以及聚合查询

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更…

golang - 简单实现linux上的which命令

本文提供了在环境变量$PATH设置的目录里查找符合条件的文件的方法。 实现函数 import ("fmt""os""path""strings" )// 实现 unix whtich 命令功能 func Which(cmd string) (filepath string, err error) {// 获得当前PATH环境变量en…

Django之静态文件及模板语法(上)

Python学习之路系列文章目录 python面向对象之警察与匪徒火拼场景模拟python面向对像之第二次笔记Django环境搭建及测试第1个Django应用及Django的请求处理Django之静态文件及模板语法&#xff08;上&#xff09; 静态文件及模板语法 Python学习之路系列文章目录一、静态文件1.…

java面试题(5)|Java 中 throw 与 throws 的区别是什么?

在Java中&#xff0c;throw和throws是两个关键字&#xff0c;它们用于异常处理&#xff0c;但在语法和作用上有所不同&#xff1a; throw&#xff1a; throw 关键字用于在代码块中抛出一个异常对象。当某个条件发生时&#xff0c;你可以使用 throw 关键字手动抛出一个异常&am…

【面经】2024春招-软件开发工程师-后端方向1

面经整理系列&#xff1a; 【面经】软件开发工程师-后端方向1 文章目录 岗位与面经基础1&#xff1a;数据库 & 网络基础2&#xff1a;系统 & 语法模板3&#xff1a;算法 & 项目 岗位与面经 岗位介绍 JD: 美团-软件开发工程师-后端方向-1小时左右 金融服务平台 技…

SQLite 4.9的虚拟表机制(十四)

返回&#xff1a;SQLite—系列文章目录 上一篇:SQLite 4.9的 OS 接口或“VFS”&#xff08;十三&#xff09; 下一篇&#xff1a;SQLite—系列文章目录 1. 引言 虚拟表是向打开的 SQLite 数据库连接注册的对象。从SQL语句的角度来看&#xff0c; 虚拟表对象与任何其他…

【uniapp小程序-跳转另一个小程序】

https://blog.csdn.net/m0_61702149/article/details/126145953 不传参的情况写法&#xff0c;上面的链接包含传参的写法 在当前小程序在pages.json写上 要跳转的小程序的id "navigateToMiniProgramAppIdList":["要跳转的小程序的appid"] 小程序A到B&#…

软考高级:计算机网络概述

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

数据库相关知识总结

一、数据库三级模式 三个抽象层次&#xff1a; 1. 视图层&#xff1a;最高层次的抽象&#xff0c;描述整个数据库的某个部分的数据 2. 逻辑层&#xff1a;描述数据库中存储的数据以及这些数据存在的关联 3. 物理层&#xff1a;最低层次的抽象&#xff0c;描述数据在存储器中时如…

JavaScript之作用域链详解

在JavaScript中&#xff0c;作用域链是一个重要的概念&#xff0c;它决定了变量和函数的可访问性。作用域链是由变量对象的列表组成&#xff0c;这些变量对象按照它们被创建的顺序排列。本文将详细介绍JavaScript作用域链&#xff0c;包括什么是作用域链、作用域链的创建过程、…

运行pytorch作业出现错误 RuntimeError: unable to write to file

运行pytorch作业出现错误 RuntimeError: unable to write to file Issue #26 huaweicloud/dls-example GitHub pytorch将共享内存的临时文件保存在了/torch_xxx文件中&#xff0c;即容器中的根目录下。容器磁盘空间不足导致该问题的发生。目前可以通过以下代码暂时关闭pyto…

五一假期来临,各地景区云旅游、慢直播方案设计与平台搭建

一、行业背景 经文化和旅游部数据中心测算&#xff0c;今年清明节假期3天全国国内旅游出游1.19亿人次&#xff0c;按可比口径较2019年同期增长11.5%&#xff1b;国内游客出游花费539.5亿元&#xff0c;较2019年同期增长12.7%。踏青赏花和户外徒步成为假期的热门出游主题。随着…

关于c++的命名空间

目录 1.命名空间 &#xff08;1&#xff09;hello world (2)细讲hello world代码 &#xff08;3&#xff09;引用命名空间 &#xff08;4&#xff09;总结代码 2.自定义一个命名空间 1.命名空间 &#xff08;1&#xff09;hello world #include<iostream> using n…

ubuntu安装与卸载Nvidia驱动,anaconda,vscode,remote远程配置

开始装nvidia 驱动之前先配置nouveau 文件 参考 https://blog.csdn.net/qq_40907977/article/details/115305634 1. 删除原有驱动 sudo apt-get purge nvidia* sudo apt-get autoremove 2.安装依赖 sudo apt-get install build-essential gcc-multilib dkms 3.禁用nouvea…

Linux命令-dpkg-preconfigure命令(Debian Linux中软件包安装之前询问问题)

说明 dpkg-preconfigure命令 用于在Debian Linux中软件包安装之前询问问题。 语法 dpkg-preconfigure(选项)(参数)选项 -f&#xff1a;选择使用的前端&#xff1b; -p&#xff1a;感兴趣的最低的优先级问题&#xff1b; --apt&#xff1a;在apt模式下运行。参数 软件包&am…

AI技术创业机会之教育科技

教育科技领域正因人工智能(AI)技术的创新与发展而焕发全新活力,为创业者开辟了众多革新教育模式、提升教学效果的创业机会。以下详述了教育科技中AI技术的具体创业机会及其细节与内容,以助力有志于投身此领域的创业者全面了解市场前景与潜在机遇。 一、个性化学习平台 1.…

Taro打包生成不同目录

使用taro init创建taro项目时&#xff0c;taro默认打包目录是&#xff1a; /config/index.js outputRoot:dist默认的目录&#xff0c;编译不同平台代码时就会覆盖掉&#xff0c;为了达到多端同步调试的目的&#xff0c;这时需要修改默认生成目录了&#xff0c;通过查看官方文…

蓝桥杯练习题 —— 阶乘计算(python)

python优势 # encoding utf-8 # 开发者&#xff1a;xxx # 开发时间&#xff1a; 21:57 # "Stay hungry&#xff0c;stay foolish."n int(input()) res 1 for i in range(n):res res * (i1)print(res) 正常算法 # encoding utf-8 # 开发者&#xff1a;xxx # 开…

【LeetCode】排序数组——不一样的方式实现快排

目录 题目链接 颜色分类 算法原理 代码实现 排序数组 算法原理 代码实现 最小的k个数 算法原理 代码实现 题目链接 LeetCode链接&#xff1a;75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; LeetCode链接&#xff1a;912. 排序数组 - 力扣&#xff08;L…