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

骑上我心爱小摩托,再挂上AI摄像头,去认识一下全城垃圾!

大数据文摘出品 来源:medium 编译:曹培信 垃圾管理是现代城市一个非常有挑战性任务,每个地区都有其独特垃圾产生模式,但无论产生垃圾种类和数量如何变化,优化垃圾收集方式是降低成本、保持城市清洁重要手段...传统解决方法是将某种形式传感器分散城市,这些传感器将负责收集有关垃圾分布数据,但是这种方法成本很高,无论是安装还是维护都需要持续投资,而且环境不友好,毕竟这种解决环境问题方法,同时又生产了更多一次性电子产品...车载软件使用经过修改Darknet来运行Yolo v3,检测结果通过一个滤波和积累模块提供,该模块将避免多个相邻视频帧中出现多次计算同一垃圾;它还将为一个”垃圾点”大约5米半径范围内进行多次检测。...垃圾GPS坐标通过简单gpsd接口从usb模块读取,将数据存储Google Firestore实时数据库,这样本地Google firebase SDK就被用于客户端应用程序开发。...Firebase客户端SDK包括一个通用API,可用于订阅客户端应用程序,以添加/更新/删除 Firestore数据库上运行在VespAI上应用程序产生活动。

10.2K30

干货 | 携程最终一致和强一致性缓存实践

本地业务系统通过dubbo调用本地utag服务,utag本地处理流程,查询本地缓存前后分别可根据一定条件进行服务降级,即查询另一机房。...锁范围较大,但是能满足我们一致性要求,单个DB事务也基本无影响。且一个用户来说,贷前数据更新并不频繁,锁范围稍大一些是我们可以接受。 ?...此处一个关键点在于数据变更可靠性记录,受到QMQ事务消息实现方案启发,我们方案是构建一张简易记录表(代表发生变更DB数据),每次DB变更后,将该变更记录表插入和业务DB操作放在一个事务处理...需要注意是可能存在嵌套事务一个完整事务,可能存在多次数据更新,可借助ThreadLocal进行多条更新记录汇总。...(1)缓存熔断 熔断目的是redis不可用时避免每次调用(查询或更新)都进行额外缓存操作,这些缓存操作会进行多次尝试,比如加锁操作我们设置自动重试3次,每次间隔50ms,总耗时会增加150ms。

1.2K31
您找到你想要的搜索结果了吗?
是的
没有找到

常见问题:MongoDB基础知识

MongoDB您不需要为集合指定模式。虽然集合文档通常具有基本上同质结构,但这不是必需; 即,单个集合文档不需要具有一组相同字段。字段数据类型也可以集合文档之间存在不同。...3.2版更改:但是,从MongoDB 3.2开始,您可以更新和插入操作期间强制执行集合文档验证规则。 某些集合属性(例如指定最大大小)可以显式创建集合期间指定并进行修改。...因为单个文档可以包含相关数据,否则这些相关数据将在关系模式单独父子表建模,MongoDB文档原子操作已经提供了满足大多数应用程序数据完整性需求事务语义。...可以单个操作写入一个或多个字段,包括多个子文档和数组元素更新。MongoDB提供保证确保文档更新是完全隔离; 任何错误都会导致操作回滚,以便客户端收到文档一致视图。...重要: 大多数情况下,多文档事务单个文档写入产生更高性能成本,并且多文档事务可用性不应该取代高效模式设计。

1.9K10

Flow 操作符 shareIn 和 stateIn 使用须知

当上游数据流创建成本很高,或者 ViewModel 中使用这些操作符时,这一技巧尤其有用。 缓冲事件 在下面的例子,我们需求有所改变。...10,来让最后发出 10 个项目保持在内存,同时每次有收集者观察数据流时重新发送这些项目。...这样会在每次函数调用时创建一个 SharedFlow 或 StateFlow,而它们将会一直保持在内存,直到作用域被取消或者没有任何引用时被垃圾回收。...// 由于这一函数依赖一个 `userId`,所以在这个函数 // 数据流无法通过调用 shareIn 或 stateIn 进行复用. // 这样会导致每次调用函数时,都会创建新...如果您只允许一个用户,并且收集者需要更新为观察新用户,您可以向一个所有收集者共用 SharedFlow 或 StateFlow 发送事件更新,并将公共数据流作为类变量。

