数据库(day04)JDBC、DBCP

04蚂蚁-源码分析——5.纯手写数据库连接池 数据库连接池原理 基本原理 在内部对象池中,维护一定数量的数据库连接,并对外暴露数据库连接的获取和返回方法。 如外部使用者可通过getConnection方法获取数据库连接,使用完毕后再通过releaseConnection方法将连接返回,注意此时的连接并没有关闭,而是由连接池管理器回收,并为下一次使用做好准备。 线程池作用 ①资源重用 由于数据库连接得到重用,避免了频繁创建、释放连接引起的大量性... 阅读详情

JDBC: 

概念:JDBC(Java Database Connectivity)。但它只是规范,不做具体实现。于是数据库厂商又根据JDBC标准,实现自家的驱动Driver。如:mysql驱动com.mysql.cj.jdbc.Driver,Oracle的驱动oracle.jdbc.OracleDriver。有了这套解决方案,java就可以访问数据库中的数据了。


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SC5BTs9w-1623158031193)(RackMultipart20210608-4-1h5920r_html_10fb1dcdf23d273.png)]

使用步骤

1.找到jar包,并r

2.利用工具类,通过java连接数据库(用户名、密码、数据库名、数据库端口号)

3.通过java程序,发起sql语句

4.通过程序处理结果

package cn.tedu.jdbc;

import java.sql.*;
import java.util.Arrays;

public class Test1 {
    public static void main(String[] args) throws Exception {
        //1.注册驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //2.获取数据库的连接
        //String url="协议://数据库的服务器的ip地址:端口号/数据库名";
        String url="jdbc:mysql://localhost:3306/cgb2112";
        Connection c=DriverManager.getConnection(url,"root","root");
        //3.获取传输器
        Statement s = c.createStatement();
        //4.执行sql--查询部门表的所有数据
        ResultSet r = s.executeQuery("select * from dept");
        System.out.println("连接成功");
        //5.处理结果
        while (r.next()){
            int deptno=r.getInt(1);
            String s1 = r.getString(2);
            String s2 = r.getString(3);
            System.out.print(deptno+"\t");
            System.out.print(s1+"\t");
            System.out.println(s2);
        }
        //6.关闭资源
        r.close();
        s.close();
        c.close();
    }
}

SQL攻击:

***添加数据时的格式:'"+s1+"'(单引号 双引号 加号 内容 加号 双引号 单引号)

当用户输入特殊符号('#)时,不需要密码登录

产生原因:#在sql中表示注释,相当于后面语句被注释

package cn.tedu.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) throws Exception {
        System.out.println("请输入用户名:");
        String s = new Scanner(System.in).nextLine();
        System.out.println("请输入密码:");
        String s1 = new Scanner(System.in).nextLine();
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/cgb2112?characterEncoding=utf8";
        Connection c = DriverManager.getConnection(url, "root", "root");
        Statement d = c.createStatement();
        String sql="select * from user where name='"+s+"' and pwd='"+s1+"'";
        ResultSet r = d.executeQuery(sql);
        if(r.next()){
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }
    }
}

执行结果:
请输入用户名:
王子豪'#
请输入密码:

登录成功

处理方法:使用新的传输器prepareStatement

package cn.tedu.jdbc;

import java.sql.*;
import java.util.Scanner;

public class Test5 {
    public static void main(String[] args) throws Exception {
        System.out.println("请输入用户名:");
        String s = new Scanner(System.in).nextLine();
        System.out.println("请输入密码:");
        String s1 = new Scanner(System.in).nextLine();
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/cgb2112?characterEncoding=utf8";
        Connection c = DriverManager.getConnection(url, "root", "root");
        //Statement d = c.createStatement();
        String sql="select * from user where name=? and pwd=?";
        //新的传输器
        PreparedStatement p = c.prepareStatement(sql);
        //给Sql绑定参数,给第一个问号设置s的值,给第二个问号设置s1的值
        p.setString(1,s);
        p.setString(2,s1);
        ResultSet r = p.executeQuery();
        if(r.next()){
            System.out.println("登录成功");
        }else{
            System.out.println("登录失败");
        }
    }
}
执行结果:
请输入用户名:
王子豪'#
请输入密码:

登录失败

封装:用于代码去重

package cn.tedu.jdbc;

import java.sql.*;

