java并发编程CAS机制原理分析

学习Java并发编程,CAS机制都是一个不得不掌握的知识点。这篇文章主要是从出现的原因再到原理进行一个解析。希望对你有所帮助。一、为什么需要CAS机制?为什么需要CAS机制呢?我们先从一个错误现象谈起。我们经常使用volatile关键字修饰某一个变量,表明这个变量是全局共享的一个变量,同时具有了可见性和有序性。但是却没有原子性。比如说一个常见的操作a++。这个操作其实可以细分成三个步骤:(1)从内
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

(不谈废话,只有干货)解决线程间协作问题的工具类Exchanger详解

在很久之前我曾写过一篇一篇文章介绍线程间如何进行通信的问题,当时使用的是等待通知模型,这篇文章介绍一个java提供的用于两个线程间通信的工具类Exchanger。一、概念理解Exchanger的作用就是为了两个线程之间交换数据,他提供了一个内部方法exchange,这个内部方法就好比是一个同步点,只有两个方法都到达同步点,才可以交换数据。我们换一张图来演示一波。也就是说只有线程A和线程B都到达同步
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

戴耳机敲代码,我都听些啥?

小伙伴们 大家好。今天跟大家分享一下我作为一个程序员,平时戴耳机写代码,都听些什么东东吧。我记得之前真有小伙伴问说:程序员上班可以戴耳机吗?是这样,反正我经历过的公司基本都是可以戴的,只要能完成任务,问题都不大。之前我们那有个SE就是,天天上班戴个索尼的那个骚绿色运动耳机搁脖子上,稳得一腿。但更令人好奇的是,程序员敲代码戴耳机,到底在听什么呢?就这个问题,我还真就问过不少带耳机敲代码的同事。大部分
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

学C语言和学C++它有毛关系吗?

这是最近一周时间几个读者小伙伴所提的问题,我顺手截了两个图。实不相瞒,这类问题之前也经常看到,但是我忘了截图了。每次遇到这种问题,看起来很简单,但是打字一时半会还真说不清,想想今天周末了,写一篇文章来统一聊聊吧,如果小伙伴们有不同看法,也欢迎批评指正,评论区见。注:本文在开源项目:https://github.com/hansonwang99/JavaCollection 中已收录,里面包含不同方
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

react-redux源码解读

