MongoDB小课堂: 高级查询操作符与游标管理综合指南之深度整合逻辑操作符、字段处理、数组查询与游标控制的最佳实践

AutoSAR配置视频讲解:简介 AutoSAR实验视频讲解:闪烁一颗LED实验【简介】 大家好,欢迎来到雪云飞星的《AutoSAR实验课的视频讲解》专栏。看过《AutoSAR入门到精通系列讲解》的朋友们应该对博主不陌生,有很多朋友加了博主的微信成为了好友,还有朋友约过线下见面,博主很高兴大家能从我的博客中获得一些收获。在专栏里博主挖了很多坑,当时也说过想要录制一个AutoSAR的配置视频教程,素材在20年初就已经录好,中间各种原因足足鸽了一年。当时因为一些技术原因只能通过博客的图文形式展示出来,现在我们剪辑了视频,请了专业的配音,希望以视 阅读详情

比较操作符:$in 与 $nin


语义合并说明:整合三篇博客的语法定义、应用场景与边界问题,保留最完整示例。

// 语法模板
{ <字段名>: { $in: [<值1>, <值2>] } }   // 匹配字段值在数组内的文档
{ <字段名>: { $nin: [<值1>, <值2>] } }  // 匹配字段值不在数组内的文档

案例:

  1. $in 基础查询:
    db.accounts.find({ name: { $in: ["Alice", "Charlie"] } }) // 返回 name 为 Alice 或 Charlie 的文档
    
  2. $nin 的边界问题:
    db.accounts.find({ name: { $nin: ["Alice", "Charlie"] } }) // 返回非 Alice/Charlie 的文档,包括无 name 字段的文档
    
  3. 字段缺失处理:
    db.accounts.find({ 
      "id.type": { $ne: "checking", $exists: true } // 排除字段缺失的文档
    })
    

要点:

  • $in 优化多值匹配,$nin 会包含字段缺失文档
  • 结合 $exists 避免意外匹配空字段

逻辑操作符:$not、$and、$or、$nor


数据整合:合并操作符语法表与简写优化策略,补充性能建议

操作符语法示例特性与优化
$not{ balance: { $not: { $lt: 500 } } }返回不满足条件的文档(含字段缺失)
$and{ balance: { $gt: 100, $lt: 500 } }同字段多条件可简写,默认逗号分隔等效 $and
$or{ $or: [{balance:{$lt:100}}, {balance:{$gt:500}}] }等值查询优先用 $in(如 {name:{$in:["Alice"]}})
$nor{ $nor: [{name:"Alice"}, {balance:{$lt:100}}] }所有条件均不成立时匹配(含字段缺失)

案例:

// $nor 复杂条件:非 Alice/Charlie 且余额 ≥100 
db.accounts.find({
  $nor: [
    { name: "Alice" },
    { name: "Charlie" },
    { balance: { $lt: 100 } }
  ]
})

要点:

  • $and 简写提升代码简洁性,$or 用 $in 优化性能
  • $not 和 $nor 需谨慎处理字段缺失问题

字段操作符:$exists 与 $type


语法与功能:

操作符语法功能说明
$exists{ <字段名>: { $exists: <布尔值> } }true:匹配包含该字段的文档;false:匹配不包含该字段的文档。
$type{ <字段名>: { $type: <数据类型名> } }匹配字段值为指定 BSON 类型的文档(支持类型名或序号)。

数据整合:补充 BSON 类型表(合并博客2数据),增强类型查询说明。

// 语法模板
{ <字段名>: { $exists: true } }    // 匹配包含字段的文档 
{ <字段名>: { $type: <数据类型> } } // 匹配指定BSON类型的文档

案例:

  1. 字段存在性检查:
    db.accounts.find({ "id.type": { $exists: true } }) // 仅返回含 id.type 字段的文档
    
  2. 多类型匹配:
    db.accounts.find({ _id: { $type: ["string", "object"] } }) // _id 为字符串或对象类型
    

BSON 类型对照表:

类型名称BSON 编号用例说明
String2{ $type: 2 }
Object3嵌套文档
Array4数组字段
Null10匹配 null 值
Boolean8布尔类型

要点:

  • $exists 解决字段缺失导致的误匹配
  • $type 支持多类型筛选,兼容编号或名称

数组操作符:$all 与 $elemMatch


语法差异:

