【Java】JDBC

Java程序演示JDBC的使用 JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的Java API。应用程序可通过这套API连接到关系型数据库,并使用SQL语句完成对数据库中数据的新增、删除、修改和查询等操作。下面将编写Java程序演示JDBC的使用,该程序从users表中读取数据,并将结果打印在控制台,具体步骤如下所示。 阅读详情

温故知新:回顾一下JDBC

0. 前言

(1)学习目标

JDBC 是 Java 持久层基础,是我们学习 Java 技术栈过程中需要了解的知识。

据说在遥远的年代, Mybatis 尚未流行,Java 工程的持久层基本上就由JDBC完成。学习JDBC,既能巩固面向对象的思想,又能为日后学习持久层框架打下基础。

学习目标

  • 巩固SQL基础,暂未学SQL的同学也可以通过JDBC了解一下SQL
  • 通过JDBC,能深入了解万物皆对象,面向对象的思想
  • 承上启下,JDBC是较为原始的持久层实现方式,为日后学习持久层框架打下基础

(2) 准备工作

准备数据库
目前 Mysql 是最流行的轻量级关系型数据库之一,我们首先要准备一个数据库,可以选择本地的,也可以选择远程的:

Mysql官网下载连接
https://dev.mysql.com/downloads/mysql/

具体安装方式本文不赘述,请参考其他文章。

准备JDBC依赖
MVN仓库-Mysql-Connector-Java

读者可通过 Maven 下载这个JDBC依赖,也可以像我一样手动拉取:
jdbc-jar

若是手动拉取的jar包,可参考以下文章将它添加至项目的Library:
优快云-往项目中添加jar包:https://blog.youkuaiyun.com/pan_1214_/article/details/126283072

测试驱动
黑猫白猫,抓到老鼠就是好猫,无论采用哪种方式,只要能使用JDBC依赖即可,我们做建个类做个测试:

