实习笔记

线上实习第一天回顾(ssm+MySQL)

今天是线上实习第一天,主要完成了环境的搭建以及回顾MySQL的相关知识。

创建第一个Maven项目

具体步骤

S1、new project->创建一个webapp项目,单击next。
在这里插入图片描述
S2、在properties里添加archetypeCatalog internal,单击finish。

在这里插入图片描述
S3、对pom.xml文件进行修改,讲properties和dependencies进行替换,刷新该项目,单击右侧maven按钮,可发现已经导入需要的jar包。

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
    <!-- spring版本号 -->
    <spring.version>5.0.2.RELEASE</spring.version>
    <!-- mybatis版本号 -->
    <mybatis.version>3.2.6</mybatis.version>
    <!-- log4j日志文件管理包版本 -->
    <slf4j.version>1.7.7</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
    <c3p0.version>0.9.5.2</c3p0.version>
    <taglibs.version>1.1.2</taglibs.version>
  </properties>

  <dependencies>
    <!-- spring核心包 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-oxm</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <!-- mybatis核心包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>
    <!-- mybatis/spring包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!-- 导入java ee jar 包 -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <!-- 导入Mysql数据库链接jar包 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.18</version>
    </dependency>
    <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.2.2</version>
    </dependency>
    <!-- JSTL标签类 -->
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <!-- 日志文件管理包 -->
    <!-- log start -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>


    <!-- 数据连接池 -->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>${c3p0.version}</version>
    </dependency>

    <dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>${taglibs.version}</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>${slf4j.version}</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4j.version}</version>
    </dependency>

    <!-- 导入servlet-api/jsp -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
      <scope>provided</scope>
    </dependency>

  </dependencies>

在这里插入图片描述

MySQL知识回顾

新建一个MySQL项目

S1、创建项目,添加lib文件夹,将MySQL8.x的jar包拖入其中,单击add as library。
在这里插入图片描述
使用Navicat数据库可视化工具新建一个数据库asd和表user:
在这里插入图片描述
S2、新建一个配置项文件jdbc.properties,里面放入驱动信息。
在这里插入图片描述

url=jdbc:mysql://localhost:3306/asd?useSSL=false&serverTimezone=UTC
user=root
password=123456
driver=com.mysql.cj.jdbc.Driver

S3、新建一个JDBCUtils工具类,其中放入对数据库的一些基本操作,包括对配置项信息的读写,创建连接函数、关闭连接函数。

import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;

public class JDBCUtils {
    private static String url = null;
    private static String user = null;
    private static String password = null;
    private static String driver = null;

    //读取文件,只需要读取一次即可拿到这些值
    static{
        try {
            //创建Properties集合类
            Properties pro = new Properties();
            ClassLoader classLoader = JDBCUtils.class.getClassLoader();
            URL res = classLoader.getResource("jdbc.properties");
            String path = res.getPath();
            System.out.println(path);
            //加载文件
            pro.load(new FileReader(path));
            //获取数值
            url = pro.getProperty("url");
            user = pro.getProperty("user");
            password = pro.getProperty("password");
            driver = pro.getProperty("driver");

            Class.forName(driver);
        }catch(ClassNotFoundException e){
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }
    }

