世间万事万物皆对象
SpringBoot 的 MyBatis 默认采用 hikari 连接池,druid (德鲁伊) 连接池由阿里开源,它不仅仅是一个连接池,更是代理、过滤器、解析器、插件、监控、优化等实用功能组件库,更在阿里生产环境得到验证,所以 Lets Do It
CSRF,跨站请求伪造,伪造受信用户发起请求,获取用户的隐私信息,不流行但极为致命的安全攻击行为,服务端需要增强此类防御
SpringBoot 可以通过 spring.profiles.active 属性指定生效不同配置文件来满足多环境要求,多环境更为复杂的场景,就需要理解配置文件生效优先级,考虑直接引入外部配置项和配置文件
有些任务需要在WEB工程启动的时候进行执行,如静态文件读取、数据库连接、初始化等,需要通过配置load-on-startup或listener相关的内容实现
常规的WEB工程前后台都会设置相关校验规则,并且保持一致。因此服务端收到不符合校验的参数表示该请求存在恶意篡改行为,应当限制并踢出登录
在web.xml中经常会看到listener,filter,servlet的相关标签配置,它们分别是监听器、过滤器、容器,都是在项目启动的时候就可以进行初始化的加载动作
频繁的创建与销毁线程是非常浪费系统资源的行为,多线程编程中是必要考虑到线程复用,线程池就是实现线程复用的一种方式,看看JAVA的线程池如何让使用都有哪些关键参数
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;动态获取的信息以及动态调用对象的方法的功能。
工厂模式归属于设计模式中的创建者模式,其主要用途是为了让我们更加优雅的创建JAVA对象,常见的工厂模式主要分为简单工厂、工厂方法、抽象方法三种形式,具体使用中并不拘泥于形式。
在绝大多数的JAVA经典应用框架中广泛使用到了单例设计模式,单例设计模式最普遍的分类方式分类分为懒汉模式与饿汉模式两种,其主要区别在于初始化创建对象的时机不同。
JAVA中默认的double和float数据类型进行符点运算时会造成精度丢失,比如小数点后出现无限个9,而java.math包提供的BigDecimal类则是专门用于提供高精度的符点运算能力。
公司的老WEB项目的内部链接跳转时使用了GET请求并且携带参数进行传递,在绝大多数情况没问题,但携带中文参数时后台获取的内容会出现乱码的问题(事实上我们并不建议用GET请求传递太多参数)
JAVA服务端实现HTTP请求的方式有很多种(比如常见的socket操作),本文介绍采用Apache Jakarta Common下的子项目HttpClient来实现,个人当时引入此工具包主要为实现单点登录能力
在JAVA的WEB工程中我们可以将JSP页面文件放在WEB-INFO中限制用户进行URL直接访问,但静态资源如js、css文件却是需要被外部直接访问的,直接对外暴露又不太安全,可以通过自定义过滤器处理
在工程中会存在一些未被纳入Spring框架管理的类,想调用Spring容器中的bean时可以通过SpringContextHolder工具类的getBean方法来获取指定的bean,比如过滤器、拦截器、自动任务等