
常见必知必会
Java注解](https://juejin.cn/post/6844904149218230286)
instanceof
通过返回一个布尔值来指出,某个对象是否是某个特定类或者是该特定类的子类的一个实例。
Apache Commons 工具类介绍及简单使用.
java8日期时间相关
https://blog.csdn.net/qq_44769557/article/details/119912493
https://blog.csdn.net/qq_39505245/article/details/123768708
https://blog.csdn.net/z69183787/article/details/87176339
java8 日期 时间 时区
Instant:瞬时实例。 LocalDate:本地日期,不包含具体时间 例如:2014-01-14 可以用来记录生日、纪念日、加盟日等。 LocalTime:本地时间,不包含日期。 LocalDateTime:组合了日期和时间,但不包含时差和时区信息。 ZonedDateTime:最完整的日期时间,包含时区和相对UTC或格林威治的时差。 新API还引入了ZoneOffSet和ZoneId类,使得解决时区问题更为简便。解析、格式化时间的DateTimeFormatter类也全部重新设 计。注意,这篇文章是我在一年前Java 8即将发布时写的,以下示例代码中的时间都是那一年的,当运行这些例子时会返回你当前的时间。
spring容器bean的代理属性
容器扫描bean生成代理类的时候,public和protected方法可以被正常代理,而private方法的不会被代理,属性的注入也是在代理类中完成,所以public/protected方法获取的注入属性是完成注入的属性,private方法获取的是未完成注入时的属性,所以是null
word转pdf
pandoc –extract-media c:\work .\Appfrom加入OpenLDAP域控.docx -t markdown_strict -o .\test.md
设计模式常用7大原则
单一职责
接口隔离
依赖倒置
里氏替换
开闭原则
迪米特法则
又叫最少知道原则
一个对象应该对其他对象保持最少的了解
合成复用
尽量使用组合\聚合,少用继承
单例模式懒汉式
1 | public class Utils { |
枚举方式
1 | public enum fileUtils { |
maven项目打包
java常用枚举实现
1 | public enum OperateType { |
调用结果
1 | public static void main(String[] args) { |
spring工程中如何覆盖一个包的中静态方法?
静态方法可以被继承,但是,不能被覆盖,即重写。如果父类中定义的静态方法在子类中被重新定义,那么在父类中定义的静态方法将被隐藏。可以使用语法:父类名.静态方法调用隐藏的静态方法。
如果父类中含有一个静态方法,且在子类中也含有一个返回类型、方法名、参数列表均与之相同的静态方法,那么该子类实际上只是将父类中的该同名方法进行了隐藏,而非重写。
换句话说,父类和子类中含有的其实是两个没有关系的方法,它们的行为也并不具有多态性。因此,通过一个指向子类对象的父类引用变量来调用父子同名的静态方法时,只会调用父类的静态方法
分布式事务
分布式事务处理是指一个事务可能涉及多个数据库操作
分布式事务处理的关键是必须有一种方法可以知道事务在任何地方所做的所有动作,提交或回滚事务必须产生一致的结果(全部提交或全部回滚)。
XA是X/Open DTP组织(X/Open DTP group)定义的两阶段提交协议,XA被许多数据库(如Oracle、DB2、SQL Server、MySQL)和中间件等工具(如CICS 和 Tuxedo).本地支持 。
X/Open DTP模型(1994)包括应用程序(AP)、事务管理器(TM)、资源管理器(RM)、通信资源管理器(CRM)四部分。
在这个模型中,通常事务管理器(TM)是交易中间件,资源管理器(RM)是数据库,通信资源管理器(CRM)是消息中间件。
一般情况下,某一数据库无法知道其它数据库在做什么,因此,在一个DTP环境中,交易中间件是必需的,由它通知和协调相关数据库的提交或回滚。而一个数据库只将其自己所做的操作(可恢复)影射到全局事务中。
XA就是X/Open DTP定义的交易中间件与数据库之间的接口规范(即接口函数),交易中间件用它来通知数据库事务的开始、结束以及提交、回滚等
XA接口函数由数据库厂商提供。通常情况下,交易中间件与数据库通过XA 接口规范,使用两阶段提交来完成一个全局事务,XA规范的基础是两阶段提交协议。
在第一阶段:交易中间件请求所有相关数据库准备提交(预提交)各自的事务分支,以确认是否所有相关数据库都可以提交各自的事务分支。当某一数据库收到预提交后,如果可以提交属于自己的事务分支,则将自己在该事务分支中所做的操作固定记录下来,并给交易中间件一个同意提交的应答,此时数据库将不能再在该事务分支中加入任何操作,但此时数据库并没有真正提交该事务,数据库对共享资源的操作还未释放(处于锁定状态)。如果由于某种原因数据库无法提交属于自己的事务分支,它将回滚自己的所有操作,释放对共享资源上的锁,并返回给交易中间件失败应答。
在第二阶段:交易中间件审查所有数据库返回的预提交结果,如所有数据库都可以提交,交易中间件将要求所有数据库做正式提交,这样该全局事务被提交。而如果有任一数据库预提交返回失败,交易中间件将要求所有其它数据库回滚其操作,这样该全局事务被回滚。
帮我绘制一个批量添加用户到数据库和openldap服务的流程图
Atomicity(原子性):事务被视为一个不可分割的操作单元,要么全部执行成功,要么全部回滚到初始状态,不存在部分执行的情况。如果事务中的任何一项操作失败,整个事务将会被回滚,数据恢复到事务开始之前的状态。
Consistency(一致性):事务的执行必须使数据库从一个一致性状态转移到另一个一致性状态。在事务开始和结束时,数据库的完整性约束必须得到保持,即数据库中的数据必须符合预定义的规则和约束。
Isolation(隔离性):每个事务的执行都应该与其他事务相互隔离,使它们在逻辑上感觉彼此独立。一个事务的执行不应该对其他事务的执行产生干扰,保证事务之间的互相隔离。
Durability(持久性):一旦事务提交成功,其所做的修改将永久保存在数据库中,即使系统故障或重启,也能够保证数据的持久性。