- 博客(1139)
- 资源 (9)
- 问答 (1)
- 收藏
- 关注
原创 分布式微服务系统架构第148集:JavaPlus技术文档平台日更
在使用Redis过程中,key的过期问题是一个常见的挑战,本文将详细介绍Redis key过期的原理、常见问题及解决方案。Redis key过期问题是使用Redis缓存系统时必须面对的挑战,通过理解Redis的过期机制原理,针对不同场景采用合适的解决方案,可以有效避免缓存雪崩、击穿和穿透等问题,提高系统的稳定性和性能。在实际工作中,建议建立标准的问题排查流程和工具集,提前做好监控和告警,做到早发现、早处理,避免问题扩大化。在top命令中,按P键按CPU使用率排序,找出CPU使用率最高的进程,记录其PID。
2025-06-13 22:37:19
469
原创 分布式微服务系统架构第147集:JavaPlus技术文档平台日更
简单来说,当你用浏览器访问网站时,tomcat就像餐厅传菜员,把java代码做的”菜品“,翻译成你能看懂的HTML页面,它内置的JSP引擎会把页面布局,魔法符合变成正经的Java代码,Coyote连接器负责和浏览器对暗号”处理HTTP协议。CDN即内容分发网络,本质上是个“内容快递网络”,是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。面向对象的数据库是指使用面向对象的思想来设计数据库。
2025-06-12 08:06:52
465
原创 分布式微服务系统架构第146集:JavaPlus技术文档平台
微服务里十几个服务互相调用,Zookeeper就是协调者,协调各个服务,协调各个节点,协调各个模块,协调各个服务器。所有请求先经过网关这个“快递分拣站”,自动分配到对应的模块,服务发现机制像BPS,实时定位哪些服务器活着。它用属性结构(ZNode)存储数据,节点分两种,持久节点(永久数据),和临时节点(会话结束就消失)实时监控,滴滴用它在全国地图上,动态显示每车辆的移动光点,靠的就是ES毫秒级响应。本质上它是一个分布式协调服务,核心原理:树,节点,监听。每个模块独立开发,独立部署,分布式架构的核心,解耦。
2025-06-11 07:38:58
304
原创 分布式微服务系统架构第145集:Jeskson文档-微服务分布式系统架构
该方法的主要用途是在后台并行执行多个同步任务,以提高系统性能和响应速度。例如,在一个数据同步系统中,可能需要同时同步多个数据源,以提高数据同步的效率。方法,阻塞当前线程,直到所有任务完成。:如果任务之间存在依赖关系,需要特别注意任务的执行顺序,避免因并行执行导致的逻辑错误。:在等待任务完成时,需要捕获并处理可能抛出的异常,以避免程序因未处理的异常而崩溃。:在异常处理中记录错误日志,有助于后续的问题追踪和调试。来管理线程池,可以避免创建过多的线程,提高资源利用率。,用于存放每个异步任务的执行结果。
2025-06-10 21:36:54
409
原创 分布式微服务系统架构第144集:FastAPI全栈开发教育系统
仓库地址:https://webvueblog.github.io/JavaPlusDoc/如你有多个版本混装(例如 Homebrew 和 .pkg 安装共存),可进一步排查。如果访问不了,可能是网络(如防火墙或 DNS)问题。需要我帮你写个自动卸载脚本或判断 MySQL 残留的诊断命令也可以说一声。彻底卸载 Mac 上本地安装的 MySQL(包括通过。🛠 如果你想显式设置 root 密码(跳过引导)✅ 可选:确认依赖包下载正常(联网情况良好)插件(无密码,靠本地 socket 登录)
2025-06-06 08:21:47
753
原创 生 产 资 料 的 终 极 来 源
虽 然 只 有 短 短 六 个 字 ,可 实 际 上 它 们 只 是 看 起 来 简 单而 已 ,如 若 靠 你 自 己摸索、试 错 、总 结 ,不知道需要耗费 多 少 时 间 和 精 力。再 细 想 ,向自然索取材料并不是谁都可以做到的事情 ,也 不 是谁天生就会的事情。不学习就不知道什 么 有 用 ,不学习就不知道到哪里去找什么东西,换言之 ,为 了 生 产 ,我们得向自己索取知识。花的当然是生产者自己的时间。换 言 之 ,为了生产,我们需要向自然索取材料,在社会中寻找需求,而后用自身的时间去完成。
2025-06-03 21:32:14
129
原创 荒唐地出售生产资料
当 然 ,每 个 人 的 情 况 不 一 样 ,刚开始的时候都可能 要 有 一 段 时 间 迫 不 得 已 地 直 接 出 售 自 己 的 时 间。哪有直接出售生产资料的啊?在能直接出售的时间那 么 少 的 同 时 ,还要把它以那么低的价格出售,实在是不 划 算。所 以 ,如果活到7 0 岁 的 话 ,就相当于要再次砍掉一半的可出售时间,现在只有3 8 天 了 ,这还没算上中途失业的情况。之前我们也得到过这样的结论:我们 一 生 中赚到的所有钱或财富,从本质上来看,全都是从自己的时间里挖出来的。
2025-06-03 21:32:14
328
原创 教 育 投 入
最 初 的 时 候 ,人 们 初 中 毕 业 就 可 以 开 始 工 作 ,后来得高中学 历 才行,又后来本科学历才够用,再后来研究 生 学 历 才 算 说 得 过 去 ……给 人 的 感 觉 是 ,必要的教育从 9 年 变 成 1 2 年 ,又 变 成 1 6 年 ,再 变 成 1 9 年。但 是 ,从发展到盛行已经差不多3 0 0 年的现代教育体 系 ,重点培养的并不是有效生产的所有者、设计者和组 织 者 ,也 不 是 销 售 者。它所培养的,主要是生产的被组 织 者 ,或者生产的间接参与者。
2025-06-03 21:32:14
182
原创 生活艰辛的根本原因
可 惜 的 是 ,到 最 后 发 现 ,即便要 求 那 么 低 ,自 己 竟 然 还 是 无 法 被 满 足 ,只能称其为“艰 辛 ,,。因为无效生产者毕竟去生产了,所 以 ,即便是在失败的过程中,也会学习、总结经验教训 ,只 要 不 放 弃 ,就 有 改 进 或 者 翻 盘 ,甚至成功的机会。很多人的问题在于 ,从 一开始可能就没想对,所以也没选对,于 是 ,到最后怎么吃亏的都想不明白。因为生产出来的商品 或 者 服 务 ,必须是能卖出去的,即能够满足社会需求的 ,才 能 赚 到 钱。
2025-06-03 21:32:14
215
原创 分布式微服务系统架构第143集:pom文件
我发现项目中有一个名为captcha-spring-boot-starter的目录,这很可能就是用户在寻找的spring-boot-starter-captcha。spring-boot-starter-captcha位于项目的core/captcha-spring-boot-starter目录下。我已经找到了spring-boot-starter-captcha,它位于core/captcha-spring-boot-starter目录下。我将继续查看该目录下的src目录结构,以便提供更详细的信息。
2025-06-01 11:15:50
727
原创 分布式微服务系统架构第142集:全栈开发
目录是 Java 项目中的重要文件夹,通常用于存放与 Java 应用的元数据、配置、服务发现、加密算法等相关的文件。它的作用是启用 CDI 容器,控制和管理类的生命周期。其中包含了width、height两个参数,分别代表图片的宽度和高度,支持百分比方式设置 如:{width:'100%',height:'200px'}其中包含了width、height两个参数,分别代表滑动条的宽度和高度,支持百分比方式设置,如:{width:'100%',height:'40px'}是这个 Bean 的名字。
2025-05-30 22:12:05
1130
原创 分布式微服务系统架构第140集:各种锁汇总,乐观锁、悲观锁、分布式锁、可重入锁、互斥锁、读写锁、分段锁、类锁、行级锁等
JavaPlusDoc(文档) https://webvueblog.github.io/JavaPlusDoc/:借助外部系统(Redis、ZooKeeper、Etcd)维护全局锁。:不加锁,读时取得版本号,写时通过 CAS 验证版本,无冲突则更新。:同一线程可多次获得同一把锁,锁计数器递增/递减。:把大数据结构分段,每段独立加锁,降低冲突域。:并发度最高,适合高并发库存扣减、状态流转。:线程不断轮询尝试获取锁,不进入阻塞状态。:冲突少、读多写少场景,如用户资料更新。
2025-05-27 07:52:13
798
原创 分布式微服务系统架构第141集:锁
6. 读写锁(ReentrantReadWriteLock)——缓存读写场景。10. 分段锁(ConcurrentHashMap)——无须额外代码。2. 悲观锁(SELECT FOR UPDATE)——订单处理示例。4. 可重入锁(ReentrantLock)——临界资源保护。3. 分布式锁(Redisson)——分布式库存或任务调度。7. 信号量(Semaphore)——限流示例。9. 行级锁(数据库内部)——状态流转示例。1. 乐观锁(版本号)——库存扣减示例。:由数据库引擎在该记录更新时自动加/释。
2025-05-27 07:52:13
415
原创 分布式微服务系统架构第139集:和后端字节沟通技术
每次请求携带 JWT,服务端先校验 JWT 签名与有效期,然后根据 JWT 中的用户 ID(和权限版本号),从 Redis 拉取该用户的“实际权限集”,并在当前请求上下文中完成资源级、操作级的权限检查。在抢购活动中,可先将库存预加载到本地内存队列或秒杀队列中,通过队列消费来削峰,再异步持久化,进一步提高系统吞吐。:大流量场景下,可在本地(JVM 缓存或 Caffeine)再加一层短时缓存,减少对 Redis 的频繁读取。:在超高并发下,大量请求排队会导致响应延迟;
2025-05-25 23:58:15
1020
原创 Kafka介绍
例如,一个消费者可以重置到一个更早的偏移,来重新处理过去的数据,或跳到最近的记录,从“现在”开始消费。Kafka中消费的实现方式是,通过在消费者实例之间分配log中的分区,因此每个实例在任何时间点都是一个分区的“公平共享”的独占消费者。每个独立的分区必须匹配托管它的服务器的大小,但是一个topic可以有许多分区,因此,它可以处理任意大小的数据。例如,你可以使用我们的命令行工具来"tail"(应该理解为tail命令,查看文件的尾部)任何topic的内容,不会改变已存在消费者在消费的内容。也有支持配额的操作。
2025-05-24 23:32:01
623
原创 JVM 探秘之旅:从困惑到恍然大悟的奇妙学习过程
也就是如下: ① Java 源文件—->编译器—->字节码文件 ② 字节码文件—->JVM—->机器码 每一种平台的解释器是不同的,但是实现的虚拟机是相同的,这也就是 Java 为什么能够 跨平台的原因了 ,当一个程序从开始运行,这时虚拟机就开始实例化了,多个程序启动就会 存在多个虚拟机实例。接着,JVM 就像‘星际飞船’,飞船上的解释器是‘随行翻译’,根据不同星球(硬件平台)的语言习惯,把字节码文件编译成当地的‘方言’—— 机器码。小科深吸一口气,抱着笔记本,像寻找灯塔的小船般走向程哥的工位!
2025-05-22 11:55:38
703
原创 分布式微服务系统架构第138集:打包发布全流程(iOS + Android)
① 创建应用 → ② 上传 .aab → ③ 填隐私政策 / 内容分级 → ④ 上线 Production/Closed Test。填写 App 名称、包名(Bundle Identifier / ApplicationId)、版本号、图标、启动图;Archive → Upload → “Internal / External Testers” → 发测试链接。登录 App Store Connect → My Apps → + → New App。
2025-05-20 23:49:35
1048
原创 分布式微服务系统架构第137集:ES的分布式架构原理
这里有个真实的案例。然后这样的话,你大量的时间是在访问热数据 index,热数据可能就占总数据量的 10%,此时数据量很少,几乎全都保留在 filesystem cache 里面了,就可以确保热数据的访问性能是很高的。根据我们自己的生产环境实践经验,最佳的情况下,是仅仅在 es 中就存少量的数据,就是你要用来搜索的那些索引,如果内存留给 filesystem cache 的是 100G,那么你就将索引数据控制在 100G 以内,这样的话,你的数据几乎全部走内存来搜索,性能非常之高,一般可以在 1 秒以内。
2025-05-19 08:26:23
1350
原创 分布式微服务系统架构第135集:面试了一位中兴的运维程序员
CPU2 | 8.79 | 4.40 | 1.10 | 4.40 | 81.32 | soft 较高,可能是网络或 Cassandra 线程池抢占 || CPU1 | 12.77| 3.19 | 2.13 | 1.06 | 80.85 | 主要在处理业务逻辑(如 Java 线程) || CPU0 | 7.61 | 4.35 | 3.26 | 3.26 | 81.52 | IO/软中断略高,稳定 || 核心 | %usr | %sys | %iowait | %soft | %idle | 说明 |
2025-05-18 12:55:28
915
原创 分布式微服务系统架构第136集:面试了一位华为的运维程序员
使用 GitLab CI / Jenkins / GitHub Actions 自动拉取代码,执行构建任务(如 Maven、Webpack)仓库地址:https://webvueblog.github.io/JavaPlusDoc/合理线程池配置(如 gunicorn、Java executor)、避免死循环、热点缓存。使用 jemalloc / G1 GC(JVM)、释放无用缓存、定时重启长生命周期服务。各种临时文件(客户端请求体、代理、FastCGI、uWSGI、SCGI)的存放目录。
2025-05-18 12:55:28
737
原创 分布式微服务系统架构第134集:笔记1运维服务器经验,高并发,大数据量系统
Grafana/Prometheus 将 CPU、iowait、GC、p99 延迟放在同一 Dashboard。仓库地址:https://webvueblog.github.io/JavaPlusDoc/,能直接定位是哪一个进程监听该端口。先定位资源瓶颈 → 再定位进程 → 再看线程 / 调用栈 / 系统调用 / 数据结构。load≈CPU 核数且 %sy/%wa 高 → 先查 CPU 或磁盘。:ab / wrk / vegeta 重放流量,配合。:先看全局指标再聚焦具体进程 / 线程 / 调用栈。
2025-05-17 23:29:12
690
原创 分布式微服务系统架构第133集:运维服务器6年经验,高并发,大数据量系统
构建一个系统:使用 MongoDB 分片集群保存订单数据,Redis 缓存热数据,Elasticsearch 存储历史数据,并通过 Java 服务读写协调。长时间接近 100%,排查是频繁写入日志导致 IO 拥塞,优化后日志按级别写入,响应恢复。导入到 ES,支持快速搜索、分页、复杂统计分析,而不影响 Mongo 的读写压力。(如用户最新订单、订单状态)缓存到 Redis,避免 MongoDB 频繁查询。的核心方式,适用于订单类系统、日志系统、交易系统等场景。dump 栈分析是某个线程死循环。
2025-05-16 23:54:35
1141
原创 分布式微服务系统架构第132集:Python大模型,fastapi项目-Jeskson文档-微服务分布式系统架构
synchronized和lock他们都是锁的实现,进行并发控制,synchronized它是一个关键字,而lock它是一个接口,lock接口下有多个实现类,如ReentrantLock,ReentrantReadWriteLock等。synchronized是非公平锁,ReentrantLock是可重入锁,也是公平锁,公平锁和非公平锁的区别是,公平锁是按照线程请求的顺序来分配锁,而非公平锁是随机分配的。的锁可以是对象级别的,也可以是更细粒度的,比如ReentrantLock可以锁住代码块中的某个变量。
2025-05-14 08:03:59
944
原创 分布式微服务系统架构第131集:fastapi-python
阿里云 Elasticsearch Service(AES)是一项托管服务,包含 Elasticsearch 和 Kibana,免运维、可弹性伸缩。托管式 Elasticsearch Service(AES) + Logstash/Beats。仓库地址:https://webvueblog.github.io/JavaPlusDoc/控制台 → 产品 → Elasticsearch(托管版)→ 创建实例。选择规格(节点数、规格、存储)与网络(VPC、交换机)
2025-05-13 08:13:01
684
原创 分布式微服务系统架构第130集:Python工程化FastAPI,运维Nginx-keepalived+Nginx实现高可用集群
FastAPI 是一个用于构建 API 的现代、快速(高性能)的 web 框架,使用 Python 并基于标准的 Python 类型提示。:基于(并完全兼容)API 的相关开放标准:[OpenAPI] (以前被称为 Swagger) 和 [JSON Schema]。仓库地址:https://webvueblog.github.io/JavaPlusDoc/,核心目的是验证系统的可用性、监控/告警能力、容灾/自动恢复机制是否健全。🏭 CI(持续集成)和 CD(持续部署)基于GitHub Actions。
2025-05-11 16:04:39
837
原创 分布式微服务系统架构第127集:cassandra安装部署
适用对象:希望在生产环境(4 核 / 16 GB RAM 及以上)快速部署并维护 Apache Cassandra 的运维 / 开发人员。:停节点 → 备份配置 → 升级 JDK → 替换目录 → 启动 → 等 ring 绿 → 下一节点。仓库地址:https://webvueblog.github.io/JavaPlusDoc/Apache Cassandra 安装与部署指南(2025 年版)Apache Cassandra 安装与部署指南(2025 年版)
2025-05-10 11:02:23
1258
原创 分布式微服务系统架构第126集:集群,数据库扩展,多节点分布,分库,分表,分片,分表,运维
这是基本前提:因为副本数是 2,Cassandra 需要能在两个不同节点存放相同的数据。使用 Spring Data for Apache Cassandra(推荐企业项目)启动时加载 SkyWalking 的探针(agent),用于采集调用链。✅ 副本数(replication_factor)设置建议。SkyWalking 后端 OAP 服务地址(收集数据)✅ Cassandra 中的 Keyspace 是什么?副本数(replication factor)将 Cassandra 数据部署为副本 2(
2025-05-10 11:02:23
834
原创 分布式微服务系统架构第129集:redis安装部署文档
(4 vCPU / 16 GB RAM 以上)快速部署 Redis(单机、哨兵、Cluster 模式)的后端 / 运维工程师。Master ×1、Slave ×2、Sentinel ×3(可与 Slave 同机)✅ 二、Spring Boot 集成 Redis 配置(支持单机、哨兵、集群)✅ 一、Redis 高可用部署指南(Sentinel + Cluster)✅ 二、Redis Cluster 自动化部署脚本(6 节点,3主3从)📌 2. Redis Cluster 集群模式(数据分片 + 高可用)
2025-05-10 11:02:23
2026
原创 分布式微服务系统架构第128集:elastic-search安装部署
(4 核 / 16 GB RAM 以上)构建高可用、可观测的 Elasticsearch 集群的 DevOps / 后端工程师。仓库地址:https://webvueblog.github.io/JavaPlusDoc/、Terraform 自动化部署或具体 ILM/安全脚本示例,请另行告知,我可以继续补充。:Linux(Ubuntu 20+/CentOS 7+/Rocky)或 macOS。设相同,≤ 32 GB (压缩指针);:ES 7.17.x(稳定)或 ES 8.x(安全增强)
2025-05-10 11:02:23
1263
原创 分布式微服务系统架构第125集:AI大模型
mongo,cassandra,elasticsearch,redis,clickhouse,mysql,postgresql集群,扩展,多节点分布。把用户上传的文件上传到腾讯云 COS,然后调用内容审核接口判断该文件是否包含违规内容(如暴力、涉黄等),如果违规就抛出异常。:这是 Spring Web 的一个接口,你可以用它来自定义 Web 行为(比如 CORS、静态资源、拦截器等)。每个主节点可有从节点。:至少 3 个 Etcd/Consul 实例+3 个 Patroni 主体节点,保证高可用。
2025-05-09 09:37:47
1684
原创 分布式微服务系统架构第124集:架构
Taro 会为你生成 TypeScript 配置和文件,允许你在开发过程中使用类型检查,这有助于发现潜在的错误并提供更好的代码提示和文档支持。:Webpack 可以处理复杂的打包需求,比如代码拆分、懒加载、Polyfill等,支持所有现代浏览器和低版本的浏览器。:如果你需要一个成熟、稳定且高度可定制的构建工具,特别是当项目较大,且需要复杂的打包、插件支持和优化,选择。**如果你的项目比较大,且需要精确的状态管理和全局数据流控制,或者你的团队已经熟悉 Redux,选择。,一个流行的状态管理库。
2025-04-30 08:27:26
672
原创 分布式微服务系统架构第123集:设备服务网络到微信小程序Taro开发效率,高并发架构
Taro 项目基于 node,请确保已具备较新的 node 环境(>=16.20.0),推荐使用 node 版本管理工具 [nvm] 来管理 node,这样不仅可以很方便地切换 node 版本,而且全局安装时候也不用加 sudo 了。在编译时,Taro 会帮你对样式做尺寸转换操作,但是如果是在 JS 中书写了行内样式,那么编译时就无法做替换了,针对这种情况,Taro 提供了 API。在 Java 微服务中,经常会有一些公共的工具方法,在 Taro 项目中同样可以有一个工具模块,统一管理常用的工具方法。
2025-04-29 23:25:19
952
原创 分布式微服务系统架构第122集:NestJS是一个用于构建高效、可扩展的服务器端应用程序的开发框架
排查k8s分配给docker容器的内存大小是否足够,若k8s分配给docker容器的内存足够大,依然报内存溢出,则可能是系统分配给node的内存不足(tips: 分配给node程序的内存64位系统下约为1.4GB,32位系统下约为0.7GB)在小程序中,发起请求时会涉及到多个并发流程和事件循环,下面详细描述了从发起请求到结束请求的整个过程,以及超时、挂起和低端手机性能慢时可能会遇到的各种情况。项目组模块,系统管理模块,发布预览,发布体验版,发布任务记录,日志,小程序二维码,用户操作选项卡。
2025-04-28 23:36:06
1047
原创 分布式微服务系统架构第120集:专业WebSocket鉴权
仓库地址:https://webvueblog.github.io/JavaPlusDoc/,可以自定义 WebSocket握手拦截器 → 返回HTTP状态码,比如401。不光从 URL,也能从 WebSocket 请求头拿 token。,统一管理所有在线Session(方便批量踢人/广播消息),比如客户端定时发送ping消息,服务端回复pong。可以在服务端定时心跳检测,把死掉的连接清理掉。比如token过期、恶意连接,可以主动断开。方法外包装一层 try-catch。灵活扩展,可以接认证中心、数据库。
2025-04-23 08:06:16
836
原创 分布式微服务系统架构第119集:WebSocket监控服务内部原理和执行流程
通常用来自定义 WebSocket 握手过程,比如:校验token、设置自定义属性、统一Session管理、拦截器(handshake拦截)等。如果你用的 Kafka Server 开了自动建Topic(auto.create.topics.enable=true),也可以不手动建。注解的类,自动注册成 WebSocket 端点。完就不管了,加一个Callback回调,拿到真正的发送成功 or 失败,做链路监控。:这里可以记录日志、发告警(钉钉/飞书/邮件),或者存到DB里,方便后续人工修复。
2025-04-23 08:06:16
810
原创 分布式微服务系统架构第121集:AppCtxHolder
本身是由 Web容器(Tomcat/Undertow/Jetty)托管的,不是 Spring 托管的!当前类不是被 Spring 托管的(比如普通 Java 类、第三方库、手动 new 出来的对象)是让你在任何地方都能访问 Spring 容器中 Bean 的万能工具。✅ 这样,WebSocket也能用上 Spring 的依赖了!(每连接一个客户端就 new 一个),而Spring容器默认是。里的 session 没移除干净,会慢慢堆积,最好在。根据 bean 名字,获取 Spring 容器里的对象。
2025-04-23 08:06:16
969
原创 分布式微服务系统架构第117集:Kafka发送工具,标准ASCII
Netty内部是责任链(Pipeline)模式,编码器和解码器在 pipeline 中按顺序处理。注意ByteBuf使用生命周期,避免内存泄漏(Netty内部有引用计数机制)完整表格(标准ASCII 0x00 ~ 0x7F片段,含0x7B重点标红):不是每一条都发,而是攒一批一起发(比如100条或者100ms发一次)每次发送时执行,通常是单线程串行(但需要注意共享资源)📈 1. 每分钟输出报警发送频率(TPS、QPS)📈 1. 每分钟输出报警发送频率(TPS、QPS)
2025-04-22 08:05:16
1088
原创 分布式微服务系统架构第118集:Future池管理容器-CompletableFuture
举个小例子,比如 Netty 收到一条业务请求,存个 CondFuture,异步发出去,下次 channelRead 回来,再通过 id 取出 Future,signal 一下返回响应,非常常见!客户端发指令(比如充值请求),服务器先缓存 Future,异步处理完后 signal 返回结果。A系统请求B系统处理数据,不阻塞主线程,通过 Future await 等待异步回包。下单后,发“支付成功消息”,等用户支付异步回调,signal Future并继续业务。
2025-04-22 08:05:16
759
原创 分布式微服务系统架构第114集:微信小程序订阅消息推送实践
在发送模板消息的接口中,也需此凭证,下面演示如何通过auth.getAccessToken来获取access_token。用户点击按钮,发起授权同意后,就会在微信的服务通知里收到如下消息,点击“进入小程序查看”,就会跳转到我们page属性的路径里。示例中创建了两个方法getJsCode()和getOpenId(),在sendMsg()方法中依次执行来获得openid。通过设置->基本设置来修改小程序类目。改造openAuth(),增加sendMsg()的调用,实现用户同意订阅消息模板后,发送模板消息。
2025-04-21 05:14:16
146
原创 分布式微服务系统架构第116集:设备网关,处理字节的大数据,过亿缓存
在程序中缓存到本地的数据时,通常会使用本地持久化存储(如文件、数据库、内存缓存等)来存储数据。如果数据量较小且只需要在内存中缓存,可以选择将数据存储在内存中,在程序启动时加载缓存数据。使用一个简单的文件或数据库同步机制,将内存数据持久化到文件或数据库中。如果需要缓存并持久化,可以使用 Redis 提供的持久化选项(RDB 或 AOF)。将缓存数据保存到本地文件中(如 JSON、XML、或二进制文件),在程序启动时读取文件恢复缓存。在启动时读取文件、数据库或 Redis 中存储的数据并恢复到内存缓存中。
2025-04-21 05:14:16
921
CountTime-AndroidStudio项目制作倒计时模块
2018-04-03
book微信小程序
2018-06-22
Android---UI篇---Menu(菜单)
2017-11-27
如何实现点击关于按钮,获得APP的版本号,APP的签名信息,APP的权限申请信息
2017-11-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人