自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 常见的List接口的实现类

常见的List接口的实现类ArrayList:数组实现,查询快,增删慢,轻量级;(线程不安全)LinkedList:双向链表实现,增删快,查询慢 (线程不安全)Vector:数组实现,重量级 (线程安全、使用少)ArrayList实现类public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializab

2021-02-28 22:22:25 449

原创 集合中的接口

数据结构1、线性表(数组)存储区间是连续的,占用内存严重,故空间复杂度很大。但数组的二分查找(前提是必须有序)时间复杂度小,为O(1);数组的特点是:寻址容易(arr[n]=arr[0]+n*每个元素的长度,时间复杂度为O(1))插入和删除困难(可能会引发一半以上的数据元素移动,时间复杂度为O(n));Java中的数组是定长的,如果需要变长则需要自行编程实现2、链表存储区间离散(数据不是连续存放的),占用内存比较宽松,故空间复杂度很小,但操作元素的时间复杂度很大,达O(N)。链表的特点

2021-02-27 20:37:50 146

原创 多线程之间的数据通讯方法

多线程之间的数据通讯方法生产者消费者模式生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括生产者、消费者、仓库和产品。他们之间的关系如下:生产者仅仅在仓储未满时候生产,仓满则停止生产。消费者仅仅在仓储有产品时候才能消费,仓空则等待。当消费者发现仓库没产品可消费时候会通知生产者生产。生产者在生产出可消费产品时候,应该通知等待的消费者去消费。编码实现仓库类,产品就是仓库的属性data//临界资源public class Basket { private volatile Obj

2021-02-26 21:12:13 584

原创 线程安全

线程安全多线程的执行顺序不可重现,但是必须要求执行结果必须可以重现线程的共享数据操作不完整性就一定会出现数据被破坏,而导致结果无法预知的问题—线程的安全问题同步处理的引入在java语言中存在两种内建的synchronized语法:synchronized代码块和synchronized方法( 静态方法和非静态方法)可以解决线程安全问题首先synchronized将并行改为串行,当然会影响程序的执行效率,执行速度会受到影响。其次synchronized操作线程的堵塞,也就是由操作系统控制CPU的内核

2021-02-26 20:58:15 87

原创 线程的调度机制及线程同步问题

调度机制具体的调度实现分为操作系统和JVM操作系统的调度机制有多种,一般常见的有2种:时间片Unix和抢占式windows所有的Java虚拟机都有一个线程调度器,用来确定那个时刻运行那个线程。主要有两种调度模型:分时调度模型和抢占式调度模型基于时间片轮转法的抢占式调度。线程调度器会给高优先级有更多的运行机会,如果优先级相同则随机选中,执行时长到达时间片后从新进行调度线程的调度不是跨平台的,它不仅取决于Java虚拟机,还依赖于操作系统。在某些操作系统中,即使运行中的线程没有遇到阻

2021-02-25 20:05:04 626

原创 线程状态切换

线程状态切换线程从创建并启动到消亡共经历了5种状态:新建、就绪、运行、阻塞和死亡线程变化的5状态转换:1、新建状态(New):新创建了一个线程对象。new Thread()2、就绪状态(Runnable):线程对象创建后,其它线程调用了该对象的start()方法。只能针对处于新建状态的 线程对象调用start方法,否则IllegalThreadStateException该状态的线程位于可执行线程池中,变得可执行,等待获取CPU的使用权。3、执行状态(Running):就绪状态的线程获取了CP

2021-02-24 21:24:27 725

原创 线程练习题

基础练习题1. 多线程使用的优缺点?优点 :1)多线程技术使程序的响应速度更快2)当前没有进行处理的任务可以将处理器时间让给其它任务3) 占用大量处理时间的任务可以定期将处理器时间让给其它任务4)可以随时停止任务5)可以分别设置各个 任务的优先级以及优化性能缺点:1)等候使用共享资源时造成程序的运行速度变慢2)对线程进行管理要求额外的cpu开销3)可能出 现线程死锁情况。即较长时间的等待或资源竞争以及死锁等症状。2. start()方法和run()方法简介和区别?start()方法

2021-02-23 20:59:02 340

原创 多线程编程细节

多线程编程细节Thread类Thread类实现了Runnable接口,所以Thread对象也是可运行Runnable对象,同时Thread类也是线程类构造器Thread()//一般用于在Thread类中覆盖定义run方法,可以使用匿名内部类进行定义 Thread(Runnable)//使用最多的情况,run方式是由Runnable参数对象提供 Thread(String name) //自定义线程名称 Thread(Runnable,String name) … … //常见简化写法

