
java基础
文章平均质量分 84
九月木码
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java基础学习总结(九):深入理解Java泛型
一、什么是泛型 “泛型” 意味着编写的代码可以被不同类型的对象所重用。泛型的提出是为了编写重用性更好的代码。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如常见的集合类 LinkedList:public class LinkedList<E> extends AbstractSequentialList<E> implem...原创 2018-10-18 19:24:16 · 2951 阅读 · 0 评论 -
java基础学习总结(二十):多线程上下文切换
什么是上下文切换 即使是单核CPU也支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程时同时执行的,时间片一般是几十毫秒(ms)。 CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保...原创 2018-10-22 14:34:16 · 184 阅读 · 0 评论 -
java基础学习总结(五):Java中equals和==的区别
一、java当中的数据类型和“==”的含义:基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值。 引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址(确切的说,是堆内存地址)。注:对于第二种类型,除非是同一个new出来的对象,他们的比较...原创 2018-10-17 17:03:41 · 167 阅读 · 0 评论 -
java基础学习总结(六)Comparable和Comparator的区别
一、Comparable Comparable可以认为是一个内比较器,实现了Comparable接口的类有一个特点,就是这些类是可以和自己比较的,至于具体和另一个实现了Comparable接口的类如何比较,则依赖compareTo方法的实现,compareTo方法也被称为自然比较方法。如果开发者add进入一个Collection的对象想要Collections的sort方法帮...原创 2018-10-17 17:42:47 · 168 阅读 · 0 评论 -
java基础学习总结(二十一):自己写一个java.lang.reflect.Proxy代理的实现
动态代理里面用到了一个类就是java.lang.reflect.Proxy,这个类是根据代理内容为传入的接口生成代理用的。本文就自己写一个Proxy类出来,功能和java.lang.reflect.Proxy一样,传入接口、代理内容,生成代理。 动态代理的实现应用到的技术 1、动态编译技术,可以使用Java自带的JavaCompiler类,也可以使用CGLIB、ASM等...原创 2018-10-22 16:29:48 · 318 阅读 · 0 评论 -
JDBC学习1:详解JDBC使用
什么是JDBC JDBC(Java Database Connectivity),即Java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供同一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,根据这种基准可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。总而言之,JDBC做了三件事:与数据库建立连接 发送...原创 2018-10-17 18:18:29 · 130 阅读 · 0 评论 -
java基础学习总结(七):Cloneable接口和Object的clone()方法
为什么要克隆为什么要使用克隆,这其实反映的是一个很现实的问题,假如我们有一个对象:public class SimpleObject implements Cloneable{ private String str; public SimpleObject() { System.out.println("Enter SimpleObje...原创 2018-10-17 18:38:56 · 340 阅读 · 0 评论 -
java基础学习总结(八):Java中的反射
Native JDK开放给用户的源码中随处可见Native方法,被Native关键字声明的方法说明该方法不是以Java语言实现的,而是以本地语言实现的,Java可以直接拿来用。这里有一个概念,就是本地语言,本地语言这四个字,个人理解应该就是可以和操作系统直接交互的语言。 Java不在乎Native方法是用什么语言实现的,只要一来语言能和底层打交道就好了,二来语言实现完可以提...原创 2018-10-17 18:46:07 · 154 阅读 · 0 评论 -
java基础学习总结(二十二):Cglib及其基本使用
Cglib是什么 Cglib是一个强大的、高性能的代码生成包,它广泛被许多AOP框架使用,为他们提供方法的拦截。下图是我网上找到的一张Cglib与一些框架和语言的关系:对此图总结一下:最底层的是字节码Bytecode,字节码是Java为了保证“一次编译、到处运行”而产生的一种虚拟指令格式,例如iload_0、iconst_1、if_icmpne、dup等 ...原创 2018-10-23 11:31:59 · 235 阅读 · 0 评论 -
java基础学习总结(二十三):什么要使用AOP
从最基础的原始代码-->使用设计模式(装饰器模式与代理)-->使用AOP三个层次来讲解一下为什么我们要使用AOP。原始代码的写法既然要通过代码来演示,那必须要有例子,这里我的例子为:有一个接口Dao有insert、delete、update三个方法,在insert与update被调用的前后,打印调用前的毫秒数与调用后的毫秒数首先定义一个Dao接口:public...原创 2018-10-23 20:02:53 · 228 阅读 · 0 评论 -
java基础学习总结(二十四):slf4j作用及其实现原理
简单回顾门面模式slf4j是门面模式的典型应用,因此在讲slf4j前,我们先简单回顾一下门面模式,门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。用一张图来表示门面模式的结构为: 门面模式的核心为Facade即门面对象,门面对象核心为几个点:大致上来看,对门面模式的回顾到这里就可以了,开始接下来对SLF4J的学习。知道所有子...原创 2018-10-23 21:32:09 · 250 阅读 · 0 评论 -
java基础学习总结(二十五):logback详解
为什么使用logbacklogback大约有以下的一些优点:内核重写、测试充分、初始化内存加载更小,这一切让logback性能和log4j相比有诸多倍的提升 logback非常自然地直接实现了slf4j,这个严格来说算不上优点,只是这样,再理解slf4j的前提下会很容易理解logback,也同时很容易用其他日志框架替换logback logback有比较齐全的200多页的文档 log...原创 2018-10-24 10:41:56 · 280 阅读 · 0 评论 -
java私有静态方法
一、private static 我们都知道想要保护一些数据,只要设置为private,并且在java中static多少有“共享”的意味存在,那么既然已经private了,为什么还要static? 编译器对标记为静态的函数无需检测this指针是否为空,有时候这样的检测会对性能敏感的应用产生影响。说的比较笼统,其实原因是对非静态函数来说,都会默认传递第一个thi...原创 2018-12-12 15:05:01 · 9934 阅读 · 1 评论 -
java基础学习总结(四):String、StringBuilder和StringBuffer
前言有这么一段代码:public class TestMain{ public static void main(String[] args) { String str0 = "123"; String str1 = "123"; System.out.println(str0 == str1); }}运行结...原创 2018-10-17 11:33:16 · 229 阅读 · 0 评论 -
java基础学习总结(三):序列化、反序列化和transient关键字的作
平时我们在Java内存中的对象,是无法进行IO操作或者网络通信的,因为在进行IO操作或者网络通信的时候,人家根本不知道内存中的对象是个什么东西,因此必须将对象以某种方式表示出来,即存储对象中的状态。一个Java对象的表示有各种各样的方式,Java本身也提供给了用户一种表示对象的方式,那就是序列化。换句话说,序列化只是表示对象的一种方式而已。OK,有了序列化,那么必然有反序列化,我们先...原创 2018-10-17 10:43:21 · 144 阅读 · 0 评论 -
java基础学习总结(一):多态、重写与重载的区别
多态概述 我们都知道面向对象有四个基本特性:抽象、封装、继承、多态。这四个特性,概括起来可以这么理解,抽象、封装、继承是多态的基础,多态是抽象、封装、继承的表现。多态,是Java中非常重要的一个部分,所以今天来谈一下多态(Polymorphism)。什么是多态 多态就是同一个行为具有不同表现形式或形态的能力。就像上课铃响了,上体育课的学生跑到操场上站好,上语...原创 2018-10-16 16:49:45 · 474 阅读 · 0 评论 -
java基础学习总结(十):可变长度参数以及foreach循环原理
一、语法糖 语法糖是一种几乎每种语言或多或少都提供过的一些方便程序员开发代码的语法,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者就可以直接方便地使用了。这些语法糖虽然不会提供实质性的功能改进,但是它们或能提高性能、或能提升语法的严谨性、或能减少编码出错的机会。Java提供给了用户大量的语法糖,比如泛型、自动装箱、自动拆箱、for...原创 2018-10-19 10:03:39 · 242 阅读 · 0 评论 -
java基础学习总结(十一):自动装箱和自动拆箱
自动拆箱和自动装箱Java为每种基本数据类型都提供了对应的包装器类型。举个例子:public class TestMain{ public static void main(String[] args) { Integer i = 10; }}这个过程中会自动根据数值创建对应的Integer对象,这就是自动装箱。再看另外一段代码:pu...原创 2018-10-19 10:41:53 · 158 阅读 · 0 评论 -
java基础学习总结(二):final与static关键字总结
一、final关键字的作用相信对于final的用法,大多数人都可以随口说出三句话:1、被final修饰的类不可以被继承2、被final修饰的方法不可以被重写3、被final修饰的变量(变量的引用)不可以被改变被final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的变量和数组一样,都是引用不可变,引用指向的内容可变。public class...原创 2018-10-16 17:57:20 · 196 阅读 · 0 评论 -
java基础学习总结(十二):深入理解java内部类
内部类内部类也是语法糖,是因为它仅仅是一个编译时的概念,outer.java里面定义了一个内部类inner,一旦编译成功,就会生成两个完全不同的.class文件了,分别是outer.class和outer$inner.class。所以内部类的名字完全可以和它的外部类名字相同。内部类分为四种:成员内部类、局部内部类、匿名内部类、静态内部类。先逐一了解下,再看下使用内部类有什么好处。成员内...原创 2018-10-19 11:16:11 · 129 阅读 · 0 评论 -
java基础学习总结(十三):Java异常处理
一、JAVA异常 异常是指不期而至的各种情况,如:文件找不到、网络连接失败、非法参数等。异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程。Java通过API中的Throwable类的众多子类描述各种不同的异常。因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的错误条件。当条件生成时,错误将引发异常。Java异常类层次结构图: ...原创 2018-10-19 16:02:12 · 167 阅读 · 0 评论 -
java基础学习总结(十四):Enum 类型的使用介绍
一、Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为声明的变量提供更大的取值范围。举个例子来说明一下,如果希望为彩虹描绘出七种颜色,你可以在 Java 程序中通过常量定义方式来实现。...原创 2018-10-19 16:33:32 · 244 阅读 · 0 评论 -
java基础学习总结(十五):抽象类与接口
抽象类与接口是java语言中对抽象概念进行定义的两种机制,正是由于他们的存在才赋予java强大的面向对象的能力。他们两者之间对抽象概念的支持有很大的相似,甚至可以互换,但是也有区别。 一、抽象类 我们都知道在面向对象的领域一切都是对象,同时所有的对象都是通过类来描述的,但是并不是所有的类都是来描述对象的。如果一个类没有足够的信息来描述一个具体的对象,而需要其他具体的类...原创 2018-10-19 16:51:14 · 177 阅读 · 0 评论 -
java基础学习总结(十六):代码优化
代码优化的目标是:1、减小代码的体积2、提高代码运行的效率代码优化细节(1)尽量指定类、方法的final修饰符 带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个...原创 2018-10-19 17:43:54 · 165 阅读 · 0 评论 -
java基础学习总结(十七):Java Socket
一、 什么是Socket Socket的概念很简单,它是网络上运行的两个程序间双向通讯的一端,既可以接收请求,也可以发送请求,利用它可以较为方便地编写网络上数据的传递。所以简而言之,Socket就是进程通信的端点,Socket之间的连接过程可以分为几步:1、服务器监听 服务器端Socket并不定位具体的客户端Socket,而是处于等待连接的状态,实时监控...原创 2018-10-22 10:21:56 · 208 阅读 · 0 评论 -
java基础学习总结(十八):切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法:public static void main(String[] args){ List<Integer> arrayList = new ArrayList<Inte...原创 2018-10-22 10:50:55 · 171 阅读 · 1 评论 -
java基础学习总结(十九):Unsafe与CAS
Unsafe 简单讲一下这个类。Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。 这个类尽管里面的方法都是public的,但是并没有办法使用它们,JDK API文档也没有提供任何关于这个类的方法的解释。总而言之,对于Unsafe类的使用都是受限...原创 2018-10-22 11:20:27 · 172 阅读 · 1 评论 -
JAVA反射
一、反射的设计原则 首先看书要理解反射,很难完全理解,这关系到Java的语言特性,jvm的内存细节,当初我看反射,就像高票答案那样,照着写一遍,结果是你并没有理解,你只是照猫画虎,要想真正理解,应不断深入探究,当你踩得足够深回过头来,你会柳暗花明! 首先我们了解一下JVM,JAVA之所以能够跨平台就是因为JVM,可以理解成一个进程,程序只不过是用来跑...原创 2019-03-26 08:46:12 · 617 阅读 · 0 评论