拍卖行竞拍存储过程,存在什么问题呢?

Auction-House:拍卖行是您服务器的完整拍卖系统 立即下载

------------------------------------------------------

--Copyright (c) 1.0

--Author     :保密

--Date       :2010-3-17 16:39:58

--Description:拍卖行的竞标

--游戏里的拍卖行竞拍存储过程,玩家反映一口价竞拍物品,点券扣了,但物品没有收到,目前拍卖行总交易10万多次,

--这种情况出现了11次。大概是什么问题呢?目前多次测试没能重现,有没有牛人能目测出问题在哪儿?==========================================================================================

--业务逻辑如下(所有的扣点加点,调用外部的存储过程,返回接口和调用方法也不一致,汗):

--IF 点券交易

--BEGIN

--  IF 一口价  

--  BEGIN

--     1.发送给买家物品(发送到买家临时背包)

--     2.如果这个东西之前有另外的玩家竞价过,需要退还上一个玩家的点券

--     3.保存交易日志

--     4.删除拍卖行的物品,删除这条拍卖纪录

--     5.扣买家的点券

--     6.给卖家点券

--  END

--  ELSE 不是一口价,竞价

--  BEGIN     

--     1.退回上一个竞价者的点券

--     2.扣本次竞价者的点券

--  END

--END

--ELSE 游戏币交易

--BEGIN

--  1.退回上一个竞价者的游戏币

--  2.扣本次竞价者的游戏币

--END

--===========================================================================================

-- Return value:

--     0:执行成功

-- 特别说明,由于代码生成器问题,返回值只接收SELECT值,不接收直接RETURN的值,呃~~~不能改变别人就改变自己吧

------------------------------------------------------

ALTER PROCEDURE [dbo].[P_HBAuctionHouse_BidUp]

    @Idx BIGINT, -- 标识 

    @BuyerId varchar(50) ,-- 购买者Id,没有购买者的时候就是空的,有就是购买者的GUID

    @BuyerName varchar(50),--购买者名字

    @BuyPrice int -- 购买价  

AS

BEGIN

    SET XACT_ABORT ON

    BEGIN TRAN BIDUPTRAN

       DECLARE @BuyerUid UNIQUEIDENTIFIER--用户Id,外部传的字符串类型,需要转换成UNIQUEIDENTIFIER

       DECLARE @BidCount INT--竞标次数

       DECLARE @SellerId UNIQUEIDENTIFIER--卖家id

       DECLARE @SellerName VARCHAR(50)--卖家名称

       DECLARE @BeforeBuyerId VARCHAR(50)--上次的竞价者id

       DECLARE @BeforeBuyerName VARCHAR(50) --上次的竞价者NAME

       DECLARE @M INT--上次的购买价

       DECLARE @EndPrice INT--一口价   

       DECLARE @CurrencyType INT --点券还是游戏币     

       DECLARE @Result INT--点券增减返回值

       DECLARE @SRCID VARCHAR(50)--交易号,负的交易ID

       DECLARE @BeforePass9Name varchar(100)--之前买家的C通行证名

       DECLARE @BuyerPass9Name varchar(100)--当前买家的C通行证名

       DECLARE @TBLPAY TABLE(CODE VARCHAR(20))--交易表  

       DECLARE @NOW DATETIME--当前服务器时间

       SET @NOW = GETDATE()    

      

       SET @BidCount = -1--竞标次数

       IF @BuyerId <> ''

           SET @BuyerUid = CAST(@BuyerId AS UNIQUEIDENTIFIER)

       ELSE

           SET @BuyerUid = '00000000-0000-0000-0000-000000000000'

 

       SET @M = 0

   

    BEGIN   TRY

      

       --有无该条记录

       IF NOT EXISTS ( SELECT * FROM  [HB_AuctionHouse] WITH(NOLOCK) WHERE Idx = @Idx  )

       BEGIN

           IF @@TRANCOUNT > 0 ROLLBACK

           SELECT 6400  

           RETURN;      

       END

      

       --获取相关数据

       SELECT @IDX = IDX, @SellerId=SellerId ,@SellerName=SellerName,    @BeforeBuyerId=BuyerId,@BeforeBuyerName=BuyerName, @M=BuyPrice,@EndPrice=SellEndPrice, @BidCount =BidCount,@CurrencyType = CurrencyType

       FROM  [HB_AuctionHouse] WITH(XLOCK) WHERE Idx = @Idx

       IF @M > @BuyPrice

       BEGIN

           IF @@TRANCOUNT > 0 ROLLBACK

           SELECT 6407  

           RETURN;

       END

       IF @SellerId = @BuyerUid

       BEGIN

           IF @@TRANCOUNT > 0 ROLLBACK

           SELECT 6401      

           RETURN;   

       END

       --交易号

       SET @SRCID = CAST( @Idx * -1 AS VARCHAR(18)) + '_' + CAST( @BidCount AS VARCHAR(5))

 

       --允许用户竞标后,再一口价

       IF @BeforeBuyerId = @BuyerId AND @EndPrice <> @BuyPrice

       BEGIN

           IF @@TRANCOUNT > 0 ROLLBACK

           SELECT 6402      

           RETURN;   

       END

       IF @CurrencyType = 2--点券

       BEGIN

           IF @EndPrice = @BuyPrice--如果竞标价等于一口价,那就直接拍定

           BEGIN

              INSERT INTO [HB_TempPackage]--加入临时背包

                     ([ManagerId]

                     ,[ItemId]

                     ,[ItemStrengthLevel]

                     ,[ItemCode]

                     ,[ItemName]

                     ,[Count]

                     ,[ItemType]

                     ,[ImageId]

                     ,[Memo]

                     ,[Status]

                     ,[Rowtime]

                     ,[Increment])

              SELECT @BuyerId

                     ,ItemId

                     ,ItemStrengthLevel

                     ,ItemCode

                     ,ItemName

                     ,[Count]

                     ,[ItemType]

                     ,[ImageId]

                     ,'卖家:'+SellerName+',花费'+CAST(@BuyPrice AS VARCHAR(10))+'G'

                     ,0

                     ,GETDATE(),Increment FROM [HB_AuctionHouse] WHERE Idx = @Idx

             

              --退回上一个竞价者的钱$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$            

               IF @BidCount > 0

              BEGIN

                  --获取上一个买家的Pass9Name

