- 博客(1476)
- 资源 (2)
- 收藏
- 关注

原创 使用maven-helper插件解决jar包冲突案例3【经典版】
首先,解决idea中jar包冲突,使用maven的插件:maven helper插件,它能够给我们罗列出来同一个jar包的不同版本,以及他们的来源,但是对不同jar包中同名的类没有办法。
2024-01-30 23:40:50
7852

原创 设计模式 2 代理模式-静态或者动态
以房东,中介,买卖房子为例子,说明什么是代理,说白就是房东卖房子因为一些利益,或者怕麻烦,没有经商头脑等各种原因,不能和客户直接进行接触买卖房子,这时候需要中介代理其进行卖房子。......
2022-07-17 18:52:34
551

原创 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
615
2

原创 个人能力与目标-顶级程序员
顶级程序员:1.基础知识要扎实,各种算法,数学功底,各种底层原理要通。2.业务项目要出彩,要搞出牛逼的作品来,开源项目源码要阅读,不断学习新知识。3.各种软件技能要有,沟通能力,做ppt演讲的能力,英文能力,写作能力,总结归纳能力。代写java系统,网站,大数据分析挖掘,nlp自然语言处理....都看到这里了,就顺手点击左上角的【关注】按钮,点击右上角的小手,给个评论,关注一下...
2017-05-18 11:06:50
1172
2
原创 mysql数据库实现分库分表,读写分离中间件sharding-sphere
作用: 定位关系型数据库的中间件,合理在分布式环境下使用关系型数据库操作,目前有三个产品。
2025-06-02 15:07:23
373
原创 mysql中limit深度分页详细剖析【爽文】
语法:select * from t limit m,n分页查询时,我们会在LIMIT后面传两个参数,一。
2025-05-17 17:49:05
667
原创 mysql中4种扫描方式和聚簇索引&非聚簇索引【爽文一篇】
MySQL中的索引分为聚簇索引和非聚簇索引。聚簇索引的叶子节点直接存储数据行,通常由主键生成,查询时通过主键直接获取整行数据。非聚簇索引的叶子节点存储索引列的值和指向数据行的指针,查询时需先通过非聚簇索引找到主键,再通过聚簇索引获取完整数据,这一过程称为回表查询。回表查询会增加I/O操作,降低性能,因此应尽量避免。覆盖索引是一种优化技术,通过索引直接获取查询所需的所有字段,避免回表操作,从而提高查询性能。MySQL的查询扫描方式包括全表扫描、索引扫描、覆盖索引扫描和回表扫描,选择合适的扫描方式可以显著提升查
2025-05-17 16:42:28
774
原创 mockito+junit5实现单测
1.@mock注解,没有配置规则时,则返回默认值(引用类型返回null,基本类型返回0);如果配置规时,按配置规则返回指定值。2.@spy注解,没有配置规则时,调用真实方法的逻辑;配置规则时,按配置规则返回指定值。
2025-04-22 20:41:24
229
1
原创 性能调优&疑难问题解决-completablefuture造成oom
内存溢出导火锁:ForkJoinPool.commonPool()使用无界队列,理论上能存储大量任务,但实际受内存限制。大量任务到来时,队列会不断消耗内存,一旦超过系统承受能力,会触发 OutOfMemoryError,服务直接宕机。:ForkJoinPool.commonPool()是 JVM 全局共享的线程池,所有未指定线程池的 CompletableFuture 任务和并行流(parallelStream())都会共享它。
2025-03-19 21:09:47
288
原创 catlog链路服务端在windows的安装
jdk 1.8之上;这里用的jdk17tomcat 8.5.31 之上;注意:如果使用tomcat8.5.6 的话,后面操作报如下信息;
2025-03-16 20:54:01
914
原创 jvm调优常用命令行工具
jstat -gc pid 1000 5 #1秒更新一次,显示5次。1) jmap -histo pid | head -20 查找有多少对象产生。jstack pid |grep A20 16进制线程id。jinfo -flag 参数名称 pid。
2025-03-16 08:48:58
317
原创 性能调优-cpu的性能指标【经典篇】
1.查看物理CPU的个数:cat /proc/cpuinfo这个虚拟机的物理cpu2个,每个物理cpu的逻辑CPU个数为1个,所以逻辑CPU的个数就是2个。
2025-03-03 23:07:25
961
原创 log4j2中<logger>中没有指定appender的输出
1.如果一个<logger>没有显式配置appender,Log4j2 会将该日志事件传递给其的appender。2.这种传递行为会一直向上追溯,直到找到配置了appender的 Logger,或者到达。3.如果日志事件最终传递到,并且 Root Logger 配置了appender,则日志会输出到 Root Logger 的appender。4.如果 Root Logger 也没有配置appender,则日志事件会被丢弃(即不会有任何输出)
2025-02-28 21:12:40
436
原创 JVM 调优篇12 通过jmap获取dump文件以及jmap介绍【经典】
jmap(JVM Memory Map):作用一方面是获取dump文件(堆转储快照文件,二进制文件),它还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、类加载信息等。一般来说,使用jmap指令生成dump文件的操作算得上是最常用的jmap命令之一,将堆中所有存活对象导出至一个文件之中。注意说明:1.通常在写Heap Dump文件前会触发一次Full GC,所以heap dump文件里保存的都是FullGC后留下的对象信息。
2025-02-28 09:47:49
600
原创 Dockerfile中volume功能作用【通过镜像启动docker容器】
在dockerfile中VOLUME可以指定多个挂在目录,即["/usr/local/data1","/usr/local/data2"]代表这两个目录都会挂在到宿主机的自动生成的目录。3.1 容器启动后,先查看宿主机/home/env目录下是否有一个containerdata。通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样。通过docker inspect 容器命令可以查看到挂载的目录。容器上的挂载点下的内容就是宿主机的这个目录下的内容。3.4在启动容器时设置挂载点。
2025-02-22 11:34:09
1045
原创 高并发系统- 影响性能的指标信息blocked,waiting
Blocked:求锁而不得;线程处于blocked状态时,它不会占用CPU时间片线程进入blocked状态通常是因为它在等待获取一个有synchronized关键字保护的对象的锁,此时该线程被暂时阻止执行期后续代码。含有synchronized的方法,容易造成 blocked容易造成watingSleep(n),wait(n):容易造成timed_waiting不管wait是否含有时间参数,都需要notify/notifyall唤醒,其中。
2025-02-19 18:22:58
340
原创 高并发系统-cpu使用率指标的分析
top命令查看 cpu使用情况:1个进程就消耗了大约99.0%的CPU,整个CPU的使用率达到99.7%:开启2个进程并发执行呢?
2025-02-17 20:53:49
311
原创 高并发系统-性能指标的判断
衡量系统性能和网络性能的指标,大致从这四个维度进行判断TPS、QPS、并发数和RT这四个指标相互关联,共同影响着系统性能。QPS(TPS)= 并发数/平均响应时间;并发数 = QPS*平均响应时间。如果每天 80% 的访问集中在 20% 的时间里,这 20% 的时间就叫做峰值时间。公式:( 总PV数 * 80% ) / ( 每天秒数(一天总共的秒数) * 20% ) = 峰值时间每秒请求数(QPS)机器:峰值时间每秒QPS / 单台机器的QPS = 需要的机器。
2025-02-16 22:07:35
746
原创 架构师篇 DDD领域驱动设计使用的意义
使用DDD(领域驱动设计)的主要原因在于它能够有效应对复杂业务系统的开发挑战,确保软件与业务需求高度一致。1. 解决复杂业务问题核心价值:DDD专注于理解和建模复杂的业务领域,通过领域模型将业务规则和逻辑清晰地表达出来。适用场景:当业务逻辑复杂、规则多变时,DDD能帮助开发团队更好地理解和实现这些逻辑。2. 统一语言(Ubiquitous Language)核心价值:DDD强调开发团队与业务专家使用一致的术语,减少沟通误解,确保软件准确反映业务需求。作用:通过统一语言,需求分析、设计和代码实现都能保持一致,
2025-02-16 19:34:43
471
原创 log4j2中决定日志输出级别的说明
log4j2中控制日志级别输出默认是由<logger level="xxx">控制;但是如果<appender level="yyyy">中配置了<ThresholdFilter level="yyy" onMatch="ACCEPT" onMismatch="DENY"/> 过滤器,则日志级别取 max{logger,appender}两个级别中较高的级别。
2025-01-21 11:42:57
280
原创 jenkins的作用&案例操作
一 jenkins1.1 概念1.2 流程1.2.1 流程1.2.2 配置1.3 jenkins容器自动化部署
2025-01-12 21:28:14
1131
1
原创 CatLog的使用
CAT(Central Application Tracking) 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。
2025-01-08 20:26:09
739
原创 redis7基础篇3 redis的集群模式3
Redis集群支持多个master,每个master节点又可以挂载多个slave;客户端与redis的节点连接,不需要连接集群中所有的节点,只需要任意连接集群中的一个可用节点即可。Redis集群不保证强一致性,这意味着在特定的条件下,redis集群可能会丢掉一些被系统收到的写入请求命令。Redis槽位Slot是Redis集群中的一个重要概念,它是一个0到16383之间的整数,用于表示一个数据分片。Redis集群将所有的键均匀分布在16384个槽位上,每个槽位存储一个或多个键。
2025-01-04 09:39:53
1226
原创 redis7基础篇2 redis的哨兵模式2
当一个主从配置的master失效后,sentinel可以选举出一个新的master,用于自动接替原来master的工作,主从配置中的其他redis服务器自动指向新的master同步数据,一般建议sentinel采取奇数台,防止某一台sentinel无法连接到master导致误切换。表示允许并行同步的slave个数,当master挂了后,哨兵会选出新的master,此时,剩余的slave会向新的mster发起同步数据。故障转移的超时时间,进行故障转移时,如果超过设置的毫秒,表示故障转移失败。
2025-01-04 07:32:45
684
原创 redis7基础篇2 redis的主从模式1
作用:主从复制,master以写为主,slave以读为主;当master有数据变化的时候,自动将新的数据异步同步到其它slave数据库。其他作用:读写分离;容灾恢复;数据备份;水平扩容支撑高并发。1.info replication 可以查看复制节点的主从关系和配置信息。2.一般写入redis.conf配置文件内,这条指令的作用是指定要连接的主节点的 IP 地址和端口号,使得当前的 Redis 实例能够从主节点那里复制数据。3.
2025-01-03 21:42:17
913
原创 springboot整合log4j2异步输出的配置3
Log4j 2中记录日志的方式有同步日志和异步日志两种方式,其中异步日志又可分为使用AsyncAppender和使用AsyncLogger两种方式。
2024-12-29 09:53:33
401
原创 springboot整合log4j2日志框架1
【error】:error级别主要对于一些不可预知的信息,如,错误,异常等,比如,在catch快中捕获的网络通信,数据库连接等异常,如果异常对系统的整个流程影响不大,可以使用warn级别日志输出。【fatal】:指出每个严重的错误事件,将会导致应用程序的退出,这个级别比较高了。【warn】:warn级别的主要输出警告性质的内容,这些内容是可以预知且是有规划的,比如,某个方法入参为空或者该参数的值不满足运行该方法的条件时,在warn级别时应输出较为详尽的信息,以便于事后对日志进行分析。
2024-12-28 12:45:21
672
原创 git分支与部署环境的关系以及开发规范
master分支为主分支,用于部署生产环境的分支,无论任何时候都要确保master分支的稳定性;,用于开发新需求,一旦需求上线,便将其删除。分支命名规范:feature/xxx_xxx_module,例如:feature/demand_order_module。主分支,是master的备用分支,用于当前的生产环境构建,prod分支由feature及hotfix分支合并。分支命名规范:hotfix/xxx_xxx_module,例如:hotfix/demand_order_module。
2024-12-25 11:51:56
516
原创 数据库中的分表,分库,分区与分片的区别与联系
分区并不是生成新的数据表,而是将表的数据均衡分摊到不同的硬盘,系统或是不同服务器存储介子中,实际上还是一张表。分区可以做到将表的数据均衡到不同的地方,提高数据检索的效率,降低数据库的频繁IO压力值。它不仅能够应对规模的缩放挑战,还能够处理分片带来的复杂性,同时在处理大量数据时保持卓越的性能。基于目录的分片:维护一个查找表,将特定的键直接映射到特定的分片。分表时机:单表出现性能瓶颈,通常是因为单表数据量过大,经过sql优化,还是读写性能较慢,以及涉及到当频繁插入或者联合查询时,速度变慢。
2024-11-30 21:34:05
1619
原创 idea中git的将A分支某次提交记录合并到B分支
在开发过程中,有时候需要将A分支某次提交记录功能合并到B分支上。主要原理用到git的cherry pick功能。
2024-11-28 09:25:40
1555
原创 springboot中@ConfigurationProperties自动获取配置参数
当需要获取配置文件中很多参数时,我们可以定义参数的前缀相同,通过自动映射进行获取配置文件中参数。
2024-11-24 11:38:37
354
原创 java基础知识21 异常处理try与throw的相互处理e.getcause
异常的层次结构 * 异常的层次结构可以通过连续调用getCause()方法来获取。例如,如果有一个异常A,它是由异常B引起的,而异常B又是由异常C引起的,那么可以通过以下方式获取到异常C:e 指当前A;e.getCause 指的B;e.getCause().getCause() 指的C;
2024-11-01 21:08:51
491
原创 设计模式4-工厂模式&策略模式
3.定义一个context上下文,用于调用具体的策略方法,供客户端使用;通过new context的构造函数传入策略对象,然后通过此对象调用策略行为方法。System.out.println("中国工商银行,扣减:"+(a-b));System.out.println("中国银行,累加:"+(a+b));System.out.println("中国银行取钱50元");* 2.定义多个策略实现类,并实现策略接口,重写行为方法,实现各自逻辑。1.定义一个策略接口,在接口中声明一个行为方法。
2024-10-27 09:05:27
1223
1
原创 分布式-单元化架构1
两地三中心的备份模式与双活模式,可以看到,这两种模式下,每个机房的数据量都是全量的,在某个机房故障时,另外一个机房会接管全部的流量。
2024-10-24 16:55:50
987
原创 JVM 调优篇11 调优常用jvm参数&垃圾收集器参数【经典】
Java HotSpot VM中-XX:的可配置参数列表进行描述;这些参数可以被松散的聚合成三类:行为参数(Behavioral Options):用于改变jvm的一些基础行为;性能调优(Performance Tuning):用于jvm的性能调优;调试参数(Debugging Options):一般用于打开跟踪、打印、输出等jvm参数,用于显示jvm更加详细的信息;
2024-10-14 20:18:39
1209
原创 JVM 调优篇10 使用arthas调优命令&火焰图【经典版】
1. 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?2.是否有一个全局视角来查看系统的运行状况?3. 有什么办法可以监控到JVM的实时运行状态?4. 怎么快速定位应用的热点,生成火焰图?
2024-10-11 20:26:09
1324
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人