- 博客(52)
- 收藏
- 关注
原创 SpringBoot整合Skywalking
在这个例子中,Agent位于d:\opt\skywalking-agent\skywalking-agent.jar。在这个例子中,collector运行在IP地址为192.168.11.221的主机上,监听端口为11800。在这个例子中,服务名称被设定为bm-product-service-app,这将帮助区分和标识你的应用在SkyWalking监控界面中的显示和报告。提示:Agent最好到网上找一找之前的版本,新版本可能有bug,如果出现了并且网上也几乎没有这个版本的解决方法那么就切换之前的版本。
2024-06-05 10:28:18
436
原创 Xxl_job分布式调度
配置application.properties文件。Xxl_job安装(基于docker)首先初始化调度数据库。初始化Xxl_job。
2024-05-22 14:54:21
102
原创 如何实现token的无感刷新
为了确保用户在整个会话的期间保持登录状态,无需多次认证,我们需要做到无感刷新token首先当我们用户登录的时候会生成两个token,
2024-05-16 16:06:15
326
原创 GateWay检查接口耗时
配置文件里配置,LogTime就是类名,但是不能带着GateWayFilterFactory。然后继承AbstractNameValueGatewayFilterFactory。类,可以不是这个名字但是后面必须是。添加gateway依赖。
2024-05-06 22:01:18
634
原创 存储或读取时转换JSON数据
import cn//将数据转换为json字符串 ps . setString(i , JSONUtil . toJsonStr(parameter));//将json字符串转换为任意类型 if(rs . getString(columnName) . charAt(0) == '{') {} }//将数据转换为json字符串 ps . setString(i , JSONUtil . toJsonStr(parameter));
2024-05-06 10:07:23
1689
1
原创 gateway全局token过滤器
实现全局过滤器GlobalFilter,并且实现fitler方法。创建一个tokenFilter。添加gateway依赖。
2024-04-29 21:35:11
956
原创 Seata-server配置
启动服务,cd到docker-compose.yml文件路径下执行以下命令,启动服务。创建文件路径,并创建docker-compose.yml文件。cp完成后修改我们刚cp文件里application.yml。将容器中的resources文件夹下的所有文件cp出来。然后在虚拟机安装seata-server。建立seata-server数据库。给业务库建立undo.log表。创建完成后先启动一下seata。改完之后进入nacos配置中心。启动服务后,nacos服务列表。
2024-04-29 21:13:38
358
1
原创 Ribbon饥饿加载
Ribbon默认开启的是懒加载,在第一次访问的时候才会进行创建LoadBalanceClient,请求时间会很长。而饥饿模式会在项目启动的是后就创建,降低第一次访问时的功耗,开启Ribbon饥饿加载。
2024-04-24 14:40:45
590
1
原创 目前主流的负载均衡器
总的来说,Nginx 在现代 web 架构中扮演了非常关键的角色,尤其在云原生和微服务领域有着广泛应用。而在 Spring Cloud Alibaba 中虽然已经提供了 Ribbon 进行客户端负载均衡,但在实际生产环境中,Nginx 作为独立于应用层之外的基础设施,依然常用于实现更全面、灵活和高效的流量管理。具体来说,当你通过Ribbon进行服务调用时,它可以根据配置的负载均衡策略(如轮询、随机、最少并发数等)从服务列表中选择一个目标服务实例进行通信,从而实现请求分发和系统负载均衡的目的。
2024-04-24 14:29:35
626
1
原创 Nacos配置中心动态刷新原理
③:nacos模式:客户端间隔10毫秒请求一次服务端,通过在请求头中携带长轮询的超时时间,默认30秒,服务端在接收到客户端的请求后,会将其挂起一段时间(30秒),在这30秒中,如果配置有变化,服务端就立即将配置相应给客户端,如果没有变化,30秒后客户端会再次请求。主要是通过服务端控制响应给客户端的响应时间,来减少客户端无效的请求。②:push模式:服务端检测到变化,主动将新配置推送给客户端,时效性高,但是占用服务端的资源,服务端需要消耗大量的资源去维护和客户端之间的心跳。
2024-04-23 20:22:09
271
原创 分布式与微服务的区别
分布式主要描述的是服务部署的位置和交互方式,关注的是物理分布和协同工作;而微服务更加侧重于服务的大小、职能边界以及组织管理方式,是一种架构设计哲学,通常会采用分布式的方式来部署实施,但微服务架构的粒度更细,服务间关系更为独立。微服务架构是分布式架构的一种特殊形态,具备更多的业务领域模型驱动和自治原则。而微服务架构是一种更加精细化的设计方法,它是分布式的一个分支,主要强调将一个单体应用拆分成一组小型松耦合的服务,每个服务专注于单一业务功能并能够独立部署和扩展。
2024-04-22 20:57:37
706
原创 nacos配置中心持久化使用
上面只是将nacos安装启动,如果不小心将启动的容器删除了,那么之前操作过的所有内容都会被删除,为了以防这种事情发生我们可以将数据持久化存在磁盘里,就是用下面的方法。操作完成后直接访问http:host:port/nacos 默认账号密码是nacos/nacos。新建完配置后再项目中稍微再配置一下,配置必须写在bootstrap.properties中。路径/opt/nacos/conf/application.properties。进入UI界面就可以进行操作了。安装(基于docker)
2024-04-22 19:10:50
356
1
原创 利用EFK对日志进行采集
配置完成后将项目打包进行发布,可以先测试一下查看你的logs里时候生成了日志,或者查看日志是否正确,然后访问。your Ip:5601 界面。配置完成后在文件所在目录下执行。然后配置我们的项目日志配置。
2024-04-20 15:08:26
484
原创 阿里TTl使用管理日志
但是这样只能在同一个日志里操作,如果开启一个子线程那么子线程就没法获取到thradId 因为Slf4j默认只用的是Threadlocal线程,普通 ThreadLocal 类允许每个线程拥有自己的独立变量副本,这些变量只对该线程可见,且不会影响其他线程。这意味着,如果你在一个线程中设置了一个 InheritableThreadLocal 的值,那么这个值不仅在这个线程中可用,而且在任何由这个线程派生出来的子线程中也将是初始的有效值。但是当你new一个新线程后还是一样子线程没有内容,那怎么办呢。
2024-04-20 10:25:43
467
原创 Mq的安装
然后执行命令 - (执行命令需先查看是否安装docker-compose)在适当的路径下创建docker-compose.yml文件。安装RabbitMq(基于docker安装)创建broker.conf文件。
2024-04-17 21:49:10
124
原创 MongoDB的安装使用
MongoDB的客户端可以从这里下载(可能会404)安装MongoDB(基于docker安装)然后我们在项目中引用依赖。接下载创建对象使用即可。
2024-04-17 21:14:59
374
原创 将数字状态码在后台转换为中文状态
Optional对象是Java 8引入的一种新的容器类,位于java.util.Optional包下。可以看出我们的状态status是2如过返回到前端我们根本不知道2代表的是什么,所以我们需要再这里将数字转换成能看栋的中文状态,首先我们创建一个枚举类。先将我们状态码所对应的中文状态枚举出来,然后创建一个静态方法,方法的参数就是我们要转换的状态码,方法里我们处理代码用到了JDK8的新特性,当数据处理完返回后,我们在实体类里获取返回的值,这样我们直接获取statusX的值就是对应的中文状态码了。
2024-04-17 20:57:27
223
原创 为什么阿里不推荐使用JDK自带的线程池
Executors.newFixedThreadPool 和 Executors.newSingleThreadExecutor 使用无界队列(LinkedBlockingQueue),这意味着如果没有进行适当的任务提交限制或拒绝策略设置,当任务数量持续增加时,可能导致内存溢出,因为任务会不断堆积在队列中。Executors.newCachedThreadPool 可能会创建大量线程,而且在空闲一段时间后才会释放这些线程。在高并发场景下,可能会消耗大量系统资源,甚至可能导致服务因创建过多线程而崩溃。JDK内
2024-04-15 20:48:39
459
原创 JDK自带的线程池
虽然 Executors 提供了便捷的工厂方法创建线程池,但在实际开发中需要注意的是,对于 newFixedThreadPool 和 newSingleThreadExecutor 等这些方法创建的线程池,若线程池中线程数量达到上限且线程都阻塞的情况下,若继续提交任务可能导致拒绝策略触发。线程池的线程数量始终保持恒定,如果有线程由于异常结束,则线程池会补充新的线程。只有一个工作线程的线程池,所有的任务都会在这个单一的工作线程中按照提交的顺序进行执行,确保了任务的串行执行。
2024-04-15 20:40:28
280
原创 阿里Canal使用
是阿里巴巴开源的一款基于 MySQL 数据库增量日志解析,提供实时的数据订阅和消费服务的工具。它可以用来读取 MySQL 的 binlog 日志并转换成 JSON 格式的事件消息,然后将这些消息发布到下游的消息中间件,比如 RabbitMQ,以实现数据库变更的实时同步。创建一个专门给 Canal 使用的 MySQL 用户账号,并赋予足够的权限来读取 binlog,通常包括 REPLICATION SLAVE 权限。下载并安装 Canal,根据官方文档配置 Canal 的 server 端。
2024-04-10 19:55:28
896
原创 Spring Boot自动配置原理
springboot是基于spring的新型的轻量级框架,最厉害的地方当属**自动配置。**那我们就可以根据启动流程和相关原理来看看,如何实现传奇的自动配置从上面代码可以看出,Annotation定义(@SpringBootApplication)和类定义(SpringApplication.run)最为耀眼,所以要揭开SpringBoot的神秘面纱,我们要从这两位开始就可以了。
2024-01-18 14:19:01
605
1
原创 Spring Boot多环境配置及Logback日志记录
logback是log4j团队创建的开源日志组件,与log4j类似但是比log4j更强大,是log4j的改良版本。主要优势在于:a) 更快的实现,logback内核重写过,是的性能有了很大的提升,内存占用也更小。b) logback-classic对slf4j进行了更好的集成c) 自动重新加载配置文件,当配置文件修改后,logback-classic能自动重新加载配置文件d) 配置文件能够处理不同的情况,开发人员在不同的环境下(开发,测试,生产)切换的时候,不需要创建多个。
2024-01-18 14:13:04
966
原创 Spring Boot异常处理及单元测试
SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转到默认显示异常的页面来展示异常信息如 果我 们 需 要 将 所 有 的 异 常 同 一 跳 转 到 自 定 义 的 错 误 页 面 , 需 要 再src/main/resources/
2024-01-18 09:21:01
884
2
原创 系统架构演变
Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个基于Java的高性能RPC(Remote Procedure Call)框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。后期阿里巴巴停止了该项目的维护,于是当当网在这之上推出了自己的Dubbox。Zookeeper是Apacahe Hadoop的子项目,可以为分布式应用程序协调服务,适合作为Dubbo服务的注册中心,负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互。
2024-01-18 09:08:22
1961
1
原创 Spring MVC组件
Ø 第三步:处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映射为HandlerExecutionChain对象(包含一个Handler处理器对象,多个HandlerInterceptor拦截器对象),通过这种策略模式,很容易添加新的映射策略。Ø 第八步:前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图),通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可。用户请求到达前端控制器,它就相当于mvc模式中的c,
2024-01-09 17:57:20
835
原创 Spring MVC入门小案例
M:Model----->模型层,指工程中的JavaBean,作用是处理数据JavaBean分为两类:一类称为数据承载Bean:专门存储业务数据的,如 Student、User 等一类称为业务处理Bean:指 Service 或 Dao 对象,专门用于处理业务逻辑和数据访问。V:View-----> 视图层,指工程中的html或jsp等页面,作用是与用户进行交互,展示数据C:Controller-----> 控制层,指工程中的servlet,作用是接收请求和响应浏览器。
2024-01-09 17:48:03
395
原创 SpringIOC
IOC (Inverse of Control)即控制反转:正传是自己创建依赖对象;反正是有IOC工厂来创建依赖对象;原来: 我们在获取对象时,都是采用new的方式。是主动的。现在: 我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。是被动的。 这种被动接收的方式获取对象的思想就是控制反转,它是spring框架的核心之一。
2024-01-04 19:32:25
878
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人