随笔分类 - Java
摘要:idea查看类的字节码信息 第一种方式: IntelliJ IDEA -- Preferences Plugins 安装插件: jclassLib Bytecode viewer 第二种方式: IntelliJ IDEA -- Preferences Tools External Tools pro
阅读全文
摘要:linux 系统调用列表 linux中的系统调用+jvm 笔记: 从BIO->NIO->select->poll->epoll,是一个逐步改进的过程,其驱动力就是来源于尽可能减少系统调用。因为无论是创建线程,还是传递数据,都需要进行系统调用。 字符串常量池StringTable简介(反编译分析) 笔
阅读全文
摘要:java泛型信息保存在哪 jvm Java泛型确实通过类型擦除来实现,所以字节码中没有类型信息。 例如,让我们看看两个声明List字段的类,一个是泛型的,另一个是非泛型的: class NonGeneric { List list; } 和, class Generic { List<Strin
阅读全文
摘要:四大类内部类: 成员内部类 局部内部类 匿名内部类 静态内部类 1、关于final 局部、匿名内部类访问外部局部变量(方法中的变量)是否是final。 (为什么不谈成员内部类访问外部类的成员变量是否需要时final呢?因为成员内部类访问直接外部类的变量肯定都是外部类的成员变量,成员变量只要外部内的引
阅读全文
摘要:Java虚拟机的静态常量池和运行时常量池 静态)常量池:用于存放编译器生成的各种字面量和符号引用(符号引用区别于直接引用,后者在class字节码文件被虚拟机解析之后,符号引用将被替换为直接引用)。 运行时常量池:(静态)常量池中的内容在类加载(这里的类加载指class字节码文件经过加载连接初始化的过
阅读全文
摘要:一、预备过程: 1.源文件 SJQ.java 1 package com.soecode.lyf.java; 2 3 public class SJQ { 4 public static final int paraA=10; 5 private static final String paraSt
阅读全文
摘要:原因:Handler在Android中用于消息的发送与异步处理,常常在Activity中作为一个匿名内部类来定义,此时Handler会 隐式地持有一个外部类对象(通常是一个Activity)的引用。当Activity已经被用户关闭时,由于Handler持有Activity的引用造成Activity无
阅读全文
摘要:list删除某个元素时,该元素后面的元素往前移,将要删除的元素替换掉。所以需要在删除元素的时候,游标向前移动一位。 iterator迭代器中删除元素,源码中做了处理,游标自动前移一位。 foreach循环删除元素, //foreach也是使用迭代器(iterator)进行循环,相当于调用迭代器的ne
阅读全文
摘要:1.定义一个泛型类 class Box<T> { private T data; public Box() { } public Box(T data) { this.data = data; } public T getData() { return data; } } 2.测试,返回的class
阅读全文
摘要:原文:CGLIB介绍与原理(通过继承的动态代理) 一、什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包。它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充。通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接口或者为了更好的性能,CGLIB是一个好的选择。
阅读全文
摘要:访问控制 修饰符当前类同一包内子孙类(同一包)子孙类(不同包)其他包 public Y Y Y Y Y protected Y Y Y Y/N(说明) N default Y Y Y N N private Y N N N N 父类A,K是类A的一个成员变量子类B 不在同一包,子类C 在同一包 子类
阅读全文
摘要:原始的Dao开发方法1.UserDao 定义接口2.UserDaoImpl 构造参数初始化属性SqlSessionFactory,方法的局部变量通过SqlSessionFactory生成SqlSession3.UserDaoImplTest 创建一个SqlSessionFactory对象,作为参数创建一个UserDaoImpl对象UserDao userDao = new UserDaoImpl...
阅读全文
摘要:1.单一职责原则 每一个类负责一个职责(一个类只有一个方法) 2.里氏替换原则 所有引用基类的地方都能透明的使用其子类的对象。 问题来了: 比如原来 class A{ fun();//完成P1功能 } 现在需要添加新功能 class B extends A{//A的子类B实现了fun的功能) fun
阅读全文