精华内容
下载资源
问答
  • 动态块参数精辟解析

    2012-07-11 09:51:35
    参数在动态块中最根本的作用是指示方向,与几何中的向量类似,参数有基点和方向两大要素。为了更深入地了解动态块参数的本质,下面向大家解析几个关于动态块参数常见的疑惑。
  • Oracle编译PL/SQL程序块分为两个种: 其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型; 另外一种是后期联编(late binding),即SQL语句只有在运行阶段才能...

    1.静态SQLSQL与动态SQL

    Oracle编译PL/SQL程序块分为两个种:
    其一为前期联编(early binding),即SQL语句在程序
    编译期间就已经确定,大多数的编译情况属于这种类型;
    另外一种是后期联编(late binding),即SQL语句只有在
    运行阶段才能建立,例如当查询条件为用户输入时,
    那么Oracle的SQL引擎就无法在编译期对该程序语句进行确定,只能在用户输入一定的查询条件后才能提交给SQL引擎进行处理。
    通常,静态SQL采用前一种编译方式,而动态SQL采用后一种编译方式。

     本文主要就动态SQL的开发进行讨论,并在最后给出一些实际开发的技巧。


     2.动态SQL程序开发

      理解了动态SQL编译的原理,也就掌握了其基本的开发思想。
    动态SQL既然是一种”不确定”的SQL,那其执行就有其相应的特点。Oracle中提供了
    Execute immediate语句来执行动态SQL,语法如下:
    Excute immediate 动态SQL语句 using 绑定参数列表 returning into 输出参数列表;

      对这一语句作如下说明:

      1) 动态SQL是指DDL和不确定的DML(即带参数的DML)

      2) 绑定参数列表为输入参数列表,即其类型为in类型,在运行时刻与动态SQL语句中的参数(实际上占位符,可以理解为函数里面的形式参数)进行绑定。

      3) 输出参数列表为动态SQL语句执行后返回的参数列表

      4) 由于动态SQL是在运行时刻进行确定的,所以相对于静态而言,其更多的会损失一些系统性能来换取其灵活性。

      为了更好的说明其开发的过程,下面列举一个实例:

      设数据库的emp表,其数据为如下:

    ID       NAME   SALARY

    100    Jacky        5600

    101    Rose         3000

    102    John         4500

    要求:

      1.创建该表并输入相应的数据。

      2.根据特定ID可以查询到其姓名和薪水的信息。

      3.根据大于特定的薪水的查询相应的员工信息。

      根据前面的要求,可以分别创建三个过程(均使用动态SQL)来实现: 

      过程一:

    create or replace procedure create_table as
    begin
    execute immediate '
    create table emp(id number,
    name varchar2(10)
    salary number; )'; --动态SQL为DDL语句
    insert into emp
    values (100,'jacky',5600);
    insert into emp
    values (101,'rose',3000);
    insert into emp
    values (102,'john',4500);
    end create_table;

    过程二: 

    create or replace procedure find_info(p_id number) as
    v_name varchar2(10);
    v_salary number;
    begin
    execute immediate '
    select name,salary from emp
    where id=:1'
    using p_id

    returning into v_name,v_salary; --动态SQL为查询语句
    dbms_output.put_line(v_name ||'的收入为:'||to_char(v_salary));
    exception
    when others then 
    dbms_output.put_line('找不到相应数据');
    end find_info;

    展开全文
  • PL/SQL专门面向Oracle数据库存储的程序单元的开发,因此在讲PL/SQL之前我们先来了解以下的一些相关概念。...2. 数据库是由基于磁盘的数据文件,控制文件,日志文件,参数文件和归档日志文件等组成的物理文件...

    PL/SQL专门面向Oracle数据库存储的程序单元的开发。
    一.PL/SQL块结构
    PL/SQL程序都是以块(block)为基本单位,整个PL/SQL分为3个部分
    声明[可选],执行[必须],异常[可选]

    [declare]
    begin
    [exception]
    end
    
    

    二.PL/SQL中使用DML
    1.使用select into赋值
    select 列名 into 变量名 from 表名

    举例:算7369的年薪
    declare
    V_saly scott.emp.sal%type;
    V_name  scott.emp.ename%type;
    begin 
      select sal, ename into V_saly,V_name from scott.emp where empno=7369;
      dbms_output.put_line(V_name||'的年薪是:'||(V_saly*12));
      end;
    

    注:特殊数据类型

    • %type, 与数据表中的某个列的数据类型相同;
    • %rowtype,返回一个记录类型,与数据库表的数据结构一致

    2.使用insert插入数据
    insert into表名[(列名)] values(对应值) [where 条件]

    
    --创建表goods,goodid,goodname,goodPrice
    create table goods(
    goodid number,goodname nvarchar2(10),goodPrice number);
    select * from goods;
    --添加5条记录
    insert into goods values(1,'衣服',300);
    insert into goods values(2,'鞋子',200);
    insert into goods values(3,'裤子',300);
    insert into goods values(4,'眼镜',1300);
    insert into goods values(5,'配饰',100);
    

    3.使用update 更新数据
    update 表名 set 列名=新值 [where 条件];

    update goods set goodPrice=500 where goodid=1
    
    

    4.使用delete 删除数据
    delete [from] 表名 [where 条件];

    --删除其中一条记录
    delete goods where goodid=1;
    

    三.PL/SQL中事务处理

    1.事物处理的概念:

    事务处理是工作的逻辑单元,一个事务由一个或者多个完成一组的一组相关行为的SQL语句,通过事务机制确保这一组SQL所执行的操作要么完全成功的执行(执行的每一步都成功无错误,则整个事务被提交),要么一点也不执行(有错误时回滚)。

    2.事务包含4种重要的特性:ACID

    • 原子性(atomicity)
    • 一致性(consistency)
    • 隔离性(isolation)
    • 持久性(durability)

    3.在oracle中事务是隐式自动开始的,一般来说在以下几个方面:
    A. 执行commit提交事务
    B. 执行rollback撤销事务
    C. 执行一条数据定义语句(create.drop.alter)
    D. 执行一个数据控制命令(grant.revoke)
    E. 正常的断开数据库连接,正常退出SQL*Plus环境

    4.事务的几个重要操作

    • 提交事务commit [work]
    • 设置保存点savepoint name
    • rollback[work][to savepoint name]
    展开全文
  • 对于HotSpot虚拟机来说,Java类的实例对象在内存中存储分为区域,分别是对象头、实例数据、对齐填充。 对象头 对象头包含两部分,第一部分用于存储对象自身运行时的数据,包括GC分代年龄、哈希码、锁状态、...

    对于HotSpot虚拟机来说,Java类的实例对象在内存中存储分为三块区域,分别是对象头、实例数据、对齐填充。

    对象头

    对象头包含两部分,第一部分用于存储对象自身运行时的数据,包括GC分代年龄、哈希码、锁状态、线程持有的锁等数据,这部分的数据长度在32位和64位虚拟机中分别为32位和64位,被称为“Mark Word”。

    对象头的另一部分用于存储对象的类元数据的指针,虚拟机通过这个指针可以知道对象是哪个类的实例。

    实例数据

    实例数据用于存储在程序代码中定义的各种类型的字段内容,也包含从父类继承来的。这部分数据的存储顺序会受到虚拟机分配策略参数和字段在代码中定义的顺序的影响。

    对齐填充

    在HotSpot虚拟机中,对象的大小要求是8字节的整数倍,因为对象头的大小正好是8字节的一倍或两倍,而实例数据部分可能不是8字节的整数倍,所以需要凑齐8字节的整数倍,就用到了对齐填充部分,它仅仅是用于占位的作用。
    这里写图片描述

    展开全文
  • Static静态代码以及各代码之间的执行顺序

    万次阅读 多人点赞 2019-10-16 19:56:49
    前言 在Java中,Static静态代码、构造代码、普通代码、构造函数的执行顺序是一个java学习者必须掌握的基础,本篇博客旨在让大家能清除了解它们之间的执行顺序。...基本上代码块分为三种:Static静...

    前言
    在Java中,Static静态代码块、构造代码块、普通代码块、构造函数的执行顺序是一个java学习者必须掌握的基础,本篇博客旨在让大家能清除了解它们之间的执行顺序。

    代码块的分类

    基本上代码块分为三种:Static静态代码块、构造代码块、普通代码块

    代码块执行顺序静态代码块——> 构造代码块 ——> 构造函数——> 普通代码块

    继承中代码块执行顺序:父类静态块——>子类静态块——>父类代码块——>父类构造器——>子类代码块——>子类构造器

    1、静态代码块(也叫静态块、静态初始化块)

    Java静态代码块中的代码会在类加载JVM时运行,且只被执行一次,也就是说这些代码不需要实例化类就能够被调用。一般情况下,如果有些代码必须在项目启动的时候就执行的时候,就需要使用静态代码块,所以静态块常用来执行类属性的初始化!

    关于Static静态代码块的五个小结点

    1、Java静态代码块中的代码会在类加载JVM时运行,且只被执行一次
    2、静态块常用来执行类属性的初始化
    3、静态块优先于各种代码块以及构造函数,如果一个类中有多个静态代码块,会按照书写顺序依次执行
    4、静态代码块可以定义在类的任何地方中除了方法体中【这里的方法体是任何方法体】
    5、静态代码块不能访问普通变量

    针对4中描述静态代码块不能存在任何方法体中的原因其实也是很简单,由于普通方法是通过加载类,然后new出实例化对象,通过对象才能运行这个方法,而静态代码块只需要加载类之后就能运行了。对于静态方法,在类加载的时候,静态方法也已经加载了,但是我们必须要通过类名或者对象名才能访问,也就是说相比于静态代码块,静态代码块是自己主动运行的,而静态方法是被动调用运行的。不管是哪种方法,我们需要明确静态代码块的存在在类加载的时候就自动运行了,而放在不管是普通方法还是静态方法中,都是不能自动运行的。

    针对5中描述静态代码块不能访问普通变量,原因同样简单。普通变量是被实例对象调用的,静态代码块中都不存在其实例对象,谈何调用变量?

    Static静态代码块使用格式

    static{
      ..............
    }
    

    2、构造代码块(也叫构造初始化块)

    听这名字就知道和构造方法离不开!没错,但是还是和构造方法有着本质区别,我们都知道,没个方法中都可以有很多构造方法,每创建一个对象其构造方法就执行一个,而一个构造方法可以创建N个对象,构造方法就比较“高冷”了,而构造代码块就比较“舔狗”了,只要该类实例了一个对象,构造代码就执行一次,利用每次创建对象的时候都会提前调用一次构造代码块特性,所以它可以做统计创建对象的次数功能。当然构造代码块用的相对少!

    构造代码块小结

    1、构造代码块在创建对象时被调用,每次创建对象都会调用一次
    2、构造代码块优先于构造函数执行,同时构造代码块的运行依赖于构造函数
    3、构造代码块在类中定义

    针对2中的“依赖”可理解为如果不实例化对象(也就是不执行构造方法),构造代码块是不会执行的!

    3、代码块(又叫普通代码块、初始化块)

    代码块小结

    1、普通代码块定义在方法体中
    2、普通代码块与构造代码块的格式一致都是{}
    3、普通代码块与构造代码块唯一能直接看出的区别是构造代码块是在类中定义的,而普通代码块是在方法体中定义的

    执行顺序的代码测试

    以上已经讲得差不多了,开始上代码了!

    package com.gx.initializationblock;
    
    public class Initializationblock {
    
        int intA;
        int intB;
    
    
        public Initializationblock() {
            System.out.println("无参构造器00000000");
        }
    
        public Initializationblock(int a) {
            System.out.println("一个参数的构造器");
            
        }
    
    
        {
            intA = 10;
            intB = 15;
    
            System.out.println("构造初始化块11111");
        }
    
        {
            System.out.println("构造初始化块22222");
        }
    
        {
        	
            System.out.println("构造初始化块33333");
        }
    
        //静态初始化块
        static {
            System.out.println("静态初始化块01010101");
        }
    
        static {
            System.out.println("静态初始化块0202020202");
        }
        public void method(){
        	{
        		System.out.println("普通初始化块");
        	}
        }
    }
    

    测试demo

    package com.gx.initializationblock;
    
    /* 初始化块一
    	 * 因为静态块是在类的初始化阶段完成的,
    	 * 因此在创建某个类的第二个对象时,该类的静态块就不会执行了
    	 * 
    	 * 在单个类中,静态初始化块,初始化块,构造器
    	 * 多个类的继承中初始化块、静态初始化块、构造器的执行顺序
    在继承中,先后执行父类A的静态块,父类B的静态块,最后子类的静态块,然后再执行父类A的非静态块和构造器,然后是B类的非静态块和构造器,最后执行子类的非静态块和构造器
     */
    public class Demo1 {
        public static void main(String[] args) {
            Initializationblock initializationblock = new Initializationblock();
            initializationblock.method();
            System.out.println("------------");
            //多打印几个对象的目的是:好看出Static静态代码块只执行一次!!!
            Initializationblock initializationblock2 = new Initializationblock(); //因为静态块是在类的初始化阶段完成的,因此在创建某个类的第二个对象时,该类的静态块就不会执行了
            initializationblock2.method();
            Initializationblock initializationblock3 = new Initializationblock();
            initializationblock3.method();
        }
    }
    

    打印结果

    静态初始化块01010101
    静态初始化块0202020202
    构造初始化块11111
    构造初始化块22222
    构造初始化块33333
    无参构造器00000000
    普通初始化块
    ------------
    构造初始化块11111
    构造初始化块22222
    构造初始化块33333
    无参构造器00000000
    普通初始化块
    构造初始化块11111
    构造初始化块22222
    构造初始化块33333
    无参构造器00000000
    普通初始化块
    

    得出结论:执行顺序静态代码块 > 构造代码块 > 构造函数 > 普通代码块

    继承中各代码块的执行顺序

    啥都不说了,直接撸代码:继承关系为 BaseThree——> BaseTwo——> BaseOne
    BaseOne类

    package com.gx.initializationblock;
    
    public class BaseOne {
    
        public BaseOne() {
            System.out.println("BaseOne构造器");
        }
    
        {
            System.out.println("BaseOne初始化块");
            System.out.println();
        }
    
        static {
            System.out.println("BaseOne静态初始化块");
    
        }
    
    }
    

    BaseTwo类

    package com.gx.initializationblock;
    
    public class BaseTwo extends BaseOne {
        public BaseTwo() {
            System.out.println("BaseTwo构造器");
        }
    
        {
            System.out.println("BaseTwo初始化块");
        }
    
        static {
            System.out.println("BaseTwo静态初始化块");
        }
    }
    

    BaseThree 类

    package com.gx.initializationblock;
    
    public class BaseThree extends BaseTwo {
        public BaseThree() {
            System.out.println("BaseThree构造器");
        }
    
        {
            System.out.println("BaseThree初始化块");
        }
    
        static {
            System.out.println("BaseThree静态初始化块");
        }
    }
    

    测试demo2类

    package com.gx.initializationblock;
    
    /*
         注:这里的ABC对应BaseOne、BaseTwo、BaseThree 
     * 多个类的继承中初始化块、静态初始化块、构造器的执行顺序
         在继承中,先后执行父类A的静态块,父类B的静态块,最后子类的静态块,
         然后再执行父类A的非静态块和构造器,然后是B类的非静态块和构造器,最后执行子类的非静态块和构造器
     */
    public class Demo2 {
        public static void main(String[] args) {
            BaseThree baseThree = new BaseThree();
            System.out.println("-----");
            BaseThree baseThree2 = new BaseThree();
    
        }
    }
    

    运行结果

    BaseOne静态初始化块
    BaseTwo静态初始化块
    BaseThree静态初始化块
    BaseOne初始化块
    
    BaseOne构造器
    BaseTwo初始化块
    BaseTwo构造器
    BaseThree初始化块
    BaseThree构造器
    -----
    BaseOne初始化块
    
    BaseOne构造器
    BaseTwo初始化块
    BaseTwo构造器
    BaseThree初始化块
    BaseThree构造器
    

    多个类的继承中初始化块、静态初始化块、构造器的执行顺序为:先后执行父类A的静态块,父类B的静态块,最后子类的静态块,然后再执行父类A的非静态块和构造器,然后是B类的非静态块和构造器,最后执行子类的非静态块和构造器【注:这里的ABC对应BaseOneBaseTwoBaseThree

    结论:多个类的继承中初始化块、静态初始化块、构造器的执行顺序为:父类静态块——>子类静态块——>父类代码块——>父类构造器——>子类代码块——>子类构造器

    如果本文对你有所帮助,请支持一下点个赞呗QnQ
    最后,博主并不是什么大牛,也会犯错!如有不正之处欢迎指正!感激不尽!

    展开全文
  • loadrunner之 学习五:参数

    千次阅读 2016-06-07 15:06:02
    学习五:参数参数分为内容逐渐学习:1.简单实现 在脚本中选中要参数化的内容,‘右键菜单’—‘Replace with a new parameter’,可以选择或新建一个parameter,我们填写一个parameter name,然后点击...
  • 轻松学,Java 中的代理模式及动态代理

    万次阅读 多人点赞 2017-06-29 22:08:55
    前几天我写了《秒懂,Java 注解 (Annotation)你可以这样学》,因为注解其实算反射技术中的一部分,然后我想了一下,反射技术中还有个常见的概念就是动态代理,于是索性再写一篇关于动态代理的博文好了。...
  • MongoDB on Spark的参数优化

    千次阅读 2018-10-26 22:41:18
    mongodb on spark的参数基本分为输入参数和输出参数。 1. mongodb on spark输入的参数: spark.mongodb.input.uri:mongo的uri, 如:mongodb://host:port/ 或者直接指定数据库和集合:mongodb://host:port/data.....
  • 在实际的使用中,会遇到Job在执行时根据用户的选择或者特定的输入条件的情况,这种情况之下带参数的Job就起到了作用。这篇文章仍然以具体的使用示例进行说明带参数的Jenkinsfile如何使用。
  • 在机器学习的模型中,通常有两类参数,第一类是通过训练数据学习得到的参数,也就是模型的系数,如回归模型中的权重系数,第二类是模型算法中需要进行设置和优化的超参,如logistic回归中的正则化系数和决策树中的树...
  • SPS参数

    万次阅读 2020-03-07 09:40:52
    序列参数集SPS包含了一个CVS中所有编码图像的共享编码参数,一个CVS里的所有PPS都必须引用同一个SPS。当一个SPS被引用时,该SPS处于激活状态直到整个CVS结束。 SPS所包含的语法元素大致分为以下几个方面: 图像...
  • 计算机视觉-相机内参数和外参数

    万次阅读 多人点赞 2016-10-28 10:39:17
    相机内参数是与相机自身特性相关的参数,比如相机的焦距、像素大小等; 相机外参数是在世界坐标系中的参数,比如相机的位置、旋转方向等。 相机标定(或摄像机标定): 在图像测量过程以及机器视觉应用中,为确定...
  • RAC 环境下的重要参数

    千次阅读 2012-12-10 16:26:47
    Oracle 数据库启动时会根据参数文件中提供的相关参数启动Oracle实例。这些参数包括数据库名字、sga,pga的分配,控制文件的位置,undo,process等等。Oracle RAC数据库同样依赖于这些参数。除了所有单实例情形下的...
  • PPS参数

    万次阅读 2020-03-09 10:04:47
    一幅图像可以划分为一个或多个SS,同一幅图像中所有SS都用同一个图像参数集(Picture Parameter Set,PPS)。PPS中存在一些和SPS相同的参数,PPS会覆盖SPS中相应的值,即SS会使用PPS中的这些参数进行解码。在解码开始时...
  • 【本文主要分为前后两部分,前半部分基本是Vivienne Sze、Madhukar BudagaviGary和J. Sullivan所编著的《High Efficiency Video Coding (HEVC) ——Algorithms and Architectures》的第三章前半部分的笔记,后半...
  • JVM参数设置

    万次阅读 多人点赞 2018-09-21 17:55:05
    JVM参数设置 基本参数 通过一张图来了解如何通过参数来控制各区域的内存大小 控制参数 -Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -XX:NewSize设置新生代最小空间大小。 -XX:MaxNewSize设置...
  • 这几天刚好在看linux c语言启动,现在就顺便把内核在启动时解析bootargs这一单独拎出来讲解下,内核对于bootargs的解析分为: 1.  setup_arch(&command_line); 综述:在这个函数中,系统会获得bootargs参数,...
  • 指针作为函数参数 1. 函数参数概念:  形参:被调函数中的参数  实参:主调函数中的参数  形参和实参:  C 中函数中实参和形参是按值传递的,调用函数后,会将实参的值拷贝给形参(即形参和实参之间是没有...
  • JVM垃圾回收算法与参数配置

    千次阅读 2017-08-05 17:07:30
    ★引用计数法 ...分为标记和清除两个阶段进行处理内存中的对象,当然这种方式也有非常大的弊端,就是空间碎片问题,垃圾回收后的空间不连续,不连续的内存空间工作效率低于连续的内存空间。★复制算法(java
  • kernel的启动参数

    千次阅读 2012-05-31 00:31:18
    内核引导参数大体上可以分为两类:一类与设备无关、另一类与设备有关。内核源码树下的 Documentation/kernel-parameters.txt 文件列出了所有可用的引导参数,并指明了处理每个参数的具体文件。注意:对于模块而言,...
  • 引用参数和传值参数的区别

    千次阅读 2012-08-16 11:12:05
    1. 我们都知道,普通的传值参数是由行参传给实参; 编译器在函数内部为每一个参数产生一个临时变量,将每一个参数压入栈(stack)中,将实参的数值保存到临时变量中。 所以才有在低端8位机中,对参数的数量有比较...
  • SpringBoot Service层使用Validated注解做接口参数校验

    万次阅读 热门讨论 2019-08-03 09:58:19
    使用注解参数校验,可避免业务代码中无休止的参数校验判断,在分层的方面来说,参数校验都是在Controller层完成的,那么Spring MVC中,可直接添加Validate相关的参数校验注解,即可快速完成而无需其它额外的配置,...
  • 初始化参数文件介绍

    千次阅读 2013-09-06 23:30:06
    1.初始化参数文件 initializationparameter files; 初始化参数文件是最重要的文件之一,...按照得出方式不同,初始化参数可以分为3类:推导参数,操作系统依赖参数和可变参数。 推导参数 derived parameters,通常来自于
  • 相机外参数是在世界坐标系中的参数,比如相机的位置、旋转方向等。相机标定(或摄像机标定):一句话就是世界坐标到像素坐标的映射,当然这个世界坐标是我们人为去定义的,标定就是已知标定控制点的世界坐标和像素...
  • 在上一篇文章中介绍了在Jenkinsfile中通过parameters中的choice(下拉框)类型获取输入参数的方法,这篇文章将会继续介绍Jenkinsfile的parameters所支持的其他物种类型的使用方式。
  • 转自...utm_medium=toutiao.io&utm_source=toutiao.io JVM常用参数选项 jvm 可配置的参数选项可以参考 Oracle 官方网站给出的相关信息:http://www.oracle.c...
  • Java程序运行大致分为:堆内存,非堆内存(虚拟机栈,方法区,本地方法栈,程序计数器),堆外内存. docker容器中运行除了Java程序还需要为其余程序余力内存空间.这里假设统一预留50M空间. 3.1 堆内存的量化 堆内存...
  • kettle参数、变量详细讲解

    万次阅读 2014-10-17 17:17:56
    详细介绍kettle位置参数、命名参数、变量之间的区别及用法
  • Linux 中的 I/O 设备大致分为两类:设备和字符设备。设备将信息存储在固定大小的中,每个都有自己的地址,都能独立于其它而读写。磁盘是最常见的设备。虚拟设备文件则是将设备封装成为一个文件,...
  • AP 基本性能参数介绍

    千次阅读 2016-10-17 09:46:29
    AP 基本性能参数介绍 主要参数 ...概述: shpreamble全称Short Preamble,前导码(Preamble)是数据帧头部的一组Bit位,用于同步发送端与接收端的传输信号,前导码分为两种:长前导码(Long Preamble)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 338,084
精华内容 135,233
关键字:

动态块参数分为