锁的公平和非公平

发布于:2016-11-20 20:39 作者:losetowin 浏览:3411 分类:Java
简单介绍

在锁的获取上,存在一个公平性和不公平性的问题,所谓的公平是指,在一段时间内,先对锁发起获取请求的一定被先满足。或者可以理解成期望获取锁的线程是一个先进先出的队列,等待时间最久的线程最优先获取到锁。而非公平是指,获取锁的顺序并不是有序的,可以随时插队。就好比都在排队检票,突然来了一个人说他的火车马上就要开车了,想插在你前面检票进站,这时候你就有可能仁慈了,把位置让他插入了。 这时...

阅读全文>>

【设计模式】模板方法模式

发布于:2016-11-2 22:56 作者:losetowin 浏览:1647 分类:Java
定义

定义一个操作中算法的框架,将一些步骤延迟到子类。使得子类可以不改变一个算法的结构,即可重定义该算法的某些步骤。
或者可以描述成:
定义一个算法的骨架,将一些实现步骤延迟到子类。不变的行为放到超类中,去除掉子类中的重复代码。

UML图

QQ20161102-0.png

使用场景

多个子类有公共的方法,并且逻辑基本相同时。
重...

阅读全文>>

nginx超时重试机制及潜在的坑

发布于:2016-9-22 23:49 作者:losetowin 浏览:12646 分类:技术
问题描述:
有一个发送短信的http服务,客户端调用之后,只有一次请求,但是发了三次短信。

分析看:
     1、客户端仅发起了一次请求,
     2、服务端收到了三次请求
     3、三次请求分别落在了三台后端机器上。每台后端机器仅收到一次请求

基本的架构如...

阅读全文>>

标签: nginx 重发

0

慢查询导致整个服务不可用的预防及解决办法

发布于:2016-9-20 20:12 作者:losetowin 浏览:2148 分类:技术
现象:
DB层服务短时间内涌入大量的慢查询,并且查询的数据量比较大(2000w+,查询字段未添加索引)导致服务不可用,出现mysql查询超时现象
3ABA9400-D312-4310-805C-12797889ECF0.png

分析:
数据库操作时误将查询条件的字段的索引去掉了,导致原有的查询效率降低,产生慢查询。

解决:
对相应字段添加索引,慢查询消失,超时现象消失。

反思:
1、突然出现的慢查询导致服务不可用这种事情该如何避免?
 ...

阅读全文>>

关于Java中Daemon线程

发布于:2016-6-22 23:18 作者:losetowin 浏览:1976 分类:Java
  1. 什么是daemon线程?
    也可以称为守护线程,是一种支持性线程,主要用于程序中的后台调度及支持性工作
  2. 主要用在什么地方? 
    比如垃圾回收就算一种守护线程
  3. 需要注意什么?
    1). 因为是守护线程,或者说是支持性线程,就意味着这个线程并不属于程序中不可或缺的一部分。所以当所有的非守护线程(即用户线程)结束之后,程序就会结束,JVM退出,同时也就会杀死所有的非守护线程(可以参见J...

阅读全文>>

标签: java daemon

0

【基础-积累】JAVA获取当前jar包目录

发布于:2016-6-5 22:39 作者:losetowin 浏览:2720 分类:Java

在java开发中,经常需要获取当前jar包所在目录,比如需要获取配置文件,具体代码如下:

代码如下:

 this.getClass().getProtectionDomain().getCodeSource().getLocation().getFile(); 

或者下面这种

 this.getClass().getProtectionDomain()...

阅读全文>>

标签: java jar

0

如何查找占用CPU最高的线程及相关代码

发布于:2016-4-18 23:22 作者:losetowin 浏览:3084 分类:Java

标题其实还可以描述成:如何查找是哪些代码导致的CPU使用率高?

场景:

   某些线上服务,一段时间之内占用CPU特别高,如何确认这是否属于正常情况还是代码中出现了异常导致占用CPU特高呢?如何定位确认是哪个线程导致的?如何确认下是哪部分代码导致的CPU使用率偏高呢?

     当然CPU使用高,并不一定意味着是有问题的,下面的方法...


阅读全文>>

标签: CPU jvm 进程

0

Mysql删除数据后,磁盘空间未释放

发布于:2016-3-13 16:44 作者:losetowin 浏览:5545 分类:技术
起因:
    公司的服务器上添加了硬盘监控,收到报警后,确认是mysql的文件占用空间比较大。于是,确认是哪个表占空间比较大后,删除了部分数据(注:数据库数据为线下分析使用,非线上数据,可以删除),但服务器硬盘空间并没有释放掉,报警仍旧存在。

原因及解决办法:
     使用delete删除的时候,mysql并没有把数据文件删除,而是将数据文...

阅读全文>>

记一次微信公众号accesstoken失效的排查

发布于:2016-1-20 23:11 作者:losetowin 浏览:7376 分类:技术
起因:
     说起起因,其实蛮不好意思的,因为反映了我们的监控做的不够完善。
     我们在做微信公众号开发的时候,将accesstoken值缓存到了redis中,有效时间设置成了30分钟,但是,有一天我们发现,公众号回复消息的时候,不能正常给用户回复内容了。我们查看日志,发现是因为accesstoken不对,导致推送消...

阅读全文>>

标签: redis ttl

0

【小细节】Integer缓存机制(包装类型的缓存机制)

发布于:2015-11-21 21:28 作者:losetowin 浏览:3149 分类:Java
前几天推送过一篇关于Integer比较大小的文章,具体可以查看【细节】Integer细节比较》,有朋友提到说,Integer是有小数据缓存的机制的,那么第一个是否应该是true呢?
回归下第一个:

Integer num1 = new Integer(100);
Integer num2 = new Integer(100);
System.out.println(num1 ...

阅读全文>>

1 2 3 4 5 6 7 8 9 ... »