Java
文章平均质量分 81
Java
IccBoY
编程爱好从业者,业余时间喜欢写写代码
展开
-
pinpoint链路跟踪运用及日志logback配置
pinpoint是一款 APM监控工具(Application Performance Management/应用性能管理)基于java编写用于 大规模分布式系统 的监控,是 分析 大规模分布式系统 的平台基于google Dapper开发,目标就是为n(n>=1)层架构开发新的跟踪平台,为n层架构的系统 提供 处理大量跟踪数据 的 解决方案能够对 基于java的 大规模分布式系统和应用 做调用链的跟踪提供了一个web页面 展示 分布式系统的拓扑图 以及 系统这各个组件之间关系。原创 2023-11-28 00:12:11 · 1243 阅读 · 0 评论 -
InetAddress.getLocalHost() 执行非常慢
昨天同事反馈网关的请求非常慢,一个获取的token的接口响应都超过了30s,还好只是测试环境。经过验证,几乎所有接口响应都很慢,很多都响应超时。排查步骤:0. 本地启动项目测试,没有这个问题。而且生产环境也没这个问题,推测是 环境问题,或择资源问题导致。1. 通过arthas的trace命令来查找方法执行链路上的 哪里比较耗时。但通过验证,调用方等待请求响应,花了70s,从arthas的日志来看,只花费了0.01ms。因此推测,耗时是在进入目标方法只之前,都已经卡主了。2. 由于拦截器比较多,就没有去分析哪原创 2023-11-03 16:24:35 · 596 阅读 · 0 评论 -
windows服务器下java程序健康检测及假死崩溃后自动重启应用、开机自动启动
该篇文章涉及到技术点有:1. java调用本地命令处理方式,2. 通过环境变量配置项目,3. spring动态创建bean,4. maven-ant插件的使用,5. windows定时任务配置,6. actuator的使用。---一个windows上的批处理任务,需要接到mq的消息通知后执行,为了快速实现这里我们通过springboot写了一个jar程序,用于接收mq的消息,并调用bat文件。原创 2023-08-19 23:30:00 · 1311 阅读 · 0 评论 -
Java JVM致命错误日志(hs_err_pid.log)分析
当jvm出现致命错误时,会生成一个错误文件 hs_err_pid.log,其中包括了导致jvm crash的重要信息,可以通过分析该文件定位到导致crash的根源,从而改善以保证系统稳定。当出现crash时,该文件默认会生成到工作目录下,然而可以通过jvm参数指定生成路径(JDK6中引入):1该文件包含如下几类关键信息:日志头文件导致crash的线程信息所有线程信息安全点和锁信息堆信息本地代码缓存编译事件gc相关记录jvm内存映射jvm启动参数服务器信息。转载 2023-07-31 09:54:49 · 1628 阅读 · 0 评论 -
springboot+dubbo项目启动项目时报错 zookeeper not connected
推测由于vpn的方式连接的 zk服务器,很有可能是 3秒内没有得到服务端的正确响应,而导致了异常,然后抛出了异常。项目在公司网络启动时,能正常启动。但通过vpn连接到公司网络时却无法启动报下面的错误。基于上的推测,将该timeout的默认值3000改大一些后,然后就启动成功了。修改dubbo的配置,下面是springboot的项目,修改的方式。下面配置了三个配置的超时时间,可根据情况进行配置。,也就说3秒内需要链接成功,否则就会超时。进一步经过报错的日志,找到对应的源码。从上面的报错信息是可以看出是。原创 2023-06-27 23:23:40 · 1469 阅读 · 0 评论 -
mybatis select 语句被莫名 拼接了order by create_time desc limit ?
工具虽好用,但一定要按规范使用!原创 2023-04-04 11:35:54 · 1591 阅读 · 0 评论 -
Dubbo序列化与反序列化问题、服务端获取到的请求参数类型转换异常(变成了Map类型的对象)
Dubbo相关问题合集原创 2023-02-14 10:27:26 · 1564 阅读 · 0 评论 -
工作流flowable任务退回(任务跳转)、任务重新触发、任务删除的实现
在进行flowable工作流的运用中,会涉及到任务的的一些特殊操作,如:退回,跳转,删除,重新触发等原创 2023-01-08 12:23:26 · 5942 阅读 · 14 评论 -
双重检查锁中的指令重排问题---Java单例模式实现
使用synchronized之后,可以保证线程安全,但是synchronized将全部代码块锁住,这样会导致较大的性能开销,因此,人们想出了一个“聪明”的技巧:双重检查锁DCL(double checked locking)的机制实现单例。指令重排序是指编译器或处理器为了优化性能而采取的一种手段,在不存在数据依赖性情况下(如写后读,读后写,写后写),调整代码执行顺序。这是一个懒汉式的单例实现,众所周知,因为没有相应的锁机制,这个程序是线程不安全的,实现安全的最快捷的方式是添加 synchronized。转载 2022-09-15 11:14:01 · 574 阅读 · 0 评论 -
Java单元测试实践-理论->实践->Sonar集成
本文说明了单元测试与集成测试的区别,并从单元测试命名规范,编写(Given-When-Then),单元测试工具(mock工具及断言工具),以及maven插件实现单元测试和集成测试的分开执行方面,和与sonar集成进行了实践。原创 2022-01-24 02:33:36 · 1977 阅读 · 0 评论 -
devtools导致getBean获取不到实例No qualifying bean of type解决
最近在项目A中需要使用组件B的功能,组件B通过maven jar包的方式依赖到项目A中。其中组件B中有一段代码的逻辑是:通过接口的名字(含包名) 反射获取对应的 class,然后通过spring的getBean(class) 获取对应的bean实例,用于后续的操作。类似下面的代码:@Autowiredprivate ApplicationContext ctx;....Class api = Class.forName("com.xxx.xxx.api.provider.IUserSer原创 2021-07-27 16:52:06 · 1582 阅读 · 0 评论 -
TDD编码实战讲义
说明:本讲义是我在ThoughtWorks作为咨询师时,为客户开展TDD Code Kata而编写。案例为Guess Number,案例需求来自当时的同事王瑜珩。当时,我们共同在ThoughtWorks的Zynx交付团队,为培养团队TDD能力进行训练时,引入了本案例。讲义中给出的代码问题则来自客户方的受训学员,可谓“真实的代码坏味道”。个人认为TDD不只是开发方法,还应该是设计方法,因此讲义中包含了诸多设计原理、思想和原则。目标收益熟悉IDE快捷键; 掌握TDD基本知识; 识别代码坏味道.转载 2021-06-19 17:05:35 · 900 阅读 · 0 评论 -
使用Optional.of、ofNullable、orElse、orElseGet遇到的坑
of()与ofNullable()的区别从方法名上对比理解,就是ofNullable() 可以支持null值,那of()就不支持null值。下面看下源码:java.util.Optional.java /** * Returns an {@code Optional} with the specified present non-null value. * * @param <T> the class of the value * @pa原创 2021-06-10 12:38:48 · 11920 阅读 · 1 评论 -
Spring IoC及AOP源码笔记分享
记得还是两三年前试着阅读过spring的源码,但没有方式方法,导致迷失在浩瀚的代码行中,似懂非懂。最近又开始阅读学习spring的源码,这次的方法是视频+博文的方式+不断的代码调试,终于见得庐山真面目。下面推荐田小波的spring源码系列,确实不错。本文记录已做收藏。Spring 源码分析文章列表Ⅰ. IOC更新时间 标题2018-05-30 Spring IOC 容器源码分析系列文章导读2018-06-01 Spring IOC 容器源码分析 - 获取单例 bean2018-06-04 S转载 2021-03-03 23:06:26 · 224 阅读 · 1 评论 -
JVM学习笔记1-Java内存区域
认识虚拟机虚拟机系列Sun Classic/Exact VM 第一款商用Java虚拟机HotSpot VM 目前使用范围最广的Java虚拟机Mobile系列 面对移动和嵌入式市场BEA JRockitIBM J9 VMBEA Liquid VMGoogle Android Dalvik VMApache HarmonyMicrosft JVM未来的Java技术模块化 > 混合语言 > 多核并行 > 丰富语法 >原创 2021-02-25 08:36:02 · 223 阅读 · 2 评论 -
Java8新特性学习笔记
java8新特性学习笔记,主要包含Lambda 表达式、Stream API、方法引用、函数式接口等内容。原创 2021-01-18 16:26:08 · 239 阅读 · 1 评论 -
在eclipse上Checkstyle的安装和使用
1.概述随着中心的代码规范的建立和实施,项目组对代码规范要求,以及软件工程师们对自身代码的编写规范重要性的认知,“代码规范”已经成为了中心的一个“热词”。然后怎么才能写出有规范的代码,怎么才能养成编码规范习惯?相信很多人都知道Checkstyle这个编码规范工具,本文讲述了Checkstyle在eclipse中的安装过程,以及使用方法。希望通过本文,让大家能简单快速的掌握Checkstyle原创 2014-06-19 11:28:30 · 31291 阅读 · 5 评论 -
Java系统插件开发原理与实例
java系统的插件开发,类似系统中定义一个接口,给插件的开发者,然后开发者按照实现该接口后,打包成jar(zip)上传到系统中,并告知系统实现类的名字,然后系统就能调用该插件了。该实现方法用到了java动态加载类的技术,主要是ClassLoader。原创 2014-12-13 00:09:29 · 8908 阅读 · 3 评论 -
spring 、jpa、classpath几个注意的地方
前段时间在搭建java web框架时遇到的问题,在这里总结下。原创 2014-12-14 16:05:12 · 1107 阅读 · 0 评论 -
大型网站系统与Java中间件实践学习笔记
分布式系统的基础知识各种锁互斥锁:共享资源的使用是互斥的,即一个线程获得资源的使用权后就会将该资源加锁,使用完后会将其解锁,如果在使用过程中有其他线程想要获取该资源的锁,那么它就会被阻塞陷入睡眠状态,直到该资源被解锁才会被唤醒,如果被阻塞的资源不止一个,那么它们都会被唤醒,但是获得资源使用权的是第一个被唤醒的线程,其它线程又陷入沉睡.读写锁:它拥有读状态加锁、写状态加锁、不加锁这三种状...原创 2019-03-07 22:39:48 · 390 阅读 · 0 评论 -
JAVA线程三种创建方式
一般来说,在java中实现高并发是基于多线程编程的,所谓并发,也就是多个线程同时工作,来处理我们的业务,在机器普遍多核心的今天,并发编程的意义极为重大,因为我们有多个cpu供线程使用,如果我们的应用依然只使用单线程模式来工作的话,对极度浪费机器资源的。所以,学习java并发知识的首要问题是:如何创建一个线程,并且让这个线程做一些事情?这是java并发编程内容的起点,下面将分别介绍多个创建线程,并且...原创 2019-03-07 22:39:03 · 61 阅读 · 0 评论 -
在linux上安装jdk
1.概述此篇主要向你介绍如何一步一步的在linux环境上面安装jdk,包括jdk的下载、安装、和环境变量的配置。2.概念2.1.JDK(JavaDevelopmentKit)它是Java语言的软件开发工具包(SDK)。JDK包含的基本组件包括:javac–编译器,将源程序转成字节码jar–打包工具,将相关的类文件打包成一个文件javadoc–原创 2014-05-06 22:54:11 · 1954 阅读 · 0 评论