java
吴敏强
大学毕业有5年从事金融行业软件开发,之后一直在国内最大移动互联网医疗公司工作
展开
-
BIO、NIO、AIO讲解
同步与异步同步与异步的概念, 关注的是 消息通信机制同步是指发出一个请求, 在没有得到结果之前该请求就不返回结果, 请求返回时, 也就得到结果了.比如洗衣服, 把衣服放在洗衣机里, 没有洗好之前我们一直看着, 直到洗好了才拿出来晾晒.异步是指发出一个请求后, 立刻得到了回应, 但没有返回结果. 这时我们可以再处理别的事情(发送其他请求), 所以这种方式需要我们通过状态主动查看是否有了结果, 或者可...转载 2018-03-23 16:13:59 · 200 阅读 · 0 评论 -
logback邮件报警--动态发送不同收件人
logback错误邮件告警,相信大家都会,只需在logback的xml文件上配置一下即可,但是如果想根据不同业务场景,邮件告警发送给不同的业务负责人,那么如何实现呢?首先立马能想到的就是基于javax.mail包实现,再用线程池实现多线程处理,那这样项目中就会额外增加部分代码量,于是乎在思考是否可以依然基于logback实现呢?答案就是:Slf4j MDC机制关于这个机制原理,网上资料...原创 2019-07-23 19:07:11 · 558 阅读 · 0 评论 -
转BIO,NIO和AIO讲的很明白的文章
到底什么是“IO Block”很多人说BIO不好,会“block”,但到底什么是IO的Block呢?考虑下面两种情况:用系统调用read从socket里读取一段数据 用系统调用read从一个磁盘文件读取一段数据到内存如果你的直觉告诉你,这两种都算“Block”,那么很遗憾,你的理解与Linux不同。Linux认为: 对于第一种情况,算作block,因为Linux无法知道网络上对方...转载 2018-10-31 09:53:27 · 3770 阅读 · 1 评论 -
移动端性能监控方案Hertz
性能问题是造成App用户流失的罪魁祸首之一。App的性能问题包括崩溃、网络请求错误或超时、响应速度慢、列表滚动卡顿、流量大、耗电等等。而导致App性能低下的原因有很多,除去设备硬件和软件的外部因素,其中大部分是开发者错误地使用线程、锁、系统函数、编程范式、数据结构等导致的。即便是最有经验的程序员,也很难在开发时就能避免所有导致性能低下的“坑”,因此解决性能问题的关键是在于能不能尽早地发现和定位这些...转载 2018-09-29 14:00:13 · 1172 阅读 · 0 评论 -
Eclipse MarketPlace 打不开,对话框闪退
Eclipse的版本更新到了4.8.0(photon版),点击help-->Eclipse MarketPlace 后无任何反应,无报错,打不开 解决办法help-->install new software 输入http://download.eclipse.org/mpc/photon/ 重新安装一下 epp MarketPlace 原文地址:htt...转载 2018-07-23 15:26:55 · 375 阅读 · 0 评论 -
通过jstack与jmap分析一次线上故障
一、发现问题 下面是线上机器的cpu使用率,可以看到从4月8日开始,随着时间cpu使用率在逐步增高,最终使用率达到100%导致线上服务不可用,后面重启了机器后恢复。二、排查思路 简单分析下可能出问题的地方,分为5个方向:1.系统本身代码问题2.内部下游系统的问题导致的雪崩效应3.上游系统调用量突增4.http请求第三方的问题5.机器本身的问题三、开始排查 1.查看日志,没有发现集中的错误日志,初...转载 2018-06-06 09:23:10 · 25369 阅读 · 6 评论 -
Java并发编程:阻塞队列
在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类似消费者-生产者的模型时,就必须额外地实现同步策略以及线程间唤醒策略,这个实现起来就非常麻烦。但是有了阻塞队列就不一样了,它会对当前线程产生阻塞,比如一个线程从一个空...转载 2018-04-19 10:03:04 · 101 阅读 · 0 评论 -
Java之——使用JMX监控Tomcat
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/515474082016年5月的最后一天,今天我将和大家分享Java中如何使用JMX来监控Tomcat的各种状态。好了,不多说了,我们直接进入主题一、激活Tomcat的JMX远程配置要通过JMX远程监控Tomcat,首先需要激活Tomcat的JMX远程配置。① 修改脚本先修改Tomca...转载 2018-04-17 17:25:17 · 174 阅读 · 0 评论 -
JVM内存结构
所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢?其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。先看一张图,这张图能很清晰的说明JVM内存结构布局。JVM内存结构主要...转载 2018-04-03 11:25:00 · 125 阅读 · 0 评论 -
java 内存模型的理解
之前一直在实习,博客停写了一段时间,现在秋招开始了,所以辞职回来专心看书,同时将每天的收获以博客的形式记录下来。最近在看jvm相关的书籍,下面对面试中问得最多的部分--java 内存模型进行简单总结。本篇博客大概由一下几个部分组成:1、程序在真实物理世界的内存模型2、java的内存模型3、java中的volatile与线程安全4、happen-before原则与加锁。 一、程序在物理世界中是怎样运...转载 2018-04-03 10:35:30 · 147 阅读 · 0 评论 -
Java中的锁原理、锁优化、CAS、AQS
一、为什么要用锁?锁-是为了解决并发操作引起的脏读、数据不一致的问题。二、锁实现的基本原理2.1、volatileJava编程语言允许线程访问共享变量, 为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。volatile在多处理器开发中保证了共享变量的“ 可见性”。可见性的意思是当一个线程修改一个共享变量时...转载 2018-04-03 10:33:45 · 154 阅读 · 0 评论 -
Object中的wait,notify,notifyAll基本使用
Obj.wait(),与Obj.notify()必须要与synchronized(Obj)一起使用,也就是wait,与notify是针对已经获取了Obj锁进行操作,从语法角度来说就是Obj.wait(),Obj.notify必须在synchronized(Obj){…}语句块内。从功能上来说wait就是说线程在获取对象锁后,主动释放对象锁,同时本线程休眠。直到有其它线程调用对象的notify()唤...转载 2018-03-21 20:27:34 · 371 阅读 · 0 评论 -
Java内存管理
接下来一起学习下Java内存管理吧。请注意上图的这个:我们再来复习下进程与线程吧:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其...转载 2018-03-21 16:40:14 · 126 阅读 · 0 评论 -
为什么wait()和notify()属于Object类
关于wait()暂停的是持有锁的对象,所以想调用wait()必须为:对象.wait();notify()唤醒的是等待锁的对象,调用:对象.notify();如下:Object obj = newObject();synchronized(obj){ try{ obj.wait(); }catch(Exception e){} obj.notify(); }...转载 2018-03-21 14:06:45 · 2615 阅读 · 0 评论 -
Java对象的序列化与反序列化
序列化与反序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。一般将一个对象存储至一个储存媒介,例如档案或是记亿体缓冲等。在网络传输过程中,可以是字节或是XML等格式。而字节的或XML编码格式可以还原完全相等的对象。这个相反的过程又称为反序列化。Java对象的序列化与反序列化在Java中,我们可以通过多种方式来创建对象,并且只要对象没有被回收我们都可以复...转载 2018-03-21 11:20:26 · 125 阅读 · 0 评论 -
LinkedHashMap有趣用法
最近在做网关时候,需要对请求url做一个规范验证,当不符合规范时候,自动邮件报警给系统负责人。邮件报警处理方式见https://blog.csdn.net/lengyue309/article/details/97021272。功能做好了,发布到测试环境,过了半天邮箱爆炸了,收到一段的url规范邮件,全是重复的,只要请求一次邮件就发送一次。于是就想如何减少重复发送邮件?用队列?用redis?g...原创 2019-07-24 16:05:57 · 461 阅读 · 0 评论