天然玩家
请大家不要再订阅了!!!如遇到专栏里可以解决您问题的文章,您可以私信我。为了保护之前订阅用户的权益,专栏内容依旧保留,但是不会再更新内容了。
展开
-
FastAPI中如何正确理解和使用:async和await
FastAPI的async和await不是用来解决异步任务执行的,而是用户处理并发和控制任务流的。异步任务执行请使用线程池或其他第三方库。原创 2023-07-09 20:26:33 · 2607 阅读 · 0 评论 -
如何正确部署Redisearch和Rejson(附*.so文件免费下载)
正确搭建Redisearch和ReJSON环境。原创 2023-04-30 23:35:44 · 1165 阅读 · 0 评论 -
线上问题:FastAPI和trafilatura出现ValueError: signal only works in main thread of the main interpreter
解决FastAPI和trafilature出现ValueError: signal only works in main thread of the main interpreter原创 2023-04-23 02:42:36 · 1385 阅读 · 0 评论 -
完整版SpringBoot集成Prometheus配置Grafana监控指标包括响应时间分位数TP90,TP80(图+文)
(1)Prometheus/Grafana支持按照接口粒度配置监控,如只监控某个接口的QPS及响应时间等;(2)配置接口响应时间需要配置时间单位,由于接口响应时毫秒级别,并且为了提高可读性,配置的时间单位是秒;(3)配置接口响应状态比例时,使用了数据转换功能,过滤对应的标签属性,如按照status显示数据;(4)接口响应时间分位数统计使用函数:histogram_quantile,可直接配置分位数以及统计的数据;(5)SpringBoot集成Prometheus配置数据统计时,默认不开启histog原创 2022-09-29 16:16:43 · 2051 阅读 · 0 评论 -
Log4j2配置属性详解(图+文+案例)
(1)Log4j2配置日志共有三个部分:Configuration、Appenders和Loggers,核心配置Appenders和Loggers;(2)Appenders配置日志持久化和控制台输出,Loggers日志拦截器,引用Appenders的配置,即生效持久化或控制台配置;(3)ThresholdFilter是层次性日志过滤,如需使用该过滤器提取某个级别的日志,需要配置多个ThresholdFilter,放在Filter中;可以使用LevelRangeFilter替代;原创 2022-09-17 09:37:55 · 609 阅读 · 0 评论 -
源码详解Spring请求处理过程
(1)Spring处理请求的入口类为:DispatcherServlet,请求处理入口方法为:doDispatch;(2)请求处理过程:Request->doDispatch->@RequestMapping->@Controller->@Service->ModelAndView->Response;(3)HandlerMapping映射@RequestMapping,HandlerAdapter映射@Controller。原创 2022-09-06 17:47:48 · 394 阅读 · 0 评论 -
GitLab CI/CD实践之GitLab Runner
核心:(1)GitLab Runner是CI/CD执行器,执行.gitlab-ci.yml脚本;(2)GitLab Runner有多种执行引擎,如Shell、Docker等;(3)一个Gitlab仓库可以有多个GitLab Runner,在.gitlab-ci.yml中通过tags指定Runner;(4)向GitLab注册GitLab Runner,需要指定标签,并且可以自定义文件挂载。原创 2022-05-27 11:33:28 · 941 阅读 · 0 评论 -
K8S全家桶实践Nginx+Ingerss+Service+Pod之部署SpringBoot服务
使用Ingerss代理服务核心:(1)安装Ingerss-Contrller;(2)编排Ingerss,将Service注册到Ingerss-Controller;(3)配置Minikube IP映射,此时只能机器内访问服务;(4)使用Nginx代理Minikube IP映射,实现机器外部访问服务。...原创 2022-05-23 10:42:14 · 1016 阅读 · 0 评论 -
K8S如何以http方式拉取私有镜像仓库Harbor部署SpringBoot服务
核心步骤:(1)强行使用http拉取镜像。进入K8S内部,配置Docker --insecure-registry;(2)K8S添加Secret:拉取镜像时的认证信息;(3)Deployment添加imagePullSecrets进行认证;(4)Service是使用NodePort方式,测试服务需要在K8S的机器上进行。......原创 2022-05-17 15:25:54 · 2985 阅读 · 0 评论 -
详解SpringBoot服务限流原理之resilience4j
- resilience4j限流有两种入口:(1)直接注册限流服务;(2)注解+切面限流;- 限流处理逻辑:在配置的刷新时间内,递减授权次数,当授权次数减少为0时,抛出无权限异常。- “新技术”:更新授权次数和时间,使用了等待交换(ConstBackoffCAS),提高并发时CAS性能。论文:[https://arxiv.org/abs/1305.5800](https://arxiv.org/abs/1305.5800),见附件。原创 2022-05-06 15:18:28 · 2098 阅读 · 1 评论 -
实践K8S部署三种类型Service
Service有三种可用的配置方式:ClusterIP、NodePort和LoadBalancer。其中,(1)ClusterIP只能在K8S内部进行访问,无法对外提供服务,因为ClusterIP提供的IP为虚拟IP;(2)NodePort可以对外提供服务,不过想要做到负载均衡,需要获取所有Pod的IP,进行均衡;(3)LoadBalancer可以对外提供服务和负载均衡,无需获取所有Pod的IP,因为IP是在ConfigMap中配置的。......原创 2022-05-01 14:37:51 · 883 阅读 · 0 评论 -
如何正确推送镜像到私有仓库Harbor(http方式)
Http方式推送镜像到Harbor核心步骤:(1)配置系统Docker:添加Harbor的IP和PORT,强行将https转为http;(2)Harbor配置:创建项目、用户、用户添加到项目;(3)登录Docker:使用Harbor中创建的项目,此时,即通过http登录Harbor;(4)本地构建镜像、打标签、推送镜像、拉取对象;(5)打标签需要注意:Harbor的相关配置。...原创 2022-04-27 11:42:00 · 3780 阅读 · 0 评论 -
rabbitmq配置参数解析在springboot中
我在使用RabbitMQ组件的过程中,一些配置参数,如RabbitMQ连接、发布者、监听者,这些参数均是抄过来的,并不知道真生的含义,现打算弄清楚每个参数的含义,为后续的线上遇到问题,调参做准备。成为调参架构师...原创 2022-04-25 09:55:52 · 707 阅读 · 0 评论 -
Linux多路复用之select方案
何为多路复用?多路复用是一种IO调用解决方案,有三种方式:select、poll和epoll。用于解决进程或线程阻塞IO系统调用问题。多路复用以文件描述符为载体,通过监控多个描述符,当描述符就绪时(可读、可写),通知程序进行读写操作。即使单线程,亦可以处理多个IO任务,只是依据就绪状态进行处理,而不会直接阻塞当前线程所有任务执行(IO),保证每个时刻都有读或者写操作(使用内核内存处理,处理速度优势)。但,实质上,每个核在每个时刻,依旧是只能执行一次计算。内核的直接内存处理速度,比间接内存处理速度原创 2022-04-18 10:50:47 · 1448 阅读 · 0 评论 -
springboot结合rabbitmq如何监听和处理消息
(1)RabbitMQ模块核心:消息处理和监听;(2)消息处理:通过@RabbitListener标注方法,构建消费者,在SpringBoot启动时,构建Rabbit底层容器,创建对应的Bean,为后续监听到消息并处理做准备;(3)消息监听:完整的消息监听链路如下图所示;(4)消息监听和处理中用到的核心:JDK动态代理和反射(Invoke),调用@RabbitListener标注的方法;(5)@RabbitListener标注的方法即RabbitMQ开放给开发者的接口,自定义业务逻辑,监听到消息后完原创 2022-04-12 12:25:11 · 4516 阅读 · 0 评论 -
SpringBoot如何结合Druid读取数据库配置
Spring读取数据源配置核心步骤:(1)进入自动装配:org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration(2)注册BeanDefinition:org.springframework.boot.autoconfigure.jdbc.DataSourceInitializationConfiguration.Registrar#registerBeanDefinitions(3)进入Druid自动装配:com.原创 2022-04-07 09:52:49 · 2448 阅读 · 0 评论 -
MyBatis是如何自动装配的
MyBatis自动装配的核心4步:(1)注册BeanDefinition:org.mybatis.spring.boot.autoconfigure.MybatisAutoConfiguration.AutoConfiguredMapperScannerRegistrar(2)读取MyBatis配置:通过org.mybatis.spring.boot.autoconfigure.MybatisProperties映射yml配置;(3)配置Bean sqlSessionFactory:org.mybat原创 2022-04-03 17:10:36 · 3712 阅读 · 2 评论 -
线程及线程模型
- 内核线程模型 - 系统的线程。系统级别可以操作的线程 - 重量级线程。切换线程损耗的系统性能较多;但可以利用多核。 - 用户线程模型 - 线程更加轻量,无需通过内核操作; - 多线程情况下,共用单核处理器,无法发挥多核处理器性能。 - 混合线程模型 - 兼顾轻量和多核; - 实现复杂。原创 2022-03-25 14:59:18 · 706 阅读 · 0 评论 -
合集:Ubuntu20部署Prometheus和Grafana
- Grafana是一个完整的可观察性堆栈,允许您监视和分析度量、日志和跟踪。它允许您查询、可视化、提醒和理解数据,无论数据存储在何处。创建、探索并与团队共享漂亮的仪表盘,培养数据驱动的文化。- Prometheus是一个开源系统监控和警报工具包,最初由SoundCloud构建。收集并存储其指标作为时间序列数据,即指标信息与记录时的时间戳一起存储,以及称为标签的可选键值对。- node-exporter用于采集服务器层面的运行指标,包括机器的loadavg、filesystem、meminfo等基础监控原创 2022-03-11 17:19:12 · 495 阅读 · 0 评论 -
项目架构基础:E-R图
E-R图,即Entity Realationship 实体间关系图。由四部分组成。矩形:实体名称;菱形:关系描述;椭圆形 :实体属性;实线:映射关系。可视化设计方法:E-R图。澄清实体及实体关系。依据关系,设计数据表。与需求人员沟通时,使用E-R图沟通,简单、高效,同时,有助于发现问题,解决问题。原创 2022-02-21 09:00:00 · 1503 阅读 · 0 评论 -
实战详解Ubuntu20部署Redis6.0集群(单机版)
Redis集群:通过主从方式,搭建集群,保证Redis系统高可用。主节点之间双向通信。相互传输节点槽信息、主从状态、节点故障等信息。原创 2022-02-16 15:38:03 · 836 阅读 · 0 评论 -
K8S日志挂载到本机
K8S部署后台服务后,在Pods内部生成运行日志,若不配置日志挂载,当,Pods被删除后,日志则随Pods被删除,为解决该问题,配置日志挂载,即把Pods中的日志通过NFS服务挂载到本机,持久化存储,当Pods被删除时,服务日志仍在本机中,不会被删除。通过hostPath配置挂载时,无法将pods内的日志文件同步到本机,因此,选择NFS作为数据传输服务。原创 2022-02-10 12:10:58 · 4137 阅读 · 1 评论 -
K8S通过镜像部署SpringBoot服务
基于Ubuntu20系统,通过K8S单机版部署SpringBoot服务。全生命周期管理K8S后台服务。实现简单测试:(1)服务部署、下线等;(2)服务运行状态监控、扩缩容等。原创 2022-02-10 12:04:14 · 1150 阅读 · 0 评论 -
ELKF:日志可视化Discovery
完整的ELKF架构如图1.1所示。本文讲解Kibana日志展示与相关统计,即绿框部分。原创 2022-02-10 12:14:47 · 875 阅读 · 0 评论 -
ELKF:日志过滤logstash与存储elasticsearch
- logstash正常工作依赖:Kafka和ES,先启动Kakfa和ES做准备;- 数据流向:Kafka->Logstash->ES;- Logstash配置输入和输出,其中,输入:Kafka,输出:ES,配置index,为后面Kibana统计准备;- 通过接口查询ES数据,测试数据是否正常存储到ES。原创 2022-01-24 10:00:00 · 600 阅读 · 0 评论 -
ELKF:日志采集filebeat
- Filebeat正常工作前,需要准备相关依赖:启动Zookeeper、Kafka并创建Topic,当然,filebeat可以开启自动创建Topic;- 数据流向:日志->Filebeat->Kafka;- filebeat配置:输入配置和输出配置,其中,输入配置:配置读取的日志;输出配置:发送数据到指定位置,如Kafka;- 数据传输查看:通过开启Kafka消费者,查看数据是否正常投递。原创 2022-01-18 15:32:07 · 1945 阅读 · 0 评论 -
CAP三缺一:不能同时存在
分布式系统CAP理论(原则):一致性(Consistency):同一时刻“看”到的数据完全相同。可用性(Availability):客户端请求总是可以拿到正确的响应。分区容错(Partition tolerance):部分节点间网络异常,系统仍可以正常运作。原创 2021-12-31 20:15:11 · 1476 阅读 · 0 评论 -
搭建Eureka注册中心集群
Eureka服务集群保证业务系统整体的高可用(单体服务集群高可用)。当单体服务向Eureka集群注册时,单体服务会注册到所有的Eureka服务中,因此,当Eureka集群中某个Eureka服务不可用时,单体服务依旧可以通过其他Eureka服务进行通信, 保证集群的高可用。原创 2021-12-14 19:28:53 · 456 阅读 · 0 评论 -
Java强化系列:垃圾回收器
垃圾回收器分为三个阵营:年轻代收集器、老年代以及全堆收集器G1。原创 2021-12-04 20:47:24 · 237 阅读 · 0 评论 -
注册中心Eureka生命周期是怎样的
1 简介Eureka客户端与Eureka服务端交互,实现单体服务发现(查询)、注册、续约、下线。2 如何入手获取已注册实例注册服务下线服务恢复原创 2021-11-22 11:26:06 · 555 阅读 · 0 评论 -
项目架构基础:关系可视化-UML类图
为什么有这篇文章?我确实不会UML设计项目。学习Eureka时,发现,类关系比较多(与我而言),同时使用的IDEA是社区版,没有办法自动生成类图,着手自己画类关系图时,发现,UML完全不会,所以,先学习了UML表达,再梳理Eureka类关系。1 设计以蜂窝电话为基类,强行解释:继承、实现、关联、聚合、组合和依赖。基于Java。2 继承最常用的关系:子类继承父类,Java中使用extends关键字实现继承,子类复用父类功能,单继承。蜂窝电话:定义了基础属性,不同手机厂商的,继承基础属性,生产各自原创 2021-11-17 17:38:05 · 729 阅读 · 0 评论 -
SpringBoot强化系列:BeanDefinition源码解析及测试样例
1 简介BeanDefinition用于描述Bean实例,在具体的实现中配置Bean的属性。BeanDefinition是最小单元接口,主要是为了BeanFactoryPostProcessors接口修改经过标准初始化的内部Bean。AbstractBeanDefinition是BeanDefinition实现的最小单元抽象类。2 源码解析2.1 方法及属性序号属性描述1SCOPE_SINGLETON2SCOPE_PROTOTYPE3ROLE_APPL原创 2021-11-07 18:44:44 · 183 阅读 · 0 评论 -
全平台技术架构:后台+人工智能+大数据
1 设计全平台技术架构共有三个模块,即:后台、人工智能和大数据。后台:业务层(业务中台),如OA、ERP等;人工智能:智能服务层,如推荐系统、人脸识别等;大数据:基础数据层(数仓、数据中台)。中台:是啥?待详细追踪溯源。1.1 服务层服务层技术:使用Spring技术架构,包括SpringFramework、SpringCloud和SpringBoot。1.2 业务数据存储层业务数据读写采用MySQL和Redis。1.3 消息队列层消息缓冲层使用RabbitMQ。1.4 日志采集监控层原创 2021-10-25 18:19:17 · 3237 阅读 · 0 评论 -
SpringBoot强化系列:Autowire工作过程(源码调试)
1 Autowired注解将constructor, field, setter method, or config method标注为由Spring进行依赖注入的自动装配组件。源码如下:由源码可知,@Autowired:(1)可以作用于类、属性、方法、参数以及集合类型的数据(Map、Collection、Array);(2)只有一个默认参数:是否需要依赖,true:装配时需要存在BeanDefinition,否则抛出nosuchbeandefinition异常,如图1.1所示;false:当不存在原创 2021-10-20 19:14:32 · 351 阅读 · 0 评论 -
Java基础强化:类成员访问权限(作用域)
1 类成员访问控制序号访问修饰符访问权限当前类同一包内子孙类(同一包)子孙类(不同的包)其他包权限等级1public公开YYYYY42protected受保护YYYYN33default默认YYYNN24private私有YNNNN12 四种类成员package com.monkey.java_study.scope;import org.apache.logging.log4j原创 2021-10-11 17:47:59 · 135 阅读 · 0 评论 -
SpringBoot基础强化:Bean懒加载@Lazy及源码分析
1 @LazyBean懒加载,即初始化上下文,但是不在启动时实例化懒加载的Bean,在获取Bean的时候再实例化该Bean。Bean实例化:启动时实例化:直接加载加载时实例化:懒加载2 Usage2.1 启动上下文即实例化Beanpackage com.monkey.tutorial.common.mybean;import com.monkey.tutorial.modules.user.vo.BaseUserVO;import org.slf4j.Logger;import o原创 2021-10-02 15:53:34 · 447 阅读 · 0 评论 -
Java强化基础:java标准选项(standard options)之执行class和jar
1 简介后台服务中,运行java通过java -jar及JVM的相关内存选项启动服务,对于大多数的后台开发人员而言,很少实际操作java的其他选项调试运行(当然,…),下面从java的基础参数介绍java程序的运行及调试,帮助巩固基础。2 参数2.1 获取Java运行参数java -h通过java -h获取java运行的选项,如图2.1所示。图2.1 Java运行参数2.2 应用带参数运行java用法如图2.2所示,其中options即图2.1中的-d32、-esa等,args是自定义的原创 2021-09-21 15:58:05 · 257 阅读 · 0 评论 -
实战详解Maven相关命令及测试(带测试结果)
(1)clean:删除target文件夹(2)validate:验证程序(3)compile:编译程序(4)test:测试程序,如SpringBoot则会执行test测试样例(5)package:打包,如war包或jar包(6)verify:检查测试结果,如resources文件,test测试结果(7) install:部署jar包本地Maven仓库(8)site:生成项目文档,html,css,images(9)deploy:部署jar包到远程Maven仓库...原创 2021-09-03 20:10:24 · 411 阅读 · 0 评论 -
Java服务监控信息系列:jmap
1 简介jmap查看指定Java进程堆内存使用情况。2 参数2.1 查看参数jmap -h2.2 参数描述序号参数描述1heap打印堆统计信息2histo[:live]打印java对象堆信息直方图,使用live参数时,只统计存活对象3clstats打印类加载器统计信息4finalizerinfo打印对象等待结束时信息5dump以hprof二进制格式转存堆信息6F强制打印堆栈信息7h打印帮助信息8J原创 2021-08-28 21:13:48 · 158 阅读 · 0 评论 -
SpringSecurity&Oauth2权限过滤链源码解析(简版)
1 过滤链顺序序号过滤链顺序1AuthorizationServerConfigurerAdapterOrder(0)2ResourceServerConfigurerAdapterOrder(3)3WebSecurityConfigurerAdapterOrder(100)Order中数字越小,优先级越高,过滤链过滤顺序由高到低如图1.1所示。图1.1 SpringSecurity权限过滤链2 过滤链顺序源码2.1 AuthorizationS原创 2021-08-16 00:43:45 · 579 阅读 · 0 评论