MySql 高性能 5.5 维护索引和表 189页

MySQL存储过程实战:高性能强一致性数据操作指南 MySQL存储过程是一种在数据库服务端预编译、缓存执行计划的可编程SQL对象,其核心原理是将多步DML操作封装为原子性事务单元,规避网络开销与应用层ORM陷阱。相比普通SQL脚本,它通过执行计划复用显著提升高频调用性能,并依托FOR UPDATE行锁与事务控制保障强一致性。技术价值体现在降低连接池压力、消除N+1查询、统一错误处理与并发安全控制。典型应用场景包括电商下单、资金转账、库存扣减及定时报表聚合等需多表协同与数据准确性的业务逻辑。本文深入解析CREATE PROCEDURE定义规范、CALL调用机制 阅读详情

维护表有三个主要目的:

1 找到并修复损坏的表

2 维护准确的索引统计信息

3 减少碎片


5.5.1 找到并修复损坏的表

   

对于MyISAM 存储引擎  ,表损坏通常是系统崩溃导致的。

其他引擎也会由于硬件问题 MySql本身的缺陷或者操作系统的问题导致。


Innodb 引擎的表出现损坏,一定是出现了严重的错误。一般不会出现损坏,因为设计保证了它不容易出现损坏。

出现损坏的原因:

1 数据库硬件问题,比如内存或者磁盘问题。

2 数据库管理员的 误操作,例如在MySq外部操作了数据文件。

3 Innodb本身缺陷。

常见的错误 比如尝试使用rsync 备份Innodb导致。不存在查询能让Innodb表损坏,如果一条查询导致Innod表损坏,一定是遇到BUG 而不是查询问题。


损坏的索引会导致的问题:

 1 查询返回错误结果或者莫须有的主键冲突问题。


如何修复:

 1 CHECK TABLE 检查是否发生表损坏。(有些存储引擎不支持该命令,有些通过其他的选项控制完全检查表的方式)。CHECK 通常能找到大多数的表和索引的错误。

  2 REPAIR TABLE 来修复损坏的表,如果存储引擎不支持和可以通过ALTER 操作来重建表。 

     比如 针对Innodb表 AlTER TABLE innodb_1 ENGINE=INNODB;

 3 使用离线工具 比如myisamchk 。

 4 将数据导出一份然后重新导入。

 5 设置 innodb_force_recovery 参数进入Innodb 强制恢复模式来修复数据。可以参考mysql 手册。

 6 使用开源的InnoDB 数据库恢复工具 InnoDB Data Recovery Toolkit 直接从InnoDB 数据文件恢复数据。

如果损坏的系统区域或者而是表的行数据而不是索引,那么就要从备份恢复表,或者尝试从损坏的数据文件中尽可能的恢复数据。


5.5.2  更新索引统计信息

Mysql 查询优化器通过两个API 了解存储引擎的索引值分布信息,用来决定如何使用索引。

records_in_range()  通过向存储引擎传入两个边界值获取这个范围大概有多少条记录。MyISAM 返回精准值 InnoDB返回估算值。

info()  返回各种类型的数据,包括索引的基数,(每个键值有多少条记录)


优化器根据存储引擎返回的估算数据进行sql优化。如果表没有统计信息或者统计信息不准确可能就是做出错误的决定。


各存储引擎的统计信息的支持:

1 Memory 引擎不存储索引统计信息。

2 MyISAM 索引统计信息储存在磁盘上,ANALYZE TABLE  需要一次全索引扫描来计算索引基数,整个过程会锁表。

3 InnoDB也不在磁盘存储索引统计信息,通过随机索引访问进行评估将信息存储在表中。

可以使用 SHOW INDEX FROM TABLE 命令查看索引的基数。Cardinality 显示存储的估算索引列。 在Mysql5.5 之后可以通过 INFORMATION_SCHEMA.STATISTICS表查询这些信息。

