- 博客(21)
- 收藏
- 关注
原创 java性能调优概览
java性能优化分层:应用层:理解代码逻辑,通过java线程栈定位有问题代码行;数据库层:分析sql,定位死锁;框架层:懂源代码,理解框架机制jvm层:了解gc类型和工作机制,了解jvm参数使用性能诊断工具os层面和java应用层面os诊断:cpu,memory,iocpu诊断:关注点:平均负载,cpu使用率,上下文切换次数命令:topt
2017-10-16 11:11:29 254
原创 linux-command
问题排查常用linux命令tail head:tail -f #监听写入tail -100 #查看末尾100行head -100 #查看开头100行tail -100fgrep:grep keyWord foo.txt #在文件中查找keyWord行, 可以跟多个文件grep keyWord ./ -r #在目录下查找包含keyWord的行,目录中
2017-10-16 11:10:55 906
原创 jdk--ClassLoader
ClassLoader是用来将java字节码加载到java虚拟机中。java.lnag.ClassLoader分为系统提供的classloader和开发人员提供的其中:bootstrap class loader 加载java核心库,不继承classloader,extensions class loader加载java扩展库,systemn class loader 根据classp
2017-10-09 16:30:26 319
原创 jdk-accessController
在很多jdk源码中看到AccessController.doPrivileged,一直不知道这个类有什么作用,这次看common-logging源码时,加载classloader时又看到这个类,遂决定看下这个类的作用。简单来说,允许一个类实例的买吗,通知这个AccessController,不用进行checkPermission检查。复杂来讲要扯到java的安全模型:https://www
2017-10-09 16:29:50 453
原创 jdk--Class
1、getDeclared* 与get* 的区别:以getDeclaredMethods getMethods为例getDeclaredMethods 返回自身类所有公用和私有方法,但不包括继承方法getMethods 返回该类所有公用方法,包括继承类的公用方法getDeclaredAnnotations 返回直接存在于此元素上所有注解,忽略继承的注解getAnnotati
2017-10-09 16:29:11 224
原创 jdk源码--序列化
Serialization 序列化是将java对象转换成字节序列的过程,反序列化就是将这些字节重建成对象的过程起因:分布式对象经常需要将对象从网络的一端传递到另一端。如何序列化一个对象这个就要用到ObjectOutputStream,ObjectInputStream后面看下这个源码。java序列化算法:先输出对象类的元数据递归输出类的超类元数据从最
2017-10-09 16:28:10 345
原创 jdk源码--范型
范型编程通过参数化的方式将数据处理与数据类型解耦,通过对数据类型进行约束来保证数据处理正确性。java范型编译成字节码时,类型会在代码中被擦除,记录在Class文件的attribute域内,而在使用范型处做类型检查和类型转换。擦除规则为保留上界。 擦除后 为Object, 擦除后为A, 擦除后变为Object在定义包含范型的类或者方法时,会使用到范型字母,E或者其他乱七八糟的
2017-10-09 16:27:07 326
原创 jvm--重载重写原理
一个重载的栗子:class Parent ...class Child extends Parent ...class Overload{public static void overload(Parent p) ...public static void overload(Child c) ...public static void main() {Parent p
2017-10-09 16:25:57 636
原创 ibatis源码
https://www.ibm.com/developerworks/cn/java/j-lo-ibatis-principle/http://blog.csdn.net/gaolu/article/details/53415420没办法不得不仔细看看数据库内部的调用情况了。总体来说ibatis内部功能分为两大类吧;1、sqlmapclient,用于处理参数映射,结果映射,
2017-10-09 16:24:50 489
原创 git原理和使用
1、HEAD是什么?git中每提交一次,会产生一个commitId,是一个hash值HEAD代表的是当前版本,也就是最新一次提交的commitId,上一个版本是HEAD^,上上个版本是HEAD^^,上100个版本HEAD~其实HEAD只是一个指针,指向当前版本。在使用reset命令进行版本回退或者前进(可以前进,只要有commitId),只是HEAD指针变化同时更新工作区。
2017-10-09 16:23:27 588
原创 日志学习
commons-logging(interface) + log4j(impl)slf4j(interface) + logback(impl)slf4j + log4jcommons-logging是一个接口包使用日志时,经常这样使用:private final static Log log = LogFactory.getLog(xxx.class);内部代码结构很
2017-10-09 16:21:51 366
原创 maven学习--杂
请直接访问maven网站查询用法1 生成jar包使用默认的mvn archetype:generate即可如何将依赖打包,并生成可执行文件: maven-assembly-plugin 3.0.0
2017-10-09 15:34:51 261
原创 jdk源码分析--Enum
enum可以定义枚举值,我们通过public enum TestEnum{...} 这样的语句定义一个枚举类型。enum是java的一个保留字,我们似乎没有找到enum的实现代码。不过我们可以通过反编译一个自己定义的枚举类型窥其一斑。public enum TestEnum { ONE("one", "1"); private String code; private St
2017-08-12 10:59:42 598
原创 jdk源码分析--了解class文件
class文件结构其实一般来说,如果仅仅是读一些常用类库的源代码的话,是用不到了解字节码、class文件结构等相关内容的,不过有些java内部的实现机制需要经过反编译之后我们才能够知道原理,反编译后的代码去掉了一些表层的语法,更容易看到java底层的实现原理,而要看懂反编译的代码就需要了解一些字节码相关知识。这部分知识在 深入了解java虚拟机 一书中有详细的解释。class文件是以8位(BYTE)
2017-08-12 10:43:32 492
原创 jdk8源码解析系列--前言
jdk8源码解析系列–前言写这篇文章的时候,我也深深的思考过一个问题:我真的有必要研读jdk源代码吗?我知道类库怎么使用,在什么情况下使用不就足够了?假如你吃了一个鸡蛋觉得很好,何必一定要去找下这只蛋的鸡呢?阅读jdk源码,能够让你更深入了解java类库中各种API的实现机理,了解原理后再去分析如何使用可以达到提纲挈领的效果;不懂基本原理的话,在分析排查问题时,也很难弄清楚根本原因出在哪里;jdk类
2017-08-12 10:40:22 1726 1
原创 java动态代理机制
spring有两大思想,一个是ioc,另一个是aop。其中aop的原理就是java的动态代理机制。动态代理相关两个重要的类和接口:类Proxy,接口InvocationHandler1、每一个动态代理类(代理者)都要事先InvocationHandler这个接口,当通过代理者调用一个方法时,这个调用都会变为有InvocationHandler这个接口的invoke方法来调用。该接口也只有这
2016-04-05 14:16:14 237
原创 spring事务管理
关于事务:逻辑上的一组操作,要么全部成功,要么全部失败。特性:原子性:不可分割的工作单位,都发生或都不发生一致性:事务前后数据完整性要保持一致,不会丢数据隔离性:多个用户并发访问数据库,用户之间互不干扰,通过设置事务隔离级别来达到持久性:事务提交后,对数据库数据的改变时永久性的spring事务接口:PlatformTransactionManager 事务管
2016-04-05 14:14:45 410
原创 关于restful风格
restful风格是针对请求url来讲的:简而言之,抛弃queryString,所有的请求都是感觉是在请求一个资源利用http的四种方法,完成crud操作,对应关系为:POST-create, GET-read, PUT-update, DELETE-deletePOST http://hostname/people 创建wcw记录GET http://hostname
2016-04-05 14:13:42 433
原创 spring事务管理
关于事务:逻辑上的一组操作,要么全部成功,要么全部失败。特性:原子性:不可分割的工作单位,都发生或都不发生一致性:事务前后数据完整性要保持一致,不会丢数据隔离性:多个用户并发访问数据库,用户之间互不干扰,通过设置事务隔离级别来达到持久性:事务提交后,对数据库数据的改变时永久性的spring事务接口:PlatformTransactionManager 事务管
2016-04-05 14:10:21 271
原创 结合策略模式和HashMap摆脱if else
在代码中使用过多的if else进行逻辑判断比较影响阅读,更重要的是,如果增加或减少一种逻辑情况就需要修改if else的分支,维护性差。if(type == 1) do1()else if(type == 2) do2()else...if else逻辑两个关键点:1、是什么条件;2、做什么事策略模式是通过接口抽象这一系列动作,提供统一的行为模式。用来解决做什么事。map
2015-06-04 17:46:25 2177
原创 关于web请求中的编码解码问题
以下编解码都是针对内容包含中文的情况,否则也不需要编解码 :)1、URL编解码url例子:http://localhost:80/contextPath/servletPath/pathInfo?queryStringURL中文主要会出现在pathInfo和queryString中,这两部分的编解码是不同的。a、pathInfo:编码--浏览器端,默认utf-8,IE在选项
2015-04-28 16:15:20 1135
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人