    //获取连接
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,user,password);
    }
    //释放资源
    public static void close(ResultSet rs,Statement stmt,Connection conn){
        if(rs!=null){
            try{
                rs.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(stmt!=null){
            try{
                stmt.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
        if(conn!=null){
            try{
                conn.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }

    }
}

S4、新建一个类jdbc_test,完成数据查询,返回查询是否成功。

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

public class jdbc_test {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
//        Class.forName("com.mysql.cj.jdbc.Driver");
//        //获取数据库连接对象
//        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/asd?useSSL=false&serverTimezone=UTC","root","123456");
//        String sql = "update user set name = '啦啦' where id =2";
//        Statement stmt = conn.createStatement();
//        //执行sql,并接受返回结果。
//        int count = stmt.executeUpdate(sql);
//        System.out.println(count);
//        //释放资源
//        stmt.close();
//        conn.close();
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入用户名:");
        String username = scanner.nextLine();
        System.out.println("请输入密码:");
        String password = scanner.nextLine();
        boolean loginflag = new jdbc_test().login(username,password);
        if(loginflag){
            System.out.println("成功");
        }else{
            System.out.println("失败");
        }
    }
    public boolean login(String username,String password){
        if(username==null||password==null){
            return false;
        }
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try{
            conn = JDBCUtils.getConnection();
            //定义sql
            String sql = "select * from user where name = '"+username+"'and password='"+password+"'";
            //获取执行sql对象
            stmt = conn.createStatement();
            rs = stmt.executeQuery(sql);
            return rs.next();
        }catch(SQLException e){
            e.printStackTrace();
        }finally{
            JDBCUtils.close(rs,stmt,conn);
        }
        return false;
    }
}

一些知识点

为什么使用properties文件

这个文件作为一些参数的存储,代码就可以灵活一点。通俗点讲就相当于定义一个变量,在这个文件里面定义这些变量的值,在程序里面可以调用这些变量,好处就是,如果程序中的参数值需要变动,直接来改这个.property文件就可以了,不用在去修改源代码。
Java中的Properties类详解

JDBC驱动

JDBC简介

JDBC是用于运行sql语句并从数据库中获取新新的java API.

JDBC是用来(让我们的程序)通过网络来操作数据库的,作用非常重要;JDBC技术也是Java核心技术之中的一个。

是使用JDBC驱动程序訪问数据库的首选方式

通过JDBC操作数据库——步骤:

第1步:注冊驱动 (仅仅做一次)

第2步:建立连接(Connection)

第3步:创建运行SQL的语句(Statement)

第4步:运行语句

第5步:处理运行结果(ResultSet)

第6步:释放资源

使用JDBC第一步:载入驱动

注冊驱动有三种方式:

1. Class.forName(“com.mysql.jdbc.Driver”);

推荐这样的方式,不会对详细的驱动类产生依赖

2. DriverManager.registerDriver(com.mysql.jdbc.Driver);

会对详细的驱动类产生依赖

3. System.setProperty(“jdbc.drivers”, “driver1:driver2”);
尽管不会对详细的驱动类产生依赖;但注冊不太方便。所以非常少使用

使用JDBC第二步:建立连接

通过Connection建立连接,Connection是一个接口类。其功能是与数据库进行连接(会话)。

建立Connection接口类对象:

Connection conn =DriverManager.getConnection(url, user, password);

当中URL的格式要求为:

JDBC:子协议:子名称//主机名:port/数据库名?属性名=属性值&…

如:"jdbc:mysql://localhost:3306/test“

user即为登录数据库的username,如root

password即为登录数据库的密码,为空就填””

使用JDBC第三步:创建运行对象

运行对象Statement负责运行SQL语句。由Connection对象产生。

Statement st = connection.createStatement();

Statement接口类还派生出两个接口类PreparedStatement和CallableStatement,这两个接口类对象为我们提供了更加强大的数据訪问功能。

PreparedStatement能够对SQL语句进行预编译,这样防止了 SQL注入 提高了安全性。

PreparedStatement ps=connection.prepareStatement( "update user set id=? where username=?”); ————sql语句中庸 ? 作为通配符,变量值通过参数设入:ps.setObject(1, object);

而且预编译结果能够存储在PreparedStatement对象中。当多次运行SQL语句时能够提高效率。

作为Statement的子类,PreparedStatement继承了Statement的全部函数。

CallableStatement接口

CallableStatement类继承了PreparedStatement类,他主要用于运行SQL存储过程。

在JDBC中运行SQL存储过程须要转义。

JDBC API提供了一个SQL存储过程的转义语法:

{call[,, …]}

procedure-name:是所要运行的SQL存储过程的名字

[,, …]:是相相应的SQL存储过程所须要的參数

使用JDBC第四步:运行SQL语句

运行对象Statement 或 PreparedStatement 提供两个经常使用的方法来运行SQL语句。

executeQuery(Stringsql),该方法用于运行实现查询功能的sql语句。返回类型为ResultSet(结果集)。

如:ResultSet rs =st.executeQuery(sql);

executeUpdate(Stringsql),该方法用于运行实现增、删、改功能的sql语句,返回类型为int,即受影响的行数。

如:int flag = st.executeUpdate(sql);

使用JDBC第五步:处理运行结果

ResultSet对象

ResultSet对象负责保存Statement运行后所产生的查询结果。

结果集ResultSet是通过游标来操作的。

游标就是一个可控制的、能够指向随意一条记录的指针。

有了这个指针我们就能轻易地指出我们要对结果集中的哪一条记录进行改动、删除,或者要在哪一条记录之前插入数据。一个结果集对象中仅仅包括一个游标。

另外,借助ResultSetMetaData ,可以将数据表的结构信息都查出来。

ResultSetMetaData rsmd= resultSet.getMetaData();

使用JDBC 第六步——释放资源

Mysql URL连接参数

MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL

    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/test";

MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL

    static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";

具体参数详情请见
1、Mysql URL连接参数useSSL、serverTimezone 相关问题
2、useUnicode=true&characterEncoding=UTF-8 的作用

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值