吉林大学数据库应用程序开发知识点总结

吉林大学数据库期末考试试卷讲解 给出几套期末真题及解析,给出复习建议。 阅读详情
AI摘要

本文总结了数据库应用程序开发中关键知识点,包括JDBC连接、SQL语句、PreparedStatement使用、GUI组件如JOptionPane和JTable,以及大对象处理、事务管理与异常处理等,适合数据库技术学习者参考。

吉林大学数据库应用程序开发知识点总结

这是我在复习数据库应用程序开发的时候记录的笔记。
补充:我们这一年的考试题(2021级在2023年12月29考试)。

试卷共计两道题。第一题是根据实验报告出的,每道题基本上涉及一个知识点;第二题是对于吉祥码的分析题,也是以数据库为核心,操作为辅助的题目。整体难度不大,知识点都在下文提及。

知识点1 学习如何连接数据库

1.1 加载数据库驱动程序

Class.forName("COM.ibm.db2.jdbc.app.DB2DRIVER");

1.2 创建数据库的连接

String url = "jdbc:db2:samle";
String userid = "db2admin";
String passwd = "db2admin";
// 对数据库进行连接
Connection sample =
    DriverManager.getConnection(url,userid,passwd);

1.3 结果集ResultSet和Statement语句

对于完整的SQL语句(需要符合SQL语法)可以直接执行。

String sql = "SELECT * FROM JLU.EMPLOYEE WHERE EMPNO = 000010";
Statement stmt = sample.createStatement();
ResultSet res = stmt.executeQuery(sql); 

1.4 标签标记PreparedStatement语句

这个语句有缺省处理的效果。可以利用?在sql语句中制造缺省值,但是在执行前利用preparedstatement进行补充。

String sql = "SELECT * FROM JLU.EMPLOYEE WHERE EMPNO = ?";
PreparedStatement pstmt = sample.prepareStament(sql);
pstmt.setString(1,deptno);//带标签标记的deptno要在前面获取到
// 如果需要补充的是int类型
// pstmt.setInt(1,deptno);
// 有几个?就需要补充几个标记
// 标记的顺序和?相同
int row = pstmt.excuteUpdate();

1.5 将结果存储到结果集

while(rs.next())
{
	String data1 = rs.getStirng(1);
	String data2 = rs.getStirng(2);
	String data3 = rs.getStirng(3);
	/*
		从1开始获取数据
		函数里面的逻辑可以自己rewrite
	*/
}
  • rs.getString(n)读取String类型

  • rs.getInt(n)读取Int类型

1.6 关闭jdbc对象

  1. 关闭ResultSet
  2. 关闭PreparedStatement
  3. 关闭Connection
if(rs != null)
{
	try{
		rs.close();
	}catch(SQLException ee){
		ee.printStackTrace();
	}
}
if (pstmt != null)
{
	try{
		pstmt.close();
	}catch(SQLException ee){
		ee.printStackTrace();
	}
}
if (sample != null)
{
	try{
		sample.close();
	}catch(SQLException ee){
		ee.printStackTrace();
	}
}

注意:关闭jdbc链接并不代表已经提交了事务。

知识点2 GUI窗口交互

2.1 使用JOptionPane进行提示输入交互

  • 使用showMessageDialog进行消息提示
JOptionPane.showMessageDialog(null,"已经更新的数据"+emptno);
  • 使用showInputDailog进行输入对话,会将消息存储在input中
String input = JOptionPane.showInputDialog("请输入一个emptno\n");

2.2 使用JTable创建数据库表格

这个JTable我们给出的方法比较老了。

我看ChatGPT给出的方案是:先建立一个DefaultTableModel dataModel;将数据存储到这个model中,然后再将model添加到JTable中。每次刷新dataModle,不然每次添加数据再重新创建一个JTable效率太低,而且太占内存了。