InnoDB 通过抽取样本计算统计信息,老版本样本页面是8 ,新版本通过 innodb_stats_samole_page 来设置样本页数。可以设置更大的值。生成更准确的索引信息。

什么时候生成统计信息:

1 InnoDB 表会在首次打开。

2 执行 ANALYZE TABLE 

3 表大小发生非常大的变化。表大小变化超过16分之1 或者新插入20亿行数据 会触发。

4 InnoDB 在打开某些INFORMATION_SCHEMA 表 或者SHOW TABLE STATUS 和 SHOW INDEX 或者客户端开启自动补全功能的时候会触发。


更新统计信息可能会导致什么问题:

1 导致大量的锁。

2 启动时间长。

可以关闭 innodb_stats_on_metadata 参数 来避免这些问题。


Percona 版本 使用的是XtraDB 引擎而不是 原生InnoDB引擎,可以通过InnoDB_staus_auto_update 参数禁止自动采样。这样就需要手动ANALUZE TABLE 更新统计信息。可以用这个参数固化查询计划。


如果想要稳定的执行计划,并在系统重启后更快的生成统计信息,可以使用系统表持久化这些表的统计信息。

Percona 5.1 和Mysql 5.6 版本都加入这个特性 分别是 InnoDB_use_sys_stats_table和 Innodb_analyze_is_persistent


5.5.3 减少索引和数据碎片

B tree 索引可能会碎片化,碎片的索引会以很差或者无序的方式存在磁盘上。

范围扫描或者索引覆盖扫描 速度都会降低。

表的数据存储也可能碎片化,分为三种“

1 行碎片。数据行被存储在多个地方的多个片段中。

2 行间碎片。逻辑上顺序的页或者行在磁盘上不是顺序存储。对全表扫描或者聚簇索引扫描有很大影响。本来可以顺序扫描,现在就不行。

3 剩余空间碎片。数据页有大量的空余空间,导致服务器读取大量不需要的数据。

MySIAM 表 三种碎片都会存在,InnoDB不会出现短小行碎片,InnoDB会移动并重写到一个片段上。


如何整理数据:

1 OPTIMIZE TABLE 

2 导出 导入 整理数据

3 对于MySIAM 可以通过排序算法重建索引方式消除碎片

4 新版本的InnoDB 提供在线添加删除索引的功能 先删除再重建索引来消除索引碎片。

5 ALTER TABLE  tablename  ENGINE=<engine>; Percona Server 开启了 expand_fast_index_creation 参数,可以同时消除表碎片和索引碎片。对于标准MySql版本只会消除表碎片(实际是聚簇索引) ,可以先删除所有索引,然后重建表,最后重新创建索引的方式模拟Percona Server 的这个功能。


可以通过实际测量来确认是否需要消除索引和表的碎片,percona 的XtraBackup 有个--stats参数以非备份的方式运行,而只是打印索引和表的统计信息,包括页中的数据行,和空余空间,来确定数据的碎片化程度,另外也要参考数据是否已经达到稳定程度,如果碎片化整理将表压缩到一起可能反而导致后续的更新操作触发一系列的页分裂和重组,会对性能造成不良的影响。直到数据再次达到稳定。


手机归属地数据库:从原理到高性能服务架构实战 在数据处理与用户服务领域,数据映射与查询是基础且关键的技术环节。其核心原理在于通过高效的键值对结构,将输入标识快速关联到预定义的属性信息。这项技术的价值在于为上层业务提供实时、准确的数据支撑,是构建高性能、高可用系统的基石。在工程实践中,它广泛应用于风控、营销、数据清洗等场景,用以实现用户地域识别、行为分析和体验优化。本文聚焦于手机号归属地查询这一典型应用,深入探讨如何构建一个毫秒级响应的本地数据库服务。文中将结合**数据清洗**与**Redis缓存**等热词,解析从数据获取、存储设计到服务化部署的全链路实 阅读详情

相关推荐

