保洁阿姨看完都会了!java图形界面设计代码
二、解析
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图形界面设计代码相关推荐
- 保洁阿姨看完都会了!java面向对象编程开发证书
一.一面 1小时40几分钟,基本会的被问完了 1.介绍项目,考虑没考虑过服务器挂了怎么办 这里应该是考查系统架构 2.面向对象特性 3.怎么理解多态 4.接口和抽象类的区别 5.说说并发是怎么回事,有 ...
- 保洁阿姨看完都会了!java导出excel并下载详解
正文 作为后端开发,日常操作数据库最常用的是写操作和读操作.读操作我们下边会讲,这个分类里我们主要来看看写操作时为什么会导致 SQL 变慢. 刷脏页 脏页的定义是这样的:内存数据页和磁盘数据页不一致时 ...
- 保洁阿姨看完都会了!了解Android架构组件后,构建APP超简单!大厂面试题汇总
前言 本来已经在为去大厂工作摩拳擦掌的Android开发者们,今年显得格外艰难: 待就业数高达874万!人才竞争加剧! 疫情让大多数公司的招聘需求缩减!人才招聘要求愈来愈高! 别说offer,现在出门 ...
- 保洁阿姨看完都会了!了解Android架构组件后,构建APP超简单!赶紧收藏!
前言 咱们这行似乎每个人都有个常识:程序员做到35岁之后,职业道路就很窄了,但我不信这个邪,我今年37岁,依然活跃在开发一线,并且做到了月入四万+. 偶尔也有人问,你是怎么打破35岁定律的?对于这个问 ...
- 保洁阿姨看完都会了!熬夜肝完这份Framework笔记,吐血整理
为什么想跳槽? 简单说一下当时的状况,我在这家公司做了两年多,这两年多完成了一个大项目,作为开发的核心主力,开发压力很大,特别是项目上线前的几个月是非常辛苦,几乎每晚都要加班到12点以后,周末最多只有 ...
- 保洁阿姨看完都会了!知乎上已获千赞,技术总监都拍手叫好
前言 很多同学面对多线程的问题都很头大,因为自己做项目很难用到,但是但凡高薪的职位面试都会问到..毕竟现在大厂里用的都是多线程高并发,所以这块内容不吃透肯定是不行的. 今天这篇文章,作为多线程的基础篇 ...
- 保洁阿姨看完都会了!史上最全的Android面试题集锦在这里,终局之战
开头 大家好,我是G哥,目前人在荆州办事,但是干货还是要安排上! 国外有一个爆火的开发人员学习路线,目前已经在 Github收获了 131 k+ star,Star 数量在 Github 所有仓库中排 ...
- java图形界面设计代码_Java图形界面设计
一.总述 Java的图形用户界面由各种组件(component)构成,它们主要位于java.awt包与javax.swing包中.Swing与AWT最大的不同是,Swing在实现时,不包含任何本地代码 ...
- java 图形界面设计,使用JPanel、JFrame 绘图,图形界面设计入门演示,各种主要绘图方法以及图片、文字插入
那什么是JPanel?JFrame 又是什么呢?让我们先来了解一下他们的区别吧: JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel ...
最新文章
- 某程序员统计同事工作时间上厕所次数!有人一天去两次,有人一天去十次!楼主:懒人屎尿多!网友:最闲的是你!...
- jsoup开发网页客户端3
- Server 2012 RDS ‘there are no Remote Desktop License Servers available to provide a license.’
- 【UGV】小车一些图片 麦轮版小车
- 疲劳容器的定义_疲劳分析基础
- main函数的参数argc和argv
- Linux平台下 vimrc配置(转网友:http://blog.csdn.net/wooin/article/details/1887737)
- Ubuntu16.04LTS修改开机动画
- oracle数据库连接满了,ORACLE数据库连接数满的分析及优化
- css img 等比例平铺怎么个屏幕
- ubuntu 自动挂载工具_Ubuntu自动挂载分区
- pso-svm 算法实现(1):python DEAP
- android蓝牙软件,Android手机蓝牙助手(Bluetooth File Transfer)
- 基于JSP的美食论坛系统毕业设计
- android 主流分辨率是多少,Android程序开发设计主流屏幕分辨率介绍
- 一个程序员的科幻小说
- 网页嵌入flash动画视频的几种方法
- 毕业转行,在一家公司零基础开始学习seo,记录贴
- Hexo折腾之改用Valine评论系统 - 更新域名绑定,评论后台管理
- 深度学习 基础硬件CPU GPU知识笔记
热门文章
- win10 远程ubuntu
- pytorch 半精度,提升pytorch推理性能
- diou ciou torch
- 脊回归(Ridge Regression) 岭回归
- dso_loader.cc:55] Could not load dynamic library ‘cudart64_100.dll‘
- pytorch 随机打乱
- python3 实现 websocket server 解决中文乱码
- pytorch | 深度学习分割网络U-net的pytorch模型实现
- python 图像降噪
- zynq上NEON进行fft