javaSE
javaSE
learning_learning
哈哈,本人很懒
展开
-
序列化和反序列化
参考序列化和反序列化详解原创 2020-06-18 16:48:17 · 109 阅读 · 0 评论 -
IO和Properties
需求:把文件中的数据(键值对的形式)加载到内存,存到Properties对象中。jdbc.properties文件username=gaopassword=123package cn.donglinode.IO;import java.io.FileReader;import java.util.Properties;public class IOPropertiesDemo01 { public static void main(String[] args) thr原创 2020-06-18 15:40:24 · 132 阅读 · 0 评论 -
拷贝目录
需求:将一个目录及其所有的子目录,子文件,拷贝到另一个目录下。思路:需要使用InputStream,OutputStream,File需要使用递归代码:package cn.donglinode.IO;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class CopyDirectory { public static void m原创 2020-06-18 15:20:09 · 359 阅读 · 0 评论 -
File类概述
一 什么是File?File是文件和目录路径名的抽象表示。File可能代表一个目录,也可能代表一个文件。注意:File类的父类是Object,它和IO流的四大家族没有什么关系,不能完成文件的读写操作。二 File类的常用方法package cn.donglinode.IO;import java.io.File;public class FileDemo01 { public static void main(String[] args) throws Exceptio原创 2020-06-18 13:00:24 · 551 阅读 · 0 评论 -
PrintStream概述
一PrintStream概述这是一个标准输出流,默认情况下会输出到控制台二 我们用烂了的System.out.println()System.out的返回值就是一个PrintStream对象以下两段代码是等价的System.out.println("hello world");PrintStream ps=System.out;ps.println("hello world");三 改变PrintStream的输出方向如果我们不想让PrintStream输出到控制台..原创 2020-06-17 22:22:35 · 712 阅读 · 0 评论 -
IO文件复制
package cn.donglinode.IO;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;public class Copy01 { public static void main(String[] args) { FileInputStream fis...原创 2020-06-17 11:12:25 · 131 阅读 · 0 评论 -
FileOutputStream概述
一FileOutputStream概述文件输出流是用于将数据写入File或FileDescriptor的输出流。 文件是否可用或是否可以创建取决于底层平台。 特别是某些平台允许一次仅打开一个文件以供写入FileOutputStream (或其他文件写入对象)。 在这种情况下,如果涉及的文件已经打开,则此类中的构造函数将失败。二FileOutputStream的构造方法1. public FileOutputStream(String name) throws FileNotFoundExce..原创 2020-06-17 10:32:22 · 3477 阅读 · 0 评论 -
FileInputStream概述
一FileInputStream概述FileInputStream:从文件系统中的文件获取输入字节。 可用的文件取决于主机环境。FileInputStream用于读取诸如图像数据的原始字节流。 要读取字符流,请考虑使用FileReader。二FileInputStream的构造方法1.FileInputStream(File file)通过打开与实际文件的连接来创建 FileInputStream ,该文件由文件系统中的 File对象 file命名。2.FileInputSt...原创 2020-06-16 22:39:17 · 4052 阅读 · 0 评论 -
IO概述
一 什么是IO?I : InputO : Output通过IO可以完成硬盘文件的读和写。二IO流的分类?有多种分类方式1. 一种方式是按照流的方向进行分类 以内存作为参照物, 往内存中去,叫做输入(Input)。或者叫做读(Read)。 从内存中出来,叫做输出(Output)。或者叫做写(Write)。2. 另一种方式是按照读取数据方式不同进行分类1)有的流是按照字节的方式读取数据,一次读取1个字节byte,等同于一次读取8个二进制位。这...原创 2020-06-16 21:46:56 · 271 阅读 · 0 评论 -
抽象类
一 什么是抽象类?类和类之间有一些共同的特征,把这些特征提取出来,形成的就是抽象类。抽象类本身是不存在的,所以抽象类无法创建对象。二 抽象类的特点1.抽象类的定义规则【修饰符列表abstract class 类名{类体}】2. 抽象类属于引用类型3. 抽象类是无法实例化的,无法创建对象,所以抽象类就是用来被继承的。4. 虽然抽象类无法实例化,但是抽象类也有构造方法,该构造方法是提供给子类使用的。5. abstract和final不能联合使用。6. 抽象类的子类可以..原创 2020-06-16 15:38:32 · 1120 阅读 · 0 评论 -
final关键字
final意思是最终的,不可变的。一 final修饰的类不能被继承package cn.dongli.finalDemo;final class A {}//编译不通过,因为A被final修饰了,B不能再继承Aclass B extends A{}二 final修饰的方法不能被重写package cn.dongli.finalDemo;class A { public final void print(){ System.out.printl原创 2020-06-16 11:34:25 · 117 阅读 · 0 评论 -
volatile变量
下面内容摘自《深入理解JVM》方便查找用简而言之:如果一个变量被volatile修饰,那么这个变量就有了两个特殊规则可见性(可见性能在一定程度上完成同步,但是并不能完全保证线程安全) 禁止指令重排优化...原创 2020-04-27 19:41:00 · 117 阅读 · 0 评论 -
十大经典排序算法
参考https://blog.csdn.net/weixin_41190227/article/details/86600821参考https://twocups.cn/index.php/2020/02/01/17/原创 2020-04-25 16:57:42 · 102 阅读 · 0 评论 -
虚拟机类加载机制
参考https://blog.csdn.net/m0_38075425/article/details/81627349原创 2020-04-25 11:05:13 · 96 阅读 · 0 评论 -
JVM垃圾收集机制
一 垃圾收集垃圾收集(Garbage Collection,GC)是一项比Java更久远的技术。在这里我们主要探讨Java堆的垃圾收集。二 Java中GC的过程1. 判断对象是否已死 2. 垃圾收集三 对象已死吗?1. 判断对象是否已死的方法:可达性分析算法在我们的认知里,可能比较熟悉的是:引用计数法判断一个对象是否还有用,其实引用计数法是有缺陷的,比如说,如果出现循环...原创 2020-04-25 11:02:48 · 134 阅读 · 0 评论 -
JVM内存模型
本文参考《深入浅出JVM》,作用是简单整理便于记忆一 在内存管理领域,Java和C++的区别对于C,C++程序员来说,他们需要自己去进行内存管理,即拥有每一个对象的“所有权”,又担负着每一个对象从生命开始到生命终结的维护责任。而对于Java程序员来说,内存管理的重任基本交给JVM了,程序员不再需要为每一个new操作配套写一个delete/free代码。Java程序中也不容易出现内存泄露...原创 2020-04-25 10:34:00 · 99 阅读 · 0 评论 -
可变长度参数
在Java中是支持可变长参数的但是必须注意:可变长参数指的是,对于该参数可以传进去0到多个值 可变长参数必须放到参数列表的最后面 可变长参数最多只能有一个 可变长参数可以看成是一个可变长数组,该参数可以调用数组的方法public class Test { public static void main(String[] args) throws ClassNotFoundExc...原创 2020-04-23 17:52:03 · 270 阅读 · 0 评论 -
Java之反射
一 什么是反射?二 反射有什么用通过反射机制可以操作我们的字节码文件 我们使用的框架,比如ssh,ssm的底层实现原理就使用了反射机制。学习反射有利用理解框架。三 反射相关的类反射相关的类大多在java.lang.relect.*包下java.lang.Class 代码整个字节码,代表整个类 java.lang.reflect.Field 代表字节码文件中的成员变量字节码,代...原创 2020-04-22 22:58:42 · 119 阅读 · 0 评论 -
在Java中怎么动态获取一个文件的绝对路径(路径不是写死的)
我们可能用过下面这种方式来读取一个文件,请注意这种方式是把路径写死的。并且还有一个问题是,在windows操作系统的编辑器下,默认路径是project的根,这样写是没问题的,但是如果我们的代码移植到了linux中,这个路径就无效了。public static void main(String[] args) throws ClassNotFoundException, FileNotFoun...原创 2020-04-22 22:05:46 · 1515 阅读 · 0 评论 -
HashMap,HashTable和ConcurrentHashMap
参考https://www.jianshu.com/p/38337264911d原创 2020-04-21 21:17:11 · 79 阅读 · 0 评论 -
TCP通信客户端和服务器端网络编程
一 客户端和服务器端通信的步骤二 TCP通信的客户端网络编程TCP协议是严格区分客户端和服务器端的1. TCP通信的客户端向服务器端发送连接请求 给服务器端发送数据 读取服务器端回写的数据2. 在Java中,提供了java.net包下的Socket类来表示客户端。Socket也叫"套接字",包含了IP地址和端口号3.Socket的构造方法publicSocke...原创 2020-04-21 15:08:40 · 1090 阅读 · 0 评论 -
Java之网络编程
一 软件结构 二 网络编程1.什么是网络编程?网络编程就是,在一定的协议下,实现两台计算机的通信的程序2. 网络通信协议3. TCP/IP协议三 传输层协议1. UDP协议在实际的编程中,我们主要关注的是传输层,传输层主要包括TCP协议和UDP协议,Java提供了java.net提供了对TCP和UDP网络协议的支持。2. TCP...原创 2020-04-21 10:27:19 · 106 阅读 · 0 评论 -
HashMap和HashTable的区别
1. 底层实现不一样。HashMap是由数组+链表+红黑树;HashTable是由数组+链表2.HashMap不是线程安全的;HashTable是线程安全的3. HashTable有contains()方法;HashMap中没有contains()方法,有containsKey()方法和containsValue()方法4.HashMap的键和值都可以为空;HashTable的键和...原创 2020-04-20 21:10:37 · 104 阅读 · 0 评论 -
Java线程之生产者和消费者模式
一 wait()、notify() 和notifyAll()参考https://www.cnblogs.com/zsh-blogs/p/10429184.html二 生产者和消费者模式1. 生产者消费者需求2. 生产者和消费者实现方法1public class ProducerAndConsumerTest { public static void main(Strin...原创 2020-04-20 13:35:25 · 147 阅读 · 0 评论 -
Java之定时器
实现一个定时器public class TimerTest { public static void main(String[] args) throws ParseException { Timer timer=new Timer(); SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Da...原创 2020-04-19 22:47:57 · 137 阅读 · 0 评论 -
Java线程之守护线程
什么是守护线程?Java中,线程分为两类:用户线程:包括main线程 守护线程(后台线程):在后台默默守护的线程,比较有代表性的守护线程就是垃圾回收线程守护线程的特点一般情况下,守护线程是一个死循环 如果所有的用户线程都结束了,那么守护线程也会自动结束守护线程用在什么地方呢?案例:每到0:00时,系统自动备份数据,这个需要使用定时器,并且我们可以将定时器设置为守护线程,一直...原创 2020-04-19 22:24:00 · 122 阅读 · 0 评论 -
Java之多线程并发环境下的数据安全问题
一 什么是多线程环境下的数据安全问题多线程环境下的数据安全问题需要满足三个条件多线程并发 多个线程有共享数据 被共享的数据有修改的行为二 多线程环境下数据安全的重要性以后在实际的开发中,我们的项目都是运行在服务器上,而服务器已经将线程的定义、线程对象的创建、线程的启动等都已经实现完了。这些代码我们不需要编写。 最重要的是我们需要知道,我们编写的程序要放到一个多线程的环境下运行,...原创 2020-04-19 21:41:42 · 1103 阅读 · 0 评论 -
Java之线程调度
一 常见的线程调度模型抢占式线程调度模型:哪个线程的优先级高,抢到CPU时间片的概率就高一些。Java采用的就是抢占式调度模型。 均分式线程调度模型:平均分配CPU时间片,每个线程占有的时间片长度一样。二 Java中和线程调度有关的方法1.setPriority(intnewPriority)和getPriority()public finalvoidsetPriority...原创 2020-04-19 16:29:43 · 151 阅读 · 0 评论 -
Java线程之常用函数
一 设置线程名字setName()和获取线程名字getName()【方式一】不手动设置线程名字,获取线程的默认名字,使用getName()方法,线程的默认名字格式为:Thread-0、Thread-1、Thread-2.......public class ThreadTest05 { public static void main(String[] args) { Thread ...原创 2020-04-19 12:51:10 · 589 阅读 · 0 评论 -
Java之线程的生命周期
唤醒正在睡眠的线程,使用interrupt方法,interrupt方法就是产生了一个中断,使sleep方法产生异常,那这个异常被catch住然后处理后,就跳出sleep方法了,然后回到就绪状态。(阻塞到其他)public static void yield():让当前线程暂停,放弃之前抢占的时间片,回到就绪状态(运行到就绪)public final void join() throws InterruptedException(运行到阻塞)...原创 2020-04-19 09:28:58 · 104 阅读 · 0 评论 -
Java中实现线程的方式
Java支持多线程编程,并且Java已经将多线程实现了,我们只需要继承解可以了。一. 编写一个类,直接继承java.lang.Thread类,重写run方法在Java中实现线程的第一种方式是直接继承Thread类 怎么启动一个线程呢?调用这个线程的start()方法 继承Thread类后必须重写run方法,run方法就相当于一个线程的入口,当线程被启动后,JVM会自动调用这个线程的ru...原创 2020-04-18 22:56:57 · 365 阅读 · 0 评论 -
Java之异常处理机制
一 什么是异常?异常模拟的是现实世界中“不正常”的事件。Java中采用类的方式去模拟现实世界的异常事件 类是可以创建对象的,在Java中因为一类异常是用一个异常类表示的,所以异常类也可以创建对象。比如:NullPointerException npe=0x1234;其中e是一个引用类型的变量,保存的是NullPointerException异常对象的内存地址。 异常处理机制的作用:Java...原创 2020-04-18 17:09:13 · 261 阅读 · 0 评论 -
Java之内部类
内部类:就是在类中定义的类一 静态内部类 静态内部类可以等同看作外部类的静态变量 内部类的作用:可以访问外部类中的私有数据(属性和方法) 静态内部类可以直接访问外部类的静态数据,不可以直接访问外部类的实例数据(实例变量和实例方法)public class OuterClass { //私有的静态变量 private static String s1="s1"; //...原创 2020-04-17 22:24:09 · 82 阅读 · 0 评论 -
Java之访问控制权限
Java中的访问级别修饰符主要包括:public、protected、缺省、private访问级别修饰符可以限定其他类对该类、属性、方法的使用权限public:可以在任何位置访问 protected:可以在本类、本包、子类中访问,其他地方都不可以 缺省:可以在本类、本包中访问,其他地方都不可以 private:只能在本类中访问 访问权限private<缺省<protec...原创 2020-04-17 21:05:47 · 97 阅读 · 0 评论 -
Java之package和import
一 包机制二 import原创 2020-04-17 20:44:06 · 115 阅读 · 0 评论 -
Java之接口
一 接口的基本语法接口也是一种引用类型 接口的定义规范:[修饰符] interface 接口名{} 接口中只能出现常量和抽象方法 接口可以看成是一个特殊的抽象类,特殊在接口是完全抽象的 接口中没有构造方法,无法被实例化 接口和接口之间可以多继承 一个类可以实现多个接口,一个类只能继承一个类,不能多继承 一个非抽象的类实现接口,必须将接口中所有的方法实现,重写 接口中所有的常量都...原创 2020-04-17 18:27:41 · 79 阅读 · 0 评论 -
Java之抽象类
抽象类的基础语法如何定义抽象类【class关键字前加abstract】 抽象类无法被实例化 虽然抽象类不能被实例化,但是抽象类也有构造方法,该构造方法是给子类创建对象用的 抽象类中可以定义抽象方法,抽象方法的语法:【在方法的修饰符列表中添加abstract关键字,以;结尾,并且不能有{}】 抽象类中不一定有抽象方法,但是抽象方法必须在抽象类中 一个非抽象的类继承抽象类,必须将抽象类中...原创 2020-04-17 17:28:05 · 94 阅读 · 0 评论 -
Java之super关键字
一 super关键字super不是引用类型的变量,super中存储的不是内存地址,super指向的不是父类对象 super代表的是当前子类对象中的父类型特征二 什么时候使用super当子类和父类中都有某一个数据,比如说某个属性或某个方法(子类中重写了父类的某个方法),如果在子类中想要访问父类中的属性或方法时,就需要使用super关键字三 super可以用在什么地方可以用在成...原创 2020-04-17 12:39:54 · 164 阅读 · 0 评论 -
设计模式之单例模式
单例模式是23中设计模式中最简单的一种设计模式单例模式能解决什么问题呢?为了保证JVM中某一类型的对象永远只有一个为什么使用单例模式呢?节省内存开销怎么实现单例模式呢?将构造方法私有化 对外提供一个获取单例对象的静态方法单例模式的分类懒汉式单例模式:使用时才创建对象 饥饿式单例模式:在类加载的时候就创建对象懒汉式单例模式的案例class User { pri...原创 2020-04-17 11:36:00 · 71 阅读 · 0 评论 -
设计模式
一 什么是设计模式?简单来说设计模式就是一套可以重复利用的解决方案。设计模式是在1995年由四位作者提出的,称为GoF,就是四人组。二 设计模式的分类创建型 结构型 行为型...原创 2020-04-17 11:23:25 · 82 阅读 · 0 评论