自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 字节AI辅助编程工具MarsCode,开启高效编程之旅

无论是特定的代码格式要求,还是独特的语法习惯,MarsCode 都能完美适应。阿里的通义灵码凭借阿里强大的技术实力,在代码补全方面表现出色,能够快速理解程序员的意图,提供准确的代码建议。微软的 codeCopliot 也以其广泛的应用和强大的功能受到众多开发者的青睐。通过先进的算法和不断学习的模型,MarsCode 能够精准地预测程序员的下一步操作,提供最合适的代码片段。与通义灵码和 codeCopliot 相比,MarsCode 在处理复杂项目和特定领域的编程任务时,表现出更高的准确性和针对性。

2024-08-29 15:32:09 431

原创 Gateway网关开启流量监控

最近由于生产用户数上増,需要对项目的网络连接池进行优化,故而需要知道gateway的一些连接池情况和负载情况,需要进行监控和统计,本文通过metrics进行统计。

2024-07-09 11:14:09 372

原创 记java生产项目中线程池使用的一点总结

上面列出了在实际项目中使用的3种线程池的方式,使用线程池要结合业务场景以及。

2024-06-18 16:26:15 308

原创 记一次CPU占用过高问题排查和优化

List的contains方法查询复杂度为O(n),Set的查询复杂度最好的情况下为O(1),最坏的时间复杂度可能接近 O(n)如果我们需要判断一个元素是否在列表中,数据量大且调用频繁的时候尽量还是使用Set结构,查询的效率会比List快。

2024-06-13 16:38:17 530

原创 记一次jvm内存溢出排查

每日股票行情开盘时,程序内存使用一路飙升超过90%直至监控提示预警,在执行几分钟后,程序被监控自动重启。

2024-06-04 14:17:59 308

原创 记一次netty客户端的开发

近日要开发一个tcp客户端程序去对接上游厂商的数据源,决定使用netty去处理,由于很久没有开发过netty了,顺便学习记录下。

2024-05-31 17:51:58 574

原创 记一次netty数据中转服务开发

近日需要开发一个服务去对接上游的TCP数据源,同时将数据转发给下游去处理,该服务只做前置的登录鉴权、心跳等操作。

2024-05-30 16:20:07 888

原创 记一次pulsar数据丢失排查

生产者往pulsar写消息时会有递增的序列号字段,消费端在消费时,会出现序列号断层。当下无法确定是生产端、mq、消费端哪个地方丢失了数据,所以先从生产端进行排查。生产端的消息发送是通过sendAsync的异步方法该方法会返回一个对象目前是没有对该对象进行检查,所以补上对应的代码逻辑在运行一段时间后,该异常被触发,可以确定问题在生产者这里了。

2024-02-25 14:31:19 623

原创 Sentinel源码分析(五) - 熔断降级

@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) - 初识SentinelSentinel源码分析(二) - Entry构建Sentinel源码分析(三) - 调用链路Sentinel源码分析(四) - 限流规则​1.前言在通过了流控插槽后,接下来则是断路器的插槽了。同样的,通过Sentinel的控制台看下断路器的配置有哪些Sentinel 提供以下几种熔断策略:慢调用比例 (SLOW_REQUEST_RATIO):选择以慢

2022-02-07 11:38:56 1515 4

原创 Sentinel源码分析(四) - 限流规则

@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) - 初识SentinelSentinel源码分析(二) - Entry构建Sentinel源码分析(三) - 调用链路​1.前言通过上篇文章已经知道FlowSlot节点是用来处理我们流控的实现,以下为添加规则的示例代码private static void initFlowRules() { List<FlowRule> rules = new Array

2022-02-07 11:35:17 1269

原创 Sentinel源码分析(三) - 调用链路

@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) - 初识SentinelSentinel源码分析(二) - Entry构建​1.前言之前已经分析过Entry的构造流程,我们知道Sentinel关于规则和流控的所有逻辑都在其内部的ProcessorSlotChain调用链路上,首先看看接口提供的方法有哪些。对于链表结构我们清楚,就是不断获取下一个节点,然后进行方法调用。这里该接口提供了两个方法分别为入口entry和出口exit。对于出口