操作符语法匹配条件
$all{ <数组字段>: { $all: [<值1>, <值2>] } }数组字段必须包含查询值列表中的所有元素。
$elemMatch{ <数组字段>: { $elemMatch: {<条件>} } }数组字段中至少有一个元素满足指定条件。

去重与增强:合并嵌套数组示例,补充组合查询场景

// 语法模板
{ <数组字段>: { $all: [<值1>, <值2>] } }          // 数组必须包含所有值
{ <数组字段>: { $elemMatch: { <条件> } } }        // 至少一个元素满足条件

案例:

  1. $all 精确匹配:
    db.accounts.find({ contact: { $all: ["China", "Beijing"] } }) // 需同时包含 China 和 Beijing
    
  2. $elemMatch 范围查询:
    db.accounts.find({ contact: { $elemMatch: { $gt: 1000, $lt: 2000 } } }) // 存在元素值在 1000-2000 之间
    
  3. 组合查询:
    db.accounts.find({
      contact: {
        $all: [
          { $elemMatch: { $gt: 1000, $lt: 2000 } }, // 要求两个独立元素满足不同条件
          { $elemMatch: { $gt: 3000, $lt: 4000 } }
        ]
      }
    })
    

要点:

  • $all 匹配完整元素,$elemMatch 匹配元素属性
  • 组合使用可处理多条件数组查询

正则表达式操作符 $regex


语法整合:统一两种语法场景,强调 $in 联用限制

// 常规语法
{ name: { $regex: /lie/, $options: "i" } } // 不区分大小写匹配 "lie"
 
// $in 联用语法(必须显式声明)
{ name: { $in: [/^C/i, /^J/i] } }         // 匹配以 C 或 J 开头的名称 

案例:

db.accounts.find({ name: { $regex: "LIE", $options: "i" } }) // 忽略大小写查询 

要点:

  • $in 中必须使用 { $regex: /pattern/ } 语法
  • $options: "i" 实现不区分大小写匹配

游标管理

核心机制:

  • find() 返回游标,默认返回前20个文档
  • 闲置10分钟后自动关闭,noCursorTimeout() 可禁用

游标方法速查表:

方法功能描述示例
cursor.hasNext()检查是否有更多文档while (cursor.hasNext())
cursor.next()获取下一文档printjson(cursor.next())
cursor.limit(N)限制返回文档数(N=0 无限制)cursor.limit(5)
cursor.skip(N)跳过前 N 个文档cursor.skip(10)
cursor.noTimeout()禁用自动关闭cursor.noTimeout()

案例:

// 分页查询(跳过第1条,限制返回1条)
const cursor = db.accounts.find().skip(1).limit(1); 
cursor.forEach(printjson); // 遍历结果
 
// 禁用超时(需手动关闭)
const longCursor = db.accounts.find().noCursorTimeout(); 
longCursor.close(); // 避免内存泄漏 

hasNext() + next():遍历游标结果集:

const cursor = db.accounts.find({ "name": "George" });  
while (cursor.hasNext()) {  
  printjson(cursor.next());  
}  

forEach():简化遍历:

db.accounts.find({ "name": "George" }).forEach(printjson);  

limit() + skip():分页控制:

// 返回第二篇文档(跳过第一篇)  
db.accounts.find().skip(1).limit(1);  

要点:

  • limit(0) 取消返回数量限制
  • 长期游标需手动关闭防止资源泄露

游标超时管理

  • 禁用超时:
    const cursor = db.accounts.find().noCursorTimeout();  
    
  • 手动关闭:
    cursor.close();  // 避免内存泄漏 
    

综合应用示例


1 ) NestJS + MongoDB

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { AccountDocument } from './account.schema';
 
@Injectable()
export class AccountService {
  constructor(
    @InjectModel('Account') private accountModel: Model<AccountDocument>
  ) {}
 
  // $in 查询(多值匹配)
  async findUsersByName(names: string[]): Promise<AccountDocument[]> {
    return this.accountModel.find({ name: { $in: names } }).exec();
  }
 
  // $elemMatch 组合查询(数组范围匹配)
  async findComplexContacts(): Promise<AccountDocument[]> {
    return this.accountModel.find({
      contact: {
        $all: [
          { $elemMatch: { $gt: 1000, $lt: 2000 } },
          { $elemMatch: { $gt: 3000, $lt: 4000 } }
        ]
      }
    }).exec();
  }
 
