使用ibatis实现动态分页查询

智能座舱音频系统集成与调试:从芯片选型到音质优化实战 在智能座舱域控制器架构中,音频系统已从简单的功放加扬声器演进为SoC、数字音频总线、外部DSP与多通道功放协同的复杂子系统。TDM总线的时隙分配、PDM麦克风阵列的信号完整性,以及AEC回声消除算法如何与硬件协同,直接决定多音区体验和语音交互的可靠性。工程实践中,音频调试的关键在于先理顺供电、接地、时钟与数据路由,再针对功放削波、采样率失配、TDM slot错位等典型问题进行系统性排查。从芯片选型到系统级指标验收,只有将音频链路视为整车电子电气架构的一个协同整体,才能真正实现从“响”到“好听”的跨越。本文结 阅读详情

一.实现分页之前可以做的:优化SQL

本来的查询语句为下面的,可以进行多种优化

  1. SELECT o.*, r.name
  2. FROM PLACED_ORDER o, RESTAURANT r
  3. WHERE o.RESTAURANT_ID = r.RESTAURANT_ID
  4.   AND o.DELIVERY_TIME > (SYSDATE - 30)
  5. ORDER BY o.ORDER_EXT_ID DESC

1.使用优化hints

  1. SELECT /*+ FIRST_ROWS(20) */ o.*, r.name
  2. FROM PLACED_ORDER o, RESTAURANT r
  3. WHERE o.RESTAURANT_ID = r.RESTAURANT_ID
  4. AND o.DELIVERY_TIME > (SYSDATE - 30)
  5. ORDER BY o.ORDER_EXT_ID DESC

    2. Denormalizing the schema

  可以用数据的冗余来避免join表,比如把restaurant’s name放到PLACED_ORDER表中

  1. SELECT o.order_id, o.restaurant_name, …
  2. FROM PLACED_ORDER o
  3. WHERE o.DELIVERY_TIME > (SYSDATE - 30)
  4. ORDER BY o.ORDER_EXT_ID DESC

    3. 使用rownum

  1. SELECT *
  2. FROM
  3.    (SELECT ROWNUM AS RN, XX.*
  4.     FROM
  5.    (SELECT O.ORDER_ID, R.NAME, …
  6.       FROM PLACED_ORDER O, RESTAURANT R
  7.       WHERE O.RESTAURANT_ID = R.RESTAURANT_ID
  8.       ORDER BY O.ORDER_EXT_ID
  9.    ) XX
  10.    WHERE ROWNUM < 21)
  11. WHERE RN > 10

二.使用ibatis实现动态分页查询

 

1. 使用一般的queryForList

 

Java 代码:

 

