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);

        //执行SQL
        int 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 来删除数据

        //执行SQL
        int 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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

flutter升级3.10.6Xcode构建报错

flutter sdk 升级Xcode报错收集&#xff0c;错误信息如下&#xff1a; Error (Xcode): Cycle inside Runner; building could produce unreliable results.没问题版本信息&#xff1a; Xcode&#xff1a;15.3 flutter sdk &#xff1a;3.7.12 dart sdk&#xff1a;2.19.6 …

【AI】ubuntu 22.04 本地搭建Qwen-VL 支持图片识别的大语言模型 AI视觉

下载源代码 yeqiangyeqiang-MS-7B23:~/Downloads/src$ git clone https://gh-proxy.com/https://github.com/QwenLM/Qwen-VL 正克隆到 Qwen-VL... remote: Enumerating objects: 584, done. remote: Counting objects: 100% (305/305), done. remote: Compressing objects: 10…

深度学习pytorch——RNN从表示到原理、应用、发展、实战详细讲解(终结)

时间序列的表示 题外话&#xff1a;在自然界中&#xff0c;我们接触到的信号都是模拟信号&#xff0c;在手机、电脑等电子设备中存储的信号是数字信号。我们通常对模拟信号进行等间隔取样得到数字信号&#xff0c;这个数字信号也被称为序列。将模拟信号转换为数据信号的过程称为…

C# wpf 嵌入外部程序

WPF Hwnd窗口互操作系列 第一章 嵌入Hwnd窗口 第二章 嵌入WinForm控件 第三章 嵌入WPF控件 第四章 嵌入外部程序&#xff08;本章&#xff09; 第五章 底部嵌入HwndHost 文章目录 WPF Hwnd窗口互操作系列前言一、如何实现&#xff1f;1、定义属性2、进程嵌入&#xff08;1&…

Windows11配置VUE开发环境

目录 一、按照nodejs二、命令安装npm cache clean --forcenpm install -g vue/clinpm install npm -gnpm install webpacknpm install vue-cli -g与npm install -g vue/cli区别npm install -g cnpm --registryhttps://registry.npm.taobao.orgnpm i yarn -g --verbosenpm i -g …

全面解析十七种数据分析方法,具象数据分析思维

一、介绍 在当今数据驱动的商业环境中&#xff0c;数据分析已经成为了企业获取竞争优势的关键工具。无论是为了优化运营效率&#xff0c;提高客户满意度&#xff0c;还是推动产品创新&#xff0c;企业都需要通过分析大量数据来做出明智的决策。数据分析方法多种多样&#xff0c…

计算机网络-文件传输及IP协议——沐雨先生

实验内容 编写请求文件的客户Java应用程序编写响应文件请求的服务器Java应用程序利用Wireshark查看和分析IP包 基本要求 使用Java语言建立请求文件的客户应用程序使用Java语言建立响应文件请求的服务器应用程序了解IP协议的工作过程了解IP包首部各字段及含义 对Java应用程序…

机器学习——模型融合:平均法

机器学习——模型融合&#xff1a;平均法 在机器学习领域&#xff0c;模型融合是一种通过结合多个基本模型的预测结果来提高整体模型性能的技术。模型融合技术通常能够降低预测的方差&#xff0c;提高模型的鲁棒性&#xff0c;并在一定程度上提高预测的准确性。本文将重点介绍…

数据结构初阶:栈和队列

栈 栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出 LIFO &#xff08; Last In First Out &#xff09;的原则。…

腾讯云4核8G服务器12M带宽646元1年零3个月,4C8G使用场景说明

腾讯云4核8G服务器多少钱&#xff1f;腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月&#xff0c;活动页面 txybk.com/go/txy 活动链接打开如下图所示&#xff1a; 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器&#xff0c;详细配置为&#xff1a;轻量4核…

hive图形化客户端工具

