JAVA数据库连接JDBC

Java DataBase Connectivity(JDBC)& Java数据库连接&笔记总结 Java DataBase Connectivity(JDBC)& Java数据库连接&笔记总结1.JDBC简介2.JDBC发展历史3.使用步骤*4.JDBC中常用的类型与方法4.1.数据库连接基础操作5.工厂方法设计模式 ( 静态工厂方法模式 )5.1.简单工厂设计模式6.DAO6.1.工厂与DAO结合案例7.SQL注入问题 *7.1.解决sql注入问题 *7.2.PreparedStatement 预编译的SQL执行环境7.3.PreparedStatement与Statement谁的性 阅读详情

一,JDBC概述

JDBC (Java DataBase Connectivity)是Java数据库连接技术的简称,提供连接各种常用数据库

的能力。 

二,JDBC工作原理

JDBC API

提供者:Sun公司

作用:Java访问数据库的标准规范。提供给程序员调用的接口与类,集成在java.sql和javax.sql

中。

DriverManager(驱动管理者)

提供者:Sun公司

作用:管理各种不同的JDBC驱动,并获取数据库连接。

JDBC驱动

提供者:各大数据库厂商

作用: JDBC是接口,而JDBC驱动才是接口的实现。每个数据库厂商都有自己的驱动,用来连接

自己公司的数据库。

 jdbc核心api

 Connection接口的常用方法

Statement接口的常用方法 

 

 ResultSet接口的常用方法

 

 三,sql注入

注入原理:利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。

防止sql注入:

过滤用户输入的数据中是否包含非法字符;

分步校验!先使用用户名来查询用户,如果查找到了,再比较密码;

使用PreparedStatement接口。

PreparedStatement接口是Statement的子接口,你可以使用该接口来替换Statement接口。

四,数据库连接 

 一,创建工程导入jar包

二,

  /**
         * 最终版方法一:标准版
         */
        //最终版    将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式获取连接
        //实现了数据与代码的分离,实现了解耦
        //如果需要修改配置文件信息,可以避免从新打包
        //读取配置文件中的4个基本信息dbxlianjie.class.getClassLoader().getResourceAsStream获取类的加载器
       // InputStream is = jdbxlianjie.class.getClassLoader().getResourceAsStream("jdbc.properties");或
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");

        Properties pros = new Properties();
        pros.load(is);

        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String ur1 = pros.getProperty("ur1");
        String driverClass = pros.getProperty("driverClass");

        //加载驱动
        Class.forName(driverClass);
        //获取连接
        Connection conn = DriverManager.getConnection(ur1,user,password);
       // System.out.println(conn);

        System.out.println("*****************************************************************************");
        /**
         * 最终版方法二:不标准 --->帮助理解
         */
        //加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //获取连接
        Connection conn1 = DriverManager.getConnection("jdbc:mysql://localhost:3306/myschool","root","abc123");
       // System.out.println(conn1);

 通用连接方法

