不像以往like
不像以往like
关注数: 1
粉丝数: 14
发帖数: 45
关注贴吧数: 0
Java好呢?还是安卓前景好? rt
web培训腾科怎么样?优势何在? web培训
广州java软件开发培训腾科职校怎么样? JAVA平台以移动性,安全性,开放性受到大家的追捧,Java平台以其移动性、安全性和开放性受到追捧,Java的IT产品随着越来越多,企业所需的Java人才也越来越多,因此商业价值也越来越高,一个有2到4年的工作经验的JAVA工程师年薪十几万是比较普遍的。JAVA培训对于没有基础的人来说开始会感觉困难,个人不建议自学。 那么在广州这样的一线城市中,那么多的培训机构,哪家比较好?哪家效果比较有保障呢?广州java软件开发培训腾科职校怎么样?腾科公司的JAVA培训是面授上课的,按JAVA的体系课时也是必须保证的,一个班20人左右,这样的方式比较适合JAVA学习人员。腾科公司的培训也有其他IT主流的技术,这些在工作中都非常实用。 很多小伙伴说,现在培训机构很多都是只讲一些理论的东西很难学到真正的使用的技术,那么我只会水,你找的机构不对吧?腾科讲师具有多年项目开发经验,并定期接受 原厂培训,这保证了师资力量。而且腾科的Java课程体系均立足于实战,与企业现有实用技术相吻合,另外,腾科的课程体系针对不同的班会略有调整,量身定做。 你想要学习Java知识吗?那么腾科应该是你不错的选择。 附图,腾科Java班级晚自修,到10点还有同学还在教室。 【学院名称】:广州腾科教育 【咨询电话】:400-885-2225(节假日正常) 【学校地址】:广州市天河区科韵路棠安路口185号乐天大厦2楼(广州校区)
Java课程培训机构哪家效果有保障?腾科怎样? Java课程培训机构哪家效果有保障?腾科怎样?大家有什么好的建议吗?来吐槽吐槽。
腾科:与RHCA云计算的一场邂逅 5月21日,周六,万里晴空的一天本该是与三五知己约在树荫底下促膝长谈,左手一杯咖啡,右手一部手机,翘着二郎腿尽情欢快地聊诗词歌赋到人生哲学。但是,这天我没有选择聊人生,我选择了RHCA云计算,昨日的520已经过去,然而我心中对于RHCA的爱一直都在,于是没有任何犹豫,就来到了腾科公司,实践我与RHCA云计算之间的一个约定。 一大早就来到了腾科,离RHCA云计算--构架双主高可用的haproxy负载均衡系统课程开始还有一个小时,现场已经有很多人了,为了听课效果更好,千辛万苦地找到了一个位置,虽然是在角落。每个人都期待满满,准备好了笔和笔记本,这种感觉像是回到了若干年前的这个时候,正值高考前的一个月,每个小伙伴都奋斗学习,尤其记得的是大家都没有事先约好什么时候去自习,然而大家都好像约定好了似地在晚自习结束了都要坚持留下来虚席。我不是一个人在奋斗,我在学习云计算的路上还有很多小伙伴与之并肩作战。大伙认真听讲 一天RHCA云计算课程结束下来,看着自己满满的笔记,嘴角早已上扬,真得是不枉此行啊!这天RHCA云计算--构架双主高可用的haproxy负载均衡系统课程是由腾科讲师吕老师主持,云计算研究的造诣很高,在课堂当中运用自己项目实战经验,由浅入深,真可谓步步惊心,由于老师的PPT是英文版的,上课一开始我还没进入状态,渐渐地跟随吕老师的节奏,慢慢就找到了感觉,get到了haproxy负载均衡系统相关内容。一套合适的负载均衡解决方案对于解决互联网服务突如其来的流量猛增、自主的流量增加或是硬件故障的紧急维护等无法预测的问题是非常重要的。RHCA云计算从另一个角度保证你的互联网应用都能保持随时可用。大伙友谊合照 时光飞逝,课程结束了,但我的RHCA云计算学习之路才刚开始。“云”造未来,云计算,如果是去见你,我是会用跑的。满满的笔记 腾科IT认证培训:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.togogo.net&urlrefer=969a71e67d337915c9b7a1d93b5d5b52 咨询电 话:400-8852225 总部地址:广州天河区棠安路188号乐天大厦2楼
腾科:我的外国友人,欢迎你们的到来 IT无国界,只要你足够优秀,语言、学历、年龄、性别等通通不是问题。腾科继多次迎来社会各界人士的莅临交流学习外,这次又迎来了一波外国友人。腾科欢迎你们的到来!先进IT 技术的发言权如今美国、欧洲等众多发达国家掌握,而我国IT技术也在不断发展壮大。一些发展中国家如印度等,其IT技术也是世界所肯定的。外国友人纷纷来中国,来到腾科学习IT,其学习课程囊括CCIE在不同的LAN、WAN接口和各种路由器、交换机的联网方面、HCIE中的复杂连接问题的解决、OCM关键业务数据库系统和应用学习等。我们的确是时候好好向人家学习,人家山长水远地来到腾科坚持不懈地学IT,我们还有什么理由不坚持自己选择的IT路呢? 为什么要学习IT。想起了之前流传马云和王健林就电商能否取代传统的店铺经营话题进行打赌的故事,其无论输赢,都折射出IT行业在如今社会越来越重要的地位。而如今,大数据、云计算、信息化已经充斥着生活的各个角落,IT产业正以其特点逐渐取代了传统的运作方式,加速度地向前发展。学习IT不像其他一些行业,会随着社会发展而过时,IT行业只会不断向前发展,也许你会担心薪酬问题,其实没有必要,只要你考到全球认证的IT证书,那时候就不是企业选择你,而是你在选择企业。学习IT,进入IT行业,是每个IT爱好者迷茫之时的最好选择,选择IT,选择腾科。 此次据其中一名外国友人反应,他们选择来腾科,是得知腾科的所有课程全部原厂授权,都是紧跟世界IT发展潮流。而来到腾科之后,发现教学环境都是干净阔郎,还有最新、最全的教学设备。谢谢外国友人对腾科IT集团培训及认证的肯定,腾科欢迎你们的到来。 更多相关资讯请戳http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.togogo.net%2F&urlrefer=b8c8519e3bbef8a8998a701da1b27d2c 相关文章推荐阅读>>>> 腾科Java课程教程好不好?收费划算吗:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fblog.sina.com.cn%2Fs%2Fblog_15f68a62c0102w5l3.html&urlrefer=1d298cf0c0e440d9eda24142b5a0fcbe
说说我在腾科教育培训学习java课程的那些事 这个时代就是不进则退,可怕的不是别人比你努力,而是比你长得好看的还比你努力,说多了都是泪,说说我在腾科教育培训学习Java的一些事吧! 一开始腾科教育培训Java课程培训价格表谁有?腾科教育培训java课程培训价格比较详细的谁知道?在网上参考了网友的一些智慧与分享,然后决定去实地考察下,我是觉得没有去试听过课程,又怎么知道上课的质量如何呢?在广州的总部试听了下课程,我不会说我在那里上了一天的课程,包括还参加了他们的晚自习的课程。 一天下来,觉得老师授课的质量杠杠滴,给我这个大乡里上了一节实用的课程。老师由浅入深给我讲解了许多的Java知识,着实让我开了眼界。晚修的时候,老师还全程辅导。了解了腾科的一些情况之后,本人觉得腾科的面对面授课,回比现在很多的视频、远程的课程要好很多,虽然说要天天往这边跑,但是发现问题就可以马上问老师,可能远程还有视频的不能做到像面对面上课那样的灵活问答,解决问题。 虽然说报名学习的腾科的课程需要一大笔费用,但是这样利于自己坚持,交了钱,想不学,想想就肉痛了。所以心一横就报名了。 在腾科学习已经有3个月了,准备做第一阶段的项目验收,希望自己能够好好把握在腾科的日子吧!有时候,你不逼自己一把永远不知道自己的潜力有多大。 更多相关资讯请戳http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.togogo.net%2F+&urlrefer=240db7d28115c709a5121f128aca2d7a
【腾科资讯】Java 细粒度锁实现的几种方式 最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响。初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性。而java自身api提供的锁粒度太大,很难同时满足这些需求,于是自己动手写了几个简单的扩展 1. 分段锁 借鉴concurrentHashMap的分段思想,先生成一定数量的锁,具体使用的时候再根据key来返回对应的lock。这是几个实现里最简单,性能最高,也是最终被采用的锁策略,代码如下: /** * 分段锁,系统提供一定数量的原始锁,根据传入对象的哈希值获取对应的锁并加锁 * 注意:要锁的对象的哈希值如果发生改变,有可能导致锁无法成功释放!!! */ public class SegmentLock<T> { private Integersegments = 16;//默认分段数量 private final HashMap<Integer, ReentrantLock> lockMap = new HashMap<>; public SegmentLock { init(null, false); } public SegmentLock(Integer counts, boolean fair) { init(counts, fair); } private void init(Integer counts, boolean fair) { if (counts != null) { segments = counts; } for (int i = 0; i < segments; i++) { lockMap.put(i, new ReentrantLock(fair)); } } public void lock(T key) { ReentrantLock lock = lockMap.get(key.hashCode % segments); lock.lock; } public voidunlock(T key) { ReentrantLock lock = lockMap.get(key.hashCode % segments); lock.unlock; } } 2. 哈希锁 上述分段锁的基础上发展起来的第二种锁策略,目的是实现真正意义上的细粒度锁。每个哈希值不同的对象都能获得自己独立的锁。在测试中,在被锁住的代码执行速度飞快的情况下,效率比分段锁慢 30% 左右。如果有长耗时操作,感觉表现应该会更好。代码如下: public class HashLock<T> { private boolean isFair = false; private final SegmentLock<T> segmentLock = new SegmentLock<>;//分段锁 private final ConcurrentHashMap<T, LockInfo> lockMap = new ConcurrentHashMap<>; public HashLock { } public HashLock(boolean fair) { isFair = fair; } public void lock(T key) { LockInfo lockInfo; segmentLock.lock(key); try { lockInfo = lockMap.get(key); if (lockInfo == null) { lockInfo = new LockInfo(isFair); lockMap.put(key, lockInfo); } else { lockInfo.count.incrementAndGet; } } finally { segmentLock.unlock(key); } lockInfo.lock.lock; } public void unlock(T key) { LockInfo lockInfo = lockMap.get(key); if (lockInfo.count.get == 1) { segmentLock.lock(key); try { if (lockInfo.count.get == 1) { lockMap.remove(key); } } finally { segmentLock.unlock(key); } } lockInfo.count.decrementAndGet; lockInfo.unlock; } private static class LockInfo { public ReentrantLock lock; public AtomicInteger count = new AtomicInteger(1); private LockInfo(boolean fair) { this.lock = new ReentrantLock(fair); } public void lock { this.lock.lock; } public void unlock { this.lock.unlock; } } } 3. 弱引用锁 哈希锁因为引入的分段锁来保证锁创建和销毁的同步,总感觉有点瑕疵,所以写了第三个锁来寻求更好的性能和更细粒度的锁。这个锁的思想是借助java的弱引用来创建锁,把锁的销毁交给jvm的垃圾回收,来避免额外的消耗。 有点遗憾的是因为使用了ConcurrentHashMap作为锁的容器,所以没能真正意义上的摆脱分段锁。这个锁的性能比 HashLock 快10% 左右。锁代码: /** * 弱引用锁,为每个独立的哈希值提供独立的锁功能 */ public class WeakHashLock<T> { private ConcurrentHashMap<T, WeakLockRef<T, ReentrantLock>> lockMap = new ConcurrentHashMap<>; privateReferenceQueue<ReentrantLock> queue = new ReferenceQueue<>; public ReentrantLock get(T key) { if (lockMap.size > 1000) { clearEmptyRef; } WeakReference<ReentrantLock> lockRef = lockMap.get(key); ReentrantLock lock = (lockRef == null ? null : lockRef.get); while (lock == null) { lockMap.putIfAbsent(key, new WeakLockRef<>(new ReentrantLock, queue, key)); lockRef = lockMap.get(key); lock = (lockRef == null ? null : lockRef.get); if (lock != null) { return lock; } clearEmptyRef; } return lock; } @SuppressWarnings("unchecked") private void clearEmptyRef { Reference<? extends ReentrantLock> ref; while ((ref = queue.poll) != null) { WeakLockRef<T, ? extends ReentrantLock> weakLockRef = (WeakLockRef<T, ? extends ReentrantLock>) ref; lockMap.remove(weakLockRef.key); } } private static final class WeakLockRef<T, K> extends WeakReference<K> { final T key; privateWeakLockRef(K referent, ReferenceQueue<? super K> q, T key) { super(referent, q); this.key = key; } } } 后记 最开始想借助 locksupport 和 AQS 来实现细粒度锁,写着写着发现正在实现的东西和java 原生的锁区别不大,于是放弃改为对java自带锁的封装,浪费了不少时间。 实际上在实现了这些细粒度锁之后,又有了新的想法,比如可以通过分段思想将数据提交给专门的线程来处理,可以减少大量线程的阻塞时间,留待日后探索. 更多资讯请登录腾科官网:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.togogo.net%2F+&urlrefer=240db7d28115c709a5121f128aca2d7a。 更多相关文章推荐阅读>>>>> 腾科JavaEE课程课程优势怎样:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2Fkc%2Fjava%2F2013%2F0227%2F293.html+&urlrefer=478141c16646a8bcaee074c87afbc8ff Java 9发布在即,Oracle OpenJDK着手优化Unsafe类:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2Fnews%2Fznews%2F2016%2F0511%2F1309.html+&urlrefer=1a547df4adf97b9cbd6599539f019e8f
Java 9发布在即,Oracle OpenJDK着手优化Unsafe类 java 9 正式版预计在 2017 年 2 季度发布,目前大部分 JEP 已经基本成型。其中,最关键特性或许是 JEP 261, 该 JEP 实现了 java 平台的模块系统, 具体说明可以参见 JSR376。 模块系统依赖于 JEP260(封装了大部分内部 API),导致的结果是 JEP193定义的多个句柄会暴露 sun.misc.Unsafe 类的功能。此前 Info 报道过致力于解决 sun.misc.Unsafe 句柄问题的团队,可能的解决方案细节亦可参见另一篇报道。 Bug 8149159最近被提交到 JDK Bug 管理系统, 建议优化和清理 Unsafe 类, 包括将参数检查从本地代码移入 Java(简化 JIT)、 sun.misc.Unsafe 类和 jdk.internal.misc.Unsafe 类的统一、 以及本地代码的整体清理。 2 月 18 日,Oracle 工程师 Mikael Vidstedt 向 OpenJDK 开发者社区提交了两个补丁(分别针对 OpenJDK 和 OpenJDK HotSpot VM) 关于这两个补丁,Vidstedt 总结道: 避免代码重复,sun.misc.Unsafe 将全部实现委托给 jdk.internal.misc.Unsafe,这意味着 java 虚拟机(特别是 unsafe.cpp)不再需要关心s.m.Unsafe 的实现。 s.m.Unsafe 的委托方法通常会被内联,但是为了避免性能下降的风险,仍然添加了@ForceInline 注解 更新文档,指明用户应该确保 Unsafe 类的参数正确 参数检查从 Unsage.cpp 移入 java,简化本地代码以及允许 JIT 进一步优化 放松了特定参数的检查,比方说最近引入的U.copySwapMemory 没有检查空指针。具体原因可以参考j.i.m.U.checkPointer 的文档。除了U.copySwapMemory,现在 Unsafe 类方法也都没有对参数执行 NULL 检查 在U.copySwapMemory 类的基础上,对j.i.m.U.copyMemory 增加了一个测试案例。请随时提醒我合并过来(本该如此) 在 Vidstedt 看来,Usage 类的清理算是“相当激进”了,值得注意的地方有: Unsafe_方法以及 unsafe.cpp 中的其他本地方法被申明为静态方法 新增 unsafe.hpp 代码文件,文件中移入 VM 其他组件的一些方法。移除部分“extern”函数声明(不要过度使用 extern) 对于不怎么用到的 UNSAFE_LEAF,移除警告性质的注释(没有必要,只是个 VM_LEAF) 一些简单的 leaf 方法使用 UNSAFE_LEAF UNSAFE_ENTRY/UNSAFE_END 代码块新增大括号,帮助自动缩进 移除未使用的 Unsafe_<...>##140 形式的函数和宏 更新宏参数,与 unsafe.cpp 的宏定义保持一致 更换带断言的参数检查,正如前面提及,这些检查移入了j.i.m.Unsafe,移除所有s.m.Unsafe 相关的代码 文章来源:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2Fnews%2Fznews%2F2016%2F0511%2F1309.html+&urlrefer=1a547df4adf97b9cbd6599539f019e8f 腾科官方网址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2F+&urlrefer=8a1b398fc67cc05cbe97a6b096e8fb55
【腾科资讯】Java 细粒度锁实现的几种方式 最近在工作上碰见了一些高并发的场景需要加锁来保证业务逻辑的正确性,并且要求加锁后性能不能受到太大的影响。初步的想法是通过数据的时间戳,id等关键字来加锁,从而保证不同类型数据处理的并发性。而java自身api提供的锁粒度太大,很难同时满足这些需求,于是自己动手写了几个简单的扩展 1. 分段锁 借鉴concurrentHashMap的分段思想,先生成一定数量的锁,具体使用的时候再根据key来返回对应的lock。这是几个实现里最简单,性能最高,也是最终被采用的锁策略,代码如下: /** * 分段锁,系统提供一定数量的原始锁,根据传入对象的哈希值获取对应的锁并加锁 * 注意:要锁的对象的哈希值如果发生改变,有可能导致锁无法成功释放!!! */ public class SegmentLock<T> { private Integersegments = 16;//默认分段数量 private final HashMap<Integer, ReentrantLock> lockMap = new HashMap<>; public SegmentLock { init(null, false); } public SegmentLock(Integer counts, boolean fair) { init(counts, fair); } private void init(Integer counts, boolean fair) { if (counts != null) { segments = counts; } for (int i = 0; i < segments; i++) { lockMap.put(i, new ReentrantLock(fair)); } } public void lock(T key) { ReentrantLock lock = lockMap.get(key.hashCode % segments); lock.lock; } public voidunlock(T key) { ReentrantLock lock = lockMap.get(key.hashCode % segments); lock.unlock; } } 2. 哈希锁 上述分段锁的基础上发展起来的第二种锁策略,目的是实现真正意义上的细粒度锁。每个哈希值不同的对象都能获得自己独立的锁。在测试中,在被锁住的代码执行速度飞快的情况下,效率比分段锁慢 30% 左右。如果有长耗时操作,感觉表现应该会更好。代码如下: public class HashLock<T> { private boolean isFair = false; private final SegmentLock<T> segmentLock = new SegmentLock<>;//分段锁 private final ConcurrentHashMap<T, LockInfo> lockMap = new ConcurrentHashMap<>; public HashLock { } public HashLock(boolean fair) { isFair = fair; } public void lock(T key) { LockInfo lockInfo; segmentLock.lock(key); try { lockInfo = lockMap.get(key); if (lockInfo == null) { lockInfo = new LockInfo(isFair); lockMap.put(key, lockInfo); } else { lockInfo.count.incrementAndGet; } } finally { segmentLock.unlock(key); } lockInfo.lock.lock; } public void unlock(T key) { LockInfo lockInfo = lockMap.get(key); if (lockInfo.count.get == 1) { segmentLock.lock(key); try { if (lockInfo.count.get == 1) { lockMap.remove(key); } } finally { segmentLock.unlock(key); } } lockInfo.count.decrementAndGet; lockInfo.unlock; } private static class LockInfo { public ReentrantLock lock; public AtomicInteger count = new AtomicInteger(1); private LockInfo(boolean fair) { this.lock = new ReentrantLock(fair); } public void lock { this.lock.lock; } public void unlock { this.lock.unlock; } } } 3. 弱引用锁 哈希锁因为引入的分段锁来保证锁创建和销毁的同步,总感觉有点瑕疵,所以写了第三个锁来寻求更好的性能和更细粒度的锁。这个锁的思想是借助java的弱引用来创建锁,把锁的销毁交给jvm的垃圾回收,来避免额外的消耗。 有点遗憾的是因为使用了ConcurrentHashMap作为锁的容器,所以没能真正意义上的摆脱分段锁。这个锁的性能比 HashLock 快10% 左右。锁代码: /** * 弱引用锁,为每个独立的哈希值提供独立的锁功能 */ public class WeakHashLock<T> { private ConcurrentHashMap<T, WeakLockRef<T, ReentrantLock>> lockMap = new ConcurrentHashMap<>; privateReferenceQueue<ReentrantLock> queue = new ReferenceQueue<>; public ReentrantLock get(T key) { if (lockMap.size > 1000) { clearEmptyRef; } WeakReference<ReentrantLock> lockRef = lockMap.get(key); ReentrantLock lock = (lockRef == null ? null : lockRef.get); while (lock == null) { lockMap.putIfAbsent(key, new WeakLockRef<>(new ReentrantLock, queue, key)); lockRef = lockMap.get(key); lock = (lockRef == null ? null : lockRef.get); if (lock != null) { return lock; } clearEmptyRef; } return lock; } @SuppressWarnings("unchecked") private void clearEmptyRef { Reference<? extends ReentrantLock> ref; while ((ref = queue.poll) != null) { WeakLockRef<T, ? extends ReentrantLock> weakLockRef = (WeakLockRef<T, ? extends ReentrantLock>) ref; lockMap.remove(weakLockRef.key); } } private static final class WeakLockRef<T, K> extends WeakReference<K> { final T key; privateWeakLockRef(K referent, ReferenceQueue<? super K> q, T key) { super(referent, q); this.key = key; } } } 后记 最开始想借助 locksupport 和 AQS 来实现细粒度锁,写着写着发现正在实现的东西和java 原生的锁区别不大,于是放弃改为对java自带锁的封装,浪费了不少时间。 实际上在实现了这些细粒度锁之后,又有了新的想法,比如可以通过分段思想将数据提交给专门的线程来处理,可以减少大量线程的阻塞时间,留待日后探索. 更多资讯请登录腾科官网:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Fwww.togogo.net%2F+&urlrefer=240db7d28115c709a5121f128aca2d7a。 更多相关文章推荐阅读>>>>> 腾科JavaEE课程课程优势怎样:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2Fkc%2Fjava%2F2013%2F0227%2F293.html+&urlrefer=478141c16646a8bcaee074c87afbc8ff Java 9发布在即,Oracle OpenJDK着手优化Unsafe类:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2Fnews%2Fznews%2F2016%2F0511%2F1309.html+&urlrefer=1a547df4adf97b9cbd6599539f019e8f
Java 9发布在即,Oracle OpenJDK着手优化Unsafe类 java 9 正式版预计在 2017 年 2 季度发布,目前大部分 JEP 已经基本成型。其中,最关键特性或许是 JEP 261, 该 JEP 实现了 java 平台的模块系统, 具体说明可以参见 JSR376。 模块系统依赖于 JEP260(封装了大部分内部 API),导致的结果是 JEP193定义的多个句柄会暴露 sun.misc.Unsafe 类的功能。此前 Info 报道过致力于解决 sun.misc.Unsafe 句柄问题的团队,可能的解决方案细节亦可参见另一篇报道。 Bug 8149159最近被提交到 JDK Bug 管理系统, 建议优化和清理 Unsafe 类, 包括将参数检查从本地代码移入 Java(简化 JIT)、 sun.misc.Unsafe 类和 jdk.internal.misc.Unsafe 类的统一、 以及本地代码的整体清理。 2 月 18 日,Oracle 工程师 Mikael Vidstedt 向 OpenJDK 开发者社区提交了两个补丁(分别针对 OpenJDK 和 OpenJDK HotSpot VM) 关于这两个补丁,Vidstedt 总结道: 避免代码重复,sun.misc.Unsafe 将全部实现委托给 jdk.internal.misc.Unsafe,这意味着 java 虚拟机(特别是 unsafe.cpp)不再需要关心s.m.Unsafe 的实现。 s.m.Unsafe 的委托方法通常会被内联,但是为了避免性能下降的风险,仍然添加了@ForceInline 注解 更新文档,指明用户应该确保 Unsafe 类的参数正确 参数检查从 Unsage.cpp 移入 java,简化本地代码以及允许 JIT 进一步优化 放松了特定参数的检查,比方说最近引入的U.copySwapMemory 没有检查空指针。具体原因可以参考j.i.m.U.checkPointer 的文档。除了U.copySwapMemory,现在 Unsafe 类方法也都没有对参数执行 NULL 检查 在U.copySwapMemory 类的基础上,对j.i.m.U.copyMemory 增加了一个测试案例。请随时提醒我合并过来(本该如此) 在 Vidstedt 看来,Usage 类的清理算是“相当激进”了,值得注意的地方有: Unsafe_方法以及 unsafe.cpp 中的其他本地方法被申明为静态方法 新增 unsafe.hpp 代码文件,文件中移入 VM 其他组件的一些方法。移除部分“extern”函数声明(不要过度使用 extern) 对于不怎么用到的 UNSAFE_LEAF,移除警告性质的注释(没有必要,只是个 VM_LEAF) 一些简单的 leaf 方法使用 UNSAFE_LEAF UNSAFE_ENTRY/UNSAFE_END 代码块新增大括号,帮助自动缩进 移除未使用的 Unsafe_<...>##140 形式的函数和宏 更新宏参数,与 unsafe.cpp 的宏定义保持一致 更换带断言的参数检查,正如前面提及,这些检查移入了j.i.m.Unsafe,移除所有s.m.Unsafe 相关的代码 文章来源:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2Fnews%2Fznews%2F2016%2F0511%2F1309.html+&urlrefer=1a547df4adf97b9cbd6599539f019e8f 腾科官方网址:http://tieba.baidu.com/mo/q/checkurl?url=http%3A%2F%2Ftogogo.net%2F+&urlrefer=8a1b398fc67cc05cbe97a6b096e8fb55
ocm认证有用吗?广州腾科对着方面的培训有用吗? ocm认证有用吗?
上海腾科2016ccna考试费用多少? 又知道的吗?
1
下一页