JAVA并发编程(一)(基于计算机底层.jvm内存模型.mysql(数据搬运))
2017-09-21 23:00
302 查看
ps:前因,一直在写后台系统是没有分析和需求来做并发的思考的。但是最近接触了jvm和并发的一些知识,使我对计算机底层已经他们之间的交互有了一些了解,使我对蒙了两年多的那层美丽面庞揭开了一点可以探索的起点。
大多数在大学学过计算机原理的同学们都知道,计算机的cpu.寄存器.内存.和磁盘。CPU处理的数据,最终要落地到磁盘,因为现在是通电式运行计算机,那么计算机没有电,内存中的数据,各级缓存中的数据都会消失。所以需要落地到磁盘。
由此可以引出,各处数据暂存之地,是有IO交互的。
昨晚,我顺着这条线索思考,我们使用的数据库.文件系统。需要我们关注的多线程共享数据的地方,这和刚才我所理解的“告诉缓存区”,是一个道理的。
java的编程中给我们提供volatile关键字,使得数据的更新和获取都是最新的,也提供给我们synchronized 关键字,使得对使用资源的锁定,在被占用锁定的同时,其它的线程无法使用。同样的思考,我们在对数据库中的数据使用,我们可以使用乐观锁,悲观锁。Inoodb引擎给我们提供了事务处理,解决并发给我们带来便利的问题。
所以我们站在这个角度去想问题,会对我们在编程中以及操作数据库可能会出现的问题,有更好的解决问题的出发点。
ps:java给我们提供了很多并发编程的工具,使得并发编程并不是很遥远,数据库的存储引擎,也都可以找到很多的资料去学习。所以希望大家跟我一样认真的学习,主动的思考。让自己不浪费光辉的岁月。
昨天晚上画了一张图,还没有整理,有点乱,周末整理一下,发出来。
cpu.内存.磁盘
目前的计算机以摩尔定律(以超性价比的时间增长单机的性能),所以现在的我们尽量的压榨计算机的性能,尽量的不让计算空闲下来。就要使用计算机的多核处理能力。大多数在大学学过计算机原理的同学们都知道,计算机的cpu.寄存器.内存.和磁盘。CPU处理的数据,最终要落地到磁盘,因为现在是通电式运行计算机,那么计算机没有电,内存中的数据,各级缓存中的数据都会消失。所以需要落地到磁盘。
由此可以引出,各处数据暂存之地,是有IO交互的。
问题
在带来便捷的同时,也引发了很多问题。比如一个线程读取内存中的数据放到缓存中,在该线程的缓存行中记录该缓存的信息,下次需要读取相同位置的数据,就会从缓存中读取数据,也就是缓存命中。但是这条数据,不能确定是最新的,同样该线程修改的数据,也会导致写命中,使得各线程直接无法实施的共享数据。总结
以前我了解学习jvm,只是单纯的知道,jvm的内存分区,书中的图片说这些是数据共享的区域,这里的数据会引起并发的时候出现的问题。对计算机的具体做法不了解,使我一直以来,对这些说法,都停留在表面的认识,这也是一直挡在我面前的那层“纱”了。昨晚,我顺着这条线索思考,我们使用的数据库.文件系统。需要我们关注的多线程共享数据的地方,这和刚才我所理解的“告诉缓存区”,是一个道理的。
java的编程中给我们提供volatile关键字,使得数据的更新和获取都是最新的,也提供给我们synchronized 关键字,使得对使用资源的锁定,在被占用锁定的同时,其它的线程无法使用。同样的思考,我们在对数据库中的数据使用,我们可以使用乐观锁,悲观锁。Inoodb引擎给我们提供了事务处理,解决并发给我们带来便利的问题。
所以我们站在这个角度去想问题,会对我们在编程中以及操作数据库可能会出现的问题,有更好的解决问题的出发点。
ps:java给我们提供了很多并发编程的工具,使得并发编程并不是很遥远,数据库的存储引擎,也都可以找到很多的资料去学习。所以希望大家跟我一样认真的学习,主动的思考。让自己不浪费光辉的岁月。
昨天晚上画了一张图,还没有整理,有点乱,周末整理一下,发出来。
相关文章推荐
- 基于内存,redis,mysql的高速游戏数据服务器设计架构
- jdbc底层驱动加载数据机制之防止内存溢出(2)--Mysql
- jvm内存模型(运行时数据区)
- 第107课: Spark Streaming电商广告点击综合案例底层数据层的建模和编码实现(基于MySQL)
- JVM的内存模型,(GC)垃圾处理,调优监控(基于HotSpot VM,JDK1.5+)【JAVA内存模型】
- 基于内存,redis,mysql的高速游戏数据服务器设计架构
- 二,JVM的内存模型,(GC)垃圾处理,调优监控(基于HotSpot VM,JDK1.5+)【JAVA内存模型】
- JVM运行时数据区域与内存模型
- JVM运行时数据区与JVM堆内存模型小结
- 第107课: Spark Streaming电商广告点击综合案例底层数据层的建模和编码实现(基于MySQL)
- JVM的内存模型
- 我个人对JVM内存模型的理解
- JVM内存模型
- jvm内存模型和内存分配
- PHP查询MySQL大量数据的内存占用分析
- mysql 如何在一个字段内存取多个数据
- jvm内存模型
- 【jvm学习】jvm运行时内存分配模型分析
- 4 mysql数据类型和SQL模型
- JVM 学习笔记20180206之一 内存模型