Java
文章平均质量分 86
一只迷途的羔羊
一只迷途的羔羊......
展开
-
Java 内部类详解
内容装载来源:https://www.cnblogs.com/dolphin0520/p/3811445.html 一.内部类基础广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。 成员内部类 成员内部类是最普通的内部类,它的定义为位于另一个类的内部,形如下面的形式:class Outer{ ...转载 2018-08-09 17:07:04 · 156 阅读 · 0 评论 -
架构整洁之道
架构整洁之道设计原则一. SRP:单一职责原则二.OCP:开闭原则三.LSP:里氏替换原则四.ISP:接口隔离原则五.DIP:依赖反转原则组件构建原则一.组件聚合1.REP:复用/发布等同原则2.OCP:共同闭包原则3.CRP:共同复用原则二.组件解耦设计原则SOLID一. SRP:单一职责原则定义:任何一个软件模块都应该有且仅有一个被修改的理由或者任何一个软件模块都应该只对一个用户或系统...原创 2019-09-24 08:23:05 · 223 阅读 · 0 评论 -
Stream API介绍
Stream API介绍Java 8引入了全新的Stream API,此Stream与java I/O包里的InputStream和OutputStream是完全不同的概念。Stream API更像具有Iterable的集合类,但行为和集合类又有所不同,它是对集合对象功能的增强,专注于对集合对象进行各种非常便捷、高效的聚合操作或大批量数据操作。Stream API引入的目的在于弥补Java...转载 2018-09-16 11:05:45 · 2129 阅读 · 1 评论 -
java中的双冒号操作符
定义 双冒号运算操作符是类方法的句柄,lambda表达式的一种简写,这种简写的学名叫eta-conversion或者叫η-conversion。通常的情况下:把 x -> System.out.println(x) 简化为 System.out::println 的过程称之为 eta-conversion把 System.out::println 简化为 x ->...转载 2018-09-16 11:17:44 · 668 阅读 · 0 评论 -
lambda表达式
简介jdk1.8中新增的核心特性有lambda表达式,函数式接口,流API,默认方法,新的Date,以及Time API一.函数式接口函数式接口是只有一个方法的接口,用作lambda表达式的类型。来看看jdk中的Runnable源码@FunctionalInterfacepublic interface Runnable { /** * When an obje...转载 2018-09-16 13:01:16 · 290 阅读 · 0 评论 -
事务
事务的三种类型Java事务的类型有三种:JDBC事务、JTA(Java Transaction API)事务、容器事务1、JDBC事务JDBC 事务是用 Connection 对象控制的。JDBC Connection 接口( java.sql.Connection )提供了两种事务模式:自动提交和手工提交。 java.sql.Connection 提供了以下控制事务的方法:public ...原创 2019-03-23 17:13:47 · 4199 阅读 · 0 评论 -
Java内存模型与线程
一.硬件的效率与一致性 现代计算机通过加入一曾读写速度尽可能接近处理器运算速度的高速缓存来作为内存与处理器之间的缓存:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步会内存中,这样处理器就无需等待缓慢的内存读写了。基于高速缓存的存储交互很好得解决了处理器与内存的速度矛盾。但是也为计算机系统带来更高的复杂度,因为它引入了一个新的问题:缓存一致性(Cache C...转载 2018-09-05 17:29:49 · 147 阅读 · 0 评论 -
垃圾收集器与内存分配策略
一.概述哪些内存需要回收?什么时候回收?如何回收? 在Java内存运行时的区域各个部分中,其中程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈的操作。每一个栈帧中分配多少内存基本上是在类结构确定下来时就已知的(尽管在运行期会由JIT编译器进行一些优化,但大体上可以认为是编译期可知的),因此这几个区域的内存分...原创 2018-08-31 17:34:32 · 827 阅读 · 0 评论 -
对象序列化
当你创建对象时,只要你需要,,它就会一直存在,但是在程序终止时,无论如何它都不会继续存在。尽管这么做肯定是有意义的,但是仍旧存在某些情况,如果对象能够在程序不运行的情况下仍能存在并保存其信息,那将非常有用。这样,在下次运行程序时,该对象将被重建并且拥有的信息与在程序上次运行时它所拥有的信息相同。当然,你可以通过将信息写入文件或数据库来达到相同的效果,但是在使万物都成为对象的精神中,如果能够将一...原创 2018-08-21 14:30:41 · 464 阅读 · 0 评论 -
java io------压缩
Java IO 类库中的类支持读写格式的数据流,你可以用它们对其他的IO类进行封装,以提供压缩功能。 这些类不是从新的Reader 和Writer 类衍生出来的,而是属于InputStream 和OutputStream 层次结构的一部分。这样做是因为压缩类库是按字节方式而不是字符方式处理的。所以有时不得不混合使用两种类型的数据流(注意可用InputStreamReader 和Outpu...原创 2018-08-20 16:00:36 · 236 阅读 · 0 评论 -
Java NIO
一.简介 JDK1.4的java.nio.*包中引入了新的Java I/O类库。其目的在于提高速度。速度的提高来自于所使用的的I/O和网络更接近于操作系统执行I/O的方式:通道和缓冲区。我们并不直接和通道交互,我们只是和缓冲器交互,并把缓冲器派送到通道。通道要么从缓冲器获得数据,要么想缓冲器发送数据。唯一直接与通道交互的缓冲器是ByteBuffer——-可以存储未加工字节的缓冲器。ByteB...原创 2018-08-20 14:26:06 · 183 阅读 · 0 评论 -
java 代理
一:代理模式(静态代理) 代理模式是常用设计模式的一种,我们在软件设计时常用的代理一般是指静态代理,也就是在代码中显式指定的代理。 静态代理由 业务实现类、业务代理类 两部分组成。业务实现类 负责实现主要的业务方法,业务代理类负责对调用的业务方法作拦截、过滤、预处理,主要是在方法中首先进行预处理动作,然后调用业务实现类的方法,还可以规定调用后的操作。我们在需要调用业务时,不是直接通过...转载 2018-08-27 10:22:27 · 135 阅读 · 0 评论 -
类型信息
概要 本文主要讨论Java是如何让我们再运行时识别对象和类的信息的。这主要采取两种形式:一种是“传统”RTTI (Run-Time Type Identification:在运行时识别一个对象的类型),它假定我们已在编译时已经知道了所有的类型;另一种是“反射”机制,利用它可在运行期独立查找类信息。1.Class对象 要理解RTTI 在Java 里如何工作,首先必须了解类型信息在运行...原创 2018-08-26 15:43:06 · 488 阅读 · 2 评论 -
Java IO
一. 输入和输出 可将Java库的IO类分割为输入与输出两个部分。通过继承,从InputStream(输入流)衍生的所有类都拥有名为read()的基本方法,用于读取单个字节或者字节数组。类似地,从OutputStream衍生的所有类都拥有基本方法write(),用于写入单个字节或者字节数组。Java类库的设计者将所有与输入有关的类都从InputStream继承,而与输出有关的所有类都从Out...原创 2018-08-15 09:45:40 · 198 阅读 · 0 评论 -
Java二进制指令代码解析
小注:去年在看《深入解析JVM》书的时候做的一些记录,同时参考了《Java虚拟机规范》。只是对指令的一些列举,加入了一些自己的理解。可以用来查询Java二进制指令代码解析 Java源码在运行之前都要编译成为字节码格式(如.class文件),然后由ClassLoader将字节码载入运行。在字节码文件中,指令代码只是其中的一部分,里面还记录了字节码文件的编译版本、常量池、访问权限、所有成员变量和...转载 2018-08-12 11:04:46 · 320 阅读 · 0 评论 -
虚拟机类加载机制
概述 在Class文件中描述的各种信息,最终都需要加载到虚拟机中之后才能运行和使用。虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 与那些在编译时需要进行连接工作的语言不通,在Java语言中,类型的加载、连接和初始化过程多在程序运行期间完成的。Java里天生可以冬天扩展的语言特性...原创 2018-08-12 10:56:06 · 175 阅读 · 0 评论 -
Class类的文件结构
根据Java虚拟机规范的规定,Class文件格式采用一种类似于C语言结构体的伪结构来存储数据,这中伪结构中只有两种数据类型:无符号数和表。无符号数: 无符号数属于基本的数据类型,以u1、u2、u4、u8来分别代表1个字节、2个字节、4个字节 和8个字节的无符号数,无符号数可以用来描述数字、索引引用、数量值或者按照UTF-8编码构成字符串值。表: 表是由多个无符号数或者其他表作为数据项...原创 2018-08-10 19:46:04 · 237 阅读 · 0 评论 -
读《Effective Java》
代码应该被重用而不是拷贝一、创建和销毁对象1.静态工厂方法替代构造器1.1 优势:静态工厂方法与构造器的第一大优势是,它们有名称静态工厂方法与构造器的第二大优势是,不必在每次调用它们的时候都创建一个新的对象静态工厂方法与构造器的第三大优势是,它们可以返回原返回类型的任何子类型的对象静态工厂方法的第四大优势是,所返回的对象的类可以随着每次的调用而发生变化,这取决于静态工厂方法的参...原创 2019-09-28 20:26:20 · 171 阅读 · 0 评论