自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

发达的范的博客

记录分享自学java的过程的收获和遇到的问题,请多多指教。

  • 博客(53)
  • 资源 (2)
  • 收藏
  • 关注

原创 21Java线程优先级Priority

线程优先级priority再次强调一点:线程的优先级的高低并不代表执行的先后顺序,线程执行的先后顺序是由JVM决定的。package ThreadStudy;/**线程优先级 * NORM_PRIORITY 5,所有线程默认优先级是5 * MIN_PRIORITY 1,最低优先级为1 * MAX_PRIORITY 10,最高优先级为10 * * @author 发达的范 * @version 1.0 * @date 2021/07/26 22:01 */public class

2021-08-27 23:56:07 375

原创 20Java线程状态(二)

线程状态join插队(加入):写在哪个线程体中,这个线程就被阻塞与sleep方法的区别是:join是成员方法,必须使用线程的对象来调用join方法;sleep是Thread类方法,直接Thread.sleep().join状态的程序package ThreadStudy;/**测试join线程状态,插队 * * * @author 发达的范 * @version 1.0 * @date 2021/07/22 21:28 */public class BlockJoin

2021-08-27 23:53:02 95

原创 19Java的线程状态(一)

线程状态一个线程在它的生命周期内有五大状态:线程从运行状态到阻塞状态后,再恢复到运行状态,这个恢复过程不是立即恢复,而是需要进行一系列的操作之后才能进入到就绪状态,然后才能进入运行状态。线程进入死亡状态后不能复活,不能重新开启,如果开启,那么开启之后的是一个新的线程,不是原来的线程。new实例化之后,一个线程对象进入新生状态,每个线程都有自己的内存空间(工作空间),这些工作空间直接与主内存进行交互信息,具体是先从主内存中拷贝数据,在自己的内存空间中进行处理。线程对象调用star

2021-08-27 23:50:42 148

原创 18Java的静态代理设计模式&Lambda表达式

多线程-静态代理设计模式使用implements Runnable接口实现多线程,必须使用Thread类的对象来启动线程,这个Thread类的对象是静态代理对象。静态代理是,使用的类是已经构建好的,直接使用;动态代理是,使用的类是临时写的,所以叫动态代理。静态代理可以记录日志,谁什么时候进入,什么时候退出。静态代理模式的代理角色和真实角色必须实现同一个类,在代理角色中**“忙前忙后”**中间做真实角色的事情。下面是一个使用静态代理模式的程序实例:package ThreadStudy;

2021-08-27 23:47:24 131

原创 17Java的多线程抢票程序(小改)

