6 骚年编程去

尚未进行身份认证

暂无相关描述

等级
博文 44
排名 3w+

深入分析JDBC超时机制

前言上周在线上出现出现报警,ID号码一直无法获取,但是只有这一台机器报警,所以第一时间先在服务治理平台上禁用掉这台机器保证服务正常。停掉机器后要排查问题,思考分析步骤如下:通过监控发现只有一个key的ID调用发生下降(第一张),这台机器上的其他key没有任何问题,从数据库更新号段正常。是不是数据库死锁了?这个key在其他机器更新key是正常的,排除数据库的问题,那么就是这台机器的问题查看log

2017-07-22 18:28:45

一次堆外OOM问题排查

线上服务有一台机器访问不通(一个管理平台),在公司的服务治理平台上查看服务的状况是正常的,说明进程还在。进程并没有完全crash掉。去线上查看机器日志,发现了大量

2017-07-22 17:35:32

Java JDK代理、CGLIB、AspectJ代理分析比较

前言什么是代理,在DesignpatternsInjava这个本书中是这样描述的,简单的说就是为某个对象提供一个代理,以控制对这个对象的访问。在不修改源代码的基础上做方法增强,代理是一种设计模式,又简单的分为两种。静态代理:代理类和委托类在代码运行前关系就确定了,也就是说在代理类的代码一开始就已经存在了。动态代理:动态代理类的字节码在程序运行时的时候生成。静态代理

2017-03-31 20:19:36

线程的中断(interrupt)机制

前言在本博文的一篇如何正确的关闭一个线程一文中讲解了如何利用interrupt机制来中断一个线程,这篇文章当时确实花了一些精力的总结,不过都是15年末的事情了,现在是2017年2月份,经过一年的时间,决定重新写一篇完善的关于线程中断的文章。什么时候需要关闭一个线程?下面简单的举例情况:比如我们会启动多个线程做同一件事,比如抢12306的火车票,我们可能开启多个线程从

2017-02-19 23:50:23

MySQL事务隔离级别和Spring事务关系介绍

事务隔离级别介绍隔离级别脏读不可重复读幻读未提交读(Readuncommitted)可能可能可能已提交读(Readcommitted)不可能可能可能可重复读(Repeatableread)不可能不可能可能可

2017-01-15 17:55:49

ThreadLocal父子线程传递实现方案

前言介绍InheritableThreadLocal之前,假设对ThreadLocal已经有了一定的理解,比如基本概念,原理,如果没有,可以参考:ThreadLocal源码分析解密.在讲解之前我们先列举有关ThreadLocal的几个关键点每一个Thread线程都有属于自己的ThreadLocalMap,里面有一个弱引用的Entry(ThreadLocal,Object),

2016-09-30 17:06:11

在SpingMVC的Interceptor中如何得到被调用方法名

背景为什么要在interceptor层获得方法名称呢?在分布式链路系统中我们需要在MVC框架层埋点,统计方法调用的耗时、trace信息等,目前公司内部没有统一的MVC框架,但是大多数都是使用的SpringMVC.所以我们在Interceptor这一层埋点就ok。在这里可以统计到方法调用完的耗时信息,同时也可以得到用户自定义的埋点信息。在这个过程中踩了一些坑,也尝试了各种方法Inte

2016-09-01 00:57:11

ThreadLocal源码分析解密