4.5K20

精通Java事务编程(1)-深入理解事务

写入过程,通常涉及预写日志,以便在磁盘数据损坏时可进行恢复。支持复制DB,持久性意味着数据已成功复制到多个节点。为实现持久性保证,DB必须等到这些写入或复制完成后,才能报告事务成功提交。...如若一个事务进行多次写入,则另一个事务要么看到其全部写入结果或什么都看不到,而不该是中间部分结果。 这些定义假设一个事务修改多个对象(如行,文档,记录)。...1.2.1 单对象写入 原子性和隔离性也适用单个对象更新。如若向DB写入20KBJSON文档: 若发送第一个10KB后网络连接中断,DB是否只存储了无法完整解析10KB JSON片段呢?...若DB正在覆盖磁盘上一个过程电源发生故障,最终是否导致新旧值混杂 若另一个客户端写入过程读取该文档是否会看到部分更新内容 这些问题很让人头大,故存储引擎必备设计:单节点、单个对象层面上提供原子性和隔离性...多对象事务用以确保这些外键引用始终有效:当插入几个相互引用记录时,保证外键总是正确、最新,否则数据更新就毫无意义。 文档数据模型,若待更新字段都在同一文档,则可视为单个对象,此时无需多对象事务

92230

告别鸽子,从我做起

「读提交」隔离级别是每个 select 都会生成一个 Read View,也意味着,事务期间多次读取同一条数据,前后两次读数据可能会出现不一致,因为可能这期间另外一个事务修改了该记录,并提交了事务...redo log 是物理日志,记录了某个数据页做了什么修改, XXX 表空间中 YYY 数据页 ZZZ 偏移量地方做了AAA 更新,每当执行一个事务就会产生这样一条物理日志。...单独执行一个更新语句时候,InnoDB 引擎会自己启动一个事务执行更新语句过程,生成 redo log 先写入到 redo log buffer ,然后等事务提交时候,再将缓存在 redo...因为当设置为1时候,即使主机发生异常重启,也最多丢失 binlog cache 未完成一个事务实际数据没有任何实质性影响,就是写入性能影响太大。...如果在这一步完成后数据库崩溃,由于 binlog 已经有了事务记录,MySQL会在重启后通过 redo log 刷盘数据继续进行事务提交。

42220

分布式事务原理与实践

事务相当于在读、算、写操作之外增加了同步模块,进而保证只有一个线程进入事务当中,而其他线程不会进入。 单个事务单元 事务四大特性分别是:原子型、一致性、隔离性和持久性。...单个事务单元其他例子 除了转账操作是事务单元外,诸如商品要建立一个基于GMT_Modified索引、从数据库读取一行记录、向数据库写入一行记录,同时更新这行记录所有索引、删除整张表等都是一个事务单元...假设在该场景下没有读操作,只是单纯写入数据,则数据本身并没有事务操作,Delete、Update操作与之类似。数据库利用这些操作特性,每一次查询过程,只要查到数据,就会在该数据上加锁。...如果是一个只读事务,例如只对数据进行查询操作,该过程数据一定不被修改,因此多个查询操作可以并行执行,因此一种针对读读场景优化自然而然产生——读写锁。...最初数据库事务实现是不存在MVCC,它是Oracle八十年代新加功能,本质是Copy On Write,也就是每次写都是以重新开始一个版本方式写入数据,因此,数据库也就包含了之前所有版本

697100

Firestore 多数据库普遍可用:一个项目,多个数据库,轻松管理数据和微服务