多线程模拟抢票的程序package ThreadStudy;/**模拟抢票功能 * 抢票需要注意的是多个线程来抢夺同一份资源。一份资源,多个代理。 * * @author 发达的范 * @version 1.0 * @date 2021/04/17 14:39 */public class Web12306 implements Runnable { private int ticketNumbers = 10; @Override public void r

2021-08-27 23:43:03 930

原创 16Java的多线程Thread&Runnable

多线程Thread多任务同时进行,宏观上说是多任务同时进行,微观上在同一时刻还是只进行一个任务的片段。CPU 的每个时钟时间内只能做一样事,但是CPU的运算速度很快,所以在人的感知范围内感受到计算机在同一时刻做多件事。多线程与方法的调用的区别方法的调用是:一个方法调用另一个方法的时候必须等待被调用的方法执行完毕之后才回到自己的方法中;多线程是两个线程同时进行,并不是严格的同时,表现在人的感受范围内是同时进行。程序、进程与线程程序是静态的概念,进程是动态的概念,一个进程匹配一个程序,线程指

2021-08-27 23:40:44 395

原创 15Java的文件分割

随机读取写入类RandomAccessFile支持使用字节流从随机指定的位置开始读取指定长度的数据。由此可以衍生出很多功能,比如文件分块等。看随机读取写入类RandomAccessFile的构造方法:发现该构造方法在只能传入文件对象或者文件路径,不能传入一线流或者缓冲流,并且构造方法必须指定读取模式,由四种模式,分别是:“r”,“rw”,“rws”,rwd"。常用的是前两种,只读,同时读写。下面是使用随机读取写入类RandomAccessFile的程序实例package com.company;

2021-08-27 23:35:40 259

原创 14Java的数据流&对象流&打印流

数据流DataInputStream&DataOutputStream主要是为了处理基本数据类型(八大基本数据类型)和字符串保留了数据和数据类型,方便后期直接获取数据类型数据处理时候要保证数据类型顺序一致,读取和写出一致把xxx转成字节数组,使用ByteArrayOutputStream,把数据输出到内存中,然后使用toByteArray方法转成字节数组。这是使用数据输出流DataOutputStream和数据输入流DataInputStream结合字节数组输出流ByteArrayOut

2021-05-11 20:38:54 147 2

原创 13Java的字节/符缓冲流&转换流

字节缓冲流BufferedInputStream&BufferedOutputStreamJava缓冲流本身并不具有IO流的读取与写入功能,只是在别的流(节点流或其他处理流)上加上缓冲功能提高效率,就像是把别的流包装起来一样,因此缓冲流是一种处理流(包装流)。当对文件或者其他数据源进行频繁的读写操作时,效率比较低,这时如果使用缓冲流就能够更高效的读写信息。因为缓冲流是先将数据缓存起来,然后当缓存区存满后或者手动刷新时再一次性的读取到程序或写入目的地,在IO操作时记得加上缓冲流来提升性能。Bu

2021-05-11 20:33:26 167 2

原创 12Java的装饰器设计模式

装饰器设计模式设计模式 :为了达到目的,设计组织代码的一种固定的模式。装饰器设计模式,本质上是用装饰器对某个类的对象的某个属性进行装饰,也就是说装饰器和被装饰的对象都具有相同的属性,那么在这个设计模式中,我们就可以把这些相同的属性抽象成一个接口,由装饰器和被装饰的对象共同实现,为了能在装饰器类中对被装饰的某个类的属性进行修饰,所以装饰器需要一个有参构造器来传递被装饰的类的对象实现多态,然后在装饰器的类中对传递过来的 被装饰的对象进行修饰。下面是使用装饰器设计模式的简单程序实例:package c

2021-05-11 20:30:06 107 2

原创 11Java的字节数组流及其使用

IO字节数组流字节数组流ByteArrayInputStream、ByteArrayOutputStream的区别:源头换成电脑上的内存中的数据,字节数组,可以看成电脑上的内存,或者是网络上的内存,服务器上的内存。对于电脑的内存,java虚拟机是可以直接访问的 ,与操作系统无关,释放资源是由垃圾回收机制gc释放,gc不需要人为干预,所以不用人为关闭,但是为了风格统一,关了也没事,只是一个空方法。上几节说的字节文件输入输出流,字符文件输入输出流都是操作存在硬盘上的数据,java虚拟机不能直接访问,必

2021-04-03 15:11:00 1614

原创 10Java的文件字符流

上一节在操作文件时使用的文件字节流(FileInputStream,FileOutputStream),但不同的编码方式可能会导致文件编码生成的字节数相差很大,所以对于文件操作可以使用文件字符流。UTF-8:中文字3个字节,英文1个字节,数字1个字节GBK:中文2个字节,英文1个字节,数字1个字节。UTF-16LE:每个字符都是两个字节注意:文件字符流(FileReader,FileWriter)仅适合处理字符文件,也就是通常以一下的文件。package IO_Study;impor

2021-04-03 15:06:28 63

原创 09JavaIO_文件拷贝

文件的拷贝是把程序作为中转,读一段内容,然后写入到文件,循环往复。package IO_Study;import java.io.*;/** * 使用文件字节输入流和输出流进行文件的拷贝 * 1.确定源 * 2.选择流 * 3.操作 * 4.关闭系统资源 * @author 发达的范 * @date 2021/03/21 17:31 */public class FileCopy { public static void main(String[] args) {.

2021-03-22 09:09:54 71 1

原创 08Java操作IO的标准步骤

借用下图:使用IO操作文件时的一般思路如下:确定源确定流,选择哪种流操作:读/写(一个一个的读/写,还是一段一段的读/写)释放系统资源使用IO流的时候,只能操作文件,是不能操作文件夹的。逐个字节读取数据从JDK1.8的API中发现:这是InputStream类的部分方法,可见read()方法是抽象方法,必须由子类继承并实现这个抽象方法。这是FIleInputStream类的部分方法,创建文件字节输入流必须是父类的引用指向子类的对象,子类必须实现父类的抽象方法。程序实

2021-03-22 09:09:20 90

原创 07Java的文件夹创建&遍历

创建文件夹(mkdir,mkdirs)创建文件夹的两种方法:import java.io.File;/** * * @author 发达的范 * @date 2021/02/05 15:19 */public class makeFolds { public static void main(String[] args) { //指定的这个路径中/fada/fadada两个文件夹都是不存在的,所以使用mkdir创建失败,使用mkdirs创建成功 Fil

2021-02-06 21:57:06 163 2

原创 # 如何使用 Typora+PicGo设置图床实现生产力大增?

今天看到公众号上一篇推送,说是在Typora 中直接粘贴图片,就能自动上传到图床,然后我就觉得这简直不能舒服更多啊!想想我每次都是要么先保存图片,在添加到Typora中,或者是先粘贴到Typora中再保存到本地,图片一多了,工作量也不小。然后我就按照CSDN上大神的教程开始操作,无情的操作,弄了一下午发现没卵用,总是提示PicGo是在这里下载的:https://github.com/Molunerfinn/PicGo/releasesTypora也是最新版:反正就是各种出错,我寻思着是我那

2020-12-02 18:20:17 220 2

原创 06Java的IO及其常用类(补充)

IO: 输入输出流Input Output**输入(Input)指的是:可以让程序从外部系统获得数据(核心含义是“读”,读取外部数据)。**常见的应用:读取硬盘上的文件内容到程序。读取网络上某个位置内容到程序。例如:浏览器中输入网址后,打开该网址对应的网页内容;下载网络上某个网址的文件。读取数据库系统的数据到程序。读取某些硬件系统数据到程序。输出(Output)指的是:程序输出数据给外部系统从而可以操作外部系统(核心含义是“写”,将数据写出到外部系统)。将数据写到硬盘

2020-11-28 08:18:26 180

原创 05.1小练习:使用javabean结合容器存储数据

使用javabean结合容器存储数据这里的javabean听起来很新鲜,其实不是新东西,就是把被存储的对象封装成 一个类,然后使用容器(Map,List或者Set)来存储这些对象。下面直接看实现程序吧:package mycollection;import java.util.*;/** * 测试使用javabean结合List存储表格数据 * * @author 发达的范 * @date 2020/11/21 21:34 */public class TestStoreDat

2020-11-22 08:12:03 216 5

原创 05Java的迭代器Iterator&工具类Collections

迭代器Iterator迭代器Iterator是JDK提供的一种访问Collection接口(Set,List,Map)的工具,下面我们看Iterator接口的源码:public interface Iterator<E> { /** * Returns {@code true} if the iteration has more elements. * (In other words, returns {@code true} if {@link #next} w

2020-11-20 21:55:17 197

原创 04Java学习之浅尝TreeMap

TreeMap是使用红黑二叉树来实现的,底层实现较麻烦,暂时学会使用,待后续再研究。TreeMap的关键源码: private transient Entry<K,V> root;其中root用来存储整个树的根节点。进入Entry(是TreeMap的内部类)的代码:/** * Node in the Tree. Doubles as a means to pass key-value pairs back to * user (see Map.Entry). */st

2020-11-18 08:27:00 119 2

原创 03Java的HashMap底层原理(下)之手写低配版HashMap

HashMap底层原理(下)从HashMap中取数据过程get(key)我们需要通过key对象获得“键值对”对象,进而返回value对象。获得key的hashcode,通过hash()散列算法得到hash值,进而定位到数组的位置。在链表上挨个比较key对象。 调用equals()方法,将key对象和链表上所有节点的key对象进行比较,这里比较的是key对象的hashcode,直到碰到返回true的节点对象为止。返回equals()为true的节点对象的value对象。注意:Java中规定

2020-11-16 17:44:27 74

原创 02Java的Map&HashMap底层原理(上)-存疑

Map接口定义了存储 “ 键(key)— 值(value) 映射对 ” 的方法,通过一个对象找到另一个对象。下面看一个比较简单的程序:package myhashmap;import java.util.HashMap;import java.util.Map;/** * 测试HashMap的使用 * * @author 发达的范 * @date 2020/11/11 22:29 */public class TestHashMap { public static

2020-11-13 20:30:29 97

原创 01Java学习之手工实现LinkedList双向链表(存疑)

LinkedList容器LinkedList底层用双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全。 在频繁使用增删的情况下,一把使用LinkedList。双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向前一个节点和后一个节点。所以,从双向链表中的任意一个节点开始,都可以很方便地找到所有节点。容器中所有的比较操作都用equals方法,一般不用==实现。上面说的指针实质上就是对象,这个对象存储的是节点的地址。下面是LinkedList的双链表存储结构图

2020-11-11 09:10:30 145 3

原创 30Java的容器&泛型(源码简直不能更精彩)

容器(又名集合)数组也是一种容器,可以放置对象或基本数据类型数据。数组的优势:访问速度快,效率高;数组的劣势:数组容量不灵活,不能改变长度。容器是Java的重要内容,顾名思义,用来装其他对象的对象。接口:定义规范。就是定义不变的东西,接口里面只能定义抽象方法和常量。容器有四大接口:Collection接口:定义了存取一组对象的抽象方法,其子接口Set和List分别定义了存储方式:Set中的数据对象没有顺序且不可重复List中的数据对象有顺序且可以重复Map接口定义了存储

2020-10-31 20:10:45 136

原创 29Java的异常机制学习(存疑)

Java的异常这块有几位优秀的博主已经介绍的很详细了,我这里就记录一下我的实现过程和学习过程中遇到的问题。异常(Exception)java的异常是用于处理程序中异常或错误的一种机制。回顾:IDE一般指集成开发环境。集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具.JDK: Java Development Kit java开发工具箱JRE:Java

2020-10-28 17:39:30 118

原创 28探索学习Java的时间处理相关类

时间处理相关类时间相关的类如下:01Date类Date类是一个java中时间计算的类,在java中首先设定一个时间点为初试时间点,这个时间点是1970年01月01日00点00分00秒,最小刻度是毫秒,用时间差来表示一个特定的时间点,比如:此刻是2020/10/24/15:36/10秒,那么JRE中会存储当前时间和初试时间点的差值来表示当前的时间。package oop.oopdemo.dateclass;import java.util.Date;/** * 测试Date类 * Dat

2020-10-25 22:21:33 114

原创 27java的包装类&自动装箱&自动拆箱&缓存问题

包装类下面是包装类的使用方法:package oop.OopDemo.WrapClass;/** * 测试包装类的基本用法 * * @author 发达的范 * @date 2020/10/24 */public class Test01 { public static void main(String[] args) { //报错:Cannot resolve constructor 'Integer()',必须传递一个整形数据被包装 //In

2020-10-24 11:58:06 107

原创 26java的 二分查找法 探索学习之路

二分法是用来查找数组中某个元素的索引,使用二分法之前必须保证数组已经排序(从大到小,从小到大均可)二分法的原理很简单,我理解的二分查找法就是先把已经排序的数组(假设是从小到大)从中间分成两组,然后用目标数值与数组的中间数据相比较,如果目标数值比数组中间数据大,说明这个目标数值只可能存在于数组的后半部分,如果目标数值比数组中间数据小,说明这个目标数值只可能存在于数组的前半部分,假设目标数值比数组中间元素大,然后把数组的后半部分再分成两半,使用目标数值与现在的中间数值进行比较,依次类推,知道数组被分成两部分.

2020-10-23 20:42:36 203 2

原创 25java的StringBuilder类和StringBuffer类

StringBuilder线程不安全,效率高;StringBuffer线程安全,效率低new StringBuilder创建长度为16的字符串数组下面看程序实例:package testString;public class stringBuilder { public static void main(String[] args) { StringBuilder stringBuilder = new StringBuilder();//字符数组初始长度为16 .

2020-10-22 17:24:07 133

原创 24java模拟ArrayList容器的实现

来自于一个小白自学java的旅程记录实现一个容器,能够存放任意类型的数据,能够自动扩容,能够实现一系列方法。下面是练习容器的程序的第一个版本:package MyArrayListSimulation;public class MyArrayList { private Object[] value;//创建一个Object类的数组对象,所有的类都是Object类的子类,所以这个数组能够存储所有类型对象 private int size;//创建一个变量保存数组的长度

2020-10-22 16:45:23 126

原创 23java的String类常用方法

序号23及其以前的博客都是由博客园搬运过来的

2020-10-18 16:41:00 117

原创 22java的回调&内部类

回调(callback,Hook)回调(callback),又叫钩子(hook),模板方法模式。在程序中某个位置设定一个钩子(hook),这个钩子具体怎么运行不确定,具体传递哪个对象就调用哪个对象的方法,实现代码的分离。实质上就是多态。下面看程序实例:package oop.OopDemo.CallBack;public class MyCallback { pu...

2020-10-16 22:15:00 138

原创 21java的抽象类和接口

抽象类我们先来看抽象类的实现实例,然后再讨论关于抽象类的细节问题。package oop.OopDemo.AbstractClass;public class TestAbstract { public static void main(String[] args) { //Animal animal = new Animal();//报错 ...

2020-10-15 22:00:00 89

原创 20java的组合&IDEA踩坑合集1

组合(模式)组合(模式)的概念:组合多个对象形成树形结构以表示有整体-部分关系层次结构,组合模式可以让客户端统一对待单个对象和组合对象。组合和继承能实现相同的效果,但是使用方法有所区别。下面看组合的程序实例:package oop.OopDemo.Polymorphic;public class Test { public static void main(S...

2020-10-12 17:17:00 110

原创 19java的封装继承多态(下)

方法重写注意:方法的重写是针对继承来说的,没有继承关系不叫方法的重写。下面先给一个重写的错误写法:package oop.OopDemo;import oop.OopDemo.Demo02_extends.Person;import oop.OopDemo.Demo02_extends.Student;public class Application {publi...

2020-10-06 17:46:00 92

原创 18java的封装继承多态(上)

封装封装,顾名思义,就是把东西封存起来,不让每个人都能操作。通常情况下,应该禁止直接访问一个对象中数据的实际表示,而应该通过操作接口来访问。这称为信息的隐藏。程序设计的要追求"高内聚,低耦合"。高内聚:类的内部数据局操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用。熟记这句话:属性私有,get/set下面看一个封装的实例:(为了展示方便,我这里St...

2020-10-05 18:47:00 87

原创 17java类与对象&构造器

类与对象的关系类是对象的模板!!!类是对对象的抽象;对象是具体的实例。类是一种抽象的数据类型,它是对某一类事物整体的描述/或定义,并不能代表某一个具体的事物;动物,手机,Person类,Car类............对象是抽象概念的具体实例。能够体现出特点,展现出功能的是具体的实例,不是一个抽象的概念。张三是人的一个具体实例创建与初始化对象使用ne...

2020-10-04 21:44:00 63

原创 16java的面向对象编程&基础知识回顾

面向对象编程java的核心思想就是OOP Object-oriented Programming.面向对象的本质就是:以类的方式组织代码,以对象来组织(封装)数据。对红字的解释:解决复杂问题,要首先从宏观把握,分析框架和流程,此时需要面向对象的思路具体到微观操作,也就是具体的实现过程,就需要面向过程的思路总结:宏观---面向对象;微观---面向过程这...

2020-10-04 15:43:00 87

原创 15java稀疏数组

稀疏数组稀疏数组简介:如何表示以下稀疏数组?0 0 0 0 0 0 0 0 0 0 00 0 1 0 0 0 0 0 0 0 00 0 0 2 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 00 0 ...

2020-10-03 21:02:00 84

原创 14java的冒泡排序

冒泡排序以前学习C语言的时候学习过冒泡排序等其他排序,现在根据自己对冒泡的回忆以及理解先分析一下冒泡排序的原理 :主要是理解“冒泡”二字,每冒一个泡就把数组内的元素遍历一次,调整一个数字的位置(如果顺序不对的话),一共需要进行array.length-1次遍历,每次遍历需要进行array.length-i-1次比较(其中i是指第i次遍历)。图1 是第一次遍历的过程,红字是比较的两个...

2020-10-03 18:55:00 71

可编程逻辑器件FPGA实验代码

文件包含可编程逻辑器件的实验程序完整可运行代码,包括:流水灯、七人表决器、38译码器、数字钟、四选一等

2020-10-27

C语言程序设计---图书登记管理系统

这是一篇关于C语言图书登记管理的课程设计报告,报告包含全部课程设计要求的内容,包括报告全文,我遇到的bug的分析与解决,模块解析,心得体会等等,内含完成程序源码,并且源码有详细注释,是一篇获得优秀的课程设计。绝对真实可用!由于平台规则,资源的积分会自动增长,如果您需要,可私信我我会下调至初始设置的5积分供您下载。

2020-10-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除