GLM-5对齐Claude Opus 4.5:国产编程AI的工程语义突破

编程大模型不是参数堆砌,而是对工程语义的深度建模能力——它需理解TypeScript接口契约、React依赖数组副作用、Python异步上下文生命周期等真实开发语义。GLM-5通过代码变更序列训练、终端交互日志学习与动态稀疏注意力(DSA)机制,在SWE-bench-Verified和Terminal Bench 2.0等权威测试中逼近Claude Opus 4.5,实现从‘能写代码’到‘懂工程决策’的跃迁。其技术价值在于将长上下文(202K tokens)、低显存占用(3.2GB GPU)与高精度归因能力

weixin_34310369的博客 474

SQL物化视图实战:从原理到高性能查询优化

物化视图是关系型数据库中实现预计算与物理存储的关键机制,其本质是将复杂查询结果固化为可索引、可统计、事务一致的物理表。它不同于普通视图(仅重写SQL)和应用缓存(弱一致性),而是依托数据库内核提供强一致性保障与查询重写能力。技术价值体现在大幅降低OLAP类聚合查询的I/O与CPU开销,典型场景如电商复购率分析、金融T+1指标汇总、数仓分层加速等。本文聚焦PostgreSQL 15+原生实现,深入解析创建、索引、并发刷新与自动查询重写四大核心环节,结合真实慢查询(14.2秒→12毫秒)案例,揭示SQL Mat

weixin_33984032的博客 327

「大数据就业」大数据开发:大数据可视化前端资深研发工程师

学习大数据不做科研研究就得选择工作,商业环境下大数据求职就业有哪些?大数据架构师、资深研发工程师、工程师、管理员、运维、风控等具体岗位职责与任职要求又是怎样的呢?一起来了解下。 大数据架构师 岗位职责: 1、 负责公司大数据平台的设计和开发,负责hadoop、storm、spark、yarn等云计算平台的开发和优化;制定数据架构规范,指导团队落地 ; 2、 负责数据基础架构和数据处理体...

大数据基础入门教程 1075

mysql 5.5 索引建设(表rebuild)过程中的系统崩溃的恢复

mysql5.5实现了fastindexcreation对于主键索引(clusterkey)还是没有发办法快速建立索引,还是要copy表的数据到临时表对于二级索引的建立,就可以实现快速建立索引了,...

cudi7618的博客 444

MongoDB文档模型与聚合管道实战:现代应用数据架构指南

MongoDB是一种面向现代应用的文档型数据库,其核心在于以JSON-like BSON格式存储自包含、可变结构的数据单元,摆脱传统关系型数据库的刚性表结构约束。它基于WiredTiger存储引擎实现高效读写,并通过原生支持嵌套、内嵌关联与动态schema,显著提升迭代效率与查询性能。技术价值体现在敏捷建模、免JOIN聚合、高并发承载与弹性伸缩能力,广泛应用于电商中台、IoT平台、实时推荐及SaaS多租户等场景。本文聚焦文档建模思维跃迁、精准索引设计与聚合管道实战,深入解析从本地开发到Atlas生产部署的全

weixin_33725807的博客 308

springboot消防安全知识科普系统-计算机毕业设计源码71705

(1)用户认证界面。提供用户上传头像、填写昵称的功能,实现用户注册和登录。 (2)答题界面。针对不同类型的题目提供相应的界面和交互方式。 (3)答题逻辑和计分界面。设计合理的答题逻辑,即根据用户选择和填写的答案,判断答题是否正确,并计算得分,同时提供实时反馈,告知用户当前答题情况。 (4)排行榜界面。提供排行榜功能,展示用户的答题成绩和高分榜单。 (5)答题记录界面。保存用户的答题记录,并提供答题历史记录的查看功能, 方便用户回顾和分析自己的答题情况。 (6)活动规则界面。介绍活动时间、竞答内容和竞答规则。

Biye_Design的博客 277

MySQL 数据表修复方法

