自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java学习总结-动态代理

我的理解是:一个对像的方法帮助另一个对象方法做事。如何为Java对象创建一个代理对象?Spring简单理解是一个代理工厂。

2025-04-17 14:58:25 120

原创 Java学习总结-注解

比如可能原本需要很多配置文件以及很多逻辑才能实现的内容,如果使用合理的注解,就可以使用一个或多个注解来实现相同的功能。就是Java代码中的特殊标记,比如:@Overrride、@Test,作用是:让其他程序根据注解信息来决定怎么执行该程序。如 @Override 注解放在方法前,如果该方法不是覆盖了某个超类方法,编译的时候编译器就能检查出来。就是判断类上、方法上、成员变量上是否存在注解,并把注解里的内容解析出来。注解的原理:本质是一个接口,。能够读懂别人写的代码(尤其是框架相关的代码);

2025-04-17 14:51:09 207

原创 Java学习总结-反射reflect

用来获取有关类和反射的反射信息的类和接口,Reflection允许以编程方式有关已加载类的字段,方法构造函数,以及使用反射字段,方法和构造函数在封装和安全限制内对其底层对应进行操作。可以得到一个类中的全部成分然后操作。获取Class对象的三种方式。反射获取类中的的成分并操作。可以绕开泛型的约束。

2025-04-17 14:24:31 124

原创 Java学习总结-Junit单元测试

之前我们怎么测试的:在main方法中调用其他方法,一个方法测试失败可能导致其他方法得不到测试,无法得到测试报告。优点:可以针对一个方法,也可以针对全部方法的自动化测试,且各自独立。会自动生成测试报告。就是针对最小功能的单元:方法,编写测试代码对其进行正确性测试。可以用来对方法进行测试,他是第三方公司开源出来的。

2025-04-17 14:07:31 199

原创 Java学习总结-局域网通信项目实战

让我很有收获的是,我在想怎么跳转界面,没想到是直接new一个群聊窗口对象,在new的时候就调用构造器方法,就完成界面初始化了。功能2:首先读取发送的消息内容,然后调用sendMsgtoAll(msg),在这个方法中我们要将消息,用户名,时间进行拼接,使用StringBuilder来拼接,为什么要用这个,还有时间的获取,请看上一篇博客。然后调用sendMsgToServer方法,然后DataOutputStream数据流,借用上个页面的管道socket,发送“2”,这样服务器就会知道,发送的群聊消息。

2025-04-11 15:05:20 890

原创 Java学习总结-TCP通信-支持与多个客户端同时通信

BS架构的原理。

2025-04-10 14:47:00 187

原创 Java学习总结-TCP通信

2、服务端也使用死循环,控制服务端程序接受完消息,继续接受下一个消息。Java提供了一个java.net.Socket类来实现TCP通信。1、客户端陷入死循环,让用户不断输入消息。三次握手建立连接,实现端到端的通信。特点:面向连接、可靠通信。

2025-04-10 14:38:56 112

原创 Java学习总结-UDP通信的实现

发送端每次把要发送的数据(限制在64kb内)、接受端IP、等信息封装成一个数据包,发出去就不管了。Java提供了一个java.net.DatagramSocket类实现UDP通信。特点:无连接、不可靠通信。

2025-04-10 14:27:45 201

原创 Java学习总结-端口-协议

动态端口:49152-65535,之所以称为动态端口,一般不固定分配某种进程,而是动态分配。周知端口:0-1023,被预先定义的知名应用占用(如:HTTP占用80,FTP占用21)TCP主要有三个步骤实现可靠连接:三次握手建立连接,传输数据进行确认,四次挥手断开连接。UDP(User Datagram Protocol ):用户数据协议。注册端口:1024-49151,分配给用户进程或某些应用程序。TCP的最终目的:要保证不可靠的信道上实现可靠的数据传输。端口号:一个16位的二进制,范围是0-65535。

2025-04-10 14:16:17 218

原创 Java学习总结-网络编程

内网IP:也叫局域网IP地址,是只能组织机构内部使用的IP地址;IPv6:采用128位地址,分成8段,每段4位编码成一个十六进制位表示,每段用冒号(:)分开。127.0.0.1、localhost:代表本机IP,只会寻找当前程序所在当前程序所在的主机。Internet Protocol:全称“互联网协议地址”,是分配上网设备的唯一标识。可以让设备上的程序于网络上其他设备中的的程序进行数据交互的技术(实现网络通信)。IP:设备在网络中的地址,是设备在网络中的唯一标识。端口:应用程序在设备中的唯一标识。