注意:findOrder() 返回了比实际需要多一行的数据,用来判断是否还有更多的行未取。在返回前,会把这个多余行remove掉的。

  1. public class OrderDAOIBatisImpl extends SqlMapClientDaoSupport implements OrderDAO {
  2.     public PagedQueryResult findOrders(int startingIndex,
  3.             int pageSize, OrderSearchCriteria criteria) {
  4.         Map map = new HashMap();
  5.         map.put("pageSize",
  6.                 new Integer(pageSize + startingIndex + 1));
  7.         map.put("criteria", criteria);
  8.         Implementing dynamic paged queries with iBATIS 421
  9.         List result = getSqlMapClientTemplate().queryForList(
  10.                 "findOrders", map, startingIndex, pageSize);
  11.         boolean more = result.size() > pageSize;
  12.         if (more) {
  13.             result.remove(pageSize);
  14.         }
  15.         return new PagedQueryResult(result, more);
  16.     }
Ibatis的配置:
  1. <sqlMap>
  2.     …
  3.     <select id="findOrders" resultMap="OrderResultMap"
  4.         resultSetType="SCROLL_INSENSITIVE">
  5.         SELECT /*+ FIRST_ROWS($pageSize$) */ O.ORDER_ID, R.NAME AS
  6.         RESTAURANT_NAME FROM FTGO_ORDER O, FTGO_RESTAURANT R WHERE
  7.         O.RESTAURANT_ID = R.RESTAURANT_ID
  8.         <isNotEmpty property="criteria.restaurantName">
  9.             AND r.name = #criteria.restaurantName#
  10.         </isNotEmpty>
  11.         <isNotEmpty property="criteria.deliveryCity">
  12.             AND o.delivery_city = #criteria.deliveryCity#
  13.         </isNotEmpty>
  14.         <isNotEmpty property="criteria.state">
  15.             AND o.status = #criteria.state#
  16.         </isNotEmpty>
  17.         ORDER BY o.ORDER_ID ASC
  18.     </select>
  19.     <resultMap id="OrderResultMap"
  20.         class="net.chrisrichardson.foodToGo.
  21.             bbbbbbbbbbb➥ placeOrderTransactionScripts.details.
  22.             bbbbbbbbbb➥ OrderSummaryDTO">
  23.         <result property="orderId" column="ORDER_ID" />
  24.         <result property="restaurantName" column="RESTAURANT_NAME" />
  25.         …
  26.     </resultMap>
  27.     …
  28. </sqlMap>

2.使用rownum

 

java代码:

  1. public PagedQueryResult findOrders (int startingIndex,
  2.         int pageSize, OrderSearchCriteria criteria) {
  3.     Map map = new HashMap();
  4.     map.put("startingIndex", new Integer(startingIndex));
  5.     map.put("maxRows", new Integer(pageSize + startingIndex
  6.             + 2));
  7.     map.put("criteria", criteria);
  8.     List result = getSqlMapClientTemplate().queryForList(
  9.             Implementing dynamic paged queries with iBATIS 423
  10.             "findOrders", map);
  11.     boolean more = result.size() > pageSize;
  12.     if (more) {
  13.         result.remove(pageSize);
  14.     }
  15.     return new PagedQueryResult(result, more);
  16. }

 

Ibatis配置: 注意:只有start大于0,才会编译某些段

 

  1. <sqlMap>
  2.     <select id="findOrders" resultMap="OrderResultMap"
  3.         resultSetType="SCROLL_INSENSITIVE">
  4.         <isGreaterThan property=" startingIndex" compareValue="0">
  5.             SELECT * FROM (SELECT XX.*, ROWNUM RNXX FROM (
  6.         </isGreaterThan>
  7.         SELECT * FROM ( SELECT O.ORDER_ID, R.NAME AS RESTAURANT_NAME
  8.         FROM FTGO_ORDER O, FTGO_RESTAURANT R WHERE O.RESTAURANT_ID =
  9.         R.RESTAURANT_ID
  10.         <isNotEmpty property="criteria.restaurantName">
  11.             AND r.name = #criteria.restaurantName#
  12.         </isNotEmpty>
  13.         <isNotEmpty property="criteria.deliveryCity">
  14.             AND o.delivery_city = #criteria.deliveryCity#
  15.         </isNotEmpty>
  16.         <isNotEmpty property="criteria.state">
  17.             AND o.status = #criteria.state#
  18.         </isNotEmpty>
  19.         ORDER BY o.ORDER_ID ASC ) WHERE ROWNUM < #maxRows#
  20.         <isGreaterThan property="start" compareValue="0">
  21.             ) XX ) WHERE RNXX > #startingIndex#
  22.         </isGreaterThan>
  23.     </select>
  24.     …
  25. </sqlMap>

三. 为什么选用上面的rownum分页查询格式

SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= 40
)
WHERE RN >= 21

 

其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。

选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值。这是,查询语句如下:

 

SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
)
WHERE RN BETWEEN 21 AND 40

 

对比这两种写法,绝大多数的情况下,第一个查询的效率比第二个高得多。

这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了。

而第二个查询语句,由于查询条件BETWEEN 21 AND 40是存在于查询的第三层,而Oracle无法将第三层的查询条件推到最内层(即使推到最内层也没有意义,因为最内层查询不知道RN代表什么)。因此,对于第二个查询语句,Oracle最内层返回给中间层的是所有满足条件的数据,而中间层返回给最外层的也是所有数据。数据的过滤在最外层完成,显然这个效率要比第一个查询低得多。

 

