微信公众号
订阅号开发(服务号需要企业认证,不适合个人开发) 注册微信公众号 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 ...
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> < ...
RabbitMQ:2.基础
HelloRabbitMQ 目标 生产者发送消息,消费者接收消息,用最简单的方式实现 官网说明参见下面超链接: RabbitMQ tutorial - “Hello World!” — RabbitMQ 具体操作 创建Java工程 创建一个空项目 新建一个模块 添加依赖 1234567<dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.20.0</version> </dependency></dependencies> 发送消息 Java代码 12345678910111213141516171819202122232425262728293031323334353637383940414243import com.ra ...
RabbitMQ:1.安装
在学习RabbitMQ之前,我们先讲讲怎么安装RabbitMQ。 Docker安装 还不会Docker的小朋友可以看看我之前的一篇文章: 引用站外地址 docker /posts/f255ffad.html 12345678910111213141516# 拉取镜像docker pull rabbitmq:3.13-management# -d 参数:后台运行 Docker 容器# --name 参数:设置容器名称# -p 参数:映射端口号,格式是“宿主机端口号:容器内端口号”。5672供客户端程序访问,15672供后台管理界面访问# -v 参数:卷映射目录# -e 参数:设置容器内的环境变量,这里我们设置了登录RabbitMQ管理后台的默认用户和密码docker run -d \--name rabbitmq \-p 5672:5672 \-p 15672:15672 \-v rabbitmq-plugin:/plugins ...