精华内容
下载资源
问答
  • 关系模型中的一些关键字的定义

    千次阅读 2017-06-08 21:43:03
    关系(Relation):一个关系对应通常说的一张表。元组(Tuple):表的一行即为一个元组。属性(Attribute):表的一列即为一个...关系模型:对关系的描述,一般表示为 关系名(属性1,属性2,…,属性n)若关系的某一属性

    关系(Relation):一个关系对应通常说的一张表。

    元组(Tuple):表中的一行即为一个元组。

    属性(Attribute):表中的一列即为一个属性,给每一个属性起一个名称即属性名。

    码(Key):也称为码键。表中的某个属性组,它可以唯一确定一个元组。

    域(Domain):属性的取值范围。

    分量:元组中的一个属性值。

    关系模型:对关系的描述,一般表示为 关系名(属性1,属性2,…,属性n)

    若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidate key)

    若一个关系有多个候选码,则选定其中一个为主码(Primary key)

    候选码的诸属性称为主属性(Prime attribute)。不包含在任何候选码中的属性称为非主属性(Nonprimary attribute)或非码属性(Non-key attribute)。

    在最简单的情况下,候选码只包含一个属性。在最极端的情况下,关系模式的所有属性是这个关系模式的候选码,称为全码(All-key)。

    展开全文
  • volatile关键字作用有哪些? volatile关键字有哪些运用场景? Java内存模型与volatile之间究竟有何关联? 2 Java内存模型 VS JVM运行时数据区 2.1 Java内存模型 Java虚拟机支持多线程任务的执行。在多线程运行场景...

    1 博文主旨

    行文主要围绕以下3个问题展开阐述:

    1. volatile关键字作用有哪些?
    2. volatile关键字有哪些运用场景?
    3. Java内存模型与volatile之间究竟有何关联?

    2 Java内存模型 VS JVM运行时数据区

    2.1 Java内存模型

    Java虚拟机支持多线程任务的执行。在多线程运行场景下,若线程间未能保证同步的正确性,线程的行为可能会出现混淆和违反直觉。

    在这种情况下,我们也许迫切需要一些保障措施:比如,当多个线程修改了共享内存中变量的值时,后续线程应该以哪一次修改的值作为基准进行读取?类似的语义(或者称规则)在Java语言中主要用于描述多线程程序的合法行为,又由于此类型的规范区别于硬件体系结构的内存模型,因此这些语义被称为Java编程语言内存模型,简称Java内存模型。此为Java内存模型的由来!

    鉴于还是有许多人跟博主一样,一开始愣是将Java内存模型和JVM运行时数据区混为一谈,所以有必要对JVM运行时数据区作个简要说明。


    2.2 JVM运行时数据区

    JVM运行时数据区,按照线程是否共享,可划分为以下2个部分:

    2.2.1 线程共享

    所有线程都能访问这块内存区域的数据。包括:堆内存 和 方法区
    其中,
    堆内存:存储new出来的对象实例。
    方法区:存储加载的类信息,常量、静态变量、编译后的代码等。

    2.2.2 线程独享

    每个线程都有其独立的专属内存空间。包括:虚拟机栈、本地方法栈和程序计数器。
    其中,
    虚拟机栈:每个线程在这块区域都有一块私有的内存空间。是为JVM执行Java方法(非native方法)而准备的。
    本地方法栈:和虚拟机栈类似,不过它是为JVM执行native本地方法而准备的。
    程序计数器:记录当前线程执行字节码的位置。其内存储的是字节码指令地址,如果执行的是native方法,则计数器值为空。每个线程在 程序计算器 中都拥有一块专属空间。CPU在同一时间,只会执行线程中的一条指令。


    3 volatile关键字闪亮登场

    3.1 volatile关键字解决了啥问题?
    • 可见性问题:在多线程语义下,一个线程对共享变量的修改,其他线程能够及时感知到且保证读取到最新的修改值。
    3.1.1可见性问题是怎样得到保障的呢?
    Java内存模型规定:对volatile变量v的写入,与所有其他线程后续对v的读操作同步。(这里的 ***同步*** 等同于 ***可见***)
    
    3.2 volatile关键字有哪些功能?
    • 禁止缓存(对volatile变量的读写都不涉及CPU高速缓存)。
    • 对volatile变量相关的指令不做重排序

    4 小结

    • Java内存模型是多线程程序中对线程合法行为的语义规范。
    • Java源代码经编译后得到.class字节码文件,字节码将交由JVM去处理执行。这其中涉及到JVM运行时数据区。JVM运行时数据区主要分为:堆内存、方法区、虚拟机栈、本地方法栈和程序计数器。其中堆内存和方法区属于线程共享的内存区域。虚拟机栈、本地方法栈和程序计数器则属于线程独享的内存区域。
    • volatile关键字主要解决共享变量的可见性问题。对于volatile变量,禁止缓存和不使用指令重排序。

    也就是说,volatile关键字发挥的作用,是在Java内存模型所允许的多线程程序语义之内的。


    展开全文
  • 关键字模型

    2019-11-02 01:26:31
    关键字模型组成数据源:excel脚本:python一图胜千言解决问题映射反射 组成 数据源 + 脚本 数据源:excel 1.case以操作element划分case step 2.case step拆解成[...,excute method,operate element,input data,...]...

    组成

    数据源 + 脚本

    数据源

    1.case以操作element划分case step
    
    2.case step拆解成[...,excute method,operate element,input data,...]
    
    3.[...,excute method,operate element,input data,...]:
       excute method,operate element,input data:python生成自动化case关键字
       省略部分:可加case是否执行,期望结果,实际结果等关键字(按需发挥)
    

    脚本:python

    python反射实现case到script映射
    

    一图胜千言

    在这里插入图片描述
    po模型基础,在数据驱动篇已经描述过

    解决问题

    映射

    映射关系
    在这里插入图片描述

    反射

    实现核心:选择函数 + 选择参数

    def run_method(self,method,operate_ele,input_value) 
      #选择函数
       method_value = getattr(self.action_method, method)
             #传一个参数还是传多个参数
              if operate_ele:
                  if input_value:
                      method_value(operate_ele,input_value)
                  else:
                      method_value(operate_ele)
    
    展开全文
  • 关系模式全部候选关键字的算法,数据库的表与表之间关系模式等应用
  • 本篇总结的是 JMM内存模型,volatile 关键字保证有序性和可见性的原理,happens-before原则。 参考文章:Java面试官告诉你JMM是什么和面什么、阿里实习面经、「阿里面试系列」分析Synchronized原理,让面试官仰望...
    • 临近秋招,备战暑期实习,祝大家每天进步亿点点!Day19
    • 本篇总结的是 JMM内存模型,volatile 关键字保证有序性和可见性的原理,happens-before原则。

    在这里插入图片描述


    参考文章:Java面试官告诉你JMM是什么和面什么阿里实习面经「阿里面试系列」分析Synchronized原理,让面试官仰望happens-before理解和应用面试官:说说什么是 Java 内存模型(JMM)?面试官:volatile是如何保证可见性和有序性的?happen-before原则通俗易懂讲解happens-before原则

    1、什么是Java内存模型?

    首先,要知道,Java 内存模型指的是 JMM,而不是运行时数据区哦~

    • Java 语言为了保证并发编程中可以满足原子性、可见性及有序性,于是推出了一个概念就是 JMM 内存模型。

    • JMM 内存模型,目的是为了在多线程条件下,使用共享内存进行数据通信时,通过对多线程程序读操作、写操作行为规范约束,来尽量避免多次内存数据读取不一致、编译器对代码指令重排序、处理器对代码乱序执行等带来的问题。

      • JMM 内存模型解决并发问题主要采用两种方式:限制处理器优化使用内存屏障
      • JMM 内存模型将内存主要划分为主内存工作内存两种。规定 所有的变量都存储在主内存中,每条线程都拥有自己的工作内存,线程的工作内存中保存了该线程所需要用到的变量在主内存中的副本拷贝,线程对变量的所有操作都必须在工作内存中进行,而不能直接读、写主内存
      • 不同的线程之间也无法直接访问对方工作内存中的变量,线程间变量的传递均需要线程自己的工作内存和主存之间进行数据交互。

      如图所示:

    JMM 内存模型工作内存、主内存和 JVM 内存有什么关系?

    JMM 内存模型中,工作内存和主内存其实跟JVM内存的划分是在不同层次上进行的,是自己的一套抽象概念,大概可以理解为,主内存对应的是 Java 堆中的对象实例部分,而工作内存对应的则是栈中的部分区域。


    2、JMM 定义了哪些操作来完成主内存和工作内存的交互操作?

    JMM 定义了8 个操作来完成主内存工作内存的交互操作:

    • ① 首先是从 lock 加锁开始,作用于主内存的变量,把一个变量标识为一条线程独占的状态;
    • read 读取,作用于主内存变量,将一个变量的值从主内存读取到工作内存中;
    • load 加载,作用于工作内存的变量,把 read 读取到的值加载到工作内存的变量副本中;
    • use 使用,作用于工作内存的变量,把工作内存中变量的值传递给执行引擎使用,每当虚拟机遇到一个需要使用变量值的字节码指令时将会执行这个操作;
    • assign 赋值,作用于工作内存的变量,把从执行引擎接收到的值赋值给工作内存的变量,每当虚拟机遇到一个需要使用变量值的字节码指令时将会执行这个操作;
    • store 存储,作用于工作内存的变量,把工作内存中变量的值传送回主内存中,以便随后的 write 的操作;
    • write 写入,作用于主内存的变量,把 store 得到的值放入主内存的变量中;
    • ⑧ 最后是 unlock 解锁,把主内存中处于锁定状态的变量释放出来,流程到这一步就结束了。

    如图所示:

    JMM 基本可以说是围绕着在并发中如何处理这三个特性而建立起来的,也就是原子性、可见性、以及有序性。


    3、volatile关键字是如何保证可见性的?

    • 当一个共享变量被 volatile 修饰时,它会保证修改的值会被立即更新到主内存中,当有其他线程读取该值时,也不会直接读取工作内存中的值,而是直接去主内存中读取。

    • 而普通的共享变量不能保证可见性的,因为普通共享变量被修改后,写入了工作内存中,什么时候写入主内存其实是不可知的,当其他线程去读取是,此时无论是工作内存还是主内存,可能还是原来的值,因此无法保证可见性。

    volatile关键字修饰的变量,在每个写操作之后,都会加入一条store内存屏障命令,此命令强制将此变量的最新值从工作内存同步至主内存;在每个读操作之前,都会加入一条load内存屏障命令,此命强制从主内存中将此变量的最新值加载至当前线程的工作内存中。


    4、volatile关键字是如何保证有序性的?

    volatile 可以禁止指令重排,保证程序会严格按照代码的先后顺序执行。

    加了volatile 修饰的共享变量,通过内存屏障解决多线程下的有序性问题。原理如下:

    • 在每个 volatile 写操作的前面插入一个 StoreStore 屏障
    • 在每个 volatile 写操作的后面插入一个StoreLoad屏障
    • 在每个 volatile 读操作的后面插入一个LoadLoad屏障
    • 在每个 volatile 读操作的后面插入一个LoadStore屏障

    volatile 在写操作前后插入了内存屏障后生成的指令序列示意图如下:

    volatile 在读操作后面插入了内存屏障后生成的指令序列示意图如下:


    5、happens-before原则

    happens-before 的概念:

    JMM 可以通过 happens-before 关系向程序员提供跨线程的内存可见性保证(如果 A 线程的写操作 a 与 线程 B的读操作 b 之间存在 happens-before 关系,尽管 a 操作和 b 操作在不同的线程中执行,但 JMM 向程序员保证 a 操作将对 b 操作可见)。

    happens-before 具体定义:前面一个操作的结果对后续操作是可见的。

    1)如果一个操作 happens-before 另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。

    1. 两个操作之间存在 happens-before 关系,并不意味着一定要按照 happens-before 原则制定的顺序来执行。只要两个操作在指令重排序之后的执行结果与按照 happens-before 关系来执行的结果一致,那么这种重排序也是合法的。

    happens-before 的 8 大原则

    • 单线程happen-before原则:同一个线程中前面的所有写操作对后面的操作可见。
    • 锁的happen-before原则:同一个锁的 unlock 操作 happen-before 此锁的 lock 操作。这条规则是指对一个对象的解锁 happen-before 于后续对这个对象的加锁。
    • volatile的happen-before原则:对一个 volatile 变量的写操作 happen-before 对此变量的任意操作(当然也包括写操作了)。
    • happen-before的传递性原则:如果 A 操作 happen-before B 操作,B 操作 happen-before C操作,那么 A 操作happen-before C 操作。
    • 线程启动的happen-before原则:同一个线程的 start() 方法 happen-before 于此线程的其它方法。
    • 线程中断的happen-before原则:线程 A 新写入的所有变量,当调用 Thread.interrupt(),被打断的线程 B,可以看到 A 的全部操作。
      • 理解:线程 A 写入的所有变量,调用 Thread.interrupt(),被打断的线程 B,可以看到 A 的全部操作。
    • 线程终结的happen-before原则:线程中的所有操作都 happen-before 线程的终止检测。
    • 对象创建的happen-before原则:一个对象的初始化完成(构造函数执行结束)先于他的 finalize() 方法调用。

    总结的面试题也挺费时间的,文章会不定时更新,有时候一天多更新几篇,如果帮助您复习巩固了知识点,还请三连支持一下,后续会亿点点的更新!

    在这里插入图片描述


    为了帮助更多小白从零进阶 Java 工程师,从CSDN官方那边搞来了一套 《Java 工程师学习成长知识图谱》,尺寸 870mm x 560mm,展开后有一张办公桌大小,也可以折叠成一本书的尺寸,有兴趣的小伙伴可以了解一下,当然,不管怎样博主的文章一直都是免费的~
    在这里插入图片描述

    展开全文
  • java的内存模型与volatile关键字详解

    千次阅读 2017-02-05 10:19:48
    这套模型在jdk 1.2开始建立,经jdk 1.5的修订,现已逐步完善起来。什么是java内存模型什么是java内存模型,为什么会有这个模型?关于这个问题,就不得不从并发的问题讲起。在多核系统,处理器一般设置缓存来加速...
  • 全面理解Java内存模型(JMM)及volatile关键字

    万次阅读 多人点赞 2017-06-12 11:25:05
    【版权申明】未经博同意,谢绝转载!(请尊重原创,博保留追究权) http://blog.csdn.net/javazejian/article/details/72772461 出自【zejian的博客】 关联文章: 深入理解Java类型信息(Class对象)与...
  • 两大核心:JMM内存模型内存和工作内存)以及happens-before 三条性质:原子性,可见性,有序性 volatile性质 保证了不同线程对这个变量进行操作时的 可见性 ,即一个线程修改了某个变量的值,这新值对...
  • 所以现代计算机系统都不得不加入一层读写速度尽可能接近处理器运算速度的高速缓存(Cache)来作为内存与处理器之间的缓冲:将运算需要使用到的数据复制到缓存,让运算能快速进行,当运算结束后再从缓存同步回内存...
  • 码=主键=主关键字关键字=候选码 候选关键字=候选码除去码的其他候选码 码:唯一标识实体的属性或属性组合称为码 候选码(关键字):某一属性组的值能唯一标识一个元组而其子集不能(去掉任意一个属性都不能...
  • 3.volatile关键字的作用? 4.什么是指令重排序 5.指令重排序必须满足什么条件 6.指令重排序会对多线程造成影响吗 7.什么是happens-before关系 8.happens-before和as-if-serial语义之间的区别...
  • 关系模式的各种码(键/关键字

    千次阅读 2021-03-15 21:02:18
    码,又称键、关键字,英文...码(主键,主关键字):选定的一个候选码,有且只能有一个 全码:一个候选码包含关系模式的所有属性,则该候选码为全码 举个例子: 关系Student(学号,姓名,年龄,院系,班级)...
  • java 内存模型volatile关键字-05

    万次阅读 2018-12-12 20:59:56
    Java语言规范第三版对 volatile 的定义如下: java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。 Java语言提供了 volatile,在某些情况下比锁...
  • java 内存模型 final 关键字-08

    万次阅读 2018-12-12 21:04:44
    final类的成员变量可以根据需要设为final,但是要注意final类的所有成员方法都会被隐式地指定为final方法。 修饰方法 使用final方法的原因有两个。 第一个原因是把方法锁定,以防任何继承类修改它的含义; 第...
  • 主关键字只能有一个,候选关键字若干不限
  •  volatile这个关键字可能...在Java 5之前,它是一个备受争议的关键字,因为在程序使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。  volatile关键字虽然从字面上理解起来比较简单
  • 由volatile关键字谈Java内存模型

    千次阅读 2016-04-01 12:53:38
    volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关... 内存模型的相关概念当程序在运行过程,会将运算需要的数据从主存复制一份到CPU的高速缓存
  • 1首先通过内存模型说明volatile关键字的作用 先说明,用volatile修饰的变量,能直接修改内存内容,修改后的变量对其他线程是可见的。然后展开说明如下的内容。 多线程并发操作同一资源时,可能会出现最终结果和...
  • 深入理解Java的volatile关键字

    千次阅读 多人点赞 2018-10-22 10:09:52
    在再有人问你Java内存模型是什么,就把这篇文章发给他我们曾经介绍过,Java语言为了解决并发编程存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、...
  • 中文文本关键字提取算法总结

    千次阅读 2019-07-03 15:32:08
    定义:从文本把与这篇文章意义最相关的一些词语抽取出来。 应用:在文献检索、自动文摘、文本聚类/分类等方面有着重要的应用,它不仅是进行这些工作不可或缺的基础和前提,也是互联网上信息建库的一项重要工作。 ...
  • JMM内存模型&volatile关键字

    千次阅读 2020-11-16 16:43:52
    Java的内存模型JMM(Java Memory Model),JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个内存(Main Memory),Java所有实例变量都储存在主存,对于所有线程都是共享的。每条线程都有...
  • 关系模型中的键

    千次阅读 热门讨论 2014-04-21 16:40:34
    主键:在一个关系的若干个候选键随意指定一个作为关键字,此关键字就是主键。 外键:如果模式R属性K是其他模式的主键,那么K在模式R称为外键 属性:候选键的属性为属性 非属性:除候选键以外的属性...
  • Javavolatile关键字的含义

    千次阅读 2017-03-11 10:07:57
    内存模型相关概念计算机在执行程序时,每条指令都是在CPU执行的,而执行指令过程,势必涉及到数据的读取和写入。由于程序运行过程的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行...
  • 关系模型中的术语

    千次阅读 2015-12-28 17:11:13
    我们常说的关系型数据库指的是满足关系模型的数据库。 下表是在SQL使用的名称和关系型模型使用的名称的对应关系。 SQL Relational database database Description Row Tuple Data set with specific ...
  • 理解Java内存区域与Java内存模型 Java内存区域 Java虚拟机在运行程序时会把其自动管理的内存划分为以上几个区域,每个区域都有的用途以及创建销毁的时机,其中蓝色部分代表的是所有线程共享的数据区域,而绿色部分...
  • synchronized同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized 修饰的方法 或者 代码块。volatile用...
  • 关系模型

    2017-03-08 12:07:11
    基本概念 关系:一个关系对应于我们平时说的一张表。关系关系模式在某一时刻的状态或内容,即表的内容,是数据库的值。...码:如果一个表有多个关键字,选择其中的一个作为主关键字,其余的则
  • 关系模型中设计表时的约束条件

    千次阅读 2019-02-26 15:27:19
    关系模型中设计表时的约束条件 一、介绍 关系模型是目前最重要的也是应用最广泛的数据模型。简而言之,关系就是一张二维表,由行和列组成。关系模型将数据模型组织成表格的形式,这种表格在数学上称为关系 设计...
  • 对于一个软件来讲,若是开源其发展速度是很快的,在R软件,去年年底就发布了jiebaR分词包,上学的那会jieba包总是出现在python,没想到在R软件也用的到,这不全几天接了点私活,正好要用到R软件做分词,正好...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 131,708
精华内容 52,683
关键字:

关系模型中主关键字是