2021-02-23 20:55:09 353

原创 线程

什么是线程池创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数 有限。为了避免这些问题,在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作 线程。从JDK1.5开始,Java API提供了Executor框架可以创建不同的线程池。比如单线程池,每次处理一个任务;数目固 定的线程池或者是缓存线程池(一个适合很多生存期短的任务的程序的可扩展线程池)new Thread的弊端每次new Thread新建对象性能差。线程缺乏统一管

2021-02-23 20:09:48 64

原创 线程的编程4种实现方法

线程的编程4种实现方法1、继承ThreadThread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。public class Thread implements Runnable @FunctionalInterface //函数式接口,其中包含一个抽象方法run public interface Runnable { public abstract void run(); }启动线程的唯一方法就是通过Thread类的start()实例方法,不能直接调用run()方

2021-02-20 21:11:13 283

原创 过滤流

过滤流类型过滤流就是在节点流的基础上附加功能处理类型字符流字节流缓存BufferedReader、BufferedWriterBufferedInputStream、 BuàeredOutputStream过滤处理FilterReader、FilterWriterFilterInputStream、FilterOutputStream桥接处理InputStreamReader、 OutputStreamWriter对象序列化处理ObjectInpu

2021-02-19 21:27:05 657

原创 文件过滤器FilenameFilter

