-
线程安全问题及解决
当我们使用多个线程访问同一资源(可以是同一个变量、同一个文件、同一条记录等)的时候,若多个线程只有读操作,那么不会发生线程安全问题。但是如果多个线程中对资源有读和写的操作,就容易出现线程安全问题。 举例: 1.1 同一个资源问题和线程安全问题 案例: 火车站要卖票,我们模拟火车站的卖票过程。因为疫情期间,本次列车的座位共100个(即,只能出售100张火车票)。我们来模拟车站的售票窗口,实现多个窗口… -
Thread类的常用结构
1.1 构造器 public Thread() :分配一个新的线程对象。 public Thread(String name) :分配一个指定名字的新的线程对象。 public Thread(Runnable target) :指定创建线程的目标对象,它实现了Runnable接口中的run方法 public Thread(Runnable target,String name) :分配一个带有指定… -
创建线程的方式
1.1 概述 Java语言的JVM允许程序运行多个线程,使用java.lang.Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。 Thread类的特性 每个线程都是通过某个特定Thread对象的run()方法来完成操作的,因此把run()方法体称为线程执行体。 通过该Thread对象的start()方法来启动这个线程,而非直接调用run() 要想实现多线程,必须在主线程… -
线程基础知识
1.1 程序、进程与线程 程序(program):为完成特定任务,用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process):程序的一次执行过程,或是正在内存中运行的应用程序。如:运行中的QQ,运行中的网易音乐播放器。 每个进程都有一个独立的内存空间,系统运行一个程序即是一个进程从创建、运行到消亡的过程。(生命周期) 程序是静态的,进程是动态的 进程作为操作系统调度和分… -
apache-common包的使用
1. 介绍 IO技术开发中,代码量很大,而且代码的重复率较高,为此Apache软件基金会,开发了IO技术的工具类commonsIO,大大简化了IO开发。 Apahce软件基金会属于第三方,(Oracle公司第一方,我们自己第二方,其他都是第三方)我们要使用第三方开发好的工具,需要添加jar包。 2. 导包及举例 在导入commons-io-2.5.jar包之后,内部的API都可以使用。 IOUti… -
其他流的使用
1 标准输入、输出流 System.in和System.out分别代表了系统标准的输入和输出设备 默认输入设备是:键盘,输出设备是:显示器 System.in的类型是InputStream System.out的类型是PrintStream,其是OutputStream的子类FilterOutputStream 的子类 重定向:通过System类的setIn,setOut方法对默认设备进行改变。 … -
处理流之三/四:数据流、对象流
1. 数据流与对象流说明 如果需要将内存中定义的变量(包括基本数据类型或引用数据类型)保存在文件中,那怎么办呢? int age = 300; char gender = '男'; int energy = 5000; double price = 75.5; boolean relive = true; String name = "巫师"; Stud… -
处理流之二:转换流
1. 问题引入 引入情况1: 使用FileReader 读取项目中的文本文件。由于IDEA设置中针对项目设置了UTF-8编码,当读取Windows系统中创建的文本文件时,如果Windows系统默认的是GBK编码,则读入内存中会出现乱码。 package com.atguigu.transfer; import java.io.FileReader; import java.io.IOExcep… -
处理流之一:缓冲流
为了提高数据读写的速度,Java API提供了带缓冲功能的流类:缓冲流。 缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为: 字节缓冲流:BufferedInputStream,BufferedOutputStream 字符缓冲流:BufferedReader,BufferedWriter 缓冲流的基本原理:在创建流对象时,内部会创建一个缓冲区数组(缺省使用8192个字节(8K… -
节点流之二:FileInputStream-FileOutputStream
1. InputStream和OutputStream 1.1 字节输入流:InputStream java.io.InputStream抽象类是表示字节输入流的所有类的超类,可以读取字节信息到内存中。它定义了字节输入流的基本共性功能方法。 public int read(): 从输入流读取一个字节。返回读取的字节值。虽然读取了一个字节,但是会自动提升为int类型。如果已经到达流末尾,没有数据可读… -
节点流之一:FileReader-FileWriter
1. Reader与Writer Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。不能操作图片,视频等非文本文件。 常见的文本文件有如下的格式:.txt、.java、.c、.cpp、.py等 注意:.doc、.xls、.ppt这些都不是文本文件。 1.1 字符输入流:Reader java.io.Reader抽象类是表示用于读取字符流的所有类的父类,可以读取字符信息到内存中。… -
IO流原理及流的分类
1. Java IO原理 Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行,可以看做是一种数据的流动。 I/O流中的I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。 输入input:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。 输出output:将程序(内存)数据输出到磁盘、光盘… -
java.io.File类的使用
1.1 概述 File类及本章下的各种流,都定义在java.io包下。 一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象) File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。 File对象可以作为参数传递给流的构造器。 想要在Java程序中表示一个真实存在的文… -
JUnit单元测试
1. 测试分类 **黑盒测试:**不需要写代码,给输入值,看程序是否能够输出期望的值。 **白盒测试:**需要写代码的。关注程序具体的执行流程。 2. JUnit单元测试介绍 JUnit 是由 Erich Gamma 和 Kent Beck 编写的一个测试框架(regression testing framework),供Java开发人员编写单元测试之用。 JUnit测试是程序员测试,即所谓白盒测… -
注解(Annotation)
1. 注解概述 1.1 什么是注解 注解(Annotation)是从JDK5.0开始引入,以“@注解名”在代码中存在。例如: @Override @Deprecated @SuppressWarnings(value=”unchecked”) Annotation 可以像修饰符一样被使用,可用于修饰包、类、构造器、方法、成员变量、参数、局部变量的声明。还可以添加一些参数值,这些信息被保存在 Ann… -
自定义泛型
1. 泛型的基础说明 1、<类型>这种语法形式就叫泛型。 <类型>的形式我们称为类型参数,这里的"类型"习惯上使用T表示,是Type的缩写。即:<T>。 <T>:代表未知的数据类型,我们可以指定为<String>,<Integer>,<Circle>等。 类比方法的参数的概念,我们把<T&…