user=root
password=abc123
ur1=jdbc:mysql://localhost:3306/homework
driverClass=com.mysql.jdbc.Driver
    /**
     * 获取数据库连接
     */
    public static Connection getConnection() throws Exception{
        //读取配置文件中的4个基本信息
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");

        Properties pros = new Properties();
        pros.load(is);


        String user = pros.getProperty("user");
        String password = pros.getProperty("password");
        String ur1 = pros.getProperty("ur1");
        String driverClass = pros.getProperty("driverClass");


        //加载驱动
        Class.forName(driverClass);
        //获取连接
        Connection conn = DriverManager.getConnection(ur1,user,password);
        return conn;
    }

 五,JDBC增删改查操作

    /**
     * 数据库查询
     */
    public ResultSet select(String sql,Object[]objects,Connection connection) {

        ResultSet resultSet = null;
        try {
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            if (objects != null && objects.length > 0) {
                for (int i = 0; i < objects.length; i++) {
                    preparedStatement.setObject(i + 1, objects[i]);
                }
            }
            resultSet = preparedStatement.executeQuery();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return resultSet;
    }
//注意------------------------------------------------------>>>>个方法这样用
//    public double getBalance(String cardNo) {
//        String sql = "SELECT BALANCE FROM ACCOUNT WHERE CARDNO = ?";
//        Object[]objects = {cardNo};
//        Connection connection = BaseDao.getConnection();
//        ResultSet resultSet = select(sql,objects,connection);
//        double balance = 0;
//        try {
//            while (resultSet.next()){
//                balance = resultSet.getDouble(1);
//            }
//        } catch (SQLException throwables) {
//            throwables.printStackTrace();
//        } finally {
//            close(resultSet,connection);
//        }
//        return balance;
//    }




    //通用表查询返回多条数据
    public static <T> List<T> getForList(Class<T> clazz, String sql, Object... args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = getConnection();
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i + 1, args[i]);
            }
            rs = ps.executeQuery();
            //获取结果集元数据ResultSetMetaDate
            ResultSetMetaData rsmd = rs.getMetaData();
            //通过ResultSetMetaData获取结果集中的列数
            int columnCount = rsmd.getColumnCount();

            //创建集合对象 用于储存多条数据
            ArrayList<T> list = new ArrayList<>();

            while (rs.next()) {
                T t = clazz.newInstance();
                //处理结果集一行数据中的每一列:给t对象指定的属性赋值的过程
                for (int i = 0; i < columnCount; i++) {
                    //获取列值
                    Object columValue = rs.getObject(i + 1);
                    //获取每个列的列名getColumnName
                    //获取列的别名getColumnLabel
                    String columnName = rsmd.getColumnLabel(i + 1);
                    //给cust对象指定columnName属性,赋值为columValue,通过反射
                    Field field = clazz.getDeclaredField(columnName);
                    field.setAccessible(true);//如果那个类权限不够这个方法可以打开
                    field.set(t, columValue);
                }
                list.add(t);//把赋完值的t添加到集合中
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeResource(conn, ps, rs);
        }
        return null;
    }

    //--------------------------------------------------->>>>>>>>>>>>>这个方法这样用
//    public List<Provider> getProvider(int num) {
//        String sql = "SELECT id,proCode,proName,proContact,proPhoone FROM provider limit ?,4";
//        List<Provider> list =  getForList(Provider.class,sql,(num-1)*4);
//        list.forEach(System.out::println);
//        return list;
//    }




    /**
     * 关闭资源
     */
    public static void closeResource(Connection conn, Statement ps, ResultSet rs) {
        try {
            if (ps != null)
                ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (conn != null)
                conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (rs != null)
                rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }




    /**
     * 增删改方法
     * @param sql
     * @param args
     */
    public void update(String sql,Object ...args){
        Connection conn = null;
        PreparedStatement ps = null;
        try {
            conn = getConnection();
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i + 1,args[i]);
            }
            ps.execute();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeResource(conn,ps);
        }
    }


    /**
     * 针对增删改有返回值
     * @param sql
     * @param obj
     * @return
     */
    public int executeUpdate(String sql,Object... obj){
        this.getConnection();
        int result = 0;
        try {
            preparedStatement = connection.prepareStatement(sql);
            if(obj!=null && obj.length > 0){
                for (int i = 0;i< obj.length;i++) {
                    preparedStatement.setObject((i+1),obj[i]);
                }
            }
            result = preparedStatement.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            close(null);
        }
        return result;
    }

六,事务 

package shiwu;

import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;

public class DaseDao {