public class Until {
    public static Connection get() throws Exception {
        Class.forName("com.mysql.cj.jdbc.Driver");
        String url="jdbc:mysql://localhost:3306/cgb2112?characterEncoding=utf8";
        Connection c = DriverManager.getConnection(url,"root","root");
        return c;
    }
    public static void close(Connection c, ResultSet r, PreparedStatement p){
        {
            if(r!=null){
                try {
                    r.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(p!=null){
                try {
                    p.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if(c!=null){
                try {
                    c.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
        }
    }
}
package cn.tedu.jdbc;

import java.sql.*;
import java.util.Scanner;

public class Test8 {
    public static void main(String[] args) {
        Connection c=null;
        ResultSet r=null;
        PreparedStatement p=null;
        try {
            c = Until.get();
            String sql="select * from dept where deptno=?";
            p= c.prepareStatement(sql);
            System.out.println("请输入id:");
            int i = new Scanner(System.in).nextInt();
            p.setObject(1,i);
            r = p.executeQuery();
            while (r.next()){
                Object o1 = r.getObject(1);
                Object o2 = r.getObject(2);
                Object o3 = r.getObject(3);
                System.out.print(o1+"\t");
                System.out.print(o2+"\t");
                System.out.println(o3+"\t");
                System.out.println("查找成功");
            }
        }catch (Exception e){
            System.out.println("查找失败");
        }finally {
            Until.close(c,r,p);
        }
    }
}

 DBCP

  • DataBaseConnectionPool: 数据库连接池
  • 作用: 可以将数据库连接重用,避免频繁开关连接导致的资源浪费

如何使用数据库连接池?

1.从苍老师文档服务器中找到连接池的依赖,导入pom.xml中

2.代码:

package cn.tedu;

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class Demo01 {
    public static void main(String[] args) throws SQLException {
        //创建数据库连接池
        DruidDataSource dds=new DruidDataSource();
        //设置数据库连接信息
        dds.setUrl("jdbc:mysql://localhost:3306/empdb?characterEncoding=utf8");
        dds.setUsername("root");
        dds.setPassword("root");
        //设置初始连接数量
        dds.setInitialSize(3);
        //设置最大连接数量
        dds.setMaxActive(5);
        //从连接池对象中获取连接
        Connection conn=dds.getConnection();
        System.out.println("连接"+conn);
    }
}

代码封装

package cn.tedu;

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class DButils {
    private static DruidDataSource dds;
    static{
        //创建数据库连接池
        dds=new DruidDataSource();
        //设置数据库连接信息
        dds.setUrl("jdbc:mysql://localhost:3306/empdb?characterEncoding=utf8");
        dds.setUsername("root");
        dds.setPassword("root");
        dds.setInitialSize(3);//设置初始连接数量
        dds.setMaxActive(5); //设置最大连接数量
    }
    public static Connection getConn() throws SQLException {
        //从连接池对象中获取连接
        Connection conn=dds.getConnection();
        System.out.println("连接"+conn);
        return conn;
    }
}

查找功能的实现

package cn.tedu;

import java.sql.*;

public class Demo02 {
    public static void main(String[] args) {
        try (Connection conn = DButils.getConn()){
            Statement s = conn.createStatement();
            ResultSet rs = s.executeQuery("select name from emp");
            while(rs.next()){
                String s1 = rs.getString(1);
                System.out.println(s1);
            }

        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
}

注册功能实现

package cn.tedu;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
//注册
public class Demo03 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.nextLine();
        System.out.println("请输入密码");
        String password = sc.nextLine();
        try(Connection conn = DButils.getConn();) {
            Statement s = conn.createStatement();
            s.executeUpdate("insert into user values(null,'" + username + "','" + password + "',null)");
            System.out.println("注册完成");
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

    }
}

登录功能实现

package cn.tedu;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
//登录
public class Demo04 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入用户名");
        String username = sc.nextLine();
        System.out.println("请输入密码");
        String password = sc.nextLine();
        try(Connection conn = DButils.getConn()) {
            Statement s = conn.createStatement();
            ResultSet re = s.executeQuery("select count(*) from user where username='" + username + "' and password='" + password + "'");
            //结果集对象游标默认没有指向任何一条数据
            re.next();
            int count = re.getInt(1);
            if(count>0){
                System.out.println("登录成功");
            }else{
                System.out.println("登陆失败");
            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }
    }
}

SpringAspectJ介绍、切入点表达式、Aspect案例xml配置、Aspect案例注解配置、JdbcTemplate简单使用、DBCP、C3P0配置、db.properties配置-day04 目录第一节 AspectJ1.1 AspectJ简介 第一节 AspectJ 1.1 AspectJ简介 AspectJ是一个基于Java语言的AOP框架 Spring2.0以后新增了对AspectJ切点表达式支持 @AspectJ 是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面 新版本Spring框架,建议使用AspectJ方式来开发AOP 主要用途:自定义开发 ... 阅读详情

相关推荐

JDBC驱动包(oracle和mysql)

里面包括JDBC与mysql的驱动包和oracle的驱动包,我一直在用的

druid比mysql优势_数据库连接池性能比对(hikari druid c3p0 dbcp jdbc)

https://blog.youkuaiyun.com/qq_31125793/article/details/51241943背景对现有的数据库连接池做调研对比,综合性能,可靠性,稳定性,扩展性等因素选出推荐出最优的数据库连接池。NOTE: 本文所有测试均是MySQL库测试结论1:性能方面hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP...

weixin_29474217的博客 614

一篇讲透:豆包、元宝、DeepSeek、Kimi、WorkBuddy,职场里到底怎么分工

这篇文章深入分析了当前主流AI工具(WorkBuddy、豆包、腾讯元宝、DeepSeek、Kimi)的特点和使用场景,帮助读者根据不同工作需求选择合适的AI助手。核心观点包括: AI工具各有所长:豆包适合快速创作初稿,元宝擅长信息检索整理,DeepSeek强于逻辑分析,Kimi专精文本处理,WorkBuddy则更适合任务推进和成果交付。 使用前需明确需求:是要创意发散、信息整理,还是任务执行?不同阶段应选用不同工具组合。 提供了6个具体职场场景的解决方案,包括文章创作、课程设计、会议纪要等,并给出详细的操作

weixin_39284145的博客 1万+

com.mysql.cj.jdbc.Driver这个驱动类

mysql5及之前的版本使用的是旧版驱动"com.mysql.jdbc.Driver", mysql6以及之后的版本需要更新到新版驱动,对应的Driver是"com.mysql.cj.jdbc.Driver" com.mysql.cj.jdbc.Driver 这个类是数据库厂商实现的JDBC一套接口里的一个类,称之为“驱动类”,它的继承树如下所示:     ————com.mysql.jd...

flybone7的博客 5万+

CLCD土地覆盖数据在ArcGIS中的实战应用:从导入到空间分析的完整指南

本文详细介绍了CLCD土地覆盖数据在ArcGIS中的实战应用,从数据导入到空间分析的完整流程。涵盖坐标系转换、数据质量检查、土地利用变化检测等核心技术,并分享城市扩张模拟和跨数据集融合等高级应用技巧,帮助研究者高效利用这一权威数据集进行环境监测和城市规划。

weixin_29292535的博客 595

领域驱动设计整理——实体和值对象设计

实体引言在领域驱动设计里,实体的设计可以说是通用语言的核心,也是最开始在模型划分中需要考虑的。怎么样设计实体和怎么样划分限界上下文同样重要。实体的概念就是要保证通用语言的完整性。领域驱动让设计实体的关注点从数据的属性和表的关联转化到了富有行为的领域概念上。 实体是具有可变性的,这是一个和值对象比较明显的区分,也即实体是可以持续得变化,持续得修改,并且具有唯一的标识。在设计实体的时候需要跳出CRUD的

马猴烧酒└(┐卍^o^)卍ドゥルルル~楪詩月「YUZURIHA SHIZUKI」 2万+

day10:JDBC、SQL注入、防止注入、数据库插入时间、IDEA连接数据库、ACID原则、JDBC事务、连接池、dbcp、c3p0、druid,dbutil工具类、springJDBC

10、JDBC(重点) 驱动:声卡、显卡、数据库 10.1数据库驱动 我们的程序会通过数据库驱动,和数据库打交道 10.2、JDBC SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC这些规范的实现由具体的厂商去做~对于开发人员来说,我们只需要掌握JDBC接口的操作即可! java.sql javax.sq 导入mysql-connector-java-5.1.49 10.3、第一个JDBC程序 1.建立数据库 CR

m0_45209551的博客 1324

Vivado2023.2与Vitis协同开发:从Hello World到BOOT.BIN的完整流程解析

本文详细解析了使用Vivado 2023.2与Vitis协同开发ZYNQ/MPSoC平台的完整流程。从环境安装、硬件设计、软件编写、在线调试到生成独立的BOOT.BIN启动文件,手把手指导开发者完成从Hello World到系统固化的全步骤,并提供了常见问题的避坑指南,帮助初学者快速掌握软硬件协同开发的核心技能。

weixin_29197051的博客 177

day04、JDBC

具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。○ Statement用于执行静态SQL语句,在执行的时候,必须指定一个事先准备好的SQL语句,并且相对不安全,会有SQL注入的风险。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。

qq_51017451的博客 730

NC65实现Restful接口开发及调试

NC65实现Restful接口开发及调试

linzhongshu的专栏 2145

obdumper和obloader迁移OceanBase业务库(一):实施手册

⭐️ 要求导出一致性数据时,建议在导出数据前,手动触发一次合并,在合并成功后再重新导出数据。:统计业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:检查业务数据库下的所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…:统计单个模式下所有业务对象清单(表/索引/分区/包/存储过程/同义词/序列/…如果单张表的数据量太大,会导出为多个文件,文件命名会加上数字后缀。该过程会导出所有表的定义、以及定义在表上的索引定义。如果有多种数据库对象,会导出到不同的子路径下。

Sebastien23的博客 1024

Day—04 JDBC

1 程序语言有多种,比如Java、Python、C/C++等,程序语言如果想执行SQL语句,也必须要先与数据库进行连接,数据库也有多种,比如MySQL、Oracle、SQL Server等。 不同的程序语言去连接不同的数据库,如果没有一个统一的标准或者规范,肯定是相当混乱的。Java语言对此的解决方案就是JDBC。 JDBC定义了一套规范标准,它对应的是各种接口与抽象类(通常对应java.sql包下面的各种类与接口),具体实现交给各数据库厂商去完成,MySQL的有自己的实现类并打成jar包发布,供程序

t17246的博客 156

工作之余的随想:AI 会终结 SAP 顾问吗?

本文是笔者工作之余的一些胡思乱想。昨晚(准确的说是今日凌晨),我又熬了一个夜。没办法,接到一个影响客户项目上线的紧急 incident,花了我好长时间,竟然一点头绪都没有。苦苦思索的过程,时间过得飞快。一转眼就晚上11:30 了。要说我 2007 年还在研三实习期间,就进入了 SAP 行业,到今天已经摸爬滚打 18 年了,按理说也算身经百战了,可以说处理过很多 SAP 客户使用系统时遇到的各种稀奇古怪的问题。但即便这样,我也时常在工作中遇到一开始感到无从下手的问题。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1264

【沉浸式求职学习day33】【规范化数据库设计、JDBC、数据库连接池详解】【一篇全是经典代码~】

规范化数据库设计、JDBC、数据库连接池详解

贺函不是涵的博客 1709

PyTorch深度学习实战(25)——从零开始实现Mask R-CNN实例分割

Mask R-CNN 是一种在目标检测任务中引入了语义分割的强大框架,通过在 Faster R-CNN 基础上进行扩展,添加了额外的分支网络,不仅可以准确地检测对象的位置和类别,还可以生成每个实例的精确像素级别的语义分割掩码。其模块化的设计可以轻松地应用于不同的任务和数据集,并且可以通过添加更多的分支进行功能扩展,如实例关键点检测等。

盼小辉丶的博客 1万+

深度学习工具包 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")

MySQL:JDBC 详细内容

介绍了 JDBC 的详细内容

taiyang3285的博客 729

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JDBC

JDBC * 1.JDBC: java语言操作各种数据库的技术 * JDBC由一堆接口和类组成 * 类: DriverManger,用于注册驱动 * 接口: * Connection:数据库连接类的根接口 * Statement:数据库语句执行类的根接口 * ResultSet:结果集类的根接口 * 以上接口的实+现类,在驱动包中 * 2.JDBC和具体数据库的驱动,他们

java从白纸到废纸 293

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MySQL Day11 再谈事务与DBCP、C3P0数据库连接池的配置

1 再谈事务 一个事务本质在于:其内部的功能要么都成功,要么都失败! 之前的blog中谈过事务,那一篇是在Sequel Pro中测试的,此处重点谈论如何用Idea来操作事务! ACID原则 原子性:要么全部完成,要么都不完成 一致性:总数不变 隔离性:多个进程互不干扰 持久性:一旦提交不可逆,持久化到数据库内 隔离性的问题: 脏读:一个事务读取了另一个没有提交的事务 不可重复读:在同一个事务内...

Targetu 未来可期 321

day04-->JDBC连接池、配置文件

JDBC(四)-连接池、配置文件 配置文件 每次进行JDBC操作,都要进行加载驱动管理器和获取connection连接,他们值都是固定的,是不是很烦,另外目前信息存储在MySQL数据库中,但在开发和部署时有可能使用不同的数据库,也可能因为客户的需求而更换数据库产品。此时的做法有何弊端呢? 让用户脱离程序本身修改相关的变量设置–使用配置文件 后缀名为.properties 格式是“键=值”格式 使用#来注释 一定要放在src目录下 常见方法 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来

zpccc的博客 272

数据库 day04

数据库连接池DBCP DataBaseConnectionPool, 数据库连接池 作用: 将连接重用,从而提高执行效率 如何使用数据库连接池? 注册登录 创建用户表 use empdb; create table user(id int primary key auto_increment,username varchar(50),password varchar(50),nick varchar(50))charset=utf8; select count(*) fro...

ClearDream__的博客 217

jdbc笔记doc

文章目录一、JDBC概述JDBC规范(掌握四个核心对象):开发一个JDBC程序的准备工作:二、开发一个JDBC程序(重要)实现查询数据库中的数据显示在java的控制台中1 、创建数据库表,并向表中添加测试数据2、创建java project项目,添加数据库驱动(mysql-connector-java-5.0.8-bin.jar)3、实现JDBC操作三、JDBC常用的类和接口详解1、java.sq...

whaleluo的博客 955

JDBC连接池和DBUtils工具包

1、JDBC连接池 连接池即为存放多个数据库连接的连接对象集合,常用的连接池由DBCP连接池和C3P0连接池,无论是哪种连接池,都必须实现Java提供的java.sql.DataSource接口,该接口主要包含的方法为getConnection();方法,即实现该接口是为了统一获取数据库连接对象的方法名。 2、DBCP连接池 DBCP:Apache推出的Database Connection...

weixin_42577116的博客 344

day04_JDBC基础

JDBC:Java DataBase Connectivity  Java数据库连接技术 1.JDBC的组成: 1.提供了应用的接口(API) 2.驱动程序管理器(DriverManager) 3.数据库的驱动程序 组成架构图 JDBC的实现步骤: 1.创建Java工程 2.在工程的根目录下新建一个文件夹,取名为lib

Sunny369888的博客 536

javaweb day13

数据库链接池与DBUtils工具 1.什么是数据库连接池 1.1 DataSource 接口 1.3DBCP数据源 2.通过BasicDataSource类直接创建数据源对象 1.需要手动给数据源对象设置属性值,然后获取数据库连接对象 2.运行main()方法后,程序的运行结果如图: 3通过读取配置文件创建数据源对象 在chapter10项目的src目录下创dbcpconfig.properties 2.cn.itcast.chapter10.example,并在该包下创建一个example02 类,该类

m0_55689307的博客 258

第十章 day13

文章目录数据库链接池与DBUtils工具1.什么是数据库连接池1.1 DataSource 接口1.3DBCP数据源2.通过BasicDataSource类直接创建数据源对象1.需要手动给数据源对象设置属性值,然后获取数据库连接对象2.运行main()方法后,程序的运行结果如图:3通过读取配置文件创建数据源对象1. 在chapter10项目的src目录下创dbcpconfig.properties2.cn.itcast.chapter10.example,并在该包下创建一个example02 类,该类采用手

qq_55689246的博客 867

spring_day04_JDBC模板

JdbcTemplate 概述 spring框架中提供的一个对象,是对原始Jdbc API对象的简单封装 执行增删改查操作,类似于QueryRunner  spring-jdbc-4.24.RELEASE.jar(jdbc模板) 配置数据源 导入jar包 编写配置文件 加载外部属性文件 方式1 &lt;bean class="org.springframework.be...

Jesson_study 324
上一篇: 数据库day(03)事务、约束、多表联查
下一篇: 前端(day01)html
五八个
博客等级 码龄8年 638粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值