微信公众号
订阅号开发(服务号需要企业认证,不适合个人开发) 注册微信公众号 1.注册网站 官网:https://mp.weixin.qq.com/ 2.注册流程 1)打开官网,点击右上角的立即注册 2)选择订阅号注册 3)依次输入要求的信息,勾上我同意,点击注册 4)选择中国内地,点击确定 5)选择订阅号确定 6)主体类型选择个人,填写好信息点击继续 7)填写好信息点击完成 关键词回复: 半匹配:只要包含关键字即可 全匹配:跟名字一样 开发者自行开发 接口测试号 位置: 微信官方文档->开始开发->接口测试号申请 打开WebStorm创建一个简单的服务器: 在工程文件夹下导包: npm install express 12345678910//引入express模块const express = require('express')//创建app应用对象const app = express();//验证服务器的有效性app.use((req,res,next)=>{})//监听端口号app.listen(3000,()=&g ...
Redis(十三)进阶:Redis分布式锁
分布式锁是控制分布式系统间同步访问共享资源的一种方式,其可以保证共享资源在并发场景下的数据一致性。 分布式锁的工作原理 当有多个线程要访问某一个共享资源(DBMS 中的数据或 Redis 中的数据,或共享文件等)时,为了达到协调多个线程的同步访问,此时就需要使用分布式锁了。 为了达到同步访问的目的,规定,让这些线程在访问共享资源之前先要获取到一个令牌token,只有具有令牌的线程才可以访问共享资源。这个令牌就是通过各种技术实现的分布式锁。而这个分布锁是一种"互斥资源",即只有一个。只要有线程抢到了锁,那么其它线程只能等待,直到锁被释放或等待超时。 问题引入 场景 某电商平台要对某商品(例如商品 sk:0008)进行秒杀销售。假设参与秒杀的商品数量amount 为 1000 台,每个账户只允许抢购一台,即每个请求只会减少一台库存。 实现 创建一个 Spring Boot 工程。 pom.xml 添加lombok 依赖与 Redis 和 Spring Boot 整合依赖。 12345678910111213141516171819&l ...
Redis(十四)拓展:Redis的面试题整理和解答
概述 什么是Redis Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。 Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。 与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。 Redis有哪些优缺点 优点 读写性能优异, Redis能读的速度是110000次/s,写的速度是81000次/s。 支持数据持久化,支持AOF和RDB两种持久化方式。 支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。 数据结构丰富,除了支持string类型的value外还支持hash、set、zset、li ...
Java响应式编程-4.Spring Security Reactive
Spring Security Reactive RBAC权限模型 WebFlux配置:@EnableWebFluxSecurity、@EnableReactiveMethodSecurity SecurityFilterChain 组件 AuthenticationManager 组件 UserDetailsService 组件 基于注解的方法级别授权 整合 123456789101112131415161718192021222324252627282930313233343536<dependencies> <!-- https://mvnrepository.com/artifact/io.asyncer/r2dbc-mysql --> <dependency> <groupId>io.asyncer</groupId> <artifactId>r2dbc-mysql</artifactId> <version>1.0 ...
Java响应式编程-3.R2DBC
Web、网络、IO(存储)、中间件(Redis、MySQL) 应用开发: 网络 存储:MySQL、Redis Web:Webflux 前端; 后端:Controller – Service – Dao(r2dbc;mysql) 数据库: 导入驱动; 以前:JDBC(jdbc、各大驱动mysql-connector); 现在:r2dbc(r2dbc-spi、各大驱动 r2dbc-mysql) 驱动: 获取连接 发送SQL、执行 封装数据库返回结果 r2dbc原生API:https://r2dbc.io boot整合spring data r2dbc:spring-boot-starter-data-r2dbc 三大组件:R2dbcRepository、R2dbcEntityTemplate 、DatabaseClient RBAC权限模型导入,基础CRUD练习;SQL文件在附录 1-1,1-N 关系处理; 扩展:导入接口文档进行测试: 访问 项目/doc.html 12345678910<dependency> <g ...
Java响应式编程-2.Spring Webflux
Spring Webflux Reactor核心:HttpHandler 原生API DispatcherHandler 原理 DispatcherHandler 组件分析 DispatcherHandler 请求处理流程 返回结果处理 异常处理 视图解析 重定向 Rendering 注解式 - Controller 兼容老版本方式 新版本变化 SSE 文件上传 错误响应 @ExceptionHandler ErrorResponse: 自定义 错误响应 ProblemDetail:自定义PD返回 WebFlux配置 @EnableWebFlux WebFluxConfigurer WebFlux:底层完全基于netty+reactor+springweb 完成一个全异步非阻塞的web响应式框架 底层:异步 + 消息队列(内存) + 事件回调机制 = 整套系统 优点:能使用少量资源处理大量请求; 组件对比 API功能 Servlet-阻塞式Web WebFlux-响应式Web 前端控制 ...
GLA轻量级日志系统
轻量级日志系统-Loki 日志系统 常见日志系统: GLA ELK 数仓 日志处理流程:采集 ==> 存储 ==> 检索 ==> 可视化 Loki 介绍 Loki 是一个可水平扩展、高可用性、多租户日志聚合系统,其灵感来自 Prometheus。Loki 与 Prometheus 的不同之处在于,它专注于日志而不是指标,并通过推送而不是拉取来收集日志。 Loki 的设计非常经济高效,并且具有高度可扩展性。与其他日志系统不同,Loki 不会对日志内容进行索引,而只会对日志的元数据进行索引,将其作为每个日志流的一组标签。 日志流是一组共享相同标签的日志。标签帮助Loki在您的数据存储中找到日志流,因此拥有一组高质量的标签是高效查询执行的关键。 然后,日志数据被压缩并以块的形式存储在对象存储中,如亚马逊简单存储服务(S3)或谷歌云存储(GCS),甚至为了开发或概念验证,存储在文件系统上。小索引和高度压缩的块简化了操作,显著降低了Loki的成本。 日志结构 Loki数据存储格式 index:索引;存储Loki标签,如日志级别、来源、分组 chun ...
goroutine的调度
转载于 引用站外地址 go夜读 https://github.com/talkgo/night/blob/master/content/night/12-2018-08-02-goroutine-GPM.md 阅读源码前可以阅读的资料 Goroutine背后的系统知识 golang源码剖析-雨痕老师 go-intervals 也谈goroutine调度器 golang的调度模型概览 调度的机制用一句话描述: runtime准备好G,P,M,然后M绑定P,M从各种队列中获取G,切换到G的执行栈上并执行G上的任务函数,调用goexit做清理工作并回到M,如此反复。 基本概念 M(machine) M代表着真正的执行计算资源,可以认为它就是os thread(系统线程)。 M是真正调度系统的执行者,每个M就像一个勤劳的工作者,总是从各种队列中找到可运行的G,而且这样M的可以同时存在多个。 M在绑定有效的P后,进入调度循环 ...
conan2
conan 什么是conan 从官网的介绍上来看,它是一个为C和C++开发者设计的软件包管理器。开源、去中心化和多平台的软件包管理器,用来创建和共享所有本地二进制文件。现在官网上的版本已经是2.0,1.x的版本就不建议学了。 引用站外地址 conan官网 https://conan.io/ 引用站外地址 conanGithub https://github.com/conan-io/conan 目前最新版本: 为什么使用conan 从官网上来看,可以分为以下几点: 最佳二进制管理,为开发人员和 CI 节省时间和资源 真正的通用性,适用于任何平台、任何构建系统、任何编译器 全球最先进企业所需的可扩展性 管理工具,改进本地、嵌入式和交叉构建流程 快速响应,大规模整 ...
RabbitMQ:5.异地容灾
Federation插件 简介 Federation插件的设计目标是使RabbitMQ在不同的Broker节点之间进行消息传递而无须建立集群。 它可以在不同的管理域中的Broker或集群间传递消息,这些管理域可能设置了不同的用户和vhost,也可能运行在不同版本的RabbitMQ和Erlang上。Federation基于AMQP 0-9-1协议在不同的Broker之间进行通信,并且设计成能够容忍不稳定的网络连接情况。 Federation交换机 总体说明 各节点操作:启用联邦插件 下游操作: 添加上游连接端点 创建控制策略 准备工作 为了执行相关测试,我们使用Docker创建两个RabbitMQ实例。 特别提示:由于Federation机制的最大特点就是跨集群同步数据,所以这两个Docker容器中的RabbitMQ实例不加入集群!!!是两个独立的broker实例。 1234567891011121314151617docker run -d \--name rabbitmq-shenzhen \-p 51000:5672 \-p 52000:15672 \-v ra ...
RabbitMQ:4.集群
集群搭建 安装RabbitMQ 前置要求 CentOS发行版的版本≥CentOS 8 Stream 镜像下载地址:https://mirrors.163.com/centos/8-stream/isos/x86_64/CentOS-Stream-8-20240318.0-x86_64-dvd1.iso RabbitMQ安装方式官方指南: 安装Erlang环境 创建yum库配置文件 1vim /etc/yum.repos.d/rabbitmq.repo 加入配置内容 以下内容来自官方文档:https://www.rabbitmq.com/docs/install-rpm 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310 ...
RabbitMQ:3.进阶
整合SpringBoot 消费者工程 创建module 配置pom.xml 1234567891011121314151617181920<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.1.5</version></parent><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</artifactId> </dependency> <dependency> < ...