    /**
     * 获取数据库连接
     * @return conn
     */
    public static Connection getConnection() {
        //读取配置文件中的4个基本信息
        Connection conn = null;
        try {
            InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("jdbc.properties");

            Properties pros = new Properties();
            pros.load(is);

            String user = pros.getProperty("user");
            String password = pros.getProperty("password");
            String ur1 = pros.getProperty("ur1");
            String driverClass = pros.getProperty("driverClass");

            //加载驱动
            Class.forName(driverClass);
            //获取连接
            conn = DriverManager.getConnection(ur1,user,password);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        return conn;
    }


    /**
     * 数据库查询
     */
    public ResultSet select(String sql, Object[]objects, Connection connection) {
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;
        try {
             preparedStatement = connection.prepareStatement(sql);
            if (objects != null && objects.length > 0) {
                for (int i = 0; i < objects.length; i++) {
                    preparedStatement.setObject(i + 1, objects[i]);
                }
            }
            resultSet = preparedStatement.executeQuery();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
        closeResource(null,preparedStatement,null);
        return resultSet;
    }



    //通用表查询返回多条数据
    public static <T> List<T> getForList(Class<T> clazz, String sql, Object... args) {
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
        try {
            conn = getConnection();
            ps = conn.prepareStatement(sql);
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i + 1, args[i]);
            }
            rs = ps.executeQuery();
            //获取结果集元数据ResultSetMetaDate
            ResultSetMetaData rsmd = rs.getMetaData();
            //通过ResultSetMetaData获取结果集中的列数
            int columnCount = rsmd.getColumnCount();

            //创建集合对象 用于储存多条数据
            ArrayList<T> list = new ArrayList<>();

            while (rs.next()) {
                T t = clazz.newInstance();
                //处理结果集一行数据中的每一列:给t对象指定的属性赋值的过程
                for (int i = 0; i < columnCount; i++) {
                    //获取列值
                    Object columValue = rs.getObject(i + 1);
                    //获取每个列的列名getColumnName
                    //获取列的别名getColumnLabel
                    String columnName = rsmd.getColumnLabel(i + 1);
                    //给cust对象指定columnName属性,赋值为columValue,通过反射
                    Field field = clazz.getDeclaredField(columnName);
                    field.setAccessible(true);//如果那个类权限不够这个方法可以打开
                    field.set(t, columValue);
                }
                list.add(t);//把赋完值的t添加到集合中
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeResource(conn, ps, rs);
        }
        return null;
    }




    /** 增删改方法 考虑事务后
     * @param sql
     * @param args
     */
    public int update(Connection connection,String sql,Object ...args){
        PreparedStatement ps = null;
        try {
            ps = connection.prepareStatement(sql);
            for (int i = 0; i < args.length; i++) {
                ps.setObject(i + 1,args[i]);
            }
           return ps.executeUpdate();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            closeResource(null,ps);
        }
        return 0;
    }






    /**
     * 关闭资源
     */
    public  void closeResource(Connection conn, Statement ps) {
        try {
            if (ps != null)
                ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (conn != null)
                conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }












    /**
     * 关闭资源
     */
    public static void closeResource(Connection conn, Statement ps, ResultSet rs) {
        try {
            if (ps != null)
                ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (conn != null)
                conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (rs != null)
                rs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }


}

package shiwu;
import java.sql.Connection;
import java.sql.SQLException;
public class Test {
    /**
     * 1,公用一个连接最后关连接
     * 2,设置不自动提交
     * 3,转账成功提交数据
     * 4,出现异常回滚数据
     * @param args
     */
    public static void main(String[] args) {
        DaseDao dao = null;
        Connection connection = null;
        try {
            dao = new DaseDao();
            connection = dao.getConnection();
            //取消事务的自动提交
            connection.setAutoCommit(false);
            String sql = "update account set balance = balance - 100 where cardno = ?";
            dao.update(connection,sql,"6216760320100101813");

            //模拟网络异常
            //System.out.println(10 / 0);

            String sql1 = "update account set balance = balance + 100 where cardno = ?";
            dao.update(connection,sql,"6230515013100527591");
            System.out.println("转账成功");
            //提交数据
            connection.commit();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            //出现异常回滚数据
            try {
                connection.rollback();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            //关闭连接之前把自动提交改过来方便后面使用
            try {
                connection.setAutoCommit(true);
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
            dao.closeResource(connection,null);
        }
    }
}

 七,分页

    /**
     * 获取分页后的页数
     * @param chouse 区域编号
     * @return 返回页数
     */
    @Override
    public int count(int chouse) {
        Connection connection = BaseDao.getConnection();
        String sql = "select count(1) from (SELECT id ,districtid,monitorTime, pm1," +
                " pm2 ,monitoringStation FROM airindex WHERE districtId = ?) biao";
        Object[] Object = {chouse};
        ResultSet resultSet = select(sql,Object, connection);
        int count = 0;
        try {
            while (resultSet.next()){
                count = resultSet.getInt(1);
            }
            if (count % 5 == 0){
                count =  count / 5;
            }else {
                count = count / 5 + 1;
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            closeResource(connection,resultSet);
        }
        return count;
    }





   /**
     * 分页处理业务逻辑
     */
    public void show(){
        int num;
        int i = 1;//记录页数
        System.out.println("请输入查询的区域编号");
        int chouse = scan.nextInt();
        int n = airindexDaoimpl.count(chouse);
        while (true){
            System.out.println("请选择页数");
            System.out.println("输入其他数字退出");
            num = scan.nextInt();
            switch (num){
                case 1:
                    num = 1;
                    i = 1;
                    break;
                case 2:
                    if (i == 1){
                        num = 1;
                    }else {
                        num = i - 1;
                        i -= 1;
                    }
                    break;
                case 3:
                    if (i == n){
                        num = n;
                    }else{
                        num = i + 1;
                        i += 1;
                    }
                    break;
                case 4:
                    num = n;
                    i = n;
                    break;
                default:
                    return;
            }
            airindexDaoimpl.getProvider(chouse,num);
            System.out.println("1,首页 2,上一页 第" + i +"页/共"+ n +"页 3,下一页 4,尾页");
        }
    }

 

Zabbix 简介、优缺点、基础原理 (8条消息) Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型Zabbix 的基础概念、原理和架构_Lee木木的博客-优快云博客_zabbix架构类型 --------------------------------------------------------------------------------------------------------------------------- 一、Zabbix 简介 Zabbix是由A... 阅读详情

相关推荐

ArcGIS基础:点要素分割线要素和提取线要素的交点

第一个实验:【点要素分割线要素】看下原始数据:下图所示,2个红点和一条绿线,用2个点去分割这条线。 找到【数据管理工具】,在找到【要素】,再找到【在点处分割线】,如下图所示。 输入线、点要素,然后在【搜索半径】里输入5米,查看一下结果。 查看结果发现,线段被分割了2段,我们查看一下原因。 发现第2个点与线有一段距离,肯定是大于5米的,所以分割没有成功。可以量测一下距离,重新输入搜索半径。 我们把搜索半径改为200米,勘察结果,被点分割了3段。 接下来使用另外一个工具【在折点处分割线】,如下所示。

yuanYW7556的博客 1万+

JAVA之JDBC连接数据库

JAVA JDBC连接数据库 SQL

qq_53312143的博客 9592

三菱PLC软件GX-Works2使用和循环左移指令实现流水灯程序

(2)方式2:双击打开全局软元件注释,软元件名称手动输入,如M辅助继电器输入M0、D寄存器输入D0,然后找到对应的寄存器输入自定义的功能名字即可。链接:https://pan.baidu.com/s/14ZaBIq4mBirIqfd9Ja3AiA。链接:https://pan.baidu.com/s/1nuQz1OgS8bmagPE8T-PBkQ。链接:https://pan.baidu.com/s/1oKGi_bdLN5HI4HYxSXEdlA。(1)方式1:将定义好变量功能的CSV文件导入即可。

panjinliang066333的博客 1万+

JDBC---Java连接数据库

JDBC如何连接数据库

weixin_45703331的博客 4266

Python与PyCharm安装配置教程:从零搭建开发环境

编程入门的第一步是搭建开发环境,而Python解释器与IDE工具的选择常让新手困惑。Python作为解释型语言,负责将代码翻译为机器指令,而PyCharm作为集成开发环境,提供代码编辑、调试与项目管理功能,两者协同工作构成高效开发基础。环境变量PATH的配置是安装过程中的关键环节,正确处理可避免“python不是内部或外部命令”的常见错误。理解pip包管理机制,则能轻松安装第三方库并管理项目依赖。从下载官方安装包到运行第一个Hello World程序,再到利用虚拟环境隔离应用依赖,这套流程适用于Window

benben 685

vue3:实现ECharts3D地图详细示例,echarts实现3D地图map3D,vue3如何利用echarts绘制3d地图立体城市省市地区分布,可视化数据大屏3D炫酷中国地图(复制源码,开箱即用)

echarts实现中国地图记录篇之3D地图,Echarts地图之——如何让地图显示出3d感,【3d地图】vue中使用echarts geo3D,echarts实现某个市3D地图展示,vue3中使用echarts实现中国地图,3D地图图表,echarts实现3D地图——map3D,数据大屏3d地图,vue3+echarts绘制中国地图,3D地图,省、市、县,【3d地图】vue3中使用echarts geo3D,echarts实现某个市3D地图展示,ECharts3D地图(详细示例——附有具体注释),echar

✅ 精选推荐文章 3670

Java数据库连接(JDBC)

JDBC Java数据库连接是使用Java语言操作关系型数据库的一套API

SummerSoul的博客 3311

五步教你用GPT-5画出国自然技术路线图!轻松节省80%画图时间(附AI提示词)

七哥给大家推荐的高校都在用的AI平台——高级学术版专业应用平台,集成了ChatGPT、Claude、Gemini、Grok等Al大模型的PLUS版本平台,包括 ChatGPT-5、4o、o3、4.1、4.5、Gemini 2.5 Pro、Claude 3.7、Claude 4、DeepSeek 满血版、Grok 3 、Grok 4等原生线路,还有国际主流的GPTs学术应用,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。

智能AI让学术科研更容易 1499

Java-JDBC连接数据库

Java JDBC的开发步骤 , 连接数据库 , 超详细讲解

rbx508780的博客 6157

万字长文:YOLOv5+RK3588 NPU多线程加速全攻略——从理论到部署的终极优化

RK3588 NPU多线程加速优化教程摘要 本教程深入讲解了如何利用线程池技术优化RK3588 NPU上的YOLO目标检测模型推理性能。RK3588内置3个NPU核心,理论算力达6TOPS,为多线程优化提供了硬件基础。教程详细解析了线程池的核心组件(任务队列、工作线程、同步机制)和实现架构,包括类设计、初始化流程、工作线程逻辑(任务获取、NPU推理、结果存储三个阶段)以及任务提交/获取机制。通过预分配模型实例、线程绑定、流量控制等优化手段,实现了从单线程28FPS到多线程120FPS的显著性能提升,为边缘A

LXY_LOVE36的博客 1101

逻辑回归:利用Python实现二分类算法

通过使用Python编写的代码,我们可以训练逻辑回归模型并进行预测。接下来,我们将实现逻辑回归算法的训练函数。训练函数将接受训练数据集X和对应的标签y,以及学习率alpha和迭代次数num_iterations。训练完成后,我们可以使用训练得到的参数theta来进行预测。在这个例子中,我们有一个包含4个样本的训练数据集X,每个样本有两个特征。在这个例子中,如果预测概率大于等于0.5,则预测为类别1,否则预测为类别0。现在,我们可以使用训练函数来训练模型。根据给定的样本x_new,预测函数将返回相应的类别。

XlltEditor的博客 326

JDBC——Java连接数据库

java连接数据库基础,JDBC相关知识点

yzl1293346757的博客 1863

S7-200SMART 中如何实现单按钮启停功能(两种方法)?

S7-200SMART 中如何实现单按钮启停功能(两种方法),Toggle库指令,状态翻转

Robot_PLC_HMI_Automation 1万+

Java数据库连接(Java Database Connectivity,JDBC)

第一个jdbc程序 回到顶部 JDBC简介 Java数据库连接(Java Database Connectivity,JDBC),是一种用于执行SQL语句的Java API,它由一组用Java编程语言编写的类和接口组成。 JDBC为数据库开发人员提供了一个标准的API,使他们能够用纯Java API来编写数据库应用程序。 使用JDBC编写的程序能够自动地将SQL语句传送给

词语大杂烩 2540

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

JDBC(Java DataBase Connectivity)数据库连接

JDBC(Java DataBase Connectivity)数据库连接 Java和数据库之间的关系: Java是面向对象的 数据库是关系型数据库 ORM映射思想:Object Relationship Mapping

嘭嘭啊啊啊的博客 333

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

JDBC? Java Database Connectivity(Java语言连接数据库)

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

途中的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JDBC (Java DB Connection)---Java数据库连接

一:JDBC (Java DB Connection)—Java数据库连接 JDBC是一种可用于执行SQL语句的JAVA API(ApplicationProgramming Interface应用程序设计接口)。它由一些Java语言编写的类和界面组成 准备工作:引入JDBC驱动程序 新建lib包,把驱动导入到模块中 JDBC操作数据库----步骤: 注册驱动(只需执行一次) 建立连接(Connection) 获取数据库操作对象(statement执行sql语句) 执行sql语句 处理结果集(Res

m0_52687456的博客 3374

JDBC(Java DataBase Connectivity)-- java数据库连接

JDBC(Java DataBase Connectivity)-- java数据库连接 一 基本概念 是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。 二 模型图 三 开发缘由 在访问不同的数据库...

qq_43892712的博客 1537

JDBC(Java DataBase Connectivity,Java 数据库连接)

JDBC(Java DataBase Connectivity,Java 数据库连接) JDBC(Java DataBase Connectivity,Java 数据库连接):sun公司为了简化和统一Java连接数据库,定义的一套规范(类,接口)。 JDBC,是用于Java编程语言和数据库之间的数据库无关连接的标准Java API。 JDBC和MySQL驱动的关系:接口(JDBC)与实现(MySQL驱动jar包)的关系 JDBC API详解 1 ...

m0_61601521的博客 686

4.Java数据库连接_1.JDBC (Java DB Connection)简介

//============================================================================     Mysql安装参考:    http://blog.sina.com.cn/s/blog_13f29f4c30102xrsz.html  Navicat for MySql远程连接linux服务器上数据库     https://...

EminentBoy的博客 1415

Java数据库连接(Java Database Connectivity,JDBC)

SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC(Java Data Base Connectivity)。这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加载具体的驱动,就可以操作数据库。

锟斤拷 1308

JDBC:java数据库连接对象

一、JDBC:即Java DataBase Connectivity的缩写。全称为Java数据库连接对象,是java程序和数据库的连接桥梁。 作用:可以为多种关系型数据库DBMS提供统一的访问方式,用Java来操作数据库。 1. JDBC API主要功能:主要干三件事,具体通过以下类/接口实现: DriverManager:管理jdbc驱动 Connection:连接 Sta...

Problem_Girl的博客 5466

JDBC(java Database Connectivity)数据库连接(客户端如何访问数据库):

JDBC(java Database Connectivity)数据库连接(客户端如何访问数据库): 主流架构(两种架构): 1、BS架构(Browser and server)浏览器服务器架构-------》web、javaweb、phpweb 2、CS架构(Client and server)客户端服务器架构---------》QQ、微信 主要是使用java程序对数据库的访问...

lzx2953763519的博客 661

JDBC(Java DataBase Connectivity) 称为Java数据库连接

⽤户输⼊的数据中有 SQL 关键字或语法并且参与了 SQL 语句的编译,导致 SQL 语句编译后的条件含义为 true,⼀直得到正确的结果。这种现象称为 SQL 注⼊。需求:实现登录功能,需要通过传⼊的登录名和密码查询数据库表中的⽤户是否存在。如果使⽤的是Statement语句来执⾏sql语句。》请输⼊⽤户名:test1》请输⼊密码:那么将登录成功。

逍遥人世欢 282

01-JDBC概念--JDBC(Java Database Connectivity:Java数据库连接):使用jdbc实现Java与数据库MySQL连接

1.JDBC(Java Database Connectivity:Java数据库连接)内容概览1.JDBC全称:Java DataBase Connectivity,SUN公司提供的一套操作数据库的标准规范;2.JDBC代表Java数据库链接,与数据库驱动的关系就如接口与实现的关系;3.更加形象描述图 2.JDBC作用与JDBC规范1)作用:它可以放任何类型的表列数据,特别是存储在关系数据库中的

Java仗剑走天涯 2054

Java-JDBC建立数据库连接(MySQL)

注意:连接数据需要先在JAVA中导入mysql的jar包。

Java小白的博客 2990
上一篇: HTML5基础,列表,表格,媒体元素,表单
下一篇: MySql----------------1代码展示
lhjava1234
博客等级 码龄4年 4粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值