分类:物联网

16 篇文章

快速构建Go语言KV Cache
缓存是几乎所有程序或产品的必需品,我们在每个角落都能看到它,比如网页、数据库、应用程序等。 它的意义在于它所带来的效率。 这就像在你忙于燃烧卡路里的问题时,把你最喜欢的零食放在桌子上,让你快速拿一下。   熟悉和可快速构建一个本地kv缓存对日常开发很重要,所以我将从头开始实现一个健全且可用的本地 kv 缓存。 KV-Cache …
Flutter内存泄漏检测
背景 Flutter技术在最近两年可谓是非常火热,本想着经过这几年的快速发展其生态链也越来越成熟。在前一段时间想去Dart packages 上找一个类似于Android中的leakcanary的库居然没有找到,于是自己找了一些资料探索了一番。 内存泄漏对App的影响 内存泄漏是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内…
简述-使用redis统计日活、周活
日活、周活数是表示用户参与度的常用指标,是衡量 PMF(Product Market Fit,产品 - 市场匹配) 的一个重要参数。redis 统计日活、周活,主要有三种方式。 使用集合 主要命令 SADD key member [member …] 时间复杂度:O(N),N 是被添加的元素的数量 将一个或多个 member 元素加入到集合 key…
消息队列–经验小结
现代开发中,随处可见消息队列的身影,对于跨服务、跨语言甚至同一个业务的不同模块之间都能见到消息队列大显身手,下面就消息队列做一个应用场景、设计思路、技术实现等诸多方面做一个汇总。 1、常见的消息队列的中间件及其特点 中间件名称吞吐量特点RabbitMQ万级别社区比较活跃,功能较完备,不是分布式的,延迟低,采用erlang语言开发。ActiveMQ万…
关于FreeRTOS任务调度算法的介绍
FreeRTOS任务调度算法有三种:第一种是基于优先级的抢占式任务调度算法,第二种是基于优先级的时间片轮转调度算法,第三种是合作式调度算法。这三种方法各有各的优劣,下面我们具体分析一下: 调度器 要想了解调度算法,就需要先了解什么是调度器。调度器就是使用特定的算法来决定当前需要执行那个任务,调度器可以识别任务的状态,一般包括就绪态、挂起态,当任务处…
Flutter如何优雅地实现国际化
本人初结识Flutter,文章内容如有理解错误,欢迎指正。 为了让不同国家的用户都可以使用我们开发的应用,在应用上架之前需要让应用能够支持多种语言,即应用的国际化。 应用的国际化主要涉及语言和地区差异性配置两个方面,它们是应用程序的组成部分之一。在Flutter开发中,实现国际化大都采用的方案是Intl(如熟悉此方案可跳过) Intl方案 1.添加…
浅谈DDD(二)
上一次,我们聊了DDD的战略设计,这一篇我们从技术实现的角度聊聊DDD的战术设计。 战术设计:DDD 的要点 实现领域对象之间的关联并描述它们的功能似乎很容易,但是应该以清晰和直观的方式正确地区分它们的意义和存在理由。 DDD提出了一组构造和模式来实现它。 实体(Entities) 具有独特身份并具有连续性的对象被称为实体(Entitie…
gin框架剖析(一)
gin 是目前 Go 里面使用最广泛的框架之一了,弄清楚 gin 框架的原理,有助于我们更好的使用 gin。这个系列 gin 源码阅读会逐步讲明白 gin 的原理,欢迎关注后续文章。 gin 概览 想弄清楚 gin, 需要弄明白以下几个问题: request数据是如何流转的。gin框架到底扮演了什么角色。请求从gin流入net/http, 最后又是…
源码阅读之再探EMQX
路由层与分布层 上一篇文章,将消息订阅与投递过程中偏重Conn进程与Session进程间的关系,这一篇文章则偏重于系统如何维护路由层和分布层数据以及如何通过他们组织分布式服务并进行消息投递的。 ( 感兴趣的可以看看上一篇,两篇文章一起“食用”更香哦  ( ^_^) ) 图四 订阅与发布 订阅发布是一个解耦的过程,图三中一对一消息发布只是为…