  // 正则表达式查询
  async regexSearch(pattern: string): Promise<AccountDocument[]> {
    return this.accountModel.find({
      name: { $regex: pattern, $options: 'i' }
    }).exec();
  }
 
  // 游标分页控制
  async paginate(skip: number, limit: number): Promise<AccountDocument[]> {
    return this.accountModel.find().skip(skip).limit(limit).exec();
  }
}

2 ) SQL 等效查询参考

-- $in 等效
SELECT * FROM accounts WHERE name IN ('Alice', 'Charlie');
 
-- $and 等效
SELECT * FROM accounts WHERE balance > 100 AND name > 'Fred';

关键总结与最佳实践


1 ) 操作符特性精要:

  • 边界处理:$nin、$not、$nor 默认包含字段缺失文档,必须搭配 $exists 精确过滤
  • 性能优化:同字段多条件用简写(如 {balance: {$gt:100, $lt:500}}),多值匹配优先 $in 而非 $or
    • 同字段多条件时优先用简写语法(如 { field: { $gt: X, $lt: Y } })
    • 多值匹配时 $in 比 $or 更高效
  • 正则限制:$in 中正则表达式需显式声明 { $regex: /pattern/ }
    • 与 $in 联用时需改用数组语法({ field: { $in: [/regex1/, /regex2/] } })

2 ) 游标管理准则:

  • 大数据集使用 skip().limit() 分页,避免全量加载
    • limit(0) 表示返回所有匹配文档
  • noCursorTimeout() 需手动关闭游标,防止内存泄漏

3 ) 工程化建议:

  • 嵌套数组查询优先组合 $all 和 $elemMatch 确保条件独立性
  • BSON 类型查询时使用名称(如 "string")而非编号,提升代码可读性

4 )关键知识点补充

BSON 类型表

类型编号说明
Double1双精度浮点数
String2UTF-8 字符串
Object3嵌套文档
Array4数组
Binary5二进制数据
ObjectId7文档主键
Boolean8布尔值
Null10空值

游标最佳实践

  • 使用 await cursor.close() 避免内存泄漏
  • 分页时组合 skip().limit() 替代全量查询
  • 大数据集优先用 $match 聚合阶段过滤文档
复合材料成型仿真案例大全|覆盖模压 / RTM / 固化 / SMC,实操步骤直接抄 本文整理了一套完整的PAM-COMPOSITE复合材料成型仿真案例合集,涵盖模压、RTM、固化变形、SMC四大核心工艺,包含6个实操案例和1个全流程衔接案例。每个案例都配有详细的操作步骤、核心要点和缺陷排查方法,适用于不同水平的工程师和研究人员。案例内容源自实际项目,可直接复用,帮助用户快速掌握复合材料成型仿真的关键技术,解决褶皱、纤维堆积、气泡残留等常见问题,实现从铺层设计到强度校核的全流程仿真闭环。特别针对热固性/热塑性材料差异、RTM衍生工艺、链式仿真等难点提供了专项解决方案。 阅读详情

相关推荐

可信数据空间关键技术和功能架构研究

可信数据空间(TDS)是实现数据安全共享的基础设施,通过数字合约和使用控制技术确保数据跨域流通的可信与安全。其架构包括服务平台和接入连接器,关键技术涵盖访问控制、隐私计算、区块链等。评估重点在于合规性、连接器能力、互联互通及安全体系。核心在于构建规则引擎而非简单数据汇聚,连接器开发比平台建设更重要。当前面临技术成本博弈、跨域身份互认等挑战,需平衡安全、性能与成本,推动数据要素市场发展。

逸尘的专栏 2227

Mac下MySQL的配置和修改密码以及忘记密码后的重置密码

1 ) Mac下MySQL的配置和修改密码 2 ) 忘记并重置密码 启动MySQL服务,通过 $ps aux | grep mysql 判断是否启动该服务,若未启动,则到 系统偏好设置/MySQL面板 启动服务 软件默认会安装到:/usr/local/mysql 目录,进入这个目录下的bin目录:$cd /usr/local/mysql/bin 执行 $./mysql -u root -p 通过初始密码登录MySQL 通...

Wang的专栏 6259

基于Matlab-Simulink的大林算法控制系统设计与振铃消除实验

