java基础(进阶)
文章平均质量分 83
包含java基础部门,以及进阶部分,由浅到深,从java基础语法,到函数,到对象,从原码角度了解渗透分析各个知识点,进阶部门包含反射,多线程,线程池 等基本概念以及底层实现逻辑,专栏持续更新
从零开始·
这个作者很懒,什么都没留下…
展开
-
java进阶—重要概念反射
反射: 它是java中的一个很重要的概念,是框架设计的灵魂框架呢?就是一个半成品软件,我们在这半成品上进行开发,比如我们经常提到spring springmvc springboot spingcloud 等等也许有的小伙伴会说,框架别人都写好了,我只要在上进行CURD就行了,还要学习反射干什么?,话是这么说,但知道反射,对于后续框架的学习与应用会更加得心应手。原创 2023-06-27 10:17:55 · 706 阅读 · 0 评论 -
java进阶—通俗易懂线程池的概念(底层原理)及使用
首先,我们知道创建一个线程 可以直接 使用这种形式来创建,当线程的run 方法执行结束,线程就终止了,线程对象就会被垃圾回收机制(GC)释放然而在我们 开发工作中,特别是一些大厂,高并发的情况随处可见,就需要很多线程来支撑,在没了解线程池之前,我们创建多个线程是这样的无非就是new多个,你要多少个我给你创造多少个要知道,在高并发的情况下,这样创建多线程是很消耗性能的,不可取,这就需要对线程进行统一管控,就引入了线程池的概念。原创 2023-06-27 09:57:01 · 208 阅读 · 0 评论 -
java进阶—代码演示多线程的生命周期
回顾一下到现在,我们已经知道了今天,我们一起来看看线程的生命周期,生命周期这个词在后续的javaweb 相关知识点中会经常提起知己知彼,想要用好线程,就得先了解它。原创 2023-06-26 14:09:14 · 193 阅读 · 0 评论 -
java进阶—线程间通信(通俗易懂等待唤醒机制)
今天我们来看一看,线程之间的通信,也就是我们所说的等待唤醒机制。原创 2023-06-10 16:52:50 · 826 阅读 · 0 评论 -
Java 进阶—死锁造成原因及其解决
先举个通俗点的例子 小明跟小红分别同时参加两个会议,这时候办公室刚好只有一台笔记本(在小红手上),一台投影仪(在小明手上),这是两个都想要对方的东西,两人互不相让,开始争执,这样都开不成会议,就形成了死锁。今天我们来了解一下线程死锁,死锁很好理解,从字面上来看就是锁死了,解不开,在大街上看到一对卧龙凤雏的情侣,怎么说,你们给我锁死,不要分开去霍霍别人。把小明跟小红换成两个线程,所以,一句话,死锁就是两个或两个以上的线程争夺彼此的锁,造成阻塞。首先,死锁产生需要两个或者两个以上线程 (例子中的小明跟小红)原创 2023-06-08 11:31:06 · 1163 阅读 · 1 评论 -
java进阶—线程安全问题
就比如,快五一了,12306 购票,假设从北京到上海的 高铁票 一共只有200 张,现在3个人同时在线抢票,可以把一个人的app理解成一个线下窗口,这样在没有处理线程安全的情况下,就会出现抢到同一张票的可能性。比如,你去上厕所,一个坑位一个人,你刚蹲进去,刚好另一个人也很着急,他刚好也进去了,这就出事了,解决办法,是不是给厕所上了锁,你进去,锁住,别人只能等,等你出来他才能进去。这里先说明一点,这里加了sleep,并不说明 加了才出现 错票的线程问题,为了演示,我们只是把概率提升了,不加也会出现。原创 2023-03-07 16:18:30 · 470 阅读 · 0 评论 -
java 进阶—线程的常用方法
解析(看的懂得小伙伴可以略过): 我们在主线程中,直接加了 join, 所以得等主线程执行完成再执行主线程,由于我们是在主线程之后加的判断线程 thread-0是否存活,这时候 thread-0 已经执行完任务了,生命周期结束,所以此时的thread-0 已经终止了。举个例子:比如还是前面 thread-0 跟 主线程 抢占cpu执行权,现在我们在主线程中加一个 限制 条件,当主线程 循环到 10 时,让主线程进入阻塞状态,thread-0优先执行完,主线程再开始执行。今天,我们来看看线程的基础操作。原创 2023-03-02 16:47:12 · 374 阅读 · 0 评论 -
java进阶—多线程
学习线程,我们先来了解了解什么是进程?什么是线程:就是在操作系统中运行的程序:就是进程的一个执行单元,或者一条执行路劲比如:我们打开应用商店,这个应用商店就是一个进程,应用商店里面也可以同时下载很多应用,每个应用的下载就是线程一个进程至少有一个线程,一个进程里面如果有多个线程,我们称这个进程为多线程进程我们先来看看程序没有多线程是怎样运行的现在有一个售票的窗口 Ticket ,里面有可以买票的功能, 模拟两个人进行购票。原创 2023-03-01 16:54:45 · 308 阅读 · 0 评论 -
java进阶Map 集合
泛型里面,贴的标签是 键值对的类型 , ,括号里面的3 是设置这个Map 容器的大小 ,开发中一定要设置map的初始化大小,具体多少按需求而定。可以说HashMap在开发中最常用,代码中随处可见,创建也很简单,new 一个 ,一样的集合创造出来了,不用就浪费了。创建三个学生,有属性(姓名,年龄),给每个学生定义上整形编号, 保存在map中,并且遍历输出学生编号,姓名,年龄。可以看到,entrySet效率是最高的 forEach 效率是最低的。【最后来一个例子,加深对map集合的使用】原创 2023-02-23 09:28:58 · 399 阅读 · 0 评论 -
java进阶—一篇文章搞懂set 集合 及其底层实现
linkedHashSet (这个是HashSet的子节点),它是有序且唯一,底层结构为链表加哈希表,链表保证了元素有序(这个有序是顺序,不是排序的大小),有序是因为它在节点处增加了前和后 (属性维护节点的前后添加顺序)那如果我要找 16 号篮球球在哪个组呢?这数据才24, 要找到也方便,要是数据量变大,成百上千,分成多个组,要快速找到想要的编号在哪个组,就显得困难了。这要我们要找一个编号就很方便,比如找16,16%6 =4 16 在第四组 ,这种方式就是高效的散列,我们称之为Hash。原创 2023-02-03 16:55:03 · 1323 阅读 · 0 评论 -
java进阶—List
上节回顾List 是一个有序的,允许重复的Collection,其下的子类主要有 ArrayList LinkedList,Vector(这个官方不推荐使用)那么同为list的子类,ArrayList 跟 LinkedList 有什么区别呢?数组的角标从0 开始 这个我们之前已经知道了,数组的好处查询快,有角标直接定位就好了,但是增删的效率比较慢当进行删除一个元素操作时,其他元素需要向前或者向后移动。原创 2022-12-22 14:32:03 · 1738 阅读 · 0 评论 -
一篇文章彻底明白重要概念——注解
好,看不懂没关系一步一步慢慢来先不管注解,注释这个概念应该就很熟悉了,文档注释,单行注释,多行注释注释是对一段程序,一个方法,一个类进行描述,是给我们程序员看的,都知道,注解是不会被编译的,会被忽略注解,同样的道理,其实就是用来说明代码的,但是注解是 给计算机看的,是会被编译的因此: 注解概念:jdk1.5之后出现,是对程序进行说明,并且会被编辑,给计算机看的来看看toString 方法原创 2022-12-21 14:34:57 · 693 阅读 · 0 评论 -
java进阶—集合
在面向对象那刚熟悉的 类(class)、接口(interface)、枚举、字符串(String 以及 他的衍生类 StringBuild、StringBuffer,数组 等等)Map集合中的每一个元素都包含键值对,并且key是唯一的,使用map集合可以根据指定的key找到value,这一个特性在开发中合理使用,能极大提高性能。前面我们知道了一个能存东西的数据结构,数组 java 基础——数组,现在我们来看一个高级一点的东西,集合。现在我们已经清楚的明白了,集合是什么,集合的作用。原创 2022-11-28 13:57:53 · 500 阅读 · 0 评论 -
java基础—String
这两种创建最主要的区别在于,一个在公共池中,一个在堆内存中,不用想new 出来的都在内存中,代码的高效能节省很多成本,尽量不要让堆内存有压力,后面我们会知道,JVM 的优化都是在 堆内存中。是在堆内存中重新开辟一块新的空间,因此msg1跟msg3不是同一个内存地址,返回false。接着执行第二行代码,会在公共区找有没有“java资讯” 这个对象,有就直接拿来用 ,所以msg1跟 msg2 内存地址相同,返回true。这在堆内存中又开辟了一个新的空间,所以两个内存地址不同,返回 false。原创 2022-11-23 11:26:19 · 468 阅读 · 0 评论 -
Java 重写、重载,这篇文章看了就明白
重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写也就是说:重写就是子类去重新写父类可以给你访问的方法,你的方法跟父类的方法名字,返回值,参数类型一模一样,外部的基本结构不变,方法里面的核心,逻辑内容自己重新写比如:父类 Animal 的方法System . out . println("动物会睡觉");} }子类 猫 CatSystem . out . println("猫会睡觉");} }原创 2022-11-07 10:51:33 · 170 阅读 · 0 评论 -
搞不清楚 封装、继承、多态?一篇文章解决
我们已经基本了解了面向对象的一些概念 java基础—面向对象敲黑板!!现在我们来看看面向对象的 三大特征 封装 ,继承 ,多态原创 2022-09-28 11:51:22 · 250 阅读 · 0 评论 -
java基础—面向对象
母胎solo怎么办? 那就自己new一个对象在Java武侠界中,流传着这么一句话:万事万物皆对象注意区分:所谓面向对象,就是,以类/对象来作为最小单位,考虑的是谁来做所谓面向过程,就是,强调功能行为,考虑怎么做还是举一个 最 常见的 例子 :把大象装进冰箱我也不知道大象会不会反抗,也不知道抬不抬得动,更别说冰箱能塞进一头大象了这里其实也可以说明,大到宇宙,小到原子,在码界中都只是一个对象 ,可能觉得很抽象,别急!!我们一步一步来看我们先用面向过程的思维来看:把打开冰箱把大象塞进去把冰箱门关上接下来来看看 面原创 2022-06-13 10:13:29 · 236 阅读 · 0 评论 -
超详细 java二维数组解析
咳咳,有小伙伴公众号私信说需要出一期二维数组 的知识点,我翻了翻公众号的历史文章,果然没有,这边自罚一杯1. 二维数组基本概念之前我们已经知道什么是 数组(一维数组)javaj基础—数组,数组的存取这里补充一点: 数组本身是引用数据类型 ,数组的元素 可以是 基本数据类型 跟 引用数据类型那么?什么是二维数组 ?官方定义:以一维数组作为一维数组元素的数组要是有点绕,不好理解,没关系,简单来说,就是一维数组里面存一维数组 ,这就是二维数组到这,是不是已经基本明白了二维数组的概念了现在我们原创 2022-04-26 10:45:49 · 6578 阅读 · 1 评论 -
java基础—IO流
概念IO(input,output)流通俗来讲,包含输入输出流,对数据的输入、输出操作以流的形式,主要负责设备(内存到硬盘)之间数据传输,在java 这方面 简单来说 ,就是使用java代码来操作文件输入(input):读取外部数据,从 硬盘 到 内存(程序 )中输出(input):将内存(程序)中的数据 写入 硬盘中了解了什么是输入,输出流, 现在我们来看流的划分:按照操作数据单位不同来划分:字节流(8bit)、字符流(16bit)读取类似txt文件,我们一般用字节流读取类似图片,视频,我们原创 2022-04-19 15:16:57 · 332 阅读 · 0 评论 -
java 基础 —异常
基本概念首先我们要知道,一个程序在运行过程中可能会遇到程序终止的情况,一般这种情况可以分成两大类一类是可以处理,非致命性的,正确处理之后程序可以进行,就是我们说的 异常另一类是不能进行简单的恢复执行,程序遇到了严重的不正常情况,是致命性的,称之为 错误 , 包括 虚拟机错误,动态连接失败等异常 按照性质,又分为 编译时异常 跟 运行时异常编译时异常,程序正确,外部条件不满足引发的异常,源代码(.java文件)编译成字节码(.class文件)编译不通过运行时异常,程序错误,程序存在bug, 比原创 2022-04-15 16:55:59 · 440 阅读 · 0 评论 -
java 基础——数组
什么是数组?官方定义:数组(Array)是有序的元素序列。简单来说:可以把数组想象成一个容器,用来装东西的,每个东西有自己的编号,并且编号是从0 开始(重点)直接来看语法:数据类型 [] 标识符(自己取的名字) = new 数据类型 [数组里元素个数]或者数据类型 [] 标识符(自己取的名字) = {数组内所有元素}先来看上述 两种数组创建 的例子数据类型 [] 标识符(自己取的名字) = new 数据类型 [数组里元素个数]int[] array = ne原创 2022-04-14 09:38:52 · 443 阅读 · 0 评论 -
java 基础——函数(方法)
这里写目录标题函数基本定义、语法函数的调用函数基本定义、语法首先我们先要了解什么是函数?函数的定义:在类中,有特定功能的一段独立代码块说人话:简单来说就是,在一个类(一个 .java 文件)里面,一段有自己存在的意义,有自己作用的独立代码语法:修饰符 返回值类型 方法名(参数类型 参数名){…方法体…return 返回值;}这里引出了新的知识点: 修饰符修饰符分为:访问控制修饰符 与 非访问控制修饰符首先我们来看 访问控制修饰符访问控制:顾名思义就是 控制访问,用原创 2022-03-22 11:36:05 · 31325 阅读 · 2 评论 -
关于java流程控制语句的那些事
java 的流程控制前言一、选择结构1. if 语句2. if-else 语句2. if-else 语句二、循环结构2. while循环2. do...while循环总结3. for循环(开发中经常使用,使用频率最高)前言流程控制主要作用于:用来判断某个程序在不同条件下,执行不同逻辑。按结构分类,流程控制可分为:顺序结构、选择结构、循环结构顺序结构:程序从上往下执行选择结构:根据程序在不同条件下,选择执行不同的逻辑代码循环结构:在一定的条件下,重复执行某段代码。一、选择结构java选择结构原创 2021-12-10 11:11:52 · 1042 阅读 · 0 评论 -
关于java运算符,看这篇就够了
运算符算术元素符1. +(加) -(减) *(乘) /(除) %(取余) ++(自增) --(自减)2. %: 取模运算赋值运算符1.运算符号: = , += ,-= , *=, /=, %=比较运算符1.== , !=, > , < ,<= ,>=, instanceof逻辑运算符1.&(与) |(或) !(非) ^(异或) && ||位移运算符三元运算符写在最后算术元素符1. +(加) -(减)原创 2021-11-18 16:50:52 · 703 阅读 · 1 评论 -
java基础篇——一篇文章快速搞懂基础语法
java基础篇——基础语法关键字和保留字标识符注释变量类型转换关键字和保留字1.什么是关键字?通俗来说就是带有特殊含义的字符,有自己专门用途的单词2.特点?关键字全部由小写构成,以下是java官方列举出的关键字注意:保留关键字:指的是现有版本中尚未使用,后续可能会作为关键字使用,自己命名标识符要避免使用这些关键字,并且Java 的 null 不是关键字,类似于 true 和 false,它是一个字面常量,不允许作为标识符使用。标识符1.什么是标识符?官方解释:对各种变量,方和类等要素命原创 2021-11-12 16:53:37 · 702 阅读 · 0 评论 -
java基础篇——环境搭建
java基础篇——环境搭建下载安装1. 下载2. 安装配置环境变量1. 配置2. 验证下载安装1. 下载JDK是整个java开发的核心,通俗来讲,你写的java程序想要跑起来,就必须安装JDK这个运行环境,它包含了java虚拟机和类库,下面就来讲讲JDK在win10上的安装以及一些配置目前市面上公司的开发环境大多以1.8+版本为基础,当然也有些老项目是1.7,换汤不换药,这边以1.8为例,毕竟它的新特性类似:Lambda、streamApi 以及Optional等等,能够在很大程度上简化我们的代码量原创 2021-11-11 16:47:59 · 826 阅读 · 0 评论