📊 数据与搜索
未读表头 (header): 每一列的名称; 列 (row): 具有相同数据类型的数据的集合; 行 (col): 每一行用来描述某个人 / 物的具体信息; 值 (value): 行的具体信息, 每个值必须与该列的数据类型相同; 键 (key): 表中用来识别某个特定的人或物的方法, 键的值在当前列中具有唯一性 SQL 语句的分类 DQL 查询语句 select DML 操作语句 insert update delete DDL 定义语句 create alter drop truncate DCL 控制语句 grant revoke 实务控制语句 commit rollback savepoint MySQL 服务的启动、停止与卸载在 Windows 命令提示符下运行:启动: net start MySQL停止: net stop MySQL卸载: sc delete MySQL MySQL 的登录MySQL 参数 参数 描述 -D, –fatabase = name 打开指定数据库 –delimiter = name 指定分隔符 ...
🧱 后端开发与架构
未读public class Propertiesextends Hashtable<Object,Object>Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串。新建一个文件内容为键 1 = 值 1键 2 = 值 2… 使用此类可以对文件数据进行持久化保存 方法的使用 load(InputStream inStream); 从输入流中读取属性列表(键和元素对)。 12Properties pro = new Properties();pro.load(new FileInputStream(相对路径或绝对路径));//此方法将抛出FileNotFoundException getPropertiy(String key) 使用指定的键在此属性列表中搜索属性, 返回 String getProperty(String key, String defaultValue) 用指定的键在属性列表中搜索属性。返回 String setProperty(String ...
🧱 后端开发与架构
未读Java Conllection Frame 在集合框架中,分为两种 API: 装载数据的集合类 HashSet 类 ArrayList 类 LinkedList 类 HashMap 类 …. 操作集合的工具类 Arrays 类 Collections 类 Iterator 接口java.utilpublic interface IteratorIterator 模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构 12345public interface Iterator{ boolean hasNext();//如果仍有元素可以迭代,则返回 true Object next();//返回迭代的下一个元素。 NoSuchElementException - 没有元素可以迭代。 void remove();//从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。} Iterable 接口java.langpublic inte ...
🧱 后端开发与架构
未读看代码说结果: 1234567public static void main(String[] args){ char x = ‘b’; int i = 0;1. System.out.println(true?x:0); //这个0是short类型2. System.out.println(true?x:1111111110);3. System.out.println(false?i:x);} 要类型转换直接写出的 0 是 short 类型 b9898 解释:条件运算符的 3 个核心要点 如果第二个和第三个操作数具有相同的类型, 那么他就是条件表达式的类型. 如果一个操作数的类型是 byte,shotr 或 char, 而另一个操作数类型是 int 的常量表达式, 条件表达式的值是可以用类型 byte,short 或 char 表示的, 否则, 将操作数类型运用二进制数字提升 (向上转型), 二表达式的类型就是第二个和第三个操作数提升后的类型 System.out.println(true?x:0);对于语句 1 中的条 ...
Collections 类此类方法众多, 只介绍几个常用方法 sort() 对元素进行排序, 可以传入比较器 max() 返回最大元素, 可以传入比较器 min() 返回最小元素, 可以传比较器 reverse() 反排序 shuffle() 混排 Arrays 类此类包含用来操作数组(比如排序和搜索)的各种方法。方法更多, 还是看 API 吧 比较器Comparable内部比较器public interface Comparable此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。int compareTo(T o)一个类继承了 Comparable 接口后, 重写 compareTo() 方法, 就能按照我们自己的规则排序 例子: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950public class Student implements Comparable ...
🧱 后端开发与架构
未读抽象类 把多个类中相同的方法声明给抽取出来。定义到一个类中。 一个方法如果只有方法声明,没有方法体,那么该方法必须定义为抽象方法。 而一个类中如果有抽象方法,那么,该类必须定义为抽象类。 抽象类的特点: 抽象方法和抽象类都必须用 abstract 表示。 一个类继承抽象类的时候; 要么:本身是一个抽象类。 要么:实现抽象类中的所有抽象方法。 抽象类有构造方法, 但是不能实例化, 可以按照多态的使用方式使用。 成员特点: 成员变量 可以是变量,也可以是常量。 构造方法 有 用于子类访问父类构造方法,初始化父类数据 成员方法 可以是抽象,也可以非抽象。 抽象类的好处: 抽象类中的非抽象方法提高了代码的复用性。 抽象类中的抽象方法强制要求子类必须重写某些方法。 抽象类中的几个小问题: 抽象类不能实例化,构造方法有什么用呢? 用于子类访问父类数据的初始化。 如果一个类中没有抽象方法,而类却被定义为了抽象类,请问为什么? 不让创建对象。 abstract 不能和哪些关键字共存: private: 冲突 final: 冲突 static: 无意义 ...
🧱 后端开发与架构
未读相同的行为, 不同的实现 多态多态, 多种状态, 而多种状态的体现就在不同的实现上面, 也可以说是不同的效果.举个例子:我这里有 3 个杯子, 里面都装了白酒, 你并不知道它们都是什么酒, 只有等你喝过之后才能知道, 第一个杯子是二锅头, 第二个是五粮液, 第三个是茅台. 12Maotai mo = new Maotai();Wine w = mo; 这里我们可以这样理解, 茅台是酒类的一种, 它们之间是继承关系, 当 a 指向了 mo 这个对象的时候, 它会自动向上转型为 Wine, 这也就是说 w 是可以指向茅台这个实例. 这样做的好处就是, 在继承中我们知道子类是父类的扩展, 它可以提供比父类更加强大的功能,如果我们定义了一个指向子类的父类引用类型,那么它除了能够引用父类的共性外,还可以使用子类强大的功能 但是向上转型存在一些缺憾,那就是它必定会导致一些方法和属性的丢失,而导致我们不能够获取它们 所以对于多态我们可以总结如下: 指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该 ...
🧱 后端开发与架构
未读Java 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。这种技术使得复用以前的代码非常容易,能够大大缩短开发周期,降低开发费用。比如可以先定义一个类叫车,车有以下属性:车体大小,颜色,方向盘,轮胎,而又由车这个类派生出轿车和卡车两个类,为轿车添加一个小后备箱,而为卡车添加一个大货箱。 子类拥有父类非 private 的属性和方法。 子类可以拥有自己属性和方法,即子类可以对父类进行扩展。 子类可以用自己的方式实现父类的方法。(重载) 继承 (类与类的关系)有相同的属性和相同的行为时, 定义为父类,其他的 子类 只需要写特有的属性和方法. 在面向对象中, 可以通过扩展一个已有的类, 并继承该类的属性和行为,来创建一个新的类, 从而达到代码的复用. 继承是所有 OOP 语言不可缺少的部分,在 java 中使用 extends 关键字来表示继承关系。当创建一个类时,总是在继承,如果没有明确指出要继承的类,就总是隐式地从根类 Object 进行继承。 继承不会继承父类的构造方法因为: 语法上如果继 ...
🧱 后端开发与架构
未读什么是封装 隐藏对象的属性和实现细节,仅对外公开接口; 控制在程序中属性的读和修改的访问级别; 将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成 “类”,其中数据和函数都是类的成员。 通俗的说就是:利用抽象数据类型将数据和基于数据的操作组合在一起, 是其构成一个不可分割的独立实体, 数据被保护在抽象数据类型的内部, 尽可能的隐藏内部的细节, 只保留一些对外的接口使之与外部发生联系.用户无需知道内部的实现细节, 但可以通过该对象对外提供的接口来访问该对象. 封装的好处 良好的封装能够减少耦合 类内部的结构可以自由修改 可以对成员进行更精确的控制 隐藏信息, 实现细节 JavaBeanJavaBean 规范: 标准 java 类 Sun 公司规定为私有属性提供符合命名规范的 set 和 get 方法 JavaBean 必须声明为 public class JavaBean 的所有属性必须声明为 private 通过 setter 和 getter 方法设值和取值 通过 JSP 调用是, 则需要一个无参的构造方法 编 ...
🧱 后端开发与架构
未读Math 类Math 类中所有的属性和方法都是静态的, 也就是说全露都可以可用 Math. 属性和 Math. 方法名调用属性和方法. 属性 static double E: 比任何值都接近 e 的 double 值 static double PI: 比任何值都接近 pi 的 double 值 几个常用的方法 ceil(double a) : 返回大于等于这个参数的整数 Math.ceil(-12.1) 返回 - 12 ; Math.ceil(12.8) 返回 13; floor(double a): 返回小于等于参数的整数; Math.floor(-12.1) 返回 - 13;Math.floor(12.9) 返回 12; rint(double a): 返回接近参数并等于某一整数的 double 值 Math.floor(-12.1) 返回 - 12;Math.floor(12.9) 返回 13; random(): 返回 [0,1) 之间的 double 值; 随机数获得随机数的 3 种方法 通过 System.currentTimeMillis( ...
🧱 后端开发与架构
未读字符串操作在编程中我们会大量使用, 所以掌握字符串相关类对我们来说很重要.Java 为我们提供了 3 种操作字符串的类. 由于 String 类的特殊, 有必要了解一下 Java 运行时内存的概念, 才能更好的理解字符串相关类的底层操作. Java 中内存知识在反射中我们学到, 对于每一个被 JVM 加载到内存中的类, 都会在方法区保存一份这个类的信息;包括: 类的基本信息 类的全名, 直接父类的全民 该类的接口 该类的访问修饰符 类的详细信息 运行时常量池 –> 字符串, 常量, 类名和方法名常量. 字段信息 –> 字段名, 类型, 修饰符 方法信息 –> 方法名, 返回值类型, 参数类型, 修饰符, 异常, 方法的字节码 静态变量 –> 在方法区中的静态区保存被类的所有实例共享的变量和静态快 到类 classloader 的引用 到类 class 的引用 JVM 为每一个被加载到内存的类型创建一个 class 实例, 用实例代表这个被加载的类 由此引出反射的概念:在加载类的时候, 加入方法区的所有信息, 最后都会影城 Class 类的实例 ...
概述 Java 异常是 Java 提供的一种识别及响应错误的一致性机制。 Java 异常机制可以使程序中异常处理代码和正常业务代码分离,保证程序代码更加优雅,并提高程序健壮性。 在有效使用异常的情况下,异常能清晰的回答 what, where, why 这 3 个问题: 异常类型 –>” 什么” 被抛出; 异常堆栈跟踪 –>” 在哪” 抛出; 异常信息 –>” 为什么” 会抛出; Throwable 类 Throwable 是 Java 语言中所有错误或异常的超类。Throwable 包含两个子类: Error 和 Exception。它们通常用于指示发生了异常情况。Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。 ExceptionException 及其子类是 Throwable 的一种形式,它指出了合理的应用程序想要捕获的条件。 RuntimeExceptionRuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。编译器 ...
🧱 后端开发与架构
未读new要谈 new 关键字, 就必须先说说构造方法, 它们 2 个就是一对好基友. 构造方法定义 无参构造方法: 访问修饰符 类名(){ } 带参构造方法 访问修饰符 类名(参数列表){ } 说明 构造方法可以被重载; 没有返回类型 (void 也算返回类型, 只是没有返回值); 方法名和类名必须一样; 如果不写, 系统会默认提供一个无参构造方法; 如果写了, 系统就不会提供任何构造方法; 子类不能继承父类的构造方法; 接口没有构造方法; 作用产生对象new 一个对象的时候构造器所要做的事 创建空间; 划分属性; 初始化值; 执行构造方法内的语句; 实例化一个对象用 new 关键字实例化一个对象时, 所用做的事:People p = new People(); 加载 People,class 文件进入内存; 在栈内存为 p 变量申请一个空间 (4 个字节); 在堆内存为 People 对象申请空间 (大小为类中所有成员变量的大小); 对类中的成员变量进行默认初始化; (如果有) 对类的成员变量进行显示初始化; 有构造代码块, ...
public 谁都可以操作 当在方法或属性前面显显式的给定 public 限定符的时候, 其具有该权限控制. public 权限是最为宽松的一种权限控制, 对包的内, 外部都是完全可见的. java 最多只允许一个 java 文件中出现一个 public 类.(该类向外间提供接口, 并与该 java 文件的名称完全一致) 当一个 java 文件中无一个 public 类时, 表明其仅供包访问, 对外界不可见. 注意: 类只有包访问权限和 public 访问权限. 默认访问修饰符 (friendly) 同一个包内可以操作 当方法或属性未给定访问修饰符时, 其默认具有该权限. 具有该权限的方法和成员, 其包内是完全可见的, 而包外不可见. 1234567891011121314//Animal.java和Test.java在同一包下;//Animal.javapublic class Animal{ void eat(){ System.out.println("Animal吃东西的方法"); } ...















