本地java项目依赖一个私有包,尝试编译失败,发现是因为这个私有包的原因。 找到这个包上传到我们自己的私服,然后再尝试编译。 编译出错,提示这个包私服不存在。 仔细核对出错日志,发现maven在尝试前往snapshot的仓库找我们的包,但是我们的包是上传到releases仓库的。 这很让人费解,我原先的理解是,只有包的版本号末尾携带-SNAPSHOT后缀的maven才会尝试去snapshot仓库寻…
Leave a Comment分类: 编程-JAVA
一、方法区 JVM方法区是用于保存已经被虚拟机加载的类元信息(包括类的版本、字段、方法、接口和父类等信息)、运行时常量信息(static、final定义的常量)、字符串常量信息(String a=”dfc”)。 1、方法区、永久代、元数据区的关系 方法区是JVM 定义的一种规范,是所有虚拟机都需要遵守的约定, 而“永久代(PermGen space)”和“元数据(…
Leave a Comment什么时候触发Young GC—针对年轻代 当Eden区满了的时候,会触发Young GC 什么时候触发 Full GC—针对整个堆 -XX:HandlePromotionFailure:是否设置空间分配担保 JDK7及以后这个参数就失效了. 只要老年代的连续空间大于新生代对象的总大小或者历次晋升到老年代的对象的平均大小就进行MinorGC,否则FullGC 所谓大对象,是指…
Leave a Comment背景 一次项目巡检发现某个项目的函数执行TP99的波动很大: 看这个图感觉很离谱,随即排查问题原因,看到JVM的监控如下: 发现程序一直在执行fullGC,我们知道fullGC的成本是非常大的,这肯定是导致应用卡顿的原因。 尝试解决 我去看了机器的监控,发现服务是部署在8G内存的容器里面的,实际占用内存只有7%都不到。 通过这里我们知道,实际机器的内存还是有很大的富余的,那肯定是哪里限制了jvm去…
Leave a Comment起因 在一次迭代中,出现了一个低级错误,if 语句中的判断逻辑出现了错误,刚好这个功能场景在开发和测试过程中很少触发,使用的用户也不多,不过的确影响到了少部分用户,所以还是需要进行修复。 想着只是更新一行代码,如果走正常的发布流程,需要通过以下步骤: 提交代码 -> 提测打包 -> 测试环境git验证 -> Release 环境验证 -> 预发环境验证 -> 线上环境…
Leave a Comment尝试用netty写了个日志收集服务,类似于logstash的功能,因为我们才采集日志的时候可能有很多的策略要去做,logstash的功能不够支撑,所以尝试使用netty自己写。 看了一些netty的教程,大概是以下几个步骤 new两个 NioEventLoopGroup 一个是bossGroup,一个是workerGroup new一个ServerBootstrap 搞出来的对象暂且叫b b.gr…
Leave a CommentFree eBook FROM baeldung Build your API with Spring Like a Pro The eBook will help you hit the ground running and teach you how to build your very first REST API: Bootstrapping a Web Applica…
Leave a Comment背景 有个项目需要导出数据库数据为Excel,实践过程中发现,先要从数据库取数据,再拼装成Excel文件,再发送给用户,整个过程非常长,用户需要在网页卡很久才会出现下载框,体验很差。 希望做到数据分页的从数据库查出来,直接发给用户,查多少发多少,提升用户体验。 方案 我们拿到HttpServletResponse的OutputStream,采用流的方式向OutputStream里面直接写入数据实现…
Leave a CommentELK作为日志写入方案,如果ES性能低,可能会有积压有风险,中间加入一层Kafka,可能会更加可靠。 decorate_events => true 这个配置可以让你在metadata里面读取到topic信息。 后续:上面的解决方案是个大坑啊, 我以为配置OK了就来写记录了,结果发现一堆问题,搞了我一下午。 上面的配置,其实数据是能跑的,但是我在ES里面看日志的时候,就发现,我的数据没有被j…
Leave a Comment故障描述 突然收到线长告警,服务器负载高,java项目,程序运行在容器里面。 定位线程 top指令 可以明显看到 进程ID是169的java程序明显CPU占用异常。 定位线程 top -H -p pid 那么我们输入 top -H -p 169 这时我们找到了子线程的ID是 315,这是10进制的,等下我们需要他的16进制ID。 简单的shell来完成进制转换 printf ‘%x\n…
Leave a Comment