2025-04-10 13:53:46 131

原创 Java学习总结-线程实战-抢红包游戏

【代码】Java学习总结-线程实战-抢红包游戏。

2025-04-08 12:30:02 233

原创 Java学习总结-多线程-并发-并行

进程中的线程是有cpu负责调度执行的,cpu会为系统的每个线程服务,由于CPU的切换速度很快,给我们感觉这些线程在同时执行,这就是并发。线程是属于进程的,一个进程中可以同时运行很多个线程。在同一个时刻上,同时有多个线程被CPU调度执行。进程中多个线程其实是并发和并行执行的。一个程序软件就是一个独立的进程。

2025-04-08 12:18:08 70

原创 Java学习总结-线程池

方法一:使用ExecutorService的实现类ThreadPoolExecutor创建一个线程池对象。假若不用线程池的问题:创建新线程开销很大,不能来一个任务就就创建一个新线程。是一个线程池的工具类,提供了很多静态方法用于返回不同特点的线程池对象。大型并发系统环境中使用Executors如果不注意可能出现系统风险。线程池就是一个可以复用线程的技术。

2025-04-08 11:57:26 196

原创 Java学习总结-线程同步

Lock是接口,不能直接实例化,可以采用他的实现类ReentrantLock来构建Lock对象。建议将释放锁的操作放到finally代码块中,来保证锁用完了,一定被释放。注意:对于当前同时执行的线程来说,同步锁必须是同一把(同一个对象),否则会出bug。核心思想:让线程先后依次访问共享资源,这样就可以避免出现线程安全问题。作用:把共享资源的核心代码上锁,以保证线程安全。把访问共享资源的核心方法上锁,以保证线程安全。对实例方法建议使用this作为对象。线程同步时线程安全问题的解决方案。

2025-04-06 21:22:41 213

原创 Java学习总结-线程安全

具体案例:两个人去银行取钱,一个人已经把钱取走,另一个人在前一个人取钱时,就跳过余额判断机制,最后的结果的,银行倒欠-10000。存在条件:存在多个线程在同时执行、同时访问一个共享资源、存在修改资源。多个线程,同时操作同一个共享资源的时候,可能出现业务安全问题。什么是线程安全问题?

2025-04-06 20:26:17 82

原创 Java学习总结-线程的常用方法

Thread的常用方法:

2025-04-06 20:17:37 83

原创 Java学习总结-多线程-三种创建方法

一个类实现了Runnable接口,则这个类作为对象直接传入Thread构造器中,那么就可以得到一个线程对象。线程执行完毕后、通过FutureTask对象的get的方法去获取线程任务对象执行的结果。定义一个类实现Callable接口,重写call方法,封装要做的事情,和要返回的数据。多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)。一个类继承了Thread父类,就可以成为线程,但不过要重写run方法。调用Thread对象的start的方法启动线程。缺点:不能继承其他类了。

2025-04-06 20:13:20 338

原创 Java学习总结-Commons-io框架-配置io框架

封装了Java提供对文件、数据进行操作的代码,对外提供了更简单的方式对文件进行操作,对数据进行读写等。框架的形式:一般是把类、接口等编译成class形式,再压缩成一个.jar结尾的文件发行出去。框架(Framework)是一个预先写好的代码库或一组工具,旨在简化和加速开发过程。4、在jar文件上点击右键,选择Add as Library。3、将commons-io-2.6.jar复制到lib文件夹。1、百度搜索Commons-io,下载压缩包。2、在项目中创建一个文件夹:lib。5、在类中导包使用。

2025-04-05 19:51:56 191

原创 Java学习总结-io流-其他流-全体系

实例代码:InputStream is = new FileInputStream("day-03\\one.test");解决思路:先获取文件中的的原始字节流,在将按真实的字符的字符集编码转换成字符输入流,这样字符输入流中的字符就不乱码了。作用:打印流可以实现更方便、更高效的打印数据出去,能实现打印啥出去就是啥出去。PrintStream/PrintWriter(打印流)解决不同编码时,字符流读取文本内容乱码的问题。PrintStream提供的打印的数据方案。用于读取数据输出流写出去的数据。

2025-04-05 19:37:35 220