本文主要讲check table和repair table指令;

wu_zhiyuan的博客 9020

Marvell车载以太网交换机芯片88Q5050

Marvell推出了四款车载用交换机芯片,88Q5050,88Q5050, 88Q5072和88Q6113。其中88Q5030有5 Port用于通信,88Q5050有8 Port用于通信,5072与6113有11 Port用于通信。由于项目中用到了88Q5050,所以本文中只涉及到88Q5050的内容。本文是对使用88Q5050的梳理和总结。

zhuwade的博客 2万+

【MySQL精通之路】SQL语句(7)-数据库管理语句(3)-表维护语句

使用。

Anakki的博客 1475

MPU6050数据融合避坑指南:当欧拉角遇到万向节死锁,我们该如何处理?

本文深入探讨了MPU6050在姿态解算中遇到的欧拉角万向节死锁问题,提供了四元数解决方案及工程实践策略。通过分析死锁现象的本质,介绍四元数的优势与实现方法,并给出必须使用欧拉角时的三种应对方案,帮助开发者有效规避数据跳变和解算失效问题。

weixin_30415113的博客 543

UE5.3.2 + VS2022社区版在Win11上的C++编译环境配置全解

Unreal Engine 5的C++开发依赖严格的工具链协同,其核心在于Visual Studio编译器版本、Windows SDK与引擎构建系统(UBT)的精准匹配。UE5.3.2强制要求MSVC v143.4(即VS2022 17.4+)及Windows 11 SDK 10.0.22621.0,任何偏差都会引发LNK2019链接失败、C1083头文件缺失或MSB8066构建中断等典型错误。该配置不仅关乎安装顺序,更涉及注册表清理、PATH环境变量、SDK路径注入与运行时DLL加载等底层机制。适用于Wi

weixin_33978722的博客 368

MySQL数据库InnoDB数据恢复工具使用总结

