mysql学习整理

news/2024/10/24 8:32:56/

DML语言

  • DML语言 : 数据操作语言

  • 数据库意义 : 数据存储、数据管理

  • 用于操作数据库对象中所包含的数据

  • 包括 :

    • INSERT (添加数据语句)
    • UPDATE (更新数据语句)
    • DELETE(删除外键)
  • Insert

  • 语法

    • 添加单条数据

      • 语法: INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES('值1','值2','值3')
  • INSERT INTO `users`(`username`, `password`, `avatar`) VALUES ('a', 'b', 'c')
    
    • 添加多条数据

    • 语法:INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES('值1','值2','值3'), ('值1','值2','值3')...

  • -- 例如
    INSERT INTO `users`(`username`, `password`, `avatar`)
    VALUES ('a', 'b', 'c'),('1', '2', '3')
    
  • 注意事项

    • 字段和字段之间使用英文逗号隔开
    • 字段是可以省略的,但是后面的值必须要一一对应,不能少
  • Update

  • 语法

  • UPDATE 表名 SET column=value [,column=value2,...] WHERE [条件];
    
    • column:要更改的数据列
    • value 为修改后的数据 , 可以为变量 , 具体指 , 表达式或者嵌套的SELECT结果
    • condition 为筛选条件 , 如不指定则修改该表的所有列数据
  • Where 条件子句

    • 有条件地从表中筛选数据
  • 运算符含义范围结果
    =等于5=6false
    <> 或 !=不等于5!=6true
    >大于5>6false
    <小于5<6true
    >=大于等于5>=6false
    <=小于等于5<=6true
    BETWEEN在某个范围之间BETWEEN 5 AND 10
    AND并且(&&)5 > 1 AND 1 > 2false
    OR或(||)5 > 1 OR 1 > 2true
  • 注意事项

    • column是数据库的列,尽量带上``
    • 条件,筛选的条件,如果没有指定,则会修改所有的列
    • value,可以是一个具体的值,也可以是一个变量
    • 多个设置的属性之间,使用英文逗号隔开
  • Delete &&Truncate

  • Delete语法

    • DELETE FROM 表名 WHERE [条件];
  •   DELETE FROM `users` WHERE id=1;
    
  • TRUNCATE语法

    • TRUNCATE [TABLE] table_name;
  •   TRUNCATE TABLE `users`
    
  • Delete 与 Truncate 的区别

    • 相同:

      • 都能删除数据,不删除表结构,但是TRUNCATE速度更快
    • 不同

      • 使用TRUNCATE TABLE 重新设置AUTO_INCREMENT计数器
      • 使用TRUNCATE TABLE 不会对事务有影响
  • Delete删除的问题 重启数据库现象

    • InnoDB 自增列会从1开始(存在内存中的,断电即失)
    • MyISAM 继续从上一个自增量开始(存在文件中的,不会丢失)
  • DQL语言

    • (Data Query Language: 数据查询语言)
    • 所有的查询操作都要用它 Select
    • 简单的查询,复杂的查询都能做~
    • 数据库中最核心的语言,最重要的语句
    • 使用频率最高的语句
  • SELECT语法

    • [] 括号代表可选的 , {}括号代表必选得
  • SELECT [ALL | DISTINCT]{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]} 
    FROM table_name [as table_alias][left | right | inner join table_name2] -- 联合查询 [WHERE ...] -- 指定结果需满足的条件[GROUP BY ...] -- 指定结果按照哪几个字段来分组 [HAVING] -- 过滤分组的记录必须满足的次要条件[ORDER BY ...] -- 指定查询记录按一个或多个条件排序[LIMIT {[offset,]row_count | row_countOFFSET offset}]; -- 指定查询的记录从哪条至哪条
    
  • 指定查询字段

  • -- 查询student表的全部数据
    SELECT * FROM student-- 查询指定字段
    SELECT `StudentNo`, `StudentName` FROM student
    
  • AS 字句作为别名

    • 可给数据列取一个新别名
    • 可给表取一个新别名
    • 可吧经计算或者总结果用另一个新名称来代替
  • -- 为列去别名, AS可以省略
    SELECT `StudentNo` AS 学号, `StudentName` AS 姓名 FROM studenS-- 为表取别名
    SELECT `StudentNo` As 学号, `StudentName` AS 姓名 FROM student AS s-- 为查询结果取一个新名字, CONCAT()函数拼接字符串
    SELECT CONCAT('姓名:', `StudentName` ) AS 新名字 FROM student
    
  • DISTINCT 去重关键字

  • -- 查询result表所有的数据
    SELECT * FROM result;-- 查询result表的StudentNo字段
    SELECT r.StudentNo From result as r;-- DISTINCT 去除重复项 , (默认是ALL)
    SELECT DISTINCT r.StudentNo FROM result as r;
    
  • 使用表达式的列

  • 数据库中的表达式:一般由文本值,列值,NULL,函数和操作符等组成

  • 应用场景:

    • SELECT语句返回的结果列中使用
    • SELECT语句中的ORDER BY, HAVING等字句中使用
    • DML语句中的Where条件语句中使用表达式
  • -- 查询系统版本(函数)
    SELECT VERSION();
    -- 计算7*7-1(表达式)
    SELECT 7*7-1 AS 计算结果;
    -- 查询自增的步长(变量)
    SELECT @@auto_increment_increment-- 学院考试成绩+1分查看
    SELECT `StudentNo`, `StudentResult` + 1 AS 提分后 FROM `result` AS r
    
  • Where条件语句

    • 作用: 用于检索数据表中符合条件的记录

    • 搜索条件可由一个或多个逻辑表达式组成,结果一般为真或假

    • 逻辑操作符

  • 操作符语法描述
    AND 或 &&a AND b 或 a && b逻辑与,同时为真结果才为真
    OR 或 ||a OR b 或 a || b逻辑或,只要一个为真,则结果为真
    NOT 或 !NOT a 或 !a逻辑非,若操作数为假,则结果为真!
  • -- 示例SQL语句
    -- 查询result表的学号与学生成绩
    SELECT `StudentNo`, `StudentResult` FROM result;
    -- 查询成绩在95-100之间的
    SELECT `StudentNo`, `StudentResult` FROM result WHERE StudentResult >=95 AND StudentResult <= 100;
    -- AND也可以写成&&
    SELECT `StudentNo`, `StudentResult` FROM result WHERE StudentResult >=95 && StudentResult <= 100;
    -- 模糊查询(区间)
    SELECT `StudentNo`, `StudentResult` FROM result WHERE StudentResult BETWEEN 95 AND 100;
    -- 查询除了1000号同学的成绩
    SELECT `StudentNo`, `StudentResult` FROM result WHERE NOT StudentNo = 1000;
    -- NOT也可以写成!
    SELECT `StudentNo`, `StudentResult` FROM result WHERE StudentNo != 1000;
    
  • 模糊查询:比较操作符

    • 数值数据类型的记录之就按才能进行算术运算;
    • 相同数据类型的数据之间才能进行比较;
  • 操作符名称语法描述
    IS NULLa IS NULL若操作符为NULL,则结果为真
    IS NOT NULLa IS NOT NULL若操作符不为NULL,则结果为真
    BETWEENa BETWEEN b AND c若 a 范围在 b 与 c 之间,则结果为真
    LIKEa LIKE bSQL 模式匹配,若a匹配b,则结果为真
    INa IN (a1,a2,a3,…)若 a 等于 a1,a2… 中的某一个,则结果为真
  • -- ======= like =======
    -- like结合 %(代表0到任意个字符) _(一个字符)
    -- 查询姓刘的同学
    select `StudentNo`, `StudentName` from student where `StudentName` like '刘%';
    -- 查询姓刘的同学,名字后面只有一个字的
    select `StudentNo`, `StudentName` from student where `StudentName` like '刘_';
    -- 查询姓刘的同学,名字后面只有两个字的
    select `StudentNo`, `StudentName` from student where `StudentName` like '刘__';
    -- 查询名字中间有嘉字的同学
    select `StudentNo`, `StudentName` from student where `StudentName` like '%嘉%';-- ======= in =======
    -- 查询 1001,1002,1003号学员
    select `StudentNo`, `StudentName` from student where StudentNo in (1001,1002,1003);
    -- 查询 地址在北京,南京,河南洛阳的学生
    select `StudentNo`, `StudentName`, `Address` from student where Address in ('北京', '南京', '河南洛阳');-- ======= null/not null =======
    -- 查询出生日期没有填写的同学
    select `StudentName` from student where BornDate is null;
    -- 查询出生日期填写了的同学
    select `StudentName` from student where BornDate is not null;
    -- 查询没有写家庭地址的同学(空字符串不等于null)
    select `StudentName` from student where Address='' or Address is null;
    
  • 连接查询

    • Join 对比
      • join on:连接查询
      • where:等值查询
  • 操作符名称描述
    inner join如果表中有至少一个匹配,则返回行
    right join左边中返回所有的值,即使右表中没有匹配数据
    left join右边中返回所有的值,即使左表中没有匹配数据
  • 基础使用

  • -- ======= inner join =======
    select s.StudentNo, StudentName, SubjectNo, StudentResult
    from student as s
    inner join result as r on s.StudentNo = r.StudentNo;-- ======= right join =======
    select s.StudentNo, StudentName, SubjectNo, StudentResult
    from student as s
    right join result as r on s.StudentNo=r.StudentNo-- ======= left join =======
    select s.StudentNo, StudentName, SubjectNo, StudentResult
    from student as s
    left join result as r on s.StudentNo=r.StudentNo
    
  • 进阶使用

  • -- 查询缺考的同学(左连接应用场景)
    select s.StudentNo, StudentName, SubjectNo, StudentResult
    from student as s
    left join result as r on s.StudentNo=r.StudentNo
    where StudentResult is null;-- 思考题:查询参加了考试的同学信息(学号,学生姓名,科目名,分数)
    select s.StudentNo, s.StudentName, r.StudentResult, sub.SubjectName
    from student as s
    right join result as r on s.StudentNo = r.StudentNo
    inner join subject as sub on r.SubjectNo = sub.SubjectNo
    
  • 数据表与自身进行连接

  • -- 编写SQL语句,将栏目的父子关系呈现出来 (父栏目名称,子栏目名称)
    -- 核心思想:把一张表看成两张一模一样的表,然后将这两张表连接查询(自连接)
    select a.categoryName as '父栏目', b.categoryName as '子栏目'
    from category as a, category as b
    where a.categoryid = b.pid;-- 思考题:查询参加了考试的同学信息(学号,学生姓名,科目名,分数)
    select s.StudentNo, s.StudentName,s2.SubjectName,r.StudentResult
    from student as s
    inner join result r on s.StudentNo = r.StudentNo
    inner join subject s2 on r.SubjectNo = s2.SubjectNo;-- 查询学员及所属的年级(学号,学生姓名,年级名)
    select s.StudentNo, s.StudentName,g.GradeName
    from student as s
    inner join grade g on s.GradeId = g.GradeID;-- 查询科目及所属的年级(科目名称,年级名称)
    select s.SubjectName, g.GradeName
    from subject as s
    inner join grade g on g.GradeID = s.GradeID;-- 查询 数据库结构-1 的所有考试结果(学号 学生姓名 科目名称 成绩)
    select s.StudentNo, s.StudentName,s2.SubjectName,r.StudentResult
    from student as s
    inner join subject s2 on s.GradeId = s2.GradeID
    inner join result r on s.StudentNo = r.StudentNo
    where s2.SubjectName = '数据库结构-1';
    
  • 分页

    • 语法: [LIMIT {[offset,] row_count | row_count OFFSET offset}];
  •   -- 第N页 : limit (PageNo-1)*PageSize,-- PageSzie [PageNo:页码,PageSize:单页面显示条数]
    
  • -- 每页显示5条数据
    select s.StudentNo, s.StudentName,s2.SubjectName,r.StudentResult
    from student as s
    inner join subject s2 on s.GradeId = s2.GradeID
    inner join result r on s.StudentNo = r.StudentNo
    where s2.SubjectName = '数据库结构-1'
    order by r.StudentResult asc
    limit 0,5;-- 查询 JAVA第一学年 课程成绩前10名并且分数大于80的学生信息(学号,姓名,课程名,分数)
    select s.StudentNo,s.StudentName,s2.SubjectName,r.StudentResult
    from student as s
    inner join result r on s.StudentNo = r.StudentNo
    inner join subject s2 on r.SubjectNo = s2.SubjectNo
    where s2.SubjectName = 'JAVA第一学年'
    order by r.StudentResult desc
    limit 0,10;
    
  • 排序

    • 语法:order by [字段名] [desc/asc]

    • desc: 降序,由大到小

    • asc: 升序,由小到大

  • -- 查询 数据库结构-1 的所有考试结果(学号 学生姓名 科目名称 成绩) 降序
    select s.StudentNo, s.StudentName,s2.SubjectName,r.StudentResult
    from student as s
    inner join subject s2 on s.GradeId = s2.GradeID
    inner join result r on s.StudentNo = r.StudentNo
    where s2.SubjectName = '数据库结构-1'
    order by r.StudentResult desc ;-- 查询 数据库结构-1 的所有考试结果(学号 学生姓名 科目名称 成绩) 升序
    select s.StudentNo, s.StudentName,s2.SubjectName,r.StudentResult
    from student as s
    inner join subject s2 on s.GradeId = s2.GradeID
    inner join result r on s.StudentNo = r.StudentNo
    where s2.SubjectName = '数据库结构-1'
    order by r.StudentResult asc ;
    
  • 子查询

    • 在查询语句中的WHERE条件子句中,又嵌套了另一个查询语句

    • 嵌套查询可由多个子查询组成,求解的方式是由里及外

    • 子查询返回的结果一般都是集合,故而建议使用IN关键字

  • -- 查询 数据库结构-1 的所有考试结果(学号,科目编号,成绩),降序排列
    -- 方式一
    select r.StudentNo, s.SubjectName, r.StudentResult
    from result as rinner join subject s on r.SubjectNo = s.SubjectNo
    where s.SubjectName = '数据库结构-1'
    order by r.StudentResult desc;-- 方式二:使用子查询(执行顺序:由里及外)
    select r.StudentNo, r.SubjectNo, r.StudentResult
    from result as r
    where SubjectNo = (select SubjectNofrom subjectwhere SubjectName = '数据库结构-1'
    )
    order by r.StudentResult desc;
    -- 方法一:使用连接查询
    -- 查询课程为 高等数学-2 且分数不小于80分的学生的学号和姓名select s.StudentNo, s.StudentName, s2.SubjectName, r.StudentResult
    from student as sinner join result r on s.StudentNo = r.StudentNoinner join subject s2 on r.SubjectNo = s2.SubjectNo
    where s2.SubjectName = '高等数学-2'and r.StudentResult >= 80;-- 方法二:使用连接查询+子查询
    -- 分数不小于80分的学生的学号和姓名
    select s.StudentNo, s.StudentName, s2.SubjectName, r.StudentResult
    from student as sinner join result r on s.StudentNo = r.StudentNoinner join subject s2 on s.GradeId = s2.GradeID
    where StudentResult >= 80;-- 在上面SQL基础上,添加需求:课程为 高等数学-2
    select s.StudentNo, s.StudentName, r.StudentResult
    from student as sinner join result r on s.StudentNo = r.StudentNo
    where StudentResult >= 80and r.SubjectNo = (select SubjectNofrom subjectwhere SubjectName = '高等数学-2'
    );-- 方法三:使用子查询
    -- 分步写简单sql语句,然后将其嵌套起来
    select s.StudentNo,s.StudentName
    from student as s
    where StudentNo in (select r.StudentNofrom result as rwhere r.StudentResult >= 80AND r.SubjectNo = (select sub.SubjectNofrom subject as subwhere sub.SubjectName = '高等数学-2')
    );/* 
    练习题目:查 C语言-1 的前5名学生的成绩信息(学号,姓名,分数)使用子查询,查询郭靖同学所在的年级名称 
    */-- C语言-1 的前5名学生的成绩信息(学号,姓名,分数)
    select s.StudentNo, s.StudentName, r.StudentResult
    from student as sinner join result r on s.StudentNo = r.StudentNo
    order by r.StudentResult desc
    limit 0,5
    ;-- 使用子查询,查询周丹同学所在的年级名称
    select g.GradeName
    from grade as g
    where GradeID = (select s.GradeIdfrom student as swhere StudentName = '周丹'
    );
    
  • 分组和过滤

  • -- 查询不同课程的平均分,最高分,最低分 
    -- 前提:根据不同的课程进行分组
    select s.SubjectName, avg(r.StudentResult) as 平均分, max(r.StudentResult) as 最高分, min(r.StudentResult) as 最低分
    from result as r
    inner join subject s on r.SubjectNo = s.SubjectNo
    group by r.SubjectNo
    having  平均分 > 80
    
  • MySQL函数

  • 常用函数

  • 数据函数

  • -- ======= 数学运算 =======
    -- 绝对值
    select abs(-8);
    -- 向上取整
    select ceiling(9.4);
    -- 向下取整
    select floor(9.4);
    -- 返回一个0~1之间的整数
    select rand();
    -- 判断一个数的符号,负数返回1,正数返回1,0返回0
    select sign(10);
    
  • 字符串函数

  • -- ======= 字符串函数 =======
    -- 字符串长度
    select char_length('你猜我猜不猜你猜不猜');
    -- 拼接字符串
    select concat('a', 'b', 'c');
    -- 查询,从某个位置开始替换某个长度
    select insert('我爱Golang',1,1,'SliverHorn');
    -- 小写字母
    select lower('SliverHorn');
    -- 大写字母
    select UPPER('SliverHorn');
    -- 返回第一次出现的索引
    select instr('SliverHorn', 'r');
    -- 替换出现的指定字符串
    select replace('SliverHorn说SliverHorn', '说', '-->');
    -- 返回制定本的子字符串(源字符串,截取的位置,截取的长度)
    select substr('SliverHorn', 4, 6);
    -- 字符串反转
    select reverse('SliverHorn');-- 查询姓周的同学,改成邹
    select replace(StudentName, '周', '邹') as 名字
    from student where StudentName LIKE '周%';
    
  • 日期和时间函数

  • -- ======= 日期和时间函数 =======
    -- 获取当前日期
    select current_date();
    -- 获取当前日期
    select curdate();
    -- 获取当前的时间
    select now();
    -- 获取本地时间
    select localtime();
    -- 获取系统时间
    select sysdate();-- 获取当前年份
    select year(now());
    -- 获取当前月份
    select month(now());
    -- 获取当前日
    select day(now());
    -- 获取当前时
    select hour(now());
    -- 获取当前的分
    select minute(now());
    -- 获取当前秒
    select second(now());
    
  • 系统信息函数

  • -- ======= 系统信息函数 =======
    -- 版本
    select version();
    -- 用户
    select user();
    
  • 聚合函数

  • 函数名描述
    COUNT()返回满足Select条件的记录总和数,如 select count() 【不建议使用 ,效率低】
    SUM()返回数字字段或表达式列作统计,返回一列的总和。
    AVG()通常为数值字段或表达列作统计,返回一列的平均值
    MAX()可以为数值字段,字符字段或表达式列作统计,返回最大的值。
    MIN()可以为数值字段,字符字段或表达式列作统计,返回最小的值。
  • -- ======= 聚合函数 =======
    select count(StudentName) from student;
    select count(*) from student;
    select count(1) from student;
    -- 从含义上讲,count(1) 与 count(*) 都表示对全部数据行的查询。
    -- count(字段) 会统计该字段在表中出现的次数,忽略字段为null 的情况。即不统计字段为null 的记录。
    -- count(*) 包括了所有的列,相当于行数,在统计结果的时候,包含字段为null 的记录;
    -- count(1) 用1代表代码行,在统计结果的时候,包含字段为null 的记录 。/* 很多人认为count(1)执行的效率会比count(*)高,原因是count(*)会存在全表扫描,而count(1) 可以针对一个字段进行查询。其实不然,count(1)和count(*)都会对全表进行扫描,统计所有记录的 条数,包括那些为null的记录,因此,它们的效率可以说是相差无几。而count(字段)则与前两者不 同,它会统计该字段不为null的记录条数。
    下面它们之间的一些对比:
    1)在表没有主键时,count(1)比count(*)快 2)有主键时,主键作为计算条件,count(主键)效率最高; 3)若表格只有一个字段,则count(*)效率较高。
    */
    select sum(r.StudentResult) as 总和 from result as r;
    select avg(r.StudentResult) as 平均分 from result as r;
    select max(r.StudentResult) as 最高分 from result as r;
    select min(r.StudentResult) as 最低分 from result as r;
    
  • 事务

  • 概述

  • 什么是事务

    • 事务就是将一组SQL语句放在同一批次内去执行
    • 如果一个SQL出错,则改批次内的所有SQL都将被取消执行
    • MySQL事务处理只支持InnoDB和BDB数据表类型
  • 事务的ACID原则

    • 原子性(Atomic)

      • 整个事务中的所有操作,要么全部完成,要么全部失败,不可能停滞在中间的某个环节.事务在执行过后才能中发生错误,会被回滚(Rollback) 到事务开始前的状态,就像这个事务从来没有执行过一样.
    • 一致性(Consist)

      • 一个事务可以封装状态改变(除非它是一个只读的).事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少.如果事务是并发多个,系统也必须如同串行事务一样的操作,其主要特征是保护性和不变性(Presering an lnvarriant).
      • 以转账案例为例,假如有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同事发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元.五个账户的总额也应该还是500,这就是保护性和不变性.
    • 隔离性(isolated)

      • 隔离状态执行事务,是它们好像是系统在给定时间内执行的唯一操作.如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统.这种属性有时称为串行化,为了防止事务操作的混淆,必须串行化或者序列化请求,使得在同一时间仅有一个请求用于同一数据.
    • 持久性(Durable)

      • 在事务完成后,该事务对数据库所作的更改,持久的保存在数据库之中,并不会被回滚
  • 事务实现: 基本语法

  • -- mysql 是默认开启事务,自动提交
    -- 关闭自动提交
    set autocommit = 0;
    -- 开启自动提交
    set autocommit = 1;-- 手动处理事务
    set autocommit = 0;-- 事务开启:标记一个事务的开始,从这个之后的sql都在同一个事务内
    start transaction;-- 提交:持久化到磁盘(成功)
    commit;-- 回滚:回到原来的样子(失败!)
    rollback;-- 事务结束开启自动提交
    set autocommit = 1;-- 设置一个事务的保存点
    savepoint 保存点名称;-- 回滚到保存点
    rollback to savepoint 保存点名称;-- 删除保存点
    release savepoint 保存点名称;
    
  • 事务实现:测试题目

  • /*
    课堂测试题目
    A在线买一款价格为500元商品,网上银行转账. A的银行卡余额为2000,然后给商家B支付500. 商家B一开始的银行卡余额为10000
    创建数据库shop和创建表account并插入2条数据 */
    CREATE DATABASE `shop`CHARACTER SET utf8 COLLATE utf8_general_ci; USE `shop`;
    CREATE TABLE `account` (`id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) NOT NULL,`cash` DECIMAL(9,2) NOT NULL, PRIMARY KEY (`id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8 INSERT INTO account (`name`,`cash`)
    VALUES('A',2000.00),('B',10000.00)
    -- 转账实现
    SET autocommit = 0; -- 关闭自动提交
    START TRANSACTION; -- 开始一个事务,标记事务的起始点 UPDATE account SET cash=cash-500 WHERE `name`='A'; UPDATE account SET cash=cash+500 WHERE `name`='B'; COMMIT; -- 提交事务
    # rollback;
    SET autocommit = 1; -- 恢复自动提交
    

索引


http://www.ppmy.cn/news/421217.html

相关文章

git config --global core.autocrlf input (在检出代码时不自动转换行尾,在提交代码时自动将行尾转换为LF)

文章目录 git config --global core.autocrlf inputcore.autocrlf三种配置项&#xff08;true、input、false&#xff09;补充&#xff1a;git的检出&#xff08;Checkout&#xff09;和提交&#xff08;Commit&#xff09;git pull已包含检出&#xff08;checkout操作&#xf…

常用API(Object,Objects,StringBuilder,Math,System,BigDecimal)

1&#xff1a;Object类 1&#xff1a;Object类的作用&#xff1a; 一个类要么默认继承Object类&#xff0c;要么间接继承了Object类&#xff0c;Object类是Java中的祖宗类。Object类的方法是一切子类都可以直接使用的&#xff0c;所以我们要学习Object类的方法。 2&#xff…

计算机未来五年最吃香的4个职位,对女生超级友好!

今年计算机毕业的学弟学妹对于找工作感觉到非常焦虑&#xff0c;不知道该哪个方向就业才有出路。很多同学感觉在学校好像什么都学了&#xff0c;又好像什么都没学到&#xff0c;先不说企业会不会招&#xff0c;自己就连投简历的勇气都没有&#xff0c;生怕大把的简历投出去就石…

Wallpaper壁纸提取得到tex文件,tex文件转图像,tex文件转png,tex文件提取壁纸,Wallpaper壁纸提取无法得到图像文件,RePKG-GUI提取得到tex文件而不是图像的解决方法

之前我们介绍了如何利用RePKG-GUI工具从Wallpaper壁纸的sence.pkg文件提取壁纸&#xff0c;但最近在提取壁纸时&#xff0c;我发现&#xff0c;有一小部分壁纸无法利用RePKG-GUI工具提取得到图像文件&#xff0c;而是会得到一个.tex类型的文件。 Bug是怎么产生的暂时不知道&am…

png显示黑色背景

问题&#xff1a;word打印的二维码png图片不能识别&#xff0c;画图板里面黑色的却可以识别&#xff0c;估计word能打bmp, 不能打png&#xff0c;然后测试 使用cimage加载png图片的时候&#xff0c;画到单文档里面变黑了&#xff0c;然后百度&#xff0c;把修改好的代码写到下面…

Frontiers in Microbiology:DAP-seq技术在猪苓C2H2转录因子PuCRZ1调控菌丝生长及渗透胁迫耐受性机制研究中的应用

猪苓&#xff08;Polyporus umbellatus&#xff09;是一种可食用的蘑菇&#xff0c;也是我国常用的菌类药材之一&#xff0c;至今已有2000多年的药用历史&#xff0c;在《神农本草经》、《本草纲目》、《本草求真》等典籍中均有记载。猪苓具有利尿、抗菌作用&#xff0c;近年来…

【玩转Docker小鲸鱼叭】虚拟化技术是什么?

到底什么是虚拟化&#xff1f; Docker 是一款基于容器虚拟化技术构建的软件&#xff0c;那到底什么虚拟化技术呢&#xff1f;在学习Docker之前&#xff0c;先简单了解下虚拟化技术。 虚拟化是云原生的实现基础&#xff0c;它能够帮助我们更加有效地利用物理计算机硬件。 虚拟…

【双曲几何学 02】什么是极点和极线?

一、说明 Pole and polar 对于几何学&#xff0c;是普遍的概念。可能高中就学过&#xff0c;问题是在双曲几何又用到这个概念&#xff0c;因此&#xff0c;这里再次强调理解这个概念 。为后边学习双曲几何扫清障碍。 二、基本概念 在几何学中&#xff0c;极点和极线分别是相对于…