![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA基础
文章平均质量分 72
山风wind
晚起的鸟儿被虫吃
展开
-
Spring文件上传下载代码
spring实现文件上传与下载代码原创 2024-03-07 17:08:07 · 475 阅读 · 0 评论 -
BIO、NIO、IO多路复用(select/poll/epoll)、信号驱动IO、异步IO
BIO、NIO、IO多路复用(select/poll/epoll)、信号驱动IO、异步IO原创 2022-09-03 23:22:17 · 733 阅读 · 2 评论 -
Java自定义线程池详解及代码实现(非直接调用ThreadPoolExecutor)
Java从头开始自定义线程池详解及代码实现(非直接调用ThreadPoolExecutor)-生产者消费者模式1.定义阻塞队列,使用双端队列,和可重入锁以及条件变量。2.定义线程池。原创 2022-08-08 13:29:00 · 2409 阅读 · 0 评论 -
并发编程-生产者消费者模式Java代码实现
并发编程-生产者消费者模式代码实现1. 生产者仅负责产生结果数据,不关心数据该如何处理,而消费者专心处理结果数据。2. 消息队列是有容量限制的,满时不会再加入数据,空时不会再消耗数据具体实现:1. 使用双向链表和Synchronized锁来实现消息队列。2. 使用Excutors中的创建线程池的方法模拟生产者和消费者线程。...原创 2022-08-07 19:53:46 · 1908 阅读 · 0 评论 -
Java多线程使用 CountDownLatch等待其他线程执行完成
Java多线程使用 CountDownLatch等待其他线程执行完成原创 2022-08-06 15:57:44 · 586 阅读 · 0 评论 -
Spring MVC的执行流程
Spring MVC的执行流程:原创 2022-08-03 19:39:03 · 10127 阅读 · 2 评论 -
JAVA经典垃圾收集器的优点缺点简单总结
JAVA经典垃圾收集器的优点缺点简单总结Serial、ParNew、Parallel Scavenge、Serial Old、CMS、Parallel Old、G1原创 2022-07-17 19:36:57 · 1038 阅读 · 0 评论 -
Java Socket编程简单案例【TCP与UDP】
Java Socket编程案例【TCP与UDP】原创 2022-06-22 12:04:04 · 441 阅读 · 0 评论 -
JAVA设计模式--桥接模式【结构型模式】
设计模式--桥接模式-结构型设计模式将抽象与实现分离,使他们可以独立变化。它使用组合关系代替继承关系来实现的,从而降低了抽象与现实这两个维度的耦合度,也体现了设计原则中的【合成复用】与【依赖倒转】原则,还包括【开闭原则】。...原创 2022-06-22 10:55:49 · 226 阅读 · 0 评论 -
JAVA设计模式--享元模式【结构型模式】
享元模式即运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。原创 2022-06-21 16:25:46 · 140 阅读 · 0 评论 -
JAVA设计模式--适配器模式
JAVA设计模式--适配器模式原创 2022-06-03 22:09:37 · 2673 阅读 · 0 评论 -
JAVA设计模式--装饰者模式详解
JAVA装饰者模式详解--代码案例、使用方式原创 2022-06-03 12:06:26 · 1139 阅读 · 0 评论 -
面向对象软件设计原则【JAVA】(开闭原则、里氏代换、依赖倒转、接口隔离、迪米特法则、合成复用原则)
软件设计原则【JAVA】(开闭原则、里氏代换、依赖倒转、接口隔离、迪米特法则、合成复用原则)1.开闭原则2.里氏代换原则3.依赖倒转原则4.接口隔离原则5.迪米特法则6.合成复用原则1.开闭原则对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。简言之,是为了使程序的扩展性好,易于维护和升级。想要遵守开闭原则,那么在设计类时就需要使用抽象类和接口。因为抽象灵活性好,适应性广,只要抽象的合理,可以基本保持软件架构的稳定。而软件中易变的细节可以从抽象派生来的实原创 2022-05-30 11:43:59 · 539 阅读 · 0 评论 -
Java类与类之间的关系(关联、组合、聚合、依赖、继承、实现)
Java类与类之间的关系(关联、组合、聚合、依赖、继承、实现)1.关联关系1.1 单向关联1.2 双向关联1.3 自关联2.聚合关系3.组合关系4.依赖关系5.继承关系6.实现关系1.关联关系关联关系是对象之间的一种引用关系,用于表示一类对象与另一类对象之间的联系,如老师和学生、师傅和徒弟、丈夫和妻子等。关联关系是类与类之间最常用的一种关系,分为一般关联关系、聚合关系和组合关系。关联又可以分为单向关联,双向关联,自关联。1.1 单向关联在UML类图中单向关联用一个带箭头的实线表示。上图表示每个顾原创 2022-05-28 21:26:57 · 2140 阅读 · 0 评论 -
Java生成随机数(利用Random类和Math.random()方法)
Java生成随机数(利用Random类和Math.random()方法)Random 类(java.util.Random)常用构造方法:Random():该构造方法使用一个和当前系统时间对应的数字作为种子数,然后使用这个种子数构造 Random 对象。- Random(long seed):使用单个 long 类型的参数创建一个新的随机数生成器。Random 类提供的所有方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的概率是均等的。使用:boolean nextBoole原创 2022-05-11 15:20:00 · 1047 阅读 · 0 评论 -
Java使用JUnit进行单元测试
Java使用JUnit进行单元测试单元测试JUnit测试工具的优点JUnit测试工具的使用1.将JUnit的jar包导入到项目中。2.具体使用流程3.简单案例演示1. 编写待测试类2. 编写测试类(类名随意)3. 运行方式4.JUnit中的除`@Test`之外的其他注解单元测试单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法的正确性。JUnit测试工具的优点Junit可以灵活的选择执行哪些测试方法,可以一件执行全部原创 2022-05-05 19:20:50 · 1949 阅读 · 0 评论 -
指令重排序遵循的as-if-serial与happens-before原则
指令重排序遵循的as-if-serial与happens-before原则as-if-serial语义 as-if原创 2022-05-05 16:05:55 · 423 阅读 · 0 评论 -
JAVA代理模式-三种代理模式的对比(四)
JAVA代理模式-三种代理模式的对比(四)JAVA代理模式-静态代理的实现(一)JAVA代理模式-JDK动态代理的实现(二)JAVA代理模式-cglib动态代理的实现(三)jdk代理 和 CGLIB代理使用CGLib实现动态代理,CGLib底层采用ASM字节码生成框架,使用字节码技术生成代理类,在JDK1.6之前比使用Java反射效率要高。唯一需要注意的是,CGLib不能对声明为final的类或者方法进行代理,因为CGLib原理是动态生成被代理类的子类。在JDK1.6、JDK1.7、JDK1原创 2022-04-28 17:25:57 · 174 阅读 · 0 评论 -
JAVA代理模式-cglib动态代理的实现(三)
JAVA代理模式-cglib动态代理的实现(三)CGLIB动态代理:导包1.使用了Maven管理项目则引入一下坐标即可。2.未使用maven,则可以通过如下方式导包。在完成环境配置之后,进行CGLIB动态代理的实现:1.编写实体类。2.通过cglib动态生成代理类,动态生成的代理类为实体类的子类。3. 客户端从中介买票CGLIB实现动态代理的完整代码:代理模式简介、静态代理、JDK动态代理可以参考以下文章:JAVA代理模式-静态代理的实现(一)JAVA代理模式-JDK动态代理的实现(二)CGLIB动原创 2022-04-28 17:18:54 · 803 阅读 · 0 评论 -
JAVA代理模式-JDK动态代理的实现(二)
JAVA代理模式-JDK动态代理的实现(二)JDK动态代理的实现:1. 编写电影院售票的接口。2. 编写真实主题类,宁波电影院实现电影院接口,实现真正的售票动作。4. 编写代理工厂类,通过Java中提供的一个动态代理类Proxy,动态生成代理类。6. 客户调用代理类,从中介手中买票。动态代理使用时的细节:JDK动态代理完整代码:代理模式的简介可查看此链接。JAVA代理模式-静态代理的实现(一)JDK动态代理的实现:Java中提供了一个动态代理类Proxy,提供了一个创建代理对象的静态方法(newP原创 2022-04-28 16:35:29 · 833 阅读 · 0 评论 -
JAVA代理模式-静态代理的实现(一)
JAVA代理模式-静态代理的实现(一)代理模式代理模式的优点代理模式分为三种角色:静态代理的实现:1.定义进校门动作的接口。2.真实主题类,即真正进校门的类要实现该接口。3.代理类,要在原本的类功能上进行增强。代理类也必须实现school接口。4 .客户端调用代理类进校门。静态代理实现的完整代码:代理模式由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。代理模式的优点代理模式在客户端与目标对象之间起到原创 2022-04-28 15:45:25 · 935 阅读 · 0 评论 -
Exception in thread “main“ java.lang.NoClassDefFoundError: org/objectweb/asm/Type
在使用CGLIB尝试动态代理时,出现了如下错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/objectweb/asm/Type at net.sf.cglib.core.TypeUtils.parseType(TypeUtils.java:184) at net.sf.cglib.core.KeyFactory.<clinit>(KeyFactory.java:72) at net.sf.cglib.pr原创 2022-04-28 15:01:40 · 720 阅读 · 0 评论 -
JAVA 通过反射获取公共和私有成员变量和成员方法(二)
JAVA 通过反射获取成员变量(二)JAVA通过反射创建对象可以查看以下介绍。JAVA通过反射来创建对象(一)类对象文件package com.csdn;public class Student { private String name; private int age; public String height; protected int num; public Student() { } public void print1(原创 2022-04-27 14:58:33 · 3085 阅读 · 0 评论 -
JAVA通过反射使用公共构造方法和私有构造方法来创建对象(一)
JAVA通过反射来创建对象JAVA反射机制是指在运行时去获取一个类的变量和信息。然后通过获取到的信息来创建对象,调用方法的一种机制。由于这种动态性,可以极大地增强程序的灵活性,程序不需要在编译期就完成确定,在运行期仍然可以扩展。创建Student类文件Student类包含公共构造方法,也包含私有构造方法。package com.csdn;public class Student { private String name; private int age; public原创 2022-04-27 11:23:58 · 3187 阅读 · 0 评论 -
JAVA 中HashMap的几种遍历方式
JAVA 中HashMap的几种遍历方式创建HashMap对象 Map<String, Integer> map = new HashMap<>(); map.put("手表", 1000); map.put("手机", 4000); map.put("牙刷", 200); map.put("耳机",1500);1.通过遍历map的键的方式,使用键找值进行遍历。现获取Map集合的全部键的Set集原创 2022-04-27 10:06:41 · 4352 阅读 · 0 评论 -
JAVA对象序列化
JAVA对象序列化流对象序列化:将对象保存到磁盘中,或者在网络中传输对象。其使用一个字节序列表示一个对象,该字节序列包含:对象的类型、对象的数据和对象中存储的属性等信息。字节序列写到文件之后,相当于在文件中持久保存了一个对象的信息。该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化。要实现序列化和反序列化就要使用对象系列化流和对象反序列化流:对象序列化流: ObjectInputStream对象反序列化流: ObjectOutputStream使用案例:序列化对象,首先需要创建原创 2022-04-23 21:06:37 · 464 阅读 · 0 评论 -
JAVA日期类的使用
JAVA日期类的使用1. Date类 (java.util.Date)Date类代表了一个特定的时间,以毫秒为精度。常用构造方法:1. Date()分配一个Date对象并对其进行初始化,以便它便是分配的时间,以最接近的毫秒为单位。2. Date(long date)分配一个Date对象,并将其初始化为便是从标准基准时间(称为“时代”),即1970年1月1日00:00:00GMT起指定的毫秒值。简单使用:import java.util.Date;public class test2 {原创 2022-04-23 20:15:59 · 1064 阅读 · 0 评论 -
JAVA可变参数的使用(数据类型... 参数名称)
JAVA可变参数的使用(数据类型… 参数名称)需求假设需要定义一个方法求和,该方法需要灵活的完成如下需求:1.计算2个数据的和。 2.计算3个数据的和。 3.计算n个数据的和。或者可以支持不接受参数进行调用。此时可以考虑使用可变参数。可变参数可变参数用在形参中可以接受多个数据,可以接受空参、也可以接受1个或者多个参数,或者数组。可变参数的格式: 数据类型… 参数名称可变参数在方法内部本质上是一个数组。使用注意事项一个形参列表中可变参数只能由一个。可变参数必须放在形参列表的最后边原创 2022-04-22 21:20:18 · 3090 阅读 · 0 评论