2022-02-07 11:33:11 1415

原创 Sentinel源码分析(二) - Entry构建

@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) -初识Sentinel​1.前言上篇文章已经讲了资源类CtEntry中的具体属性,那接下来通过一段代码看下Sentinel在初始化Entry的过程中做了哪些操作。public static void main(String[] args) { initFlowRules(); while (true) { Entry entry =

2022-02-07 11:31:12 533

原创 Sentinel源码分析(一) - 初识Sentinel

@Author:zxw@Email:502513206@qq.com1.前言再研究Sentinel源码之前,先对Sentinel的理念进行了解。对于网络请求调用可以想象以下两个问题当服务A请求服务B时,服务B响应不及时,导致服务A的线程全部hang死在请求服务B?当服务收到大量网络请求,应用无法支撑时如何解决?以上会导致服务的稳定性降低从而引发系统的崩溃,这对于线上业务来说是不可接受,那么一般的解决方案如下:请求超时:设置请求超时时间请求资源隔离:通过线程池和信号量断路器:当请求异

2022-02-07 11:29:34 1343

原创 Feign源码分析(五) - spring对Feign的扩展

@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探FeignFeign源码分析(二) - builder构建Feign源码分析(三) - Client调用Feign源码分析(四) - 自定义扩展点​1.前言在上一篇文章中已经分析了Feign有哪些常见的扩展点供我们使用,其中比较关键的几个点有如下对Client的封装,整合ribbon和hytrixcontract解析接口注解2.扩展2.1 Client通过之前的分析了

2022-01-31 18:38:16 368

原创 Feign源码分析(四) - 自定义扩展点

@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探FeignFeign源码分析(二) - builder构建Feign源码分析(三) - Client调用​1.模块对于Feign的整体流程已经分析完了,接下来就看看有哪些我们可以自定义的扩展点。首先回顾下Feign中有哪些配置模块。像之前FeignBuilder里还有Options,Retryer等,下面只列了我们主要使用的自定义配置。1.1 Client对于Client只有一

2022-01-30 22:47:45 913

原创 Feign源码分析(三) - Client调用

@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探FeignFeign源码分析(二) - builder构建​1.前言通过前面的文章,已经分析清除了Feign代理类的生成流程。接下来就是看远程调用发起的流程Feign是如何实现的,代码还是跟之前一样,通过connect方法获取到代理对象后,直接调用Feign接口repo@RequestLine("GET /api/v5/repos/{owner}/{repo}/stargazers?

2022-01-30 20:30:19 1029

原创 Feign源码分析(二) - builder构建

@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探Feign1.前言通过上篇文章,我们得知了Feign类中主要的元数据,接下来就看下Feign是如何为我们生成代理类的。可以看到调用target方法时,传入了Class参数Gitee.Class,那么Feign是通过接口代理的方式来生成实现类的,interface Gitee { @RequestLine("GET /api/v5/repos/{owner}/{repo}

2022-01-30 20:28:29 2216

原创 Feign源码分析(一) - 初探Feign

@Author:zxw@Email:502513206@qq.com1.前言在springcloud的微服务体系中,有这么一个框架Feign能够提供我们调用远程服务就像调用本地服务一样,我们先抛开spring对Feign的封装,而是直接从Feign入手来看看Feign的内部组成与调用逻辑是怎么样的,那么就从如下我写的一个访问Gitee调用的代码入手看Feign。static Gitee connect() { final Decoder decoder = new Gson

2022-01-30 20:24:30 1120

原创 Netty源码分析(二) - 线程组

@Author:zxw@Email:502513206@qq.com目录Netty源码分析(一) - 线程声明周期​1.示例代码在看源码前,首先看看测试用的代码,这边为了方便测试,没有使用NioEventLoop,不过底层都是使用的父类方法,并不影响。public static void main(String[] args) { EventLoopGroup group = new DefaultEventLoopGroup(2); TestRunner

2022-01-08 21:57:56 509

原创 Netty源码分析(一) - 线程生命周期

@Author:zxw@Email:502513206@qq.com1.java线程生命周期对于了解java线程的人应该知道java的线程一共有如下5个状态public enum State { // 线程创建时的状态,此时操作系统中还未创建线程 NEW, // 线程处于就就绪或者可运行状态 RUNNABLE, // 资源占用时,例如synchronized获取锁失败,进入阻塞状态 BLOCKED, // 调用wait()、

2022-01-06 11:18:52 707

原创 SonarQube整合maven

@author:zxw@email:502513206@qq.com@ Jishou UniversitysonarLint:https://www.sonarlint.org/#reference:https://www.oschina.net/p/sonar?hmsr=aladdin1e1前言有的时候我们想知道自己写的代码好不好,或者有些地方有什么质量缺陷,我们可以使用代码质量扫描插件sonarLint进行代码扫描,来帮助我们改进代码,减少代码缺陷以及提升质量,是不是KPI就杠杠的来了

2021-07-22 20:25:22 2498 1

原创 数据库复制原理 - 主从同步

@author:zxw@email:502513206@qq.com@ Jishou University参考:Designing Data-Intensive Applications 前言 复制主要是指通过互联网络在多台机器上保存相同的数据副本,为了实现以下效果使数据在地理位置上更接近用户,从而降低访问延迟当部分组件出现故障,系统依然可以继续工作,提高可用性多台机器同时提供读服务,提高吞吐量如

2021-07-17 21:30:43 1684 1

原创 centos部署harbor教程

@author:zxw@email:502513206@qq.com@ Jishou University1.前言最近在学习docker相关知识,我们平常pull的镜像都是来自官方仓库提供的镜像。但是我们也需要自己独立的镜像仓库,就像每个公司都有一个公共的maven仓库一样,最后了解到Harbor是个开源的企业级私人镜像仓库,所以决定部署一套玩玩,顺便记录一下踩坑2.搭建步骤首先在harbor的github仓库上下载安装包https://github.com/goharbor/harbor

2021-05-14 11:40:40 871

原创 Sentinel源码解析 - 限流算法种类简介

@author:zxw@email:502513206@qq.com@ Jishou University1.前言限流可以说是高并发中比较重要的一个问题了,面试的时候也经常有关此类的问题,刚好最近在学习限流算法时,苦于找不到好的实现,想起以前用过的sentinel框架里面就有限流的功能,所以顺道来学习下sentinel中限流的实现。2.源码解析我们先来看看Sentinel怎么配置限流策略,在FlowRule对象中,通过配置controlBehavior属性就可以指定限流策略了,默认使用默认的限

2021-01-16 10:21:38 684 2

原创 Seata整合nacos

author:zxwemail:502513206@qq.com@ Jishou University1.前言之前一直使用的是seata+eureka的方式来使用,最近自己在家的时候忽然想用nacos来试试,毕竟之前没怎么用过。使用后发现和eureka的用法还是差别蛮大的,折腾了一天才把项目跑起来,以此来记录下使用方法。2.使用在使用前当然得先下载相关的包,这边说下我使用的版本nacos:https://gitee.com/mirrors/Nacos?_from=gitee_search 我

2020-12-06 13:38:25 1393 1

原创 mysql学习记录 - explain命令

author:zxwemail:502513206@qq.com@ Jishou University1.前言最近买了mysql的一个课程,基本已经看完第一轮了,第一轮只是留个印象在脑海中还不算深入的理解,想想最近很久没写过博客了,刚好来记录下学习的理解以及加深印象。2.Content有关explain官方是这样解释的,explain提供mysql如何执行语句的信息,可以和select,delete,insert,replace,update命令一起使用。The EXPLAIN st..

2020-11-03 17:41:03 272

原创 SQL异常:exist: integer = character varying

最近在使用mybatis的时候遇到了这样的错误SQL grammar []; nested exception is org.postgresql.util.PSQLException: ERROR: operator does not exist: integer = character varying No operator matches the given name and argument type(s). You might need to add explicit type casts.一

2020-10-22 11:20:45 4381

原创 seata启动教程

author:zxwemail:502513206@qq.com@ Jishou University1.前言最近在学习seata框架的使用,但是花了很久时间才把项目搭起来,主要是第一次使用要踩挺多坑的。比如在我们的业务项目要在resource目录下添加file.config和registry.conf两个配置文件,作为第一次使用的萌新确实很难发现,官网上也没有详细的教程,还有一个最主要的错误就是Could not found property service.vgroup_mapping..

2020-10-20 14:30:18 5431

原创 spring-scheduled源码解析

@author:zxw@email:502513206@qq.com@ Jishou University1.前言最近在学习xxl-job的源码,其实对于xxl-job的使用方式并不太喜欢,所以看了源码后想自己扩展第三方包对xxl-job进行扩展,不过没有想到的比较好的实现方法,先是参考了eureka的扩展,不过感觉eureka的那套属于服务注册那类好像用在xxl-job的扩展上并不太合适,所以又想到了之前使用的spring提供的定时任务注解@Scheduled,于是顺便看看源码学习下spri.

2020-09-21 17:02:37 531

原创 xxl-job源码解析系列 - 执行器分析

@author:zxw@email:502513206@qq.com@ Jishou Universityxxl-job:https://www.xuxueli.com/xxl-job1.前言我们知道xxl-job中有两个概念,分别为执行器和调度器而这两个是解耦合,先让我们看看执行器相关的源码2.源码分析先简单说下项目中使用xxl-job的流程,引入xxl-core包,然后配置一个XxlJobConfiguration的配置类,注入相关xxl的信息。@Component@Slf4.

2020-09-21 11:38:17 647

原创 xxl-job源码解析系列 - 源码构建

@author:zxw@email:502513206@qq.com@ Jishou Universityxxl-job:https://www.xuxueli.com/xxl-job1.前言最近项目上使用到了xxl-job这个分布式任务调度的框架,所以也借此机会了解下该项目的使用原理。对于任何一个框架和开源项目都是建立在实际需求上而开发和使用。毕竟开发还是要创造价值为主,而不是什么炫酷就用什么。包括像alibaba最近比较火爆的开源项目nacos,sentinel等,其都是为了解决某些.

2020-09-11 09:50:12 203

原创 eureka源码系列 - 设计模式在eureka中的使用

eureka源码系列 - 设计模式@author:zxw@email:502513206@qq.com@ Jishou University1.前言看了eureka的源码后,在eureka中也运用了一些设计模式,就让我们学习下设计模式在项目中的实际运用2.Builder模式在eureka中,实例的信息保存在InstanceInfo对象中,而InstanceInfo和EurekaRegistration都是通过Builder模式构造出来的,实例代码如下InstanceInfo publi

2020-09-07 15:38:26 462

原创 jjwt源码解析

jjwt源码解析author:zxwemail:502513206@qq.com@ Jishou University1.前言最近在做一个jwt授权服务,其实也就是给请求的用户生成一个token,不过关于token的验证并不在我服务负责,而是由网关去统一处理。jwt之前也用过几次,不过不是很熟悉只知道是通过base64Url算法进行加密,这次刚好用到了所以来看看jjwt的实现。2.源码解析在java中导入jjwt的包就可以使用包中提供的Builder生成jwt的token,以下是基础的用

2020-09-02 11:06:44 541

原创 Nacos源码分析系列 - 服务续租

Nacos源码分析系列 - 服务检测author:zxwemail:502513206@qq.com@ Jishou University@Nacos:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html1.前言之前分析了nacos的服务注册流程,接下来看看nacos的心跳检测机制。2.面试题nacos默认每隔多久发送一次心跳检测?// 5000毫秒DEFAULT_HEART_BEAT_INTERVAL = Time

2020-08-27 15:08:13 381

原创 Nacos源码分析系列 - 服务注册

Nacos源码分析系列 - 服务注册Author:zxwSchool:吉首大学email:502513206@qq.com@Nacos:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html1.前言nacos官方有集成好的nacos-server包,copy下来只需要运行其中的startup.bat文件即可启动注册中心,但是这边我们从源码的角度入手注册中心,所以将源码包拷贝下来,通过手动启动的方式启动nacos注册中心。首先获取到

2020-08-26 17:35:55 413

原创 Quarkus框架 - 快速入门

Quarkus框架 - 快速入门@Author:zxw@email:502513206@qq.com@school:吉首大学1. 前言最近在观看云原生大会的时候,了解到一个迅速的崛起的框架就是Quarkus了,Quarkus是一款基于云原生的java框架。本篇意在教大家快速搭建环境,并启动应用,所以相关简介可自行百度。2. 使用2.1 条件使用Quarkus框架需要系统满足几个条件jdk8以上maven版本在3.6.2以上(之前我的maven是3.6.0的,一直报错更换版本后就好了)

2020-08-22 20:11:35 2391 1

原创 eureka源码系列 - 注册中心

eureka源码系列 - 注册中心@Author:zxw@email:502513206@qq.com@school:吉首大学1.前言之前分析过eureka client的相关源码,不过看了一番代码后,还是觉得从eureka server上入手会比较好,这样某些地方也能理的比较顺,兜兜转转一圈后,现在从eureka server的启动源码进行一个分析。2.源码解析按照惯例,从注解入手@EnableEurekaServer,其中注入了一个EurekaServerMarkerConfigurat

2020-08-22 15:35:16 217

原创 eureka源码系列 - 服务下线

eureka源码系列 - 服务下线@Author:zxw@email:502513206@qq.com@school:吉首大学1.前言在eureka中服务既然有上线的概念当然就有下线的概念,服务下线分为两种方式,一种是通过api调用手动下线,另一种是直接关闭eureka服务,然后eureka检测不到响应后会自动下线2.强行中止程序主要是通过DiscoveryClient中的定义好的eurekaTransport中取出对应的client发起远程调用PeerReplicationResourc

2020-08-21 11:11:06 281

原创 eureka源码系列 - 续租流程

eureka源码系列 - 续租流程@Author:zxw@email:502513206@qq.com@school:吉首大学1.前言在eureka中有3个定时任务,分别为心跳检测heartbeatExecutor,注册表拉取cacheRefreshExecutor,实例信息更新instanceInfoReplicator。2.拉取注册中心服务起点是由CacheRefreshThread线程进行调用DiscoveryClient.refreshRegistry()该方法的主要作用就是在拉取注

2020-08-19 16:55:58 266

原创 Logger日志框架使用学习

Logger日志框架使用学习1.前言最近也开始注重开发的规范,以前开发项目的时候很少会去使用日志框架记录一些东西,部门大佬也提了希望我们着手开始尊重开发规范,所以先学习下日志框架的用法以及应用场景2.Logger源码我们在代码中经常能够看到以下代码,该方法的作用就是返回与参数传递类对应的logger对象。这边主要是有个LoggerFactory对我们的日志进行管理,然后从factory中取出对应的Loggerprivate static Logger logger = LoggerFactory.

2020-08-19 11:34:36 637

基于SSH的二手交易商城

基于SSH的二手交易商城, 基于SSH的二手交易商城, 基于SSH的二手交易商城, 基于SSH的二手交易商城, 基于SSH的二手交易商城,

2020-08-20

基于Servlet的投票管理系统

基于Servlet的投票管理系统,采用前后端分离方式开发,前端为Vue,后端为Servlet, 基于Servlet的投票管理系统,采用前后端分离方式开发,前端为Vue,后端为Servlet 基于Servlet的投票管理系统,采用前后端分离方式开发,前端为Vue,后端为Servlet

2020-07-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除