11 MikanMu

尚未进行身份认证

码农

等级
TA的排名 4k+

再见 2016

一大清早被应用报警短信吵醒,虽然自己不是应用的owner,但还是想看看究竟发生了什么,于是起床上线查看应用情况,折腾了两三个小时。发现现在应用当中潜在的问题其实还是蛮多的,LOG、CACHE、GC,所以一时兴起,重构代码,折腾到天黑。今天跟一个公众号的作者互动了一下,人虽然在美国,而且还有时差问题,对读者却是很认真,这样的态度很是感动。其实一进12月,各种总结就开始出来了,尤其是最近一周。

2016-12-31 22:46:46

tomcat如何正确的开启远程调试功能

在日常开发中,有时需要对远程服务器上的应用进行远程调试,对于tomcat,要进行远程调试其实很简单,只需要在启动tomcat时开启jpda服务即可。什么是JPDA呢?JPDA(Java Platform Debugger Architecture) 是 Java 平台调试体系结构的缩写,通过 JPDA 提供的 API,开发人员可以方便灵活的搭建 Java 调试应用程序。JPDA 主要由三个

2015-10-17 23:25:35

IDEA 14在MAC下如何对tomcat进行远程调试

在开发过程中,有时需要进行远程调试,使用IDEA如何进行远程调试呢,其实很简单,首先tomcat需要开启远程调试,如何开启呢?参考另一篇文章。然后在IDEA中设置如下:1、打开配置页面2、添加远程调试配置3、进行参数配置其中Host为远程服务器的地址,当然如果host是localhost,表示是本机的tomcat,Port为远程debug的端口,注意

2015-10-15 23:19:30

MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换

在看高性能MySQL第3版(4.1.7节)时,作者建议当存储IPv4地址时,应该使用32位的无符号整数(UNSIGNEDINT)来存储IP地址,而不是使用字符串。但是没有给出具体原因。为了搞清楚这个原因,查了一些资料,记录下来。相对字符串存储,使用无符号整数来存储有如下的好处:节省空间,不管是数据存储空间,还是索引存储空间便于使用范围查询(BETWEEN...AND),且效率更高

2015-09-22 13:49:47

我的阅读清单

学习是一个长期的旅程,在此记录一下我的阅读清单。在读的书重构 改善既有代码的设计设计模式 可复用面向对象软件的基础高性能MySQL第3版已读的书Effective Java第1版Effective Java第2版Java核心技术I-基础知识 第8版Java核心技术II-高级特性 第8版java编程思想第3版java编程思想第4版深入理解Java虚拟机:JVM高级

2015-09-15 21:49:10

细说JDK动态代理的实现原理

关于JDK的动态代理,最为人熟知的可能要数SpringAOP的实现,默认情况下,SpringAOP的实现对于接口来说就是使用的JDK的动态代理来实现的,而对于类的代理使用CGLIB来实现。那么,什么是JDK的动态代理呢?JDK的动态代理,就是在程序运行的过程中,根据被代理的接口来动态生成代理类的class文件,并加载运行的过程。JDK从1.3开始支持动态代理。那么JDK是如何生成动态代理的

2015-09-15 21:12:35

细说java.util.HashMap

HashMap是我们最常用的类之一,它实现了hash算法,虽然使用很简单,但是其实现有很多值得研究的地方。HashMap存储的是key-value形式的键值对,这个键值对在实现中使用一个静态内部类Entry来表示,它存储了key、value、hash值、以及在hash冲突时链表中下一个元素的引用。HashMap底层实现使用了一个数组来存储元素。它的初始容量默认是16,而且必须容量必须是2的

2015-09-01 00:02:24

java中的计数信号量(Counting Semaphore)

信号量(Semaphore)又称为信号量、旗语,它以一个整数变数,提供信号,以确保在并行计算环境中,不同进程在访问共享资源时,不会发生冲突。是一种不需要使用忙碌等待(busy waiting)的一种方法。信号量的概念是由荷兰计算机科学家艾兹格·迪杰斯特拉(Edsger W. Dijkstra)发明的,广泛的应用于不同的操作系统中。在系统中,给予每一个进程一个信号量,代表每个进程目前的状态,未得

2015-08-29 19:38:58

关于@Override在1.5和1.6之后的区别

@Override注解是作用于源代码的注解,用于表明注解的方法重写了父类型的方法,但是这个注解在1.5和1.6及以后是区别的。1.5中,只能用于在继承某个类时,重写父类中的方法,而在实现一个接口中的方法时,是不能使用该注解的,从1.6开始,才支持实现父接口的方法使用该注解。但是在@Override源代码上的注解或文档中,1.6没有对这个变化进行说明,到1.7才进行了说明。下面是1.5和1.6的

2015-08-29 15:53:38

java枚举类型的实现原理

Java从JDK1.5开始支持枚举,也就是说,Java一开始是不支持枚举的,就像泛型一样,都是JDK1.5才加入的新特性。通常一个特性如果在一开始没有提供,在语言发展后期才添加,会遇到一个问题,就是向后兼容性的问题。像Java在1.5中引入的很多特性,为了向后兼容,编译器会帮我们写的源代码做很多事情,比如泛型为什么会擦除类型,为什么会生成桥接方法,foreach迭代,自动装箱/拆箱等,这有个术语叫

