首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
确定删除此收藏集吗
删除后此收藏集将被移除
取消
确定删除
确定删除此文章吗
删除后此文章将被从当前收藏集中移除
取消
确定删除
编辑收藏集
名称:
描述:
0
/100
公开
当其他人关注此收藏集后不可再更改为隐私
隐私
仅自己可见此收藏集
取消
确定
java
订阅
litblank
更多收藏集
微信扫码分享
微信
新浪微博
QQ
29篇文章 · 0订阅
Java中的增强for循环(for each)的实现原理与坑
第一种是普通的for循环遍历、第二种是使用迭代器进行遍历,第三种我们一般称之为增强for循环(for each)。 可以看到,第三种形式是JAVA提供的语法糖,这里我们剖洗一下,这种增强for循环底层是如何实现的。 如此循环往复,直到遍历完List中的所有元素。 通过反编译,我…
Java网络爬虫实操(3)
pipeline是一种常见的算法模式,针对不断循环的耗时任务,如果要等一个循环结束后再轮到处理下一个任务的话,时间上有点浪费。 所以,把耗时任务拆分为几个环节,只要一个环节完成了,就可以轮到下一个任务的那个环节就马上开始处理。不用等到这个耗时任务全部结束了才开始。 我认为应用在…
深入分析CAS(乐观锁)
乐观锁,严格来说并不是锁,通过原子性来保证数据的同步,比如说数据库的乐观锁,通过版本控制来实现等,所以CAS不会保证线程同步。乐观的认为在数据更新期间没有其他线程影响 CAS(compare and swap) 比较并替换,就是将内存值更新为需要的值,但是有个条件,内存值必须与…
你真的懂 Java 的内存管理和引用类型吗?
对于 Java 程序员来说,在 Java 虚拟机自动内存管理机制的帮助下,不再需要为每一个 new 操作去写对应的 delete/free 代码,不容易出现内存泄露和内存溢出的问题。不过,也正是因为 Java 程序员把内存控制的权力交给了 Java 虚拟机,一旦出现内存泄露和内…
深入理解Java虚拟机(类加载机制)
上一篇文章我们介绍了「类文件结构」,这一篇我们来看看虚拟机是如何加载类的。 我们的源代码经过编译器编译成字节码之后,最终都需要加载到虚拟机之后才能运行。虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Jav…
【译】Java 8的新特性—终极版
Java 8 已经发布很久了,很多报道表明Java 8 是一次重大的版本升级。在Java Code Geeks上已经有很多介绍Java 8新特性的文章,例如Playing with Java 8 – Lambdas and Concurrency、Java 8 Date Tim…
如何优雅的使用和理解线程池
可见线程池的重要性。 线程是稀缺资源,不能频繁的创建。 解耦作用;线程的创建于执行完全分开,方便维护。 应当将其放入一个池子中,可以给其他任务进行复用。 谈到线程池就会想到池化技术,其中最核心的思想就是把宝贵的资源放到一个池子中;每次使用都从里面获取,用完之后又放回池子供其他人…
JAVA 中的 CAS
CAS 是现代操作系统,解决并发问题的一个重要手段,最近在看 eureka 的源码的时候。遇到了很多 CAS 的操作。今天就系统的回顾一下 Java 中的CAS。 当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功,但是并不会阻塞其他线程,其他线程只会收到操作失败的…
SpringMVC+WebSocket+Gradle实现消息实时推送
WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术。 WebSocket通信协议于2011年被IETF定为标准RFC 6455,WebSocketAPI被W3C定为标准。 在WebSocket API中,浏览器和服务器只需要要做一个握手的动作,…
线程、多线程与线程池总结
了解更多线程相关的概念,查看 Demo 加深对线程相关的使用与控制