单列模式注意事项与破解

本篇博文需要有java并发,类加载过程,java反射的一些知识

单列确保系统中一个类只用一个实列

单列模式提供的全局访问方法可以认为使用了简单工厂模式,简单点来说单列模式自己负责创建自己

单列模式的创建方式

由于本文主要讲解如何破解单列模式,所以在这里就不详细介绍,简单的列举5种创建方式与特点

  1. 饿汉式 – 线程安全不延时加载

  2. 懒汉式 –线程不安全延时加载 –可能存在引用还没完全初始化的对象

  3. 双重检索机制 –线程相对安全延时加载

  4. 静态内部类 –线程安全延时加载 –由于对象变量为静态变量在类加载过程中的初始化阶段虚拟机保证一个类的()方法在多线程中被正确的加锁,同步–>线程安全。–内部类在虚拟机中特性为延迟加载

  5. 枚举模式 –线程安全不能延时加载天然单列模式不可通过反射序列化反序列化破解

跨域带cookie问题

什么是跨域

​ 简单来说就是请求的地址与页面地址的协议,域名,端口号只要其中之一不一样就属于跨域,跨域情况下如果不进行处理就不能获得请求后的数据,为什么说是请求后的呢而不是不能请求,因为跨域情况下请求也是到了后台的进入了对应action,在后台返回http头中如果没有相对应的字段就表示后台不允许跨域,浏览器才会出于安全原因拒绝跨域。

关于integer

​ Integer为java基本数据类型int的包装类,int a = 1; Integer b = a; 这个过程a由数值类型变成了引用类型,所以便存在很多数值类型与引用类型的使用区别,若不小心将会为程序留下一些不容易发现的隐患。

'EnableCaching'

redis缓存

本篇博客为博主学习springboot中使用redis缓存的一些笔记

依赖问题

在springboot中使用redis作为缓存需引入以下依赖

1
2
3
4
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

可在pom文件中点击鼠标右键选择maven->show dependencies则可以查看全部依赖

springBootWebSocket

​ 今天使用springboot的websocket是发现其中有许多细节问题,所以决定记录下来,希望下次使用能够借鉴这次的心得体会,这里就不在描述什么是websocket了,对了随便提一句,websocket是http长连接在http1.1提出的。http是应用层的协议

activemq

activemq与rabbitmq的区别

上一篇博文讲解了rabbitmq消息中间件的一些使用方法,在使用activemq之前我们先了解一下他们二则的区别

activemq:

优点 -> 遵循JMS规范,安装部署方便

缺点 -> 会莫名丢失消息,目前重心在下一代产品apolle上,目前社区不活跃,对5.x维护较少

适合中小型项目消息应用,不适合上千队列应用场景

rabbitmq:

优点 -> 继承erlang天生并发性最初用于金融行业,稳定性,安全性有保障

缺点 -> erlang语言难度较大不支持动态扩展

适合对稳定性要求高的应用

ssm代码自动生成工具包

工具包功能说明

该工具包主要完成在项目内根据提供的实体类包,自动生成spring mybatis,所需要的service层接口与实现,数据库表的创建包括主键,描述,长度等的设置,数据库操作接口与对应xml文件,支持jar与maven

可生成的为 增删改查,删除多个,查询多个的方法

—>演示视频如下

,