2015-08-29 14:47:09

细说java.util.Timer

Timer是用于管理在后台执行的延迟任务或周期性任务,其中的任务使用java.util.TimerTask表示。任务的执行方式有两种:按固定速率执行:即scheduleAtFixedRate的两个重载方法按固定延迟执行:即schedule的4个重载方法具体差别会在后面详细说明。一、使用方式Timer的具体使用方法非常简单,比如: Timer timer = n

2015-08-29 00:59:38

一次内存溢出的填坑经历

在项目运行过程中,可能会出现内存溢出,内存溢出的原因多种多样,而在内存溢出后,我们如何查找和分析内存溢出的原因呢?这里来说一说我遇到的次遇到的内存溢出经历。大致情况是这样的:应用在启动后,过一段时间(这个时间不确定),内存忽然爆满,然后频繁的YGC,一会过后,老年代爆满,然后是频繁的FGC,最终撑爆内存,抛出OOM。重启应用后,还是这个过程。1、查看java进程的内存使用情况和GC情况

2015-08-28 16:51:22

spring-mvc 3.2.12及以后<mvc:resource>配置处理的变化

在web应用中,对于静态资源,一般不会经常变化,所以通常会使用缓存,以提高效率。在spring-mvc中提供了几种方式来处理静态资源,其中一种是通过配置资源的位置和映射的路径等信息。但是在3.2.12(包含3.2.12)以后,在配置的处理上有变化,这就是location属性不能使用通配符模式,比如这种方式,在3.2.12以前可以正常工作,但是在3.2.12及以后,不能正常工作,如请求/res/jq

2015-08-18 13:55:47

java中什么是bridge method(桥接方法)

在看spring-mvc的源码的时候,在解析handler方法时,有关于获取桥接方法代码,不明白什么是桥接方法,经过查找资料,终于理解了什么是桥接方法。桥接方法是JDK1.5引入泛型后,为了使Java的泛型方法生成的字节码和1.5版本前的字节码相兼容,由编译器自动生成的方法。我们可以通过Method.isBridge()方法来判断一个方法是否是桥接方法,在字节码中桥接方法会标记

2015-08-07 17:34:37

java如何获取方法参数名

在java中,可以通过反射获取到类、字段、方法签名等相关的信息,像方法名、返回值类型、参数类型、泛型类型参数等,但是不能够获取方法的参数名。在实际开发场景中,有时需要根据方法的参数名做一些操作,比如像spring-mvc中,@RequestParam、@PathVariable注解,如果不指定相应的value属性,默认就是使用方法的参数名做为HTTP请求的参数名,它是怎么做到的呢?在这样情况下

2015-08-05 11:33:32

解决mac使用svn: E170000: Unrecognized URL scheme for https://xxx错误

OS X版本:10.10.310.10.3自带了svn,但是版本是1.7,如果项目是使用1.8的svn,就必须升级到1.8,才能够正常使用。当前svn的最新版本是1.8.13。那么首先删除旧版本的svn,先查看svn安装到哪个目录:localhost:~ mikan$ which svn/usr/local/bin/svn删除旧版本的svn:localhost:~ mikan

2015-06-01 21:49:06

JSON-RPC 2.0规范 翻译 中文版

JSON-RPC 2.0规范 起源日期:    2010-03-26(基于2009-05-24的版本)修正:    2013-01-04作者:    JSON-RPC 工作组 1 概述JSON-RPC是一个无状态的、轻量级的远程过程调用(RPC)协议。本规范主要围绕它的处理方式定义了几个数据结构和规则。这个概念可用于在同一进程中、套接字或HTTP之间、或其他很多

2014-10-01 14:04:22

JPA实体继承实体的映射策略

注:这里所说的实体指的是@Entity注解的类继承映射使用@Inheritance来注解,它的strategy属性的取值由枚举InheritanceType来定义(包括SINGLE_TABLE、TABLE_PER_CLASS、JOINED,分别对应三种继承策略)。@Inheritance注解只能作用于继承结构的超类上。如果不指定继承策略,默认使用SINGLE_TABLE。JPA提供了三

2014-07-20 21:11:11

JPA实体继承的映射

JPA中对象关系映射通常情况下是一个实体对应一个表,两个实体之间没有任何关系。如果两个实体之间是继承关系,那么该如何映射呢?JPA中的实体支持继承映射,多态关联,多态查询。抽象类和具体的类都可以是实体,且都可以使用@Entity来注解,映射成实体,并查询封装成一个实体。实体类可以继承非实体类,非实体类也可以继承实体类。JPA的继承映射有如下几种情况:一、实体类继承抽象(具体

2014-07-20 17:55:55

使用java进行文件编码转换

在开发过程中,可能会遇到文件编码的转换,虽然说开发工具eclipse可以转换编码,但是有的情况却很不方便。比如,原来文件本身的编码是GBK,现在要转换成UTF-8,如果直接在eclipse中把文件编码修改成UTF-8,恭喜你,是乱码,因为不能直接从GBK到UTF-8进行转换,这时就需要我们手动的来转换编码。下面是一个文件编码转换的工具类。package com.mikan.stuff;im

2014-07-17 22:56:11

查看更多

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