object

mybatis源码分析(3)——SqlSessionManager类

别等时光非礼了梦想. 提交于 2020-02-05 02:20:39
从上图可能看出,在 mybatis 中, SqlSession 的实现类有两个,其中 SqlSessionManager 类不但实现了 SqlSession 接口,同时也实现了 SqlSessionFactory 接口。那么 SqlSessionManager 类究竟有何作用 ? 由于源码中缺少注释,所以从 mybatis 目前的提供官方文档来看,似乎该类已被弃用,其功能被 DefaultSqlSession 类和 DefaultSqlSessionFactory 类所代替。只是该类的部分代码对我们理解 mybatis 的一些底层机制还具有一定的参考价值,例如: SqlSessionManager的下面的构造方法,会产生一个SqlSession 的一个代理对象: private SqlSessionManager(SqlSessionFactory sqlSessionFactory) { this.sqlSessionFactory = sqlSessionFactory; this.sqlSessionProxy = (SqlSession) Proxy.newProxyInstance( SqlSessionFactory.class.getClassLoader(), new Class[]{SqlSession.class}, new

java深复制与浅复制

一世执手 提交于 2020-02-05 00:13:34
一. 浅复制 当一个类需要有拷贝的功能,需实现Cloneable接口,但该接口缺少一个clone方法,其主要功能是为类提供一个功能合适的公共clone()方法,使用时需重写Object类的clone()方法。 通过这种方法实现的复制为浅复制,即复制得到的对象与原对象指向同一个内存地址,修改其中一个对象的属性,其他对象会随之发生改变。 例如: public class Student implements Cloneable { private int age; private Teacher teacher; public Student(int age, Teacher teacher) { this.age = age; this.teacher = teacher; } public Student() { } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public Teacher getTeacher() { return teacher; } public void setTeacher(Teacher teacher) { this.teacher = teacher; } @Override public String toString() {

Android之ViewPager

假装没事ソ 提交于 2020-02-04 22:16:25
一、activity_main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <androidx.viewpager.widget.ViewPager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" /> </RelativeLayout> 二、新建三个layout,用于滑动切换的视图 1、view_first.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout

Interface implements overriding its own methods to create an object of itself as DEFAULT

白昼怎懂夜的黑 提交于 2020-02-04 20:46:09
问题 I've read many threads with questions which looks like questions I am going to ask. However, I can not find satisfactory answers which could be applied to my questions, since there are more than one fold in my questions, seperated in three aspects. This is the interface SubtitleDecoderFactory in https://github.com/google/ExoPlayer/blob/release-v2/library/core/src/main/java/com/google/android/exoplayer2/text/SubtitleDecoderFactory.java As I understand, an interace is abstraction and can not

JS中typeof的用法

馋奶兔 提交于 2020-02-04 15:58:23
js是一门弱语言,它在声明变量时无需确定变量的类型,js在运行时会自动判断。那么如何判断一个变量的类型呢,js提供了typeof运算符,用来检测一个变量的类型。 1. typeof的语法 typeof是一个运算符,有2种使用方式:typeof(表达式)和typeof 变量名,第一种是对表达式做运算,第二种是对变量做运算。 2. typeof的返回值 typeof运算符的返回类型为字符串,值包括如下几种: 1. 'undefined' --未定义的变量或值 2. 'boolean' --布尔类型的变量或值 3. 'string' --字符串类型的变量或值 4. 'number' --数字类型的变量或值 5. 'object' --对象类型的变量或值,或者null(这个是js历史遗留问题,将null作为object类型处理) 6. 'function' --函数类型的变量或值 3. 简单的示例 console.log(typeof a); //'undefined' console.log(typeof(true)); //'boolean' console.log(typeof '123'); //'string' console.log(typeof 123); //'number' console.log(typeof NaN); //'number' console.log

JavaScript从原型到原型链

孤者浪人 提交于 2020-02-04 14:13:43
JavaScript从原型到原型链 构造函数创建对象 我们先使用构造函数创建一个对象: function Person() { } var person = new Person(); person.name = 'Kevin'; console.log(person.name) // Kevin 在这个例子中,Person 就是一个构造函数,我们使用 new 创建了一个实例对象 person。 prototype 每个函数都有一个 prototype 属性,prototype是函数才会有的属性,比如: function Person() { } Person.prototype.name = 'Kevin'; var person1 = new Person(); var person2 = new Person(); console.log(person1.name) // Kevin console.log(person2.name) // Kevin 那这个函数的 prototype 属性到底指向的是什么呢?是这个函数的原型吗? 函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的 实例 的原型,也就是这个例子中的 person1 和 person2 的原型。 那什么是原型呢? 每一个JavaScript对象(null除外

python中的新式类和旧式类

三世轮回 提交于 2020-02-04 14:12:20
python中的新式类和旧式类 2018-05-15 python2中既有新式类又有旧式类 默认是经典类,只有显式继承object才是新式类 python3中只有新式类 默认是新式类,不必显式继承ojbect 新式类的MRO(method resolution order 基类搜索顺序)算法采用C3算法广度优先搜索,而旧式类的MRO算法是采用深度优先搜索 新式类相同父类只执行一次构造函数,经典类重复执行多次。 新式类都从object继承,经典类不需要 以下是一个例子: class A: pass class B: pass class C(B): pass class D(C,A): pass 执行顺序为:D->C->B,->A class A(object): pass class B(object): pass class C(object): pass class D(A,B,C): pass 执行顺序为: D->A->B->C->Object 来源: https://www.cnblogs.com/aaron2932/p/aaron.html

Java 对象序列化

守給你的承諾、 提交于 2020-02-04 12:45:02
文章目录 什么是序列化? 举例:(定义一个可以被序列化的类) 序列化与反序列化 举例:(实现序列化与反序列化) transient 关键字 举例:(transient 关键字的使用) 什么时候会使用到 transient 关键字? 几乎只要是 Java 开发就一定会存在有序列化的概念,而正是因为序列化的概念逐步发展,慢慢地也有了更多 的序列化标准 什么是序列化? 所谓的对象序列化指的是将内存中保存的对象以二进制数据流的形式进行处理,可以实现对象的保存或者是网络传输 然而并不是所有的对象都可以被序列化的,在 Java 里面有一个强制性的要求:如果要序列化的对象,那么对象所在的类一定要实现 java.io.Serializable 父接口,作为序列化的标记,这个接口并没有任何的方法,为什么?因为它描述的是一种类的能力 举例:(定义一个可以被序列化的类) class Person implements Serializable { // Person 类可以被序列化 private String name ; private int age ; public Person ( String name , int age ) { this . name = name ; this . age = age ; } // 省略 setter getter @Override public

并发编程之Unsafe魔法类详解

拈花ヽ惹草 提交于 2020-02-04 01:02:38
1. unsafe类详解 Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风险。 在程序中过度、不正确使用Unsafe类会使得程序出错的概率变大,使得Java这种安全的语言变得不再“安全”,因此对Unsafe的使用一定要慎重。Unsafe类为一单例实现,提供静态方法getUnsafe获取Unsafe实例,当且仅当调用getUnsafe方法的类为引导类加载器所加载时才合法,否则抛出SecurityException异常。 2.如何获取Unsafe实例? 1、从getUnsafe方法的使用限制条件出发,通过Java命令行命令-Xbootclasspath/a把调用Unsafe相关方法的类A所在jar包路径追加到默认的bootstrap路径中,使得A被引导类加载器加载,从而通过Unsafe.getUnsafe方法安全的获取Unsafe实例。 java ­Xbootclasspath/a:${path} //其中path为调用Unsafe相关方法的类所在jar包路径 2

java学习笔记之IO编程—对象序列化

南楼画角 提交于 2020-02-04 00:51:19
对象序列化就是将内存中保存的对象以二进制数据流的形式进行处理,可以实现对象的保存或网络传输。 并不是所有的对象都可以被序列化,如果要序列化的对象,那么对象所在的类一定要实现java.io.Serializable父接口,作为序列化的标记,这个接口没有任何方法,描述的是一种类的能力。 java中提供了ObjectOutputStream(序列化) ObjectInputStream(反序列化)两个类 ObjectOutputStream的定义: public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants 构造方法: public ObjectOutputStream​(OutputStream out) throws IOException 主要方法: public final void writeObject​(Object obj) throws IOException ObjectInputStream的定义: public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants 构造方法: public