
全栈开发
文章平均质量分 92
前端、后端、运维、监控
Heartsuit
物联网平台架构师,优快云博客专家,阿里云专家博主,PMI认证项目管理专家(PMP),具备物联网、云原生、大数据等领域的研发经验。
展开
-
Node后端框架Express与Koa接口统一响应封装
以前在写 SpringBoot 全栈开发的系列文章中全栈开发之后端脚手架:SpringBoot集成MybatisPlus代码生成,分页,雪花算法,统一响应,异常拦截,Swagger3接口文档,有提到对后端接口的响应数据进行统一的封装,方便前端或者第三方进行数据获取与对接工作;统一响应一般包含状态码、消息内容、数据内容等。这里对 2017 年写的一个基于 Node.js 的 Express.js 框架开发的后端项目的接口进行类似的封装。统一封装可以提高代码的可维护性、安全性和可扩展性,最佳实践。原创 2023-12-10 14:02:03 · 1869 阅读 · 0 评论 -
HaaS510开板式DTU真机连云:上报监测数据至阿里云物联网平台
HAAS510 是一种开板式 DTU ,旨在为用户已开发好的设备快速增加 4G 连云能力的 4G CAT1 数传模块。它通过将模组与用户设备集成到一个外壳内,既保持设备的一体性,又降低重新开发 PCB 的时间消耗和模组开发的难度。 HAAS510 产品采用了 JavaScript 脚本的方式,将模组的本地串口通信和通过 4G 连接云端平台的能力开放给用户。依托阿里云物联网平台,结合 HAAS510 的连云能力、实际生产环境中的电气火灾监控系统以及4G物联网卡,实现对电气火灾的远程监测。原创 2023-11-11 10:00:00 · 462 阅读 · 0 评论 -
GraphQL入门与开源的GraphQL引擎Hasura体验
Hasura 是一个开源的 GraphQL 引擎,它可以帮助开发人员快速构建和部署现代应用程序的后端。它提供了一个自动化的 GraphQL API ,可以直接连接到现有的数据库,并提供实时数据推送和订阅功能。 Hasura 团队总部位于印度。作为一款后端低代码平台,也推荐使用对标 Hasura 的国产替代产品:飞布:飞布是可视化API开发平台,对标 hasura ,灵活开放、多语言兼容、简单易学,能构建生产级 WEB API ,让前端变全栈,让后端不搬砖。原创 2023-11-04 22:41:00 · 2366 阅读 · 0 评论 -
AJ-Report开源数据可视化引擎入门实践
这篇文章是关于 AJ-Report 内部分享的小总结,当时是按照以下内容进行讲解演示的。下载、源码启动数据源、数据集、大屏大屏可视化扩展数据源: ClickHouse开源数据可视化引擎: DataEase , FlyFish , GoView , DataGear , Superset , Grafana , Metabase …AJ-Report是全开源的一个国产BI平台,基于Spring Boot+MyBatisPlus+Vue技术栈实现的前后端分离项目,易于部署与整合。原创 2023-07-29 13:28:22 · 5244 阅读 · 0 评论 -
IoT小程序框架快速体验:ASP-80智显面板设备配网与真机更新
从环境搭建到程序开发,再到真机更新体验了阿里云 IoT小程序框架 的使用流程。其中,略过了程序开发过程,而是直接采用入门案例中的公板案例(模拟器测试)与智能闹钟案例(真机测试:ASP-80智显面板),程序开发主要是基于 Vue 的前端开发工作,因时间原因未能完成与云联动的测评,这里主要记录下遇到的3个小问题。 VScode无法调起模拟器。 如何使用串口调试工具发送命令。 设备配网报错。原创 2023-03-19 19:05:55 · 2820 阅读 · 0 评论 -
Nginx高可用极速实战:通过KeepAlived与华为云虚拟IP实现
背景接触 Nginx 也有几年了,但是以前的服务都是通过一台机器上的 Nginx 来代理,一直没使用过 Nginx 高可用方案。在严格要求高可用 HA (High Availability)的场景中,一台 Nginx 服务难免出故障,作为流量入口,单实例部署的 Nginx 服务挂掉后的后果不堪设想。今天就来体验下业界主流的结合 KeepAlived 实现的 Nginx 高可用方案(抢占模式),并在华为云的生产环境下进行实战。KeepAlived 是基于虚拟路由冗余协议(Virtual Router Re原创 2022-05-04 14:22:48 · 2513 阅读 · 1 评论 -
全栈开发之ElasticSearch8.0分布式搜索引擎集群及其高可用测试
背景如今人们的行为在网络中的各类系统中留下了清晰的足迹,各行各业的数据都在源源不断地产生着:收集的日志数据越积越多,用户的订单数据越来越多,网络爬取得到的数据不断增长,在这些可能用到搜索引擎的场景中,将搜索服务升级为集群以保证高可用是不得不面临的一个操作。好在 ElasticSearch 本身具备极为强大的横向扩展能力,所以这项工作操作起来并不太难。学习一项新技术,实践是最好的方式,这不, ElasticSearch 8.0来了;今天就来试试 ElasticSearch 的分布式集群搭建,并验证其高可用原创 2022-02-20 17:34:58 · 2220 阅读 · 3 评论 -
全栈开发之MinIO分布式文件存储集群
背景你们项目中关于上传的文件是存储在什么地方的?我们的项目关于文件存储经过了这么一个演进过程:静态资源目录;当时前后端不分离,直接在项目的静态资源目录,每次部署前,先备份资源目录,否则就会丢失掉这些文件;服务器上一个单独的文件存储目录;对于没多少文件可存的小项目一般这种方式就够了,这一阶段持续了一两年时间,直到单机硬盘空间不足,显然,这种方式不支持横向扩展;分布式文件存储;当时遇到多实例集群、保证高可用的需求,关于分布式文件存储,我们调研了FastDFS与MinIO以及云服务(七牛云、阿里云等的原创 2022-02-13 09:29:55 · 8009 阅读 · 9 评论 -
全栈开发之Quartz分布式定时任务调度集群
背景我们一个单体项目中有个定时任务,每隔一个小时会从各业务表中查询并计算不同用户的得分、排名,是使用 Quartz 实现的;这在后来进行横向扩展为多实例集群部署时,遇到了问题:定时任务在多个应用实例中重复执行了,显然这不是我们期望的结果,同时对计算资源来说也是一种浪费,更为严重的是会导致一段时间内数据的不一致问题,这时便涉及到集群环境下定时任务的幂等性问题。定时任务关于定时任务的实现,可通过 Spring 的 @EnableScheduling , quartz , xxl-job , elastic原创 2022-02-12 13:56:41 · 7490 阅读 · 5 评论 -
全栈开发之SpringBoot发送邮件
背景发送邮件的场景:用户注册验证、忘记密码验证、监控告警、信息推送等。这里以发送邮箱验证码为例,演示 SpringBoot 集成发送邮件的各种方法:普通文本邮件HTML富文本邮件带附件邮件内联静态图片邮件HTML模板邮件获取授权码在通过程序集成邮件服务之前,需要到各邮箱服务提供商处获取授权码,这里以QQ邮箱为例。QQ邮箱–>设置–>账户–>POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务–>开启POP3/SMTP服务,按照指示原创 2022-04-10 09:47:12 · 2501 阅读 · 0 评论 -
全栈开发之MySQL主从同步,读写分离后可能引发的问题
背景我们的业务场景是写少读多,一开始采用的是单库完成数据的读写操作。随着数据的增多,从开始的0到十万再到百万级,一路经过索引优化,SQL优化等操作,勉强撑住基本的查询,然而写操作与读操作相互影响,动不动就把数据库服务器的CPU打满。。当面临这种问题时,一般有两种解决的思路:垂直扩展(换更高配置的机器:CPU、内存、磁盘、带宽等)与水平扩展(加机器,多数据库服务实例,最好是同等配置)。垂直扩展在初期可以暂时解决问题,但随着投入成本的增加,后续可能并不能达到预期的收益,不是长久之计。水平扩展可通过一些相对较原创 2022-02-09 13:58:15 · 1277 阅读 · 0 评论 -
全栈开发之前、后端服务部署:Nginx源码安装,反向代理,静态资源服务,生产环境跨域,负载均衡
背景有了前端、后端甚至有时候还有移动端(APP、小程序)、跨平台的客户端之后,经过技术与产品的日常撕逼,然后开发、测试人员哼哧哼哧的一顿操作后,项目需要打包、部署到一个人们可以访问到的服务器上,毕竟,我们的产出是要给人们(也可能是机器。。)提供服务的。常用的反向代理(问:什么是反向代理,什么是正向代理?)服务组件有: Nginx 、 Tengine 、 OpenResty ,其实,这些的核心基础都是 Nginx ,所以这里以 Nginx 为例来部署代理我们的前后端服务。eg:一个极简的部署一般像这样:原创 2022-01-29 20:43:33 · 2597 阅读 · 0 评论 -
全栈开发之前端脚手架:Vue3.0快速集成ElementPlus,Axios, Echarts
背景搭建基于 Vue3.0 的极简前端脚手架,方便后续快速验证想法以及项目实施。涉及到的技术及组件: Vue3.0 , ElementPlus , axios , vue-router , vuex , Echarts 。Note:前提需要有 Node.js 环境,可使用 nvm 进行 Node.js 的多版本管理。npm install <package>默认会在依赖安装完成后将其写入package.json,因此安装依赖的命令都未附加save参数。$ node -vv12.原创 2022-01-23 18:02:23 · 2961 阅读 · 2 评论 -
全栈开发之后端脚手架:SpringBoot集成MybatisPlus代码生成,分页,雪花算法,统一响应,异常拦截,Swagger3接口文档
背景当需要快速实现一个想法时,如果采用 Java 技术栈,一般都是选择 SpringBoot 技术栈,虽然 SpringBoot 解决了传统 Spring 及 MVC 配置等方面的问题,且其生态体系也非常强大,但是在实际使用时仍然需要集成最起码的数据库、响应封装、异常拦截、代码生成器、接口文档等基础组件,这时一般有两种手段:使用开源的各类后台管理系统,这类系统一般模块完善,功能强大;然而很多无关紧要的模块又会带来一些干扰;使用自建的简化版,集成最常用的模块即可,一方面便于掌控,同时在“重复造轮子”的原创 2022-01-22 22:16:37 · 1969 阅读 · 1 评论 -
TDengine极简实战:从采集到入库,从前端到后端,体验物联网设备数据流转
作者:牛晓青背景我们的项目涉及物联网相关业务,由于一开始的年少无知,传感器数据采用了 MySQL 进行存储,经过近两年的数据累积,目前几个核心表单表数据已过亿,虽然通过索引优化、 SQL 优化以及读写分离等措施,勉强满足基本的查询,能在秒级给出数据;但是数据量还在持续增加,当面对用户多维度的统计需求,在实现上、效率上总是那么不尽如人意。。大概是2021年的6月份,一次偶然的机会,我在一个技术交流群中了解到涛思数据。后来花了三五天,把 TDengine 官网的文档过了一遍,并通过实际代码体验了一番,大大原创 2022-01-09 22:15:52 · 15606 阅读 · 19 评论 -
考试应用
整体预览登录、退出考试,交卷,得分排名,考试记录,历史考试错题,重考Note:排名,考试记录均目前仅提供当月数据;技术:前端:Vue,Bootstrap后端:Koa,MongodbLive DemoIf you have any questions or any bugs are found, please feel free to contact me.Your comments and s原创 2017-12-26 22:01:38 · 300 阅读 · 0 评论