本文详细介绍了基于Matlab-Simulink的大林算法控制系统设计与振铃消除实验。通过分析纯滞后系统的控制难题,探讨大林算法在工业控制中的应用优势,并提供Matlab-Simulink环境搭建、控制器D(z)设计、振铃消除及仿真实验的完整流程。文章还对比了大林算法与PID控制的性能差异,为工程实践提供参考。

dropout6artist的博客 798

mysql数据库的一些简单的sql语句 内连接 - 表的关联查询

# 创建一个user表 create table users( id int primary key auto_increment, name varchar(20), dpt_id int ); # 向user表中插入数据 insert into users values (null,'刘备',1), (null,'关羽',2), (null,'赵

Wang的专栏 4264

工业自动化进阶:西门子 S7-1200 PLC 调度 AGV 实现精确定点移动

本文介绍了基于西门子S7-1200PLC的AGV调度控制系统设计,包括系统架构、硬件选型和PLC程序设计。系统通过PROFINET通信实现PLC与AGV的数据交互,采用状态机控制逻辑实现任务管理、运动控制和闭环位置校正。重点阐述了通信协议实现、梯形图核心逻辑及系统调试优化方法。实际应用案例显示,该系统定位精度达±3mm,显著提升了物料配送效率。该方案为工业自动化升级提供了可靠的技术支持。

qq_52407556的博客 1891

学习利用ce修改游戏生命参数

易语言代码 游戏的简陋界面 用ce查找存储这个1000即生命值的内存地址(得先附加到目标程序上,点击左上角那个电脑按钮) 看到有很多值为1000的,但哪个是生命值呢?真相只有一个 我们点击一下打我这个按钮,看下面的ce界面上地址为004A65C0处的值变了,所以这个就是我们要找的生命值 接下来我们对生命值进行修改,修改为99

zsd747289639的博客 5万+

数据库、数据库类型、RDBMS以及MySQL

什么是数据库 数据库 就是按一定的结构来组织、存储和管理数据的仓库 可以很方便的进行crud, 能提供多个用户共享、具有尽可能小的冗余度、与应用程序批次独立的数据集合。 其他持久储存缺点:文件操作(不灵活) 数据库类型 包括 : 关系型 和 非关系型 【关系型】 MySQL MariaDB PostgreSQL Microsoft SQL Server Oracle数据库 Sybase 【...

Wang的专栏 4039

16QAM调制解调仿真(matlab,详细介绍仿真方案的设计、结果及结论、完整代码及注释)

16QAM调制解调仿真目录一、仿真要求二、仿真方案详细设计三、仿真结果及结论四、仿真代码 一、仿真要求 1.用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相比较; 2.高阶与低阶的性能比较。 二、仿真方案详细设计 三、仿真结果及结论 仿真结果 16QAM的星座点图 64QAM的星座点图 16QAM加噪声后的星座点图 64QAM加噪声后的星座点图 16-QAM载波调制信号在AWGN信道下的误比特率性能比较 结论:由图可知,16QAM的误符号率

mango 5万+

Eggjs笔记:Eggjs集成ElasticSearch及CRUD操作

相关文档 https://www.elastic.co/guide/index.html https://www.elastic.co/guide/en/elasticsearch/client https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/configuration.html https://www.elastic.co/guide/en/elasticsearch/client/javascrip

Wang的专栏 3530

国科大学习资料--机器人智能控制_袁如意老师PPT后习题答案(学长精心整理)

人工神经元激活函数的作用是什么? 答:激活函数是用来加入非线性因素的,提高神经网络对模型的表达能力,解决线性模型所不能解决的问题。 人工神经网络的学习规则有哪些?各有何特征? 答:大类可以分为无监督学习算法、有监督学习算法和强化学习。其中无监督学习算法指只有输入信息,没有期望的输出信息,如Hebb学习规则,神经元连接强度的变化与两个相互连接的神经元的激活水平成正比。竞争学习法则:网络各输出单元相互竞争,最后达到只有一个最强者激活。有监督学习算法指同时提供输入信息和对应的期望输出信息,如误差学习(Delta学

无名何许人的博客 1488

[特殊字符]用Python爬取中国裁判文书网案例信息:从爬虫到数据可视化全流程实战(附代码)

✅ 分析裁判文书网的网页结构;✅ 自动化爬取案件信息;✅ 解析加密参数并获取数据;✅ 数据可视化图表输出;✅ 模块化构建爬虫系统。

2201_76125261的博客 2825

Redis: 集群高可用之故障转移和集群迁移

若要检查源和目标是否数据统一,还可选择阿里配套工具RedisFullCheck。3.4 使用 RedisFullCheck 工具检查。下载官方编译好的工具包,直接解压后就能使用。故障转移,包括自动故障转移和手动故障转移。运行之后,就给一个反馈结果,如果是。1.2 原集群与目标集群结构不一致。1.1 原集群与目标集群结构一致。2 ) 手动故障转移。