带参数的listFiles方法支持对于子文件进行过滤,只获取需要满足条件的文件对象FilenameFilter接口中包含一个accept(File dir,String name)方法,该方法用于对指定File的所有子目录或者文件进 行迭代,如果方法返回true则list方法会获取该目录或者文件@FunctionalInterface public interface FilenameFilter { //参数dir是文件所在的目录,name是文件名称 boolean accept(File

2021-01-29 21:03:41 523

原创 编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改 成.txt

编写一个程序,把指定目录下的所有的带.java文件都拷贝到另一个目录中,拷贝成功后,把后缀名是.java的改 成.txtpublic class Test1 { private static String source = "C:\\aaa"; private static String target = "c:\\bbb"; public static void main(String[] args) throws Exception { File f = new Fil.

2021-01-29 21:02:53 304

原创 删除文件夹操作

定义一个方法,能够删除任意文件夹,文件夹路径由键盘录入public class Test { public static void main(String[] args) { File ff=new File("c:\\abc"); delFile(ff); } private static void delFile(File ff) { if(ff!=null) { if(ff.isFile()) ff.delete(); else if(ff.is

2021-01-28 20:06:50 172

原创 以树状结构显示文件夹

以树状结构显示文件夹 题目要求:编写程序,在命令行中以树状结构显示特定的文件夹及其子文件夹,如果子文件是文件则需要显示文件大小, 最后统计整个目录的大小public class Test { static long fileNum=0; static long fileLen=0; public static void main(String[] args) { String ss="C:\\windows"; File ff=new File(ss); if(f

2021-01-28 19:58:14 1133

原创 字符流

字符流一次操作一个字符 一般用于操作文本文件,注意word文档不是字符文件Reader字符输入流read():int 0-65535 -1read(char[]):int -1close():voidFileReader用于操作文件,属于节点流 读取指定文件并在控制台上进行显示public class Test { public static void main(String[] args)throws Exception { File f=new File("Test1.jav

2021-01-26 21:21:37 110

原创 文件夹的拷贝和移动

实现文件夹的拷贝和移动复杂样例文件夹的深度无法提前预知,所以这里采用递归调用的方式进行操作public class Test1 { private static String source; private static String target; public static void main(String[] args) throws IOException { source="C:\\aaa"; target="c:\\ddd"

2021-01-26 21:03:31 87

原创 JAVA基础知识(八)

第六章 面向对象(高级篇)目标:1.掌握继承的基本概念及实现。2.掌握继承实现的各种限制。3.掌握子类对象的实例化过程。4.掌握方法覆写的概念及实现。5.掌握super关键字的作用。6.掌握抽象类与接口的基本概念以及实际应用。7.掌握对象多态性的作用。8.掌握常见的设计模式。9.掌握Object类的作用及其主要方法的作用。10.掌握包装类的作用,以及自动装箱和拆箱的操作。11.掌握匿名内部类的使用。6.1 继承的基本概念格式 类的继承格式class 父类{} //定义父类c

2021-01-25 20:05:33 79

原创 显示整个windows文件夹中的所有文件和文件夹

练习要求显示整个windows文件夹中的所有文件和文件夹如果是文件则显示 文件名称 大小如果是文件夹则显示 绝对路径 是一个文件夹public class Test { public static void main(String[] args) { File ff = new File("c:/windows"); showFile(ff); } public static void showFile(File target) { if(target!=null)

2021-01-25 19:59:17 2964

原创 装饰模式

装饰模式装饰器模式Decorator Pattern允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式 属于结构型模式,它是作为现有的类的一个包装。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩 展功能的增多,子类会很膨胀优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动 态扩展一个实现类的功能缺

2021-01-24 18:24:49 107

原创

流概念java.io包通过数据流、序列化和文件系统为用户提供一种完成I/O操作的输入/输出流数据流是指所有的数据通信通道流是字节或字符数据的数据源或目的,用以隐藏数据传输细节,可以从流读取数据或将数据写到流Java程序不能直接操纵I/O设备,而是在程序和设备之间加入了一个中间介质,这就是流流是数据传输的抽象表达,与具体设备无关。程序一旦建立了流,就可以不用理会起点或终点是何种设备建立流实际上就是建立数据传输通道,将起点和终点连接起来Java程序通过流来完成输入/输出,它是生产或消费信息的抽象

2021-01-24 18:17:24 104

原创 接口

接口什么是接口?接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接

2021-01-22 14:10:05 72

原创 模板模式

模板模式定义抽象类的目的是提供可由其子类共享的一般形式,子类可以根据自身需要扩展抽象类什么是模板模式在模板模式Template Pattern中一个抽象类公开定义了总体的算法【算法骨架】,把没有办法在父类中实现的方法 延迟到子类中具体实现。这种类型的设计模式属于行为型模式何时使用有多个子类共有的方法,且逻辑相同重要的、复杂的方法,可以考虑作为模板方法注意事项为防止恶意操作,一般模板方法都加上final 关键词优点封装不变部分,扩展可变部分提取公共代码,便于维护行为由父类控制,子类实

2021-01-21 20:11:05 78

原创 抽象类

抽象类面向对象编程的核心是面向抽象编程,一般依赖抽象不依赖具体public class A{ public void pp(Pig pig){} //如果进行切换类型,则必须进行修改源代码 }//------------- public class A{ public void pp(Animal animal){} //这里可以任意更换Animal的子类 }class Animal{} class Pig extends Animal{} class Cat extends An

2021-01-21 20:00:56 100

原创 Java 异常处理

Java 异常处理异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。比如说,你的代码少了一个分号,那么运行出来结果是提示是错误 java.lang.Error;如果你用System.out.println(11/0),那么你是因为你用0做了除数,会抛出 java.lang.ArithmeticException 的异常。异常发生的原因有很多,通常包含以下几大类:用户输入了非法数据。要打开的文件不存在。网络通信时连接中断,或者JVM内存溢出。这些异常有的是因为用户错

2021-01-20 20:27:00 79

原创 冒泡排序算法

冒泡排序**算法原理**冒泡排序算法的原理如下:1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3、针对所有的元素重复以上的步骤,除了最后一个。4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序算法动态演示:具体代码如下:public static void bubbleSort(int arr[]){ for(int i = 0; i &

2021-01-20 10:12:46 67

原创 JAVA基础知识(七)

5.11 代码块所谓的代码块是指使用“{}”括起来的一段代码,根据位置不同,代码块可以分为普通代码块、构造块、静态代码块、同步代码块4种。5.11.1 普通代码块普通代码块就是指直接在方法或是语句中定义的代码块。5.11.2 构造块构造代码块是直接写在类中的代码块。构造块优先于构造方法执行,而且每次实例化对象时都会执行构造块中的代码,会执行多次。5.11.3 静态代码块静态代码块是使用static关键字声明的代码块。静态代码块优先于主方法执行,而在类中定义的静态代码块会优先于构造块执行,而

2021-01-19 21:36:26 72

原创 快速排序算法

**什么是快速排序算法?基本概述:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。排序流程*快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的

2021-01-18 21:50:00 98

原创 JAVA基础知识(六)

5.9 this关键字使用this可以强调本类中的方法,除此之外this还有:(1)表示类中的属性。(2)可以使用this调用本类的构造方法。(3)this表示当前对象。5.9.1 使用this调用本类中的属性5.9.2 使用this调用构造方法如果一个类中有多个构造方法,,可以利用this关键字互相调用。class Person44{ private String name; //姓名 private int age; //年龄 public Person44() { //无参构造

2021-01-18 21:28:48 89

原创 JAVA基础知识(五)

5.4 构造方法构造方法的主要作用就是为类中的属性初始化。类名称 对象名称 = new 类名称()从格式中发现,在最后有一个类名称()的代码,在程序中只要是一看见有“()”就表示调用方法,那么这个方法实际上就是要表示调用构造方法,构造方法可视为一种特殊的方法,他的定义方式与普通方法类似,其语法如下:构造方法定义格式class 类名称{ 访问权限 类名称(类型1 参数1,类型2 参数2,···){ 程序语句; ··· //构造方法没有返回值 }}在构造方法的声明中一定要

2021-01-15 19:58:16 295 1

原创 JAVA基础知识(四)

JAVA基础知识(四)5.2 类与对象5.2.1 类与对象的关系在面向对象中类和对象是最基本、最重要的组成单元。类实际上是表示一个客观世界某类群体的一些基本特征抽象。对象是表示一个个具体的东西。例如,在现实生活中,人就可以表示为一个类,因为人本身属于一种广义的概念,并不是一个具体的。而某一个具体的人,就可以称为对象,可以通过各种信息完善的描述这个具体的人,如这个人的姓名、年龄、性别等信息,这些信息在面向对象的概念中就称为属性,当然人是可以吃饭、睡觉的,那么这些人的行为在类中就称为方法。也就是说如果要使

2021-01-14 17:07:19 111

原创 Python概述及开发环境安装

**Python概述及开发环境安装**一、Python语言介绍*Python语言是少有的一种可以称得上既简单又功能强大的编程语言。Python易于学习,更注重的是如何解决问题,而不是纠结编程语言的语法和结构等。Python是一门解释型、面向对象的高级编写恒语言。Python是开源免费的、支持交互式、可跨平台移植的脚本语言。**二、Python的优势**Python的设计混合了传统语言的软件工程的特点和脚本语言的易用性,具有如下特性:开源、易于维护、可移植、易于使用、简单优雅、广泛

2021-01-13 20:29:54 243

原创 JAVA基础知识(三)

**JAVA基础知识(三)**第五章 面向对象编程(基础篇)**需要达到的目标:1.了解面向对象的三大特征。2.掌握类与对象的关系、定义及使用。3.掌握对象的创建格式,并可以创建多个对象。4.掌握对象的内存分配过程。5.掌握封装性的概念及使用。6.掌握构造方法的定义格式、调用时机、构造方法的重载、构造方法的私有化意义。7.掌握匿名对象的概念及应用。8.可以通过所学到的知识完成简单类的开发。9.掌握String类的特点及其主要的操作方法。10.掌握this关键字的作用,并可以使

2021-01-13 20:13:04 67

原创 StringBuffer 和 StringBuilder 类

**StringBuffer 和 StringBuilder 类**String类型的变量进行修改操作时一定会引发对象的新建在java中所有的复杂类型变量中都会有一个方法hashCode():int,这个值是一个和变量存储位置相关的数据对象的创建和销毁是需要时间代价的使用StringBuffer和StringBuilder类的前提是频繁的修改操作和String类不同的是,StringBuffer和StringBuilder类的对象能够被多次的修改且不产生新的未使用对象。StringBui

2021-01-13 19:53:08 103 1

原创 JAVA基础知识(二)

java基础

2021-01-12 21:34:39 67

原创 JAVA基础知识(一)

JAVA基础知识第一章1 java开发环境搭建JDK 下载地址:http:www.oracle.com2 第一个java程序Hello.javapublic class Hello{ public ststic void main(String args[]){ System.out.println("Hello World!"); }}java中的程序都是以类为单位,所有的程序都必须在class定义范畴之内。public class定义要

2021-01-11 11:37:21 80

原创 计算最大公约数和最小公倍数

**计算最大公约数和最小公倍数**public class A2 { public static void main(String[] args) { /* * 1.输入合法的正整数 * 2.计算最大公约数 * 3.计算最小公倍数 * 4.输出计算结果 */ int k1,k2; Scanner sc = new Scanner(System.in); while(true) { System.out.println("请输入第一个正整数");

2021-01-05 15:59:53 175 1

原创 Linux学习笔记

Linux学习笔记什么是 Linux ?什么是操作系统?操作系统 ( Operation System, OS )就是在沟通你这个使用者跟硬件之间的讯息传递。也就是说,没有操作系统,那么你的计算机硬件就只是一堆废铁,什么工作都不能做的!那么操作系统里面含有什么东西呢?简单的来说,操作系统主要分为两个东西,一个是『核心』、一个是『一堆核心提供的工具』核心就是『 Kernel 』,他是一个操作系统的最底层的东西,由他来掌管整个硬件资源的工作状态,而 Linux 有 Linux 自己的核心, Window

2020-12-24 16:32:40 162 2

空空如也

空空如也

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

TA关注的人

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