
开发组件
文章平均质量分 86
Blueeyedboy521
Java架构师,微服务,前端Vue,人工智能,C/C++嵌入式编程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
集成Google Authenticator实现多因素认证(MFA)
尤其是在面临日益复杂的网络安全威胁时,MFA的实施可以有效减少未经授权的访问,提高账户安全性。同时,将“实体所有”、“实体特征”、 “实体所知”三种不同认证因素结合起来增强系统或设备的安全性是研究人员容易设想的方向,因此多因素认证解决认证安全问题是大势所趋。基于OTP技术的MFA认证,是指在传统的用户名密码认证的基础上,增加一个额外的OTP认证。基于实体所知的方法是最为广泛使用的方法,如密码、验证码等,其成本低、实现简单,但同时也面临较大安全威胁如暴力破解和木马侵入等。原创 2024-06-03 08:00:00 · 3787 阅读 · 0 评论 -
消息中间件-kafka实战-第五章-kafka重复消费、顺序消费及死信队列
这个默认值是比较坑人的,如果你的消息处理逻辑比较重,比如需要查数据库,调用接口,甚至是复杂计算,那么你很难保证能够在5min内处理完500条消息,也就是说,如果上游真的突然大爆发生产了成千上万条消息,而平摊到每个消费者身上的消息达到了500的又无法按时消费完成的话就会触发rebalance, 然后这批消息会被分配到另一个消费者中,还是会处理不完,又会触发rebalance, 这样这批消息就永远也处理不完,而且一直在重复处理。,单次poll调用返回的最大消息记录数,如果处理逻辑很轻量,可以适当提高该值。原创 2023-08-22 08:00:00 · 1494 阅读 · 0 评论 -
消息中间件-kafka实战-第六章-kafka加线程池多线程消费
头条面试:当线上Kafka集群有大量消息积压时,如何利用多线程消费解决消费积压问题原创 2023-08-18 08:00:00 · 680 阅读 · 0 评论 -
SpringBoot集成钉钉自定义机器人群消息推送
企业内部有较多系统支撑着公司的核心业务流程,譬如CRM系统、交易系统、监控报警系统等等。通过钉钉的自定义机器人,可以将这些系统事件同步到钉钉的聊天群。说明当前机器人尚不支持应答机制,该机制指的是群里成员在聊天@机器人的时候,钉钉回调指定的服务地址,即Outgoing机器人。调用频率限制由于消息发送太频繁会严重影响群成员的使用体验,因此钉钉开放平台对自定义机器人发送消息的频率作出以下限制:每个机器人每分钟最多发送20条消息到群里,如果超过20条,会限流10分钟。原创 2023-03-29 14:00:00 · 3746 阅读 · 3 评论 -
Spring项目中自动打印执行SQL和耗时,这款神级插件你值得拥有
P6Spy是一个轻量级框架,只需简单配置,就可以无缝地拦截和记录数据库执行sql以及耗时,而无需对现有应用程序进行代码更改。其原理是包装原有的数据源,在sql执行前后做一些功能增强。P6Spy通过对数据源的包装,进而实现了一系列的功能增强,让我们可以方便的打印sql执行情况。但是相应的,如果在生产环境开启p6spy的打印功能,对性能还是由一定的影响的。原创 2023-01-13 08:00:00 · 1234 阅读 · 0 评论 -
SpringBoot集成阿里EasyExcel导出excel高级实战
/*** easyExcel枚举转换return "正常" . equals(cellData . getStringValue())?1 : 0;} try {//给字段重新赋值 String expression =(String) me . invoke(annotation);break;} }./*** easyExcel枚举转换。原创 2022-12-12 08:00:00 · 2690 阅读 · 0 评论 -
Feign高级实战-源码分析
Feign 是声明式 Web 服务客户端,它使编写 Web 服务客户端更加容易Feign 不做任何请求处理,通过处理注解相关信息生成 Request,并对调用返回的数据进行解码,从而实现 简化 HTTP API 的开发如果要使用 Feign,需要创建一个接口并对其添加 Feign 相关注解,另外 Feign 还支持可插拔编码器和解码器,致力于打造一个轻量级 HTTP 客户端通过 @EnableFeignCleints 注解启动 Feign Starter 组件。原创 2022-11-23 18:18:59 · 672 阅读 · 0 评论 -
nginx实战
前面说到反向代理我们是无感知的,我们并不知道我们需要访问的目标,我们只是知道代理的地址。这个结果和情况一是一样的,按照请求路径中的/api/匹配到了对应的代理,代理到服务端的时候,把请求的ip和port替换为代理服务的ip和port,而对应的uri则完全没有变化,是整体的复制过去。这个结果说明代理的时候,按照请求路径中的/api匹配到了对应的代理,代理到服务端的时候,把请求的ip和port替换为代理服务的ip和port,而对应的uri则完全没有变化,是整体的复制过去。:在nginx配置文件中中设置了。原创 2022-11-22 22:00:00 · 2600 阅读 · 0 评论 -
消息中间件-kafka实战-第四章-kafkaUI
分区数量可以跟结合SpringBoot实例定义或者kafka集群数量定义,比如kafka集群有3个,则分区可以定义三个,分区完全用来物理存储消息。可以看到如下,每个主题有三个分区,然后SpringBoot启动了两个实例,则其中一个消费者会消费两个分区。此时,如果再启动一个SpringBoot实例,则三个分区会被分配到三个实例。主题命名规则,采用小驼峰的命名规则,比如iotMessagePush。登录地址:192.168.0.44:8080。每个主题最好定义多个多个分区,至少一个备份。原创 2022-11-10 17:41:33 · 489 阅读 · 0 评论 -
MongoDB入门与实战-第四章-SpringBoot集成MongoDB
excludeId不显示id,只显示firstCategory字段,这个字段是显示categories索引小标0的值,也就是categories中第一个值。参考:https://docs.mongodb.com/drivers/java/Java 连接 MongoDB 服务器,与我们常用的连接关系型数据库方式类似!使用用户名test,密码test登录 MongoDB 的test_db数据库。无密码连接指定三台服务器 (端口 27017, 27018, 和27019)对stars分组并计数。原创 2022-11-11 08:30:00 · 665 阅读 · 0 评论 -
MongoDB入门与实战-第三章-数据操作增删改查索引
mongodb数据增删改查原创 2022-11-03 08:00:00 · 904 阅读 · 0 评论 -
分布式任务调度XXL-JOB-第二章-SpringBoot集成XXL-JOB
当然xxl-job远不止这点功能,对其他扩展信息感兴趣的小伙伴可以自行上网搜索,也可以访问Xxl-Job官方文档:https://www.xuxueli.com/xxl-job/就可以看到我们已经有一条任务了,此时点击“操作”,然后点击“启动”,定时任务就运行了。此处的AppName填你项目中配置的xxl.job.executor.appname名称。此时启动我们的测试项目,会发现打印的启动日志已经注册到xxl-job。回到 http://127.0.0.1:8080/xxl-job-admin/ 界面。原创 2022-10-18 20:25:51 · 1747 阅读 · 0 评论 -
分布式任务调度XXL-JOB-第一章-概述及部署
任务调度是日常开发中非常常见的一个业务场景,我们经常需要去运行一些周期性、指定时间点等方式自动触发的异步业务逻辑;原创 2022-10-11 09:05:55 · 1525 阅读 · 0 评论 -
详解一致性hash算法
同事数据定位算法不变,只是多了一步虚拟节点到实际节点的映射,如果定位到Node A#1 、Node A#2 、Node A#3三个虚拟节点的数据均匀定位到Node A上,这样就解决了服务节点少时数据倾斜的问题;此时对象ObjectA、B、D不受影响,只有对象C需要重新定位到新的Node X,一般的,在一致性Hash算法中,如果增加一台服务器,则受影响的数据仅仅是新服务器到前一台服务器(即沿着逆时针方向行走遇到的第一台服务器)之间的数据,其他数据也不会受到影响;3 – > 2/3 节点缓存失效。原创 2022-10-09 16:35:23 · 815 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第七章-告警
SkyWalking告警功能是在6.x版本新增的,其核心由一驱动,这些规则定义在config/alarm-settings.yml文件中.告警规则般义分为两部分:1 .告警规则:它们定义了应该如何触发度量劲爆,应该考虑什么条件.2 .Webhook(网络钩子):定义当警告触发时,哪些服务终端需要被告知。原创 2022-09-26 18:45:00 · 1229 阅读 · 0 评论 -
消息中间件-kafka实战-第三章-SpringBoot集成kafka
我们知道,kafka中每个topic被划分为多个分区,那么生产者将消息发送到topic时,具体追加到哪个分区呢?这就是所谓的分区策略,Kafka 为我们提供了默认的分区策略,同时它也支持自定义分区策略。其路由机制为:① 若发送消息时指定了分区(即自定义分区策略),则直接将消息append到指定分区;原创 2022-09-26 13:22:17 · 1688 阅读 · 0 评论 -
消息中间件-kafka实战-第二章-安装
zookeeper存储kafka集群中上下线信息,还会存储每个分区下那个是leader,用来对集群元数据的管理、控制器的选举kafka2.8版本之后,不再需要zookeeper,而是用了自己使用的。原创 2022-09-23 19:34:04 · 1472 阅读 · 0 评论 -
消息中间件-kafka实战-第一章-介绍
Kafka传统定义:Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只接收感兴趣的消息。Kafka最新定义:Kafka是一个开源的分布式事件流平台(Event Streaming Platform),被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用。原创 2022-09-19 08:00:00 · 750 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第六章-日志采集
编写logback⽇志配置⽂件。在resources下新建⼀个logback-spring.xml⽂件,根据官⽹⽂档编写配置⽂件,可以写作以下两种。配置项说明:https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/configurations/打开agent/config/agent.config配置文件,添加如下配置信息。重点是设置输出tid,可以在任何位置设置打印。原创 2022-09-14 18:00:00 · 4030 阅读 · 6 评论 -
SpringCloud链路追踪SkyWalking-第五章-性能分析
skywalking的性能分析,在根据服务名称,端点名称(请求url),以及相应的规则建立了任务列表后,在调用次任务列表的端点后。skywalking会自动记录,剖析当前端点,生成剖析结果,可以用来定位具体哪行代码耗时比较长。原创 2022-09-13 18:00:00 · 748 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第四章-自定义链路追踪
如果我们希望对项目中的业务方法,实现链路追踪,方便我们排查问题,可以使用如下的代码 引入依赖。原创 2022-09-09 20:30:00 · 905 阅读 · 0 评论 -
docker部署RocketMQ
link参数连接到了rmqnamesrv容器,并使用了别名namesrv,因此后面再rmqconsole容器中,可以使用namesrv:9876访问rmqnamesrv。console是rocketmq的扩展组件,console组件提供了图形化的界面,便于我们管理和监控rocketmq。–restart=always:表示随着docker一起启动。–link:指定namesrv容器的名称。–mynet:组件一个网络。原创 2022-09-07 12:07:02 · 486 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第三章-接入微服务
准备一个SpringBoot程序,打成可执行jar包,写一个shell脚本,在启动项目的Shell脚本上,通过-javaagent参数进行配置SkyWalking Agent来跟踪微服务;-Dskywalking.collector.backend_service可以指定远程地址,但是-javaagent必须绑定你本机物理路径的skywalking-agent.jar。属性对应的源码:org.apache.skywalking.apm.agent.core.conf.Config.java。原创 2022-09-05 19:00:00 · 595 阅读 · 0 评论 -
Tomcat7集成链路追踪SkyWalking6.6版本
SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。本示例演示使用skywalking监控Tomcat下面的项目链路调用跟踪。原创 2022-08-31 12:29:18 · 1387 阅读 · 9 评论 -
SpringCloud链路追踪SkyWalking-第二章-部署搭建及高可用
Skywalking集群是将skywalking oap作为一个服务注册到nacos上,只要skywalking oap服务没有全部宕机,保证有一个skywalking oap在运行,就能进行跟踪。skywalking-oap-server服务启动会暴露11800和12800两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800,修改端口可以修改。启动成功后会启动两个服务,一个是skywalking-oap-server,一个是skywalking-web-ui:8868。.......原创 2022-08-30 18:30:00 · 1899 阅读 · 0 评论 -
SpringCloud链路追踪SkyWalking-第一章-介绍
Skywalking 是一个优秀的APM(application performance monitor)应用性能监控系统,针对微服务场景设计,可以方便的实现Spring cloud等微服务场景下的性能监控、链路追踪等。而v8.x版本也支持了日志收集功能,可以取代ELK作为分布式下日志收集的方案。一个系统实现 监控+追踪+日志 的多个能力,有效降低微服务下运维的复杂度。...原创 2022-08-25 18:56:24 · 481 阅读 · 0 评论 -
SpringCloud集成链路追踪Sleuth+Zipkin
当一个分布式系统服务多了之后,前端访问接口可能涉及到多个服务调用链路随着服务的越来越多,对调用链的分析会越来越复杂当前端访问接口出现问题的时候,我们如何快速定位是哪个服务出现故障比较麻烦链路追踪的出现正是为了解决这种问题。是Spring Cloud 实现了分布式链路跟踪解决方案。分布式链路追踪(Distributed Tracing),就是将一次分布式请求还原成调用链路,进行日志记录,性能监控并将一次分布式请求的调用情况集中展示。原创 2022-08-24 19:30:00 · 1510 阅读 · 0 评论 -
nginx实现并发连接与IP流量限速功能
本文针对 Nginx 的三个模块进行配置,并证实各自的功能特点:(1)limit_conn_zone 模块 - 限制统一 IP 地址并发连接数;(2)limit_request 模块 - 限制同一 IP 某段时间的访问量;(3)core 模块提供 - limit_rate 限制同一 IP 流量。在 Nginx 中 以 LIMIT 开头的 配置项,都是做 限制 功能,以上三个功能都是 Nginx 编译后就有的功能,属于内置模块。原创 2022-08-23 08:00:00 · 1160 阅读 · 0 评论 -
docker安装Prometheus+Grafana监控系统(SpringBoot集成监控)
node-exporter用于采集node的运行指标,包括node的cpu、load、filesystem、meminfo、network等基础监控指标,类似于zabbix监控系统的的zabbix-agentnode-export由Prometheus官方提供、维护,属于监控指标收集类UNIX内核操作系统的必备的exporter。...原创 2022-08-18 19:14:48 · 21029 阅读 · 0 评论 -
SpringCloud集成SpringDoc和Swagger3
它将路径重写/v3/api-docs/{SERVICE_NAME}为/{SERVICE_NAME}/v3/api-docs,由另一个负责与nacos发现交互的路由处理。因此,我们在path下有多个OpenAPI资源/v3/api-docs/{SERVICE_NAME},例如/v3/api-docs/org。时,会转发到http//edevp-gateeay8899/auth/v3/api-docs,而根据定义的路由就会请求到edevp-auth服务,由于。,正好跟我们单独访问授权中心的。...原创 2022-07-17 23:34:40 · 5173 阅读 · 7 评论 -
SpringBoot集成SpringDoc和Swagger3
SpringDoc是一款可以结合SpringBoot使用的API文档生成工具,基于OpenAPI3,目前在Github上已有1.7K+Star,更新发版还是挺勤快的,是一款更好用的Swagger库!值得一提的是SpringDoc不仅支持SpringWebMvc项目,还可以支持SpringWebFlux项目,甚至SpringRest和SpringNative项目。调用时可以看到设置的token。......原创 2022-07-17 23:01:43 · 4055 阅读 · 0 评论 -
nginx代理mysql和redis
这里监听另外一台B虚拟机中的192.168.0.44:3306,并通过A虚拟机的3306端口开放出去之后,只要外部连接A虚拟机ip:3306,并使用mysql的用户名、密码,就可以访问内部的原创 2022-07-12 09:26:14 · 1563 阅读 · 0 评论 -
logback日志实战
扩展属性方法一:写死属性java定义配置需要在logback.xml中定义使用方法二:MDC动态设置定义注册使用方法三 自定义转换器(建议这种做法)每打印一行日志都会调用如下方法;创建自定义格式转换符有两步:示例代码:2.在logback.xml中注册该转换器,并自定义转换符注册:自定义ip转换符:经过这两步骤后,即可将自定义的ip转换符添加到输出模板当中了。这里的10.10.10.10便是转换后的值了。SpringBoot2.6.8以上版本完整配置参考如下原创 2022-07-06 19:24:58 · 373 阅读 · 0 评论 -
nginx实战-frp+docker+nginx+tomcat内网穿透无法获取客户端真实ip
浏览器–>frp–>nginx(docker)–>tomcat在公网部署了frp服务,在本地内网docker环境下安装好了nginx服务,访问内网中的tomcat,但我查看nginx的日志时,发现记录的ip全是内网docker的ip,没有获取到真实的访问ip。用查看本地docker环境的ip,发现nginx获取到的ip全部是docker的gateway的ip原因分析查了一下frp文档,文档中简单的说了下,需要在frpc.ini配置文件中 ,需要增加一行,便可以开启记录真实ip的功能。在frpc.ini原创 2022-07-01 11:52:49 · 2645 阅读 · 3 评论 -
微服务面试篇-Sentinel
线程隔离有两种方式实现:Hystrix默认是基于线程池实现的线程隔离,每个被隔离的业务都要创建一个独立的线程池,线程过多会带来额外的CPU开销,性能一般,但是隔离性更强。Sentinel是基于信号量(计数器)实现的线程隔离,不用创建线程池,性能较好,但是隔离性一般。支持主动超时支持异步调用线程的额外开销比较大低善出轻量级,无额外开销不支持主动超时不支持异步调用高频调用高扇出限流:对应用服务器的请求做限制,避免因过多请求二导致服务器过载甚至宕机。限流算法常见的包括两种:Gateway则采用了基于Re原创 2022-06-21 20:00:00 · 1265 阅读 · 0 评论 -
docker容器的时间和宿主机时间不一致相差8小时
在docker容器和系统时间不一致是因为docker容器的原生时区为0时区,而宿主机时间是+8个时区先要确认宿主机时间是否正确可以使用date命令如果时间错误,则先进行对时方法一:启动时进行映射运行 docker run 添加 -v /etc/localtime:/etc/localtime 选项,如下:方法二:复制时区信息到容器该场景适用于已经创建的容器:如果本机时区正确直接:如果本机时区不正确:...原创 2022-06-10 20:30:00 · 10656 阅读 · 0 评论 -
亿级流量的缓存方案-缓存同步-Canal实战
缓存数据同步的常见三种方式:设置有效期:给缓存设置有效期,到期后自动删除。再次查询时更新同步双写:在修改数据库的同时,直接修改缓存设置有效期:修改数据库时发送事件通知,相关服务监听到通知后修改缓存数据canal,译意为水道/管道/沟渠,是阿里巴巴旗下的一款开源项目,基于JAVA开发。主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。以下参考canal官网:https://github.com/alibaba/canal。但是canal的数据同步不是全量的,而是增量。基于binary原创 2022-06-09 19:37:24 · 2250 阅读 · 0 评论 -
亿级流量的缓存方案-多级缓存-OpenResty实战
OpenResty是一个机遇Nginx的高性能web平台,用于方便的搭建能过处理超高并发,扩展性极高的动态web应用、Web服务和动态网关。具备下列特点:官方网站:https://openresty.org/cn/https://blog.youkuaiyun.com/Blueeyedboy521/article/details/125142843https://blog.youkuaiyun.com/Blueeyedboy521/article/details/125141844nginx提供了内部API用以发送http请求:原创 2022-06-09 22:00:00 · 1044 阅读 · 0 评论 -
nginx使用lua实战
目录一、介绍二、安装1、apt安装2、测试hello world3、命令模式三、lua语法1、数据类型2、变量3、拼接字符串..4、循环5、函数6、条件控制一、介绍lua是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放,其设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。官网:https://www.lua.org/二、安装1、apt安装apt install lua5.32、测试hello world1)、在linux虚拟机的任意目录下,新建hello.原创 2022-05-30 20:00:00 · 5660 阅读 · 0 评论 -
linux下安装OpenResty
首先你的linux虚拟机必须联网首先要安装OpenResty的依赖开发库,执行命令:2、安装OpenResty仓库你可以在你的 CentOS 系统中添加 仓库,这样就可以便于未来安装或更新我们的软件包(通过 命令)。运行下面的命令就可以添加我们的仓库:如果提示说命令不存在,则运行:然后再重复上面的命令然后就可以像下面这样安装软件包,比如 :4、安装opm工具opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。如果你想安装命令行工具 ,那么可以像下面这样安装 包原创 2022-06-06 22:00:00 · 1505 阅读 · 0 评论