- 博客(16)
- 资源 (18)
- 收藏
- 关注
原创 Thread Starvation导致测试用例随机失败
问题描述项目迁移到新的平台上后,已有的一个测试用例出现随机的失败,在老的平台上,已经运行了大半年,都是好好的,本地也是运行的好好的,very trick~~~.没有办法,只能撸代码了。我们有一个功能,需要从不同的sever抓取数据,然后把数据聚合到map里面。为了加快响应速度,引入了线程池,代码如下:// 查询后台可用的server列表Set<Server> servers = this.serverService.getServers();Executor executor
2021-01-07 14:33:46 618
原创 SpringBoot基于数据库实现简单的分布式锁
简介分布式锁的方式有很多种,通常方案有:基于数据库 基于redis 基于ZooKeeper本文详细解释基于数据库实现分布式锁,不是所有的项目都需要使用redis zookeeper.原理是理由数据库的唯一索引,大致思想如下:1.根据一个值来获取锁,如果当前不存在锁,那么在数据库插入一条记录,然后进行处理业务,当结束,释放锁(删除锁)。 2.如果存在锁,判断锁是否过期,如果过期则更新锁的有效期,然后继续处理业务,当结束时,释放锁。如果没有过期,那么获取锁失败,退出数据库表是由JPA自
2020-11-25 15:42:20 569
原创 Docker build 中的坑
最近在用docker-compose实现本地环境的快速搭建,总结遇到的坑:Docker 相关命令:1. 删除所有容器 docker rm `docker ps -a -q`2. 删除所有镜像 docker rmi `docker images -q`3.根据容器的状态,删除Exited状态的容器docker rm $(docker ps -qf status=exited)Docker build -第一坑:Docker build 时会使用cache, 在容器化Mysql的过程中.
2020-11-25 14:27:24 1426
原创 Mac 自带日志分析工具Utilities
https://www.howtogeek.com/406592/how-to-use-the-console-on-macos-to-check-log-and-activities/
2020-09-29 11:43:38 4758 1
原创 java if else嵌套代码重构
当有大量的if else 嵌套可以考虑如下方法让代码结构整洁:当有大量的if else 嵌套可以考虑如下方法让代码结构整洁:
2017-11-24 18:30:30 5504
翻译 分布式文件系统的对比
背景:本文对常见的一个分布式文件系统做一个概要的对比,每种文件系统都有其适合的场景。本文只是从设计理念上做一个对比,便于大家快速的定位适合自己的文件系统。架构对比Discussion about architectureIn Lustre, metadata are managed by a single server and stores on its stora
2017-10-30 11:08:33 1856
原创 bitset存储用户和歌曲的购买关系
问题的背景1亿个用户,1000万首歌,当用户第一次购买了这首歌,后续就可以永久免费了,如何记录这个用户和歌的对应关系。方案是很多的,可以记录数据库,放到redis里面等都是可以的,但是随着用户和歌曲关系的增加,数据库或是redis是抗不住的,理论上用户和歌曲的关系有1亿*1000万中关系,要记录所有的关系,数据库或是redis都是不能满足的。下面我提出基于bitset的实现
2017-04-19 15:08:52 482
原创 2016总结---记录不敢平庸的我们
2016猴年最后一个工作日,就要结束了。2016年总的是一句话:在我计划之内,又在我的计划之外。我一直以来都是一个不喜欢记录得人,是害怕记录。一个是最大的悲哀就是记忆力太好,发生的事情很久都不能忘却。2016年经历年初选择的煎熬(去杭州还是待成都),最好还是决定待成都,为了家人和自己。2016年3月加入这个公司,公司做企业协同办公的,期望薪水宽容的环境,各种或大或小的福利,总之感觉不错,一
2017-01-21 16:34:37 441
原创 tomcat8 大量 http-nio 线程阻塞在waiting to lock <0x00000000feb52cf0> (a org.apache.coyote.AbstractProtocol$
最近线上应用发生了OOM , 该应用是部署在tomact8上, 发生OOM后,运维打印了线程dump和内存dump。当时,第一反义就觉得都OOM了,打印的线程dump 和内存dump 应该不可靠,但是也没办法,看下再说。首先,我用MAT 分析内存dump, 大小内存才用973M, 顿时很奇怪,这怎么会内存溢,由此证明,OOM打印的内存dump 无效。接着去分析Thread
2016-11-23 14:54:07 20353 3
原创 Unsolicited response received on idle HTTP channel starting with "[]\n"; err=<nil>
最近在用 golang 开发一个项目, 项目用的是 iris 这个web框架。我们的这个项目是用golang 实现的ADX (AD EXCHNAGE), 说白了就是一个广告的开关,说白了就是移动端请求ADX,ADX 再去请求第三方广告平台(简称DSP),然后把广告信息返回给移动端进行展示。 最近测试服务器报出一个诡异的的日志打印,服务器没处理一个请求都会打印这个日志,日志如下:20
2016-11-23 14:26:31 6870 2
原创 etcd3进行配置管理
最近在用golang 做一个广告竞价系统,里面有一个需求是可以随时暂停某些广告商的广告,这个涉及到运行时动态改变配置。首先配置写死在代码中,是绝对不可能实现这个需求的,每次从数据获取,虽说可以解决这个问题,但是耗时,每次请求都要去查数据库。有人会说引入缓存保存从数据库查询的值,定时去同步数据中的值到缓存。这是一个可行的办法,但是用etcd3的watcher会达到更加高效,优雅。etcd是一个高可用
2016-08-30 17:48:19 3321
原创 基于bitset实现手机号的黑白名单方案
目前很多app都把手机号码作为登录的账户名,本文介绍一种高效的基于手机号,来实现黑白名单的方案。在这里我先用一个例子来说明位图。 假设我有一个0到31的集合,集合里面的元素不重复,比如这样{0,3,1,5,2,19,7,8,31,21,10}。通过位图,我可以将这样的集合表示为11110001101000000001010000000001, 其中1表示该数值为下标的数存
2016-08-30 17:24:32 2165 2
原创 无心插柳柳成荫,有心种花花不开
最近打算换工作,想去寻求更大的空间,可以用一句话来概括2016年初的这段心里历程。那就是无心插柳柳成荫,有心种花化不开。前篇:无心插柳柳成荫,三次拒绝阿里天猫的offer,内存煎熬2015年最后一天上班,接到天猫从杭州打了电话,上次打来我直接回拒不考虑出川。这次想着要换工作了,聊下看哪里不足也是可以的。面试官也是说聊下,就这样聊了一个小时,漫天的谈自己熟悉的技术,从jvm->t
2016-02-03 16:44:11 1793
原创 定位web系统登录慢
今天定位一个电商网站登录慢的问题。据QA反映测试环境,最近出现登录缓慢。QA反映说B2B用户登录站点很慢,B2C用户登录就很快。定位第一步:用jstack 抓线程用B2B用户登录站点,同事服务器上用jstack连续抓取3次thread dump,分析三个thread dump文件,发现是在等待数据库返回数据。第一线程堆栈出现如下信息:我们搜索nid “0x7b86” 从
2015-12-02 16:07:47 1183
原创 F5刷新浏览器不缓存静态资源
最近在优化线上的一个web站点,发现很多CSS和js按F5刷新的时候,不缓存,这个可是一个可以优化的点啊!第一反映就是检查是否配置了缓存,用浏览器查看response header如下:看到这个response header 就更加让人奇怪了,明明配置了缓存,也配置了过期时间,为什么按F5刷新页面没有出现304 Not modify ?然后想到找个缓存了的来对比下,正常缓存的res
2015-11-25 10:11:05 2676
原创 JAVA问题定位大杂汇之java 虚拟机内存占用超出 -Xmx设置
最近一个同事遇到一个诡异的现象,jvm只分配了8G内存,可是通过top查看,该java进程占用了30G物理内存(该机最大内存32G)。该现象导致监控系统报警频繁并出现宕机。同事让我看下这个问题,我一看打消了他的疑惑。这个是一个非堆溢出问题,java进程占用了很多非堆内存,没有释放. NIO是引起该类问题的凶手,Groovy也会导致类似问题出现。非堆内存溢出,用jvm提供工具,是没有办法定位的。
2015-11-23 10:15:21 12241 2
alert的替代
2012-03-16
自动安装JDK和Tomcat的脚本
2012-03-06
Linux应用程序开发详解
2010-09-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人