构造器

单例模式分析

六月ゝ 毕业季﹏ 提交于 2020-01-07 19:22:11
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 单例模式,这个搞java的应该都懂,对于那些有缺陷的单例模式就不说了,太low,这里说下相对略叼的两种。 一、双重校验锁 先上代码: package com.ayo.singleton; import java.io.*; /** * 双重校验锁单例模式 * * @Authror ayo * @Date 2020/1/7 14:33 */ public class LanhanSingleton implements Serializable { private volatile static LanhanSingleton INSTANCE; private LanhanSingleton() {} public static LanhanSingleton getInstance(){ if(INSTANCE == null){ synchronized (LanhanSingleton.class){ if (INSTANCE == null){ INSTANCE = new LanhanSingleton(); } } } return INSTANCE; } } 双重校验锁基本上算是比较完善的单例模式了(大部分场景下),但是它还是有缺点的,因为如果按照这么写并不能真正的保证单例,最简单的就是用反射搞你

java基础——反射常用操作

喜欢而已 提交于 2020-01-07 01:24:08
首先定义一些类和接口 package reflection1; public interface MtInterface { void info(); } package reflection1; import java.io.Serializable; public class Creature<T> implements Serializable { private char gender; public double weight; public Creature() { super(); } private void breath() { System.out.println("呼吸"); } public void eat() { System.out.println("吃饭"); } } package reflection1; public class Person extends Creature<String> implements Comparable<String>,MtInterface { private String name; int age; public int id; public Person() { super(); } private Person(String name) { super(); this.name = name; }

17.java常用类

£可爱£侵袭症+ 提交于 2020-01-06 11:11:22
一、字符串相关类 1.String类   String:字符串,使用一对""引起来表示。1.String类是声明为final的,不可被继承2.String实现了Serializable接口:表示字符串是支持序列化的。 实现了Comparable接口:表示String可以比较大小3.String内部定义了final char[] value用于存储字符串数据4.String:代表不可变的字符序列。简称:不可变性。 体现:1.当对字符串重新赋值时,需要重写指定内存区域赋值,不能使用原有的value进行赋值。 2. 当对现有的字符串进行连接操作时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。 3. 当调用String的replace()方法修改指定字符或字符串时,也需要重新指定内存区域赋值,不能使用原有的value进行赋值。5.通过字面量的方式(区别于new)给一个字符串赋值,此时的字符串值声明在字符串常量池中。6.字符串常量池中是不会存储相同内容的字符串的。 (一)String的实例化方式:方式一:通过字面量定义的方式。通过字面量定义的方式:此时的s1和s2的数据javaEE声明在方法区中的字符串常量池中。 方式二:通过new + 构造器的方式。通过new + 构造器的方式:此时的s3和s4保存的地址值,是数据在堆空间中开辟空间以后对应的地址值。 面试题:String

Servlet(基础)

让人想犯罪 __ 提交于 2020-01-05 19:19:29
Servlet 专 题 (基础) Servlet容器: Servlet 由 Servlet容器提供,Servlet容器是指 提供了Servlet功能的服务器。 (如Tomcat)。 作用: Servlet容器会将Servlet动态加载到服务器,然后通过HTTP请求 和 HTTP响应与客户端进行交互。 什么是Servlet? 宏观上: Servlet 是 Servlet 规范中的一个具体的接口。Servlet 规范中包含一套接口。而 Servlet 接口仅仅是其中之一。 微观上: Servlet 是 Servlet 接口实现类的一个实例对象,是运行在服务器上的一段 Java 小程序。即 Server Applet,也就是 Servlet 这个单词的来历。 通常来说,Servlet指所有实现了Servlet这个接口的类。 Servlet 的主要功能 根据客户端提交的请求,调用服务器端相关 Java 代码,完成对请求的处理与运算。(即,主要用于处理客户端传来的HTTP请求,并返回一个响应给客户端。) Servlet的特征? Servlet接口中定义了 五个抽象方法 Servlet的生命周期: 生命周期方法执行流程: Servlet 生命周期方法的执行流程: (1)当请求发送到 Web 容器后,Web 容器会解析请求 URL, 并从中分离出 Servlet 对应的URI。 (2

Android MP3录音实现

感情迁移 提交于 2020-01-04 21:30:38
版权声明: 欢迎转载,但请保留文章原始出处 作者: GavinCT 出处: http://www.cnblogs.com/ct2011/p/4080193.html Android录音支持的格式有amr、aac,但这两种音频格式在跨平台上表现并不好。 MP3显然才是跨平台的最佳选择。 近期由于项目需要,实现了这个需求,代码托管在Github上,欢迎拍砖 项目地址 GavinCT/AndroidMP3Recorder 使用方法见:README.md 实现思路概述 在分析代码前,我们需要明确几个问题 1. 如何最终生成MP3 实现MP3格式最好是借助Lame这个成熟的解决方案。 对于Android来说,需要借助JNI来调用Lame的C语言代码,实现音频格式的转化。 2. 如何获取最初的音频数据 AudioRecord类可以直接帮助我们获取音频数据。 3. 如何进行转换 网上有代码是先录制后转为MP3,这种效率比较低。因为如果录音时间过长,转换时间就会相应变长,用户在存储录音时需要等待的时间就会变长。 Samsung Developers先录后转示例代码 显然,这种方案是不可取的。 我们需要的是边录边转的实现方式,这样在停止录音进行存储的时候,就不会花费太长时间。 实现代码介绍 既然是录音,我们上面也提到了需要使用AudioRecord类,我们就从这个类的构造器开始说起 构造器

Vue.js组件学习

时光怂恿深爱的人放手 提交于 2020-01-04 00:52:06
组件可以扩展HTML元素,封装可重用的HTML代码,我们可以将组件看作自定义的HTML元素。组件系统提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用。 一个简单组件例子(全局注册) <!DOCTYPE html> <html> <body> <div id="app"> <!-- 3. #app是Vue实例挂载的元素,应该在挂载元素范围内使用组件--> <the-component></the-component> </div> </body> <script src="js/vue.js"></script> <script> // 1.创建一个组件构造器 var myComponent = Vue.extend({ template: '<div> my first component!</div>' }) // 2.注册组件,并指定组件的标签,组件的HTML标签为<the-component> Vue.component('the-component', myComponent) new Vue({ el: '#app' }); </script> </html> 运行结果: 分析: 1.Vue.extent() 是Vue构造器的扩展,调用Vue.extend()创建的是一个组件构造器,而不是一个具体的组件实例

Java 小白 学习笔记心得(二)----类与对象

拥有回忆 提交于 2020-01-03 14:42:29
Java 小白 学习笔记心得(二)— 对象与类 1.面向对象术语 面向对象的分析(OOA,Object Oriented Analysis) 面向对象的设计(OOD,Object Oriented Design) 面向对象的编程实现(OOP,Object Oriented Programming) 2. 面向对象与面向过程的区别 面向过程:主要关注点为实现过程,因果关系 优点: 对于业务逻辑简单的程序,可以达到快速开发,前期投入成本低; 缺点: 难以解决非常复杂的业务逻辑,两哇哦面向过程使软件元素之间的耦合度很高,软件扩展能力差。另外没有度立体的概念,无法达到组件复用; 面向对象: 主要关注各个独立对象能完成哪些功能。 优点: 耦合度低,扩展能力强。容易解决现实世界中更复杂的业务; 缺点:前期投入成本较高,需要对立体的抽取与大量系统的设计。 3.面向对象的特征 封装 继承 多态 4.类与对象的概念 什么是类? 类是构造对象的模板与蓝图; 类达标了一类事物,是人类大脑抽象的结果。 什么是对象? 对象是实际存在的个体,现实世界中实际存在。 类的组成: 属性:描述对象的状态信息。 方法:描述对象的动作信息 5.类之间的关系 依赖 uses-a : 一个类的方法操纵另一个类的对象; 聚合 has-a : 类A的对象包含类B的对象; 继承 is-a : 类A 扩展类B。 6.

vue实例

余生颓废 提交于 2020-01-01 22:58:26
1.构造器 1.1.每个 Vue.js 应用都是通过构造函数 Vue 创建一个 Vue 的根实例 启动的: 1.2.在实例化 Vue 时,需要传入一个选项对象,它可以包含数据、模板、挂载元素、方法、生命周期钩子等选项。 1.3.可以扩展 Vue 构造器,从而用预定义选项创建可复用的组件构造器  var MyConponent = Vue.extends({})  1.4.所有的 Vue.js 组件其实都是被扩展的 Vue 实例 2.属性 2.1每个 Vue 实例都会代理其 data 对象里所有的属性: var data = { a: 1 } var vm = new Vue({ data: data }) vm.a === data.a // -> true vm.a = 2 data.a // -> 2 data.a=3 vm.a=3//-> 2.2.除了 data 属性, Vue 实例暴露了一些有用的实例属性与方法。这些属性与方法都有前缀 $ ,以便与代理的 data 属性区分。例如: vm.$data === data // -> true vm.$el === document.getElementById( 'example') // -> true 2.3. vm.$watch( 'a', function ( newVal, oldVal) {//这就是脏检查

Java集合List实现原理

陌路散爱 提交于 2020-01-01 15:52:49
一、集合类结构 Java中的集合包含多种数据结构,如链表、队列、哈希表等。从类的继承结构来说,可以分为两大类,一类是继承自Collection接口,这类集合包含List、Set和Queue等集合类。另一类是继承自Map接口,这主要包含了哈希表相关的集合类。 1.继承Collection接口 2.继承Map接口 二、实现原理 1.List (有序,可重复) 常用的实现List接口的主要有ArrayList、Vector、LinkedList 三个,通过查看jdk底层源码实现,进行简单的要点总结: (1)ArrayList ArrayList是List使用中最常用的实现类,它的查询速度快,效率高,但增删慢,线程不安全。 实现原理: ArrayList底层实现采用的数据结构是数组,并且数组默认大小为10,所以下面两种方式是等同的: List list = new ArrayList(); //没有指定数组大小,使用默认值(默认大小是10) List list = new ArrayList(10); // 指定数组大小为10,传如的参数便是数组的大小,传入为10时,跟默认值相同,所以是等同的 要想清楚的理解上面两中方式,从ArrayList类的构造器就会豁然开朗: 注:不同的jdk版本实现代码有所不同, 现以jdk1.8为例(个人感觉 jdk1.6的底层实现写法更好理解,jdk1

《Think in Java》

断了今生、忘了曾经 提交于 2020-01-01 02:04:15
chapter 1 对象导论 面向对象程序设计(Object-oriented Programming ,OOP) chapter 2 一切都是对象 字段和方法 若类的某个 成员变量 是基本数据类型,即是没有进行初始化,java也会确保它获得一个默认值。    局部变量 没有默认值,必须初始化。 方法、参数和返回值 static 关键字    chapter 3 操作符 import static 是导入这个类中的静态方法,然后调用静态方法就可以直接用方法名,而不用"类名.",但要注意导入的方法名有相同的调用时会报错。 java操作符   String 类支持“+”和“+=”。 优先级 关系操作符   对于引用型数据,==和!=比较的是对象的引用,基本类型数据可以直接比较值。equals()可以比较引用型数据的值,equals方法内部是将引用型数据的值转换为基本类型并用== 比较。 字符串操作符   如果表达式以一个字符串起头,那么后续所有操作数都必须是字符串型。 类型转换操作符    chapter 4 控制执行流程 逗号操作符   for循环中用到逗号操作符。 for(int i=1,j=i+10;i<5;i++,j=i*2) { System.out.println("i="+i+",j="+j); } Foreach 语法   for(float x : f){} /