Wang的专栏 2918

深度学习工具包 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笔记:基于Django框架的数据库设计

概述 需要根据《项目建议书》、《需求说明书》、界面原型、各种标准规范对数据库进行设计, 我们目前先参考这一设计图 结构设计 1 ) 找实体 实体是实体-关系模型的基本对象, 是现实世界中各种事物的抽象。 凡是可以相互区 开并可以被识 的事、物、概念等对象均可认为是实体。 基本的实体列表如下: 会员 类别 商品 订单 订单详情 收货地址 商品评论 商品图片 友情链接 站内公告 … ...

Wang的专栏 2772

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Elastic Stack梳理:集群搭建指南之高可用架构与实战部署

本文介绍了Elasticsearch分布式架构和Cerebro监控工具的部署策略。主要内容包括: ES集群角色划分(主节点、数据节点、协调节点)及功能说明 Cerebro监控工具的独立部署方法和访问方式 集群拓扑规划示例,包含节点IP分配和架构拓扑图 各类型节点的配置原则和数量计算公式 高可用主节点配置要点及示例配置 生产环境优化建议,包括分片规划、硬件配置和安全措施 文章提供了完整的集群部署方案,涵盖从基础概念到具体实施的各个环节,适用于不同规模的ES集群建设。

Wang的专栏 2545

Redis: 集群环境搭建,集群状态检查,分析主从日志,查看集群信息

当从节点获得足够多的选票时,它就会成为新的主节点,并增加自己的configEpoch来更新槽位配置。在Redis集群中,纪元的更新通常是由节点间的通信和状态变更触发的。例如,当某个节点接收到来自其他节点的状态变更通知时,它会比较通知中的纪元与自己的纪元。如果通知中的纪元更大,则更新自己的纪元。确保集群状态的一致性:通过递增的纪元,集群中的节点可以确保它们对集群状态的认知是一致的。通过递增的纪元版本号,集群中的节点可以确保它们对集群状态的认知是一致的,并解决可能出现的配置冲突问题。4 )纪元的更新机制。

Wang的专栏 2466

MySQL: 数据库性能的决定性因素之从双十一大促高并发场景看系统瓶颈与优化路径

电商大促期间,数据库面临高并发写入、连接数暴增、慢查询积压等核心挑战。本文分析了锁竞争、主从延迟等关键性能瓶颈,并提出多种优化方案:1)使用乐观锁通过版本号控制库存超卖;2)CAS机制实现无锁并发;3)分布式锁协调多节点操作。这些方案在保证数据一致性的同时提升吞吐量,适用于库存扣减、订单创建等典型场景,有效解决数据库扩展难题。

Wang的专栏 2426

Redis: Sentinel哨兵监控架构及环境搭建

在主从模式下,我们通过从节点只读模式提高了系统的并发能力并发不断增加,只需要扩展从节点即可,只要主从服务器之间,网络连接正常主服务器就会将写入自己的数据同步更新给从服务器,从而保证主从服务器的数据相同在这种架构下,它仍然是有一些缺点的,比如说它的可靠性保证不是很好,因为主从模式下,主节点故障了便无法提供写入的服务现在,我们通过哨兵来解决这个问题然后,主节点其实写的压力也是并没有被释放的包括主从之间的数据是相同的,它还有数据冗余一个问题后面集群也会解决这个问题。

Wang的专栏 2181

Redis: 集群测试和集群原理

Redis Cluster 没有单机那种 16个数据库 (0 - 15) 数据库的概念了,就是我们已经看不到数据库了。而是分成了 16384 个 slots (槽位) ,每个节点负责其中一部分槽位,槽位的信息存储于每个节点中。2 ) 16384 个 slots (槽位)那我们客户端这边是怎么来操作集群的呢?1 ) SET/GET 命令。2 ) 开启从节点只读模式。