此外,Firestore 云监控指标和统计信息 现在可以在数据库级别进行聚合。...现在可以单个项目中管理多个 Firestore 数据库,每个文档数据库都具有隔离性,确保数据分离和性能:谷歌云声称一个数据库流量负载不会对项目中其他数据库性能产生不利影响。...谷歌高级软件工程师 Sichen Liu 和高级产品经理 Minh Nguyen 解释道: Firestore 允许你通过 IAM 条件单个数据库上应用细粒度安全配置,可以对不同数据库应用不同安全策略...PrivateGPT 全栈开发者 Francisco Durdin Garcia 曾在 2018 年问道: Firebase 一个控制台中是否可以为 Firestore 数据库创建多个实例(每个项目一个...Liu 和 Nguyen 补充道: 创建过程需要谨慎选择数据库资源名和位置,因为这些属性创建后无法更改。不过你可以删除现有数据库,随后使用相同资源名不同位置创建新数据库。

9210

微信搜索引擎索引分布式演进

相比ES,Ceph可以这么做主要秘诀是:存储系统数据分片并不需要一个独立引擎做支撑。 微信搜一搜,数据写入与在线检索分离,写入更类似Ceph,可以按逻辑分区进行划分。...这里主要原因是二者需求不同:控制操作通常由运维人员发起,非常低频,允许失败后重试,但对事务性有一定要求;而数据流往往性能或可靠性要求更高,但相应会在其他方面做一些折让,通常是一致性及可用性上有条件降低要求...Searcher每个节点来说,每次召回相当于索引查找TopK过程,如果每个节点只有一个索引,其检索资源利用率是最高,实际上多数商业搜索也是这么做。...但是,这也带来一个问题:索引更新时需要预留一倍资源进行热替换。为了避免这种资源浪费,一种常用方式是在对节点进行索引更新时,先停止服务,索引更新完成后重新上线该节点。...但这同时也导致数据多次更新时,会在不同文件中有一定冗余,这种冗余随后文件逐级合并时清除。

90130

MySQL内部架构与事务面试题合集

多个事务并发执行一定会产生相互争夺资源问题 64、什么是脏读 脏读(Dirty read) 是一个事务处理过程读取了另外一个事务未提交数据 当一个事务正在访问数据并且进行了修改,但是还没提交事务...这样第一个事务修改结果就被丢失,这种情况就被称为* 修改丢失 66、不可重复读 不可重复读(Unrepeatableread) :指在一个事务多次读取同一数据 ,在这个事务还没结束时,另外一个事务也访问了这个数据并这个数据进行了修改...进行事务操作时,通过“for update”语句,MySQL会对查询结果集中每行数据都添加排他锁,其他线程该记录更新与删除操作都会阻塞。排他锁包含行锁、表锁。...redo log file记录了xxx页做了xx修改信息,我们都知道数据库更新操作会在内存先执行,最后刷入磁盘。...执行事务回滚时候,就可以通过undo log记录内容并以此进行回滚。 undo log还可以提供多版本并发控制下读取(MVCC)。 96、MySQL日志是否实时写入磁盘?

21210

RavenDB建模--ACID模式和BASE模式

分布式系统,要确保原子性成本也是很高,每进行一个操作都要和多台机器对话。... RavenDB ,使用文档或附件 ID对文档或附件所有操作(增、删、改)始终是一致,并且它们是事务运行。对文档批量操作则是由由多个单独事务组成,而不是由一个庞大事务去执行。...之所以权衡需要多少索引,是因为事务必须在文档每次更改时更新所有相关索引。这也就说明索引更新就位于更新数据主要途径,这就解释了为什么错误索引能严重地降低性能。...RavenDB 索引更新某种程度上可能会落后于它们所反映文档,但是一般来说文档更新和索引更新之间时间差通常以微秒为单位进行度量。...TIP:在这里需要注意查询、批量操作和特定文档操作之间区别,这些操作作为事务发生,利用索引性质可以降低查询和写入成本,并根据具体情况有选择地应用决策。

32510

常见问题:并发

MongoDB使用读-写锁,允许并发读操作以共享方式访问资源(如一个数据库或一个集合),但在MMAPv1单个写入操作采取独占(排它)访问方式。...因为单个文档可以包含关联数据(译者注:通过内嵌文档或数组方式),而这些关联数据关系模型是使用单独父子表进行建模,MongoDB文档原子操作已经提供了满足大多数应用程序数据完整性需求事务语义...可以单个操作写入一个或多个字段,包括多个子文档和数组元素更新。MongoDB提供文档操作原子性保证确保文档更新时完全隔离; 任何错误都会导致操作回滚,以便客户端收到文档一致视图。...从版本4.0开始,对于需要原子性来更新多个文档或读取多个文档之间一致性情况,MongoDB 为副本集提供多文档事务,并计划在MongoDB 4.2提供分片集群事务。...重要 大多数情况下,多文档事务单个文档写入产生更高性能成本,并且多文档事务可用性不应该取代有效模式设计。

1.5K30

数据系统读写权衡一知半解

是否应该每一列都建立索引?什么时候应该把一列数据编入索引?我索引越多,读取查询就会变得越快。同时,索引越多,数据更新速度就越慢。 这是一个常见权衡方案,快速读意味着慢速写。...LSM树应用 LSM树最早是1996年提出,这个想法是将对键值存储更改作为事务跟踪,并在内存中保留新值。事务提交时,可以将最近键值排序集合写入磁盘唯一命名文件。...平衡合并有着很大写入放大, 每次一个键值写入到级别0,每个级别上都要重写10到11次,但是读取数据成本较少。...在数据库,索引标识一般以行 id 或主键形式隐藏在数据库关系型数据库系统,索引更新是通过事务集成,我们能够看到性能差异。 搜索系统处理文档方面有些不同。...它极大地降低了数据读取时成本,而创建和合并搜索索引是一项复杂工作,也是数据写入放大一种形式。 搜索索引需要语料库,以找到最近写入更新文档

60320

ElastricSearch第三弹之存储原理

段提出来原因是:早期全文检索为整个文档集合建立了一个很大倒排索引,并将其写入磁盘。如果索引有更新,就需要重新全量创建一个索引来替换原来索引。...新增:新增很好处理,由于数据是新,所以只需要对当前文档新增一个段就可以了。 删除:段是不可改变,所以既不能把文档从旧移除,也不能修改旧段来进行文档更新。...一个被标记删除文档仍然可以被查询匹配到,但它会在最终结果被返回前从结果集中移除。 更新更新相当于是删除和新增这两个动作组成。...写入单个倒排索引允许数据被压缩,减少磁盘 I/O 和需要被缓存到内存索引使用量。 段缺点 当旧数据进行删除时,旧数据不会马上被删除,而是 .del 文件中被标记为删除。...ES存储流程 一个文档被索引之后,先被写入到内存,但是为了防止数据丢失,会追加一份数据到事务日志

33930

第14章_MySQL事务日志

4 步:定期将内存修改数据刷新到磁盘 设置为1 :表示每次事务提交时都将进行同步,刷盘操作( 默认值 ) 设置为2 :表示每次事务提交时都只把 redo log buffer 内容写入 page...Undo 日志 redo log 是事务持久性保证,undo log 是事务原子性保证。事务 更新数据 前置操作 其实是要先写入一个 undo log 。...回滚段与事务 每个事务只会使用一个回滚段,一个回滚段同一时刻可能会服务于多个事务。 当一个事务开始时候,会制定一个回滚段,事务进行过程,当数据被修改时,原始数 据会被复制到回滚段。...如果当前盘区不够 用,事务会在请求扩展下一个盘区,如果所有已分配盘区都被用完,事务会覆盖最初盘 区或者回滚段允许情况下扩展新盘区来使用。...可以发现每次对数据变更都会产生一个 undo log,当一条记录被变更多次时,那么就会产生多条 undo log,undo log 记录是变更前日志,并且每个 undo log 序号是递增,那么当要回滚时候

16720

这里有数据库一点新资讯!

和副本集事务一样,分布式事务同样没有限制一个事务中最大文档读取次数,但一般来说建议一个事务读取最大文档数不要超过1000;事务写入文档数较多时,建议拆分成多个不同事务进行分批写入。...4.2版本,MongoDB支持创建“物化”视图,物化视图会在创建时查询到数据进行存储(需用户指定表名),并支持手动刷新。...:更新文档某些字段时,支持读取和计算当前文档其他字段(例如将其他字段值赋值给欲更新字段),且这一操作是原子。...同时,新驱动也支持网络传输错误导致写入操作进行重试。为了保证数据一致性,驱动层会自动地每个写入操作赋予一个唯一id,网络异常时通过唯一id来判断是否重试写入。...(四)字段级加密 MongoDB 4.2API驱动层面,实现了字段级加密,用户可以写入数据前指定字段进行加密传输,在读取时只能通过特定证书或密码加密信息进行解密。

50660

CMU 15-445 -- Timestamp Ordering Concurrency Control - 15

复制数据,维护、更新时间戳存在额外成本 可能产生不可恢复 schedule (具体见下节) ---- Recoverable Schedules 如果一个 schedule 能够保证每个事务提交前,修改过其读取过数据事务都已提交... OCC ,数据库为每个事务都创建一个私有空间: 所有被读取数据都复制到私有空间中 所有修改都在私有空间中执行 乐观并发控制,当一个事务提交时,数据库管理系统(DBMS)会进行一系列检查,以确保提交写集...具体实现事务 Ti 提交前会进行以下步骤: 冲突检查:事务 Ti 会检查其他正在执行或已经提交事务,查找是否有与自己写集(修改数据项及其时间戳或版本号)发生冲突事务。...执行验证和写入:当事务准备提交时,验证阶段,DBMS会检查事务读集和写集是否与其他事务产生冲突。这是为了确保可串行化调度。...如果没有冲突,事务会在保护临界区内执行写入操作,将其写集应用到全局数据库。 通过这些步骤,乐观并发控制可以尽可能避免锁和阻塞情况下实现数据一致性和可串行化调度。

20320

简单聊聊Innodb崩溃恢复那些事

时间点时活跃未提交事务做出修改操作进行回滚 no_steal : 不允许 ,每次checkpoint时可能都需要等待当前所有活跃事务结束,同时禁止新事务开始,确保不会产生部分写出问题 force...---- 部分写出问题 innodb每次checkpoint时,都是从flush链表尾部取出最早被修改脏页进行刷盘,那么这是否存在部分写出问题呢?...checkpoint lsn 之前redo日志是否包含当前未提交事务产生修改呢?...若每秒purge页数量为20,这样设计磁盘空间有着相当高要求。 因此,InnoDB存储引擎设计undo页可以进行重用。...每个回滚段都有一个History链表,一个事务某个回滚段写入一组update undo日志会在事务提交之后,加入到当前回滚段History链表

39130

ElastricSearch第三弹之存储原理(详细+易懂)

段提出来原因是:早期全文检索为整个文档集合建立了一个很大倒排索引,并将其写入磁盘。如果索引有更新,就需要重新全量创建一个索引来替换原来索引。...新增:新增很好处理,由于数据是新,所以只需要对当前文档新增一个段就可以了。 删除:段是不可改变,所以既不能把文档从旧移除,也不能修改旧段来进行文档更新。...一个被标记删除文档仍然可以被查询匹配到,但它会在最终结果被返回前从结果集中移除。 更新更新相当于是删除和新增这两个动作组成。...写入单个倒排索引允许数据被压缩,减少磁盘 I/O 和需要被缓存到内存索引使用量。 段缺点 当旧数据进行删除时,旧数据不会马上被删除,而是 .del 文件中被标记为删除。...总结 最后我们来说一下添加了事务日志后整个存储流程吧: 一个文档被索引之后,先被写入到内存,但是为了防止数据丢失,会追加一份数据到事务日志

24030

完美数据迁移-MongoDB Stream应用

业务双写 业务双写是指现有系统先进行改造升级,支持同时新库和旧库进行写入。 之后再通过数据迁移工具旧数据做全量迁移,待所有数据迁移转换完成后切换到新系统。 示意图: ?...变更删除字段 clusterTime 对应oplog时间戳 txnNumber 事务编号,仅在多文档事务中出现,4.0版本支持 lsid 事务关联会话编号,仅在多文档事务中出现,4.0版本支持...原理 topic 是帖子原表,迁移开始前将开启watch任务持续获得增量数据,并记录到 topic_incr表;接着执行全量迁移转换,之后再持续增量表数据进行迁移,直到无新增量为止。...每一个变更任务会不断topic产生写操作,触发一系列ChangeEvent产生。...增量表存在幂等性,即回放多次其最终结果还是一致,但需要保证表级有序,即一个表同时只有一个线程进行增量回放。

99810
领券