自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孤海岛主

计算机相关

  • 博客(146)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 mybatis-plus 根据任意字段saveOrUpdateBatch

mybatis-plus 根据任意唯一约束批量插入或更新操作

2023-11-17 14:39:04 10911 14

原创 Java代码性能提升小Case

java代码提升性能的小case(持续更新)

2023-11-08 17:35:27 186

原创 JAVA 泛型的定义以及使用

了解java泛型的使用

2023-10-11 17:58:29 705

原创 rocketmq 部分队列不消费NOT_CONSUME_YET

rocketmq 部分队列不消费NOT_CONSUME_YET

2023-08-30 09:27:07 2120

原创 JVM DNS缓存修改

第三方域名对应IP不定期发生变化时,需要将dns缓存时间设置为0,即不对域名进行缓存,每次都进行域名解析

2023-01-04 14:38:24 849

原创 为指定任务分配线程数量执行

为制定任务分配线程数量提交线程池进行执行任务

2022-11-21 10:28:07 503

原创 双人游戏根据胜负关系匹配

双人游戏匹配算法,可根据胜负关系以及对阵情况进行匹配

2022-10-26 11:16:04 1031

原创 循环赛-(单循环)

循环赛

2022-08-25 15:23:50 546

原创 spring事务传播级别嵌套执行和回滚分析

1.PROPAGATION_REQUIRED如果嵌套执行的方法要求一起执行成功或者一起回滚,则选择该事物传播级别。2.PROPAGATION_REQUIRED_NEW如果嵌套执行的方法要求各自事务独立,不能进行相互影响,则选择本事务传播级别。3.PROPAGATION_SUPPORTS如果嵌套执行的方法要求一起执行成功或者一起回滚,单独执行时候以非事务方式执行,则选择该事物传播级别。4.PROPAGATION_NOT_SUPPORTED如果嵌套执行的方法要求内部嵌套方法不会对..

2022-04-02 10:59:11 640

原创 Mysql两种锁定读的情况分析( LOCK IN SHARE MODE和FOR UPDATE)

1.SELECT ... LOCK IN SHARE MODE;(共享锁:S锁)使用该语句加锁后,其他事务既可以对记录进行读取又可以对记录加共享锁(也就是在别的事务中再次使用SELECT ... LOCK IN SHARE MODE;)。但是不能够对记录进行修改和加排它锁(X锁);2:SELECT ... FOR UPDATE;(排他锁:X锁)使用该语句加锁后,其他事务可以对记录进行读操作,但是不能对改记录进行任何加锁操作也不能对记录做修改,删除操作。...

2022-04-01 11:25:59 1483

原创 Redis缓存处理方案以及方案存在问题分析

1:数据库操作前删除缓存 问题:先删缓存,在改库前,其他事务又把旧数据放到缓存里去了。会造成以后读取的都是旧数据(影响较大)2:数据库操作后删除缓存 问题:修改数据库后,删除缓存之前,有一部分会读到旧数据(缩小了读取旧数据的量,但是依然有问题)删除缓存失败也会造成大批量数据错误 缓存删除失败可用事务进行配置或者使用mq进行删除3:双删: 问题:第一次删除缓存后,有事务在数据库更新之前先查询数据库,并且在第二次清空缓存之后更新了缓存(仍为旧数据,影响也较大)4:延时双删.

2022-03-23 17:27:48 1745

原创 RocketMq源码解析-CommitLog

