前言:公司有一个资产统计系统,使用频率很低,但是要求在使用时查询速度快,因此想到做一些缓存放在内存中,在长时间没有使用,就持久化到磁盘中,并对垃圾进行回收,归还物理内存给操作系统,从而节省宝贵资源给其它业务系统。当我做好缓存时,却发现了一个棘手的问题,通过程序释放资源并通知GC回收资源后,堆内存的已用内存减少了,空闲内存增加了,可是进程占用系统内存却没有减少。查阅了很多资料,也尝试过很多次,都没有完美解决问题。直到后来看到一段评论谈及G1垃圾回收器,才恍然大悟。 接下来...
背景:在项目开发中,会有调用第三方接口的场景。当开发时,对方不愿意提供测试服务器给我们调用,或者有的接口会按调用次数进行计费。当联调时,第三方的测试服务器也可能会出现不稳定,如果他们的服务挂了,我们就一直等着服务恢复,那么这就相当影响效率了。如果我们在开发时,就定义一个挡板或者mock服务,在发起调用时,不直接调到第三方接口,而是调到我们自己的挡板代码或者mock服务,这样就可以避免这些问题了。 优势: 挡板代码,不需要侵入业务代码,可以根据入参做一些动态结果返回...
背景:有一次在生产环境,突然出现了很多笔还款单被挂起,后来排查原因,发现是内部系统调用时出现了Hystrix调用异常。在开发过程中,因为核心线程数设置的比较大,没有出现这种异常。放到了测试环境,偶尔有出现这种情况,后来在网上查找解决方案,网上的方案是调整maxQueueSize属性就好了,当时调整了一下,确实有所改善。可没想到在生产环境跑了一段时间后却又出现这种了情况,此时我第一想法就是去查看maxQueueSize属性,可是maxQueueSize属性是设置值了。当时...
前言: 项目做前后端分离时,我们会经常提供Json数据给前端,如果有一个统一的Json格式返回工具类,那么将大大提高开发效率和减低沟通成本。 此Json响应工具类,支持带分页信息,支持泛型,支持HttpStatus标准返回码 效果预览: 步入正题:1. Resp工具类123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354...
前言: 在开发当中,经常会验证用户登录状态和获取用户信息。如果每次都手动调用用户信息查询接口,会非常的繁琐,而且代码冗余。为了提高开发效率,因此就有了今天这篇文章。 思路: 用户请求我们的方法会携带一个Token,通过Filter过滤器将会员信息查出来并放到request请求参数中。接着在Cotroller层的请求方法中接收一个MemberDeatails类型的参数,就能直接获得会员信息了。 详细步骤:1. Gradle引入需要的Jar包:1compile &quo...
1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 例如: 1234upstream bakend { server 192.168.0.14; server 192.168.0.15; } 2、weight权重指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 例如: 1234upstream bakend { server 192....
根据top命令,发现PID为28555的Java进程占用CPU高达200%,出现故障。 通过查看进程1ps aux | grep PID 可以进一步确定是tomcat进程出现了问题。 但是,怎么定位到具体线程或者代码呢? 首先显示线程列表:1ps -mp pid -o THREAD,tid,time 找到了耗时最高的线程28802,占用CPU时间快两个小时了! 其次将需要的线程ID转换为16进制格式:1printf "%x\n" tid 最后打印...
开启80端口:1iptables -I INPUT -p tcp --dport 80 -j ACCEPT…
上传以下的包到/tmp/目录下:1234567891011jdk-8u121-linux-x64.tar.gzapache-tomcat-7.0.75.tar.gzapache-maven-3.5.0-bin.tar.gzMySQL-client-5.5.52-1.el6.x86_64.rpmMySQL-devel-5.5.52-1.el6.x86_64.rpmMySQL-server-5.5.52-1.el6.x86_64.rpmMySQL-shared-5.5.52...
简介YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。 语法规则 大小写敏感 使用缩进表示层级关系 缩进时不允许使用Tab键,只允许使用空格。 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可 :冒号后面必须有空格 #表示注释,从这个字符一直到行尾,都会被解析器忽略。 YAML支持三种数据结构: 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary) 数组:一组按次序排列的值,又称为...