public static void main(String[] args) {
           
        //初始化驱动
        try {
            //驱动类com.mysql.cj.jdbc.Driver
            //如果忘记了导包,就会抛出ClassNotFoundException
            Class.forName("com.mysql.cj.jdbc.Driver");
              
            System.out.println("数据库驱动加载成功 !");
   
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
           
    }

连接数据库
参考下面代码连接数据库:

public static void main(String[] args) {
    //初始化驱动
    try {
        //驱动类com.mysql.cj.jdbc.Driver
        //如果忘记了导包,就会抛出ClassNotFoundException
        Class.forName("com.mysql.cj.jdbc.Driver");  
        //连接数据库
        Connection c = DriverManager.getConnection( 	"jdbc:mysql://127.0.0.1:3306/myfirstdb?characterEncoding=UTF-8",
          "root", "root");
        System.out.println("连接成功,获取连接对象: " + c);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

建表
建个表来做接下来的学习演示:

CREATE TABLE `user` (
  `id` bigint NOT NULL COMMENT '主键id',
  `user_account` varchar(255) DEFAULT NULL COMMENT '登录账号',
  `username` varchar(255) DEFAULT NULL COMMENT '用户名',
  `avatar_url` varchar(255) DEFAULT NULL COMMENT '头像url',
  `gender` tinyint DEFAULT NULL COMMENT '性别',
  `user_password` varchar(255) DEFAULT NULL COMMENT '密码',
  `phone` varchar(255) DEFAULT NULL COMMENT '电话',
  `email` varchar(255) DEFAULT NULL COMMENT '邮箱',
  `user_status` int NOT NULL DEFAULT '0' COMMENT '状态 0-正常',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `is_deleted` int NOT NULL DEFAULT '0' COMMENT '是否删除 ',
  `user_role` int NOT NULL DEFAULT '0' COMMENT '用户角色 0-普通用户 1-管理员',
  `id_card` varchar(255) DEFAULT NULL COMMENT '实名注册,身份证号'
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

1. CRUD

面向对象编程的一大特点是我们可以直接用大佬们写好的各种类、各种方法。我们在准备工作中引入的JDBC 依赖 jar 包里就是要用到的各种类、方法。

JDBC 提供一个Statement 类 来执行 SQL 语句。

1.1 Statement执行增删查改

Statement对象
我们可以在连接对象中,创建Statement对象,然后通过这个对象执行CRUD

/连接数据库
        Connection c = DriverManager.getConnection(
                "jdbc:mysql://127.0.0.1:3306/myfirstdb?characterEncoding=UTF-8",
                "root", "root");
        Statement s = c.createStatement();
        String insert = "INSERT INTO  `user`  ( id, `user_account` ,  `username` ,  `email` ) VALUES (3,'sharry3', 'sharrycloud1', 'example@example.com')";
        s.execute(insert);
        //关闭连接
        s.close();
        c.close();

在上面例子中,我们不难发现,我们需要将SQL 语句写成String ,作为参数传递进Statement对象,执行完毕后记得像关流一样将其关闭。

CRUD
我们演示 使用 Statement 对象 执行 CRUD

先列举 增删改的例子,因为增删改的返回值都是影响行数,基本上用法都差不多:

public static void main(String[] args) throws SQLException {
        //连接数据库
        Connection c = DriverManager.getConnection(
                "jdbc:mysql://127.0.0.1:3306/myfirstdb?characterEncoding=UTF-8",
                "root", "root");
    	Statement s = c.createStatement();
   
        // 新增
        String insert = "INSERT INTO  `user`  ( id, `user_account` ,  `username` ,  `email` ) VALUES (3,'sharry3', 'sharrycloud1', 'example@example.com')";
        s.execute(insert);
        String insert = "INSERT INTO  `user`  ( id, `user_account` ,  `username` ,  `email` ) VALUES (3,'sharry3', 'sharrycloud1', 'example@example.com')";
        System.out.println("影响了"+s.execute(insert)+"行");
        
        //更新数据
        String update = "UPDATE `user` SET `username` = 'sharrycloud2' WHERE `user_account` = 'sharry2'";
        System.out.println("影响了"+s.executeUpdate(update)+"行");
        
        //删除数据
        String delete = "DELETE FROM `user` WHERE `user_account` = 'sharry2'";
        System.out.println("影响了"+s.executeUpdate(delete)+"行");
    
    	//关闭连接
        s.close();
        c.close();
}

查询举例:
我们可以使用 ResultSet 接收查询结果

	 //查询数据
     String select = "SELECT * FROM `user`";
     ResultSet rs = s.executeQuery(select);
     while (rs.next()){
     	// 获取其他属性,依此类推
        System.out.println(rs.getString("user_account"));
     }

1.2 PreparedStatement

PreparedStatement 是预编译的 Statement ,优点是可以进行参数设置,并且性能与安全性相比Statement有所提升。

当前,除了特别老旧的项目或者特殊业务,我们已经极少直接使用JDBC进行持久层操作,因此哪怕PreparedStatement性能优越,也用得极少,此处作为了解。

由于PreparedStatement是基于SQL语句创建的,既可以当成Statement使用,也可以通过填充值的方式设置SQL语句,我们稍微举个例子,具体使用可以到真要用到的时候,再去查 JDBC 的 API 文档:

String sql = "insert into user values(null,?,?,?)";
        PreparedStatement ps = c.prepareStatement(sql);
        ps.setString(1, "sharry");
        ps.setString(2, "sharrycloud1");
        ps.setString(3, "");
        ps.execute();

2. 事务

事务是持久层需要重视的问题,即便现在JDBC直接使用率很低,但是它也提供了事务处理。

2.1 概念回顾

首先我们来回顾一下事务的八股文:

事务:是一组操作的集合,它是一个不可分割的工作单元,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

事务的特性:ACID

  • 原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
    -一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
  • 隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • 持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变是永久的。

2.2 JDBC 事务

JDBC 提供的事务处理机制实际代码操作起来也比较简单,举个例子:

		// 使用事务
        c.setAutoCommit(false);
        String sql = "insert into user values(null,?,?,?)";
        PreparedStatement ps = c.prepareStatement(sql);
        ps.setString(1, "sharry");
        ps.setString(2, "sharrycloud1");
        ps.setString(3, "");
        ps.execute();
        
        //提交事务
        c.commit();

需要注意的是,由于 Mysql 的表需要的 InnoDB 才支持事务。具体请自行查阅Mysql 原理。

3. ORM

ORM:Object Relationship Database Mapping, 对象和关系数据库的映射。

ORM 很好理解,就是将对象的属性和值设置成数据库对应的字段和值,然后通过 JDBC 等持久化操作,实现用 Java 代码对数据库表的操作。

ORM 是目前我们常用的 Mybatis 持久层框架 原理, 由于Mybatis也是基于JDBC的,因此ORM其实早早地就由JDBC支持。

其实 使用 JDBC 的方式 实现 ORM 很简单, 就是和我们工作时一样,创建实体类,然后通过 Statement 或者 ResultSet 对相应的值进行对应,根据业务进行下一步操作,我们直接举个例子:

篇幅关系,我们只截取我们创建的表的几个字段来演示:

实体类

public class UserVO {

    private Long id;
    private String userAccount;
    private String username;
    private String avatarUrl;
}

ORM举例

public static void main(String[] args) throws Exception {
        //连接数据库
        Connection c = DriverManager.getConnection(
                "jdbc:mysql://127.0.0.1:3306/myfirstdb?characterEncoding=UTF-8",
                "root", "root");
    	Statement s = c.createStatement();
        //创建执行sql的对象
        Statement s = c.createStatement();
        //执行查询sql
        String sql = "select * from user";
        ResultSet rs = s.executeQuery(sql);
        List<UserVO> userVOS = new ArrayList<>();
        
        //遍历结果集
        while (rs.next()) {
            UserVO userVO = new UserVO();
            userVO.setId(rs.getLong("id"));
            userVO.setUserAccount(rs.getString("user_account"));
            userVO.setUsername(rs.getString("username"));
            userVO.setAvatarUrl(rs.getString("avatar_url"));
            userVOS.add(userVO);
        }
        
        //关闭连接
        s.close();
        c.close();
    }

4. JDBC 连接池

JDBC 也提供了连接池,支持多线程。具体原理可参考线程池原理。我们直接举例:

public class ConnectionPool {
  
    List<Connection> cs = new ArrayList<Connection>();
 	int size;
  	public ConnectionPool(int size) {
        this.size = size;
        init();
    }
  
    public void init() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            for (int i = 0; i < size; i++) {
                Connection c = DriverManager
 .getConnection("jdbc:mysql://127.0.0.1:3306/myfirstdb?characterEncoding=UTF-8",
                "root", "root");
                cs.add(c);
            }
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
  
    public synchronized Connection getConnection() {
        while (cs.isEmpty()) {
            try {
                this.wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        Connection c = cs.remove(0);
        return c;
    }
  
    public synchronized void returnConnection(Connection c) {
        cs.add(c);
        this.notifyAll();
    }
  
}

5. 总结

本文学习了常见持久层框架的原理:JDBC;通过学习JDBC,我们进一步体验了面向对象的思想,一切皆对象:我们可以直接使用大佬们写好的JDBC相关类与方法、可以通过ORM将数据库表字段与值通过ORM映射到实体类,实现面向对象的方式操作数据库表。最后,我们简单提了一下数据库连接池。通过本文的学习,为接下来持久层框架的学习打下基础。

Java语法篇—JDBC 1.简单来说jdbc就是java与数据库连接,是一种用于执行SQL语句的JAVA API2.由于市场上有很多不同的数据库,例如:mysql,SQLserve等等,如果每一种数据库都要JAVA官方来写对应的类或接口工作量很大,所以JAVA官方有了规范的JDBC接口,对应不同的数据库提供统一的方法,程序员只需要学习统一的方法,其他由数据库官方来写。 阅读详情

相关推荐

inferCNVpy分析流程学习

inferCNV的用途大家都已经很清楚了,接下来就走一下流程,试一试Python版的inferCNV。使用的数据集为:GSE188711,既往推文可见:Scanpy分析全流程(含harmonypy整合/细胞周期矫正/双细胞检测及去除)(

zfyyzhys的博客 1296

Java中JDBC的超详细总结

前言 1、JDBC是什么? Java DataBase Connectivity(Java语言连接数据库) 2、JDBC的本质 是sun公司制定的一个接口。在java.sql.*包下。 为什么SUN需要制定一套JDBC接口? 因为每一个数据库的底层实现原理都不一样。Oracle数据库有自己的原理,MySQL数据库也有自己的原理,MS SqlServer数据库也有自己的原理… 每一个数据库产品都有自己独特的实现原理,如果没有这套接口就需要写多套java程序。 驱动:就是一个jar包,里面包含了JDBC的实现

竹蜻蜓飞行的博客 6万+

全志T113s3主线linux开发(0)--基础准备

嵌入式Linux设备的启动大概是三步:1)启动芯片+内存:常见的是Uboot,不过全志的Uboot主线对SPI NAND 不太友好,用TF卡就方便。对于T113S芯片,推荐使用Awboot,简陋但快速。开发阶段用这个就方便好多,对SPINAND支持也方便。2)启动linux内核:主线内核以下通篇都用6.13以上的内核。对比tina5.0还在用5.4 ,主要是性能、安全上有变化。6.0以上内核在devicetree的编写具体格式上有了变化,网上大量tina5.0和5.4内核的编写方式不适用。

2301_79234138的博客 2247

Java的JDBC

jdbc

蓝影铁哥的博客 793

COMSOL仿真避坑指南:列管反应器模拟中多孔介质与化学反应设置的5个常见错误

本文详细解析了COMSOL仿真中列管反应器模拟的5个常见错误,包括多孔介质模型选择、化学反应接口配置、对流扩散方程处理、薄层热阻设置及网格独立性验证。特别针对多孔介质与化学反应设置的误区,提供了实用的判断标准和修正方法,帮助工程师避免计算偏差,提升仿真精度。

weixin_29597551的博客 325

(三)UPF之Domain Coverage Relationship(Cover、Equivalent、Independent)

整个Soc架构中一般会存在多个Power Domain,不同的Power Domain之间也存在着一定的Coverage关系。在Cadence工具中,这种。不同的Domain Coverage关系中,各个Domain存在着一定的关联()。

Mr.翟的博客 1424

【MySQL】Java的JDBC编程

Java的JDBC编程 1. 数据库编程的必备条件 2. Java的数据库编程:JDBC 3. JDBC工作原理 4. JDBC使用 配置 最基本的一个JDBC程序编写流程 JDBC查询 4.1 JDBC开发案例 4.2 JDBC使用步骤总结 5. JDBC常用接口和类 5.1 JDBC API 5.2 数据库连接Connection 5.3 Statement对象 5.4 ResultSet对象 6. 应用案例 7. 内容重点总结 面试问答: 8. 课后作业

2402_85428625的博客 2123

Aurix TC3xx系列MCU ResourceM模块配置(多核资源分配)

为减轻主核的负载率或者平衡各个核的资源分配,通常需要把一些MCU内部资源分配到从核上,在EB tresos工具中,通过ResourceM模块实现多核资源分配。

m0_38045338的博客 1388

Java——JDBC

JDBA(Java DataBase Connectivity) java数据库连接是一种用于执行SQL语句的Java API ,可以为多种关系型数据库提供统一访问,它由一组使用Java语言编写的类和接口组成,提供了诸如:查询,新增,修改,删除更新数据库中数据的方法。有了JDBC规范(接口),不同的数据库开发商根据规范中的方法进行实现,开发人员面对的是统一的接口。JDBC API:供程序员调用的接口与类,集成在java.sql包中DriverManager类作用:管理各种不同的JDBC驱动。

sql12345678911的博客 1192

【网络协议】【TSN】精讲TSN工作原理!图解超赞超详细!!!

TSN有一个服务等级(class of service,CoS)的概念。对TSN网络而言,不同优先级的服务对应图3中的PCP码。3位PCP码定义了0(最低)~7(最高)这8个优先级,传输类型分别对应基础、最大努力、卓越努力、严苛应用、延时和抖动小于100 ms的视频、延时和抖动小于10 ms的音频、内部网络控制、网络控制。其会对网络场景进行不同的匹配,是后续调度、配置设计中会考虑到的数据流调度因素。

风云说通信 2633

java毕设:基于springboot的服装搭配推荐系统(springboot+layui+jq+html)1011

项目描述 基于springboot的服装搭配推荐系统: 基于天气服装搭配推荐系统为用户提供未来一周的天气预报情况,并根据预报天气和用户现有的服装进行着装搭配,以及显示未来6小时精确温度数据为用户提供更精确的天气信息便于用户在出行前对自己的着装进行调整,每日用户可以根据自己当日对系统推荐的着装搭配舒适度进行反馈,系统将根据用户的反馈对用户着装的保暖系数进行相应调整,通过多次的反馈和调整形成对用户着装的个体化和精确化的推荐。 本系统可以为用户提供以下服务: 1.未来五天的天气信息显示; 2.未来六小时内天气温度

qq_2537071370的博客 3647

Java JDBC

1、什么是JDBC? Java DataBase Connectivity 在java语言中编写sql语句,对mysql数据库中的数据进行CRUD操作。 JDBC就是一堆接口,负责连接数据库的. 2、JDBC相关的类库在哪里? java.sql.*; 3、JDBC本质上是一堆什么呢? java.sql.*;这个包下都是JDBC的接口,SUN公司制定的! JDBC是体现“接口作用”的非常经典的例子。 JDBC降低了耦合度,提高了扩展力。 对于java程序员来说,不需要关心数据库是哪个品牌。只要面向JDBC接

一只小菜鸡 960

【教程4>第1章>第12节】通过Verilog读取txt格式数据进行测试并将结果导入到matlab

我们在verilog的testbench中,调用txt文件,将上述正弦样本数据作为测试激励输入到verilog模块中。通过这个方法,可以将一些较为复杂的数据导入到verilog中,进行FPGA数据处理模块的开发。即通过w方式打开一个新的txt文件,然后将verilog的输出保存到XY1.txt文件中。这个部分是txt文件的路径,实际使用时,修改为您自己的路径,或者将txt文件放在和我一样的路径中。这个是数据长度,matlab产生的txt多少长度,这个参数就修改为多少长度。这个txt就是保存这段数据的文件。

FPGA/MATLAB学习教程/源码/项目合作开发 1386

【MySQL系列】Java的JDBC编程

MySQL数据库 JDBC编程部分的内容~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

哎呀是小张啊 的博客 2030

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Java的JDBC编程

Java的JDBC编程

2302_76435884的博客 1128

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Java笔记——java之jdbc_java jdbc

如果最小连接数与最大连接数相差太大,那么最先的连接请求将会获利,之后超过最小连接数量的连接请求等价于建立一个新的数据库连接。最大连接数是连接池能申请的最大连接数,如果数据库连接请求超过此数,后面的数据库连接请求将被加入到等待队列中,这会影响之后的数据库操作。限定了这个连接池能占有的最大连接数,当应用程序向连接池请求的连接数超过最大连接数量时,这些请求将被加入到等待队列中。最小连接数是连接池一直保持的数据库连接,所以如果应用程序对数据库连接的使用量不大,将会有大量的数据库连接资源被浪费;便是SQL注入问题。

a25847a的博客 921

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

下java用下jdbc吗,Java之JDBC

今天我学习了JDBC中一部分知识下面是我对今天学习JDBC部分知识的总结:JDBC的全称:Java Database Connectivity意为:Java 数据库 连接这是一种执行SQL语句的API数据库厂商自己实现了JDBC这套接口,我们称之为 数据库驱动在java中1、我们首先需要装载驱动类.以mysql为例,代码如下Class.forName("com.mysql.jdbc.Driver...

weixin_29801567的博客 228

Java中JDBC的使用

使用格式Stringsql=表操作语言示例Stringsql=“updateempsetsalary=10000whereid=1001”;

wopoli的博客 1605

JAVA的JDBC编程

JAVA的JDBC编程数据库编程的必备条件JAVA的数据库编程:JDBCJDBC工作原理 数据库编程的必备条件 1.编程语言:JAVA,C,C++,Python等 2.数据库:如Oracle,Mysql,sql server等 3.数据库驱动包:不同的数据库,对应不同的编程语言提供了不同的数据库驱动包。如:mysql提供了java的驱动包mysql-connector-java,需要基于java操作mysql急需要该驱动包.同样的,要基于javaa操作Oracle数据库则需要Oracle的数据库驱动包ojd

weixin_48377363的博客 930

java 8 jdbc,Java 8 JDBC改进

本文概述在Java 8中, Java在JDBC API中进行了两项重大更改。1)JDBC-ODBC桥已被删除。Oracle不支持JDBC-ODBC桥。 Oracle建议你使用数据库供应商提供的JDBC驱动程序, 而不要使用JDBC-ODBC Bridge。2)在JDBC 4.2中添加了一些新功能。Java JDBC 4.2引入了以下功能:增加了REF_CURSOR支持。添加java.sql.Dri...

weixin_42362885的博客 334

Java-JDBC详解

JDBC是Java程序连接数据库的一个重要接口,是搭建Java程序与数据库连接的重要桥梁,描述了一个访问关系型数据库的标准类库,并且为数据库厂商提供了一个标准的体系结构。

小小张自由—>张有博 5125

【Java web】JDBC 详解

JDBC是Java连接数据库的标准API,相当于Java程序与数据库之间的"翻译官"。文章通过图书馆借书的生动比喻,详细讲解了JDBC的六大操作步骤:注册驱动、获取连接、创建操作对象、执行SQL语句、处理结果集和释放资源。重点分析了Statement存在的SQL注入风险,以及PreparedStatement如何通过预编译机制解决安全问题。文章还介绍了配置文件的读取方法和DbUtils工具类的封装实现,强调资源释放的重要性。通过生活化的案例和代码示例,帮助读者理解JDBC的核心原理和最佳

弹简特的博客,步履不停,持续学习,多尝试,多复盘,多沉淀。 1502

Java中的JDBC编程

Java中的JDBC编程JDBC的工作原理JDBC的使用JDBC常用接口和类数据库连接ConnectionStatement对象ResultSet对象 JDBC的工作原理 JDBC,即Java Database Connectivity,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API有java.sql.* ,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个标准的API,可以为多种关系数据库提供统一访问。

流年、烟雨 964

Java学习 - JDBC

在开发中我们使用的是java语言,那么势必要通过java语言操作数据库中的数据。这就是接下来要学习的JDBC。Statement对象的作用就是用来执行SQL语句。而针对不同类型的SQL语句使用的方法也不一样。执行DDL、DML语句执行DQL语句该方法涉及到了ResultSet对象,而这个对象我们还没有学习,一会再重点讲解。封装了SQL查询语句的结果。ResultSet executeQuery(sql) :执行DQL 语句,返回 ResultSet 对象那么我们就需要从ResultSet。

weixin_67739446的博客 1770
上一篇: 【Java】Lambda
下一篇: 【GitHub】connect to host github.com port 22: Connection refused 的解决方案
CoderSharry
博客等级 码龄4年 515粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值