String[][] lineNames = {"编号","名","中间名","姓"};
Object[][] line = new Object[4][4]; 
// 使用Obeject对象只是引用,并不占据内存
dataModel = new DefaultTableModel(data,lineNames);
Jtable jt = new JTable();
jt.setModel(dataModel); 

刷新的话,可以先更新line 数组里面的数据,然后

importData();
dataModel.setDataVector(line,lineNames); 
// 更新DataModel就好了

Excle应该就是用这种方法开发的。

2.3 获取JTable中的数据

String cellValue = (String) tableModel.getValueAt(row, column);

知识点3:插入,删除,修改操作

  • 单行插入
String sql_insert = "insert into templ (empno,firstname,midname,lastname)";
  • 多行插入
String sql_insert = "insert into templ(empno,firstname,midname,lastname)";
int count = num;// 用户想插入的行数
for (int i=0; i<count; i++)
{
    sql = sql +",(?,?,?,?)";
}
  • 通过子查询插入
String find_insert = "insert into templ(empno,firstname,midname,lasername)";
String select_query = "select * from JLU.emplyee where ? = ?";
String find_insert = find_insert + select_query;
  • 实现对结果集的任意行、任意列的修改

需要知道这个实现的思路就是先导入到物理存储上,然后对物理存储修改,再写入数据库。

这过程中有对锁思想的实现。(U锁的获取,老师的视频课里面讲解了)

实现方法 1:

String str = "";
String selectForUpdate = "select * from employee for update";
// 注意 for update语句。这条语句作为sql是不符合规则的,但是jdbc会知道,你会update
int finalRow = 0;
int finalColumn = 0;
int rNum = table.getSelectRow(); // 得到表格中被选中的行数
int cNum = table.getSelectColumn(); // 得到表格中被选中的列数
stmt = smple.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); //创建可滚动,可更新的结果集
ResultSet select_rs = stmt.excutQuery(selectforupdate);
for (int i=0; i<finalRow; i++)
    selct_rs.next();
if(select_rs.next())
    select_rs.updateObject(finaleColumn,str);
select_rs.updateRow(); // 将结果落实到数据库(事务提交)

实现方法 2:

String str = "";
String selectForUpdate = "select empno,firstname,lastname,edlevel,job from jlu.employee for update";
int finalRow = 0;
int finalColumn = 0;
int rNum = table.getSelectRow(); // 得到表格中被选中的行数
int cNum = table.getSelectColumn(); // 得到表格中被选中的列数
stmt = smple.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
ResultSet select_rs=stmt.executeQuery(selectForUpdate);
select_rs.absolute(finalrow+1); //直接定位到第finalrow+1行
//select_rs.absolute(lastFianlrow); // 我记得有这个函数,就是定位到最后一行+1
select_rs.updateObject(finalcolmn+1,finalstr);
select_rs.updateRow();

知识点4:wasNull()方法

结果集返回的结果,如果使用String name = rs.getString(1);

再去判断name != null 的时候,判断的实际上是String类型的null,再String中“\0”就是空。

这样判断已经不是原来的rs是否为空了。

所以采用原有的rs.wasNull()可以判断是否读到的数据是空。

总结:就是wasNull()可以检查数据到底有没有读到。因为有时候那里的数据本来就是空,读到之后无法进行判断。例如我们单行插入的时候,很多数据并没有写进数据库。

try{
    PreparedStatement stmt = "";
    String sql = "UPDATE TEMPL SET PHONENO = ? WHERE EMPNO = '000110'";
    stmt = con.prepareStatement(sql);
    if (some condition)
    {
        stmt.setString(1,null);
        // stmt.setNUll(1,java.sql.Type.STRING);
    }else{
        stmt.setString(1,newPhone);
    }
    int updateCount = stmt.excuteUpdate();
    if (updateCOunt != 1)
    {
        JOptionPane.showMessageDialog(null,"报错");
    }
}catch(SQLException ex){
    ex.printStackTrace();
}

知识点5:结果集的进一步学习

5.1 使用last, previous,first遍历