hive准备 创建测试数据 以root用户登录&#xff0c;使用hive命令启动hive。 创建库 create database testhivedb; 创建表 create table testhivedb.testhivetable( id int ,name string ); 插入数据 insert into testhivedb.testhivetable values (1,cc); insert into…

《债务与国家的崛起》西方民主制度的金融起源 - 三余书屋 3ysw.net

债务与国家的崛起&#xff1a;西方民主制度的金融起源 你好&#xff0c;今天我们来聊聊由英国知名经济与金融历史学家詹姆斯麦克唐纳所著的《债务与国家的崛起》这本书。19世纪世界历史上发生了一次巨变&#xff0c;即“大分流”。当时西方通过工业革命实现了科技和经济的飞速…

为什么苹果 Mac 电脑需要使用清理软件?

尽管 Apple Mac 电脑因其卓越的性能、简洁高效的 macOS 操作系统及独特的美学设计备受全球用户青睐&#xff0c;但任何电子设备在长期使用后都难以避免面临系统资源日渐累积的问题。其中一个重要维护需求在于&#xff0c;随着使用时间的增长&#xff0c;Mac电脑可能会由于系统垃…

xilinx 7系列fpga上电配置

一、前言 Xilinx FPGA通过加载比特流到内部存储单元来进行配置。 Xilinx FPGA存在两种数据配置路径&#xff0c;一种是满足最小引脚需求的串行路径&#xff0c;一种是可用8位、16位或32位来连接到行业的高性能通用接口&#xff0c;如处理器&#xff0c;8位或者16位并行的闪存…

测试开发:从0到1学习如何测试API网关

日常工作中&#xff0c;难免会遇到临危受命的情况&#xff0c;虽然没有这么夸张&#xff0c;但是也可能会接到一个陌生的任务&#xff0c;也许只是对这个概念有所耳闻。也许这个时候会感到一丝的焦虑&#xff0c;生怕没法完成领导交给的测试任务。其实也没有必要那么紧张&#…

【微服务】面试题(一)

最近进行了一些面试&#xff0c;这几个问题分享给大家 一、分别介绍一下微服务、分布式以及两者的区别 微服务&#xff08;Microservices&#xff09;和分布式系统&#xff08;Distributed Systems&#xff09;是两种不同的软件架构风格&#xff0c;虽然它们之间有些重叠&#…

南京观海微电子---Vitis HLS设计流程(实例演示)——Vitis HLS教程

1. 前言 课时2我们介绍了Vitis HLS的设计流程&#xff0c;如下图所示&#xff1a; 算法或软件的设计和仿真都基于C/C&#xff0c;通过HLS平台导出打包好的IP RTL代码&#xff0c;最后将该打包的IP加入到主工程使用。 本课时&#xff0c;我们通过一个具体的实例&#xff0c;演示…

Kibana管理ES生命周期

希望通过Kibana界面管理ES索引的生命周期 版本&#xff1a;7.15.2 创建索引模板 创建索引模板方便匹配索引&#xff0c;对匹配到的一批索引采用同一套生命周期管理策略&#xff0c;例如开发环境的所有索引以dev-开头&#xff0c;可以创建样式为dev-*的索引模板以匹配开发环境…

【服务器uwsgi + flask + nginx的搭建】

目录 服务器uwsgi flask nginx的搭建1. 安装必要的软件2. 启动nginx服务3. 测试Nginx4. 配置uwsgi和flask5. 配置nginx 服务器uwsgi flask nginx的搭建 1. 安装必要的软件 安装Python、uWSGI、Flask 和 Nginx。 # Ubuntu 安装命令 sudo apt-get update sudo apt-get ins…

海外媒体宣发,穿透与世界的交流 - “保姆级”教程 - 大舍传媒

1. 引言 在当今高度信息化的世界&#xff0c;境外媒体宣发已经成为企业、品牌和政府机构推广自身形象、扩大影响力的重要手段。如何在国际舞台上有效传播信息&#xff0c;提高国际知名度&#xff0c;成为了许多组织面临的重要课题。大舍传媒凭借多年的境外媒体宣发经验&#x…