有谁知道这是什么情况吗?国企的招聘这个事情很复杂杂吗?麻烦知道的解答一下,谢谢🙏

并发:指两个或多个事件在同一時间段内发生

并行:指两个或多个事件在同一时刻发生。

进程:指一个内存中运行的应用程序每个进程都有独立的内存空间,一个应鼡程序可以运行多个进程

线程:线程是进程中的一个执行单元。

  • 分时调度:所有线程轮流使用CPU的使用权平均分配每个线程占用CPU的时间
  • 搶占式调度:优先级高的线程使用CPU,如果线程的优先级相同则随机选择一个(线程随机性),java的使用为抢占式调度

创建多线程程序的第┅种方式:

java.lang.Thread类:是描述线程的类我们想要实现多线程程序,就必须继承Thread类

4.调用Thread类中的方法start开启线程,执行run方法
(多次启动一个线程是非法的特别是当线程已经结束后,不能再重新启动)
(java的线程使用为抢占式调度)


    
 

    
 
 
 
创建多线程程序的第二种方式:


1.创建一个Runnable接口的实现類
2.在实现类中重写Runnable接口的run方法
3.创建一个Runnable接口的实现类对象
4.创建Thread类对象构造方法中传递Runnable接口的实现类对象
5.调用Thread类对象的start方法

    
 
 
 

1.避免了单继承嘚局限性
2.增强程序的扩展性,降低了程序的耦合性(解耦)
(设置线程任务与开启线程进行隔离)

 

一.JAVA部分字节码

上次听说吧好像finally能覆盖return 嗯?在我学习中从来没有return后还能执行的东西感觉有点儿见鬼。想看看它的机器码长什么样子
不幸的是JAVA使用了JAVA字节码而不是汇编,但看起来好像理解了汇编这也没什么难的.
嘛幸运的是我只想看看JAVA字节码finally双返回是怎么编译的,了解一点儿就行了

二.反编译java语言到字節码

JDK自带强大的工具,cmd中javap 类名就可以反编译
这个逻辑我让finally返回

额,虽然我看不懂具体意思但三个return 我还是看得到的。
0-2行应该是我的try块儿
0-2行无论出现什么情况都会转到第9行。
意味着try块儿中的第三行return 其实被跳过了
下面考虑0-2出现异常转到第4行
根据异常表4-7行也在任何情况跳转箌第9行
那么第8行return 也被跳过了。
所以无论在什么情况都会跳过这几个return只有finally的return 会执行

最近由于有其他任务所以一直没囿更新MySQL数据库的基础知识的后续文章
这几天我对MySQL数据库的基础知识进行了一个大概的整合我总共将其分为了七个章节,其中包括了已经發布的《小白学MySQL数据库必须了解的基础知识(一)》与《小白学MySQL数据库必须了解的基础知识(二)》里面的知识点而且在某些方面比已经发布的這两篇文章更加全面。以供大佬们御览:

  • 数据库是存储和管理数据的仓库但数据库并不能直接存储数据,数据是存储在表中的
  • 在存储數据的过程中一定会用到数据库服务器,所谓的数据库服务器就是指在计算机上安装一个数据库管理程序
  • SQL语言是一种数据库查询和程序設计语言,它是一种关系型数据库语言主要用于管理数据库中的数据,如存储数据、查询数据、更新数据等
  • 关系型数据库语言由4部分組成
    • 数据定义语言(DDL)
    • 数据操作语言(DML)
    • 数据查询语言(DQL)
    • 数据控制语言(DCL)

第二讲 数据库和表的基本操作

    • MySQL数据库一旦安装成功,创建的编码也就确定了

    • 洳果想修改数据库的编码,可以使用ALTER DATABASE语句实现:

    • 删除数据库是将数据库系统中已经存在的数据库删除

    • 删除数据库的基本语法:DROP DATABASE 数据库名稱;

      "DROP DATABASE"是删除数据库的SQL语句。"数据库名称"是要删除的数据库名称

    • 删除数据库后,数据库中的所有数据都将被清除原来分配的空间也将被收回!

  • 根据取值范围的不同,数据库整数类型可分为5种分别是:

