首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

static修饰的函数有什么特点(static可以修饰所有的变量吗)

static修饰的函数叫做静态函数,静态函数有两种,根据其出现的地方来分类: 如果这个静态函数出现在类里,那么它是一个静态成员函数; 静态成员函数的作用在于:调用这个函数不会访问或者修改任何对象...如果它不是出现在类中,那么它是一个普通的全局的静态函数。 这样的static函数与普通函数的区别是:用static修饰的函数,限定在本源码文件中,不能被本源码文件以外的代码文件调用。...而普通的函数,默认是extern的,也就是说它可以被其它代码文件调用。   在函数的返回类型前加上关键字static,函数就被定义成为静态函数。...普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。...因此定义静态函数有以下好处:    其他文件中可以定义相同名字的函数,不会发生冲突。    静态函数不能被其他文件所用。

1.7K20

Redis 的并发竞争问题是什么?如何解决这个问题?了解 redis 事务的 CAS 方案吗?

面试官心理分析 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,...而且 redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。 面试题剖析 某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。...你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。...每次要写之前,先判断一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?

    问题1:MongoDB 丢数据是真的吗? 呵呵,说到这个问题,我只想笑,一个数据库如果丢数据,他还能活那么多年,且成为数据库行业的NOSQL一哥,你信吗,然后你问MongoDB 丢数据吗?...首先要说明,MongoDB 不丢数据,如果MongoDB丢数据了,那么一定是使用MongoDB的人,有问题,或者说他根本没有懂MongoDB的形成方式,所导致的问题。...问题3:MongoDB 写入数据后,读不到 这个问题问的最多,这一定不是MongoDB的问题,谁说写入数据后就一定要读到,如果要读到你是否理解MongoDB的5个readPreference(),此时你是否把你的...readPreference,调整到了primaryPreferred,如果你调整到这个这个位置,那么还读不到,那么你就快看看你的集群还稳定吗,这就是另一个话题了。...可以,MongoDB 可以有事务,表达的方式不同,可以有循环,事务,跨库事务,跨表事务等 下面是一个案例,异步事务 const mongoose = require('mongoose'); const

    5710

    Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?

    问题 Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?...分析 这个也是线上非常常见的一个问题,就是多客户端同时并发写一个 key,可能本来应该先到的数据后到了,导致数据版本错了;或者是多客户端同时获取一个 key,修改值之后再写回去,只要顺序错了,数据就错了...而且 Redis 自己就有天然解决这个问题的 CAS 类的乐观锁方案。 某个时刻,多个系统实例都去更新某个 key。可以基于 zookeeper 实现分布式锁。...你要写入缓存的数据,都是从 mysql 里查出来的,都得写入 mysql 中,写入 mysql 中的时候必须保存一个时间戳,从 mysql 查出来的时候,时间戳也查出来。...每次要写之前,先判断一下当前这个 value 的时间戳是否比缓存里的 value 的时间戳要新。如果是的话,那么可以写,否则,就不能用旧的数据覆盖新的数据。

    86220

    【QQ问题汇总】基于任务的并行与基于数据的并行有什么区别吗

    问题1:基于任务的并行与基于数据的并行有什么区别吗? 答:有区别,前者往往是cpu上的当时,而后者往往是gpu上的。前者可以看成只有一个work-item的kernel实例。...最初OpenCL有两种工作模型的。包括任务并行的(clEnqueueTask),如上所述, 可以看成是(1,1,1)个work-item的一次kernel启动。...因为基本上除了CPU外,常见的GPU并不能很有效的执行此模型下的kernel实例。...(因为如前所述, 相当于只有1个线程的kernel了, 对于CUDA来说)。 问题2:GPU点对点通信是什么意思? 答:CUDA的P2P Access和P2P Copy。...但是NV的P2P Copy总是开放的, 但P2P Access需要买专业卡。从函数实现上,例如cudaMemcpyPeer*()以及 cudaMemcpy*()。

    1.6K60

    mongoose官方文档总结

    比如上例,Tank这个model对应数据库中tanks这个collection .model()这个函数是对 schema做了拷贝 确保在调用.model()之前把所有需要的东西都加进shema里。...Query实例有一个.then()函数,用法类似Promise 我们看一下demo,查询persons表中name中属性last为Ghost值的文档,只查询 name和occupation两个字段 const...是在异步函数执行时函数传入的控制函数。...x为这些函数制定了新钩子 schema.pre('find',function(){ conosle.log(this instanceof mongoose.query) //true this.start...但是我们有特殊的 post 中间件技巧处理这个问题 —— 错误处理中渐渐,它可以在出错后执行你指定的代码。 错误处理中间件比普通中间件多一个 error 参数,并且 err 作为第一个参数传入。

    20.6K40

    使用 ServerLess, Nodejs, MongoDB Atlas cloud 构建 REST API

    _tcp.cluster0-on1ek.mongodb.net 以上正是我在链接 MongoDB Alats 过程中遇到的问题,这里再多提下,希望能对你有帮助,因为这花费了我很长时间,尝试使用 Google...来搜索,但并没有找到好的解决方案,通过报错大致确认可能是网络和 DNS 的问题,修改 DNS 之后还是没有结果,后来我切换了网络,这个问题解决了。。。...如果你有答案欢迎和我讨论,另外也建议检查链接字符串和 MongoDB Alats 白名单是否设置的正确。...业务逻辑与 FaaS、BaaS 严重的耦合不利于单元测试、平台迁移:上面这个例子是不好的,业务逻辑完全的写在了 handler.js 文件的 find 函数中,一方面 find 函数的 event、context...Serverless REST API 开发最佳实践 带着上面提出的几点问题,本节将对这个业务逻辑进行重构,开发一个 REST API 最佳实践。 什么是 REST API?

    2.9K20

    你真的了解mongoose吗?

    相信看了这篇文章,一定会对你快速上手,了解使用 mongoose 有不小的帮助。 mongoose 涉及到的概念和模块还是很多的,大体有下面这些: ?...也就是上面代码中的: module.exports = model("User", userSchema); 选项(options) Schemas 有几个可配置的选项,可以直接传递给构造函数或设置:...这里我主要说一下versionKey和timestamps: versionKey(上文有提到) 是 Mongoose 在文件创建时自动设定的。这个值包含文件的内部修订号。...find() 第一个参数表示查询条件,第二个参数用于控制返回的字段,第三个参数用于配置查询参数,第四个参数是回调函数,回调函数的形式为function(err,docs){} Model.find(conditions...这里我们只列举常用的: // sort 两种方式指定排序 Model.find().sort('age -name'); // 字符串有 - 代表 descending 降序 Model.find().

    41.6K30

    面试官:SSR解决了什么问题?有做过SSR吗?你是怎么做的?

    一、是什么 Server-Side Rendering 我们称其为SSR,意为服务端渲染 指由服务侧完成页面的 HTML 结构拼接的页面处理技术,发送到浏览器,然后为其绑定状态与事件,成为完全可交互页面的过程...Vue SSR将包含两部分:服务端渲染的首屏,包含交互的SPA 二、解决了什么 SSR主要解决了以下两种问题: seo:搜索引擎优先爬取页面HTML结构,使用ssr时,服务端已经生成了和业务想关联的HTML...库的支持性,代码兼容 性能问题 每个请求都是n个实例的创建,不然会污染,消耗会变得很大 缓存 node serve、 nginx判断当前用户有没有过期,如果没过期的话就缓存,用刚刚的结果。...降级:监控cpu、内存占用过多,就spa,返回单个的壳 服务器负载变大,相对于前后端分离务器只需要提供静态资源来说,服务器负载更大,所以要慎重使用 所以在我们选择是否使用SSR前,我们需要慎重问问自己这些问题.../main"; // 返回⼀个函数,接收请求上下⽂,返回创建的vue实例 export default context => { // 这⾥返回⼀个Promise,确保路由或组件准备就绪

    4.1K21

    Nodejs学习笔记(十四)— Mongoose介绍和入门

    N到第M个元素)   可能还有一些,没什么印象,大家自行看看api ^_^!  ...,分页原理用过其它数据库的都知道,分页用到的函数和mysql的比较类似   上面我用到sort(),这个是排序规则,就不单讲了!...其它操作   其它还有比较多常用的 索引和默认值   再看看我对user.js这个schema的修改 /** * 用户信息 */ var mongoose = require('....mongoose操作基本入门大致就是这些,自已试一下,入门完全没问题,并且比node-mongodb-native还是要简单明了一些,   在node.js中操作数据库,如果逻辑相对复杂时,大量的回调嵌套还是比较郁闷的...,下一篇于mongoose操作多逻辑组合回调嵌套的问题给出一种方案^_^!

    2.7K60

    48、mongoose入门

    1、约定 现在假设我们想把看到的每一只猫都用数据库给记录下来,即每只猫都是一条document(数据行)。 2、什么是mongoose?...Model var Kitten = mongoose.model('Kitten', kittySchema); 6、实例化Model (1)模型是用于构造文档的类,接下来,让我们实例化这个Ketten...(silence.name); // 'Slience' 7、添加函数方法 (1)猫都是会叫的,让我们看看怎么在文档中添加“说话”的功能 // 记得一定要在构造生成Model之前把这个方法添加到Schema...,现在我们想看看已经记录了多少只猫了; 我们可以通过Kitten模型访问我们所有记录过的所有小猫(数据记录行document) Kitten.find(function(err, doc) {...,希望对你理解有帮助,翻译水平不是很好,见谅。

    2K31

    大数据技术之_22_MongoDB学习_MongoDB 的简介、下载、安装、启动、配置和关闭 + MongoDB 的基本操作 + Mongoose + 使用 java 对 MongoDB 增删改查

    第一章 数据库的概述 1.1 什么是数据库   • 数据库是按照数据结构来组织、存储和管理数据的仓库。   ...• MongoDB 的数据模型是面向文档的,所谓文档是一种类似于 JSON 的结构,简单理解:MongoDB 这个数据库中存的是各种各样的 JSON。...db.users.insertMany();  // 插入多个文档对象,从 3.2 版本开始有该方法 查询文档   db.collection.find()   find() 用来查询集合中的所有符合条件的文档...,当一个文档的属性值是一个文档时,我们称这个文档叫做内嵌文档。...如果你的数据是被结构化成支持模式的,这是非常有用的。   简单来说,模式就是对文档的约束,有了模式,文档中的字段必须符合模式的规定。否则将不能正常操作。

    17.8K30

    Node.js中的MongoDB

    MongoDB的数据模型是面向文档的,类似于JSON的结构,MongoDB这个数据库中存的是各种各样的BSON # MongoDB安装教程 (ps:安装好之后配置环境变量,启动MongoDB服务)..."jQuery", "abc"], core:["三大框架","node.js"]}}}); db.colleges.find(); //11.查询有核心课程为 三大框架 的文档 //MongoDB支持直接通过内嵌文档的属性进行查询...({}, {name: 1, _id: 0, wages: 1, bonus: 1}); Node进阶-Mongoose 什么是Mongoose 之前我们都是通过命令行或者shell来完成对数据库的各种操作的...监听MongoDB数据库的连接状态:在mongoose对象中,有一个属性叫做connection,该对象表示的就是数据库连接, 通过监视该对象的状态,可以来监听数据库的连接与断开 mongoose.connection.once...err) { console.log(count); } }); 遇到问题可以查看api MongoDB教程 mongoose的API文档

    5.3K40

    Node使用火焰图优化CPU爆涨

    问题分析 因为有很明显的发生变化的时间点,直接能找到这一次的改动,经过一点点的代码级review,并没有发现变动的代码上有什么问题。...作为一个小前端没遇到过这种问题呀,毫无头绪的我,把救世主锁定在了火焰图身上,想看一看到底什么地方耗时长到底cpu占用在了什么东西上。...优化 回到问题上来,看到mongoose Document的问题,7月2号到7月3号后,为什么会突然导致CPU暴涨恍然大悟,自己之前review代码,看着代码没问题,但是忽略了这一个版本因为业务调整导致查询压力大大增加...,可能是过去的好几倍这个问题。...await model.Package.find(query).lean(); 那说到频繁的处理mongoose Document导致的性能问题,那其实还有一个优化点可以做,其实在查询的时候多多使用find

    2.7K40

    GraphQL 基础实践

    这也意味着 GraphQL 并不关心数据存在什么数据库上。 同时 GraphQL 也是一套标准,在这个标准下不同平台不同语言有相应的实现。...GraphQL 解决了什么问题 我们先来回顾一下我们已经非常熟悉的 RESTful API 设计。...在上面的例子中,我们需要对比两部电影的数据。如果换作是硬件对比网站,需要查询的硬件数量往往不止两个。此时编写冗余的选择集显得非常的费劲、臃肿以及难维护。为了解决这个问题,我们可以使用片段功能。...ThinkJS 中配置中间件有三个关键参数: match: 用于匹配 URL,我们想让我们的请求发送到 /graphql 中进行处理,那么我们对这个路径进行 match 后进行处理; handle:中间件的处理函数...那么这个问题怎么解决呢?

    12.8K20

    深入浅出mongodb之实战

    bin是启动目录,里面有一个www启动文件,默认的端口是3000,如果不合适我们可以手动修改 node_modules这个目录下面是我们安装的所有依赖 pubilc这个文件夹下是我们前端存放静态资源的...routes这个文件是存放路由的,主要编写前端发送请求和响应数据给前端 views这个文件夹中ejs文件结尾的文件是后端的模板文件 app.js是入口文件,模板配置和总路由文件 package.json...我们在执行node文件的时候,如果修改了node文件,每次执行都需要重新启动项目才行,为了方便我们可以使用nodemon来监听项目的改动,不再需要重复启动项目,这么方便的东西用起来能不香吗??...实际上在真正的开发环境中,如果我们这么设置允许所有的的源都可以访问会有很多问题,我们可以使用cors[4]来代替它 当然如果在生产中我们采用nginx部署之后,就不存在跨域了?...最后 本文结束,有什么问题和有错误的地方,欢迎大家的留言和评论,还有后续更新,下期更加精彩 ???

    1.7K10
    领券