原创 Java学习总结-缓冲流性能分析

注意,按照字节数组的方法,扩大字节数组池,这两种性能相差不大。其实字节数组的方法和缓冲的原理差不多,都是在内存里开辟空间。在这个分析性能需要一个记录时间的工具:这个是记录1970-1-1 00:00:00到现在的总毫秒值。然后编写四个方法,打印出来end-start,就可以分析。分别使用原始的字节流,以及字节缓冲流复制一个很大的视频。结论,一般情况下缓冲流性能好。

2025-04-05 19:03:23 195

原创 Java学习总结-io流-练习案例

【代码】Java学习总结-io流-练习案例。

2025-04-03 20:27:11 207

原创 Java学习总结-io缓冲流

缓冲其实就是在内存中开辟一块地方,用来存储数据,当出现需要数据时,直接跟缓冲区io,不用跟磁盘io,这样io的速度大大加快。BufferedInputStream缓冲字节输入流:自带了8KB的缓冲池。BufferedReader缓冲字符输入流:自带了8KB的缓冲池。

2025-04-03 20:16:03 244

原创 Java学习总结-字符流

FileReader(文件字符输入流):把文件的数据以字符的形式读入到内存中去。FileWriter(文件字符输出流):把内存的数据以字符的形式输出到文件中去。

2025-04-03 19:45:55 139

原创 Java学习总结-io流-字节流

任何文件的底层都是字节,把字节做复制,是一字不漏的转移全部字节,只要复制后的文件格式一致就没有问题。FlieOutputStream(文件字节输出流):内存输出数据到磁盘中。由于不同格式编码长度,每次读取一个或几个字节,都有可能出现乱码。所以官方提供了,一次性读入全部字节,以数组的形式的返回。会自动调用其close()方法,完成对资源的释放!FlieInputStream(文件字节输入流)是什么:磁盘以字节的形式输入到内存中。

2025-04-03 19:39:09 200

原创 Java学习总结-IO流

input:磁盘向内存输入内容。output:内存向磁盘输入内容。

2025-04-03 19:20:19 206

原创 Java学习总结-字符集

UTF-8:采取可变长编码方案,共分四个长度区:1个字节、2个字节、3个字节、4个字节。按照这样下去,那每个国家都要有自己的字符集,太麻烦了。ASCII:美国信息交换标准代码。万国码:容纳世界上所有文字、符号的字符集。GBK:汉字编码字符集。英文占用一个字节,汉字占用三个字节。所以Unicode字符集应运而生。UTF-32:四个字节表示。

2025-04-03 19:07:59 206

原创 Java学习总结-递归-递归寻找文件绝对路径

一个方法自己调用自己。我的理解是,另一种形式的循环。循环计算机的魅力所在。循环在计算机中属性得到极大的增强,生活也在循环,现在,过去,仍是。我有时候在想,平淡的生活,每天机械般的生活,这样的生活不诱人,最厉害的是润物细无声,人们早已沉沦。生活不分好坏,但没有找寻到自我,过着平淡生活。

2025-04-03 18:55:41 139

原创 Java学习总结-Flie-IO流

Flie是java.io包下的的类,Flie类的对象,用于代表当前操作系统的文件(可以是文件/或文件夹)。获取文件信息(大小,文件名,修改时间);注意:delete方法默认只能删除文件和空文件夹,删除后的文件不会进入回收站。注意:Flie类只能对文件本身进行操作,不能读写文件中里面存储的数据。Flie类的对象有什么用呢?

2025-04-03 16:55:47 106

原创 Java实战-做牌-对牌排序

4.接下来就是发地主牌,我们调用allCards.subList(allCards.size()-3,allCards.size())截取最后三张。2.我们需要洗牌,调用Collections.shuffle(allCards);分析:我们是要做一个斗地主的游戏。那么我们首先需要一个牌对象、一个房间对象。3.洗好牌需要发牌,直接for循环,但需要判断要发给谁,我们对i%3来解决。1.我们需要准备好54张牌,而且每张牌都要有默认的大小。Card.class文件。Room.class文件。

2025-03-25 20:49:28 217

原创 Java学习总结-可变参数、Collections

2025-03-25 20:35:12 59

原创 Java学习总结-Stream流

用于操作集合或数组的数据。他就像把数据化为成一条河流,我们可以对这条流操作,例如过滤。啥是Stream流?

