
Java
老夫不正经
老夫一身才华
展开
-
「JAVA」线程生命周期分阶段详解,哲学家们深感死锁难解
每个事物都有其生命周期,也就是事物从出生开始到最终消亡这中间的整个过程;在其整个生命周期的历程中,会有不同阶段,每个阶段对应着一种状态,比如:人的一生会经历从婴幼儿、青少年、青壮年、中老年到最终死亡,离开这人世间,这是人一生的状态;同样的,线程作为一种事物,也有生命周期,在其生命周期中也存在着不同的状态,不同的状态之间还会有互相转换。在上文中,我们提到了线程通信,在多线程系统中,不同的线程执行不同的任务;如果这些任务之间存在联系,那么执行这些任务的线程之间就必须能够通信,共同协调完成系统任务。在本文中原创 2020-07-01 23:12:33 · 246 阅读 · 6 评论 -
「JAVA」通过实现生产者、消费者案例再次实践Java 多线程
线程通信,在多线程系统中,不同的线程执行不同的任务;如果这些任务之间存在联系,那么执行这些任务的线程之间就必须能够通信,共同协调完成系统任务。生产者、消费者案例案例分析在案例中明,蔬菜基地作为生产者,负责生产蔬菜,并向超市输送生产的蔬菜;消费者通过向超市购买获得蔬菜;超市怎作为生产者和消费者之间的共享资源,都会和超市有联系;蔬菜基地、共享资源、消费者之间的交互流程如下:在这个案例中,为什么不设计成生产者直接与给消费者交互?让两者直接交换数据不是更好吗,选择先先把数据存储到共享资源中,然后消费者再原创 2020-06-28 22:57:23 · 302 阅读 · 0 评论 -
「JAVA」Java 线程不安全分析,同步锁和Lock机制,哪个解决方案更好
线程不安全线程不安全的问题分析:在小朋友抢气球的案例中模拟网络延迟来将问题暴露出来;示例代码如下:public class ImplementsDemo { public static void main(String []args) { Balloon balloon = new Balloon(); new Thread(balloon, "小红").start(); new Thread(balloon, "小强").start(); .原创 2020-06-23 22:54:43 · 257 阅读 · 0 评论 -
「JAVA」通过抢气球案例,来梳理线程基础知识
程序在没有流程控制的前提下,代码都是从上而下逐行依次执行的。基于这样的机制,如果我们使用程序来实现边打游戏,边听音乐的需求时,就会很困难;因为按照执行顺序,只能从上往下依次执行;同一时刻,只能执行听音乐和打游戏的其中之一。为了解决这样的问题,在程序设计中引入了多线程并发。本文中的知识对windows、mac、linux系统都适用,但展示界面和功能名称上不太一样;相关的截图这里以windows为例。并行和并发并行和并发是两个很容易混淆的概念,他们在字面上理解起来可能没有很大的差异,但要放在计算机运行环.原创 2020-06-20 20:36:31 · 235 阅读 · 0 评论 -
「JAVA」运行时异常、编译时异常、自定义异常,通过案例实践转译和异常链
什么是异常从事Java开发的小伙伴对于“异常”应该不陌生,因为每天都会遇到不少异常,或捕获,或抛出。那究竟什么是异常?异常即非正常的,不同于平常、一般化的情况。在平时生活中,医生会说你身体的某个部位有异常,该异常会有什么什么的影响,是由某某原因引起的;再比如:我每天都准时打卡,按时上下班,那么我本月的考勤是正常的,反之,但凡有迟到、旷工、早退的情况之一的,我本月的考勤就会有异常。而在程序中,代码在运行中如果出现运行错误,程序会终止运行,这时由于错误导致程序运行终止的情况就是程序出现了异常。异常并.原创 2020-06-14 23:00:06 · 768 阅读 · 0 评论 -
「JAVA」线程基础知识不牢固?别愁,我不仅梳理好了,还附带了案例
程序在没有流程控制的前提下,代码都是从上而下逐行依次执行的。基于这样的机制,如果我们使用程序来实现边打游戏,边听音乐的需求时,就会很困难;因为按照执行顺序,只能从上往下依次执行;同一时刻,只能执行听音乐和打游戏的其中之一。为了解决这样的问题,在程序设计中引入了多线程并发。本文中的知识对windows、mac、linux系统都适用,但展示界面和功能名称上不太一样;相关的截图这里以windows为例...原创 2020-05-04 13:16:39 · 262 阅读 · 0 评论 -
「JAVA」详述Java异常体系,处理异常时配上finally效果更佳
什么是异常从事Java开发的小伙伴对于“异常”应该不陌生,因为每天都会遇到不少异常,或捕获,或抛出。那究竟什么是异常?异常即非正常的,不同于平常、一般化的情况。在平时生活中,医生会说你身体的某个部位有异常,该异常会有什么什么的影响,是由某某原因引起的;我每天都准时打卡,按时上下班,那么我本月的考勤是正常的,反之,但凡有迟到、旷工、早退的情况之一的,我本月的考情就会有异常。而在程序中,代码在运...原创 2020-04-29 23:23:42 · 220 阅读 · 0 评论 -
「JAVA」细述合理创建字符串,分析字符串的底层存储,你不该错过
Java基础之字符串操作——String字符串什么是字符串?如果直接按照字面意思来理解就是多个字符连接起来组合成的字符序列。为了更好的理解以上的理论,我们先来解释下字符序列,字符序列:把多个字符按照一定的顺序排列起来;而字符序列就是作为字符串的内容而存在的。所以可以把字符串理解为:把多个字符按照一定的顺序排列起来而构成的排列组合。如果还是不好理解,没有关系,我还有法宝。我们可以用烤串来比喻...原创 2020-04-25 23:01:49 · 317 阅读 · 0 评论 -
「JAVA」从语法到案例,从定义到使用,详细解释Java 内部类的完全实现
Java面向对象之内部类—inner class内部类Java 类中的可以定义的成员有:字段、方法、内部类,内部类是定义在类结构中的另一个类,因为定义在类的内部,故称为内部类。public class OuterClass { ...... public class InnerClass { ...... }}在上述的代码示例中...原创 2020-04-19 16:50:40 · 180 阅读 · 0 评论 -
「JAVA」以周的案例引出Java 枚举,以单例设计模式实践Java 枚举
引出枚举首先来考虑这样一个需求:判断一个员工(Employee)在一周的哪一天休息。解决方案:定义一个类Weekday来表示周1到周日,在类中分别使用7个常量来表示周1到周日,代码如下:public class Employee { // 休息日 private int restDay; public void setRestDay(int restDay)...原创 2020-04-17 23:15:47 · 248 阅读 · 0 评论 -
「JAVA」多态的灵魂,面向接口的程序设计,这才是你该懂得的接口(interface)
Java面向对象之接口——interface什么是接口一般计算机中的接口分为硬件接口和软件接口。硬件接口:是指两个硬件设备之间的连接方式,既包括物理上的接口,还包括逻辑上的数据传送协议。软件接口:通常是指程序代码,在Java中表示一种特殊的类,是具有的N个方法的特征集合,表示一种规范;还有一种情况数据接口,表示客户端和服务端之间的数据交互的方式。比如,显示器中封装了很多电子...原创 2020-04-15 23:30:21 · 739 阅读 · 4 评论 -
「JAVA」Java基础之冒泡排序、选择排序分析,简单、直观、明了
冒泡排序(Bubble Sort)冒泡排序(Bubble Sort):排序思路:对要排序的数组或者列表从头到尾依次比较相邻的两个元素的大小关系,若大于则交换位置,否则跳过,经过第一轮比较排序后可得出最大值;然后使开始第二轮比较,得出第二大的值;依次比较,用同样的方法对剩下的元素逐个比较。如果有N个元素,那么一共要进行N-1轮比较,第M轮要进行N-M次比较,其中M<N。(如果有6个...原创 2020-04-09 23:00:09 · 175 阅读 · 0 评论 -
[JAVA] Java面向对象之final、abstract抽象、和变量生命周期
Java面向对象之final、abstract抽象、和变量生命周期final修饰符final是最终、不可修改的意思, 在Java中它可以修饰非抽象类,非抽象方法和变量。但是需要注意的是:构造方法不能使用final修饰,因为构造方法不能够被继承。下面,咱们就来一一看看吧!使用final关键字修饰类先考虑下图的代码例子:代码显示错误,无法从SuperClass继承,编译器提示删除fina...原创 2020-04-02 21:26:55 · 261 阅读 · 0 评论 -
[JAVA] Java面向对象三大特征:封装、继承、多态
面向对象三大特征:封装、继承、多态高内聚和低耦合面向对象的最终目的是要构建强健、安全、高效的项目,也就是要实现项目的高内聚和低耦合:高内聚:把该模块的内部数据,功能细节隐藏在模块内部,不允许外界直接干预;只能通过公开的接口访问;低耦合:该模块只需要给外界暴露少量功能方法;模块之间相互依赖的程度不高;封装什么是封装把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块...原创 2020-04-01 22:27:03 · 350 阅读 · 0 评论 -
[JAVA] Java面向对象之包装类,拆箱、装箱
包装类,拆箱、装箱——一切皆对象为何要包装类在面向对象中,”一切皆对象”,但基本数据类型的特殊存在不太符合这一理念,面向对象面向得并不纯粹,因为基本类型变量并不是对象;涉及进制间的转换的算法,数据类型间的基本操作;如果都要我们来实现,那工作量就太大了;Java的集合框架并不支持基本数据类型的存储,只支持对象存储;故此,针对Java基本数据类型封装了包装类,每一个基本类型都有一个对应...原创 2020-03-29 21:27:26 · 197 阅读 · 0 评论 -
[JAVA] 只知对象属性,不知类属性?就算类答应,static都不答应
对象在面向对象的思想中,一切事物都可以认为是对象——万物皆对象,把对象定义成包含状态和行为的一个实体,存在于现实世界中并且可以与其他实体区分开来的。对象具有状态和行为;比如:想想你心仪的小姐姐,可以把这个小姐姐看作是一个对象,那么该对象有两方面的定义:状态和行为;状态,如身高,年龄,三围,头发(长发或者短发)等;行为,如调戏你、跳舞,玩手机等。类通过多个相同类型的对象的状态和行为分析,可以...原创 2020-03-23 22:06:47 · 223 阅读 · 0 评论 -
[JAVA]Java 数组、多维数组,动态、静态初始化,数组JVM内存模型分析
![#### 数组、多维数组,静态、动态初始化,都说明白了]什么是数组所谓数组,是具有相同数据类型的若干变量或者数据按照一定排序规则组合起来的一种数据存储格式。数组中的数据称为数组元素,我们使用索引来标识数组元素在数组中的存储位置,索引从0开始,步长是1,其后的索引依次递增:其中,数据类型包括以下两种:基本数据类:byte,short,int,long,float,double,c...原创 2020-03-22 17:54:02 · 751 阅读 · 0 评论 -
[JAVA] CLASSPATH环境变量必须要配置吗
)CLASSPATH是个啥CLASSPATH直译过来是类路径,是Java环境配置中要设置的一个环境变量,就是.class文件的路径,表示JVM从哪里去寻找要运行的class文件,CLASSPATH = D:\java表示执行java命令时去D:\java目录中去找需要被执行的class文件并运行。CLASSPATH能干啥在java5之前CLASSPATH没有默认值,如果想要使用当前路径作为...原创 2020-03-21 10:17:29 · 4817 阅读 · 2 评论 -
[JAVA] Java switch的使用细节
switch语句switch语句适用于对多个整型数值(包括负数)进行匹配判断,从而实现条件的分支控制。和if语句不同的是:if语句后面是根据其后的boolean表达式判断的,所以表达式的结构可以任意写,而switch只是相当于做“表达式 == 数值”的boolean表达式判断。相比较if来说,switch比较单一,仅仅只是对整数类型的判断,使用更简单。支持的基本数据类型这里的整数类型是除...原创 2020-03-21 09:52:28 · 405 阅读 · 0 评论 -
[JAVA] 不仅有Java运算符,更有优先级讲解,可以说很详细了
算术运算符 Arithmetic operators加号(+):在操作数值、字符、字符串时其结果各有不同;字符相加得到的是ASCII码表值;字符串相加时表示将字符串拼接在一起,得到的是组合后的新字符串;两个数值相加表示数学中的加法运算;除号(/):整数在使用除号操作时,得到的结果仍为整数,小数部分会被直接忽略,而不是四舍五入,但是当整数除以0的时候,会引发算术异常(Arithmet...原创 2020-03-18 20:32:03 · 299 阅读 · 0 评论 -
[JAVA] Java 变量、表达式和数据类型详解
一、变量变量: 表示存储空间,可用来存放某一类型(整数、小数…)的数据,没有固定值,变量值是可变的,可重复使用,也可以用来存储某种类型的未知数据。变量的特点:① 占据内存中的一块存储区域;② 该存储区域有自己的名称(变量名)和类型(数据类型);③ 可以被重复使用,可以在多处使用;④ 该区域的数据可以在同一类型范围内不断变化;Java变量的定义:1.先声明,再赋值:int i;...原创 2020-03-17 20:46:10 · 507 阅读 · 0 评论 -
[JAVA] 初识Java 和 Java的跨平台实现原理
詹姆斯.高斯林-公认的java之父原创 2020-03-13 08:21:30 · 198 阅读 · 0 评论 -
[JAVA] 安装Java 8详细过程
安装Java 8详细过程一、下载二、JDK 8安装二、JRE 安装三、环境变量四、验证是否安装成功一些别的东西一、下载这里选择的是Oracle JDK,关于OracleJDK 和 OpenJDK的区别可点击 Oracle JDK和OpenJDK之间的差异 了解。到Oracle官网下载JDK 8,以Windows 10操作系统为例,若是32位系统则下载“Windows x86”,否则...原创 2019-05-09 15:47:27 · 4318 阅读 · 2 评论 -
[Eclipse] Eclipse 配置 Gradle
开发环境 : jdk 1.8 + Eclipse 4.7 + Gradle 4.8 安装 jdk jdk 1.8 点击下载 jdk1.8 配置过程在此就不赘述,看运行结果: 安装Eclipse Eclipse 官网:点击下载Eclipse 安装Gradle 1.下载安装包:点击下载 2.解压gradle-4.8.1-bin.zip 到指定目录(我的...原创 2018-07-16 14:52:08 · 1192 阅读 · 0 评论