上一页 1 2 3 4 5 6 7 8 ··· 39 下一页
摘要: 1、ABA问题 如果一个变量V初次读取的时候是A值,并且在准备赋值的时候检查到它仍然是A值,那我们就能说明它的值没有被其他线程修改过了吗?很明显是不能的,因为在这段时间他的值可能被改为其他值,然后又改回A,那CAS操作就会误认为它从来没被修改过。这个问题被称为C... 阅读全文
posted @ 2019-03-22 18:45 strawqqhat 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 1、版本号机制 一般是在数据表中加上一个版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在提交更新时,若刚才读到的version值与当前数据库中的versi... 阅读全文
posted @ 2019-03-22 18:29 strawqqhat 阅读(3577) 评论(0) 推荐(1) 编辑
摘要: 悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其他线程阻塞,用完后再把资源转让给其他线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁... 阅读全文
posted @ 2019-03-22 15:59 strawqqhat 阅读(153) 评论(0) 推荐(0) 编辑
摘要: sychronized与volatile关键字区别:1、volatle关键字解决的是变量在多个线程之间的可见性;而sychronized关键字解决的是多个线程之间访问共享资源的同步性。2、volatile只能用于修饰变量,而synchronized可以修饰方法以及代码... 阅读全文
posted @ 2019-03-22 15:49 strawqqhat 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 链接:https://www.nowcoder.com/discuss/113050阿里一面20min 说项目,说平常怎么学习java,说除了项目有自己开发过什么。问基础分代回收算法对象分类 这种算法并不是一种新的算法,而是根据对象的存活周期的不同而将内存分为几... 阅读全文
posted @ 2019-03-22 15:27 strawqqhat 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 对象优先在新生代的eden区分配内存,但是也并不绝对,下面几种情况对象会晋升到老年代。1、大对象直接进入老年代。比如很长的字符串,或者很大的数组等。2、长期存活的对象进入老年代。在堆中分配内存的对象,其内存布局的对象头中包含了GC分代年龄标记信息。如果对象在eden区... 阅读全文
posted @ 2019-03-22 14:25 strawqqhat 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 对象分类 这种算法并不是一种新的算法,而是根据对象的存活周期的不同而将内存分为几块,分别是新生代、老年代和永久代。新生代:朝生夕灭的对象(例如方法的局部变量等);老年代:存活的比较久但还是要死的对象(例如缓存对象、单例对象等);永久代:对象生成后几乎不灭的对象(... 阅读全文
posted @ 2019-03-22 14:14 strawqqhat 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 查询总结1、oid查询-get2、对象属性导航查询3、HQL4、Criteria5、原生SQL 查询-HQL语法基础语法String hql = "from cn.itcast.domain.Customer ";//完整写法String hql2 = "from C... 阅读全文
posted @ 2019-03-21 09:39 strawqqhat 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 链接:https://www.nowcoder.com/discuss/82665 1.你们项目的分布式架构是怎么做的?java分布式开发用什么中间件?2.nginx底层原理?集群中有服务器挂了或者上线怎么处理?https://www.cnblogs.com/ray-... 阅读全文
posted @ 2019-03-20 10:18 strawqqhat 阅读(175) 评论(0) 推荐(0) 编辑
摘要: (1):MyISAM存储引擎不支持事务、也不支持外键,优势是访问速度快,对事务完整性没有 要求或者以select,insert为主的应用基本上可以用这个引擎来创建表支持3种不同的存储格式,分别是:静态表;动态表;压缩表静态表:表中的字段都是非变长字段,这样每个记录都是... 阅读全文
posted @ 2019-03-20 10:17 strawqqhat 阅读(170) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 39 下一页
#home h1{ font-size:45px; } body{ background-image: url("放你的背景图链接"); background-position: initial; background-size: cover; background-repeat: no-repeat; background-attachment: fixed; background-origin: initial; background-clip: initial; height:100%; width:100%; } #home{ opacity:0.7; } .wall{ position: fixed; top: 0; left: 0; bottom: 0; right: 0; } div#midground{ background: url("https://i.postimg.cc/PP5GtGtM/midground.png"); z-index: -1; -webkit-animation: cc 200s linear infinite; -moz-animation: cc 200s linear infinite; -o-animation: cc 200s linear infinite; animation: cc 200s linear infinite; } div#foreground{ background: url("https://i.postimg.cc/z3jZZD1B/foreground.png"); z-index: -2; -webkit-animation: cc 253s linear infinite; -o-animation: cc 253s linear infinite; -moz-animation: cc 253s linear infinite; animation: cc 253s linear infinite; } div#top{ background: url("https://i.postimg.cc/PP5GtGtM/midground.png"); z-index: -4; -webkit-animation: da 200s linear infinite; -o-animation: da 200s linear infinite; animation: da 200s linear infinite; } @-webkit-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @-o-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @-moz-keyframes cc { from{ background-position: 0 0; transform: translateY(10px); } to{ background-position: 600% 0; } } @keyframes cc { 0%{ background-position: 0 0; } 100%{ background-position: 600% 0; } } @keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-webkit-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-moz-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } } @-ms-keyframes da { 0%{ background-position: 0 0; } 100%{ background-position: 0 600%; } }