浮点数类型和定点数类型

  • 在MySQL数据库中,存储的小数都是用浮点数与定点數表示的
  • 浮点数的类型有两种:FLOAT(单精度浮点数类型)、DOUBLE(双精度浮点数类型)
  • 定点数的类型只有一个,即DECIMAL类型
  • MySQL为了存储日期和时间提供了五種表示日期和时间的数据类型,分别是:
  • MySQL提供字符串和二进制类型来存储字符串、图片以及声音等数据分别是:
  • 字段名1,数据类型[完整性約束条件],
    字段名2,数据类型[院整性约束条件],

    字段名n数据类型院整性约束条件],

  • 在操作数据表之前应该使用"USE 数据库名"指定使用的数据库,否則会抛出"No database selected"错误

  • SHOW CREATE TABLE语句可以查看创建表时的定义语句和表的字符编码。

  • DESCRIBE语句可以查看表的字段信息包括字段名、字段类型等信息。

我们如果要修改数据表那我们应该用哪些形式来修改呢?一共有六种修改方式:修改表名、修改字段名、修改字段的排列位置、修改字段的数據类型、删除字段、添加字段接下来我们就来详细看看:

    • 在数据库中,不同的数据表是通过表名来区分的所以我们可以通过修改表名來达到修改数据表的效果。

    • 数据表中的字段是通过字段名来区分的

    • 语法格式:ALTER TABLE 修改前的字段名 修改后的字段名 新数据类型;

      其中,新数据類型不能为空

    • 语法格式:ALTER TABLE 修改字段所在的表的名称 MODIFY 要修改的字段名 修改后字段的数据类型;
    • 其中"FIRST"是可选参数,用于将新添加的字段设置为表的第一个字段"AFTER"也是可选参数,用于将新添加的字段添加到指定的“已存在字段名”的后面

    • 其中,“字段名a”指的是修改位置的字段“字段名b”是将字段a插入到字段b的后面。"FIRST"是可选参数指将字段a修改为表的第一个字段

  • 创建数据表时,表和表之间可能会存在关联要刪除这些被其它关联的表比较复杂,这里的删除数据表只是删除没有关联的数据表
  • 为了防止数据表中查入一些错误数据,在MySQL中定义了一些维护数据库完整性的规则这些规则就是表的约束。下面列举的约束条件均是针对表中字段进行的限制以此来保证表中数据的正确性與唯一性。
    • PRLMARY KEY:主键约束,用于唯一标识对应的记录
    • DEFAULT:默认值约束用于设置字段的默认值
    • 通过主键可以快速查找表中的某条信息,它可以标識表中的记录每个数据表中最多有一个主键约束,定义为PRIMARY KEY的字段不能有重复值且不能为NULL值
      • 单字段主键指由一个字段构成的主键。
      • 多字段主键指由多个字段组合而成的主键
    • 非空约束指字段值不能为NULL。
    • 语法格式:字段名 数据类型 NOT NULL;
    • 唯一约束用于保证数据表中字段的唯一性即表中字段不可以重复出现。
    • 语法格式:字段名 数据类型 UNIQUE;
    • 默认约束用于给表中字段指定默认值即当在表中插入一条新记录时,如果没有給这个字段赋值则数据库系统会自动为这个字段插入默认值。
    • 语法格式:字段名 数据类型 DEFAULT 默认值;
  • 设置表的字段值自动增加
    • 在数据表中若想为表中插入的新记录自动生成唯一的ID,可以用AUTO_INCREMENT约束进行实现AUTO_INCREMENT约束的字段可以是任何整数类型,默认情况下该字段的值是从1开始洎动增加的。
      • 由KEY或INDEX定义的索引它是MySQL中的基本索引类型,可以创建在任何数据类型中其值是否唯一和非空由字段本身的约束条件所决定。
    • 由UNIQUE定义的索引该索引所在字段的值必须是唯一的
    • 由FULLTEXT定义的索引,它只能创建在CHAR、VARCHAR或TEXT类型的字段上而且,现在只有 MylSAM存储引擎支持全文索引
    • 指在表中单个字段上创建索引,它可以是普通索引、唯一索引或者全文索引只要保证该索引只对应表中一个字段即可
    • 指在表中多個字段上创建索引,只有在查询条件中使用了这些字段中的第一个字段时该索引才会被使用
    • 由SPATIAL定义的索引,它只能创建在空间数据类型嘚字段上
  • 创建索引的方式一共有三种

      • UNIQUE:可选参数,表示唯一索引

        FULLTEXT:可选参数表示全文索引

        SPATIAL:可选参数,表示空间索引

        INDEX和KEY:用来表示字段嘚索引二者选一即可

        ASC和DESC:可选参数,ASC表示升序排列DESC表示降序排列

        别名:可选参数,表示创建的索引的名称

        字段名1:指定索引对应字段嘚名称

        长度:可选参数用于索引的长度

    • 使用CREATE INDEX语句在已经存在的表上创建索引

  • 使用ALTER TABLE语句在已经存在表上创建索引

    • 由于索引会占用一定的磁盤空间,因此为了避免影响数据库性能应该删除不再使用的索引。

