- 博客(1385)
- 资源 (2)
- 收藏
- 关注
原创 使用maven-helper插件解决jar包冲突【经典版】
首先,解决idea中jar包冲突,使用maven的插件:maven helper插件,它能够给我们罗列出来同一个jar包的不同版本,以及他们的来源,但是对不同jar包中同名的类没有办法。
2024-01-30 23:40:50 1795
原创 设计模式 2 代理模式-静态或者动态
以房东,中介,买卖房子为例子,说明什么是代理,说白就是房东卖房子因为一些利益,或者怕麻烦,没有经商头脑等各种原因,不能和客户直接进行接触买卖房子,这时候需要中介代理其进行卖房子。......
2022-07-17 18:52:34 453
原创 linux实战项目经验得到的常用linux命令(-)
一.Linux系统的概述1.1 linux系统概述Unix是一个强大的多用户、多任务操作系统。1.2 linux的目录结构root管理员的home目录是root,其他用户的home目录是在home目录下1.3 linux的学习地址以下基本知识点是用来学习工作。https://www.orchome.com/100大神的学习文章二 .使用最频繁最高常用命令2.1 查看tomcat的进程号和端口号1.获得进程号ps -ef|grep tomcat...
2021-07-03 07:58:41 464 1
原创 个人能力与目标-顶级程序员
顶级程序员:1.基础知识要扎实,各种算法,数学功底,各种底层原理要通。2.业务项目要出彩,要搞出牛逼的作品来,开源项目源码要阅读,不断学习新知识。3.各种软件技能要有,沟通能力,做ppt演讲的能力,英文能力,写作能力,总结归纳能力。代写java系统,网站,大数据分析挖掘,nlp自然语言处理....都看到这里了,就顺手点击左上角的【关注】按钮,点击右上角的小手,给个评论,关注一下...
2017-05-18 11:06:50 1030 2
原创 springcloud第4季 springcloud-alibaba之sentinel
sentinel是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从等多个维度来帮助开发者保障服务的稳定性。
2024-04-20 08:41:46 405
原创 springcloud第4季 springcloud-alibaba之nacos篇-配置中心
namespace,group,dataid 之间的关系。
2024-04-20 00:11:48 268
原创 springcloud第4季 springcloud-alibaba之nacos篇通信和动态刷新
nacos是一个分布式的配置中心和注册发现中心。nacos是 dynamicmingservicenacos=config+bus 实现动态刷新;
2024-04-09 15:15:10 280
原创 多线程JUC 第2季 JMM的内存结构和作用
jmm就是屏蔽各个操作系统以及硬件之间的访问差异。实现让java程序在各种平台下能达到一致的访问效果。围绕着多线程的原子性,可见性,和有序性展开的。正常情况cpu的的运行,需要从缓存中读取数据,缓存从内存加载数据。但是就存在一个问题,内存和缓存数据存在不一致的问题。解决的策略就是JMM,
2024-04-08 22:47:14 179
原创 springcloud第4季 springcloud-gateway网关的功能作用
网关可以实现: 权限过滤拦截,请求转发;组包拆包,加密解密,报文解析,协议转换等功能。cloud gateway本身也是一个微服务,需要注册进服务到注册中心,从注册中心拉取可用服务。
2024-04-06 23:17:53 245
原创 springboot 在fegin调用中sdk集成主工程,A component required a bean of type.....
1.主工程启动类(这里是FeginApp8081)所在的路径,和调用sdk的类,这里是FeginJiekou接口类型,其所在目录和主工程目录启动一致。则不需要在启动加制定扫描注解。;2.主工程启动类(这里是FeginApp8081)所在的路径,和调用sdk的类,这里是PayFeginApi接口类型,其所在目录和主工程目录启动不一致。则需要在启动加制定扫描注解。;如果不指定基础扫描包,只写。
2024-04-06 09:19:51 286
原创 springcloud第4季 使用resilience4j实现服务流量治理
断路器是一种开关装置,当某个服务单元发生故障后,通过断路器向调用方返回一个符合预期,可处理的备选响应。保证服务不会被长时间,不必要的占用,从而避免在分布式系统故障的蔓延、乃至雪崩。
2024-04-05 11:49:58 374
原创 多线程JUC 第2季 synchornized和Lock锁(重入,公平)
synchronized,和lock锁都是一种悲观锁。悲观锁适用于写多场景,乐观锁适用于读多场景,实现策略有:版本号和cas自旋算法。
2024-03-30 19:11:37 163
原创 springcloud第4季 使用micrometer+zipkin实现链路追踪5
链路最终是在微服务中,一个请求经过的节点服务,每个服务的耗时,执行状态的完美展现。其中使用micrometer。
2024-03-30 17:41:35 214
原创 springcloud第4季 微服务间使用fegin进行调用以及超时,重试等功能4
openfegin是一个声明式的web客户端;只需要创建一个rest接口并在该接口上添加注解@FeginClient即可。openfeign基本上就是当前微服务之间调用的事实标准。
2024-03-27 21:39:46 257
原创 使用mybatis的@Interceptor实现拦截sql
拦截器是一种基于 AOP(面向切面编程)的技术,它可以在目标对象的方法执行前后插入自定义的逻辑。
2024-03-25 20:26:32 1617
原创 springboot 中Aop注解切面实现收集日志与统计耗时2
@Before:前置通知, 在方法执行之前执行@Aroud:环绕通知, 围绕着方法执行@After:后置通知, 在方法执行之后执行@AfterReturning:返回通知, 在方法返回结果之后执行@AfterThrowing:异常通知, 在方法抛出异常之后
2024-03-25 10:35:34 336
原创 java篇 让java对象具有链式调用
1.在类中引入注解@Accessors(chain = true),引入后,不要在使用自定义的getter,setter方法。
2024-03-23 10:54:24 202
原创 多线程JUC 第2季 重入锁中lock和trylock方法
lock方法是一种阻塞性的获取锁的方式,当调用一个对象的lock方法时,如果锁当前被其他线程持有,那么当前线程将会被挂起(即阻塞),直到锁被释放,这种机制确保了只有一个线程能够在同一时间访问被锁保护的代码块或资源,从而避免了并发问题,但是,它也可能导致线程长时间等待,特别是在高并发环境下,如果锁的持有者因为某些原因(如死锁)未能及时释放锁,那么其他线程可能会一直等待下去。tryLock方法则是一种非阻塞性的获取锁的方式,当调用一个对象的tryLock方法时,如果锁当前可用,那么将成功获得锁并继续执行;
2024-03-17 21:55:29 340
原创 多线程JUC 第2季 wait和notify唤醒机制
1) 使用wait()、notify()和notifyAII()时需要先对调用对象加锁。否则直接调用的话会抛出 IllegalMonitorStateExceptiona。2) 调用wait()方法后,线程状态。由RUNNING变为WAITING,并将当前线程放置到对象的等待队列。3) notify()或notifyAlI()方法调用后,等待线程依旧不会从wait()返回,需要调用notify()或notifAII()的线程释放锁之后,等待线程才有机会从wait()返回。
2024-03-17 21:02:21 793
原创 多线程JUC 第2季 Future接口与completablefuture接口异步
如果主线程需要执行一个耗时的计算任务,可以使用future把这个任务放到异步线程中执行。主线程继续处理其他任务或者先行结束,再通过future获取计算结果。future接口可以为主线程开一个分支任务,专门为主线程处理耗时和费力的复杂业务。特点:多线程,又返回值,异步任务。
2024-03-14 23:08:22 329
原创 springcloud第3季 consul服务发现注册,配置中心2
为何要用注册中心?1.A服务调用B服务,使用ip和端口,如果B服务的ip或者端口发生变化,服务A需要进行改动;2.如果在分布式集群中,部署多个服务B,多个服务X,服务Y等调用服务B,B发生变动,其他服务需要改动内容,波及范围太大,维护有成本。改成从注册中心拿到服务名称,服务名称对应ip和端口随变改动,对调用方A来说无感知。EUREAK为何不使用?1.官网停止更新;2.对新手使用不太友好,自我保护机制,动不动就提示。
2024-03-10 08:03:27 539
原创 idea中2022.03.04版本和jdk17搭配使用
idea2022的安装,自行解决。jdk17的安装,自行解决。见IDEA2022.3.2安装教程
2024-03-09 12:09:42 391
原创 多线程JUC 第2季 volatile变量的使用
当写一个volatile变量时,jmm会把该线程对应的本地内存中共享变量值立即刷回主内存中。当读一个volatile变量时,jmm会把该线程本地的内存值设置无效,重新回到主内存中读取最新的值。所以,
2024-03-09 09:14:17 376
原创 高可用架构实现流量治理的策略
1.平均故障间隔(Mean Time Between Failure,简称 MTBF):表示两次故障的间隔时间,也就是系统正常运行的平均时间,这个时间越长,说明系统的稳定性越高;2.故障恢复时间(Mean Time To Repair,简称 MTTR):表示系统发生故障后恢复的时间,这个时间越短,说明故障对用户的影响越小。可用性(Availability)的计算公式:Availability= MTBF / (MTBF + MTTR) * 100%
2024-03-04 21:48:02 356
原创 多线程JUC 第2季 中断线程
1.public void interrupt(): 实例方法,仅仅是设置线程中断状态为true,发起一个协商而不会立刻停止线程。静态方法,判断当前线程是否中断并清除当前线程的中断状态。做两件事:a)返回当前线程的中断状态,测试当前线程是否已经中断。b)将当前线程的中断状态清零并重新设置为true,清除线程的中断状态。3.public boolean isinterrupted():实例方法判断当前线程是不是中断,检测中断标志位。
2024-03-03 07:57:31 407
原创 java中Timer和Timertask的关系
1.Timer来讲就是一个调度器,而TimerTask呢只是一个实现了run方法的一个类;2.Timer和TimerTask成对出现,Timer是定时器,TimerTask是定时任务。换句话说,定时任务TimerTask是给定时器Timer执行的具体任务。TimerTask实现Runnable接口的run方法。3.每一个Timer仅对应唯一一个线程。Timer不保证任务执行的十分精确。Timer类的线程安全的。
2024-03-02 11:54:16 1038 1
原创 ConcurrentHashMap的putIfAbsent方法
putIfAbsent方法主要是在向ConcurrentHashMap中添加键—值对的时候,它会先判断该键值对是否已经存在。
2024-02-28 15:43:16 539
原创 springboot项目打成含crud操作的sdk集成到springboot启动引擎项目
sdk项目目录中只有基础的service类以及mybatis操作数据库的相关文件,service类中包含查询数据库的方法。
2024-02-26 00:03:51 591
原创 java设计模式- 建造者模式
建造者模式可以帮助我们创建复杂的对象,同时保持代码的可读性和灵活性。通过将对象的构建过程与其表现分离,我们可以使用同样的构建过程创建不同的表现。在实际开发中,当遇到需要创建复杂对象的场景时,可以考虑使用建造者模式。
2024-02-06 16:03:05 1059
原创 常见java,数据库锁汇总篇,舍我其谁
表级锁:粗粒度的锁,对整张表加锁,加锁快开销小,不会出现死锁,但并发度低,会增加锁冲突的概率;行级锁:是mysql粒度最小的锁,只针对操作行加锁,加锁慢开销大,会出现死锁,并发度高,但可大大减少锁冲突概率;1.3 概述ReentrantLock悲观的独占的可重入的可公平可不公平锁synchronized悲观的独占的可重入的非公平锁。
2024-01-22 21:34:46 469
原创 分布式锁4 :数据库DB实现分布式锁的悲观锁和乐观锁,unique实现方式
在读取数据时锁住那几行,其他对这几行的更新需要等到悲观锁结束时才能继续。,交出CPU资源,可以把CPU给其他线程使用,提高了CPU的利用率。
2024-01-21 19:33:11 669
原创 数据库悲观锁 select for update的详解
在mysql中,select ... for update 仅适用于InnoDB,且必须在事务块中才能生效。Innodb引擎默认是行锁。场景1:查询条件为主键会话A: select * from tb_pab where id=1 for update;会话B: update tb_pab set uname='bj' where id=1;
2024-01-11 16:20:10 1161
原创 分布式锁3: zk实现分布式锁5 使用中间件curator-interprocessmutex可重入锁
简化了Zookeeper客户端的开发量。Curator解决了很多zookeeper客户端非常底层的细节开发工作,包括连接重连、反复注册wathcer和NodeExistsException异常等。、集群领导选举、共享计数器、缓存机制、分布式队列等)的抽象封装,这些实现都遵循了zk的最佳实践,并考虑了各种极端情况。1.封装ZooKeeper client与ZooKeeper server之间的连接处理。提供了一套Fluent风格的操作API。Zookeeper提供的原生客户端。
2024-01-06 17:27:50 690
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人