四.关于ibatis自己提供的分页API

ibatis自己提供的分页API

 

  1. PaginatedList paginatedList=sqlMap.queryForPaginatedList(statementName, parameterObject, pageSize);   

这个是基于内存的分页,就是已经把所有数据load到内存了,才实现的伪分页。不会减少load的负荷。

 

 五。补充

  有人自己hack了ibatis的分页api,然后实现物理的分页,一般不提倡。

 

【参考】

1. 《POJO in action》 Implementing dynamic paged queries

2. yangtingkun ,http://yangtingkun.itpub.net/post/468/100278 ,Oracle分页查询语句

3. IBATIS document

 

超螺旋滑模控制(STA) 超螺旋滑模控制又称超扭滑模控制,可以说是二阶系统中最好用的滑模控制方法。 阅读详情

相关推荐

告别编译臃肿!手把手教你为Arduino UNO打造超轻量级U8g2中文字库(附完整工具链)

本文详细介绍了如何为Arduino UNO打造超轻量级U8g2中文字库,解决默认字库占用大量存储空间的问题。通过自定义字体工具链,提取项目所需汉字并生成精简字库,显著减少程序体积。文章包含完整实现步骤、优化技巧及实战经验,帮助开发者在资源受限的微控制器上高效显示中文。

weixin_29274337的博客 259

ibatis分页

[img]1.ibetis分页实现步骤a. 创建Page类。b.创建bean类,并继承Page类。b. 在dao层,定义两个方法。并实现该方法。c. 在业务层,同样定义两个方法。并实现它。d. 在配置文件中注入有关的page类。并设置相应的get和set方法。e. 在action中调用有关的方法。f.进行配置文件的设置。详细步骤:1.        Page类package com.exeerp....

sqh1232008的专栏 224

hcaptcha无感验证码逆向实战:从接口分析到环境补全

本文详细解析了hcaptcha无感验证码的逆向实战过程。通过分析核心接口与加密逻辑,重点介绍了采用环境补全策略来模拟真实浏览器环境,从而绕过验证码检测。文章提供了从接口抓包、剖析hsw.js加密核心到使用Node.js搭建模拟环境的完整步骤,为自动化操作提供了一种稳健的解决方案。

weixin_29324401的博客 1152

Oracle分页查询

