![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 79
向着五星的方向
阿里云专家博主,华为云云享专家,专注于Java全栈,大数据方向,欢迎大家三连,有事可以私聊!
展开
-
Java之动态代理的详细解析
无侵入式的给方法增强功能。原创 2023-10-12 22:59:58 · 325 阅读 · 2 评论 -
Java反射的详细解析之三
private修饰value而且没有对外提供getvalue和setvalue的方法。所以,在外界不能获取或修改value记录的地址值。集合中的泛型只在java文件中存在,当编译成class文件之后,就没有泛型了。第二个方向:反射可以跟配置文件结合起来使用,动态的创建对象,动态的调用方法。需求: 利用反射根据文件中的不同类名和方法名,创建不同的对象并调用方法。字符串,在底层是一个byte类型的字节数组,名字叫做value。在这个练习中,我需要你掌握的是字符串不能修改的真正原因。原创 2023-10-11 21:38:19 · 84 阅读 · 0 评论 -
Java之反射的详细解析二
Object invoke(Object obj, Object... args) :运行方法。如果当前获取到的是私有的,必须要临时修改访问权限,否则无法使用。参数二:调用方法的传递的参数(如果没有就不写)返回值:方法的返回值(如果没有就不写)参数一:用obj对象调用该方法。最后的s表示所有,复数形式。Declared表示私有。原创 2023-10-10 23:58:21 · 96 阅读 · 0 评论 -
Java反射的详细解析一
是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法;这种动态获取信息以及动态调用对象方法的功能称为Java语言的反射机制。利用创建的对象调用类里面的内容可以跟,把要创建的对象信息和方法写在配置文件中。读取到什么类,就创建什么类的对象读取到什么方法,就调用什么方法此时当需求变更的时候不需要修改代码,只要修改配置文件即可。原创 2023-10-09 22:27:00 · 146 阅读 · 0 评论 -
Java之UDP,TCP的详细解析
第一个用户正在上传数据,第二个用户就来访问了,此时第二个用户是无法成功上传的。服务器只能处理一个客户端请求,接收完一个图片之后,服务器就关闭了。每来一个用户,就开启多线程处理。所以,使用多线程改进。原创 2023-10-08 23:34:41 · 1562 阅读 · 0 评论 -
Java之TCP,UDP综合小练习一
创建客户端对象,创建输入流对象指向文件,每读一次数据就给服务器输出一次数据,输出结束后使用shutdownOutput()方法告知服务端传输结束。创建服务器对象,创建输出流对象指向文件,每接受一次数据就使用输出流输出到文件中,传输结束后。客户端:数据来自于本地文件,接收服务器反馈。服务器:接收到的数据写入本地文件,给出反馈。客户端创建对象,使用输出流输出数据。服务端创建对象,使用输入流接受数据。客户端:发送数据,接受服务器反馈。服务端使用输出流给出反馈数据。客户端使用输入流接受反馈数据。原创 2023-10-07 23:22:48 · 783 阅读 · 0 评论 -
UDP通信程序的详细解析
UDP协议是一种不可靠的网络协议,它在通信的两端各建立一个Socket对象,但是这两个Socket只是发送,接收数据的对象,因此对于基于UDP协议的通信双方而言,没有所谓的客户端和服务器的概念。Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。调用DatagramSocket对象的方法发送数据(在单播中,这里是发给指定IP的电脑但是在组播当中,这里是发给组播地址)创建发送端Socket对象(DatagramSocket)原创 2023-10-06 23:39:44 · 374 阅读 · 0 评论 -
Java之网络编程的详细解析
计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统网络编程在网络通信协议下,不同计算机上运行的程序,可以进行数据传输。原创 2023-10-05 22:22:51 · 247 阅读 · 0 评论 -
Java之并发工具类的详细解析
1 ,HashMap是线程不安全的。多线程环境下会有数据安全问题2 ,Hashtable是线程安全的,但是会将整张表锁起来,效率低下3,ConcurrentHashMap也是线程安全的,效率较高。在JDK7和JDK8中,底层原理不一样。原创 2023-10-04 20:03:45 · 211 阅读 · 2 评论 -
Java之原子性问题的解决
所谓的原子性是指在一次操作或者多次操作中,要么所有的操作全部都得到了执行并且不会受到任何因素的干扰而中断,要么所有的操作都不执行,多个操作是一个不可以分割的整体。原创 2023-10-03 23:26:20 · 333 阅读 · 0 评论 -
Java之多线程的综合练习二
在此次抽奖过程中,抽奖箱1总共产生了6个奖项,分别为:10,20,100,500,2,300。在此次抽奖过程中,抽奖箱2总共产生了6个奖项,分别为:5,50,200,800,80,700。分别为:5,50,200,800,80,700最高奖项为800元,总计额为1835元。分别为:10,20,100,500,2,300最高奖项为300元,总计额为932元。在此次抽奖过程中,抽奖箱2中产生了最大奖项,该奖项金额为800元。在此次抽奖过程中,抽奖箱2总共产生了6个奖项。最高奖项为800元,总计额为1835元。原创 2023-10-02 21:55:24 · 609 阅读 · 3 评论 -
Java之多线程综合练习小题一
有一个抽奖池,该抽奖池中存放了奖励的金额,该抽奖池中的奖项为 {10,5,20,50,100,200,500,800,2,80,300,700};一共有1000张电影票,可以在两个窗口领取,假设每次领取的时间为3000毫秒,创建两个抽奖箱(线程)设置线程名称分别为“抽奖箱1”,“抽奖箱2”抽奖箱1 又产生了一个 100 元大奖。抽奖箱1 又产生了一个 200 元大奖。抽奖箱1 又产生了一个 800 元大奖。抽奖箱2 又产生了一个 700 元大奖。抽奖箱1 又产生了一个 10 元大奖。XXX抢到了XXX元。原创 2023-10-01 22:16:09 · 355 阅读 · 0 评论 -
Java之多线程的生产者消费者问题的详细解析
概述生产者消费者模式是一个十分经典的多线程协作的模式,弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻。所谓生产者消费者问题,实际上主要是包含了两类线程:一类是生产者线程用于生产数据一类是消费者线程用于消费数据为了解耦生产者和消费者的关系,通常会采用共享的数据区域,就像是一个仓库生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为消费者只需要从共享数据区中去获取数据,并不需要关心生产者的行为Object类的等待和唤醒方法方法名说明。原创 2023-09-29 22:01:09 · 246 阅读 · 0 评论 -
Java之线程的详细解析二
虽然我们可以理解同步代码块和同步方法的锁对象问题,但是我们并没有直接看到在哪里加上了锁,在哪里释放了锁,为了更清晰的表达如何加锁和释放锁,JDK5以后提供了一个新的锁对象Lock。弊端:当线程很多时,因为每个线程都会去判断同步上的锁,这是很耗费资源的,无形中会降低程序的运行效率。创建三个Thread类的对象,把SellTicket对象作为构造方法的参数,并给出对应的窗口名称。| ReentrantLock() | 创建一个ReentrantLock的实例 || void lock() | 获得锁 |原创 2023-09-29 09:07:50 · 137 阅读 · 0 评论 -
Java之线程的详细解析一
假如计算机只有一个 CPU,那么 CPU 在某一个时刻只能执行一条指令,线程只有得到CPU时间片,也就是使用权,才可以执行指令。独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位 动态性:进程的实质是程序的一次执行过程,进程是动态产生,动态消亡的 并发性:任何进程都可以同其他进程一起并发执行。抢占式调度模型:优先让优先级高的线程使用 CPU,如果线程的优先级相同,那么会随机选择一个,优先级高的线程获取的 CPU 时间片相对多一些。再调用get方法,就可以获取线程结束之后的结果。原创 2023-09-27 21:01:27 · 138 阅读 · 0 评论 -
Java之打印流,压缩流,工具包的详细解析
平时我们在控制台打印输出,是调用print方法和println方法完成的,这两个方法都来自于类,该类能够方便地打印各种数据类型的值,是一种便捷的输出方式。原创 2023-09-26 23:21:32 · 125 阅读 · 0 评论 -
Java之序列化的详细解析
Java 提供了一种对象的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据对象的类型和对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中了一个对象的信息。反之,该字节序列还可以从文件中读取回来,重构对象,对它进行。对象的数据对象的类型和对象中存储的数据信息,都可以用来在内存中创建对象。原创 2023-09-25 23:25:38 · 122 阅读 · 0 评论 -
Java之转换流的详细解析
计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。编码:字符(能看懂的)--字节(看不懂的)解码:字节(看不懂的)-->字符(能看懂的): 就是一套自然语言的字符与二进制数之间的对应规则。原创 2023-09-24 23:53:30 · 231 阅读 · 0 评论 -
Java之缓冲流的详细解析
缓冲流,也叫高效流,是对4个基本的FileXxx字节缓冲流字符缓冲流缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率。原创 2023-09-23 23:38:29 · 190 阅读 · 0 评论 -
Java之字符流的详细解析
当使用字节流读取文本文件时,可能会有一个小问题。就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储。所以Java提供一些字符流类,以字符为单位读写数据,专门用于处理文本文件。原创 2023-09-23 07:57:33 · 993 阅读 · 0 评论 -
Java之IO流概述
生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。也叫做数据,也叫做作数据。原创 2023-09-21 23:05:27 · 139 阅读 · 0 评论 -
Java之File类的详细解析及小练习
类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。原创 2023-09-20 23:33:42 · 450 阅读 · 0 评论 -
Java之异常的详细解析
我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。,例如年龄负数问题,考试成绩负数问题。在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异常呢?在开发中根据自己业务的异常情况来定义异常类.自定义一个业务逻辑异常:。一个登陆异常类。自定义一个编译期异常: 自定义类 并继承于。原创 2023-09-19 23:11:09 · 117 阅读 · 0 评论 -
Java之Stream流及方法引用的详细解析二
如果使用Lambda,那么根据“可推导就是可省略”的原则,无需指定参数类型,也无需指定的重载形式,它们都将被自动推导。Lambda表达式被类的实例方法替代的时候 第一个参数作为调用者 后面的参数全部传递给该方法作为参数。演员类Actor已经提供,里面有一个成员变量,一个带参构造方法,以及成员变量对应的get/set方法。Lambda表达式被对象的实例方法替代的时候,它的形式参数全部传递给该方法作为参数。Lambda表达式被类方法替代的时候,它的形式参数全部传递给静态方法作为参数。原创 2023-09-19 08:27:32 · 87 阅读 · 0 评论 -
Java之stream流的详细解析一
直接阅读代码的字面意思即可完美展示无关逻辑方式的语义:获取流、过滤姓张、过滤长度为3、逐一打印。中间操作的意思是,执行完此方法之后,Stream流依然可以继续执行其他操作。终结操作的意思是,执行完此方法之后,Stream流将不能再执行其他操作。对数据使用Stream流的方式操作完毕后,可以把流中的数据收集到集合中。把"张"开头的集合中的长度为3的元素存储到一个新的集合。把集合中所有以"张"开头的元素存储到一个新的集合。把Map转成Set集合,间接的生成流。按照下面的要求完成集合的创建和遍历。原创 2023-09-18 22:05:35 · 119 阅读 · 0 评论 -
不可变集合的详细概述
是一个长度不可变,内容也无法修改的集合。原创 2023-09-17 23:21:52 · 368 阅读 · 0 评论 -
斗地主案例及一些实现规则
按照斗地主的规则,完成洗牌发牌的动作。具体规则:使用54张牌打乱顺序,三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。原创 2023-09-16 23:09:09 · 436 阅读 · 0 评论 -
Java之Collections的综合小练习
需求:班级里有N个学生,实现随机点名器。原创 2023-09-16 14:04:03 · 349 阅读 · 0 评论 -
Java之可变参数和Collections的详细解析
在之后,如果我们定义一个方法需要接受多个参数,并且多个参数类型一致,我们可以对其简化.修饰符 返回值类型 方法名(参数类型... 形参名){ }其实就是一个数组在传递数据的时候,省的我们自己创建数组并添加元素了,JDK底层帮我们自动创建数组并添加元素了1.一个方法只能有一个可变参数2.如果方法中有多个参数,可变参数要放到最后。:往集合中添加一些元素。原创 2023-09-14 23:09:00 · 166 阅读 · 0 评论 -
Java之HashMap和TreeMap的详细解析
HashMap底层是哈希表结构的依赖hashCode方法和equals方法保证键的唯一如果键要存储的是自定义对象,需要重写hashCode和equals方法TreeMap底层是红黑树结构依赖自然排序或者比较器排序,对键进行排序如果键存储的是自定义对象,需要实现Comparable接口或者在创建TreeMap对象时候给出比较器排序规则。原创 2023-09-13 19:27:21 · 156 阅读 · 0 评论 -
Java之Map集合的详细解析
Map集合概述interface Map K:键的类型;V:值的类型Map集合的特点双列集合,一个键对应一个值键不可以重复,值可以重复Map集合的基本使用//创建集合对象//V put(K key, V value) 将指定的值与该映射中的指定键相关联map.put("itheima001","林青霞");map.put("itheima002","张曼玉");map.put("itheima003","王祖贤");原创 2023-09-12 22:00:22 · 278 阅读 · 0 评论 -
Java之Hashset的原理及解析
底层数据结构是哈希表存取无序不可以存储重复元素没有索引,不能使用普通for循环遍历。原创 2023-09-11 23:20:26 · 88 阅读 · 0 评论 -
Java之set集合的详细解析
不可以存储重复元素没有索引,不能使用普通for循环遍历不可以存储重复元素没有索引可以将元素按照规则进行排序TreeSet():根据其元素的自然排序进行排序TreeSet(Comparator comparator) :根据指定的比较器进行排序两种比较方式小结自然排序: 自定义类实现Comparable接口,重写compareTo方法,根据返回值进行排序比较器排序: 创建TreeSet对象的时候传递Comparator的实现类对象,重写compare方法,根据返回值进行排序。原创 2023-09-10 09:04:34 · 164 阅读 · 0 评论 -
Java之List集合的解析及泛型的概述
泛型的介绍泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制泛型的好处把运行时期的问题提前到了编译期间避免了强制类型转换泛型的定义格式: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: : 指定多种类型的格式,多种类型之间用逗号隔开.例如:原创 2023-09-10 09:02:31 · 195 阅读 · 0 评论 -
Java之list集合的详细解析
List集合的概述有序集合,这里的有序指的是存取顺序用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素与Set集合不同,列表通常允许重复的元素List集合的特点存取有序可以重复有索引。原创 2023-09-09 20:13:26 · 429 阅读 · 0 评论 -
Java之Collection集合的详细解析
Collection集合概述是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现创建Collection集合的对象多态的方式具体的实现类ArrayListCollection集合常用方法方法名说明添加元素从集合中移除指定的元素根据条件进行移除清空集合中的元素判断集合中是否存在指定的元素判断集合是否为空int size()集合的长度,也就是集合中元素的个数。原创 2023-09-08 20:07:48 · 179 阅读 · 0 评论 -
Java之包装类的算法小题的练习
需求:键盘录入一些1~10日之间的整数,并添加到集合中。直到集合中所有数据和超过200为止。。原创 2023-09-07 19:53:09 · 367 阅读 · 0 评论 -
Java之包装类的详细解析
由于我们经常要做基本类型与包装类之间的转换,从Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;所以,提前把这个范围之内的每一个数据都创建好对象,如果要用到了不会创建新的,而是返回已经创建好的对象。建议:获取Integer对象的时候不要自己new,而是采取直接赋值或者静态方法valueOf的方式。注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出。原创 2023-09-06 23:15:29 · 86 阅读 · 0 评论 -
Java之JDK8时间相关类的详细解析
【代码】Java之JDK8时间相关类的详细解析。原创 2023-09-05 22:12:58 · 165 阅读 · 0 评论 -
Java之Calender类的详细解析
java.util.Calendar类表示一个“日历类”,可以进行日期运算。它是一个抽象类,不能创建对象,我们可以使用它的子类:java.util.GregorianCalendar类。有两种方式可以获取GregorianCalendar对象:直接创建GregorianCalendar对象;通过Calendar的静态方法getInstance()方法获取GregorianCalendar对象【本次课使用】原创 2023-09-04 22:22:38 · 158 阅读 · 0 评论