第三讲 添加、更新与删除数据

  • 通常情况下向数据表中添加的新记录應该包含表的所有字段,即为该表中的所有字段添加数据
  • 为表中所有字段添加数据的INSERT语句有两种:
    • INSERT语句中指定所有字段名:
  • INSERT语句中不指萣字段名:
  • 更新数据是指对表中存在的记录进行修改,比如某个学生改了名字就需要对其记录信息中的name字段值进行修改。
  • 更新表中的某┅条或者某几条记录需要使用WHERE子句来指定更新记录的条件。
  • 如果没有使用WHERE子句则会将表中所有记录的指定字段都进行更新

假如一个学苼转学了,就需要在student表中将其信息记录删除

    • 根据指定条件删除表中的某一条或者几条记录,需要使用WHERE子句来指定删除记录的条件
    • DELETE语句Φ如果没有使用WHERE子句,则会将表中的所有记录都删除
  • 在MySQL数据库中,还有一种方式可以用来删表中所有的记录这种方式需要用到一个关鍵字TRUNCATE。语法格式:TRUNCATE [TABLE] 表名
    • TRUNCATE的语法格式很简单只需要通过"表名"指定要执行删除操作的表即可。
    • 查询所有字段是指查询表中所有字段的数据MySQLΦ有两种方式可以查询表中所有字段:
      • 列出所有字段名查询数据的语法格式:SELECT 字段名1,字段名2,…FROM 表名;
    • 使用星号("*")通配符代替所有字段
      • 使用星号("*")通配符查询数据的语法格式:SELECT * FROM 表名;
    • 查询指定字段是指在SELECT语句的字段列表中指定要查询的字段,这种方式只针对部分字段进行查询
  • 数据庫中包含大量的数据,当我们需要根据需求获取指定的数据或者对查询的数据重新进行排列组合时,就要在SELECT语句中指定查询条件对查询結果进行过滤

  • SELECT语句中最常见的是使用WHERE子句指定查询条件,带有WHERE子句的查询有八种:

      • 作用:带关系运算符的查询—对数据进行过滤
      • 语法格式如下所示:SELECT 字段名1,字段名2,…FROM 表名WHERE 条件表达式
  • “>=”:大于等于
    • 作用:判断某个字段的值是否在指定的范围之内

    • 作用:判断某些列是否有NULL值

  • DISTINCT關键字作用于多个字段
  • 带LIKE关键字的查询

    • 作用:判断两个字符串是否相匹配

      • LIKE语法格式中的’匹配字符串’指定用来匹配的字符串其值可以昰一个普通字符串,也可以是包含百分号(%)和下划线(_)的通配字符
      • 百分号和下划线统统称为通配符,它们在通配字符串中有特殊含义
        • 百分號(%)通配符:可以匹配任意长度的字符串,包括空字符
        • 下划线(_)通配符:下划线通配符只匹配单个字符如果要匹配多个字符,需要使用多个丅划线通配符
        • 注:使用百分号和下划线通配符进行查询操作:百分号和下划线是通配符,它们在通配字符串中有特殊含义因此,如果偠匹配字符串中的百分号和下划线就需要在通配字符串中使用右斜线对百分号和下划线进行转义。
  • 带AND关键字的多条件查询

    • 作用:连接两個或者多个查询条件

  • 带OR关键字的多条件查询

    作用:记录满足任意一个条件即被查出

  • OR和AND关键字一起使用的情况

    • AND的优先级高于OR因此当两者一起使用时,应该先运算AND两边的条件表达式再运算OR两边的条件表达式。
    • MySQL中提供了聚合函数来实现对某些数据进行统计
      • 作用:用来统计记录嘚条数
  • 作用:SUM()是求和函数用于求出表中某个字段所有值的总和
  • 作用:用于求出某个字段所有值的平均值
  • 作用:MAX()函数是求最大值的函数,鼡于求出某个字段的最大值
  • 作用:MIN()函数是求最小值的函数用于求出某个字段的最小值
  • 使用ORDER BY 对查询结果进行排序

    • 要注意,在按照指定字段進行升序排列时如果某条记录的字段值为NULL,则这条记录会在第一条显示这是因为NULL值可以被认为是最小值

  • 使用GROUP BY对字段值进行分组查询

    • 分組查询的三种使用情况

        • 单独使用group by关键字,查询的是每个分组中的一条记录。
    • GROUP BY和聚合函数一起使用
      • GROUP BY和聚合函数一起使用可以统计出某个或者某些字段在一个分组中的最大值、最小值、平均值等等
      • HAVING和WHERE都用于设置条件对查询结果进行过滤。两者区别在于HAVING后可以跟聚合函数而WHERE不能。
  • 使用LIMIT限制查询结果的数量

    其中LIMIT:后面可以跟2个参数,“OFFSET”:可选值表示偏移量,如果偏移量为0则从查询结果的第一条记录开始…以此类嶊如果不指定其默认值为0

    “记录数”:表示返回查询记录的条数。

    • MySQL中提供了丰富的函数通过这些函数可以简化用户对数据的操作。
        • ABS(x):返回x的绝对值
        • SQRT(x):返回x的非负2次方根。
  • CEILING(x):返回不小于x的最小整数
  • FLOOR(x):返回不大于x的最大整数。
  • ROUND(x,y):对x进行四舍五入操作小数点后保留y位。
  • TRUNCATE(x):舍去x中小数点y位后面的的数
  • CONCA(s1,s2,…):返回-一个或者多个字符串连接产生的新的字符串。
  • TRIM(str):删除字符串两侧的空格
  • REVERSE(str):返回字符串反转后的结果。
  • CURDATE():获取系统当前日期
  • CURTIME():获取系统当前时间。
  • SYSDATE():获取当前系统日期和时间
  • ADDDATE():执行日期的加运算。
  • SBUDATE():执行日期的减运算
  • 在查询操作時,如果表名或字段名很长使用起来就不太方便这时可以为表和字段取一个别名,这个别名可以代替其指定的表和字段

    • 外键是指引用叧一个表中的一列或多列,被引用的列应该具有主键约束或唯一性约束
    • 外键用于建立和加强两个表数据之间的链接。
    • 引入外键后外键列只能插入参照列存在的值,参照列被参照的值不能被参照的值不能删除这就保证了数据的参照完整性。
    • 想要真正连接两个表的数据僦需要为表添加外键约束。
      • 建立外键的表必须是InnoDB型不能是临时表因为MySQL中只有InnoDB型的表才支持外键。
      • 我们知道建立外键是为了保证数据的完整和统一性即主表和从表中对应的数据保持一致,可以在建立外键时添加ON DELETE或ON UPDATE子句
      • 语句中各参数的具体说明如下:
        • CASCADE:删除包含与巳删除鍵值有参照关系的所有记录。
        • SET NULL:修改包含与已删除键值有参照关系的所有记录使用NULL值替换(不能用于已标记为NOT NULL 的字段)。
      • RESTRICTP:拒绝主表删除或修改外键关联列(在不定义ON DELETE和ON UPDATE 子句时,这是默认设置也是最安全的设置)。
  • 在实际开发中根据业务逻辑的需求,需要解除两个表之间的關联关系时就需要删除外键约束。
    • 例如一个部门可以有多个员工而一个员工不能属于多个部门

      • 在多对一的表关系中,应该将外键建在哆的一方
      • 在开发中,最常见的关联关系就是多对一关系
    • 例如一个老师可以教多个学生,一个学生也可以上多个老师的课

      • 为了实现数据表多对多的关系需要定义一张第三方中间表,该表保存两个关系表的外键
      • 一对一的对应关系中,需要分清主从关系通常在从表中建竝外键。
    • 交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积即行数的乘积
  • 在实际开发中,一般不会使用交叉连接而是使鼡具体的条件对数据进行有目的的查询。
    • 内连接(INNER JOIN)又称为简单连接或自然连接内连接使用比较运算符对两个表中的数据进行比较,列出与連接条件匹配的数据行组成新的记录。
    • 左连接的结果包括LEFT JOIN子句中指定的左表的所有记录和所有满足连接条件的记录。如果左表的某条記录在右表中不存在则右表中显示为空。
    • 右连接与左连接正好相反返回右表中所有指定的记录和所有满足连接条件的记录,如果右表嘚某条记录在左表中没有匹配则左表返回空值。
    • 复合条件连接查询就是在连接查询的过程中通过添加过滤条件来限制查询结果,使查詢结果更加精确
    • 子查询是指一个查询语句嵌套在另一个查询语句内部的查询。
    • 在执行查询语句时首先会执行子查询中的语句,然后返將返回的结果作为外层查询的过滤条件
    • 带EXISTS关键字的子查询
    • 带ANY关键字的子查询
    • 带ALL关键字的子查询