分页查询格式: SELECT * FROM ( SELECT A. * , ROWNUM RN FROM ( 真正的查询 ) A WHERE ROWNUM &lt;= ...

温柔一刀 321

SpringBoot与Flowable整合:构建高效审批工作流的实战指南

本文是一份SpringBoot与Flowable整合构建高效审批工作流的实战指南。通过一个经典的二级审批场景,详细介绍了从项目搭建、BPMN流程设计、核心服务编写到RESTful API构建的完整步骤。文章深入探讨了如何利用Flowable工作流引擎实现审批流程的自动化驱动与灵活管理,并分享了变量管理、监听器、异步执行等进阶技巧与常见避坑指南,帮助开发者快速构建健壮、可维护的企业级审批系统。

qsc9012345的博客 519

Arduino--土壤湿度传感器使用(电阻式)

最近买了一个土壤湿度检测传感器,实物图是这样的: 我买这个模块是想要得到土壤湿度的模拟量。但我买的时候忘了买左边的蓝色模块,我开始以为这个模块是有运放功能的,但实际它是一个电压比较器和一个分压电路。 其模块的接线如图: 该模块的四线是带模拟量输出的,三线的只输出一个到达阈值的标志量。该模块的原理图如下: 该模块的测试原理为:把土壤当成一个可变电阻,随着土壤含水量的增加,土壤电阻减小。而该传感器其实就是两个电极,用来接土壤这个可变电阻。一般湿度的土壤电阻大概在几百K左右,其串连的分压电阻应该在这个数量级。

weixin_41866783的博客 1万+

欢迎使用优快云-markdown编辑器

iBatis的分页方式一:调用它的分页方法:List result = sqlMapClient.queryForList(id, parameterObject, skip, max);方式二:利用不同数据库的特点,把分页的条件作为参数传进去,在SQL语句处拼接。如MYSQL数据库可以使用它的limit函数。比较:方式二比较通用,只需调用相同的方法,即可实现分页或者不分页,此时分页的参数只是做为普

qq_24996873的博客 383

RT-DETR改进策略【RT-DETR和Mamba】| CVPR 2025:EfficientViM 压缩隐藏状态空间进行通道混合、单头设计减少内存操作,提升目标检测效率与精度

本文记录的是利用模块优化的目标检测网络模型。EfficientViM Block(基于隐藏状态混合器的状态空间对偶性模块) 的设计旨在,提升特征提取效率,同时兼顾全局依赖捕捉与局部细节保留。本文将深入研究的原理,并将其应用到中,通过重构特征提取流程、减少内存绑定操作、融合多阶段特征,增强模型在资源受限环境下的检测性能与速度。Depth Information Assisted Collaborative Mutual Promotion Network for Single Image DehazingLE

Limiiiing的博客 916

ibatis实现分页查询

类PageQuery interface IPageQuery package com.coship.sdp.rights.model.page; import com.coship.dhm.common.config.impl.XMLFactory; import java.io.Serializable; public class PageQuery implements IP

okkeqin的专栏 5315

在 SAP S/4HANA 分析模型中添加 Measures,Calculated、Restricted、Currency Conversion 与 Unit Conversion 的建模思路

摘要: SAP S/4HANA分析查询建模中,度量(measure)的加工层级是关键难点,涉及聚合时机、币种/单位语义、过滤上下文等复杂因素。度量不仅是数字字段,还需处理计算口径(Calculated Measures)、上下文绑定(Restricted Measures)和单位转换等问题。Calculated Measures适合派生指标(如毛利率),需注意聚合前后计算差异;Restricted Measures通过固化过滤条件(如区分实际/计划金额)确保业务语义一致性。建模时应将业务逻辑下沉到分析模型层

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

基于数字图像处理方法的迷宫问题图解 : 基于骨架提取、四邻域

问题是,这条红色的线是人为标记出来的能通的路线,对计算机来看,黑色和红色的线没有任何差异,所以之前的想法压根不起作用。对应于数字图像的表达,就是从远离主干的分支端点出发,如果4邻域中只有一个可以通的道路,那么这个点在分支上。闪电划过,有一道连接了天空和大地,就是迷宫的解,其余的分支就是迷宫中对应的死路。类似这个闪电图,假设图中最粗的主干(迷宫解的路线)是最先形成的,其余的细小的分支是慢慢从主干上形成的。因此,只要在端点的4邻域中,找到可以走的道路,那么一定就是分支,也就是要移除的路线。

Henry的博客 2074

iBatis的分页分析与详解

        分页是操作数据库型系统常遇到的问题。分页实现方法很多,但效率的差异就很大了。iBatis是通过什么方式来实现这个分页的了。查看它的实现部分,发现返回的PaginatedList实际上是个接口,实现这个接口的是PaginatedDataList类的对象,查看PaginatedDataList类发现,每次翻页的时候最后都会调用下面这段函数。 private List getLis...

wjxbj的博客 1201

Claude Code auto mode 管理 subagents 的三道安全闸门

文章摘要: Claude Code的auto mode核心在于重构多代理协作的安全边界,将信任拆解为三个检查点:任务委派前评估主会话指令是否越界(v2.1.178新增);执行中强制subagent继承主会话权限模式,禁止自行降级;返回前审查完整动作历史并附加安全警告。这种设计通过动态运行时约束(classifier)与多层防线(tools限制、hooks等)结合,避免安全策略分散化。auto mode并非完全放权,而是通过减少常规提示+后台严格检查实现平衡,与隔离环境专用的bypassPermissions

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

iBATIS分页查询

分页查询格式: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40 ) WHERE RN >= 21 其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM = 21控制分页查询的每页的范围。

徐行 3238

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

iBatis导读 ibaitis 级联查询