什么是ThreadLocal我们来看看作者DougLea是怎么说的,下面是jdk7.x里面ThreadLocal注释Thisclassprovidesthread-localvariables.Thesevariablesdifferfromtheirnormalcounterpartsinthateachthreadthataccessesone(vi

2016-03-05 02:07:05

ThreadPoolExecutor线程池解析与BlockingQueue的三种实现

目的主要介绍ThreadPoolExecutor的用法,和较浅显的认识,场景的使用方案等等,比较忙碌,如果有错误还请大家指出ThreadPoolExecutor介绍ThreadPoolExecutor的完整构造方法的签名如下ThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,TimeUnitu

2016-02-01 16:31:13

关于序列化协议的思考

思考最近在设计一个RPC框架,需要处理序列化的问题。有很多种序列化协议可以选择,比如Java原生的序列化协议,Protobuf,Thrift,Hessian,Kryo等等,这里说的序列化协议专指Java的基于二进制的协议,不是基于XML,JSON这种格式的协议。在实际开发中考虑了很多点,也遇到一些问题,拿出来说说。抛开这些协议不说,结合实际的需求,一个理想的序列化协议至少考虑4个方面:

2016-01-30 15:20:56

浅析Google Guava中concurrent下的Monitor和Future特性

关于MonitorAsynchronizationabstractionsupportingwaitingonarbitrarybooleanconditionsMonitor类是作为ReentrantLock的一个替代,代码中使用Monitor比使用ReentrantLock更不易出错,可读性也更强,并且也没有显著的性能损失,使用Monitor甚至有潜在的性能得到优化。下

2016-01-30 01:57:24

高性能 IO 模型浅析

原文出处 http://zhangsr.cn/i/1281 (对作者表示感谢)服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(BlockingIO):即传统的IO模型。(2)同步非阻塞IO(Non-blockingIO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这

2015-05-24 19:27:06

Netty系列之Netty线程模型

1.背景1.1.Java线程模型的演进1.1.1.单线程时间回到十几年前,那时主流的CPU都还是单核(除了商用高性能的小机),CPU的核心频率是机器最重要的指标之一。在Java领域当时比较流行的是单线程编程,对于CPU密集型的应用程序而言,频繁的通过多线程进行协作和抢占时间片反而会降低性能。1.1.2.多线程随着硬件性能的提升,CPU的核数越

2015-05-23 01:58:00

大学一路走来总结(技术)

关于我的学习方法和面试经验的分享下面是我写给我现在带的学弟在学习路线上的一些建议,大家可以参考一下!希望能够帮助到大家,有写得不太合适的地方,还请大家指正!一、基础主要看《java核心技术:卷一》的重点章节掌握java常用技术,io、多线程、反射、常用集合框架数据结构看一遍,作用至少要清楚。如hash冲突解决办法,常用排序算法的应用场景和空间/时间复杂度等数据库,能看懂ER关系,熟悉

2015-04-26 12:45:08

去哪儿实习面经(拿到offer)

去哪儿面试经验,分享给大家同上一篇,分享给大家咯————去哪儿面试——————一面:LRU缓存算法(讲了一下LRU的淘汰机制,还有一个最近最少使用次数算法)分库分表concurrentHashMap原理(结合这个源码的3个特点:1、分离锁2、volatile可见性3、final的不变性影响的链表。和在读的时候如何保证的并发操作)gc算法,GCroot,哪些可以作为GCroo

2015-04-13 14:25:57

alibaba实习面试总结(拿到offer)

3月份的时候拿到阿里的offer,今天才想起来应该把分享给网上的兄弟们,在网络上学习到很多东西!也应该做出一点贡献了----------------阿里面试-------------------------一面:IO模型有哪些?(linux下的io模型,当时没答上,后来下去查了一下,阻塞,非阻塞,io复用,驱动,同步,异步等)进程线程的区别不同操作系统实现进程怎么样

2015-04-13 14:13:54

博弈论-美女的硬币

一位陌生美女主动过来和你搭讪,并要求和你一起玩个游戏。美女提议:“让我们各自亮出硬币的一面,或正或反。如果我们都是正面,那么我给你3元,如果我们都是反面,我给你1元,剩下的情况你给我2元就可以了。”听起来不错的提议,也很公平。如果我是男性,无论如何我是要玩的,不过经济学考虑就是另外一回事了,这个游戏真的够公平吗?假设我们出正面的概率是x,反面的概率是1-x。为了使利益最大化,应该在

2015-04-12 13:39:40

青蛙跳台阶问题

题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。我的思路:最开始我的思路是把这个看成是一个数学问题,n=i*1+k*2先把所有可能满足这个公式的i和k求出来。然后在对i和k做排列组合。很明显i的范围应该是0publicintJumpFloor(inttarget){ intstep=0; for(int

2015-04-07 21:59:11

探索 ConcurrentHashMap 高并发性的实现机制

简介ConcurrentHashMap是util.concurrent包的重要成员。本文将结合Java内存模型,分析JDK源代码,探索ConcurrentHashMap高并发的具体实现机制。由于ConcurrentHashMap的源代码实现依赖于Java内存模型,所以阅读本文需要读者了解Java内存模型。同时,ConcurrentHashMap的源代

2015-02-25 14:14:25

分析LinkedHashMap源码的LRU实现

一、前言前段时间研究了memcached,而且操作系统的课程也刚刚完成,在两个里面多次出现LRU(lastrecentlyused最近最少使用)算法,虽然思想很简单。但是还是值得我们研究,无意间在看LinkedHashMap的源码的时候看见貌似这个类里面有默认的LRU实现。我们现在就来分析一下他的源代码/***Returnstrueifthismapshoul

2015-02-04 17:05:27
奖章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!