自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Q7 answers: a) and b)

Question 7

2021-02-09 21:23:16 206

原创 Java中有参数传递时的Lambda表达式及其省略:Arrays.sort(...)中Comparator接口的Lambda表达式实现

public class RedVelvet { private String name; private int age; public RedVelvet(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge()

2020-05-10 23:34:32 482

原创 编程转换思想:从匿名内部类到Lambda表达式、为何要用lambda表达式

public class DemoLambda { public static void main(String[] args) { //用实现Runnable接口来创建多线程要重新创一个实现类的话有点麻烦 //于是我们用匿名内部类 new Thread(new Runnable() { @Override public void run() { System.out.pr

2020-05-10 22:23:17 511 1

原创 Java线程池的用法、线程池的工厂类Executors,接口类ExecutorService

Java里面线程池的顶级接口是java.util.concurrent.Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是java.util.concurrent.ExecutorService。要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池不是较优的,因此在java.util.concurrent.Executors线程工厂类里面提供了一些静态工厂,生成一些常用的线程池。官方建议使用Executo

2020-05-10 21:53:49 606

原创 Linux中打包、压缩、解包、解压命令:tar,gzip,bzip2

打包和压缩Linux中打包和压缩是两个步骤,tar命令是打包操作,gzip和bzip2是两个压缩命令打包压缩命令可以合并打包文件和查看文件大小tar cf /tmp/etc-backup.tar /etcls -l /tmp/etc-backup.tarls -lh /tmp/etc-backup.tar:以M或者G的形式显示打包文件的同时进行压缩tar czf /tm...

2020-05-05 14:22:07 330

原创 Java多线程中的生产者与消费者问题:等待唤醒机制的应用:wait()和notify()

等待唤醒机制其实就是经典的“生产者与消费者”的问题。就拿生产包子消费包子来说等待唤醒机制如何有效利用资源:包子铺线程生产包子,吃货线程消费包子。当包子没有时(包子状态为false),吃货线程等待,包子铺线程生产包子(即包子状态为true),并通知吃货线程(解除吃货的等待状态),因为已经有包子了,那么包子铺线程进入等待状态。接下来,吃货线程能否进一步执行则取决于锁的获取情况。如果吃货获取到锁,那...

2020-05-04 22:13:20 260

原创 Java多线程之线程间通信和等待唤醒机制,调用wait和notify方法

等待唤醒机制1.1 线程间通信**概念:**多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。为什么要处理线程间通信:多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务...

2020-05-04 21:01:48 370 1

原创 Java中多线程中的线程状态概述: Timed Waiting(计时等待); BLOCKED(阻塞锁); Waiting(无限等待)

JVM虚拟机中线程的状态转换图new完线程后,各个线程开始抢cpu,抢到的进入运行状态,没有抢到的进入阻塞状态,阻塞状态和运行状态可以相互转换(多个线程一起抢夺cpu的使用权)。run出现异常或者结束的话会进入死亡状态。运行状态可以进入睡眠状态,睡眠结束若cpu空闲,进入运行状态,若不空闲,进入阻塞状态。休眠是可以自己醒的,无限等待状态是不能自己醒的,需要借助Object类中的方法...

2020-05-04 19:52:32 3401

原创 Java中的线程安全出现的原因和解决办法(多个线程共享资源,临界区)

线程安全出现的原因这里我们让多个线程共享同一个卖票资源:public class RunnableImpl implements Runnable { //总的票得数量 int tickets = 20; @Override public void run() { while (true) { if (tickets ...

2020-05-03 20:45:25 440

转载 Java线程同步:synchronized锁住的是代码还是对象

在Java中,synchronized关键字是用来控制线程同步的,就是在多线程的环境下,控制synchronized代码段不被多个线程同时执行。synchronized既可以加在一段代码上,也可以加在方法上。关键是,不要认为给方法或者代码段加上synchronized就万事大吉,看下面一段代码:class Sync { public synchronized void test() {...

2020-05-03 20:43:59 256

原创 Java使用匿名内部类创建多线程:实现Thread类和Runnable接口

匿名:没有名字内部类:写在其他类内部的类匿名内部类作用:简化代码 把子类继承父类,重写父类的方法,创建子类对象合一步完成 把实现类实现类接口,重写接口中的方法,创建实现类对象合成一步完成 匿名内部类的最终产物:子类/实现类对象,而这个类没有名字 格式: new 父类/接口(){ 重复父类/接口中的方法 };public class An...

2020-05-01 14:36:11 1180

原创 Java多线程之:创建多线程程序的第二种方式:实现Runnable接口

java.lang.RunnableRunnable 接口应该由那些打算通过某一线程执行其实例的类来实现。类必须定义一个称为 run 的无参数方法。java.lang.Thread类的构造方法Thread(Runnable target) 分配新的 Thread 对象。Thread(Runnable target, String name) 分配新的 Thread 对象。实现步骤...

2020-05-01 14:20:53 262

原创 Thread.sleep()线程睡眠的方法使用

public class ThreadSleep { public static void main(String[] args) { for (int i = 0; i < 60; i++) { System.out.println(i); try { Thread.sleep(1000...

2020-05-01 13:37:03 1997

原创 Java多线程之:获取当前线程名getName()和Thread类的静态方法类currentThread()

使用Thread类中的方法getName()String getName()返回该线程的名称。可以先获取到当前正在执行的线程,使用线程中的方法getName()获取线程的名称static Thread currentThread() 返回对当前正在执行的线程对象的引用。public class MyThread extends Thread { @Override pu...

2020-05-01 01:19:31 834

原创 Java多线程之:创建多线程程序的第一种方式:创建Thread类的子类

java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类实现步骤:1. 创建一个Thread类的子类2. 在Thread类的子类中重写Thread类中的run方法,设置线程任务(开启线程要做什么?)3. 创建Thread类的子类对象4. 调用Thread类中的方法start方法,开启新的线程,执行run方法 void start(...

2020-05-01 00:31:53 476

原创 Java自定义异常类:使用原因,如何定义,自定义异常类举例

为什么需要自定义异常类:我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。例如年龄负数问题,考试成绩负数问题等等。在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异...

2020-04-30 07:29:37 10867

原创 异常的几个注意事项:处理多个异常,可以不处理的异常,try...catch异常抛出的顺序

多个异常使用捕获处理多个异常分别处理。多个异常一次捕获,多次处理。多个异常一次捕获一次处理。一般我们是使用一次捕获多次处理方式,格式如下:try{ 编写可能会出现异常的代码}catch(异常类型A e){ 当try中出现A类型异常,就用该catch来捕获. 处理异常的代码 //记录日志/打印异常信息/继续抛出异常}catch(异常类型B e...

2020-04-30 07:24:34 1046

原创 异常的处理:Java异常处理的五个关键字4:finally

finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。所以这个地方要避免使用return什么时候的代码必须最终执行?当我们在try语句块中打开了一些物理资源(磁盘文件/网络连接/数据库连接等),我们都得在使用完之后,最终关闭打开的资源。fina...

2020-04-30 07:18:16 323

原创 异常的处理:Java异常处理的五个关键字3:try…catch

处理异常的两种方法:该方法不处理,而是声明抛出,由该方法的调用者来处理(throws)。在方法中使用try-catch的语句块来处理异常。try-catch的方式就是捕获异常。捕获异常:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理。捕获异常语法如下:try{ 编写可能会出现异常的代码}catch(异常类型 e){ 处理异常的...

2020-04-30 07:15:44 667

原创 异常的处理:Java异常处理的五个关键字2:throws

声明异常:将问题标识出来,报告给调用者。如果方法内通过throw抛出了编译时异常,而没有捕获处理,那么必须通过throws进行声明,让调用者去处理。关键字throws运用于方法声明之上,用于表示当前方法不处理异常,而是提醒该方法的调用者来处理异常(抛出异常).声明异常格式:修饰符 返回值类型 方法名(参数) throws 异常类名1,异常类名2…{ } 声明异常的代码演示:publ...

2020-04-30 07:10:22 347

原创 Objects类的非空判断:requireNonNull(T obj) 查看指定引用对象不是null

Objects类中的有一些静态方法是null-save(空指针安全的)或null-tolerant(容忍空指针的),那么在它的源码中,对对象为null的值进行了抛出异常操作。public static <T> T requireNonNull(T obj):查看指定引用对象不是null。查看源码发现这里对为null的进行了抛出异常操作:public static <T&...

2020-04-30 07:05:24 222

原创 异常的处理:Java异常处理的五个关键字1:throw

抛出异常throw在编写程序时,在定义方法时,方法需要接受参数。那么,当调用方法使用接受到的参数时,首先需要先对参数数据进行合法的判断,数据若不合法,就应该告诉调用者,传递合法的数据进来。这时需要使用抛出异常的方式来告诉调用者。在java中,提供了一个throw关键字,它用来抛出一个指定的异常对象。创建一个异常对象。封装一些提示信息(信息可以自己编写)。需要将这个异常对象告知给调用...

2020-04-30 07:02:28 484

原创 Java中异常的概念解释:异常类,异常的分类,异常的抛出, 异常的产生过程解析

异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异常指的并不是语法错误,语法错...

2020-04-30 06:57:38 258

原创 Map接口下的HashMap类的一个子类LinkedHashMap

在HashMap下面有一个子类LinkedHashMap,它是链表和哈希表组合的一个数据存储结构。输出是根据输入的顺序输出的public class LinkedHashMapDemo { public static void main(String[] args) { LinkedHashMap<String, String> map = new Lin...

2020-04-30 06:46:03 161

原创 HashMap存储自定义类型键值: 重写HashCode和equals方法

一个团体作为一个HashMap的key值,若团体成员的姓名年龄相同,则看作key值相同因为是自定义类,所以需要重写HashCode和equals方法public class RedVelvet { private String name; private int age; public RedVelvet() { } public RedVelv...

2020-04-30 06:44:58 445

原创 HashMap遍历的方法2:entrySet

Map集合中的方法:Set<Map.Entry<K,V>> entrySet() 返回此映射中包含的映射关系的 Set 视图。实现步骤:使用Map集合中的方法entrySet(),把Map集合中多个Entry对象取出来,存储到一个Set集合中遍历Set集合,获取每一个Entry对象使用Entry对象中的方法getKey()和getValue()获取键与值...

2020-04-30 06:40:59 427

原创 HashMap遍历的几个方法:keySet和entrySet

Map集合的第一种遍历方式:通过键找值的方式Map集合中的方法:Set<K> keySet() 返回此映射中包含的键的 Set 视图。实现步骤:使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中遍历set集合,获取Map集合中的每一个key通过Map集合中的方法get(key),通过key找到valuepublic cl...

2020-04-30 06:37:50 224

原创 Map接口中的几个常用方法put(...) remove(...) get(...) containsKey(...)

public V put(K key, V value): 把指定的键与指定的值添加到Map集合中public V remove(Object key): 把指定的键 所对应的键值对元素 在Map集合中删除,返回被删除元素的值public V get(Object key) 根据指定的键,在Map集合中获取对应的值boolean containsKey(Object key) 判断集合中...

2020-04-30 06:36:33 901

原创 Map接口和HashMap接口和LinkedHashMap接口的特点

java.util.Map<k,v>集合Map集合的特点:1. Map集合是一个双列集合,一个元素包含两个值(一个key,一个value)2. Map集合中的元素,key和value的数据类型可以相同,也可以不同3. Map集合中的元素,key是不允许重复的,value是可以重复的4. Map集合中的元素,key和value是一一对应java.util.HashMap&l...

2020-04-30 06:32:35 122

原创 Java中自定义类的Collection.sort(...)方法:Comparable和Comparator接口

public static <T> void sort(List<T> list) :将集合中元素按照默认规则排序。public static <T> void sort(List<T> list,Comparator<? super T> ) :将集合中元素按照指定规则排comparator 和 comparable的区别c...

2020-04-29 13:01:53 340

原创 Collections集合工具类的一些常用静态方法: addAll(), shuffle(), sort()

java.utils.Collections 是集合工具类public static <T> boolean addAll(Collection<T> c, T... elements) :往集合中添加一些元素。public static void shuffle(List<?> list) 打乱顺序 :打乱集合顺序。public static <...

2020-04-29 13:00:57 260

原创 Java参数传递到方法时的可变参数

可变参数在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化成如下格 式:修饰符 返回值类型 方法名(参数类型... 形参名){ }其实这个书写完全等价与修饰符 返回值类型 方法名(参数类型[] 形参名){}只是后面这种定义,在调用时必须传递数组,而前者可以直接传递数据即可。JDK1.5以后。出现了简化操作。… 用在参数上,称之为可变参数...

2020-04-29 01:40:10 540

原创 Java LinkedHashSet的特性用法

LinkedHashSet我们知道HashSet保证元素唯一,可是元素存放进去是没有顺序的,那么我们要保证有序,怎么办呢? 在HashSet下面有一个子类java.util.LinkedHashSet,它是链表和哈希表组合的一个数据存储结构。 演示代码如下:public class LinkedHashSetDemo {public static void main(String[] ar...

2020-04-29 01:38:05 168

原创 Java HashSet()集合中存储自定义元素(自定义类)

HashSet()存储自定义元素如果不重写hashCode,两个new出来的东西hashCode一定不相等要使得同姓名,同年龄的人的hashCode值相等,需要重写hashCode方法public class Person { private String name; private int age; public Person() { } p...

2020-04-29 01:36:38 610

原创 Java中的Hash值及其重写

Java中的Hash值**哈希值:**是一个十进制的整数,由系统给出(就是对象的地址值,是模拟出来的地址,在Object类有一个方法,可以获取对象的地址值)int hashCode() 返回对象的哈希值hashCode() 源码:​ public native int hashCode;​ native方法代表该方法调用的是操作系统的方法public class DemoHa...

2020-04-29 01:34:54 951

原创 Java中Set接口和HashSet集合介绍

Set接口java.util.Set 接口和java.util.List 接口一样,同样继承自 Collection 接口,它与 Collection 接口中的方 法基本一致,并没有对 Collection 接口进行功能上的扩充,只是比 Collection 接口更加严格了。与 List 接口不 同的是, Set 接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。Set 集合有多个子...

2020-04-29 01:30:28 292

原创 Java中List的子类:ArrayList集合和LinkedList集合

List的子类这里主要讲LinkedList3.1 ArrayList集合java.util.ArrayList 集合数据存储的结构是数组结构。元素增删慢,查找快,由于日常开发中使用最多的功能为 查询数据、遍历数据,所以 ArrayList 是最常用的集合。许多程序员开发时非常随意地使用ArrayList完成任何需求,并不严谨,这种用法是不提倡的。此实现是不同步的,多线程...

2020-04-29 01:28:45 194

原创 Java中的list集合,接口介绍,特点,常用方法

List集合1.1 List接口介绍java.util.List 接口继承自Collection 接口,是单列集合的一个重要分支,习惯性地会将实现了 List接口的对 象称为List集合。在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过 索引来访问集合中的指定元素。另外,List集合还有一个特点就是元素有序,即元素的存入顺序和取出顺序一致。List接...

2020-04-29 01:25:28 338

原创 软件工程之需求定义

需求定义需求是对外可见的系统特征需求管理有三项任务学习——需求获取剪枝——需求优选文档化——撰写需求规格说明书需求, 是人们要解决的某个问题或达到某种目的的需要。是系统或其组成部分为满足某种书面规定(合同,标准,规范等)所要具备的能力。需求将作为系统开发,测试,验收,提交的正式文档依据。”每一个“人造物都是一个内部环境与外部“”环境的接口”。这里内部环境指人造物本身的...

2020-04-25 22:54:38 2325

原创 软件工程之需求分类

业务需求业务需求是指那些可以帮助企业达成组织目标(包括策略目标)的需求项企业的业务需求是关于企业业务的陈述,和这个需求如何被实现无关,无论是手动的还是通过系统来完成。业务需求被叫做业务目标例如:携程旅行的业务需求是卖飞机票公司的目标:是成为当人们想买飞机票时首先想到的公司系统需求系统需求的满足使得系统实现预期的功能,它从用户的角度描述系统在做什么,与系统是由什么硬件和软件实现...

2020-04-25 22:54:24 2997

空空如也

空空如也

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

TA关注的人

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