2025-03-25 20:29:00 137

原创 Java学习总结-Map集合的实现类

实际上:原来学的Set系列集合的底层就是基于Map实现的,只是Set集合中的元素只要键数据,不要值数据。JDK8开始,哈希表 = 数组 + 链表 +红黑树;哈希表是一种增删改查数据,性能都比较好的数据结构。JDK8之前,哈希表 = 数组 + 链表;HashMap集合的底层原理。

2025-03-25 19:53:36 159

原创 Java学习总结-Map综合案例:统计投票信息

1.我们需要先收集投票信息,但是八十个信息太多了,不能全部手动输入,所以我们可以模拟这个信息。我先用一个字符串存储全部结果“ABCD”,然后通过生成0-3的随机数,然后通过charAt()方法,获取字符。题外话:通过这个我想到,设计转盘游戏时,怎么控制不同结果的概率。我的方法时增加字符串里不同字符的数量,概率就可以设计了。我又想,前端是怎样,不同的结果播放不同的动画,后端肯定先出一个,然后由前端渲染动画。4.我们先统计出最大投票数,然后遍历HashMap 打印结果。

2025-03-24 18:21:15 230

原创 Java学习总结-List的集合

查的的快,节省空间。LinkedList底层基于。ArrayList底层基于。

2025-03-22 14:47:48 146

原创 Java学习总结-集合框架

集合在删除一个元素的时候,在常用for循环list.get(i)的条件下,后面的元素会补上被删那个元素的空位,但是"指针"已经移到下一位,就会漏掉这一个“补位的”。3.可以使用迭代器遍历,并用迭代器提供的方法删。:迭代器遍历是用来遍历集合的专用方式(数组没有迭代器),在Java中迭代器的代表是Iterator。遍历集合的同时又存在增删集合元素的行为时可能出现业务异常,这种现象称之为并发修改异常问题。集合是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。学了父类子类都能用上。

2025-03-22 14:36:45 155

原创 Java学习总结-泛型

(如:<E>),称为泛型类、泛型接口、泛型方法、他们统称为泛型。注意:类型变量建议用大写的英文字母,常用的有:E(元素类型)、T(返回值类型)、K(键类型)、V(值类型)等。注意:类型变量建议用大写的英文字母,常用的有:E(元素类型)、T(返回值类型)、K(键类型)、V(值类型)等。能接受的必须是Car的或者其父类。修饰符 <类型变量,类型变量,.....> 返回值类型 方法名 (形参列表){ }修饰符 interface 接口名<类型变量,类型变量,.....>{ }

2025-03-22 13:42:36 157

原创 Java学习总结-异常

方案一:底层异常常常层层往上抛出,最外层捕捉异常,记录异常信息,并响应适合用户观看的信息进行提示。2.可以做为方法内部的一种特殊的返回值,已通知上层调用者,方法的执行问题。通过throw new 异常类(xxx)创建异常对象并抛出。通过throw new 异常类(xxx)创建异常对象并抛出。Exception:异常,代表我们程序的出现的问题。Error:代表系统级别的错误。但是编译时不报错,运行时才可能出现。程序在编译或执行中可能出现的错误。方案二:最外层捕捉异常后尝试修复。1.是用来定位程序的bug。

2025-03-22 13:18:12 142

原创 Java学习总结-常用API(String、ArrayList)

但要注意的是:直接给出字符串,例如 String name = "JackmoodCC",会储存到字符常量池中只保存一份。通过new的方式,每new一次都会产生一个新对象放在堆内存中。String代表字符串,他的对象可以封装字符串数据,并提供了很多方法对字符串的处理。集合是一种容器,用来装数据的,类似数组,不同的是长度可以变化,更有利于增删改查。一般用ArrayList做什么?ArrayList是啥?

2025-03-12 19:37:23 114

原创 Java学习总结-函数式编程-方法引用

静态方法的引用:实例方法的引用:特定类方法的引用:

2025-03-12 15:52:24 192

原创 Java学习总结-函数式编程-Lambda

使用Lambda函数替代某些匿名匿名内部类对象,让程序代码更简洁,可读性更好。在接口上加上@Funcationallnterface注解即可。只有一个抽象方法的接口就是函数式接口。Lambda表达式的省略规则?

2025-03-12 13:58:26 166

第一个编程作品.exe

简单整数相加

2021-09-21

空空如也

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

TA关注的人

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