各方记录

1、正则表达式 ^regex 正则必须匹配字符串开头 regex$ 正则必须匹配字符串结尾

2、匹配所有字母但是要排除Math.ceil 正则暂未发现能够实现,所以直接将字符串中的Math.ceil替换为空

3、策略模式变形 1)定义策略接口 2)实现策略(使用类型ID作为Bean别名) 3)调用策略(使用AutowireCapableBeanFactory根据类型ID获取Bean容器里的策略)

4、GC 增量式GC

可配置不执行GC

5、ORA-01830: 日期格式图片在转换整个输入字符串之前结束 TO_DATE(SUBSTR(‘2022-12-31 00:00:00.0’,1,10), ‘YYYY-MM-DD’)

6、Transaction rolled back because it has been marked as rollback-only 产生原因: 同一事务,A方法内调用B方法,B方法报错,A方法捕获了异常,没有抛出或手动回滚,自己消化了异常,事务结束后提交事务出现这个问题。但是线程内,没有事务,调用B方法抛异常不会出现问题

获取当前事务:TransactionSynchronizationManager.getCurrentTransactionName(); 1)@Transactional 作用于公共方法

2)事务内部新建事务的调用生效 1.通过Spring上下文获取指定代理对象去调用方法 @Autowired private ApplicationContext applicationContext; applicationContext.getBean(Service.class); 2.通过Aop上下文获取当前代理对象 需要开启aop的exposeProxy属性,暴露代理对象:@EnableAspectJAutoProxy(exposeProxy = true) 使用AopContext.currentProxy()获取当前代理对象 同一个类中的其他方法 3.直接通过@Autowired注入

3)事务ACID特性 原子性(Atomicity):一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚。–》主要涉及InnoDB事务。相关特性:事务的提交,回滚,信息表。

一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。在事务开始前后,数据库的完整性约束没有被破坏。例如违反了唯一性,必须撤销事务,返回初始状态。–》主要涉及内部InnoDB处理,以保护数据不受崩溃,相关特性:双写缓冲、崩溃恢复。

隔离性(isolation):每个读写事务的对象对其他事务的操作对象能相互分离,即:事务提交前对其他事务是不可见的,通常内部加锁实现。–》主要涉及事务,尤其是事务隔离级别,相关特性:隔离级别、innodb锁的底层实现细节。

持久性(durability):一旦事务提交,则其所做的修改会永久保存到数据库。–》涉及到MySQL软件特性与特定硬件配置的相互影响,相关特性:4个配置项:双写缓冲开关、事务提交刷新log的级别、binlog同步频率、表文件;写缓存、操作系统对于fsync()的支持、备份策略等。

4) 脏读(Drity Read):事务A更新记录但未提交,事务B查询出A未提交记录。

不可重复读(Non-repeatable read): 事务A读取一次,此时事务B对数据进行了更新或删除操作,事务A再次查询数据不一致。

幻读(Phantom Read): 事务A读取一次,此时事务B插入一条数据事务A再次查询,记录多了。

7、全局异常处理消灭try——catch @ControllerAdvice @ExceptionHandler 统一一个异常结果类

8、Integer 缓存 -128——127 IntegerCache 使用static块代码一开始就缓存好-128——127的Integer Integer l1 = 127; Integer l2 = Integer.valueOf(127); l1 == l2 ———— true 字面量的形式去定义Integer(Integer l1 = 127)会默认调用Integer类中的valueOf方法

9、Spring解决循环依赖 1、提前曝光 2、三级缓存singletonObjects、earlySingletonObjects、singletonFactories。 3、只针对单例

singletonObjects:第一级缓存,里面放置的是实例化好的单例对象; earlySingletonObjects:第二级缓存,里面存放的是提前曝光的单例对象; singletonFactories:第三级缓存,里面存放的是要被实例化的对象的对象工厂

假设当前Bean是A,A依赖的Bean是B,B又依赖A 实例化A,将A放入三级缓存singletonFactories 实例化A后需要注入依赖的属性,发现A依赖B 实例化B,将B放入三级缓存singletonFactories 实例化B后需要注入依赖的属性,发现B依赖A 从三级缓存中查找A,存在A,直接获取A放到二级缓存,删除三级缓存中的A B获取到A,依赖注入完成后会将B从二级、三级缓存中删除,放入一级缓存 接下来继续A的依赖注入,将A的实例也放入一级缓存

10、Oracle TO_CHAR(‘.9’,’fm0.99’) 作用:对数据进行格式化   ①其9代表:如果存在数字则显示数字,不存在则显示空格 ②其0代表:如果存在数字则显示数字,不存在则显示0,即占位符。 ③其FM代表:删除如果是因9带来的空格,则删除之

11、oracle 无效的列类型 getNamedParameterJdbcTemplate对应的Map中获取的key是链表导致的。

12、将Map列表转为字符串列表 List contractNos = (List) CollectionUtils.collect(data, new Transformer<Map<String, Object>, String>() { @Override public String transform(Map<String, Object> input) { return MapUtils.getString(input, "CONTRACT_NO"); } });

13、使用条件过滤集合 CollectionUtils.filter(data, new Predicate<Map<String, Object»() { @Override public boolean evaluate(Map<String, Object> map) { if (StringUtils.isNotEmpty(MapUtils.getString(map, “CHG_ITEM_ID”))) { return true; } return false; } });

14、redis命令 连接 使用win10 Ubuntu、使用idea插件iedis进行redis连接

远程连接 redis-cli -h 10.45.59.200 -p 7670

redis-cli -h 10.45.59.194 -p 6379

redis查询所有key keys *

redis查询匹配的key keys apple*

关闭连接 quit

获取value get key

赋值 set key value

删除key DEL name del RES_FRAME_MODULE_COMPONENT_CACHE_DYN_QUERY_13435_-1

15、ORA-01861:文字与格式字符串不匹配 SQL中时间类型字段的问题

16、oracle排序分页效率优化 排序字段唯一,防止分页重复数据 排序字段加索引,防止全表查询 单表默认是rowid排序

17、Refused to apply style from because its MIME type (‘text/html’) is not a supported stylesheet MIME type, and strict MIME checking is enabled. Refused to execute script from because its MIME type (‘text/html’) is not executable, and strict MIME type checking is enabled. 将引用的绝对路径改成相对路径 降低jdk版本 application/javascript response.setContentType(“text/javascript”);

18、极客时间——Java并发编程实战 1、可见性:一个线程对共享变量的修改另一个线程能够立刻看到 单核cpu,无可见性问题

19、Oracle SQL执行计划分析 partition range inlist: 分区键中用了in

20、哈希碰撞及解决方案 指的是不同的值,经过哈希之后得到的值确是相同的

21、thread.join可以实现和 CountDownLatch 一样的效果 对主线程进行阻塞,等待所有子线程

22、js JSON.parse(data) JSON.stringify(data)

MapReduce Spark redis底层 等幂性

Blog

Dump

Project