CommitLog.asyncPutMessages: 1.记录消息存储到broker的时间 2.存储耗时相关信息,收集这些指标,上报给监控系统 3.处理延时消息(定时消息) 4.加锁 putMessage会有多个线程并行处理,需要上锁,可以再broker中配置是重入锁还是自旋锁userRetreenLockWhenputmessage,默认是false使用自旋锁,异步刷盘建议使用自旋锁,同步刷盘建议使用重入锁 5.获取最近一个commitLog文件的内容映射文件(.

2022-03-23 16:19:48 239

原创 RocketMq源码解析-Consumer

Consumer源码解析:DefaultMQPushConsumer.start(): 1:设置消费者组 2:启动消费者this.defaultMQPushConsumerImpl.start(); DefaultMQPushConsumerImpl.strat()(同步方法): 1:判断服务状态 只有 服务状态为 CREATE_JUST 时,才启动 Consumer 2:防止启动多个 Consumer,先把 服务状态修改为.

2022-03-23 16:18:20 449

原创 RocketMq源码解析-Producer发送消息

Producer发送消息源码分析:producer.send(msg); 1.消息检查Validators.checkMessage(msg, this); 1.消息不能为null 2.topic检查不能为null,不能为非法字符,长度不能为0,topic长度不能大于127 3.topic是否为允许发送的topic 4.body检查,不能为null,长度不能为0,不能大于消息限制长度4M 2.设置topic(如果有命名空间则.

2022-03-23 16:17:18 2663

原创 RocketMq源码解析-Producer启动

Producer启动源码分析:DefaultMQProducer.start(); 1.启动生产者DefaultMQProducerImpl.start()(同步方法) 1:判断服务状态 只有 服务状态为 CREATE_JUST 时,才启动 Producer 2.防止启动多个 Producer,先把 服务状态修改为 START_FAILED 3. 检查 groupName 是否合法比如不能为空,是否符合正则 ^[%|a-zA-Z0-9_-]+$,并.

2022-03-23 16:16:18 481

原创 RocketMq源码分析-Broker

Broker源码解析:启动流程:BrokerStartup main(): start(BrokerController controller=createBrokerController(args)): createBrokerController: 1:是否指定了netty通信时缓冲区的大小,若未指定初始化为128K 2:解析命令行参数,加载-C参数文件中指定的配置信息,防止丢失这里记录.

2022-03-23 16:14:40 2302

原创 RocketMq源码解析-Namesrv

Namesrv源码分析BrokerConfig,用来封装其绝大多数基本配置信息NettyServerConfig,封装了其作为对外暴露的消息队列服务器的信息NettyClientConfig,则封装了其作为NameServer客户端的信息NamesrvStartup: main(): main0(): start(NamesrvController controller=createNamesrvController()): 1.

2022-03-23 16:13:33 1269

原创 dubbo group version tag适用场景

group:适用于一个接口有多个实现的场景。有点类似设计模式中的工厂方法,只不过工程方法是根据传入的实例对象确定具体调用哪个方法,而dubbo则根据group来具体调用接口的哪个实现。例如:发送短信接入了多家运营商,但是每个运营商都有发送短信的功能,这样就可以定义一个dubbo接口,然后分别给每个运营商加一个group去实现这个接口,具体使用哪个运营商发短信的时候只需要引用不同group的dubbo服务就行了。version:适用于一个dubbo服务有多个不同版本,但是多个版本需要共存的情况,一般用

2022-01-12 11:05:32 893

原创 maven 401 Unauthorized

1.检查本地maven配置文件中是否配置了服务器的认证信息maven-conf-settings.xml<servers> <server> <id>releases</id> <username>xxxx</username> <password>xxxxxx</password> </server> <server>

2021-12-28 17:53:07 9304

原创 替换文本中${xxxx}类型的变量

public static void main(String[] args) { /** * 原文本:${name},你最近常看的主播${actor}悄悄关注了你,并申请加你为好友 * 目标文本:%s,你最近常看的主播%s悄悄关注了你,并申请加你为好友 */ String message = "${name},你最近常看的主播${actor}悄悄关注了你,并申请加你为好友"; String res...

2021-12-23 14:54:08 367

原创 springcloudAlibaba+dubbo线程拥堵Thread pool is EXHAUSTED

问题原因1.由于dubbo服务的负载模式是轮询模式,导致每台机器上分配的任务数量是基本上相同的,但是由于服务部署并不是单机部署的(一台机器上面部署了多个服务),导致有些机器处理的速度较快,有些机器处理的较慢2.由于dubbo的业务线程池设置的默认核心线程数量为200,并且线程队列为0(设置队列为0,目的也是为了防止队列堆积任务过多,导致上游调用超时),因此当机器处理任务缓慢时,任务一直占用线程未释放就会导致任务占用线程越来越多,最终导致线程池打满的问题。解决过程初步解决方案:增大线程数,增加

2021-09-13 10:45:31 616

原创 springcloudalibaba+dubbo+sentinel服务降级

springcloudAlibaba+dubbo整合sentinel在sentinel-apache-dubbo-adapter包中其实已经做了默认的降级处理。但是默认的降级处理只不过是将捕获到的异常进行包装进行返回。大多数情况下这种默认的处理方式肯定不是我们需要的。于是参考了一下sentinel在web应用下的处理方式,发现应用在dubbo服务上依然可以。下面就讲一下两种降级方式。默认服务降级:在sentinel-apache-dubbo-adapter包中有一个com.alibaba.csp.s

2021-07-26 18:01:09 674

原创 springcloud alibaba+dubbo+sentinel授权规则自定义访问者来源

产生问题:sentinel整合dubbo中在sentinel-apache-dubbo-adapter包中会有一个dubbo来源解析器的接口DubboOriginParser,该接口有一个默认实现会把来源设置为空字符串。然后sentinel在进行黑白名单规则校验的时候取的拦截信息就是来源的值,所以会造成授权规则不生效备注:如果dubbo版本为2.7.x以下的话整合dubbo的包为sentinel-dubbo-adapter解决方案:自定义dubbo访问则来源1.自定义dubbo访问者来源i

2021-05-19 15:17:36 361

原创 idea git 拉取特别慢解决方案

进入idea的bin目录修改runnerw.exe,runnerw64.exe这两个文件的文件名(改成什么都行,或者删除,目的是使其失效),之后就可以了,知乎上看的贴子,确实能解决问题

2021-05-17 20:50:17 4405 3

原创 springcloudAlibaba+dubbo全局异常解决方案

springcloudAlibaba+dubbo全局异常处理的方案基本上就是两种,一种是使用dubbo filter,虽然是com.alibaba.dubbo.rpc.Filter其实实际上还是用的原生dubbo框架的东西因为看代码可以得出com.alibaba.dubbo.rpc.Filter其实是继承org.apache.dubbo.rpc.Filter类的。另外一种就是通过AOP的方式实现。使用dubbofilter输出结果是org.apache.dubbo.rpc.Result,但是如果想自定

2021-04-21 15:29:12 1606

原创 sentinnel slot责任链调用顺序

NodeSelectorSlot--->ClusterBuilderSlot----->LogSlot--->StatisticSlot--->AuthoritySlot---->SystemSlot----->GatewayFlowSlot--->ParamFlowSlot--->FlowSlot--->DegradeSlot以上调用并非会一次调用全部slot,而是要看链创建的时候具体有哪些slot被添加到链中...

2021-04-07 10:37:03 148

原创 mybatis-plus 数组包含查询(postgreSql)

使用场景:商品标签筛选:商品标签字段为标签id用逗号分隔的字符串,前端传入标签id逗号分隔的字符串与数据库字符串分隔成数组后进行包含比较。实例:数据库标签id集合为:1,2,3 前端传入1,2;1,3都可以被筛选出来,传入1,4则无法被筛选出来解决方案:queryWrapper.apply("string_to_array(tags,',') @> {0}::text[]", "{"+tagArrayStr+"}");tags:为数据库字段名 tagArrayS...

2021-03-16 15:41:03 2921 2

原创 sentinel改造nacos数据源web客户端

sentinel改造nacos数据源web客户端

2021-02-19 10:50:41 896 3

原创 sentinel改造Nacos动态规则热点规则和授权规则不生效的问题

问题原因:通过断点发现 dashboard中ParamFlowRuleEntity推送上去后,结构和ParamFlowRule不一样,导致客户端拉取后无法转成ParamFlowRule故无法生效(AuthorityRule也一样),主要原因就是转换过后客户端获取规则时,无法从规则中找到resouce,导致规则校验时根据资源名称去获取规则信息无法获取到规则,进而导致规则不生效的问题解决方案:重写ParamFlowRuleEntity与AuthorityRuleEntity1.热点参数规则第

2021-02-08 15:11:33 2992

原创 sentinel授权规则,无法获取到访问者来源,或者访问者来源为空

问题:com.alibaba.csp.sentinel.adapter.spring.webmvc.config.InterceptorConfig类addSpringMvcInterceptor方法中设置了请求来源解析器 config.setOriginParser(new RequestOriginParser() { @Override public String parseOrigin(HttpServletRequest reque...

2021-02-07 09:32:32 919

原创 两个线程交替打印1-100

package com.cm.example.handler;public class TestClass { private static final Object lock = new Object(); public static volatile boolean flag = false; public static void main(String[] args) { Thread t1 = new Thread(new Runnable() {

2020-11-25 19:40:40 180

原创 成员变量、局部变量

变量的分类成员变量:类变量、实例变量 局部变量非静态代码块的执行:每次创建实例对象都会执行方法的调用规则:调用一次执行一次局部变量与成员变量的区别声明的位置局部变量:方法体{}中,形参,代码块{}中成员变量:类中方法外类变量:有static修饰实例变量:没有static修饰修饰符局部变量:final成员变量:public、protected、private、final、static、volatile、transient值存储的位置局部变量:栈 (虚拟.

2020-10-28 11:24:56 152

原创 方法重写

哪些方法不可以被重写?final方法 静态方法 private等子类中不可见方法对象的多态性子类如果重写了父类的方法,通过子类对象调用的一定是子类重写过的代码 非静态方法默认的调用对象是this this对象在构造器或者说<init>方法中就是正在创建的对象...

2020-10-28 11:10:17 143

原创 实例初始化过程

实例初始化就是执行<init>()方法<init>()方法可能重载有多个,有几个构造器就有几个<init>方法 <init>()方法由非静态实例变量显示赋值代码和非静态代码块、对应构造器代码组成 非静态实例变量显示赋值代码和非静态代码块代码从上到下顺序执行,而对应构造器的代码最后执行 每次创建实例对象,调用对应构造器,执行的就是对应的<init>方法 <init>方法的首行是super()或super(实参列表),即对应父类

2020-10-28 11:07:35 212

原创 类的初始化过程

1、一个类要创建实例需要先加载并初始化该类 main方法所在的类需要先加载和初始化 2、一个子类要初始化需要先初始化其父类3、一个类的初始化就是执行<clinit>()方法 <clinit>()方法由静态类变量显示赋值代码和静态代码块组成 类变量显示赋值代码和静态代码块代码从上到下顺序执行 <clinit>()方法只执行一次 ...

2020-10-28 11:03:22 292

原创 seata-1.3.0 seata :no available service ‘null‘ found, please make sure registry config correct

问题原因:应用启动时会按照事务分组在nacos中寻找相应的配置,然而在nacos中并没有相关的配置,所以出现以上报错信息解决方案:在nacos中配置事务分组相关的信息nacos----配置列表--- 添加Data ID:service.vgroupMapping.fsp_tx_groupGroup:SEATA_GROUP配置内容:defaultfsp_tx_group这个时seata-server的file.conf文件中service模块中的配置项的值service

2020-10-05 16:15:00 814

原创 nacos启动 db.num is null,UnknownHostException: jmenv.tbsite.net

第一个问题是nacos需要配置数据库进入nacos的conf文件加下修改application.propertiesdb.num=1db.url.0=jdbc:mysql://xxx.xxx.xx.xx:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&ser

2020-09-24 11:05:42 428

原创 Redis中GEOADD重复添加的问题

GEOADD重复添加时如果地理位置名称相同,该命令就会覆盖原有的经纬度的值,相当于是存在就进行修改。但是重复添加时返回的结果是不一样的,当数据不存在时(新增)返回结果为1,当结果存在时(修改)返回结果为0,虽然修改时返回结果为0,但是实际上是修改了的,下面做下演示:本地:0>zrem Sicily Palermo"1"本地:0>GEOADD Sicily 13 38 Palermo"1"本地:0>GEOPOS Sicily Palermo1) 1) "1..

2020-09-14 16:16:21 1857 2

原创 Arrays.asList()无法增删的原因

通过Arrays.alist()的实现源码可以知道,Arrays.asList()方法的返回值并不是ArrayList这个对象,而是在Arrays类中和ArrayList同名的一个内部类,又因为这个内部类继承了AbstractList并且实现了List<T>这个接口,所以其整个过程相当于实对List这个接口对象的实例化,只不过内部类没有覆盖父类中的add和remove方法,并且内部类中是一个数组,所以asList()方法返回的是一个固定长度的List。@SafeVarargs@Su.

2020-09-09 18:33:32 457

原创 mycat无法登录问题的一种案例解决

我遇到的场景是mycat的server.xml文件中登录用户配置的时候会有一个defaultAccount属性,去掉这个属性后就可以正常登录了

2020-09-03 16:02:38 1159

prometheus-2.23.0.windows-amd64

prometheus-2.23.0.windows-amd64下载,由于网上下载速度较慢所以此处下载下来供各位码友下载

2020-12-09

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

TA关注的人

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