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()的支持、备份策略等。
脏读(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*
获取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底层