二、解析

1. 硬件层的并发优化基础知识

存储器的层次结构图如下:

各级缓存耗时对比:

采用分层缓存的层次结构会带来数据不一致问题,如下图:

那么如何保证数据的一致性,现代CPU处理办法有两种:

(1) 锁系统总线;

(2) 利用缓存一致性协议MESI(Intel处理器用的比较多,还有很多其他的缓存一致性协议),大致结构如下图:

2. CPU的乱序执行

CPU中有个乱序执行的概念,概念图如下:

CPU在执行指令的时候,往往不是顺序执行,但是会遵守as-if-serial原则,也就是最终一致性原则。CPU为了提高指令执行效率,会在一条指令执行过程中(比如去内存读数据),去同时执行另一条指令,前提是这两条指令没有依赖关系。虽然指令执行顺序发生改变,但是不会影响单线程执行结果。多线程情况下为了不让CUP进行指令重排序,则需要用到Volatile关键字,因为Volatile的重要作用之一就是防止指令重排序。

CPU还会存在合并写的现象。当第一条指令往上级缓存写入数据时,由于上级缓存访问速度比较慢,可能第二条指令又对上一条指令的结果进行了修改,那么CPU将这两条指令合并的最终结果一次性的写入到缓存中,这就成为合并写。

3. 如何保证不乱序执行

(1) 内存屏障:java采用的是内存屏障,内存屏障其实就是一个CPU指令,在硬件层面上来说可以扥为两种:Load Barrier 和 Store Barrier即读屏障和写屏障。主要有两个作用:

a. 阻止屏障两侧的指令重排序;

b. 强制把写缓冲区/高速缓存中的脏数据等写回主内存,让缓存中相应的数据失效。

总结

总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。

如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。

这些视频如果需要的话,可以无偿分享给大家,点击这里即可免费领取

点击这里即可免费领取*

保洁阿姨看完都会了!java图形界面设计代码相关推荐

  1. 保洁阿姨看完都会了!java面向对象编程开发证书

    一.一面 1小时40几分钟,基本会的被问完了 1.介绍项目,考虑没考虑过服务器挂了怎么办 这里应该是考查系统架构 2.面向对象特性 3.怎么理解多态 4.接口和抽象类的区别 5.说说并发是怎么回事,有 ...

  2. 保洁阿姨看完都会了!java导出excel并下载详解

    正文 作为后端开发,日常操作数据库最常用的是写操作和读操作.读操作我们下边会讲,这个分类里我们主要来看看写操作时为什么会导致 SQL 变慢. 刷脏页 脏页的定义是这样的:内存数据页和磁盘数据页不一致时 ...

  3. 保洁阿姨看完都会了!了解Android架构组件后,构建APP超简单!大厂面试题汇总

    前言 本来已经在为去大厂工作摩拳擦掌的Android开发者们,今年显得格外艰难: 待就业数高达874万!人才竞争加剧! 疫情让大多数公司的招聘需求缩减!人才招聘要求愈来愈高! 别说offer,现在出门 ...

  4. 保洁阿姨看完都会了!了解Android架构组件后,构建APP超简单!赶紧收藏!

    前言 咱们这行似乎每个人都有个常识:程序员做到35岁之后,职业道路就很窄了,但我不信这个邪,我今年37岁,依然活跃在开发一线,并且做到了月入四万+. 偶尔也有人问,你是怎么打破35岁定律的?对于这个问 ...

  5. 保洁阿姨看完都会了!熬夜肝完这份Framework笔记,吐血整理

    为什么想跳槽? 简单说一下当时的状况,我在这家公司做了两年多,这两年多完成了一个大项目,作为开发的核心主力,开发压力很大,特别是项目上线前的几个月是非常辛苦,几乎每晚都要加班到12点以后,周末最多只有 ...

  6. 保洁阿姨看完都会了!知乎上已获千赞,技术总监都拍手叫好

    前言 很多同学面对多线程的问题都很头大,因为自己做项目很难用到,但是但凡高薪的职位面试都会问到..毕竟现在大厂里用的都是多线程高并发,所以这块内容不吃透肯定是不行的. 今天这篇文章,作为多线程的基础篇 ...

  7. 保洁阿姨看完都会了!史上最全的Android面试题集锦在这里,终局之战

    开头 大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排 ...

  8. java图形界面设计代码_Java图形界面设计

    一.总述 Java的图形用户界面由各种组件(component)构成,它们主要位于java.awt包与javax.swing包中.Swing与AWT最大的不同是,Swing在实现时,不包含任何本地代码 ...

  9. java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入

    那什么是JPanel?JFrame 又是什么呢?让我们先来了解一下他们的区别吧: JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel ...

最新文章

  1. 某程序员统计同事工作时间上厕所次数!有人一天去两次,有人一天去十次!楼主:懒人屎尿多!网友:最闲的是你!...
  2. jsoup开发网页客户端3
  3. Server 2012 RDS ‘there are no Remote Desktop License Servers available to provide a license.’
  4. 【UGV】小车一些图片 麦轮版小车
  5. 疲劳容器的定义_疲劳分析基础
  6. main函数的参数argc和argv
  7. Linux平台下 vimrc配置(转网友:http://blog.csdn.net/wooin/article/details/1887737)
  8. Ubuntu16.04LTS修改开机动画
  9. oracle数据库连接满了,ORACLE数据库连接数满的分析及优化
  10. css img 等比例平铺怎么个屏幕
  11. ubuntu 自动挂载工具_Ubuntu自动挂载分区
  12. pso-svm 算法实现(1):python DEAP
  13. android蓝牙软件,Android手机蓝牙助手(Bluetooth File Transfer)
  14. 基于JSP的美食论坛系统毕业设计
  15. android 主流分辨率是多少,Android程序开发设计主流屏幕分辨率介绍
  16. 一个程序员的科幻小说
  17. 网页嵌入flash动画视频的几种方法
  18. 毕业转行,在一家公司零基础开始学习seo,记录贴
  19. Hexo折腾之改用Valine评论系统 - 更新域名绑定,评论后台管理
  20. 深度学习 基础硬件CPU GPU知识笔记

热门文章

  1. win10 远程ubuntu
  2. pytorch 半精度,提升pytorch推理性能
  3. diou ciou torch
  4. 脊回归(Ridge Regression) 岭回归
  5. dso_loader.cc:55] Could not load dynamic library ‘cudart64_100.dll‘
  6. pytorch 随机打乱
  7. python3 实现 websocket server 解决中文乱码
  8. pytorch | 深度学习分割网络U-net的pytorch模型实现
  9. python 图像降噪
  10. zynq上NEON进行fft