整理:我们需不需要像存储过程一样的跨数据库过程

接触过数据库的同学肯定知道存储过程,先列一下好处?
1:易于调试。
2:随时可以查看其原代码。
3:便于测试及跟踪。
4:性能良好。
缺点:
1:只能用于特定的数据库。
2:保密性不强。
3:语言单一。

以下是一些简单说明,如果我们开发出一款类似于存储过程的"Java存储过程",他有存储过程的好处,又可以克服存储过程的缺点,你会用吗?
经过这段时间的讨论以及对技术的调研,总结如下:
1、SQLJ:这个确实是好东西,与我的想法基本一致,也试用了一下。可以在数据库上用JAVA写储储过程,是基于JDBC上的封装,目前只看到Oracle与DB2有解析,开发工具也是这两家独有的,第三方的开发工具基本没有(可能我没找到),还有解析器也没有开源的,用到j2ee服务器上会不会有法律问题,这个没有深入了解。还有SQL语句是在标准的基础上加了一些扩展,不能做到跨数据库,与传统的存储过程对比,移植方面会更好。很可惜的是不能成为Java的一项标准,否则现在的Hibernate应该就不会这么火了。
2、JSQLParser:SQL的语法解析器,这玩意儿也不错,可以校验SQL语句,或许能够派上用处。
3、LINQ to SQL:微软的玩意儿,这个还是相当的好的,功能强大,在Java方面只有Linq,LINQ to SQL还没见着,可惜了。
4、自已写一个解析器,这个可行性还是很高的,而且现有有很多文法解析框架,实现起来应该不难,关键是还得有配套的开发工具,这个是个大工程,短期内很难实现,而且价值不高。
5、使用模板引擎结合JSQLParser来实现,这个可行性还是很高的,但看着模板引擎的语法怎么看怎么不舒服。
6、利用注释+Java语法+JSQLParser作为扩展脚本来实现(非常怪异、应该没看懂)。简单上说就是在java的注释里写sql脚本。如下:
/**
SQL{
--这是一个获是用户的sql语句。(对sql的备注)
select * from users where a.user = 'super';
--这个太普通了,再来一句有深度的。
  select user_code to ${userBean.user_code},user_name to ${userBean.user_name} from a.user = 'super';
}
*/
这个类的扩展名不是java叫sqld(SQL帝).将sqld根据简单的规则转换成java源码(SQLJ的原理一致),写在注释也有好处,生成的java doc里,就有业务逻辑,以后查小问题你就不用看代码了。或者这样说,哪些蛋疼的问题就让客服和工程去忙去吧。
当然,这么干的话很多开发人员会拍砖。
所以、数风流人物还看今朝。看各位了.........

下面是使用模板引擎+JSQLparse实现的过程,开发工具使用Java开发工具,这样的做法你能接受吗。

 

public  procedure  P_users_1001001(UserInfo info){

 /**自定义对象。*/

  DataGrid dg = new DataGrid();

    /**

       sql{

           --userinfo是实体表。

              insert es_system.users (user_code,user_name)
              values
               (:info.userCode,info.user_name);

           --查询的值放到data(二维数组)里。

               select * into :data   from users where user_code=:info.getUser_code();

     }

  */

   return ProcedureUtil.createProcedure(0,"用户创建成功!!",dg);

}

 

在我的构想中,将开发一个简单的工具,根据上述自动解析出Java原代码,并执行原代码返回执行结果,达到类以于脚本语言的效果。

如果续1的方式不喜欢,这样或许你会喜欢 。

1、SQL语句符合sql92标准。

2、Java标准语法。

3、一个精简的ORM。根据数据库生成对等的JavaBean.数据库的类型与JavaBean的类型对应,校验可以通过标注的方式进行。

 

