modal="true";//easyUi设置弹窗遮罩的效果
IOC
:意思是控制反转,它是
spring
的核心,把传统观念中创建对象的权利交给
spring
容器来管理,简化了开发
AOP
:意思是面向切面编程,是
OOP
面向对象编程的补充和完善,是对
spring
的
DI
依赖注入的完善,通过动态代理将程序运行过程分解成各个切面。
查询下一个id
@transient 就是在给某个javabean上需要添加个属性,但是这个属性你又不希望给存到数据库中去,仅仅是做个临时变量,用一下。不修改已经存在数据库的数据的数据结构。
注意点:一对多如果不关注集合对象顺序,使用
Set
,关注集合对象顺序使用
List
保证顺序在数据表建立索引数据列,存放
list
集合下标
@OrderColumn
在程序中保存数据到索引库,发生异常
jackson
数据转换异常,造成死循环栈溢出
解决
@JsonIgnore
注解
在编译的时候编译器会自动将对for这个关键字的使用转化为对目标的迭代器的使用
,这就是foreach循环的原理。进而,我们再得出两个结论:
1、ArrayList之所以能使用foreach循环遍历,是因为ArrayList所有的List都是Collection的子接口,而Collection是Iterable的子接口,ArrayList的父类AbstractList正确地实现了Iterable接口的iterator方法。之前我自己写的ArrayList用foreach循环直接报空指针异常是因为我自己写的ArrayList并没有实现Iterable接口
2、任何一个集合,无论是JDK提供的还是自己写的,只要想使用foreach循环遍历,就必须正确地实现Iterable接口
实际上,这种做法就是23中设计模式中的
迭代器模式
。
缓存一致性协议。最出名的就是Intel 的MESI协议,MESI协议保证了每个缓存中使用的共享变量的副本是一致的。它核心的思想是:当CPU写数据时,如果发现操作的变量是共享变量,即在其他CPU中也存在该变量的副本,会发出信号通知其他CPU将该变量的缓存行置为无效状态,因此当其他CPU需要读取这个变量时,发现自己缓存中缓存该变量的缓存行是无效的,那么它就会从内存重新读取。
要想并发程序(多线程)正确地执行,必须要保证原子性、可见性以及有序性。只要有一个没有被保证,就有可能会导致程序运行不正确。
Java内存模型(Java Memory Model,JMM
forward重定向 url不变 公用一个request
redirect 请求转发 URL变化