--                DECLARE @BeforePass9Name varchar(100)

                  SELECT @BeforePass9Name = Pass9Name FROM dbo.HB_User U

                  INNER JOIN HB_MANAGER M ON U.UserGuid = M.UserId

                  WHERE M.ManagerGuid = @BeforeBuyerId

                  DECLARE @B VARCHAR(50)

                  SET @B = @SRCID+'_B'

                  EXEC P_HbPayAccount_Pay @BeforePass9Name,-1,@B,0,0,@M,@Result

                  IF @Result <> 5200

                  BEGIN                      

                     IF @@TRANCOUNT > 0 ROLLBACK

                     SELECT 6402  

                     RETURN;

                  END

              END

             

             

    --------------给上一个竞价者发一个邮件,通知竞标失败

    --------------通知卖家已经拍卖成功

              --保存交易日志

              INSERT INTO [HB_AuctionHouse_LOG]

              SELECT [Idx] ,    [ItemName] ,  [ItemStrengthLevel] ,

              [ItemId] , [ItemCode] ,  [ItemLevel],  [Count] ,  [ItemType] ,

              [ImageId] ,   [SellerId] ,  [SellerName], @BuyerId , @BuyerName ,

              [SellStartPrice] ,   [SellEndPrice],   [BuyPrice] ,

              [BidCount] ,[CurrencyType] ,[Increment] FROM [HB_AuctionHouse] WHERE Idx = @Idx

 

              --删除拍卖行的物品,删除这条拍卖纪录

              DELETE [HB_AuctionHouse] WHERE Idx = @Idx           

             

              --获取Pass9Name

              SELECT @BuyerPass9Name = Pass9Name FROM dbo.HB_User U (NOLOCK)

              INNER JOIN HB_MANAGER M  (NOLOCK) ON U.UserGuid = M.UserId

              WHERE M.ManagerGuid = @BuyerUid   

 

              --扣买家的点券

              DECLARE @N VARCHAR(50)

              SET @N = @SRCID+'_N'

               INSERT @TBLPAY

              EXEC P_HBPAYACCOUNT_CONSUMEPOINT @BuyerPass9Name,@N,@BuyPrice,@NOW

              IF NOT EXISTS(SELECT 1 FROM @TBLPAY WHERE CODE='5200')

              BEGIN

                  IF @@TRANCOUNT > 0 ROLLBACK

                  SELECT 6402  

                  RETURN;

              END              

 

              --给卖家点券$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

              --获取Pass9Name

              DECLARE @SellerPass9Name varchar(100)

              SELECT @SellerPass9Name = Pass9Name FROM dbo.HB_User U

              INNER JOIN HB_MANAGER M ON U.UserGuid = M.UserId

              WHERE M.ManagerGuid = @SellerId              

              DECLARE @S VARCHAR(50)

              SET @S = @SRCID+'_S'

              EXEC P_HbPayAccount_Pay @SellerPass9Name,-1,@S,0,0,@BuyPrice,@Result

              --PRINT @Result

              IF @Result <> 5200

              BEGIN                      

                  IF @@TRANCOUNT > 0 ROLLBACK

                  SELECT 6402  

                  RETURN;

              END   

 

           END

           ELSE---不是一口价

           BEGIN

              IF @BidCount = 0--是否是第一次竞拍

              BEGIN

                  IF @BuyPrice = @M

                  BEGIN     

                         --PRINT 2        

                         UPDATE [dbo].[HB_AuctionHouse] SET

                            [BuyerId] = @BuyerId,

                            BuyerName = @BuyerName,

                            [BuyPrice] = @BuyPrice,

                            [LimitTime] = DATEADD(n,5,[LimitTime]) ,

                            BidCount = BidCount + 1

                         WHERE

                            [Idx] = @Idx 

                         --PRINT 3           

                  END

                  ELSE

                  BEGIN

                         IF @@TRANCOUNT > 0 ROLLBACK

                         SELECT 6406

                         RETURN;

                  END

              END

              ELSE IF @BidCount > 0 --不是第一次竞拍

              BEGIN

                  IF @BuyPrice > @M

                  BEGIN            

                     --退回上一个竞价者的钱$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

                     --获取上一个买家的Pass9Name

                    

                     SELECT @BeforePass9Name = Pass9Name FROM dbo.HB_User U

                     INNER JOIN HB_MANAGER M ON U.UserGuid = M.UserId

                     WHERE M.ManagerGuid = @BeforeBuyerId

                    

                     EXEC P_HbPayAccount_Pay @BeforePass9Name,-1,@SRCID,0,0,@M,@Result

                     IF @Result <> 5200

                     BEGIN                      

                         IF @@TRANCOUNT > 0 ROLLBACK

                         SELECT 6402  

                         RETURN;

                     END          

    --------------------给上一个竞价者发一个邮件,通知竞标失败

                        

                     --扣本次竞价者的钱放到后面  

                     UPDATE [dbo].[HB_AuctionHouse] SET

                         [BuyerId] = @BuyerId,

                         BuyerName = @BuyerName,

                         [BuyPrice] = @BuyPrice,

                         [LimitTime] = DATEADD(n,5,[LimitTime]) ,

                         BidCount = BidCount + 1

                     WHERE

                         [Idx] = @Idx AND BuyPrice < @BuyPrice

                  END

                  ELSE

                  BEGIN               

                     IF @@TRANCOUNT > 0 ROLLBACK

                     SELECT 6407

                     RETURN;

                  END

              END

              --对玩家游戏币验证,扣买家的点券$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

              --

              SELECT @BuyerPass9Name = Pass9Name FROM dbo.HB_User U

              INNER JOIN HB_MANAGER M ON U.UserGuid = M.UserId

              WHERE M.ManagerGuid = @BuyerUid   

 

                        

             

              INSERT @TBLPAY

              EXEC P_HBPAYACCOUNT_CONSUMEPOINT @BuyerPass9Name,@SRCID,@BuyPrice,@NOW

              IF NOT EXISTS(SELECT 1 FROM @TBLPAY WHERE CODE='5200')

              BEGIN

                  IF @@TRANCOUNT > 0 ROLLBACK

                  SELECT 6402  

                  RETURN;

              END              

           END   

       END

       ELSE--游戏币

       BEGIN

           IF @BidCount = 0--是否是第一次竞拍

           BEGIN

              IF @BuyPrice = @M

              BEGIN     

                     --PRINT 2        

                     UPDATE [dbo].[HB_AuctionHouse] SET

                         [BuyerId] = @BuyerId,

                         BuyerName = @BuyerName,

                         [BuyPrice] = @BuyPrice,

                         [LimitTime] = DATEADD(n,5,[LimitTime]) ,

                         BidCount = BidCount + 1

                     WHERE  [Idx] = @Idx 

                     --PRINT 3           

              END

              ELSE

              BEGIN

                     IF @@TRANCOUNT > 0 ROLLBACK

                     SELECT 6406  

                     RETURN;                 

              END

           END

           ELSE IF @BidCount > 0 --不是第一次竞拍

           BEGIN

              IF @BuyPrice > @M

              BEGIN            

                  --退回上一个竞价者的钱

                  UPDATE HB_ManagerProperty SET  

                     [Money] = [Money] + @M

                  WHERE ManagerId = CAST(@BeforeBuyerId AS UNIQUEIDENTIFIER)