写在前面react-redux作为胶水一样的东西,似乎没有深入了解的必要,但实际上,作为数据层(redux)与UI层(react)的连接处,其实现细节对整体性能有着决定性的影响。组件树胡乱update的成本,要比多跑几遍reducer树的成本高得多,所以有必要了解其实现细节仔细了解react-redux的好处之一是可以对性能有基本的认识,考虑一个问题:dispatch({type:'UPD
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

实不相瞒,我就是鹤岗的女婿~

01、想想也是奇妙,从小到大,不论是小/初/高阶段生活的老家,还是后来的大学求学,甚至是毕业后参加工作定居他乡,我所生活的城市里都有长江为伴,无一例外都是沿江城市,从未离开过长江流域。那为什么我又说自己是半个鹤岗人呢?毕竟那是一个比东北还要东北的边境城市。之前看过我结婚 Vlog的小伙伴们有几个还真就认出来了,其实我的婚礼在鹤岗举办过,所以我说我是半个鹤岗人想必大家也就明白了,我这东北的女婿可不是
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

超链接的lvha原则

一.lvha实际上应该是lvfha,即:a:link{/*未访问过的超链接的样式*/}a:visited{/*访问过的超链接的样式*/}a:focus{/*拥有焦点的超链接的样式*/}a:hover{/*鼠标悬停的超链接的样式*/}a:active{/*被用户输入激活的超链接的样式*/}这5个都是伪类,表示5种状态,其中link与visited是超链接专用的,可以分类到链接伪类,而focus,ho
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

外边距合并规则

写在前面margin的合并规则算是CSS盒模型里最复杂部分,没有之一。因为这部分内容涉及很多不太容易理解的概念,例如clearance(间隙)、normalflow/in-flow(常规流)、BFC(块格式化上下文)、linebox(行框)、inlinebox(行内框)、bidi(双向环境)等等CSS盒模型不只是7项水平属性+7项垂直属性:marginborderpaddingwidth/heig
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

嵌入式:我不是针对谁,我是说在座的Javaer都是弟弟,尤其程序羊

不好意思久等了这篇文章让小伙伴们久等了。一年多以来,关于嵌入式开发学习路线、规划、看什么书等问题,被问得没有一百,也有大几十次了。但是无奈自己对这方面了解有限,所以每次都没法交代,搞得实在不好意思。但是办法总归是有的,正如前篇文章《最近厚着脸皮联系了不少老同学》所聊,虽然我自己不从事这些方向,但寻思了一下,我的同学和朋友中,多少还是有一些从事相关方向并且在一线(或曾在一线)工作过的,所以我就请他们
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

GitHub还真把所有代码埋到北极地下了,我特么bug都还没改呢 ...

早在去年的GitHub Universe 2019开发者大会上,GitHub就宣布启动了一个所谓的「GitHub代码永久保存计划」(GitHub Archive Program)。与此同时,这个计划也对应设立了一个「GitHub代码保险库」(GitHub Code Vault),该库旨在为后代保存开源代码,以供未来使用。这个「代码保险库」被设立在位于北极圈深处的斯瓦尔巴特群岛(Svalbard)上
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

最近厚着脸皮联系了不少同学

小伙伴们大家好,这怎么又是周末了。时间过得真的是贼快了,本肥羊也快被岁月的杀猪刀宰割得不成羊样了...今天不更新技术文,今天聊一下后面一段时间几个比较重要的内容上的想法和安排吧,小伙伴们也可以帮忙把把关。毕竟有些问题总有小伙伴们频繁的提起,我也坐不住,我也不太好意思了。一直以来,总源源不断有小伙伴们咨询一些关于各个典型方向的学习路线和规划安排的相关问题。诚然,一年多来,不管是通过文章还是视频,和非
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

微信公众号自动回复图文消息

写在前面订阅号收到过一些查询消息,比如vue、react,无奈一直没有心情去搞关键字搜索,就丢一边去了修复博客首页样式问题时恰巧看到了之前的博文:微信公众平台图文消息自动生成,里面有提到WordPress插件,就顺势给订阅号添上了自动回复功能喏~长这样子:P.S.样式问题是说在firefox下,容器的white-space:no-wrap会导致float-right子元素换行,猜测是firefox
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

羊老姆上线:抄起键盘就编译JDK源码,结果上头了

好奇害死羊很多小伙伴们做Java开发,天天写Java代码,肯定离不开Java基础环境:JDK,毕竟我们写好的Java代码也是跑在JVM虚拟机上。一般来说,我们学Java之前,第一步就是安装JDK环境。这个简单啊,我们一般直接把JDK从官网下载下来,安装完成,配个环境变量就可以愉快地使用了。不过话说回来,对于这个天天使用的东西,我们难道不好奇这玩意儿它到底是怎么由源码编译出来的吗?带着这个原始的疑问
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

WebAssembly试玩

一.What?WebAssemblyorwasmisanewportable,size-andload-time-efficientformatsuitableforcompilationtotheweb.一种可移植,体积小且加载迅速的(二进制)格式,适用于编译到Web主要目标是在Web环境支持高性能应用。但设计上不依赖Web特性,也不针对Web特性提供功能,也可以用在其它环境简单理解,就是定义了
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

自学党/野生猿,项目经验上哪搞?

几个头痛的问题最近不是求职季嘛,经常听小伙伴们提及的几个重要的话题是什么呢?第1种情况:在念书期间没进过实验室,没有参加过比赛,也没有实习经历,那找工作时,简历上、面试时,项目经验这一块怎么弄呢?第2种情况:读研的小伙伴,期间以看论文,做研究类工作为主,或者说搞的是A研究,做的是A相关的项目,毕业有意愿从事计算机相关的岗位,简历上没项目怎么办?第3种情况:已经参加工作了的小伙伴,说之前一直做的A工
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

化学专业大二转码的抉择之路!

声明:本文不掺入对专业的评价,一切都是从自己的认知改变出发,一切都是结合本人自身情况所发表的看法,若有不当,恳请指正。求同存异,望君周知。序言总能听到生化环材四大天坑的言论,总有前辈回来劝你不要入坑赶紧跑路。大一懵懵懂懂,守着高中固化的思维,老实地听取老师的教导:“刷高绩点,多报竞赛,立志考研”;大二上依旧抱着杀进化学的念想,想成为“专业综测第一,奖学金收割机,公众号风云人物,SCI文章大佬,科研
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

Progressive Web Apps

一.What?Anewwaytodeliveramazinguserexperiencesontheweb.一种提升Web用户体验的方式。除了Web天生的(便捷)体验外,还有3个特点:Reliable,Fast,Engaging可靠:在不确定的网络环境下,也能立即加载,而不会(因为断网而)瞬间回到远古时代可靠指的是离线缓存,断网状态走缓存,保证离线场景仍然可用,serviceworker配合cac
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

React 16

一.特性fragment模版支持fragment和string类型,对应ReactElement数组和字符串v16.2.0还提供了JSX的fragment支持:<></>errorboundary组件级错误处理,支持捕获子组件树内部异常,UI层的兜底方案portal允许组件树与DOM树结构不一致,用于hovercards,tooltips等场景例如tooltip在DOM结构
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

lerna入门指南

一.定位Lernaisatoolthatoptimizestheworkflowaroundmanagingmulti-packagerepositorieswithgitandnpm.多模块管理工具,用来帮助维护monorepoP.S.Lerna是Babel自己日用并开源的工具,见WhyisBabelamonorepo?二.monorepomonorepo(monolithicrepositor
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0

rollup是面向library的?!

写在前面Rollupwasdesignedwithlibrariesratherthanappsinmind,anditisaperfectfitforReact’susecase.在BehindtheScenes:ImprovingtheRepositoryInfrastructure–ReactBlog看到了这个,有些惊讶,这样好的东西,为什么只是面向类库呢?什么原因致使它不适合用来构建App
分类: 编程语言 发布时间: 01-15 22:45 阅读次数: 0