标签: java进阶

51 篇文章

041、反射
反射 1.什么是反射? 反射就是Reflection,Java的反射是指程序在运行期可以拿到一个对象的所有信息。 正常情况下,如果我们要调用一个对象的方法,或者访问一个对象的字段,通常会传入对象实例。但是,如果不能获得该对象的类,这个时候就要用到反射机制了。 所以,反射是为了解决在运行期,对某个实例一无所知的情况下,如何调用其方法。 反射是一种机制,利用该机制可以在程序运行过程中对类进行解剖并操作…
040、网络编程
网络编程 1.网络编程入门 1.1软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。 B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。 1.2 网络通信协议 网络通…
039、NIO
NIO 1.NIO概述 在我们学习Java的NIO流之前,我们都要了解几个关键词 同步与异步(synchronous/asynchronous):同步是一种可靠的有序运行机制,当我们进行同步操作时,后续的任务是等待当前调用返回,才会进行下一步;而异步则相反,其他任务不需要等待当前调用返回,通常依靠事件、回调等机制来实现任务间次序关系 阻塞与非阻塞:在进行阻塞操作时,当前线程会处于阻塞状态,无法从事…
038、缓冲流,转换流,序列化流,打印流
缓冲流,转换流,序列化流,打印流 1.缓冲流 上一篇IO中只是介绍了一些基本的流,作为IO流的入门,这一篇介绍一些更强大的流。比如能够高效读写的缓冲流,能够转换编码的转换流,能够持久化存储对象的序列化流等等。这些功能更为强大的流,都是在基本的流对象基础之上创建而来的,就像穿上铠甲的武士一样,相当于是对基本流对象的一种增强。 1.1 概述 缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,…
037、IO
IO 1.IO概述 1.1 什么是IO 生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。 我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入…
036、File类和递归
File类和递归 File类 1.概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 2.构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 public File(String parent, String child) :从父路径名字符串和子路径名字符…
035、JDK8新特性
JDK8新特性 1.Lambda表达式 1.1 函数式编程思想概述 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。 面向对象的思想: ​ 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情. 函数式编程思想: ​ 只…
034、线程池和死锁
线程池和死锁 1.线程池 1.1 线程池的思想 我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间,线程也属于宝贵的系统资源。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?…
033、并发包
并发包 1.ConcurrentHashMap 为什么要使用ConcurrentHashMap: HashMap线程不安全,会导致数据错乱 使用线程安全的Hashtable效率低下 基于以上两个原因,便有了ConcurrentHashMap的登场机会。 HashMap线程不安全演示 公有、静态的集合: public class Const { public static HashMap<St…
032、原子性
原子性 1.看程序说结果 public class VolatileAtomicThread implements Runnable { // 定义一个int类型的遍历 private int count = 0 ; @Override public void run() { // 对该变量进行++操作,100次 for(int x = 0 ; x < 100 ; x++) { count+…