--------------------给上一个竞价者发一个邮件,通知竞标失败

                    

                  --扣本次竞价者的钱放到后面  

                  UPDATE [dbo].[HB_AuctionHouse] SET

                     [BuyerId] = @BuyerId,

                     BuyerName = @BuyerName,

                     [BuyPrice] = @BuyPrice,

                     [LimitTime] = DATEADD(n,5,[LimitTime]) ,

                     BidCount = BidCount + 1

                  WHERE

                     [Idx] = @Idx AND BuyPrice < @BuyPrice

              END

              ELSE

              BEGIN               

                  IF @@TRANCOUNT > 0 ROLLBACK

                  SELECT 6407

                  RETURN;

              END

           END

           --对玩家游戏币验证

            IF EXISTS (SELECT * FROM HB_ManagerProperty WHERE ManagerId = @BuyerUid AND [Money] >= @BuyPrice)

            BEGIN

               UPDATE  HB_ManagerProperty

               SET [Money] = [Money] - @BuyPrice

               WHERE ManagerId = @BuyerUid

             

            END

            ELSE--没有足够的游戏币

            BEGIN

              IF @@TRANCOUNT > 0 ROLLBACK

              SELECT 6408

              RETURN;

            END

       END   

      

    END   TRY

    BEGIN CATCH

       IF @@TRANCOUNT > 0 ROLLBACK TRAN      

    END CATCH

    IF @@TRANCOUNT > 0

    COMMIT TRAN BIDUPTRAN

   