String sql = "select * from staff";
PreparedStatement stmt = sample.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
rs.last(); // 最后一条
rs.previous(); // 向前遍历
rs.first(); // 第一个
rs.next(); // 下一个
rs.absolute(position); // 绝对位置position

5.2 批处理

Statement对于批处理留下了两个接口

  • void addBatch(String sql)

    相当于把sql添加到batch中一个一个执行。

  • int[] executeBatch()

    执行batch中的sql命令

Statement stmt = sample.createStatement();
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
int[] updateCounts = stmt.executeBatch(); // 返回的是影响数据库中行数的更新计数
sample.commit(); //提交事务

5.3 获取数据库结构

DatabaseMetaData dbmd = sample.getMetaData(); // 获取数据库结构
String[] tableTypes = {"TABLE","VIEW"};
ResultSet rs = dbmd.getTables(null,"UDBA","%",tableTypes);
/*
dbmd.getTables(String catalog,String schema,String tableName,String[] types)
String[] types想要返回何种表的数组
只会返回10字段的描述信息。
*/

知识点6:大对象(BLOB类型)的读取

6.1 blob对象作用

blob存放二进制字符串,适用于存放UDT(User-defined Distinct Types),因此我们可以存放图片,声音等等数据。blob对象取决于varchar的大小,varchar最大是2GB,因此blob, clob, dblob 的大小都限制在2GB。

一般来说,为了提高性能,数据库需要专门创建一个用于存放大字段的表空间,数据表的大字段列应该将数据存放于对应的表空间中,这是因为不经过内存(缓冲池)直接读取的。

6.2 BLOB类型的赋值

setBinaryStream(int n, java.io.InputStream x, int length)
// n指示参数编号的int
// InputStream对象
// length指示字节数的int

6.3 查询图片

代码逻辑:

先将Blob对象读取到rs结果集中,在用getBinaryStream()将Blob对象转换成二进制流对象inputStream;

之后将inputStream流对象通过.read()方法读到int c中,将c通过OutPutStream写到OutPutFile中。

Statement stmt = sample.createStatement();
ResultSet rs = st.excuteQuery("SELECT IMAGE FROM EMPLYEE");
while(rs.next())
{
    Blob blob = (Blob) rs.getBlob(1); // 读取Blob
    // Blob转换为数据流
    java.io.InputStream inputStream = blob.getBInaryStream(); 
    // 定义要写入的文件
    File fileOutPut = new File(path);
    FileOutPutStream fo = new FileOutPutStream(fileOutPut);
    int c;
    while((c = inputStream.read())!= -1)
        fo.write(c);
	fo.close();
}

6.4 插入图片

PreparedStatement pstm = conn.prepareStatement("insert into emp_photo where emptno = ?");
pstm.setString(emptnum);
File file = new File(path);
BufferedInputStream imageInput = new BufferedInputStream(new FileInputStream(file));
pstm.setBianryStream(1,imageInput,(int)file.length);
pstm.excuteUpdate();

知识点7:大对象(CLOB类型)的读取

7.1 clob的作用

存储字符串类型的数据。举例:resume中都是一部分一部分的。因此可以作为大对象存储。

Clob resumeLob = null; // 定义Clob
resumeLob = rs3.getClob(3); // 将结果集中第三个位置的Clob取出
String detailInfo = resumeLob.getSubString((long)),(int)resumeLob.length()); // 将Clob类型黄钻换成字符串类型
POSSTR(RESUME,'Personal'); // 查看Personal在Resume中的位置
SUBSTR(RESUME,1,length); // 查看resume中1-length长度的字串
// 上面的两种语句详细用法
sql3 =
        "SELECT EMPNO, RESUME_FORMAT," +
        "SUBSTR(RESUME,1,?)|| SUBSTR(RESUME,?) AS RESUME " +
        "FROM JLU.EMP_RESUME " +
        "WHERE EMPNO = ? AND RESUME_FORMAT = 'ascii'";