本文从实际使用经验出发,介绍一款开源的MySQL数据库InnoDB数据恢复工具:innodb-tools,它通过从原始数据文件中提取表的行记录,实现从丢失的或者被毁坏的MySQL表中恢复数据。例如,当你不小心执行DROP TABLE、TRUNCATE TABLE或者DROP DATABASE之后,可以通过以下方式恢复数据。 在介绍innodb-tools工具进行数据恢复之前,首先明确以下几点: 1、这个工具只能对InnoDB/XtraDB表有效,而无法恢复MyISAM表(注: Percona号称有一套用于恢

xiaochengxuyuan1的博客 1360

【超详细】磁力计数据读取--以IST8310为例

第一章讲了IST8310的特性,I2C通信,最高支持400kHz通信速率,14位或者16位自适应数据输出等特性第二章讲了内部结构第三章讲了电气特性第四章讲了如何联系他们然后数据手册就没了。。。在大疆的开发手册中找到了寄存器的手册,如下:点开I2C配置选项, 下图是配好的:观察IST8310的数据手册,发现其支持最大400kHz的I2C通信速率,也就是快速I2C模式,所以第一行I2C Speed Mode我们选Fast Mode同时不要忘记了在C板中I2C3的两个IO口分别是PA8和PC9(一般来说都是这两个

lmh_12138的博客 1万+

MySQL之备份与恢复(九)

复制和基于时间点的恢复使用的是相同的技术:服务器的二进制日志。这意味着复制在恢复时会是个非常有帮助的工具,哪怕方式不是很明显。下面将演示一些可以用到的方法。这里列出来的不是一个完整的列表,但应该可以为你根据需求设计恢复方案带来一些想法。记得编写脚本,并且对恢复过程中需要用到的所有技术进行预演。shijian只有没有任何多表的UPDATE、DELETE或INSERT语句操作这个表时,上述流程才是可行的。

Cover_sky的博客 1336

Nacos2.X 源码分析:为订阅方推送、服务健康检查、集群数据同步、grpc客户端服务端初始化

而Nacos2.X 从http请求改为了grpc请求的方式了,在健康检查这方面就是基于长连接来实现的。客户端发送心跳是在构建grpc连接时会有一个线程每隔5s发送一次,NacosClient端发送心跳的代码在。我们能大致猜测:当一个服务的实例进行了更新,那么是不是应该推送给所有订阅了该服务的客户端?当我订阅了某个服务,是不是应该将该服务信息推送给我?在服务实例检查检查流程中,如果出现了要注销的服务实例就会发布。在服务发现时,进行订阅服务的最后会发布一个。服务注册与服务订阅流程中发布的事件最终会被。

qq_44027353的博客 1594

uniapp - 最新详细实现web-view网页与安卓苹果App端之间互相通信功能,苹果app/安卓app平台与内嵌webview组件内的网页进行相互传值,内置网页与app双向实时通信,详细示例代码

uni-app,Android安卓,苹果ios,app,内嵌webview,第三方H5网页,app和web-view通信传值,web-view引入的页面向App主应用传递数据,App端与webview端相互通信,App端和H5端webview之间的通信,uniapp实现webview和APP之间的传值通信,如何互相传递对象数据,数据传递了接收不到,web-view页面向app内发送消息,监听传递的参数,uni-app和web-view页面相互传参,报错怎么办,跨域,屏幕空白出错,数据交互,解决手机物理返回按

🏆 前端领域优质创作者 4742

MySQL问答200

本文涵盖MySQL全栈面试核心内容,包括:基础概念(关系型数据库特性、体系结构);存储引擎对比(InnoDB/MyISAM);索引原B+树、聚簇索引)与优化策略;事务ACID与隔离级别实现;锁机制(行锁、间隙锁)与MVCC原理;日志系统(redo/undo/binlog);SQL优化与执行计划分析;高可用方案(主从复制、分库分表);InnoDB底层机制(Buffer Pool、Checkpoint);以及MySQL 8.0新特性。

weixin_72753562的博客 827

BDD测试用例:Playwright的MCP Server实战

Playwright MCP Server建立了大模型和真实的浏览环境之间的桥梁,可以让大模型操作多款浏览器完成测试任务。

Criss@陈磊 455

基于SpringMVC的宠物之家管理系统的设计和实现-计算机毕设 【课程设计】 31845

为应对上述问题,本文深入剖析当前宠物管理行业面临的挑战,运用 Spring Boot、Java、MySQL 等技术搭建系统基础架构。在开发进程中,不仅实现了系统的各项基础功能,像普通用户的首页展示、通知公告查看、宠物资讯获取,以及管理员的后台首页管理、系统用户管理等,还着重优化了各业务流程。对于普通用户,打造流畅的商城管理流程,涵盖购物车、订单及地址管理;提供便捷的宠物信息查询、领养寄养等功能。对于管理员,实现全面且精细的宠物分类、信息、领养归还及寄养等管理功能。同时,创新性地将多种实用功能与业务流程深度融

WeiXin_DZbishe的博客 1706

DICOM图像知识:深入详解DICOM的层级关系

解析DICOM的四个主要层级:Patient(患者)、Study(检查)、Series(序列)和SOP(服务-对象对),探讨它们之间的关系、各自的唯一标识符以及在实际应用中的用途

编程技术探索者,分享C/C++、C#、Java、数据库等开发经验,聚焦实战技巧与AI兴趣,助力编程爱好者成长。 3305

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【课程设计】springboot企业人事管理系统-计算机毕业设计源码31376

(1)用户模块:主要完成用户查看企业信息,进行信息登记、储存信息以及修改密码等功能。 (2)管理员模块:主要完成用户管理、人事信息管理、员工信息管理以及系统管理等功能。

专业程序开发源的博客 3008

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

基于Spring Boot高校党员教育和管理系统的设计与实现-计算机毕设 【课程设计】 18581

首页:展示系统的主要信息和最新动态,方便用户快速获取重要信息。 通知公告:查看系统内发布的通知和公告,了解最新动态。 新闻资讯:获取党的相关新闻和资讯,增强对党的了解。 党务信息:查看与党务相关的信息,确保对党务活动的知晓。 党员活动:浏览和参与各类党员活动,增强组织归属感。 我的账户:管理个人账户信息,确保信息的安全和隐私。 个人中心: 个人首页:展示用户的基本信息和动态。 入党信息:查看和管理个人的入党申请信息。 党员信息:维护个人的党员基本信息。 转正申请:提交和查看转正申请的进度。 活动报名:报名参

WeiXin_DZbishe的博客 771

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

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

(课程设计)基于Java的网上出售系统的设计与实现-计算机毕设 附源码 31150

注册用户功能 注册用户是指普通消费者,他们通过系统注册后,可以享受以下功能: 登录注册:用户可以通过注册账号并登录系统,使用该账号进行各项购物操作。系统支持邮箱或手机号码注册,确保用户信息的安全性。 首页:用户登录后,首页展示了最新的商品推荐、热门促销活动、商城公告等信息,方便用户浏览和购物。 通知公告:系统会通过公告板块向用户推送商城的最新动态、促销活动以及其他通知,确保用户及时了解商城信息。 商城资讯:该模块提供了有关商城的新闻和资讯,用户可以了解商城的最新动态、商品推荐、以及促销活动等。 商城中心:这

ID3461074420的博客 1546

基于SpringBoot的心理健康服务分享平台 计算机毕业设计源码32944

本系统主要由普通用户、咨询师及管理员三大角色组成。普通用户可通过注册并经过管理员审核后登录系统,享受包括但不限于查看首页资讯、参与社区讨论、进行健康自测、预约咨询师等服务。咨询师则可以通过系统与用户建立联系,参与社区交流,并管理自己的预约记录、对用户的健康自测结果进行点评等。管理员的核心职责在于维护系统的正常运行,包括但不限于审核新注册用户、管理各类信息(如健康资源、平台公告等)、查看并回复用户留言等,确保平台信息的真实性和有效性。.......

Biye_Design的博客 200

基于springboot校园足球社团管理平台的设计与实现-计算机毕设 【课程设计】 08798

前端社团成员模块: (1)注册登录:用户可以通过注册功能创建新账户,输入必要的信息如用户名、密码和邮箱等。登录功能允许用户输入已注册的凭证来访问个人账户和社团资源。 (2)首页:首页展示了一个动态轮播图,提供最新足球资讯,显示场地信息,列出即将举行的足球比赛活动,以及展示球队和社团的相关信息,方便用户快速了解社团动态。 (3)交流论坛:用户可以浏览论坛帖子,对感兴趣的内容进行点赞、收藏和评论。此外,用户还可以发布自己的帖子,分享观点和信息,促进社团内部的交流和讨论。 (4)通知公告:此模块用于发布和查看社团

WeiXin_DZbishe的博客 771

数据库批量更新实战:从CASE WHEN到MyBatis/Python高效实现

数据库的UPDATE操作是数据持久化层的核心技术之一,它直接关系到业务数据的准确性和一致性。其原理是通过修改表中现有记录的字段值来反映业务状态变化,这要求开发者必须精准控制WHERE条件以避免数据覆盖风险。在技术价值层面,高效的批量更新能显著提升系统吞吐量,减少数据库锁竞争,是应对电商库存同步、价格调整等高频场景的关键优化手段。应用场景广泛覆盖商品管理、订单状态流转、用户积分批量操作等核心业务模块。本文聚焦于使用CASE WHEN语句和MERGE操作实现复杂条件更新,并深入探讨在Java(MyBatis、J

weixin_34080951的博客 330
上一篇: device eth0 does not seem to be present
下一篇: Sqlserver 游标
取壳羊
博客等级 码龄15年 5粉丝 128原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值