Wang的专栏 2102

Eggjs笔记:详解Mongoose的聚合管道以及populate实现关联查询

基于mongodb的聚合管道 此处忽略之前mongodb在eggjs中需要配置的步骤,前文已有说明,现在开始在controller中调用(应该封装到service中的,仅作为示例) const result = await this.app.mongo.aggregate('order', { pipeline: [ { $lookup: {...

Wang的专栏 2096

MySQL: 数据库监控核心要素与实施策略

数据库监控是确保系统稳定的关键,涵盖服务可用性、性能、主从复制和资源使用等方面。核心监控包括:通过真实连接和查询验证数据库可用性;跟踪QPS、TPS和并发线程数等性能指标;监控主从复制的链路状态和延迟;以及关注磁盘空间等服务器资源。实现方案包括网络连接验证、读写测试和连接数阈值监控。性能监控需持续记录数据趋势,并采用精准方法检测阻塞事务和复制延迟。全面的数据库监控能有效预防故障,保障系统稳定运行。

Wang的专栏 2096

MySQL: 索引优化策略详解:核心原则、高级应用与维护实践

本文介绍了数据库索引优化的核心策略。第一部分重点讲解高效索引设计原则:禁止在索引列使用表达式或函数;合理使用前缀索引以平衡选择性和存储空间;设计联合索引时应优先考虑高频查询、高选择性和小宽度列;以及利用覆盖索引减少回表查询。第二部分探讨索引的高级应用,特别强调通过合理设计索引优化排序操作。文章指出索引列顺序需与ORDER BY完全一致,并分析了InnoDB与MyISAM存储引擎在排序支持上的差异。通过实际SQL示例展示了索引优化前后的性能差异,为数据库性能调优提供了实用指导。

Wang的专栏 2061

屏幕不止一种:OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,这与TTY和PTY又有什么关系

要图像、要曲线、要一块比现在更大的画面,面前的屏就不止一种了。OLED、LCD1602字符屏、TFT/IPS图形屏和串口屏怎么用,又该按什么来挑?这与TTY和PTY又有什么关系?

Lxx_Zw的博客 318

5个陷阱和解决方案:MongoDB源码中自动化测试平台的数

在现代软件工程实践中,自动化测试平台扮演着至关重要的角色,它确保了系统的稳定性和迭代的可靠性。然而,随着业务数据量的快速增长以及并发写入需求的不断上升,基于MongoDB构建的自动化测试平台常常面临性能瓶颈和数据一致性问题。本文将围绕MongoDB源码中一个关键模块——,通过一行一行代码的解读,揭示其设计原理、性能调优点及常见陷阱,适合希望深入理解数据库实现机制的高级工程师。

wuchangjian的专栏 175

用Ai8051帮我写一个FX3UPLC 程序

用Ai8051帮我写一个FX3UPLC 程序AI这个需求我得先跟您确认清楚,因为"用Ai8051U写一个FX3U PLC程序"这个说法本身存在歧义,我不能凭猜测直接给您出一套代码。

czhaii的专栏 303

MongoDB迁移之后,Spring Data 与 Hibernate 的职责分界:一场数据访问层的静默重构

MongoDB迁移后,Spring Data与Hibernate的职责边界被重新划定:一个守护文档弹性,一个锚定关系严谨。这篇文章用对比表格和4类典型场景,帮你看清哪些请求该交给谁,避免“能做”却“不该做”的架构陷阱。😮 如果你正面临混合持久化选型,这篇盘点值得一读。

2601_94912102的博客 272

代码小白笔记:江科大 51 单片机 LCD1602 课程详解

本文为单片机新手梳理江科大51课程中LCD1602的驱动逻辑,聚焦“看懂代码”而非深究寄存器。通过解析接线、底层函数(延时、写命令/数据)、初始化流程及光标定位,详解字符、字符串、数字(十进制、十六进制、二进制)的显示原理,核心在于理解“RS控制指令/数据”、“地址映射规则”及“数字转字符”的位运算技巧,帮助读者快速上手并自定义显示内容。

2301_81429079的博客 632
上一篇: MongoDB小课堂: 文档查询之匹配查询与比较操作符深度解析
下一篇: MongoDB小课堂: 游标操作与文档投影技术深度解析
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

Wang's Blog

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

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

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

打赏作者

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

抵扣说明:

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

余额充值