先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
正文
Mysql 服务器的默认端口是 3306。
-
Mysql 是开源软件,随时可用,无需付费。
-
Mysql 是便携式的
-
带有命令提示符的 GUI。
-
使用 Mysql 查询浏览器支持管理
以下是 FLOAT 和 DOUBLE 的区别:
-
浮点数以 8 位精度存储在 FLOAT 中,并且有四个字节。
-
浮点数存储在 DOUBLE 中,精度为 18 位,有八个字节。
CHAR_LENGTH 是字符数,而 LENGTH 是字节数。Latin 字符的这两个数据是相同的,但是对于 Unicode 和其他编码,它们是不同的。
ENUM 是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用。
Create table size(name ENUM('Smail,'Medium','Large');
REGEXP 是模式匹配,其中匹配模式在搜索值的任何位置。
以下是 CHAR 和 VARCHAR 的区别:
-
CHAR 和 VARCHAR 类型在存储和检索方面有所不同
-
CHAR 列长度固定为创建表时声明的长度,长度值范围是 1 到 255当 CHAR 值被存储时,它们被用空格填充到特定长度,检索 CHAR 值时需删除尾随空格。
字符串类型是:
-
SET
-
BLOB
-
ENUM
-
CHAR
-
TEXT
-
VARCHAR
SELECT VERSION();
用于获取当前 Mysql 的版本。
存储引擎称为表类型,数据使用各种技术存储在文件中。
技术涉及:
-
Storage mechanism
-
Locking levels
-
Indexing
-
Capabilities and functions.
以下是 Mysql 中可用的驱动程序:
-
PHP 驱动程序
-
JDBC 驱动程序
-
ODBC 驱动程序
-
CWRAPPER
-
PYTHON 驱动程序
-
PERL 驱动程序
-
RUBY 驱动程序
-
CAP11PHP 驱动程序
-
Ado.net5.mxj
15.TIMESTAMP 在 在 UPDATE P CURRENT_TIMESTAMP 数据类型上做什么?
创建表时 TIMESTAMP 列用 Zero 更新。只要表中的其他字段发生更改,UPDATE
CURRENT_TIMESTAMP 修饰符就将时间戳字段更新为当前时间。
表格的每一行都由主键唯一标识,一个表只有一个主键。主键也是候选键。按照惯例,候选键可以被指定为主键,并且可以用于任何外键引用。
17.如何使用 Unix l shell 登录 Mysql ?
我们可以通过以下命令登录:
[mysql dir]/bin/mysql -h hostname -u -p
它用来压缩 MyISAM 表,这减少了磁盘或内存使用。
Heal 表的大小可通过称为 max_heap_table_size 的 Mysql 配置变量来控制。
20. MyISAM Static 和 和 MyISAM Dynamic 有什么区别?
在 MyISAM Static 上的所有字段有固定宽度。动态 MyISAM 表将具有像 TEXT,BLOB等字段,以适应不同长度的数据类型。MyISAM Static 在受损情况下更容易恢复。
federated 表,允许访问位于其他服务器数据库上的表。
22.如果一个表有一列定义为 TIMESTAMP ,将发生什么?
每当行被更改时,时间戳字段将获取当前时间戳。
23. 列设置为 AUTO INCREMENT 时,如果在表中达到最大值,会发生什么情况?
它会停止递增,任何进一步的插入都将产生错误,因为密钥已被使用。
LAST_INSERT_ID
将返回由 Auto_increment
分配的最后一个值,并且不需要指定表名
称。
索引是通过以下方式为表格定义的:
sqlqSHOW INDEX FROM <tablename>;
%对应于 0 个或更多字符,_只是 LIKE 语句中的一个字符。
27.如何在 x Unix 和 和 l Mysql 时间戳之间进行转换?
UNIX_TIMESTAMP
是从 Mysql 时间戳转换为 Unix 时间戳的命令
FROM_UNIXTIME
是从 Unix 时间戳转换为 Mysql 时间戳的命令
在 SELECT 语句的列比较中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND,OR 或LIKE 运算符。
行数可以通过以下代码获得:
SELECT COUNT(user_id)FROM users;
不区分
SELECT VERSION(), CURRENT_DATE;
SeLect version(), current_date;
seleCt vErSiOn(), current_DATE;
所有这些例子都是一样的,Mysql 不区分大小写。
LIKE 和 REGEXP 运算符用于表示^和%。
SELECT * FROM employee WHERE emp_name REGEXP "^b";
SELECT * FROM employee WHERE emp_name LIKE "%b";
BLOB 是一个二进制对象,可以容纳可变数量的数据。有四种类型的 BLOB
-
TINYBLOB
-
BLOB
-
MEDIUMBLOB
-
LONGBLOB
它们只能在所能容纳价值的最大长度上有所不同。TEXT 是一个不区分大小写的 BLOB。四种 TEXT 类型
-
TINYTEXT
-
TEXT
-
MEDIUMTEXT
-
LONGTEXT
它们对应于四种 BLOB 类型,并具有相同的最大长度和存储要求。BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小写,对TEXT 值不区分大小写。
33.mysql_fetch_array 和 和 mysql_fetch_object 的区别是什么?
以下是 mysql_fetch_array 和 mysql_fetch_object 的区别:
-
mysql_fetch_array()
- 将结果行作为关联数组或来自数据库的常规数组返回。 -
mysql_fetch_object
- 从数据库返回结果行作为对象。
以下命令用于在批处理模式下运行:
mysql;
mysql mysql.out
35.MyISAM 表格将在哪里存储,并且还提供其存储格式?
每个 MyISAM 表格以三种格式存储在磁盘上:
-
“.frm”文件存储表定义
-
数据文件具有“.MYD”(MYData)扩展名
-
索引文件具有“.MYI”(MYIndex)扩展名
共有 5 种类型的表格:
-
MyISAM
-
Heap
-
Merge
-
INNODB
-
ISAM
MyISAM 是 Mysql 的默认存储引擎。
ISAM 简称为索引顺序访问方法。它是由 IBM 开发的,用于在磁带等辅助存储系统上存储和检索数据。
DISTINCT 在所有列上转换为 GROUP BY,并与 ORDER BY 子句结合使用。
SELECT DISTINCT t1.a FROM t1,t2 where t1.a=t2.a;
如果想输入字符为十六进制数字,可以输入带有单引号的十六进制数字和前缀(X),或者只用(Ox)前缀输入十六进制数字。如果表达式上下文是字符串,则十六进制数字串将自动转换为字符串。
在 Mysql 中,使用以下代码查询显示前 50 行:
SELECT*FROM xx LIMIT 0,50;
任何标准表最多可以创建 16 个索引列。
42.NOW()和 CURRENT_DATE ()有什么区别?
NOW()命令用于显示当前年份,月份,日期,小时,分钟和秒。
CURRENT_DATE()仅显示当前年份,月份和日期。
以下对象是使用 CREATE 语句创建的:
-
DATABASE
-
EVENT
-
FUNCTION
-
INDEX
-
PROCEDURE
-
TABLE
-
TRIGGER
-
USER
-
VIEW
-
ACL(访问控制列表)是与对象关联的权限列表。这个列表是 Mysql 服务器安全模型的基础,它有助于排除用户无法连接的问题。
-
Mysql 将 ACL(也称为授权表)缓存在内存中。当用户尝试认证或运行命令时,Mysql 会按照预定的顺序检查 ACL 的认证信息和权限。
服务器突然断电导致数据文件损坏。强制关机,没有先关闭 mysql 服务等。
Mysql 服务器通过权限表来控制用户对数据库的访问,权限表存放在 mysql 数据库里,由mysql_install_db 脚本初始化。这些权限表分别 user,db,table_priv,columns_priv和 host。
==========================================================================
-
表级锁: 开销小, 加锁快; 不会出现死锁; 锁定粒度大, 发生锁冲突的概率最高, 并发度最低。
-
行级锁: 开销大, 加锁慢; 会出现死锁; 锁定粒度最小, 发生锁冲突的概率最低, 并发度也最高。
-
页面锁: 开销和加锁时间界于表锁和行锁之间; 会出现死锁; 锁定粒度界于表锁和行锁之间, 并发度一般。
- 共有 5 种类型的表格: 1、MyISAM2、Heap 3、Merge 4、INNODB 5、MISAM
3.简述在MySQL 数据库中 MyISAM 和InnoDB 的区别
MyISAM:
- 不支持事务, 但是每次查询都是原子的; 支持表级锁, 即每次操作是对整个表加锁; 存储表的总行数;一个 MYISAM 表有三个文件: 索引文件、表结构文件、数据文件;采用菲聚集索引, 索引文件的数据域存储指向数据文件的指针。辅索引与主索引基本一致, 但是辅索引不用保证唯一性。
InnoDb:
- 支持 ACID 的事务, 支持事务的四种隔离级别; 支持行级锁及外键约束: 因此可以支持写并发; 不存储总行数:一个 InnoDb 引擎存储在一个文件空间( 共享表空间, 表大小不受操作系统控制,一个表可能分布在多个文件里), 也有可能为多个( 设置为独立表空, 表大小受操作系统文件大小限制, 一般为 2G), 受操作系统文件大小的限制;主键索引采用聚集索引( 索引的数据域存储数据文件本身), 辅索引的数据域存储主键的值; 因此从辅索引查找数据, 需要先通过辅索引找到主键值, 再访问辅索引; 最好使用自增主键, 防止插入数据时, 为维持 B+树结构, 文件的大调整。
4.MySQL 中InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
SQL 标准定义的四个隔离级别为:
-
read uncommited : 读到未提交数据
-
read committed: 脏读, 不可重复读
-
repeatable read: 可重读
-
serializable : 串行事物
-
CHAR 和 VARCHAR 类型在存储和检索方面有所不同
-
CHAR 列长度固定为创建表时声明的长度, 长度值范围是 1 到 255 当 CHAR 值被存储时, 它们被
用空格填充到特定长度, 检索 CHAR 值时需删除尾随空格。
表格的每一行都由主键唯一标识,一个表只有一个主键。
主键也是候选键。按照惯例, 候选键可以被指定为主键, 并且可以用于任何外键引用。
它用来压缩 MyISAM 表, 这减少了磁盘或内存使用。
MyISAM Static 和 MyISAM Dynamic 有什么区别?
- 在 MyISAM Static 上的所有字段有固定宽度。动态 MyISAM 表将具有像 TEXT, BLOB 等字段, 以适应不同长度的数据类型。MyISAM Static 在受损情况下更容易恢复。
- 每当行被更改时, 时间戳字段将获取当前时间戳。列设置为 AUTO INCREMENT 时, 如果在表中达到最大值, 会发生什么情况?它会停止递增, 任何进一步的插入都将产生错误, 因为密钥已被使用。怎样才能找出最后一次插入时分配了哪个自动增量?LAST_INSERT_ID 将返回由 Auto_increment 分配的最后一个值, 并且不需要指定表名称。
索引是通过以下方式为表格定义的:
SHOW INDEX FROM ;
% 对应于 0 个或更多字符,只是 LIKE 语句中的一个字符。
在 SELECT 语句的列比较中使用=,<>,<=,<,> =,>,<<,>>,<=>,AND, OR 或 LIKE 运算符。
BLOB 是一个二进制对象, 可以容纳可变数量的数据。TEXT 是一个不区分大小写的 BLOB。BLOB 和 TEXT 类型之间的唯一区别在于对 BLOB 值进行排序和比较时区分大小写, 对 TEXT 值不区分大小写。
13.MySQL_fetch_array 和MySQL_fetch_object 的区别是什么?
以下是 MySQL_fetch_array 和 MySQL_fetch_object 的区别:
-
MySQL_fetch_array( ) – 将结果行作为关联数组或来自数据库的常规数组返回。
-
MySQL_fetch_object – 从数据库返回结果行作为对象。
14.MyISAM 表格将在哪里存储,并且还提供其存储格式?
每个 MyISAM 表格以三种格式存储在磁盘上:
-
·“.frm” 文件存储表定义
-
·数据文件具有“.MYD”( MYData)
-
扩展名索引文件具有“.MYI”( MYIndex) 扩展名
在 MySQL 中, 使用以下代码查询显示前 50 行:
SELECT*FROM TABLE LIMIT 0,50;
任何标准表最多可以创建 16 个索引列。
17.NOW()和 CURRENT_DATE()有什么区别?
NOW(): 命令用于显示当前年份, 月份, 日期, 小时, 分钟和秒。
CURRENT_DATE(): 仅显示当前年份, 月份和日期。
-
TINYTEXT
-
TEXT
-
MEDIUMTEXT
-
LONGTEXT
-
CONCAT(A, B) – 连接两个字符串值以创建单个字符串输出。通常用于将两个或多个字段合并为一个字段。
-
FORMAT(X, D)- 格式化数字 X 到 D 有效数字。
-
CURRDATE(), CURRTIME()- 返回当前日期或时间。
-
NOW() – 将当前日期和时间作为一个值返回。
-
MONTH(), DAY( ), YEAR(), WEEK(), WEEKDAY() – 从日期值中提取给定数据。
-
HOUR(), MINUTE(), SECOND() – 从时间值中提取给定数据。
-
DATEDIFF( A, B) – 确定两个日期之间的差异, 通常用于计算年龄
-
SUBTIMES( A, B) – 确定两次之间的差异。
-
FROMDAYS( INT) – 将整数天数转换为日期值。
在缺省模式下,MySQL 是 autocommit 模式的,所有的数据库更新操作都会即时提交, 所以在缺省情况下, MySQL 是不支持事务的。
- 但是如果你的 MySQL 表类型是使用 InnoDB Tables 或 BDB tables 的话, 你的MySQL 就可以使用事务处理,使用
SETAUTOCOMMIT=0
就可以使 MySQL 允许在非 autocommit 模式, 在非autocommit 模式下,你必须使用 COMMIT 来提交你的更改,或者用 ROLLBACK 来回滚你的更改。
NUMERIC 和 DECIMAL 类型被 MySQL 实现为同样的类型, 这在 SQL92 标准允许。他们被用于保存值, 该值的准确精度是极其重要的值, 例如与金钱有关的数据。当声明一个类是这些类型之一时, 精度和规模的能被(并且通常是)指定。
例如:
salary DECIMAL(9,2)
在这个例子中, 9(precision)代表将被用于存储值的总的小数位数,而 2(scale)代表将被用于存储小数
点后的位数。因此, 在这种情况下, 能被存储在 salary 列中的值的范围是从-9999999.99 到
9999999.99。
MySQL 服务器通过权限表来控制用户对数据库的访问, 权限表存放在 MySQL 数据库里,由MySQL_install_db 脚本初始化。
- 这些权限表分别 user,db,table_priv, columns_priv 和 host 。
字符串类型是:
-
SET
-
BLOB
-
ENUM
-
CHAR
-
TEXT
24.MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?
-
设计良好的数据库结构, 允许部分数据冗余, 尽量避免 join 查询, 提高效率。
-
选择合适的表字段数据类型和存储引擎, 适当的添加索引。
-
MySQL 库主从读写分离。
-
找规律分表, 减少单表中的数据量提高查询速度。
-
添加缓存机制, 比如 memcached, apc等。
-
不经常改动的页面, 生成静态页面。
-
书写高效率的 SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM
TABLE.
-
读写分离
-
分段加锁
最后
权威指南-第一本Docker书
引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。
总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。
关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-
设计良好的数据库结构, 允许部分数据冗余, 尽量避免 join 查询, 提高效率。
-
选择合适的表字段数据类型和存储引擎, 适当的添加索引。
-
MySQL 库主从读写分离。
-
找规律分表, 减少单表中的数据量提高查询速度。
-
添加缓存机制, 比如 memcached, apc等。
-
不经常改动的页面, 生成静态页面。
-
书写高效率的 SQL。比如 SELECT * FROM TABEL 改为 SELECT field_1, field_2, field_3 FROM
TABLE.
-
读写分离
-
分段加锁
最后
权威指南-第一本Docker书
引领完成Docker的安装、部署、管理和扩展,让其经历从测试到生产的整个开发生命周期,深入了解Docker适用于什么场景。并且这本Docker的学习权威指南介绍了其组件的基础知识,然后用Docker构建容器和服务来完成各种任务:利用Docker为新项目建立测试环境,演示如何使用持续集成的工作流集成Docker,如何构建应用程序服务和平台,如何使用Docker的API,如何扩展Docker。
总共包含了:简介、安装Docker、Docker入门、使用Docker镜像和仓库、在测试中使用Docker、使用Docker构建服务、使用Fig编配Docke、使用Docker API、获得帮助和对Docker进行改进等9个章节的知识。
[外链图片转存中…(img-V91K0jkQ-1713149728100)]
[外链图片转存中…(img-rMFsgc4v-1713149728100)]
[外链图片转存中…(img-D3e5MKjJ-1713149728101)]
[外链图片转存中…(img-TQNCmKyw-1713149728101)]
关于阿里内部都在强烈推荐使用的“K8S+Docker学习指南”—《深入浅出Kubernetes:理论+实战》、《权威指南-第一本Docker书》,看完之后两个字形容,爱了爱了!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-8lwdypoM-1713149728101)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!