并发相关基础知识 - MESI - JMM】的更多相关文章

一.CPU多级缓存 CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源,所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题.CPU多级缓存配置(演变):局部性原理:(1) 时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问.(2) 空间局部性:如果某个数据被访问,那么与他相邻的数据很快也可能被访问. 1.缓存一致性(MESI Modify|Exclusive|Share|Invalid) Modify:被修改,该缓存行只被缓…
前言 今天学习了Java内存模型第一课的视频,讲了硬件层面的知识,还是和大学时一样,醍醐灌顶.老师讲得太好了. Java内存模型,感觉以前学得比较抽象.很繁杂,抽象. 这次试着系统一点跟着2个老师学习一下. 学习Java内存模型目的: 1.高并发情况下,java内存模型是怎么提供支持的? 2.一个对象创建后,在内存中的布局? 为什么在聊JVM内存模型.happens-before.八大原子指令之前需要学习硬件层面的并发优化基础知识? 任何语言都是靠CPU执行它的指令来运行的.所以java虚拟机只…
    深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富   一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1中相关数).1)数据存取子系统,2)事务子系统,3)锁子系统,4)内存池管理子系统,5)日志子系统. 在一个应用程序中,并不一定须要全然具备这5大子系统. 假设程序仅仅使用了数据存取子系统,它的体系结构如图1.2.在图1.2中,我们仅仅使了两个子系统:数据存取以及内存池子系统.(备注:另外三个子系统…
[RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁.负载管理等框架.从而使得RAC可以脱离第三方集群件,当然,CRS与第三方集群件可以共同使用. (1).CRS进程 CRS主要由三部分组成,三部分都作为守护进程出现 <1>CRSD:资源可用性维护的主要引擎.它用来执行高可用性恢复及管理操作,诸如维护OCR及管理应用资源,它保存着集群的信息状态和OC…
一.tcp比udp真正可靠地原因 1.为什么tcp比udp传输可靠地原因: 我们知道在传输数据的时候,数据是先存在操作系统的缓存中,然后发送给客户端,在客户端也是要经过客户端的操作系统的,因为这个过程涉及到计算机硬件,也就是物理层的一些东西,那么==tcp协议在确认客户端接收到完整的信息之后才会删除服务端操作系统中的缓存==,否则就会继续发,这才是TCP协议的可靠性根本原因,而UDP只管发送数据而不管客户端有没有收到,所以就会造成丢包现象. TCP UDP 的socket 1.==基于tcp的套…
原文链接: http://liuyanwei.jumppo.com/2015/07/17/ios-BLE-1.html iOS蓝牙开发(一)蓝牙相关基础知识: 蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE peripheral,central == 外设和中心,发起连接的时central,被连接的设备为peri…
在Java并发(基础知识)—— 创建.运行以及停止一个线程中讲解了两种创建线程的方式:直接继承Thread类以及实现Runnable接口并赋给Thread,这两种创建线程的方式在线程比较少的时候是没有问题的,但是当需要创建大量线程时就会出现问题,因为这种使用方法把线程创建语句随意地散落在代码中,无法统一管理线程,我们将无法管理创建线程的数量,而过量的线程创建将直接使系统崩溃. 从高内聚角度讲,我们应该创建一个统一的创建以及运行接口,为我们管理这些线程,这个统一的创建与运行接口就是JDK 5的Ex…
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父…
java多线程的知识是java程序员都应该掌握的技能,目前我接触的项目上用的不多,花点时间熟悉熟悉. 一.基础知识 1.什么是进程? 进程是具有一定独立功能的正在运行过程中的程序,是操作系统进行资源分配的最小单位,有程序.数据.进程控制块组成.进程内部有多个线程,这多个线程会共享资源. 2.什么是线程? 线程有时称为轻量级进程,是CPU调度的最小单位,依赖于进程存在.线程自己不拥有系统资源,与同属于同一进程下的线程共享系统资源. 3.什么是并行? 并行(parallel):同一时刻,有多条指令在…
转载自:http://www.cocoachina.com/ios/20150915/13454.html 原文作者:刘彦玮 蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE peripheral,central == 外设和中心,发起连接的时central,被连接的设备为perilheral service an…
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE peripheral,central == 外设和中心,发起连接的时central,被连接的设备为perilheral service and characteristic === 服务和特征 每个设备会提供服务和特征,类似于服务端的api,但是机构不同.每个外设会…
原文  http://www.cocoachina.com/ios/20150915/13454.html 作者:刘彦玮 蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE peripheral,central == 外设和中心,发起连接的时central,被连接的设备为perilheral service and…
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0设备因为低耗电,所以也叫做BLE peripheral,central == 外设和中心,发起连接的时central,被连接的设备为perilheral service and characteristic === 服务和特征 每个设备会提供服务和特征,类似于服务端的api,但是机构不同.每个外设会…
SDD 基础知识 SSD(Solid State Drives)是固态硬盘,使用闪存颗粒来存储数据,闪存又可分为NAND Flash和NOR Flash,通常所说的SSD硬盘都使用NAND Flash芯片来存放数据.NOR型存储内容以编码为主,其功能多与运算相关:NAND型主要功能是存储资料. Nor Flash:主要用来执行片上程序 优点:具有很好的读写性能和随机访问性能,因此它先得到广泛的应用: 缺点:单片容量较小且写入速度较慢,决定了其应用范围较窄. NAND Flash:主要用在大容量存…
RDBMS基础知识 1.数据库是按照数据结构来组织.存储和管理数据的仓库:数据库是一些关联表的集合. 2.数据表是数据的矩阵,在一个数据库中的表看起来像一个简单的电子表格. 3.列:一列包含了相同的数据. 4.行:一行是一组相关的数据. 5.冗余:存储两倍数据,冗余降低了性能,但是提高了数据的安全性. 6.主键:主键是唯一的.一个数据表中只能包含一个主键. 7.外键:外键是用于关联两个表. 8.复合键:复合键将多个列作为索引健,一般用于符合索引. 9.索引:使用索引可快速访问数据库表中的特定信息…
前面我们讲了一下XML相关的基础知识(一),下面我们在加深一下,看一下XML高级方面. 一.命名空间 1.命名冲突 XML命名空间提供避免元素冲突的方法. 命名冲突:在XML中,元素名称是由开发者定义的,当两个不同的文档使用相同的原俗名时,就会发生命名冲突.例如:下面这个XML文档携带者某个表格中的信息: <table> <tr> <td>Apples</td> <td>Bananas</td> </tr> </ta…
什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没有被预定义.您需要自行定义标签. XML 被设计为具有自我描述性. XML 是 W3C 的推荐标准 XML DOM 加载并解析 XML 文件 JS代码: var xmlhttp,xmlDoc; if(window.XMLHttpRequest){ xmlhttp = new XMLHttpReque…
因为个人对这块的知识也不熟悉,所以大多内容来源于网络. 1.      Hadoop项目框架 2.      Hadoop Hadoop是一个由Apache基金会所开发的分布式系统基础架构. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力进行高速运算和存储. Hadoop实现了一个分布式文件系统(Hadoop DistributedFile System),简称HDFS.HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上:而且它提供高吞吐量(…
NIO有一个零拷贝的特性.Java的内存有分为堆和栈,以及还有字符串常量池等等.如果有一些数据需要从IO里面读取并且放到堆里面,中间其实会经过一些缓冲区.我们要去读,它会分成两个步骤,第一块它会把我们的数据从IO流里面读出来放到我们的缓冲区,然后从缓冲区里面再去读出来放到堆里面.其实它会经历两次,数据会拷贝两次才能到达堆或者堆内存里面.如果数据量很大,那么就会造成资源的浪费.Netty使用了NIO中的零拷贝特性,当它需要去接收数据或者传输数据的时候,那么它会去开辟一个新的堆内存,然后数据直接是从…
前言 其实之前大家都了解过volatile,它的第一个作用是保证内存可见,第二个作用是禁止指令重排序.今天系统学习下为什么CPU会指令重排. 存储器的层次结构图 1.CPU乱序执行指令的根源 CPU读取数据的时候会先从离自己最近且速度最快的L1_cache高速缓存取数据,取不到就找L2_cache,还取不到,就读内存. CPU如果一个cpu在执行的时候需要访问的内存都不在cache中,cpu必须要通过内存总线到主存中取,那么在数据返回到cpu这段时间内(这段时间cpu大致能够执行成百上千条指令的…
装载自55242字符串AC自动机专栏 fail树 定义 把所有fail指针逆向,这样就得到了一棵树 (因为每个节点的出度都为1,所以逆向后每个节点入度为1,所以得到的是一棵树) 还账- 有了这个东西,我们可以做很多事- 对于AC自动机的构造前面的文章已经讲了,而在查询的时候,有一点感觉没有说清楚: 对于x串在y串中出现,必然是在y串某个前缀的后缀与x串相同 fail指针指向与该节点表示串后缀相等的且长度最大的串(或前缀)的节点 然后,根据fail指针的原理,在查询的时候,沿着当前节点的fail指…
XML和Json是两种最常用的在网络中数据传输的数据序列化格式,随着时代的变迁,XML序列化用于网络传输也逐渐被Json取代,前几天,单位系统集成开发对接接口时,发现大部分都用的WebService技术,而数据传输序列化都是XML,所以想在此重温一下关于XML的相关知识. 一.什么是XML 1.XML是可扩展标记语言 2.XML宗旨是传输数据,而非显示数据 3.XML没有预定义标签,都需要自行定义标签 4.XML不会做任何事情,他设计出来就是为了结构化.储存和传输信息用的 5.XML是纯文本,有…
Java内存模型 (图源: 深入理解JVM-内存模型(jmm)和GC) 区域名 英文名 访问权限 作用 备注 程序计数器 Program Counter Register 线程隔离 标记待取的下一条执行的指令 执行Native方法时为空; JVM规范中唯一不会发生OutOfMemoryError的区域 虚拟机栈 VM Stack 线程隔离 每个Java方法执行时创建,用于存储局部变量表,操作栈,动态链接,方法出口等信息 方法执行的内存模型 本地方法栈 Native Method Stack 线程…
线程的应用 如何应用多线程 在 Java 中,有多种方式来实现多线程.继承 Thread 类.实现 Runnable 接口.使用 ExecutorService.Callable.Future 实现带返回结果的多线程. 继承 Thread 类创建线程 Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例.启动线程的唯一方法就是通过 Thread 类的 start()实例方法.start()方法是一个 native 方法,它会启动一个新线程,并执行 run()方法.…
    1.面向对象的特征有哪些方面 ①抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象. ②继承:    继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派生类…
OOP 对象有三个要素 behavior 接口是怎样的,有什么方法/field可以用? state 调用方法的时候,对象会有什么反应? 只有通过调用方法才能改变一个对象的state identity 对象之间如何区分? 类的三大关系 dependence uses-a 在方法里用到的类(方法的local variable) 应当尽可能地少 Aggregation has-a 自己本身有的类(自己的field) Inheritance is-a general v.s. specialized J…
1.线程安全 共享:变量可以由多个线程同时访问.可变:变量值在生命周期内可以变化. 当多个线程访问某个类时,这个类始终都能表现出正确的行为,称这个类是线程安全的. 无状态对象是线程安全的. 2.原子性 竞态条件:由于不恰当的执行时序而出现不正确的结果,是一种非常重要的情况. a.先检查后执行是一种常见的延迟初始化操作.目的是:将对象的初始化操作推迟到实际被使用时才执行.同时要确保只被初始化一次. 3.复合操作 避免竞态条件问题,必须在某线程修改该变量时,通过某种方式防止其让线程使用这个变量.从而…
2017-12-13 09:47:11 关于HTML 1.绝对路径和相对路径 相对路径:相对于文件自身为参考. (工作中一般是使用相对路径) 这里我们用html文件为参考.如果说html和图片平级,那直接使用src 如果说图片在和html平级的文件夹里面,那么使用文件夹/图片 如果说图片在html的上一级文件中,使用../图片,或者在上级文件夹的子文件夹里面,使用../ppt/图片 (但是要保证在同一个项目中) 绝对路径:从盘符开始,C:\windows\system32\cmd.exe 2.相…
在计算机世界,当人们谈到并发时,它的意思是一系列的任务在计算机中同时执行.如果计算机有多个处理器或者多核处理器,那么这个同时性是真实发生的:如果计算机只有一个核心处理器那么就只是表面现象. 现代所有的操作系统都允许并发地执行任务.你可以在听音乐和浏览网页新闻的同时阅读邮件,我们说这种并发是进程级别的并发.而且在同一进程内,也会同时有多种任务,这些在同一进程内运行的并发任务称之为线程. 在这里我们要讨论的是线程级并发.Java提供了Thread类,使我们能够在一个Java进程中运行多个线程,每个线…
显示锁                                                                                     Lock接口是Java 5.0新增的接口,该接口的定义如下: public interface Lock { void lock(); void lockInterruptibly() throws InterruptedException; boolean tryLock(); boolean tryLock(long…