获得徽章 0
#1024一起掘金# 大家有中大奖的吗 让我瞅瞅
评论
#1024一起掘金# 早啊 上班打卡
评论
赞了这篇沸点
#与A-SOUL一起成为更好的自己#
2023年的夏天
YOYO与掘友一起
在好好生活计划中分享快乐、点赞感动🌈
根据系统筛查连续发布天数以及人工审核内容规范后,现公示中奖名单与全部审核情况。
📮 中奖名单与公示:sourl.co
中奖邮寄问卷信息,将于10 月 17 日通过站内信的形式发送,请于10月23日23:59点前填写问卷邮寄信息
奖品将会在11月1日统一发送
💕21天的打卡是一个开始
在这个夏天,我们见证了掘友自律健身、分享美食、旅行打卡、好好生活
我们始终期待与各位掘友一起
在稀土掘金技术社区沉淀技术内容、陪伴掘友成长!
相关问题与反馈可联系xitujuejinwenchuang@bytedance.com
展开
YOYO悠悠于2023-10-13 18:33发布的图片
104
赞了这篇沸点
#与A-SOUL一起成为更好的自己#
2023年的夏天,YOYO与掘友一起
在好好生活计划中分享快乐、点赞感动🌈
根据系统筛查连续发布天数以及人工审核内容规范后,现公示中奖名单与全部审核情况。
📮 中奖名单与公示:sourl.co
中奖邮寄问卷信息,将于10 月 17 日通过站内信的形式发送,请于10月23日23:59点前填写问卷邮寄信息
奖品将会在11月1日统一发送
💕21天的打卡是一个开始
在这个夏天,我们见证了掘友自律健身、分享美食、旅行打卡、好好生活
我们始终期待与各位掘友一起
在稀土掘金技术社区沉淀技术内容、陪伴掘友成长!
展开
优弧于2023-10-13 18:52发布的图片
32
赞了这篇沸点
#1024一起掘金# 这个1024,让我们一起掘金!
在今年的1024程序员节,掘金为大家准备了「探索掘金」、「1024 AI 防骗图鉴」、「稀土掘金创新论坛」三大活动,让我们暂时离开代码屏幕,回归社区,回归彼此。邀你一同参与,Mate 60 Pro、iPhone 15 Pro等惊喜奖品等你来拿!
🔗 「探索掘金」直达链接:juejin.cn
🔗 所有活动汇总链接:juejin.cn
展开
稀土君于2023-10-16 01:12发布的图片
12
#每天一个知识点#
可重⼊锁和⾮可重⼊锁
所谓重⼊锁,顾名思义。就是⽀持重新进⼊的锁,也就是说这个锁⽀持⼀个线程对
资源重复加锁。
synchronized关键字就是使⽤的重⼊锁。⽐如说,你在⼀个synchronized实例⽅法
⾥⾯调⽤另⼀个本实例的synchronized实例⽅法,它可以重新进⼊这个锁,不会出
现任何异常。
如果我们⾃⼰在继承AQS实现同步器的时候,没有考虑到占有锁的线程再次获取锁
的场景,可能就会导致线程阻塞,那这个就是⼀个“⾮可重⼊锁”。
ReentrantLock 的中⽂意思就是可重⼊锁。
展开
评论
#每天一个知识点#
在事件处理程序中调用event.preventDefault()或者event.stopPropagation()是非常常见的需求,尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理DOM事件细节。
Vue.js 为 v-on 提供了事件修饰符。修饰符是由点开头的指令后缀来表示的。
修饰符可以连用。
展开
评论
#每天一个知识点# 懒加载的主要原理是将非首屏或非立即可见区域的内容推迟加载,直到用户滚动到相应区域才进行加载。以下是一些常用的懒加载实现方式:
图片懒加载:将网页中的图片设置为占位符(通常是一个占位图),而不是直接加载完整的图片。当用户滚动到图片的可见区域时,再通过 JavaScript 将真实的图片 URL 设置到 src 属性上,实现延迟加载。
无限滚动懒加载:在滚动页面时,动态地加载后续的内容,比如加载更多的文章、评论或产品列表。当用户接近页面底部时,通过 AJAX 请求获取下一批数据,并将其插入到页面中,实现无需分页刷新的加载效果。
展开
评论
#每天一个知识点#
阻塞队列的由来
我们假设⼀种场景,⽣产者⼀直⽣产资源,消费者⼀直消费资源,资源存储在⼀个
缓冲池中,⽣产者将⽣产的资源存进缓冲池中,消费者从缓冲池中拿到资源进⾏消
费,这就是⼤名鼎鼎的⽣产者-消费者模式。
该模式能够简化开发过程,⼀⽅⾯消除了⽣产者类与消费者类之间的代码依赖性,
另⼀⽅⾯将⽣产数据的过程与使⽤数据的过程解耦简化负载。
我们⾃⼰coding实现这个模式的时候,因为需要让多个线程操作共享变量(即资
源),所以很容易引发线程安全问题,造成重复消费和死锁,尤其是⽣产者和消费
者存在多个的情况。另外,当缓冲池空了,我们需要阻塞消费者,唤醒⽣产者;当
缓冲池满了,我们需要阻塞⽣产者,唤醒消费者,这些个等待-唤醒逻辑都需要⾃
⼰实现。(这块不明⽩的同学,可以看最下⽅结语部分的链接)
这么容易出错的事情,JDK当然帮我们做啦,这就是阻塞队列(BlockingQueue),
你只管往⾥⾯存、取就⾏,⽽不⽤担⼼多线程环境下存、取共享变量的线程安全问
题。
展开
3
#每天一个知识点#
CAS的全称是:⽐较并交换(Compare And Swap)。在CAS中,有这样三个值:
V:要更新的变量(var)
E:预期值(expected)
N:新值(new)
⽐较并交换的过程如下:
判断V是否等于E,如果等于,将V的值设置为N;如果不等,说明已经有其它线程
更新了V,则当前线程放弃更新,什么都不做。
所以这⾥的预期值E本质上指的是“旧值”。
展开
1
#每天一个知识点#
乐观锁:
乐观锁⼜称为“⽆锁”,顾名思义,它是乐观派。乐观锁总是假设对共享资源的访问
没有冲突,线程可以不停地执⾏,⽆需加锁也⽆需等待。⽽⼀旦多个线程发⽣冲
突,乐观锁通常是使⽤⼀种称为CAS的技术来保证线程执⾏的安全性。
由于⽆锁操作中没有锁的存在,因此不可能出现死锁的情况,也就是说乐观锁天⽣
展开
2
#每天一个知识点#
锁的升级流程
每⼀个线程在准备获取共享资源时: 第⼀步,检查MarkWord⾥⾯是不是放的⾃⼰
的ThreadId ,如果是,表示当前线程是处于 “偏向锁” 。
第⼆步,如果MarkWord不是⾃⼰的ThreadId,锁升级,这时候,⽤CAS来执⾏切
换,新的线程根据MarkWord⾥⾯现有的ThreadId,通知之前线程暂停,之前线程
将Markword的内容置为空。
第三步,两个线程都把锁对象的HashCode复制到⾃⼰新建的⽤于存储锁的记录空
间,接着开始通过CAS操作, 把锁对象的MarKword的内容修改为⾃⼰新建的记录
空间的地址的⽅式竞争MarkWord。
第四步,第三步中成功执⾏CAS的获得资源,失败的则进⼊⾃旋 。
第五步,⾃旋的线程在⾃旋过程中,成功获得资源(即之前获的资源的线程执⾏完
成并释放了共享资源),则整个状态依然处于 轻量级锁的状态,如果⾃旋失败 。
第六步,进⼊重量级锁的状态,这个时候,⾃旋的线程进⾏阻塞,等待之前线程执
⾏完成并唤醒⾃⼰
展开
评论
#每天一个知识点#
偏向锁会偏向于第⼀个访问锁的线程,如果在接下来的运⾏过程中,该锁没有被其
他的线程访问,则持有偏向锁的线程将永远不需要触发同步。也就是说,偏向锁在
资源⽆竞争情况下消除了同步语句,连CAS操作都不做了,提⾼了程序的运⾏性
能。
展开
评论
#每天一个知识点# Redis(Remote Dictionary Server)是一种开源的内存数据库管理系统,它提供了高性能的键值存储和缓存解决方案。Redis以内存作为主要的数据存储介质,通过将数据存储在内存中,实现了快速的读写访问。它支持多种数据类型(如字符串、哈希、列表、集合、有序集合等),并提供了丰富的操作命令和功能。
展开
评论
#每天一个知识点# 在JavaScript中捕获和处理异常,以及如何使用try-catch语句来处理可能出现的错误。详细回答:在JavaScript中,可能会出现各种异常,如未定义的变量、空指针引用等。通过使用try-catch语句,我们可以捕获这些异常,并在出现错误时执行相应的逻辑,以避免程序崩溃或产生不可预期的结果
评论
下一页
个人成就
文章被阅读 216
掘力值 11
收藏集
0
关注标签
3
加入于