/*
	因为我们只知道一部分的位置,可以用substr推断另一部分的位置
*/

这里的POSSTR和SUBSTR是在sql语句中增加的,详细的用法可以看老师给出的CLOB的示范代码。

知识点8:SQLException和SQLCODE

老师讲:数据库中很多代码都是进行错误处理的。因为没有一个代码是没有错误的,因此我们尽可能设计异常处理,来捕获错误,提高系统的鲁棒性。

8.1 SQLCODE和SQLSTATE

SQLCODE:是由数据库公司进行设计的,涵盖所有的SQLSTATE之外还可以附加其他的state;

SQLSTATE:是由国际标准组织指定的。

8.2 SQLException

是由jdbc创造的数据库异常捕获模块。

常见的用法及代码如下:

catch(SQLExecption sex){
    sex.printStackTrace();
    int SQLCODE = sex.getErrorCode();
    if(sex.getSQLState().equlas("23505"))
        JOPtionPane.showMeaasgeDialog(null,"主键重复");
}

常见的SQLCODE(DB2)

switch(SQLCODE){
            case 802:
                //数据溢出
                JOptionPane.showMessageDialog( null , "数据溢出" ,"SQL错误" , JOptionPane.ERROR_MESSAGE) ;
                break;
            case -007:
                //SQL语句中有非法字符
                JOptionPane.showMessageDialog( null , "SQL语句中有非法字符" ,"SQL信息" , JOptionPane.ERROR_MESSAGE) ;
                break;
            case -010:
                //丢失引号
                JOptionPane.showMessageDialog( null , "SQL语句丢失引号" ,"SQL信息" , JOptionPane.ERROR_MESSAGE) ;
                break;
            case -060:
                //某特定数据类型的长度或者标量规范无效
                JOptionPane.showMessageDialog( null , "某特定数据类型的长度或者标量规范无效" ,"SQL信息" , JOptionPane.ERROR_MESSAGE) ;
                break;
            case -102:
                //字符串常量太长
                JOptionPane.showMessageDialog( null , "字符串常量太长" ,"SQL信息" , JOptionPane.ERROR_MESSAGE) ;
                break;
            case -104:
                //SQL语句中遇到非法符号
                JOptionPane.showMessageDialog( null , "SQL语句中遇到非法符号" ,"SQL信息" , JOptionPane.ERROR_MESSAGE) ;
                break;
            case -433:
                //指定的值太长
                JOptionPane.showMessageDialog( null , "指定的值太长" ,"SQL信息" , JOptionPane.ERROR_MESSAGE) ;
                break;
            case -405:
                //数值文字超出了范围
                JOptionPane.showMessageDialog( null , "数值文字超出了范围" ,"SQL信息" , JOptionPane.ERROR_MESSAGE) ;
                break;
        }
吉林大学DB2数据库应用程序开发 Java 任务1 将P171页程序片段补充完整 任务2 Modify the program labstaff.java 任务3 Modify the program labupdate.java 任务4 将labupdate.java修改为GUI的形式,用户输入和修改结果的输出均通过调用JOptionPane类的适当方法实现。 立即下载

相关推荐

吉林大学数据库系统应用开发源代码.zip

任务1 将P171页程序片段补充完整 任务2 Modify the program labstaff.java 任务3 Modify the program labupdate.java 任务4 将labupdate.java修改为GUI的形式,用户输入和修改结果的输出均通过调用JOptionPane类的适当方法实现。 任务5 模仿下面截图设计并实现向表TEMPL插入行的操作,GUI界面要求实现单行插入、多行插入、通过子查询插入的功能。

吉林大学数据库应用程序开发DB2知识点和作业讲解

Db2知识点和作业知识点讲解 Java连接数据库基本步骤: 1.加载jdbc驱动程序: Static { Try{ Class.forName(“COM.ibm.db2.jdbc.app.DB2Driver”); } Catch(exception e){ E.printstacktrace(); } } 2. 创建数据库的连接 String url = “jdbc:db2:sample”;//欲连接的数据库路径 String userid=”db2admin”;//用户名 String passwd=”d

