为什么Java中的String设计成不可变的
原文出处:https://www.programcreek.com/2013/04/why-string-is-immutable-in-java/ 在Java中String类是不可变的(final)。简单来说,一个不可变的类就意味着他的实例是不可修改的,实例的所有信息都是在实例创建的时候被初始化并且不可被修改。不可变类的设计有很多优点。这篇博文主要从内存,同步和数据结构的角度来具体说明这种不可变的概念。 String Pool 的需要String Pool(Str...
一个Slash引发的ClassNotFound血案
公司开发了一款Web应用,开发架构基于Spring Boot,通过jar包的方式发布到服务器并通过命令行运行在内置的Tomcat上。上线将近一年,一切都是那么的风平浪静,然而一切的平静被上周的一次现场算法回访打破。 我们的数据分析人员本意只是想查看一下历史数据来确认算法的表现符合预期,结果发现历史数据查询页面怎么点都没有反应,而其他页面都是正常的,服务重启后一切恢复正常。 问题重现虽然问题通过服务重启后成功解决,但是出错的原因没有定位到也就意味着再次出错的可能性依然存在...
统计二进制1的代码解读
为了适应边缘计算的需求决定投入学习Go语言的浪潮,用了10年的java突然要去接受一个风格完全不一样的语言感觉真是太刺激了。 在看《Go语言圣经》的时候看到里面的一个计算二进制中1的个数的程序popcount,觉得挺有意思就拿出来分享一下吧。 程序代码总计也没几行,可以说很一目了然了: 程序分为两个部分, 初始化构造一个长度为256的数组 主程序PopCount通过8次右移操作分别求低8位的1数量然后相加 那这么明显的结构,这么清晰的代码有啥好解读呢?主要...
一次性能事故的处理和总结
前几天做了一个工况统计的功能,查询最近7天的数据然后分析数据的分布。 从一开始接到这个需求就感觉哪里有点不对劲,上线一周后终于迎来了一次爆发:页面响应慢,多次查询后服务不可用。 分析从线上环境拉取日志后发现两个异常表现, 在进行查询分析的时候,后台会出现超时异常 经历了两到三次的超时异常后,出现了OOM导致系统服务不可用 从日志的表现我们可以大致还原一下事故现场。 12345>> 用户点击查询分析功能,服务器开始吭哧吭哧的查询,由于数据量多导致查...
基于jsplumb的流程图实现
在系统开发中经常需要展示一些流程,这时候需要用到流程图组件,但是在Echarts这些开源的可视化软件中居然没有流程图的支持。这时候我们的解决方案只能是用div和箭头图片自己实现一些简单的连接,如果流程稍微复杂一点,考虑兼顾功能和美观就需要投入大量的人力和精力进行一些造轮子的动作。 jsplumb的出现一定程度上解决了我们的烦恼。 技术介绍jsplumb是一款开源的javascript类库,基于SVG提供页面元素的连接。jsplumb提供了两个分支: Toolkit...
