Java高级

异常处理 Java的异常 调用方获取调用失败的信息 约定返回错误码 处理一个文件,如果返回0,表示成功,返回其他整数,表示约定的错误码: int code = processFile("C:\\test.txt"); if (code == 0) { // ok: } else { // error: switch (code) { case 1: // file not found: case 2: // no read permission: default: // unknown error: } } 语言层面上提供一个异常处理机制、 try { String s = processFile(“C:\\test.txt”); // ok: } catch (FileNotFoundException e) { // file not found: } catch (SecurityException e) { // no read permission: } catch (IOException e) { // io error: } catch (Exception e) { // other error: } 异常是class,它的继承关系如下:...

Java中级

面向对象基础 理解: class是一种对象模版,定义了如何创建实例,class本身就是一种数据类型 instance是对象实例,instance是根据class创建的实例,可以创建多个instance,每个instance类型相同,但各自属性可能不相同 定义class 创建一个类,例如,给这个类命名为Person,就是定义一个class: class Person { public String name; public int age; } class Book { public String name; public String author; public String isbn; public double price; } 创建实例 定义了class,只是定义了对象模版,而要根据对象模版创建出真正的对象实例,必须用new操作符 Person ming = new Person(); 区分Person ming是定义Person类型的变量ming,而new Person()是创建Person实例 ming.name = "Xiao Ming"; // 对字段name赋值 ming.age = 12; // 对字段age赋值 System.out.println(ming.name); // 访问字段name Person hong = new Person(); hong.name = "Xiao Hong"; hong.age = 15; 上述两个变量分别指向两个不同的实例,它们在内存中的结构如下: ┌──────────────────┐ ming ──────▶│Person instance │ ├──────────────────┤ │name = "Xiao Ming"│ │age = 12 │ └──────────────────┘ ┌──────────────────┐ hong ──────▶│Person instance │ ├──────────────────┤ │name = "Xiao Hong"│ │age = 15 │ └──────────────────┘ 方法 意义:...

Python高级

Python高级 面向对象编程 以一个例子来说明面向过程和面向对象在程序流程上的不同之处 假设我们要处理学生的成绩表,表示学生的成绩,面向过程的程序可以用dict表示: std1 = { 'name': 'Michael', 'score': 98 } std2 = { 'name': 'Bob', 'score': 81 } 而处理学生成绩可以通过函数实现,比如打印学生的成绩: def print_score(std): print('%s: %s' % (std['name'], std['score'])) 面向对象的程序设计思想,我们首选思考的不是程序的执行流程,而是Student这种数据类型应该被视为一个对象,这个对象拥有name和score这两个属性(Property)。如果要打印一个学生的成绩,首先必须创建出这个学生对应的对象,然后,给对象发一个print_score消息,让对象自己把自己的数据打印出来 class Student(object): def __init__(self, name, score): self.name = name self.score = score def print_score(self): print('%s: %s' % (self.name, self.score)) 给对象发消息实际上就是调用对象对应的关联函数,我们称之为对象的方法(Method)。面向对象的程序写出来就像这样: bart = Student('Bart Simpson', 59) lisa = Student('Lisa Simpson', 87) bart.print_score() lisa.print_score() 类和实例 类是抽象的模板,实例是类创建的一个个具体的“对象” 和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量self,并且,调用时,不用传递该参数 定义类是通过class关键字: class Student(object): pass class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,通常,没有合适的继承类,就使用object类,是所有类最终都会继承的类 由于类可以起到模板的作用,因此,在创建实例的时候,把我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把name,score等属性绑上去:...

Python中级

Python中级使用 函数 调用函数 参数可以多个 >>> max(1, 2) 2 >>> max(2, 3, 1, -5) 3 参数类型需要一致 >>> abs('a') TypeError: bad operand type for abs(): 'str' 函数调用 >>> abs(100) 100 >>> abs(-20) 20 数据类型转换 >>> int('123') 123 >>> int(12.34) 12 >>> float('12.34') 12.34 >>> str(1.23) '1.23' >>> str(100) '100' >>> bool(1) True >>> bool('') False 函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量 >>> a = abs # 变量a指向abs函数 >>> a(-1) # 所以也可以通过a调用abs函数 1 定义函数 要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回 def my_abs(x): if x >= 0: return x else: return -x print(my_abs(-99)) 空函数:定义一个什么事也不做的空函数,可以用pass语句...

Python基本

Python基础语法 Python基础 # print absolute value of an integer: a = 100 if a >= 0: print(a) else: print(-a) Python的语法比较简单 #开头的语句是注释 当语句以冒号:结尾时,缩进的语句视为代码块 缩进实用四个空格的缩进 议input 用input()读取用户的输入 birth = input('birth: ') if birth < 2000: print('00前') TypeError: unorderable types: str() > int() 因为input()返回的数据类型是str,str不能直接和整数比较,必须先把str转换成整数 s = input('birth: ') birth = int(s) if birth < 2000: print('00前') 可以得到正确地结果 议不可变对象:str是不变对象,list是可变对象 对于可变对象,比如list >>> a = ['c', 'b', 'a'] >>> a.sort() >>> a ['a', 'b', 'c'] 对于不可变对象,比如str...

Java基础

Java基础 程序流程 Java默认初始值与无默认区分 public class DefaultValuesExample { int instanceVar; // 默认值: 0 static int staticVar; // 默认值: 0 int[] array = new int[5]; // 数组元素默认值: 0 public void method() { int localVar; // 局部变量,必须显式初始化 // System.out.println(localVar); // 编译错误 } public static void main(String[] args) { DefaultValuesExample example = new DefaultValuesExample(); System.out.println("Instance variable: " + example.instanceVar); System.out.println("Static variable: " + staticVar); System.out.println("Array element: " + example.array[0]); } } 局部变量必须有显式初始化 Java简易程序 public class Hello { public static void main(String[] args) { System....

SQL语法

SQL基本使用 关系型数据库 数据库:保存用户数据 随着应用程序的功能越复杂,数据量越大,管理这些数据就成了大问题 读写文件并解析出数据需要大量重复代码; 从成千上万的数据中快速查询出指定数据需要复杂的逻辑 数据模型 层次模型:以“上下级”的层次关系来组织数据的一种方式,看起来就像一颗树 网状模型:每个数据节点和其他很多节点都连接起来,看起来就像很多城市之间的路网 关系模型:数据看作是一个二维表格,任何数据都可以通过行号+列号来唯一确定,看起来就是一个Excel表 常见数据类型 名称 类型 说明 INT 整型 4字节整数类型,范围约+/-21亿 BIGINT 长整型 8字节整数类型,范围约+/-922亿亿 REAL 浮点型 4字节浮点数,范围约+/-1038 DOUBLE 浮点型 8字节浮点数,范围约+/-10308 DECIMAL(M,N) 高精度小数 由用户指定精度的小数,例如,DECIMAL(20,10)表示一共20位,其中小数10位,通常用于财务计算 CHAR(N) 定长字符串 存储指定长度的字符串,例如,CHAR(100)总是存储100个字符的字符串 VARCHAR(N) 变长字符串 存储可变长度的字符串,例如,VARCHAR(100)可以存储0~100个字符的字符串 BOOLEAN 布尔类型 存储True或者False DATE 日期类型 存储日期,例如,2018-06-22 TIME 时间类型 存储时间,例如,12:20:59 DATETIME 日期和时间类型 存储日期+时间,例如,2018-06-22 12:20:59 SQL 结构化查询语言的缩写,用来访问和操作数据库系统。SQL语句既可以查询数据库中的数据,也可以添加、更新和删除数据库中的数据,还对数据库进行管理和维护操做 SQL语言关键字不区分大小写!!!但表名和列名不一定 MySQL本身只是一个SQL接口,内部包含多种数据引擎 InnoDB:一款支持事务的数据库引擎 MyISAM:MySQL早期默认数据库引擎,不支持事务 关系模型 表的每一行称为记录(Record),记录是一个逻辑意义上的数据。 表的每一列称为字段(Column),同一个表的每一行记录都拥有相同的若干字段。 主键 记录一旦插入到表中,主键最好不要再修改,因为主键是用来唯一定位记录的,修改了主键,会造成一系列的影响 主键的一个基本原则:不使用任何业务相关的字段作为主键,也不应该允许NULL 一般字段命名为id ,常见类型有 自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键 全局唯一GUID类型:也称UUID,使用一种全局唯一的字符串作为主键,类似8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的 联合主键 通过多个字段唯一标识记录,即两个或更多的字段都设置为主键 外键 在students表中,通过class_id的字段,可以把数据与另一张表关联起来,这种列称为外键 定义外键约束,关系数据库可以保证无法插入无效的数据。即如果classes表不存在id=99的记录,students表就无法插入class_id=99的记录 外键并不是通过列名实现的,而是通过定义外键约束实现的:...