- 博客(18)
- 收藏
- 关注
原创 谈谈对IOC和AOP的理解
动态代理更加灵活,不需要必须实现接⼝,可以直接代理实现类,并且可以不需要针对每个⽬标类都创建⼀个代理类。动态代理只能够对接口进行代理,不能对普通的类进行代理(因为所有生成的代理类的父类为Proxy,Java类继承机制不允许多重继承);利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。(2)ApplicationContext:BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用。
2023-10-06 14:56:38 219 1
原创 TCP 三次握手和四次挥手(传输层)
第四次挥手时,客户端发送给服务器的 ACK 有可能丢失,如果服务端因为某些原因而没有收到 ACK 的话,服务端就会重发 FIN,如果客户端在 2*MSL 的时间内收到了 FIN,就会重新发送 ACK 并再次等待 2MSL,防止 Server 没有收到 ACK 而不断重发 FIN。: 一个片段在网络中最大的存活时间,2MSL 就是一个发送和一个回复所需的最大时间。三次握手的目的是建立可靠的通信信道,说到通讯,简单来说就是数据的发送与接收,而三次握手最主要的目的就是双方确认自己与对方的发送与接收是正常的。
2023-09-05 15:10:48 157 1
原创 BigDecimal 详解
浮点数没有办法用二进制精确表示,因此存在精度丢失的风险。不过,Java 提供了BigDecimal来操作浮点数。BigDecimal的实现利用到了BigInteger(用来操作大整数), 所不同的是BigDecimal加入了小数位的概念。
2023-07-19 16:53:33 182
原创 深入理解枚举类型
前面的分析都是基于简单枚举类型的定义,也就是在定义枚举时只定义了枚举实例类型,并没定义方法或者成员变量,实际上使用关键字enum定义的枚举类,除了不能使用继承(因为编译器会自动继承Enum抽象类而Java只支持单继承,因此枚举类是无法手动实现继承的),可以把enum类当成常规类,也就是可以向enum类中添加方法和变量,甚至是mian方法。类中定义方法,务必在声明完枚举实例后使用分号分开,倘若在枚举实例前定义任何方法,编译器都将会报错,无法编译通过,同时即使自定义了构造函数且。但是注意到,如果打算在。
2023-07-14 17:13:08 107 1
原创 【Java基础】注解--@interface使用详解
注解@interface不是接口是注解类,在jdk1.5之后加入的功能,使用interface自定义注解时,自动继承了java.lang.annotation.Annotation接口。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。@Target。
2023-07-14 16:28:23 798 1
原创 使用springSecurity+JWT实现认证和授权
SpringSecurity是一个强大的可高度定制的认证和授权框架,对于Spring应用来说它是一套Web安全标准。SpringSecurity注重于为Java应用提供认证和授权功能,像所有的Spring项目一样,它对自定义需求具有强大的扩展性。
2023-05-16 19:09:24 452
原创 串行流 Stream 与并行流 parallelStream
简述:在创建Stream流对象时,默认创建都是串行流。两种方式创建Stream并行流:第1种方式是通过Collection集合接口中的parallelStream()方法直接将集合类型的源数据转变为Stream并行流;第2种方式通过BaseStream接口中的parallel()方法将Stream串行流转变为并行流。BaseStream接口还提供了isParallel()方法,用于判断当Stream流对象是否为并行流,返回值为boolean类型。
2023-04-23 18:20:41 1518
原创 Spring Boot 报错:Web server failed to start. Port 8080 was already in use.
菜单栏 -> 右键 - > 任务管理器 -> 详细信息,根据PID排序找到PID为10728的进程,选择后点击结束任务。报错信息:Web server failed to start. Port 8080 was already in use。命令查看端口号占用情况,例如查看端口 8014,可以看出进程号为10728;修改配置文件,加上参数:server.port=8014。netstat -ano | findstr 端口号。方法二: 使用命令关闭。解决方法二:关闭占用端口的进程。报错原因:端口被占用。
2023-04-20 12:30:40 5982
原创 Tomcat运行日志乱码问题
产生乱码的根本原因就是编码和解码不一致,举个例子就是翻译的人与写文章的人用的不同的语言。比较常见的编码格式有Unicode、Ascll码、GBK、UTF-8等等,我们普遍用的都是UTF-8等等。2、将日志的编码格式也修改一下,打开tomcat的\conf\logging.properties。1、打开tomcat的/conf/server.xml,给它显示的增加编码方式。习惯使用spring boot简化开发以后,再启动Tomcat时发现一大堆看不懂的文字,如。
2023-04-07 15:01:34 2913
原创 Springboot整合Redis报错GenericObjectPoolConfig解决方案:
commons-pool2 单独升级到最新版,目前是2.11.1,GenericObjectPoolConfig 方法long 参数升级为Duration。降低pom文件中Springboot的版本。
2023-04-06 15:15:26 3047
原创 RabbitMQ 学习小结
RabbitMQ 是在 AMQP基础上实现的,可复用的企业消息系统。它可以用于大型软件系统中各个模块之间的高效通信,支持,支持。它支持多种客户端如:Python、Ruby、.NET、Java、JMS、C、PHP等,支持AJAX,,用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。RabbitMQ是使用Erlang编写的一个开源的消息,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。
2023-04-02 20:51:19 490
转载 SQL联合查询(内联、左联、右联、全联)的语法
联合查询效率较高,举例子来说明联合查询:内联inner join 、左联left outer join 、右联right outer join 、全联full outer join 的好处及用法。联合查询效率较高,以下例子来说明联合查询(内联、左联、右联、全联)的好处:关于联合查询,效率的确比较高,4种联合方式如果可以灵活使用,基本上复杂的语句结构也会简单起来。
2023-03-15 10:47:28 3762 1
转载 String、StringBuffer、StringBuilder 的区别?
可变性String 是不可变的。StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串,不过没有使用 final 和 private 关键字修饰,最关键的是这个 AbstractStringBuilder 类还提供了很多修改字符串的方法比如 append 方法。abstract class AbstractStringBuilder implements A
2023-03-15 10:43:29 77
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人