public  procedure  P_users_1001001(UserInfo info){

 /**自定义对象。*/

  DataGrid dg = new DataGrid();

  sql.execute("insert es_system.users (user_code,user_name)"+
           "values"  +
            " (:info.userCode,info.user_name) ";

   sql.executeQuery("select * into :data   from users where user_code=:info.getUser_code()");

   return ProcedureUtil.createProcedure(0,"用户创建成功!!",dg);

}

 

结论:

经过一段时间的思考以及对所开发过项目的总结,最终下了结论,主要分两部份完成,在描述之前,先说明一下需要达到的目标:

1、跨数据库:即允许在多个数据库上运行。

2、可读性强:可读性强,入门的成本低,开发人员容易接受。

3、效率高:主要分两部份,开发的效率及运行的效率,在两都之间达到平衡。

4、即时运行:以脚本化的方式运行。

 

实现的方案如下:

1、将SQL92关键字对象化。

2、扩展SQL92标准,支持如:@等关键用法。

 

用例如下:

1、关键字对象化:

UserInfo是一个用户对象:主要属性有用户代码、用户名称、性别、年龄,部门id (外键)等。

Dep是一个部门对象:含部门的相关信息。

isNullNotCondition是一个自定函数,如果部门名称为空,不做为条件。

Select(UserInfo.class,"DEP_NAME") .from(UserInfo.class)

                                                        .innerJour(Dep.class)

                                                        .on("UserInfo.dep_id=Dep.dep_id");

                                                        .where()

                                                        .and("UserInfo.dep_id=:id")

                                                        .or(isNullNotCondition("Dep.dep_name=:name"));

 

动态SQL语句:

SQL = "select user_code,user_name,sex,age,dep_id,dep_name "+

           "          from UserInfo"+

           "          innerJour Dep "+ 

           "          on (user_info.dep_id=Dep.dep_id" +

           "          where userInfo.dep_id=:id"+

           "          @isNullNotCondition(and Dep.dep_name=:name)";

封装的集合如下:

1、创建临时表

2、Insert、Update、Delete、Select语句。

3、根据数据库生成Java对象,java对象与数据库一一对应该。

 

Command: INSERT

Description: Inserts new rows into a table

   INSERT INTO table [ ( column [, ...] ) ]

        { VALUES ( expression [, ...] ) | SELECT query }

Command: UPDATE

Description: Replaces values of columns in a table

   UPDATE table SET col = expression [,...]

        [ FROM fromlist ]

        [ WHERE condition ]

SQL MINUS 实战指南:集合差集原理、NULL处理与跨数据库替代方案 SQL MINUS 并非数值减法,而是基于集合论的差集运算,其核心在于去重、NULL敏感比较与隐式排序。理解 MINUS 的执行原理,有助于规避金融、风控等强一致性场景中因隐式去重、NULL静默过滤或类型不匹配导致的数据核对偏差。它在 Oracle 中原生支持,而 PostgreSQL 和新版 MySQL 使用语义一致的 EXCEPT,MySQL 旧版本则需 LEFT JOIN 或 NOT EXISTS 等 ANSI 兼容方案实现等价逻辑。掌握 MINUS 的性能边界(如大表哈希匹配成本、LOB字段限制)及 阅读详情

相关推荐

SQL PIVOT行转列原理与跨数据库实战指南

行转列(Row-to-Column Transformation)是数据分析中高频基础需求,本质是将分类维度(如年份、季度、地区)从行值映射为列标题,并通过聚合函数实现结构重组。其核心原理在于分组键、旋转轴与被聚合值三者构成的矩阵变换逻辑,技术价值体现在显著降低SQL维护复杂度、提升可读性与修改效率。典型应用场景包括销售年报横向展示、产品销量季度分析、BI报表宽表生成等。实际工程中需重点关注PIVOT的聚合本质(非明细展开)、NULL安全处理、数据类型一致性,以及SQL Server/Oracle原生支持与

weixin_30394981的博客 407

mysql的跨服务器存储过程_sql server 跨数据库调用存储过程

A库存储过程:create PROCEDURE [dbo].[spAAAForTest](@UserName nvarchar(20) =null,@LoginPwd nvarchar(60) =null)ASBEGINselect N'A' ASa, N'B' ASB, N'C' ASC;END同一台服务器实例,A,B两个数据库, 在B库的存储过程中,调用A库的存储过程B库:ALTER P...

weixin_30702441的博客 1287

UniDAC 10.3.0源码版在Delphi 12.3中的安装与跨数据库实践

在多数据库共存的业务场景中,数据库访问组件的选型直接影响开发效率和维护成本。UniDAC作为一套通用数据访问组件,以“一套API连接多种数据库”的设计理念,为Delphi开发者提供了统一的数据访问层,降低了SQL方言和数据库差异带来的适配负担。其源码版进一步赋予开发者调试穿透和深度定制的能力,便于定位底层SQL执行、参数绑定及字符集转换等环节的隐藏问题。本文从UniDAC的架构与源码价值出发,介绍了在Delphi 12.3环境下编译安装源码包的具体步骤,并通过Oracle、SQLite、MySQL跨数据库查

weixin_33766168的博客 348

存储过程(坑)跨库查询、关联关系处理

DROP PROCEDURE IF EXISTS Test1; DELIMITER $$ create PROCEDURE x1.Test1(wxappId int(11)) BEGIN -- 创建变量用来接收游标数据 变量的声明、游标的声明和HANDLER声明的顺序不能乱,必须是先声明变量,再申明游标,最后声明HANDLER -- 变量的定义不要和你的select的列的键同名!否则fetch into 会失败 x1库与x2库 DECLARE v_category_id INT DEFAULT 0;...

hugoall的博客 922

存储过程跨数据库操作

此文档介绍了存储过程跨数据库操作,能较为详细的指导具体开发。

Windows 高精度计时器:QueryPerformanceCounter 原理、陷阱与最佳实践

本文深入解析Windows高精度计时器QueryPerformanceCounter(QPC)的工作原理、常见陷阱及最佳实践。QPC通过读取硬件计时器(如TSC)实现微秒级精度,适用于游戏开发、音视频处理等高性能场景。文章详细探讨了多核同步、动态频率调整等挑战,并提供了优化代码示例和性能对比数据。

weixin_33391446的博客 271

DBA 给某用户赋予某张数据库表的某种操作权限(增,删,查,改)

相关背景:       生产环境下,某个新功能不能工作,经查,是数据库中某个表没有写权限。所以操作失败。 解决方案:     通过DBA 为项目配置文件中的用户,给相应数据表赋予写权限即可。 运行环境:sql server 2014   sql 脚本:    grant select,update,delete,insert on UserTagPool to [

keenweiwei的专栏 5525

从生成到检测:全面解析Deepfake技术的演进与对抗策略

本文全面解析了Deepfake技术的演进与对抗策略,从GAN生成技术到先进的检测手段,探讨了其在娱乐与安全领域的双重影响。文章详细介绍了Deepfake的核心原理、技术迭代关键节点以及最新的检测方法,揭示了AI生成与识别的激烈博弈。同时,展望了量子计算和生物特征认证在未来攻防战中的潜在应用。

jenkins8butler的博客 255

mysql 存储过程跨库查询_MySql跨库存储过程操作小记_MySQL

bitsCN.comBEGINDECLARE deliverstatus,smlen,datacoding,total int;DECLARE tsid,srcaddr,destaddr,servicetype,smcontent,linkid,sequenceno,recvtime,state,resulttime,extcode,applicationid varchar(50) ;set t...

weixin_26800111的博客 823

OSPF路由协议配置

构建直连连通让R1、R2、R3、R4加入OSPF,实现全网互通。掌握OSPF邻居状态的解读。掌握单区域OSPF的配置。理解OSPF的基本概念。AR3上的OSPF配置。AR4上的OSPF配置。R1上的OSPF配置。R2上的OSPF配置。

SURTR999的博客 7697

保姆级教程:在S32K312上配置C40驱动,实现Flash读写(基于RTD 4.4.2)

本文详细介绍了在S32K312微控制器上配置C40驱动实现Flash读写的全流程,基于RTD 4.4.2库。内容涵盖环境搭建、外设配置、Flash操作实战代码及高级应用场景,特别针对LLD驱动和FLS存储操作中的常见问题提供了解决方案,帮助开发者快速掌握嵌入式Flash存储技术。

weixin_28684757的博客 259

mysql中的存储过程能跨库么_存储过程是否可以操作不同库内的数据?可举例

今天在开发过程中遇到两个问题:1.如何调用别人数据库的存储过程?2.如何调用自己数据库不同用户下的存储过程?经过网上搜索资料和自己的不断测试,终于成功了,现记录下来,以便资源共享。首先,如果是调用别人的数据库的存储过程,首先你得先跟别人的数据库建立一个DBLINK(如何创建,在此不进行描述),其次,别人数据库的存储过程要给你的用户赋予一定的权限。比如,我测试时候的数据,up_IF_StockSen...

weixin_39609051的博客 1839

State of GPT (ChatGPT 原理及现状介绍)

要用 RLHF 的一个简单的原因就是 RLHF 模型效果更好,下面的图来源于 InstructGPT 论文,PPO (RLHF 算法) 后的模型生成的答案更被人类喜欢。karpathy 认为 RLHF 有用的原因是判别比生成更容易,让标注员去写一些 SFT 的 QA 数据对是比较难的,如果有一个 SFT 模型生成一些数据让标注员判断哪个更好就简单很多。,GPT4 最强,前三个都是 RLHF 模型,其他模型都是 SFT 模型。伯克利做的模型评测榜单。

kebijuelun的博客 3580

excel宏调用webservice使用存储过程同步excel数据的方法

excel宏: 随后更新 webservice: 1.创建空应用程序 2.加入web服务 3.创建数据库訪问类库DataHelper sqlserver: 创建数据同步的存储过程 下面是一些须要的代码。比較杂乱,有空再整理整理。 DataFactory.cs using System; using System.Collect...

aodiyi6351的博客 421

点击率预测的贝叶斯平滑

概述 电商领域中经常需要计算或预测一些转化率指标,如最典型的CTR(点击率,Click-Through Rate)。这些转化率可以是模型的预测值,也可以作为模型的特征(feature)使用。以商品点击率预测为例,CTR的值等于点击量(Click)除以曝光量(Impression或Exposure)。以rr表示点击率, r=CI(1)r=\frac{C}{I} \tag{1}. 但在实际应

小平子的专栏 3万+

从单应矩阵到实际距离:Apriltag测距完整实现指南

本文提供了基于Apriltag实现高精度视觉测距与姿态估计的完整指南。详细阐述了从相机标定、单应矩阵分解到欧拉角与距离计算的完整流程,并深入探讨了四个解的歧义选择、工程实践中的滤波优化与多Tag融合等关键问题,旨在帮助开发者在机器人、AR等应用中实现稳定可靠的距离检测与姿态估计。

n7o8p的博客 560

MySQL数据库优化(一)——存储过程(mysql临时表介绍)

目录 存储过程: 什么是存储过程: 存储过程的优点以及缺点: MySQL如何优化: MySQL临时表创建及一些相关知识点: 存储过程: 什么是存储过程: 存储过程类似于java中的某些方法,可以用于实现一些比较复杂的逻辑功能,针对于数据库,简单来说,就是一组sql语句。存储过程是主动来使用sql语句来调用数据库中的某些信息的。 存储过程的优点以及缺点: 优...

qq_41790332的博客 716

安川机器人SOCKET 通讯

命令 功能 参数 示例 返回 SelectJob 选择程序 JobName LineNo SelectJob TEST 0 #SelectJob,Ok StartJob 启动程序 JobName StartJob TEST #StartJob,Ok Pause 暂停当前程序 - Pause #Pause,Ok Continue 继续当前程序 - Continue #Continue,Ok ServoOn 伺服上电 - ServoOn #ServoOn,Ok ServoOf...

记录学习内容 8288

如何提升SQL存储过程逻辑复用_封装通用存储过程函数

标量函数禁用DML和非确定性函数,ITVF性能优于MSTVF;多语句表值函数(MSTVF)会物化中间结果,大数据量下明显变慢函数里调用 EXEC 或动态 SQL 是禁止的,这点比存储过程严格得多MySQL 8.0+ 可用存储函数(FUNCTION),但注意权限和只读限制MySQL 允许创建 CREATE FUNCTION,能返回标量值,也支持在 SELECT 中直接调用。别硬套“函数”概念,用视图 + 参数化查询组合PostgreSQL、Oracle、SQL Server 都支持视图,但视图不接受参数。

2403_88326109的博客 212

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

oracle pls-00201 pkg_test,Oracle报存储过程中调用DBLink同义词出现错误:PLS-00201: 必须声明标识符...

前几天编写一个存储过程,需要访问远程数据库的字段,于是建立一个dbLink并建了同义词:sql;">CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl IDENTIFIED BY orcl USING 'orcl';CREATE SYNONYM mtb FOR mytable@orcl@dbc;这里之所以用nofollow" href="...

weixin_33626238的博客 661

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

SQL CONVERT函数实战:从数据迁移翻车到跨数据库格式化最佳实践

在数据库开发中,数据类型转换是处理数据展示与交换的基础操作。其核心原理在于解决存储标准化与展示多样化之间的矛盾,通过特定函数将数据库原生类型转换为符合业务需求的格式。这一技术价值在于确保数据在不同系统、报表及接口间流转时的准确性与一致性,尤其在数据迁移、ETL流程和API集成等场景中至关重要。本文以SQL Server的CONVERT函数为例,深入解析其格式化参数机制,并针对数据迁移和跨数据库交互中的常见陷阱,提供实战解决方案与性能优化建议。

weixin_34341117的博客 387

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

整理的sql语句

把长日期转换为短日期   Convert(char(10),getdate(),120)  MS-SQL数据库开发常用汇总 1.按姓氏笔画排序:Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 2.数据库加密:select encrypt(原始密码)select pwdencrypt

guo_yj的专栏 953

SQL语句整理【转】

http://tianzongqi.iteye.com/blog/1626564   一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addu

大方的专栏 632

整理了一些t-sql技巧

把长日期转换为短日期 Convert(char(10),getdate(),120) MS-SQL数据库开发常用汇总1.按姓氏笔画排序: Select*FromTableNameOrderByCustomerNameCollateChinese_PRC_Stroke_ci_as 2.数据库加密: selectencrypt('原始密码') selectpw...

weixin_34075551的博客 1077
上一篇: 结论:我们需不需要像存储过程一样的跨数据库过程
下一篇: EXTJS"病毒"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值