weixin_45275982的博客 5997

ROS中tf2_ros::Buffer.lookupTransform的正确使用姿势:从踩坑到填坑

本文深入解析了ROS中tf2_ros::Buffer.lookupTransform接口的正确使用方法,重点剖析了因tf2_ros::TransformListener生命周期管理不当导致的经典问题。文章提供了从理解Buffer与Listener共生关系、类成员设计黄金法则到参数详解与异常处理的完整避坑指南,并给出了构建健壮坐标变换工具类的实战方案,帮助开发者稳定实现机器人坐标系变换。

weixin_29253711的博客 134

吉林大学DB2数据库应用程序开发Java资源文件推荐

吉林大学DB2数据库应用程序开发Java资源文件推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 吉林大学DB2数据库应用程序开发Java资源文件是一个专为吉林大学学生设计的开源项目,旨在帮助学生掌握DB2数据库应用程序的开发技能。该项目包含了四个主要任务,涵盖了从基础代码补充到复杂GUI界面开发的多个方面。通过这些任务,学生可以系统地学习和实践Java与DB2数据...

gitblog_09733的博客 675

攻防世界GFSJ1184_welcome_CAT_CTF

由于它是 PIE 可执行文件,程序加载地址会随机化,这导致你在 GDB 调试时需要处理地址偏移(如 0x246d 变成 0x55555540246d)。:client 程序通过网络连接(get_nc() 和 get_flag(nc))与 server 通信,server 监听在端口 8888。:client 依赖外部共享库(如 libstdc++.so),因此运行时需要这些库存在系统中。程序就是wasd移动,走到不同标记(* $ @ )下方,输入j回车,会有不同反应。两个文件client和server。

拥抱AI的老粽子 1262

风光储互补微电网在偏远地区的应用实践:从建模到仿真全解析

本文深入解析了风光储互补微电网在偏远地区的应用实践,从系统设计到仿真建模全流程。通过Simulink等工具进行动态仿真,验证了系统在多种工况下的可靠性,并结合实际案例展示了其显著的经济和环保效益。文章为从业者提供了从技术路径到实施优化的全面指导。

weixin_29047545的博客 269

吉林大学数据库应用程序开发期末真题2024/11/7

吉林大学数据库应用程序开发期末真题2024/11/7

qq_74397046的博客 4972

用逻辑分析仪实测EM4095:125kHz RFID耳标解码的电压与脉宽玄学

本文通过逻辑分析仪实测EM4095芯片,深入解析125kHz RFID耳标解码中的电压与脉宽关联现象。揭示了供电电压对曼彻斯特编码脉宽的影响规律,并提供了一套可落地的调试方法论,包括信号链路解析、逻辑分析仪配置技巧及系统级稳定性提升方案,帮助开发者解决解码不稳定问题。

weixin_30629653的博客 328

2024年吉林大学《数据库系统应用程序开发》试题及知识点总结

吉林大学《数据库系统应用程序开发》2022级真题、知识点总结

m0_74118878的博客 3031

ArcGIS Pro MCP 开源:自然语言驱动的 AI 制图与分析

人工智能与大模型的快速发展,正推动专业软件从“手动操作”走向“自然语言控制”。模型上下文协议(MCP)作为连接 AI 与外部工具的标准接口,类似为 AI 安装的“USB 接口”,让大模型可以通过统一协议调用 GIS 软件能力。基于 ArcPy 构建的 ArcGIS Pro MCP 项目,将复杂的地图制图与空间分析封装为 112 个可被 AI 调用的工具,使文本指令直接驱动软件完成数据加载、符号化、出图乃至叠加统计等任务。对 GIS 工程师、数据分析师与测绘规划从业者而言,该开源项目显著降低专业软件使用门槛,