使用iBatis开发已经有一年了,这一年来不管愿意不愿意,喜欢不喜欢,都得用,想用Hibernate不行。 随着对iBatis的熟悉,渐渐发现初次接触的人因为不能很好的掌握iBatis使用的方法而对其有一些偏激的看法。   1、iBatis的是用来自由写SQL的,对SQL语句的简单的封装,相当于在JDBC上加了层外壳。 我认为,iBatis的目标是简化JDBC的操作,对SQ

蛰脚踝的天蝎 3149

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

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

ibatis分页组件分页

Ibatis分页  实例 查询分页ibtais  SQL语句 支持模糊查询后分页 分页查询需要两条SQL语句 第一部查询所有记录总数   &lt;select id="selectForCount-SysParam" resultClass="int"&gt;       &lt;![CDATA[           SELECT count(*) from PUB_SYSPARAM ...

kingRong的专栏 215

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

ibatis动态查询操作

本篇第一版本基于有一定了解的哥们准备的。之后有时间会把关联资料补齐,我也在整理学习中。开始转载记录:   &lt;select id="SelectEemployee" parameterClass="string" resultMap = "employee-result"&gt; select * from employee //动态SQL语句 &lt;dynamic prepend="W...

hujin1979的专栏 201

ibatis联合查询

ibatis联合查询,ibatis执行是顺序执行,所以要把被引用的sql语句放在调用之前 sql id="selectSqlUser"> <![CDATA[ select a.su_id, a.su_code, a.su_name, a.su_contact,

QC班长的博客 1198

闲话iBatis

使用iBatis开发已经有一年了,这一年来不管愿意不愿意,喜欢不喜欢,都得用,想用Hibernate不行。   随着对iBatis的熟悉,渐渐发现初次接触的人因为不能很好的掌握iBatis使用的方法而对其有一些偏激的看法。   1、iBatis的是用来自由写SQL的,对SQL语句的简单的封装,相当于在JDBC上加了层外壳。 我认为,iBatis的目标是简化JDBC的操作,对SQL的查询结...

Chinaxxren 106

ibatis中动态SQL_SELECT(代码复用)

SQL中最复杂的还是查询了,IBATIS的动态SELECT和&lt;include/&gt;配合起来的确很猛, 比如ORACLE中分页: select * from ( select rownum rn, t.* from ( select * from myivr_trole -- 真正的SQL语句 ) t where rownum &lt...

babyck的博客 473

ibatis基本配置

  remapResults="true" ibatis 中每次查询出来的数据列重新映射, xml文件中如果每次查询出来的数据的列数不一样则用此属性 &lt;sql id="getList_body"&gt; SELECT id, school , beginTime, endTime, ROW_NUMBER() Over(OR...

wangzhantao的专栏 145

oracle配置ibatis动态多条件组合模糊、分页查询

链接地址:[url]http://kevin12.iteye.com/blog/1953780[/url] [color=red]注意的地方:&lt;就是号,即大于号;[/color] 最近将流程项目的数据库从mysql改成oracle的数据库,原先配置的mysql的ibatis文件就不能用了,比如分页功能,模糊查询都不能用了。下面记录我修改的oracle配置ibatis的分页以及动态多条件组...

天高任鸟飞,海阔凭鱼跃 334

Ibatis动态查询例子(#和$以及iterate等的用法)

2009-05-21Ibatis动态查询例子(#和$以及iterate等的用法)最近做了很多动态的查询,尤其是排序,以及一些状态字段,所以就做了一个总的动态查询,以不变应万变,呵呵 ibatis 里面的sql代码:Xml代码 select id="getTopics" resultClass="topic" parameterClass="map

GTBGT525的专栏 903

ibatis常用16条SQL语句

为什么80%的码农都做不了架构师?>>> ...

weixin_34161083的博客 81

(转)ibatis常用16条SQL语句

(1) 输入参数为单个值 Xml代码   &lt;delete id="com.fashionfree.stat.accesslog.deleteMemberAccessLogsBefore"    parameterClass="long"&gt;    delete from    MemberAccessLog    where    accessTimes...

佳期如梦 182
上一篇: Checked vs UnChecked 异常 ,使用场合异常的概念
下一篇: Component "Templates" in Flex 2.0
ProjectArchitect
博客等级 码龄19年 3粉丝 12原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值