END

SELECT 0

RETURN 0

 

auctioneer_bot:电报机器人将收购拍卖师API Auctioneer_bot 电报机器人装备拍卖师API 立即下载

相关推荐

Tomcat漏洞——弱口令爆破

靶机:CentOS7 IP:192.168.100.40。攻击机:kali IP:192.168.100.60。版 权 声 明:本博客所有文章除特别声明外,均采用。文章版权归作者所有,未经允许请勿转载!作 者:PeiyuJue。

weixin_57379923的博客 909

魔兽世界单机(芒果3.3.5a)机器人操作命令大全

首先,自己新增加的机器人名字是需要在自己的同一个账号里面的才行! 首先,我们在游戏中创建一个战士人物,假设为“老大” 然后再建一个法师人物,名叫“法师宝宝” 用人物“老大”登录游戏,在出生点,调出对话框,输入 .botadd法师宝宝 回车,这样名叫“法师宝宝”的法师就自动登录进入游戏了,如果和你是同一个出生点,那么你现在就看到这个人物了(不在一个地点可以使用GM命令把机器人召...

wed110的专栏 6万+

AUTOSAR—TM模块介绍及使用概要

根据所要测量的场景不同,有1us16bit、1us24bit、1us32bit、100us32bit四种类型可选;TM模块在服务层,提供一些基于时间的服务功能,如测量CPU和任务的负载,周期执行一些回调函数。2、对于需要在不同时间执行不同逻辑的周期任务中,可以搭建时间状态机:参考Tm用户手册;定时器复位、获取时间宽度、定时器转换、定时器同步、繁忙等待。偏移定时器实例的参考时间,直接将定时器数值进行偏移;以1us16bit定时器类型为例,讲几个常用函数。同步两个定时器,把源定时器时间值给到目的定时器。

qq_42479987的博客 605

魔兽worldserver.conf 服务端配置文件说明

我是艾西,今天把很多小伙伴需要的魔兽worldserver.conf 服务端配置文件说明分享给大家,大家可以自己研究参考下 worldserver.conf 这个文件是服务端的配置文件,可以在这里做很多个性化修改注意:修改这个必须重启服务端才能生效首先这个文件要使用支持 utf-8 格式的文本编辑器,比如 VS code,sublime 等等,不要用记事本编辑下面就来说说其中的部分设置MaxOverspeedPings = 2,玩家超速检查,2 为正常检查,3+ 为加强检查(比 2 更难踢),0 为不检查超

V13807970340的博客 6801

手把手教你解决USB批量传输中512字节整数倍数据丢失问题

本文详细解析了USB批量传输中512字节整数倍数据丢失问题的根源,并提供了通过零长度包(ZLP)的解决方案。文章涵盖USB协议核心机制、ZLP实现代码示例(包括Android、Linux和Windows平台)、调试技巧及性能优化建议,帮助开发者彻底解决这一常见问题。

smartcontract5的博客 261

快衰落、慢衰落,平坦衰落、频率选择性衰落

目录一、大尺度衰落和小尺度衰落二、平坦衰落和频率选择性衰落1.反射墙、固定天线模型2.相干带宽和时延扩展三、快衰落和慢衰落1.反射墙、运动天线模型2.相干时间和多普勒扩展四、联系总结 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、大尺度衰落和小尺度衰落 移动无线信道的主要特征是信道强度关于时间和频率的变化,大致分两种: 大尺度衰落: .

weixin_45662974的博客 3万+

使用SpringMVC Restful风格搭建web项目(在线拍卖系统)

笔记: RESTful 风格的 webservice 越来越流行了, sun 也推出了 RESTful WebService 的官方规范: JAX-RS ,全称: Java API for RESTful WebService。该规范定义了一系列的注解 RESTful 简化了 web service 的设计,它不再需要 wsdl ,也不再需要 soap 协议, 而是通过最简单的 http ...

sinat_41897556的博客 708

栅格数据做相关性分析前的预处理(批量定义投影、栅格投影、重采样)

最近在做两个栅格数据的相关性分析,这个最主要的是两个栅格数的行列号是一致的(也就是说坐标系、分辨率一致),那么标准的栅格数据的分辨率是以米的形式存在的,但是有一些栅格数据是以度为单位存在的,所以在做分析前,一定要先把其转换为米,否则在重采样的时候就会出错。(相关文章——栅格数据以度为单位变为以米为单位的简单做法)当然,在变其分辨率的单位前,一定要将其坐标系转换为一致。所以就有以下的步骤(如何将两个栅格数据的坐标系、分辨率的单位和分辨率一致) 1.首先,要看两个栅格数据的坐标系是否一致,如果不一致,要先统一到

qq_41828818的博客 8350

拍卖功能涉及到多表操作的问题 [全部放在存储过程中处理]

情景描述:   在线拍卖,客户浏览拍卖的商品,对商品进行出价时的一系列的操作   涉及的表:商品表goods 、用户表users 、订单表orders --1 用户表 create table Users ( uId int identity(1,1) primary key, loginId nvarchar(50) not null, loginPwd nv...

diao348697428的博客 276

58.Sobel边缘检测算子

注:在梯度运算中,很可能会出现负的灰度值,我们不能再采用uint8类型作为像素的数据类型,而是采用了CV_16S或者CV_32F这种有负数范围的类型,运算结果里的负数也不能不处理,否则在显示的时候就会被截断为0,这样就会丢失边界信息。如下图所示,对中心像素Z5求取多个方向的灰度差分,对于Z5的8邻域,分为4个方向,即对角线和水平垂直4个方向对:(z1, z9) ,(z2, z8), (z3, z7), (z6, z4) 给定邻域方向梯度矢量g的幅度为:|g| = <像素灰度差分>/<相邻像素的距离>。

twnkie的博客 4884

PINN物理信息网络 | 物理信息硬约束下的混合专家训练框架

PINN物理信息网络 | 物理信息硬约束下的混合专家训练框架

算法如诗的博客 879

【附源码】计算机毕业设计“臻宝”书画竞拍系统(java+springboot+mysql+mybatis+论文)

后端服务接收到请求后,执行相应的业务逻辑处理,这通常包括与MySQL数据库的交互,如查询数据、插入记录、更新或删除数据等操作。这样,前端Vue.js和后端Spring Boot框架的接口紧密协作,而MySQL数据库则作为数据存储和管理的核心,确保了整个系统的数据一致性和高效处理。随着艺术品市场的繁荣,书画作品作为一种重要的文化资产,其竞拍活动日益频繁。因此,研究并开发一个界面友好、操作简便、安全可靠的"臻宝"书画竞拍系统,对于促进艺术市场的健康发展,保护买卖双方的合法权益具有重要的现实意义。

睿轩毕设项目 444

【温室气体数据集】全球总碳柱观测网络 TCCON

【温室气体数据集】全球总碳柱观测网络 TCCON

WW、forever的博客 437

ssm/php/node/python拍卖平台

探讨bnwr9拍卖平台的发展背景不仅有助于理解其在当前市场中的定位和策略,还能够为其他同类平台提供借鉴和参考。通过分析bnwr9的发展历程、技术架构、用户互动方式以及市场反馈,可以揭示其成功的关键因素,同时也能够发现潜在的挑战和风险。随着消费者习惯的转变和技术创新的不断进步,拍卖平台需要不断创新以适应变化,研究bnwr9的背景和发展将有助于预测未来趋势,指导平台调整战略,保持竞争优势。其中,bnwr9作为一个新兴的拍卖平台,凭借其独特的运营机制和服务理念,在市场上占据了一席之地。

天天 程序设计 1097

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

各种数据库的连接语句

http://www.connectionstrings.com

HERO 1263

VC中sqlite的使用

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

程序员必看:关于SQL Server的若干注意事项

如果你正在负责一个基于SQL Server的项目,或者你刚刚接触SQL Server,你都有可能要面临一些数据库性能的问题,这篇文章会为你提供一些有用的指导(其中大多数也可以用于其它的DBMS)。 在这里,我不打算介绍使用SQL Server的窍门,也不能提供一个包治百病的方案,我所做的是总结一些经验----关于如何形成一个好的设计。这些经验来自我过去几年中经受的教训,一直来,我看到许

HERO 877

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

Oracle PL/SQL语言基础

http://www.oracle.com.cn/viewthread.php?tid=15090

HERO 807

使用VS.NET2003编写存储过程

关键:.NET来  源:微软MSDN使用VS.NET2003编写存储过程 作者:Mike Amundsen 发文时间:2003.12.18目录:为什么不使用特殊的查询语句将存储过程添加到 Visual Studio .NET 数据库项目中使用 Visual Studio .NET 添加存储过程使用自定义标量函数 下载 Jump

HERO 794

SQL Server 索引结构及其使用

http://www.vckbase.com/document/listdoc.asp?mclsid=11&sclsid=1111

HERO 743

针对 .NET 开发人员的存储过程评估

http://www.microsoft.com/china/msdn/library/langtool/vsdotnet/storedprocsnetdev2.mspx

HERO 742

SQL SERVER基础知识,掌握超过15项,可以算是基础比较好的了,月薪能过万了。

SQL SERVER基础知识,掌握超过15项,可以算是基础比较好的了,月薪能过万了。

HERO 654

【Unity知识速递】第7期 Unity 6.6 深度解析:WebGPU 正式版与 WebAssembly64,Web 游戏的内存革命

如何启用 Wasm64?需要注意的是,Wasm64 需要浏览器支持 Memory64 提案,目前主流浏览器的最新版本都已支持。一句话总结: Unity 6.6 用 WebGPU 转正、Wasm64 16GB 内存和渐进式加载三连击,将 Web 游戏的体验天花板又往上推了一大截——Web 平台不再是"妥协版",正在成为真正的一等公民。Unity 6.6 新增了 WebAssembly64(Wasm64) 构建选项,这可能是本次更新中对 Web 游戏开发者影响最大的一项升级。

crystal_WJT的博客 427

设计模式(unity游戏研发版)

当你使用图形用户界面类时通常会遇到一个问题。比如,你创建了自定义按钮类并允许客户端在按钮中注入自定义代码,这样当用户按下按钮时就会触发这些代码。观察者模式允许任何实现了订阅者接口的对象订阅发布者对象的事件通知。你可在按钮中添加订阅机制,允许客户端通过自定义订阅类注入自定义代码。在Unity中,这就像UnityEvent在Inspector中绑定多个回调。

m0_63330263的博客 102

我给 DeepSeek 大肥鱼做了一款马里奥式闯关游戏

当全网都在把大肥鱼做成直播虚拟主播的时候,我决定给她做一款横版闯关游戏。

2301_79028807的博客 901

Claude Fable 5.2 登顶:65 分、单发做游戏,和一份 $26.54 一单的账单

Anthropic 发布 Claude Fable 5.2:AA 智能指数 65 分登顶历史第一,但性能 #71、成本 #73、冗余度 #72——最强能力、最贵成本、最慢速度的矛盾体。同底层 Mythos 5.2 无护栏反而更强。文章拆解:65 分构成、官方实战验收、基准提升真伪、一条提示词一晚做出街机游戏的完整流水线(自写机器人跑完 12 关自检)、$26.54 账单与 98% 缓存折扣下的真实成本重估。

johnsong2009的博客 238
上一篇: 游戏主循环
下一篇: AOP技术基础
comeon_data
博客等级 码龄22年 15粉丝 63原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值