weixin_29054195的博客 274

【Leetcode】269.火星词典(Hard)

应用拓扑排序

明朗晨光的专栏 765

吉林大学数据库应用程序开发知识点

blob对象取决于varchar的大小,varchar最大是2GB,因此blob, clob, dblob 的大小都限制在2GB。1.3创建Statement对象stmt来调用connection对象sample的createstatement方法,目的是执行sql语句,resultset接口创建对象res来储存执行sql查询操作的结果。一般来说,为了提高性能,数据库需要专门创建一个用于存放大字段的表空间,数据表的大字段列应该将数据存放于对应的表空间中,这是因为不经过内存(缓冲池)直接读取的。

weixin_73827401的博客 1361

innovus:insert Power Switch失败,报告not covered by a row问题解析

这个问题就是switch找不到可以放置的row,分析就从两方面入手,一方面从voltage area下手,一方面从row和site入手。检查发现voltage area设置正确,row也存在,只不过lef里缺少对应switch的双倍高的site。更多学习内容请关注「拾陆楼」知识星球。

m0_61544122的博客 1159

《数据库系统应用程序开发》期末复习

前言 找到这里的学弟学妹你们好啊,以下主要是我在准备软件工程数据库应用db2课程的复习资料,希望能够帮到你们。 不过需要注意的是: ①所有罗列出的代码因为不要求具体编译环境,所以可能跟实际运行会有出入,在此只是给大家一个基本的参照和思路,请不要以这个为标答。 ②请注意你们的考试范围,我们这届老师画的范围如下: 全部来自报告内容 只有五道题(每道题都是代码题) 会给一个数据库表 要求掌握需要导入哪些包,有哪些公共方法 去年考的批处理、查询并更新、clog、blog 今年不考GUI ③最后鸣谢我的学长学

KQ的博客 1万+

21、使用 FastHenry 进行片上电感器的模拟与参数预测

本文介绍了使用 FastHenry 对片上电感器进行模拟和参数预测的方法。讨论了 FastHenry 的适用场景、线圈几何形状的选择与离散化方法,以及如何考虑模拟中的寄生效应。同时对比了 FastHenry 和 Magnet 在不同基板电阻率下的模拟精度,并提出了优化电感器设计的策略,为高效准确地预测电感参数提供了技术指导。

y9z0a1b的博客 293

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

吉林大学数据库期末复习整理

22级期末题型基本上和老师发的模拟题一致(临近期末时所有数据库老师都会发一套模拟题,应该是17或18年不要求期末试卷保密时的真题,学习通资料里一直有)

m0_73654355的博客 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

《数据库系统应用程序开发》考试

考试的主要内容在PPT里的JDBC Programing with Java Ⅰ&&Ⅱ,除了第一大题的简单JDBC语句,还涉及实验报告和Java程序设计的内容。 我届考试题目与往年极其相似,后悔没有好好看题。。呵呵 下附考试真题。(^_^) 看完可以考满分。 《2016-2017年度吉林大学第一学期数据库程序开发考试》 一.写出jav...

咕咕怪的博客 4711

温度PID控制PLC程序

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

吉林大学DB2数据库应用程序开发 Java 资源文件

吉林大学DB2数据库应用程序开发 Java 资源文件 去发现同类优质开源项目:https://gitcode.com/ 资源描述 本资源文件包含了吉林大学DB2数据库应用程序开发的Java代码片段,主要涉及以下四个任务: 任务1 将P171页的程序片段补充完整。该任务要求你根据给定的程序片段,补充缺失的部分,使其能够正常运行。 任务2 修改程序 labstaff.java。你需要对现有的 labs...

gitblog_09712的博客 406

吉林大学期末复习(一些考试)2023/6/11

如果你想了解更多,很显然,点开学长们的主页,你能找到你对应考试的期末复习总结。1.优快云 内容为备考方针和简答题考点。1.算法设计与分析选择题、简答题、证明题整理。以下平台很有帮助:优快云,博客园。3.gonghr 公hr。

