设置环境变量:
1)JAVA_HOME-指向JDK的安装目录
2)CLASSPATH-指向类的路径
3)PATH-常用命令的搜索路径,保留原有的PATH设置
Windows下:
1)配置
PATH=....;%JAVA_HOME%\bin
注意:反斜杠
JAVA特性:
1.一次编写,到处运行:
1)先将源程序编译成一种中间语言,叫做byte code(字节码)。(字节码不受CPU和操作系统的影响)
2)再将字节码翻译成特定操作系统可以执行的二进制指令。
对比C/C++语言
1)消除了指针,保留了指针中好的特性,用引用代替指针。
2)自动的内存管理机制。内存申请方式单一,所有的对象统一采用new操作符建立在内存堆栈上。
1.JVM——提供解释性环境
1)编译——做简单的语法检验;将源文件翻译成字节码
2)运行——JVM加载字节码文件,再翻译成与操作系统对应的机器指令,运行。不同的OS 有不同的JVM版本。
2.GC——垃圾回收机制
自动回收内存。
1)GC是优先级很低的系统级线程。
2)开发人员可以在编码中调用GC,但只是suggest,not force!是否执行回收工作由JVM自己决定
https://www.doczj.com/doc/57433983.html,ng.System.gc()/https://www.doczj.com/doc/57433983.html,ng.Runtime.gc()
HelloJava.java
1)编译: javac -d bin src\HelloJava.java
编译后的目录结构:com\briup\ch01\HelloJava.class
2)运行: java -cp bin com.briup.ch01.HelloJava
构建java源程序的三要素:
1)package包,语法:com.briup.ch01.
2)import 导入外部的类,可省略https://www.doczj.com/doc/57433983.html,ng包和同一个package下的类不需要导入
3)class CLASSNAME{...},CLASSNAME命名规则:首字母大写和文件命名相同,后缀为“.java”
代码运行机制(workflow)
1、编译:.java->.class文件。命令:javac
2、运行:命令:java
1)类加载器(class loader)——将字节码装入内存
2)字节码校验器——验证字节码的合法性
3)执行:
a)解释器:将字节码一条条翻译成系统指令,再执行,每次都要翻译效率低
b)JIT:即时翻译技术,
字节码校验器
1)验证JVM版本是否兼容;
2)检测代码不会破坏系统的一致性,不能对OS进行恶意修改;
3)不会在内存中发生栈上溢或下溢;
4)检测参数类型是否合法;
5)检测类型转换是否正确
类加载器
1.类加载器类型:
1)启动类加载器(bootstrap classloader
加载java核心的API:$jdk/jre/lib/rt.jar
2)扩展类加载器(extensible classloader)
加载扩展的API:$jdk/jre/lib/ext/*.jar
3)系统类加载器(system classloader)
加载用户自定义的class
2类加载流程——双亲委托机制
1)先运行启动类加载器加载核心API
2)在运行扩展类加载器,加载扩展API
3)最后运行系统类加载器,加载用户自定义class
优势:
1)避免重复加载,在上一级加载成功,就不会再往下加载
2)避免自定义的类覆盖java核心API中的类
JAR命令:
1.打jar包:jar -cvf hello.jar com
"hello.jar"——自定义的Jar包名称
"com"——指定要压缩的目录
2.解压jar包:jar -xvf hello.jar
验证加载过程:
1)将自己打的hello.jar放入$jdk\jre\lib\ext目录下
2)修改原有的Hello.java文件的输出内容
3)重新编译运行的HelloJava,运行的应该是扩展目录下的HelloJava
第二章
标识符,关键字和类型
COMMENTS-注释:
三种注释
1)单行注释://Comments on one line
2)多行注释:/*Comments on one or more lines*/
3)javadoc文档注释:/**javadoc comments content*/ 命令
javadoc -d doc src/*.java
doc-指定doc存放的目录,会自动创建
编码
1)每条语句以";"结束,建议一行只写一条语句,书写时要缩进2)java中不允许有孤立的代码存在,都要写在代码块{}中
class MyClass{
{//code} //匿名代码块
returnType methodName(paramslist){
//your code for this method
}
}
interface --定义方式的class
3)空格 tab 回车
标识符——表意性要强
1.类,方法和变量
2.以字符,"_"和"$"开头
3.大小写敏感
4.没有长度限制
关键字:
1)"go""const"作为保留字
2)true false null有特殊含义,命名上要回避
基本数据类型:四类八种
1)整型
byte short int long
例:i=30;
表示方式:八进制,十六进制,十进制
默认方式:十进制int型
八进制:前面加"0",如010
十六进制:前面加"0x"
2)浮点型
float:单精度结尾加"f"或"F" 3.141F
double:双精度结尾加"d"或"D"
默认是double型
3)boolean布尔型
取值:true false
4)字符型
char:无符号的16bit的unicode整型 char a=97
数据类型转换
1.隐式转换:自动类型转换
byte->short ->int-> long===>float -> double
char->int
2.强制类型转换
语法:(目标类型)转换变量(存在精度丢失)
-1:00000.....0001——>取反:1111.....1110 ——>+1:1111. (1)
-1: 11111 (1111)
(byte)-1:1111 1111
(short)(byte)-1:1111 1111 1111 1111
(char)(short)(byte)-1:01111 1111 1111 1111==>2^16-1
(int)(char)(short)(byte)-1:2^16-1
抽象:
class类——反应的是群体的共同属性和共同行为。
例:class Rectangle{
int height,width; //长方形的属性:长/宽
void perimeter(){...}//方法:求周长
void area(){...}//方法:求面积
}
object对象——反应的是这个群体当中独立的一个个体
创建一个长方形的对象: new Rectangle();
语法:new CLASSNAME() // 必须使用new操作符创建对象
会调用该类的构造方法。
引用型变量:
1.声明
语法:Rectangle crec;
只指定变量的类型,并不创建对象
2.赋值
crec = new Rectangle(6,8);
将创建的长方形对象的引用赋给引用型变量crec,通过该变量可以访问类的属性和方法: crec.area();
java中的内存分区:
堆区:所有程序公用,空间不连续,容量大速度慢,通常用来存放对象(new操作符创建出来的),成员变量等;
栈区:先进后出的分配原则,存储空间连续,容量小速度快,通常用来存放变量:局部变量,基本数据类型变量等;
代码区:存放代码块,方法体等;
静态/常量区:存放静态变量,常量等。
例 Person p;//声明一个Person类型的引用型变量p
Person p= new Person("Mike");
第三章
表达式和流程控制
局部变量:
定义在方法内部的变量;没有默认初始化,使用前必须赋值
成员变量:
定义在类的内部方法的外部的变量;有默认初始化
整型:0
浮点型:0.0
字符型:\u000
布尔型:false
引用型:null
class Cat{
String type;//成员变量
void cry(){ //方法cry()
int i; //局部变量
System.out.println(i);
System.out.println(type);
}
void shout(){
i=10;//非法
}
运算符Operators
算数运算符: + - * / %
例:5/3=1 要求/两边的数据类型一致
赋值操作符:
例:i+=3 ====> i=i+3; i*=2 ====> i=i*2
++ --
例: int i=5; i++>5 false 先运算再自加
++i>5 true 先自加在运算
i++ ===>i=i+1 ; ++i ===>i=i+1
移位操作符:
针对数字的二进制串进行操作
例 int i=3; 0000 (0011)
i<<2 00 ... 001100 12
i>>2 0000 ... 00 11 00 有符号右移正数高位填0
i=-3 1111... 1101 负数高位填1
i>>2 1111 (1111)
i>>>2 00111.. 11111 无符号右移高位统统补0
位运算符
^ 不同为 1 相同为 0
& 一个为0 是0
| 一个为1 是1
例 i=3, i=0000 (0011)
i=5, i=0000 (0101)
i&j: 0000 (0001)
i|j: 0000 (0111)
i^j: 0000 (0110)
逻辑运算符
&&: A&&B:只有A和B都为true时,整个表达式结果为true
短路规则:A为false时,B不再参与运算
||: A||B :只要A和B中一个为true,整个表达式结果为true
短路规则:A为true时,B不再参与运算
练习:int x=5,y=7; (x++>5)&&(++y>0)
打印最后x,y和整个表达式的结果
A?B:C -----A为true,则整个表达式结果为B;A为false,表达式结果为C
例:int a=3,b=5; int k=(a>b)?a:b
注意:要求“:”两边数据类型一致,否则小类型隐式转换成大类型
double c=3.14; (a>b)?c:b===>结果为5.0
类型转换:
隐式转换
显示转换(目标类型)要转换的变量
注:两个char型参与运算时会自动转换为int型;
流程控制:
if/else
switch/case:switch(temp){...}
1)temp的取值只能是:byte short char int
2)case是入口,会一致往下执行,直到break;
3)default:所有case都不匹配时,会执行default语句;可放任意位置
For循环:
for(A;B;C){code;}
While ,do while 循环
第四章数组Array
一.定义:
用来存储【指定长度】的【相同类型数据】的【集合】
1.声明数组时必须指定数组中元素的类型
2.指定长度且不能更改
3.是引用类型,使用前必须通过new操作符创建数组对象;可以将长度作为数组属性
数组的声明:
int i ; String str ; Student stu
1.基本数据类型: int[] iArray; int iArray[];
2.引用类型: Student[] iArray; Student iArray[];
数组声明之后,数组对象并未创建
例:错误声明:int[5] iArray; int iArray[5];
数组的创建:————new 操作符
1.基本数据类型:
int[] iArray=new int[5];
例: int length=5;int[] iArray=new[length];
注:长度可以是变量。
2.引用类型:
Student[] iArray =new Student[5];
iArray数组中存放的是5个Student类型的元素
比较:Student s=new Student();
数组在内存中的存放:
一段地址连续的线性内存空间
注:数组创建完之后,每个元素都有默认值,和实例变量的默认初始值一致:
整型:0
浮点型:0.0
字符型:'\u0000'
布尔型:false
引用型:null
数组的动态初始化:
1.声明,创建和初始化分开:
int[] array; //声明存放int型数据的数组carry
array= new int[2];//创建了长度为2的int型数组
array[0]=100;
array[1]=200;
非法的访问:array[2];会报ArrayIndexOutofBoundException异常
2.同时声明,创建和初始化:
int[] array =new int[]{100,200};
int [] array;
array=new int[]{100,200};
2)int[] array={100,200};
错误用法:int[] array; array={100,200}
使用数组:
语法:数组名[元素下标] 例:array[0] 或array[1]
元素下标:0~length-1 length表示数组长度
遍历数组的方法:
int[] a=new int[5];
for(int i=0;i System.out.print("iArray["+i+"]="+iArray[i]+"\t"); } System.out.println(); 多维数组 java中都是一维数组,多维数组就是数组的数组,最多可以 定义255维 1.对称数组:即矩阵 int[][] array=new int[2][3];//创建一个两行散列的数组 array: * * * * * * array.length=2; array[0].length=3;array[1].length=3; 2.非对称数组:锯齿形 int[][] array=new int[3][]; array[0]=new int[2]; array[1]=new int[5]; array[2]=new int[1]; * * * * * * * * int[][][] array=new int [][][]; 多维数组的遍历:多层循环 练习打印10行杨辉三角形 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 分析: 1)如果j=0||i=j,打印1 2)[i][j]=[i-1][j]+[i-1][j-1]; 数组拷贝arraycopy(); System.arraycopy(from,fromIndex,to,toIndex,length) from: source array fromIndex:the begin copy position of source array to:destination array toIndex:the begin copy position of destination array length: the elements numbers to be copied of source array 第五章 Objects & Classes OOP——Object Oriented Programming 三大特性: 1.封装 目的:实现信息隐藏 2.继承 子类继承父类的属性和行为,同时子类可以拥有自己特有的属性和行为;子类和父类之间一定要满足“is a”的语义关系: 动物猫狗鸟 错误:儿子继承父亲 3.多态 例:球类——play() 篮球——play():用手来完成 足球——play():用脚来完成 对于不同的对象,相同的操作导致不同的结果。 类和对象: 类:对某一事物的属性和行为抽象的过程就形成了类 JAVA当中就是class(属性attribute,行为method) 例:人购买汽车 public class Person{ ... public void buy(Car){...} } 对象:类的实例 练习:Person{ String name; boolean gender; int age; //methods display(){} addAge(int num){} } 用法:A a=new A(20);构造器的调用方法是new 普通方法的调用: a.add(5) 参数传递: 1.传递的是基本数据类型 2.传递的是引用类型 一、封装 1.属性信息的隐藏:private修饰属性 2.方法的实现细节要隐藏 this :当实例变量和局部变量同名时,通过this可以访问实例变量。this指向当前量。 方法的重载overloading 1)在一个类内部; 2)定义了多个同名的方法; 3)方法的参数个数或类型一定不相同; 4)返回类型可以相同也可以不同 例:System.out.println("haha"); println(String) System.out.println(1); println(int) System.out.println(1.2345); println(double) print(10); print(1.13);printInt(10) 创建和初始化对象 new Person(); 1.分配内存空间; 2.为对象的成员变量(属性)进行默认初始化 name=null; gender=false ; age=0; 3.如果有显式初始化,以初始化的值为属性赋值 name="unknown"; gender=true ; age=18; 不灵活,所有对象拥有统一的属性值 4.调用构造器 当属性值不确定时,通过构造器进行初始化 构造器的重载: 提供多种初始化的方案 1)调用另一构造器用this(param_list),可以简化代码 2)构造函数中的this语句必须是第一条语句 练习构造Student类 属性: int code;// 学号 String name; boolean gender; int age; 要求: 1)提供多种初始化方案 2)当name为null是,赋值“unknown” 3)当age<6或age>40 ,age赋值18 4)学号code<0,code 赋值1000 继承 语法:subclass extends superclass 注:只能单继承!不支持多继承 讨论 属性,方法和构造器?哪些被子类继承,哪些不被继承? 1)私有的属性方法不能被继承 2)构造器不能被继承!但是子类可以调用父类构造器 SUPER: 1)子类构造器中通过super调用父类的构造器,super语句要放在构造方法的第一句 2)子类没有显式调用父类构造器时,java虚拟机会默认调用父类的无参构造器,相当于第一句就执行:super(); 3)当子类和父类的方法同名时,子类可以通过super.methodname()调用父类的同名方法 多态: 对于不同的对象,相同的操作导致不同的结果,运行时动态决定调用的对象和方法。 多态存在的三个必要条件: 1)要有子类继承父类; 2)要有方法的重写; 3)要有父类的引用指向子类的对象 Casting:大类型转换给小类型,要进行强制类型转换 语法(目标类型)要转换的变量 强制转换的原则: 要转换的引用型变量的动态类型一定是转换后的类的自身或者是其子类 如何避免类型间的任意转换? ————instanceof:boolean类型操作符,结果为true或false 用法:引用型变量 instanceof 类名 说明:判断前面的引用型变量的动态类型是否是后面的类自身或其子类Overridden重写(覆盖) ——发生在子类和父类之间(与overloading不同) 1)方法名相同,参数列表相同,返回类型相同 注:编译器认为子类试图覆盖父类的同名方法,所以要求与父类的方法具有相同的参数列表和返回类型; 2)可见范围不能被缩小; 举例:父类的方法为public,子类的同名方法只能是public 3)异常不能被扩大 也就是子类方法抛出的异常必须和父类方法抛出的异常相同,或者是该异常的子类。Exception 第六章高级特性 1.static修饰符:修饰变量,方法和初始化的代码块 2.final 修饰符:修饰类方法和变量 3.访问权限控制:public protected (default)private 4.抽象类和接口: 5.内部类 6.集合Collection 7.反射Reflection Static 1.修饰变量———只修饰成员变量 类的所有对象都共享 Person(name,age,gender),maxAge=120 class Person{ String name; private static int maxAge=120; } Person.maxAge; 用法:类名.变量名 2.修饰方法——静态方法 不操作实例变量的方法可以定义为静态方法 1)只能访问静态变量和静态方法,不能访问非静态的实例变量,因为实例变量都要依赖于具体的对象 2)不能被子类覆盖成非静态的,父类的static方法,必须被子类覆盖成static的:举例: class Super{ public static void test(){} } class Sub extends Super{ public static void test(){} } 用法:类名.方法名 Super.test(); Sub.test(); 例:int i=Integer.parseInt("3") Integer inter= new Interger(); inter.parserInt("3"); 3.修饰初始化代码块——静态代码块 public class A{ static{ //静态代码块,一定要static加括号括起来 //code } static {//code} public void test(){//code} } A a=new A();a.test(); 表示静态代码块中的代码只被执行一次,在装入内存时就执行(class loader时),以后不会再执行;允许存在多个,编译器会合并执行。 举例:public class StaticDemo{ private static Student s;//需要一次性初始化 static{ //只执行一次 s=new Student(); s.setName(""); s.setAge(18); } } Final 修饰符: 1.修饰变量——常量 一旦被赋值就不能被修改 static final: Math.PI 2.修饰方法: 该方法在子类中只能被继承,不能被覆盖 3.修饰类 Final修饰的类不能被继承 问:Employee 员工有基本工资baseSalary=1000; 访问权限控制: 1)public:最大访问权限,无访问限制 2)protected 3)(default):包内私有 4)private object 是所有class的祖先类,默认继承该类 方法: 1)==:比较的是两个对象的引用(地址)是否相同 2)equals(Object o):比较的是两个对象的类型和内容是否相同 String s1 = new String("abc"); String s2 = new String("abc"); s1.equals(s2)===>true! Employee emp1 = new Employee("linda",false,3000); Employee emp2 = new Employee("linda",false,3000); emp1==emp2 ?===>false emp1.equals(emp2) true? false? 注:对于自定义的类的比较,需要重写equals方法 2)toString()方法:打印输出对象的属性信息 对于自定义的类,需要重写该方法 注:System.out.println(object)===>调用了object.toString()方法 emp.display() 抽象类 Abstract class: 不能被实例化(抽象类中不一定要有抽象方法;有抽象方法的类一定要定义为抽象类)例:abstract class A{ //code } 错误用法:A a =new A(); A a;//可以声明A的引用变量 例:Ball 类 Animal 类 对于实例化对象没有意义的类,通常设计为抽象类,将方法的实现 放在具体的子类中 设计目的:通过抽象类的引用型变量,可以操作具体的子类对象(多态) 接口Interface: public interface A{ //method declare } public class B implements A{ //要对A接口中的方法提供实现 } 1)接口中所有的方法默认都是抽象的 public void test(); 2)不能实例化: A a=new A(); 可以声明该类型的引用变量: A a; 3)如果出现变量,都是静态常量(static final):A.*** 4)接口间接地实现了多继承: 用法: class A implements B,C{}//类可以实现多个接口 interface D extends B,C{} 问:接口可以继承类么? NO!!!只能具体类继承抽象 知识点: (1)抽象类中不一定要有抽象方法; (2)有抽象方法的类必须定义为抽象类 (3)抽象类的子类必须实现抽象类中定义的抽象方法 (4)abstract 和 final 不能同时修饰一个类 数据结构的遍历 迭代器Iterator 1)hasNext:判断下一个元素是否存在,存在return true,否则false 2)next():返回数据结构中的下一个元素 3)remove():删除当前指向的元素 迭代器负责的是遍历的算法问题,每种数据结构实现的机制不同,而迭代器提供了统一的接口,实现统一的便利操作。 内部类: 把一个类定义在另一个类里面 1)缩小类的使用范围,使其应用范围比包还小,可以只在一个类的内部或者方法内部甚至表达式内部应用 2)减少命名冲突,可以在不同的类中定义同名的类; class A{ class B{} } class C{ class B{} } 3)内部类可以访问外部类的私有语法成分 内部类分类: 1.静态内部类(嵌套内部类)---参考普通类的静态属性或静态方法 1)定义在类的内部 2)不依赖于外部类的对象,可以独立构建; 3)只能访问外部类的静态语法成分 2.成员内部类---参考类的成员变量或方法 1)定义在类的内部, 2)紧密依赖于外部类对象,不能独立构建 3)可以访问外部类的所有语法成分 3.局部内部类---参考局部变量 定义在方法的内部,只能在该方法内用 4.匿名内部类 定义在方法的内部,只能一次性在该方法内应用 1.静态内部类 class Outer{ private int j; private static int i; void method(){ B b=new B();//在外部类中访问内部类 } static class B{ j=30;//错误 i=50;//可以访问外部类的静态变量 } } 用法: 1)在外部类中创建内部类的对象:B b =new B(); 2)在类的外部创建该静态内部类(要求该静态内部类非私有) Outer.B b=new Outer.B(); 问:Outer o =new Outer(); //只创建了外部类对象 练习:给定一个数组,数组中存放了一系列整数,要求一次性从该数组中获取最大值和最小值。 分析:一次遍历要同时返回最大值和最小值,需要将返回值包装成一个对象MaxMin 2 成员内部类----把static去掉。和静态内部类的区别 1)成员内部类紧密依赖于外部类对象 2)成员内部类可以访问外部类的任何语法成分 class Outer{ class B{ public void method(){} Outer.this.method();//访问外部类的同名方法 } void method(){} } 用法: 1)在外部类中:B b =new B(); 2)在外部类的外部: a)声明:Outer.B b b)创建:(new Outer()).new Outer.B(); 注:创建成员内部类,需要先创建外部类对象 3.局部内部类:进一步缩小使用范围 1)也能访问外部类的所有语法成员 2)只能访问局部常量:final修饰的局部变量 3)不加public protected private static 修饰符,因为只能在方法内部使用,修饰符无意义 4.匿名内部类---把局部内部类的名字去掉 1)定义在方法内部,只允许在该方法内使用一次 2)定义时无类名,无构造器,无class,extends和implements关键字 3)借用父类或接口的名称 应用:通常都会继承一个父类或实现一个接口 Iterator iter = new Iterator(){//inner class code}; 应用最广泛的内部类:成员内部类和匿名内部类 举例: class 汽车装配厂{ void 装配(){ class 汽车发动机{} } } 包装器类 rapper Class: ----提供基本数据类型的包装类 1)作为和基本数据类型对应的类类型存在,方便涉及到对象的操作 2)提供了数值型和字符串类型间的转换,应用方便 3)集合中存放的数据都是引用类型 用法:jdk1.5之前,以Integer为例其他都一样 1.显示装箱boxing----将基本数据类型包装成对象 例:int i=30; Integer inte=new Integer [i]; int inte = new Integer("38"); 2.显示开箱unboxing----将对象转换为基本数据类型 例: int i= inte.intValue(); int k=Integer.parseInt("555");//将String直接转为int jdk1.5之后,支持自动装箱和开箱 Integer inte=30;//自动装箱 int k=inte;//自动拆箱 int i =new Integer(5);//自动拆箱 Collection集合 -----对数据结构的实现,存储和管理一组对象的对象 要求: 1)理解常用数据结构的特点 2)会查看API 3)对集合能进行增删改查的操作 包:java.util,需要import 集合框架中的接口: Collection----存储和管理没有依赖关系的一组对象,这些对象各自独立 |-----List----数据按照顺序存放,以索引号方式存取,允许对象重复,允许对象为null |-----Set----数据不允许重复,不允许为null |-----SortedSet-----在Set的基础上提供排序功能 Map----以键值对的形式管理一组成对的对象 key~value |----SortedMap----具有排序功能的Map 常用接口的实现类: Collection:没有实现类 ,Collection c; List 实现类 |----ArrayList:以数组的形式存储数据,修改低效,查找高效 |----LinkiedList:链表以双向链表的形式存储数据,查找低 效,修改高效 |----Vector:线程安全的ArrayList Set实现类: |----HashSet:数据不重复,不为空 SortedSet实现类 |----TreeSet:通过自定义比较器进行排序 HashSet: 思考:如何比较HashSet中的对象是否重复? 练习结论: 1)输出的数据和放入的数据顺序不同,说明Set中的数据是无序的 2)只重写了equals方法,重复的对象依然被加入了Set中 解决方法:对于自定义的类,需要重写hashCode 方法 SortedSet:具有排序功能的Set 实现类:TreeSet Map----键值对方式存储数据,key~value Account更适合采用Map存储数据,code设置为key Hashtable:线程安全的Hashmap Hashmap:线程不安全的,类似ArrayList和Vector SortedMap实现类 TreeMap:提供了排序功能 反射Reflection 实现对象——(抽象)——>; package import class/interface:修饰符,标识符————Class { 属性:修饰符,标识符,类型-----Field 构造器:修饰符,参数列表————Constructor 方法:修饰符,标识符,放回类型,参数列表,异常信息 } Java反射机制的核心: 就是允许在运行时取得已知名字的class类的相关信息,动态创建该类,并调用其方法或修改其属性(甚至是声明为private的属性和方法) 运行的应用: 1)运行时判断一个对象所属的类; 2)运行时创建任意一个类的对象; 3)运行时判断任意一个类所具有的成员变量和方法; 4)运行时调用任意一个类的方法 类如何应用? 1)创建类的实例对象 2)为属性赋值 3)调用该对象的各种方法 类的镜像——https://www.doczj.com/doc/57433983.html,ng.Class 如何获得类的镜像: 1)如果知道类名:类名:class 例:Class c1=String.class; Class c2=int.class; 2)只知道引用类型变量里放的某个对象: 对象名.getClass() 例:String str="abc"; Class c=str.getClass 3)只知道字符串给出的类名: public static void main(String[] args){...} 语法:Class.forName(String) 例:Class c=Class.forName("https://www.doczj.com/doc/57433983.html,ng.String"); 成员变量的镜像——https://www.doczj.com/doc/57433983.html,ng.reflect.Field 方法的镜像——https://www.doczj.com/doc/57433983.html,ng.reflect.Method 构造器的镜像——https://www.doczj.com/doc/57433983.html,ng.reflect.Constructor https://www.doczj.com/doc/57433983.html,ng.reflect.Array 反射的具体应用: 1)通过类的镜像可以得到类的原始信息 2)在程序运行时,通过类名动态创建对象(不是编译时) 3)破坏封装: 通过反射机制可以获得类的私有特性(成员变量/方法/构造器)第七章 异常Exception 程序在正常执行过程中遇到的意外,会打破程序正常的流程 例:1)ArrayIndexOutofBoundException数组访问越界异常 2)除以0:ArithmeticException算数异常 异常的基本概念 1)异常发生的条件:内因+外因 2)异常的发生: a)导致程序的正常流程发生改变 b)在其发生的位置,会抛出异常 例:下班; try{ 取钱; }catch(撞车){修车;} 超市购物; 回家睡觉; 3)异常发生后的处理: 捕获——>处理;或在发生不处理,向后抛出,但最终需捕获处理 异常的语法: 捕获异常: try{ ... }catch(Exception e){ ... } 1)异常也是类,可以自己编写 2)当捕获多个异常时,按先后顺序捕获,对于异常间有继承关系时,一定要先捕获子类再捕获父类 子异常MyFirstError 继承父异常MySecondError 3)finally 表示不管是否发生异常,都要最终执行 异常的传播: 异常在它发生的位置会一级级向上抛出,抛出的路径叫异常的传播栈; 在该传播路径的任何一个点上都可以捕获处理,异常一旦被处理,则它的上层调用者不再受影响,若不处理会最终抛给JVM,导致程序异常终止。 如何获取异常的传播信息: 1)getMessage():返回字符串,简单描述异常的信息 2)printStackTrace():打印输出异常的传播路径 异常的层级结构: 祖先类Object Throwable 1)Error 不是程序本身的错误,由外部因素引发 如:申请内存,内存耗尽,程序无法恢复,直接终止 2)Exception 程序自身的逻辑错误,可以进行处理:所有java的异常类都是继承自Exception; 如:ATM取款,金额超出余额时,期待提示信息 通常需要自定义异常类 --------RuntimeException:属于程序无法自我恢复的异常(也叫uncheckedException),通常try/catch无意义 如:Student s=null;s.display() --------所有除RuntimeException以外的异常,都是checked exception,可以用try/catch 进行处理,不影响程序的正常进行 常见unchecked exception 1.ArithmeticException:除以0 2.NullPointerException:空指针异常 行测总结笔记-学霸笔 记-必过 现在开始 资料分析 之所以把资料分析放在第一,是因为本人以前最怕资料分析不难但由于位于最后,时间紧加上数字繁琐,得分率一直很低。而各大论坛上的普遍说法是资料分析分值较高,不可小觑。有一次去面试,有个行测考90分的牛人说他拿到试卷先做资料分析,我也试过,发觉效果并不好,细想来经验因人而议,私以为资料分析还是应该放在最后,只是需要保证平均5分钟一篇的时间余量,胆大心细。 一、基本概念和公式 1、同比增长速度(即同比增长率)=(本期数-去年同期数)/ 去年同期数x100% =本期数/去年同期数-1 显然后一种快得多环比增长速度(即环比增长率)=(本期数-上期数)/上期数=本期数/上期数-1 2、百分数、百分比(略) 3、比重(略) 4、倍数和翻番 翻番是指数量的加倍,翻番的数量以2^n次变化 5、平均数(略) 6、年均增长率 如果第一年的数据为A,第1年为B 二、下面重点讲一下资料分析速算技巧 1、÷(1)≈b×(1)结果会比正确答案略小,记住是略小,如果 看到有个选项比你用这种方法算出来的结果略大,那么就可以选;比它小的结果不管多接近一律排除;x越小越精确 ÷(1)≈(1)结果会比正确答案略小,x越小越精确 特别注意: ⑴当选项差距比较大时,推荐使用该方法,当差距比较小时,需验证 ⑵增长率或者负增长率大于10%,不适用此方法 2、分子分母比较法 ⑴分子大分母小的分数大于分子小分母大的分数 ⑵差分法★ 若其中一个分数的分子和分母都大于另外一个分数的分子和分母,且大一点点时,差分法非常适用。 例:2008年产猪6584头,2009年产猪8613头,2010年产猪10624头,问2009与2010哪一年的增长率高 JBPM工作流演示系统使用说明 安装讲明 本系统在JDK1.5的基础上编译,请选择支持JDK1.5及以上版本的WEB 容器,举荐使用Tomcat5.5,不保证与其他WEB服务器兼容,理论上应该可不能显现兼容性咨询题。 如果要编辑源代码,请使用Eclipse3.3+MyEclipse6.0版本,JBPM版本为3. 2.3,其他版本可能会显现文件无法打开或编译的情形。 本系统在Spring2.0+Struts1.2+Hibernate3.1基础上构建,与低版本不兼容。 数据库为MySql5.0,编码采纳utf-8。 系统架构 功能讲明 本应用要紧用于演示JBPM工作流的使用,数据均储备在数据库中,包括两大模块:权限操纵和流程操纵。权限操纵模块是为流程操纵模块服务的,为了讲明在实际应用中如何动态指定审批执行者。但实际上其代码量并不比工作流的代码少。 流程图 功能详解 1、创建请假条 创建请假条时必须输入请假天数和请假缘故,系统会对数据进行检查。同时,会自动显示当前有效的审批人,包括经理审批和老总审批。审批者是能够自定义的,而且只有一个有效,其他自动设为无效。有效的审批设置自动显示在新建请假条页面。 2、送审 新建请假条后,如果数据输入无误,自动跳转到“送审请假条”页面,该页面显示所有刚刚定义的请假条,可用操作有“送审”、“重写”。每个请假条的详细信息以列表形式显示。 术语讲明: 送审:请假条定义后,请假条处于等待审批状态,要点击“送审”按钮流程才会往下走,即交给经理审批。 重写:如果输入的信息有出入,能够点此按钮编辑请假信息。进入重写页面后,将显示该请假条在什么时候编辑过。如下图: 3、我发起的所有任务 现在开始 资料分析 之所以把资料分析放在第一,是因为本人以前最怕资料分析不难但由于位于最后,时间紧加上数字繁琐,得分率一直很低。而各大论坛上的普遍说法是资料分析分值较高,不可小觑。有一次去面试,有个行测考90分的牛人说他拿到试卷先做资料分析,我也试过,发觉效果并不好,细想来经验因人而议,私以为资料分析还是应该放在最后,只是需要保证平均5分钟一篇的时间余量,胆大心细。 一、基本概念和公式 1、同比增长速度(即同比增长率)=(本期数-去年同期数)/去年同期数x100% =本期数/去年同期数-1 显然后一种快得多 环比增长速度(即环比增长率)=(本期数-上期数)/上期数=本期数/上期数-1 2、百分数、百分比(略) 3、比重(略) 4、倍数和翻番 翻番是指数量的加倍,翻番的数量以2^n次变化 5、平均数(略) 6、年均增长率 如果第一年的数据为A,第n+1年为B 二、下面重点讲一下资料分析速算技巧 1、a=b÷(1+x%)≈b×(1-x%)结果会比正确答案略小,记住是略小,如果看到有个选项比 你用这种方法算出来的结果略大,那么就可以选;比它小的结果不管多接近一律排除; x越小越精确 a=b÷(1-x%)≈bX(1+x%)结果会比正确答案略小,x越小越精确 特别注意: ⑴当选项差距比较大时,推荐使用该方法,当差距比较小时,需验证 ⑵增长率或者负增长率大于10%,不适用此方法 2、分子分母比较法 ⑴分子大分母小的分数大于分子小分母大的分数 ⑵差分法★ 若其中一个分数的分子和分母都大于另外一个分数的分子和分母,且大一点点时,差分法非常适用。 例:2008年产猪6584头,2009年产猪8613头,2010年产猪10624头,问2009与2010哪一年的增长率高 答:2009增长率8613/6584-1 ,2010增长率10624/8613-1,-1不用看,利用差分法 资料分析笔记整理 一.资料分析基础概念与解题技巧 1.资料分析核心运算公式 2.资料分析常用基本概念 3.资料分析速算技巧 二.资料分析高频高点梳理 1.ABR类问题 2.比重类问题 资料分析基础概念与解题技巧 一、基期、本期 基期,表示的是在比较两个时期的变化时,用来做比较值(基准值)的时期,该时期的数值通常作为计算过程中的除数或者减数; 本期,相对于基期而言,是当前所处的时期,该时期的数值通常作为计算过程中的被除数或者被减数。 【注】和谁相比,谁做基期。 二、增长量、增长率(增长速度、增长幅度) 增长量,表示的是本期与基期之间的绝对差异,是一绝对值。 增长率,表示的是末期与基期之间的相对差异,是一相对值。 增长率=增长速度(增速)=增长幅度(增幅) 【注】在一些“最值”比较题的题干表述中,经常出现“增加(长)最多”和“增加(长)最快”,我们需要注意,前者比较的是增长量,而后者则比较的是增长率。 三、同比、环比 同比和环比均表示的是两个时期的变化情况,但是这两个概念比较的基期不同。同比,指的是本期发展水平与历史同期的发展水平的变化情况,其基期对应的是历史同期。 环比,指的是本期发展水平与上个统计周期的发展水平的变化情况,其基期对应的是上个统计周期。 【注】环比常出现在月份、季度相关问题。 四、公式运用与练习 资料分析的考察离不开对于两个时期的数值的比较,由此得出四个概念, 即基期(A),本期(B),增长率(R),增长量(X)。 增长量=基期量*增长率=本期量-基期量=本期量-本期量/1+增长率 增长率=增长量/基期量=(本期量-基期量)/基期量=本期量/基期量-1 本期=基期+增长量=基期+基期*增长率=基期*(1+增长率) 基期=本期-增长量=本期/1+增长率 【习题演练】 【例一】2012年1-3月,全国进出口总值为8593.7亿美元,同比增长7.3%,其中:出口4300.2亿美元,增长7.6%;进口4293.6亿美元,增长6.9%。3月当月,全国进出口总值为3259.7亿美元,同比增加216亿美元,其中:出口1656.6亿美元,增长135.4亿美元;进口1603.1亿美元,增长5.3%。 1、2011年一季度,全国进出口总值约为多少? 2、2012年一季度,全国出口额同比增长多少? 3、2011年三月份,全国进出口总值约为多少? 4、2012年三月份,全国出口总值同比增速约为多少? 【注】进出口相关问题,为资料分析中的一个易错点,注意题目中进出口、进口、出口的表述,注意进出口量与进出口额的不同,理解顺差、逆差的含义 出口-进口=顺差,反之则是逆差 2、资料分析常用基本概念 一、百分数、百分点 百分数,表示的是将相比较的基期的数值抽象为100,然后计算出来的数值,用“%”表示,一般通过数值相除得到,在资料分析题目常用在以下情况:(1)部分在整体中所占的比重;(2)表示某个指标的增长率或者减少率。 百分点,表示的是增长率、比例等以百分数表示的指标的变化情况,一般通过百分数相减得到,在资料分析题目常用在以下情况:(1)两个增长率、比例等以百分数表示的数值的差值;(2)在A拉动B增长几个百分点,这样的表述中。【例1】2010年,某省地区生产总值达到6835.7亿元,比去年同期增长14.9%。其中,第一产业增加值为483.5亿元,比去年同期增长25.8%,第二产业增加值为2985.6亿元,同比增长12.5%。 1、2010年,该省第一产业增加值占地区生产总值的比重为()。A.12.63% B.12.63个百分点 C.7.07% D.7.07个百分点 2、2010年,该省第一产业增加值同比增速比第二产业增加值增速高()。A.13.3% B.13.3个百分点 C.14.3% D.14.3个百分点 二、倍数、翻番 倍数,指将对比的基数抽象为1,从而计算出的数值。 翻番,指数量的加倍,如:如果某指标是原来的2倍,则意味着翻了一番,是原来的4倍,则意味着翻了两番,依此类推。所用的公式为:末期/基期=2n,即翻了n番。 【注】注意“超过N倍”“是xx的N倍”两种说法的区别。超过N倍,说明是基数的N+1倍。 1.工作流与JBPM 开发实例 前几天发了一篇文章,没几个人看也没人留言,看来我这功夫差的还是远啊,今天来一个实际点的吧。可能上回的废话太多。说说这个jbpm应该怎么来用。 首先当你想学一个框架的时候一定是你要有项目来用他了,OK,那么你项目当中的流程是什么你应该清楚吧,那么当你清楚了这些的时候我们就开始我们这个最简单的例子吧。 假如我们现在有这么一个例子,公司员工想报销点出差费,那么他要将他的申请提交给他的第一级领导——部门主管去审批,然后部门主管审批完了之后还要交给这个部门主管的上级公司老总进行审批。那么针对这个简单的流程,我们应该从哪里下手呢? 首先第一件事情就是写流程定义文件,那么这个文件我们用什么来写呢,他就是一个符合某个语法的xml文件,幸运的是jbpm给我们提供了一个集成的开发环境让我们来用。 首先去官网上下一个jbpm-jpdl-suite-3.2.GA包,解压后你会发现他里面有一个designer文件夹,那个里面就是我们写流程定义文件的开发环境,他是一个eclipse的插件,但是好像他给我们的那个eclipse版本有问题,建议大家从新下一个eclipse-SDK-3.2.1-win32.zip这个版本的eclipse,然后覆盖他给我们提供的那个。 准备工作做完了,那么我们就开始吧,首先我们打开解压目录下的designer 文件夹中的designer.bat文件,他弹出一个eclipse,然后我们就用这个东西来开发我们的流程定义文件了。 打开之后你就会看见一个他的小例子,不过我们不去用他,我们自己新建一个工程。右键-new-other-jBoss jbpm-process project。这个时候你会看见他弹出一个对话框,输入你的工程名字,然后点击next,这个时候你会发现他已经把jbpm加载进去了,记住要选中Generate simple ......。 工程建立完了,我们开始建立我们的流程定义文件。在工程里面你会发现src/main/jpdl这个source folder,然后你会看见他里面已经有了一个流程定义文件了,但是我们不去用他的,我们自己建立一个,右键src/main/jpdl,然后new-other-jBoss jbpm-process definition。这个时候他就会弹出一个对话框,起一个你要写的流程定义文件的名字输入进去,OK,可以了。这个时候你打开你建立的那个文件夹,里面就有processdefinition.xml文件,ok,打开他。 在右面的图里面你就可以看到一张什么都没有的白纸,我们看看这部分左面的那些东西,什么start啊,end啊,tasknode啊,fork啊,join啊。那我们来解释一下这是个什么东西呢,我们看看我们的需求,员工要写一个报销单,然 2017年公务员考试行测资料分析状元笔记通用阅读——上看标题,下看注释,中间看时间,单位(重点) 1文字性材料——难的是阅读(结构阅读是重点) 文字性材料阅读结构和中心 结构几段落——总分和并列—并列部分找中心词(圈点标点,括号标结构,圈标中心词)无结构小段,就仔细阅读,创造结构(圈点标点,标点暗示结构,括号标结构,圈标中心词)无结构大段,就直接读题—找两个关键词——区分性(平均气温),明显性(符号数字字母,例如括号,摄氏度,顿号之类的)——2007年底比2007年更合适 多个题目涉及同一个关键词的,可以一起做 2表格型材料——难的是计算 阅读横标目和纵标目 分清合计和项目和地区 3图形型材料——难的是理解 饼状图——看周围类别名称(包括大小的排名要心中有印象) 柱状趋势图——看横轴和纵轴(要注意两个纵轴的分别对应柱状和点) 柱状分两种:一种是绝对值(高低差异),一种是比例(高低相同,柱状分几个部分) 4统计术语(不是重点) 增长率是属于后一年(所以第一年的增长率是算不出来的) 前一年的总量=后一年除以(1+增长率)后一年除以(1-增长率) 增长率的对比(很容易会出隔两年的总量,倒推2次):增长率增长或降低了5个百分点(直接加减) 乘以2看成除以5 乘以5看成除以2 乘以25看成除以4 除以125看成乘以8 同比是与上一年的同一期相比较 环比是挨着的相同时间段相比较 同比和环比:如果有注释按注释为准 今年5月份环比=今年4月份 今年5月份同比=去年5月份 5统计性数据的要素——时间和单位(重点) 1时间表述(陷阱)——对时间很敏感 1.计算的年份不一样 2.计算的时间段不一样 2单位表述(陷阱)——对单位很敏感 1.饼状图有单位,就不是百分比 相比较的数据的单位不一样(注意是百分号还是千分号。年利率往往用百分,月利率用千分之) 2.计算的单位不一样 下列选项一定正确和一定错误的题目是最难的,可以放在最后做。 jBPM4.4 一、什么是jBPM JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上。 java Business Process Management :工作流,工作流引擎 注:记得j小写,因为j代表java,与Log4j中j一样 工作流管理系统不止一中,如还有Intaliol BPMS …但JBoss jBPM灵活性且扩展性高。 jBPM项目于2002.3由Tom Baeyens 发起,2003.12发布1.0版本,2004年10.18发布 2.0,并在这天加入了JBOSS组织-→被RedHat公司 二、能干什么 提供工作流的实现,帮助更好的进行BPM 三、jBPM有什么,简介jBPM的Service API 各种服务 1:ProcessEngine:流程引擎。并不负责具体的业务,而是用于获取各种Service。 2:RepositoryService:流程资源服务的接口,如流程定义发布、查询、删除等。 3:ExecutionService:用于操作流程实例的服务,可以进行流程实例发布、查询、流程推进、设置流程变量等操作。 4:TaskService:用于操作人工任务的服务,可以进行任务创建、查询、获取、提交完成、保存、删除等操作。 5:HistoryService:用于操作流程历史的服务,提供对流程历史库(就是已经完成的流程实例)的操作。比如:历史流程实例,历史活动实例等。 6:IdentityService:用于操作用户、用户组以及成员关系的服务 7:ManagementService:流程管理控制服务的接口,只提供异步工作(Job)相关的执行和查询操作。 四、Myeclipse8.5 搭配开发环境 1.jbpm-4.4.zip 下载完 2.myeclipse→help→Myeclipse Configuration Center →add……. 3.找到\jbpm- 4.4\install\src\gpd\jbpm-gpd-site.zip 安装这个插件 4.记得不要联网安装,不要选source文件 5.安装完后window→JBoss jBPM→runtime Location→add 添加jbpm的路径 6.添加lib下所有jar包,如果你使用的是tomcat6.0则:要把 Juel-api.jar ,juel-impl.jar,juel-engine.jar 拷到tomcat lib 下并把原来的el-api.jar删掉 项目中就不要再导上面三个包 五、修改配置文件 1、将example中的下列配置文件拷贝到java项目的src目录下: jBPM.cfg.xml、jBPM.hibernate.cfg.xml、jBPM.mail.properties、 jBPM.mail.templates.xml、process_forms.css 2、在以上配置文件中的jBPM.hibernate.cfg.xml,实际上就是我们熟悉的 hibernate.cfg.xml,这里,要修改为连接我们的数据库。 资料分析笔记整顿 一.资料分析基本概念与解题技巧 1.资料分析核心运算公式 2.资料分析惯用基本概念 3.资料分析速算技巧 二.资料分析高频高点梳理 1.ABR类问题 2.比重类问题 资料分析基本概念与解题技巧 一、基期、本期 基期,表达是在比较两个时期变化时,用来做比较值(基准值)时期,该时期数值普通作为计算过程中除数或者减数; 本期,相对于基期而言,是当前所处时期,该时期数值普通作为计算过程中被除数或者被减数。 【注】和谁相比,谁做基期。 二、增长量、增长率(增长速度、增长幅度) 增长量,表达是本期与基期之间绝对差别,是一绝对值。 增长率,表达是末期与基期之间相对差别,是一相对值。 增长率=增长速度(增速)=增长幅度(增幅) 【注】在某些“最值”比较题题干表述中,经常浮现“增长(长)最多”和“增长(长)最快”,咱们需要注意,前者比较是增长量,而后者则比较是增长率。 三、同比、环比 同比和环比均表达是两个时期变化状况,但是这两个概念比较基期不同。 同比,指是本期发展水平与历史同期发展水平变化状况,其基期相应是历史同期。 环比,指是本期发展水平与上个记录周期发展水平变化状况,其基期相应是上个记录周期。 【注】环比常出当前月份、季度有关问题。 四、公式运用与练习 资料分析考察离不开对于两个时期数值比较,由此得出四个概念, 即基期(A),本期(B),增长率(R),增长量(X)。 增长量=基期量*增长率=本期量-基期量=本期量-本期量/1+增长率 增长率=增长量/基期量=(本期量-基期量)/基期量=本期量/基期量-1 本期=基期+增长量=基期+基期*增长率=基期*(1+增长率) 基期=本期-增长量=本期/1+增长率 【习题演习】 【例一】1-3月,全国进出口总值为8593.7亿美元,同比增长7.3%,其中:出口4300.2亿美元,增长7.6%;进口4293.6亿美元,增长6.9%。3月当月,全国进出口总值为3259.7亿美元,同比增长216亿美元,其中:出口1656.6亿美元,增长135.4亿美元;进口1603.1亿美元,增长5.3%。 1、一季度,全国进出口总值约为多少? 2、一季度,全国出口额同比增长多少? 3、三月份,全国进出口总值约为多少? 4、三月份,全国出口总值同比增速约为多少? 【注】进出口有关问题,为资料分析中一种易错点,注意题目中进出口、进口、出口表述,注意进出口量与进出口额不同,理解顺差、逆差含义 出口-进口=顺差,反之则是逆差 2、资料分析惯用基本概念 一、百分数、百分点 百分数,表达是将相比较基期数值抽象为100,然后计算出来数值,用“%”表 jBPM,全称是Java Business Process Management,是一种基于J2EE 的轻量级 工作流管理系统。 一、介绍下大背景工作流的应用市场部分内容就不提了。首先提一下目前工作流域 的两种主流方向 1、workflow 。 代表osworkflow 等。 workflow 的特点为:其主要侧重于对流程的处理模型方面,也就是说它关注的重心是流程的处理 2、BPM商业逻辑流程模型 BPM的重心为商业逻辑流程模型的处理 其中以JBPM为代表 这是两者最大的区别,也就是切入点不同。不过对我们实际应用来说,选哪个区别都不是很大说到工作流就要提到WFM组织,这个组织是国际上一些厂商组成的一个工作流的组织,该组织给出了一个他们自己定义的工作流的定义,及XPDL语义。 该定义将工作流的定义包括为至少以下五部分内容: 1、工作流过程活动 2、转移信息 3、参与者声明 4、外部应用程序声明 5、相关数据 并给出了标准的语法来描述上述元数据 1:workflow process 2:activity 3:transition 4:application 5:date field 由于JBPM不符合上述语法定义,因此JBPM是不符合该WFM规范的不过上述每部分内容在JBPM都有自己的定义来描述 二、JBPM流程的一个基本的处理步骤 1、加载(发布)流程定义 2、启动流程 3、处理任务 4、记录流程的相关状态 1、加载(发布)流程定义 这个意思是,我们通过jbpm 的designer 插件,或者是用其他工具,制定出processDefinition (可以是String ,可以是包文件,也可以是流数据等),然后将其加载到应用中的过程。这个加载可以是写入内存中,或者是直接 写入数据库等 2、启动流程 注:红色的表为经常使用的表.这里不使用JBPM自己的权限角色定义. 整体说明: JBPM4_DEPLOYMENT 流程定义表 JBPM4_DEPLOYPROP 流程定义属性表 JBPM4_EXECUTION 流程实例表 JBPM4_HIST_ACTINST 流程活动(节点)实例表 JBPM4_HIST_DETAIL 流程历史详细表 JBPM4_HIST_PROCINST 流程实例历史表 JBPM4_HIST_TASK 流程任务实例历史表 JBPM4_HIST_VAR 流程变量(上下文)历史表 JBPM4_ID_GROUP 组表 JBPM4_ID_MEMBERSHIP 用户角色表 JBPM4_ID_USER 用户表 JBPM4_JOB 定时表 JBPM4_LOB 存储表 JBPM4_PARTICIPATION 参与者表 JBPM4_SWIMLANE 泳道表 JBPM4_TASK 任务表 JBPM4_VARIABLE 上下文表 红色的表为经常使用的表.这里不使用JBPM自己的权限角色定义. 发布一个流程deploy后 jbpm4_deployment新增一条记录 jbpm4_deployprop新增三条记录 jbpm4_lob 新增一条记录 开始一个流程startProcessInstanceByKey后 jbpm4_execution新增一条记录 jbpm4_hist_actinst 新增一条记录 jbpm4_hist_procinst新增一条记录 jbpm4_hist_task新增一条记录 jbpm4_task 新增一条记录 流程定义相关的布署信息就存储在(1)JBPM4_DEPLOYMENT、(2) JBPM4_DEPLOYPROP及(3)JBPM4_LOB中。上传一个包含png和jpdl.xml的zip包后,JBPM4_DEPLOYMENT多一条记录 JBPM4_DEPLOYPROP 多三条, 粉笔资料分析听课笔记(整理版) 一、常用分数、百分数、平方 1 3 =33.3% 1 4 =25% 1 5 =20% 1 6 =16.7% 1 7 =14.3% 1 8 =12.5% 1 9 =11.1% 1 10 =10% 1 11 =9.1% 1 12 =8.3% 1 13 =7.7% 1 14 =7.1% 1 15 =6.7% 1 16 =6.3% 1 1.5 =66.7% 1 2.25 =44% 1 2.5 =40% 1 3.5 =28.6% 1 4.5 =22% 1 5.5 =18.2% 1 6.5 =15.4% 1 7.5 =13.3% 1 8.5 =11.8% 1 9.5 =10.5% 1 10.5 =9.5% 1 11.5 =8.7% 1 12.5 =7.8% 1 13.5 =7.4% 1 14.5 =6.9% 1 15.5 =6.5% 1 16.5 =6.1% 22=2 32=9 42=16 52=25 62=36 72=49 82=64 92=81 102=100 112= 121 122=144 132=169 142=196 152=225 162=256 172=289 182=324 192=361 202=400 212=441 222=484 232=529 242=576 252 =625 262=676 272=729 282=784 292=841 二、截位直除速算法 逍遥龙舞公考笔记1 三、其他速算技巧 1、一个数×1.5,等于这个数本身加上这个数的一半。 2、一个数×1.1 等于这个数错位相加. 3、一个数×0.9 等于这个数错位相减. 4、一个数÷5,等于这个数乘以2,乘积小数点向前移 1 位。 5、一个数÷25,等于这个数乘以4,乘积小数点向前移 2 位。 6、一个数÷125,等于这个数乘以8,乘积小数点向前移 3 位。 7、比较类:①分母相同,分子大的大;分子相同,分母小的大。 ②分子大分母小>分子小分母大。③当分母大分子大,分母小分子小 时,看分母与分母的倍数,分子与分子的倍数,谁倍数大听谁的,谁 小统统看为1,再比较。 四、统计术语 1、基期:相对于今年来说,去年的就是基期。 2、现期:相对于去年来说,今年的就是现期。 3、基期量:相对于今年来说,去年的量就是基期量。 4、现期量:相对于去年来说,今年的量就是基期量。 5、增长量:现期量和基期量的差值,就是增长量。 6、增长率:增长量与基期量的比值,就是增长率。 7、倍数:A是B的多少倍;A为B 的多少倍,等于增长率加1。 辨析:A比B增长了500%,那么就是A比B增长(多)5 倍,A是B的6 倍。 逍遥龙舞公考笔记2 https://www.doczj.com/doc/57433983.html, 觉得activiti设计得简单而强大,尝试翻译一下他的10分钟入门指南: 10分钟入门指南 通过一个(非常简单的)业务流程,介绍一些基本的Activiti工作流感念和API接口。 使用案例 这个用例叫干脆(straightfoward):有一个公司,暂且叫它BPMCorp。在BPMCorp内部,会计部门每个月都要写一份财务报告给公司的股东。但在发送给所有股东之前必须经过上级部门的批准。下面涉及的所有文件及代码片段均可以通过Activiti分发的examples范例包中找到,请查看包 https://www.doczj.com/doc/57433983.html,ertask的内容。 流程图 如上所述的业务流程可以使用Activiti的可视化流程编辑器 Activiti Modeler查看及编辑。使用BPMN2.0的标准符号则如下图所示: 这里没有什么特殊的东西,图中看到的是一个none start event(左边的圆圈),其次是两个user tasks:"撰写财务报告"和”批准财务报告",以 none end event (右边边框加粗型的圆圈)结束。XML表示 上述业务流程的XML表示形式如下所示(FinancialReportProcess.bpmn20.xml). 流程中包含一些主要的元素(通过点击链接可以查看更详细的BPMN 2.0 元素的说明): ?none start event 让我们认识到要开始一个流程。 ?user tasks声明一个基于用户操作的流程任务. 注意第一个任务是分派用户组accountancy的, 而第二个任务是分派到用户组management的. 查看分派用户任务章节可以得到更多怎样分派任务到用户或组的信息。 资料分析 第一节 增长 【例1】2012年国家外汇储备33116亿美元,2011年国家外汇储备31812亿美元。 {求增长量}○12012年国家外汇储备比上年增加了多少亿美元? {求增长率}○22012年国家外汇储备比上年增加了百分之几? 解析:○133116-31812;○2%10013181233116%100318123181233116??? ? ??-=?- 【例2】2012年2月因低温冷冻天气造成直接经济损失61亿元,比1月份减少27亿元,比2011年2月减少21亿元。2012年2月的损失比1月减少了百分之几?比上年2月减少了百分之几? 解析:○1%100276127?+;○ 2%100216121?+ 【例3】2012年社会消费品零售总额183996亿元,2012年社会消费品零售总额比2011年增长了14.3%。 {求基期量}①2011年社会消费品零售总额为多少亿元?(% 3.141183996+) {求现期量}②按此增速,到2013年社会消费品零售总额预计达到多少亿元?(()%3.141183996+?) {求现期量}③2012年社会消费品零售总额比2011年多多少亿元?(%3.14% 3.141183996?+) 第二节 同比增长与环比增长 1.同比是强调相同时间特性下的两个量之间的比较;而环比则是强调时间顺延下的两个量之间的比较。 2、有关公式行测总结笔记-学霸笔记-必过知识讲解
JBPM工作流演示系统使用说明
行测总结笔记学霸笔记必过模板
资料分析报告笔记整理好
工作流与JBPM开发实例精解
公务员考试行测资料分析状元笔记
jBPM4.4详细讲解
资料分析笔记整理样本
jbpm数据库说明
JBPM工作流表结构的详解
粉笔资料分析听课笔记(整理版)
Activiti5基于jBPM4的开源工作流系统10分钟入门指南
资料分析知识点(整理版)