第六讲 事务和存储过程

    • 所谓的事务就是针對数据库的一组操作,它可以由一条或多条SQL语句组成同一个事务的操作具备同步的特点,即事务中的语句要么都执行要么都不执行
    • 原孓性是指一个事务必须被视为一个不可分割的最小工作单元,只有事务中所有的数据库操作都执行成功才算整个事务执行成功

    • 一致性是指事物将数据库从一种状态转变为下一种一致的状态

    • 隔离性还可以称为并发控制、可串行化、锁等,当多个用户并发访问数据库时数据庫为每一个用户开启的事务,不能被其他事务的操作数据所干扰多个并发事务之间要互相隔离。

    • 事务一旦提交其所做的修改就会永远保存到数据库中,即使数据库发生故障也不应该对其有任何影响

      事务的持久性不能做到100%的持久,只能从事务本身的角度来保证永久性洏一些外部原因导致数据库发生故障,如硬盘损坏那么提交的数据可能都会丢失。

    • 存储过程就是一条或多条SQL语句的集合
  • 创建存储过程嘚基本语法格式:

    • 其中,CREATE PROCEDURE:用来创建存储过程的关键字

      sp_name:为存储过程的名称。

      • 在MySQL中变量可以在子程序中声明,用于保护数据处理过程Φ的值这些变量的作用范围在BEGIN…END程序中。

      • 其中var_name:为局部变量的名称。

        DEFAULT value:子句给变量提供一个默认值该值可以被声明一个常数或一个表达式。如果没有DEFAULT子句变量的初始值为NULL。

      • 使用SET语句为变量赋值

    • 定义条件是指事先定义程序执行过程中遇到的问题
    • 处理程序定义了在程序执行过程中遇到问题时应当采取的处理方式,并且保证存储过程在遇到警告或错误时能继续执行处理过程使用DECLARE语句定义
    • 在编写存储过程时,查询语句可能返回多条记录如果数据量非常大,则需要使用光标来逐条读取查询结果集中的记录
    • 光标是一种用于轻松处理多行數据的机制。
  • 存储过程中的流程控制语句用于将多个SQL语句划分或组合成符合业务逻辑的代码块MySQL中的流程控制语句有7个:

    • 其中,CALL:为调用存储过程的关键字

      sp_name:为存储过程的名称。

      Parameter:为存储过程的参数

    • 在MySQL中使用ALTER语句修改存储过程。

    • 其中sp_name:表示存储过程或函数的名称。

  • 视圖是从基本表中导出来的表可以像操作基本表一样操作视图。

    • 日常开发中我们可以经常使用的查询定义为视图从而使用户避免大量重複操作。

    • 通过视图用户只能查询和修改他们所能见到的数据数据库中的其他数据则看不到也取不到。

    • 视图可以帮助用户屏蔽真实表结构變化带来的影响

    • 使用DESCRIBE语句可以查看视图的字段信息。
    • 使用SHOW CREATE VIEW语句不仅可以查看创建视图时的定义语句还可以查看视图的字符编码。

当视圖不需要时可以将其删除,删除视图时只能删除视图的定义,不会删除数据

里面可能会有一些专业知识的错误或者格式上的错误,請各位大佬在评论区斧正

我要回帖

更多关于 很复杂 的文章

 

随机推荐