m0_64738539的博客 8873

吉林大学软件工程数据库应用db2课程的复习资料

db2 吉林大学软件工程数据库应用db2课程的复习资料 大家好,这里是星辉,你们的16级学长,这是我们复习时用到的所有的复习资料,希望能够大家能够用到。 文件结构 代码 GUI代码 此份代码是16-17年题中的第二大题,希望给大家一个基本的参照和思路,代码请不要以这个为准。 考试题 2016-2017考试题及部分题答案 第一、二的题目很重要,请务必会写,其中有好多题16-18考了两年。 ...

失心疯的博客 3269

吉林大学数据库系统原理简答题汇总(上)

书上的说法:索引提供对数据项的快速访问。数据库索引提供了指向包含特定值的指针。P12老师给的说法:索引是一种数据结构,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中的数据。自定义类型是强类型检查,无法定义约束。域是弱类型检查,可以定义约束。所谓强类型就是不允许相容的赋值,约束是对属性的约束。

weixin_59659714的博客 1916

吉林大学数据库系统原理期末复习笔记

吉林大学数据库系统原理期末复习笔记、考点、真题整理。

SeanTAT的博客 8867

吉林大学软件学院数据库系统应用程序开发实验代码

百度网盘链接: https://pan.baidu.com/s/1xtvclsBe3CMPBVPIIrb6BA?pwd=rt22 提取码: rt22。咱们软院基本上都用的是某位学长的代码,为了给大家多一种选择,我和同学们在学长的基础上开发了一个新的,希望对大家有用。特别鸣谢软件学院的涂伟、卓新杰、蒋皓云、李泓颉等同学,ddl前2天在某黑奴工厂北一1052一块干活()。

a1234gffs的博客 316

吉林大学软件学院数据库系统应用程序开发期末复习及多年真题

假设某数据库中有员工表,包含员工编号、姓名、年龄、工资、简历(CLOB)及照片(BLOB),其中员工编号为主键,其它皆可为空。"运行后变量updateCount的值为3,但查看表 STAFF中的数据并无任何变化,请分析原因。2.定义一个结果集对象,该对象将执行的查询语句是“查询表staff,获取员工编号为10的员工名字(name)、工作(job)和工资(salary)”,对象名自行定义。读取缓冲区里的数据,不是数据库里的,也不改变数据库的数据。读取缓冲区里的数据,不是数据库里的,也不改变数据库的数据。

2302_80289636的博客 1469

人工智能原理复习(吉林大学)

人工智能原理第六章复习(吉大) 整理一下看到的关于人工智能原理的内容 文章目录人工智能原理第六章复习(吉大)@[toc]第六章知识点习题资料DP算法 第六章 知识点 Herbrand定理基础知识 子句集:注意子句集是相对于一个斯科伦范式的合取母式提出的;子句集(斯科伦范式)与原始公式的关系是G不相容 iff S不相容 Herbrand域:常量符号、常量函数符号;很多情况下H域的元素个数是无限的 原子集:子句集的原子在H域上构成的集合 基础项、基础原子、基础文字、基础子句:所谓基础就是没有变量符号

tangchuan_jlu的博客 6105

2018年 吉林大学 软件工程 967考研经验分享

姓名:张齐贤 本科:黑龙江工程学院 计算机科学与技术学院 计科14-2 应届 录取情况:吉林大学 软件专硕(三年) 分数:初试 (68 55 67 137 总分327) 复试 237.5 总排名43 一共录取65+5(360联合培养) 吉林大学 计算机学院分为计算机学(数一 英一) 计算机专(数二 英一) 软件学院分为软件学(数二 英一) 软件专(数二 英一) 主要区别是专业课不一...

张齐贤的博客 1万+
上一篇: Windows 11 & Ubunt 22.04双系统安装指南(避雷版)
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ray还是少喝可乐吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值