接触名词汇总

1.使用关键字 explain
explian关键字详解

2.group by 和having的区别
Group By语句从英文的字面意义上理解就是“根据(by)一定的规则进行分组(Group)”。
  作用:通过一定的规则将一个数据集划分成若干个小的区域,然后针对若干个小区域进行数据处理。
  注意:group by 是先排序后分组!

需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下:

1、执行where子句查找符合条件的数据;

2、使用group by 子句对数据进行分组;

3、对group by 子句形成的组运行聚集函数计算每一组的值;

4、最后用having 子句去掉不符合条件的组。

3.case的用法 多用于统计数量
THEN后边的值与ELSE后边的值类型应一致,否则会报错

现老师要统计班中,有多少男同学,多少女同学,并统计男同学中有几人及格,女同学中有几人及格,要求用一个SQL输出结果。


SELECT 
	SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT,
	SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_PASS,
	SUM (CASE WHEN STU_SCORE >= 60 AND STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_PASS
FROM 
	THTF_STUDENTS

4.覆盖索引:
就是说我select 字段1,字段2,与我建立的符合索引个数和顺序一致。例如:建的索引 字段一 字段二,查的也是字段一、字段二。理解方式一:就是select 的数据列只用从索引中就能够取得,不必读取数据行,mysql可以利用索引返回select列表中的字段,而不必根据索引再次读取数据文件,换句话说查询列要被所建的索引覆盖,一个索引包含了(或覆盖了)满足查询结果的数据就叫做覆盖索引。
注意:如果要使用覆盖索引,一定要注意select列表中只取出需要的列,不可select * ,因为如果将所有字段一起做索引会导致索引文件过大,查询性能下降。索引的字段不只包含查询列,还需要包含查询条件、排序等。
5.聚簇索引 非聚簇索引以及回表
聚集索引

聚集索引即索引结构和数据一起存放的索引。主键索引属于聚集索引。

在 Mysql 中,InnoDB 引擎的表的 .ibd文件就包含了该表的索引和数据,对于 InnoDB
引擎表来说,该表的索引(B+树)的每个非叶子节点存储索引,叶子节点存储索引和索引对应的数据。

聚集索引的优点 聚集索引的查询速度非常的快,因为整个B+树本身就是一颗多叉平衡树,叶子节点也都是有序的,定位到索引的节点,就相当于定位到了数据。

聚集索引的缺点
依赖于有序的数据 :因为 B+树是多路平衡树,如果索引的数据不是有序的,那么就需要在插入时排序,如果数据是整型还好,否则类似于字符串或 UUID
这种又长又难比较的数据,插入或查找的速度肯定比较慢。
更新代价大 : 如果对索引列的数据被修改时,那么对应的索引也将会被修改,
而且况聚集索引的叶子节点还存放着数据,修改代价肯定是较大的, 所以对于主键索引来说,主键一般都是不可被修改的。
非聚集索引
非聚集索引即索引结构和数据分开存放的索引。

二级索引属于非聚集索引。

MYISAM 引擎的表的.MYI 文件包含了表的索引, 该表的索引(B+树)的每个叶子非叶子节点存储索引,
叶子节点存储索引和索引对应数据的指针,指向.MYD 文件的数据。

非聚集索引的叶子节点并不一定存放数据的指针, 因为二级索引的叶子节点就存放的是主键,根据主键再回表查数据。

非聚集索引的优点
更新代价比聚集索引要小 。非聚集索引的更新代价就没有聚集索引那么大了,非聚集索引的叶子节点是不存放数据的

非聚集索引的缺点
跟聚集索引一样,非聚集索引也依赖于有序的数据
可能会二次查询(回表) :这应该是非聚集索引最大的缺点了。
当查到索引对应的指针或主键后,可能还需要根据指针或主键再到数据文件或表中查询。

6.DWD ODS数据仓库
[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念
7.curl命令

curl -X POST --header"Content-Type:application/json" --data ‘{}’ url (使用post模拟json格式请求接口)
url 可以是运在url接口的代码 例如:
curl -H "Content-Type: application/json" -X POST -d '{}' "http://127.0.0.1:8808/payment/api/create?id=1498217827599909091"

8.CAP理论
CAP理论详解
9.git命令总结

git reset --hard HEAD^   取消最后一次提交本地仓库
git restore .    取消保存所有修改
 git branch --set-upstream-to=origin/<分支> cui_callback   跟踪远程分支

10.动态语言和静态语言的区别

动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型,比如Python和Ruby
静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量在使用前要声明变量的数据类型,这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误,典型代表C/C++和Java、

11.thrift的安装,thrift接口是什么
12.mysql刷盘机制 乐观锁 悲观锁的区别

13.mysql存储数据为什么使用页进行存储 和操作系统的页有什么区别
14.http为什么在应用层层面是同步的但是在操作系统层面是异步的
15.UUID的作用
16.service层和dao层区别

Service是业务层,Dao是数据访问层,这样的分层是基于MVC架构来说的。

Dao层:全称为data access object,属于一种bai比较底层,比较基础的操作,具体到对于某个表、某个实体的增删改查

Service层:被称为服务,肯定是相比之下比较高层次的一层结构,相当于将几种操作封装起来。

具体起来,Dao的作用是封装对数据库的访问:增删改查,不涉及业务逻辑,只是达到按某个条件获得指定数据的要求;
而Service,则是专注业务逻辑,对于其中需要的数据库操作,都通过Dao去实现。

17.mvc三层架构

MVC是一种使用设计创建 Web 应用程序的。
Model(数据访问层)(模型)表示应用程序核心(比如数据库记录列表)。
View(表示层)(视图)显示数据(数据库记录)。
Controller(业务逻辑层)(控制器)处理输入(写入数据库记录)请求数据和转发到视图
三层架构分为:表现层(UI)(web层)、业务逻辑层(BLL)(service层)、数据访问层(DAL)(dao层) ,再加上实体类库(Model)

1.实体类库(Model),在Java中,往往将其称为Entity实体类。数据库中用于存放数据,而我们通常选择会用一个专门的类来抽象出数据表的结构,类的属性就一对一的对应这表的属性。

·一般来说,Model实体类库层需要被DAL层,BIL层和UI层引用。

2.数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

·DAL就是根据业务需求,构造SQL语句,构造参数,调用帮助类,获取结果,DAL层被BIL层调用

3.业务逻辑层(BLL)

·BLL层好比是桥梁,将UI表示层与DAL数据访问层之间联系起来。所要负责的,就是处理涉及业务逻辑相关的问题,比如在调用访问数据库之前,先处理数据、判断数据。

18.动态编译和静态编译

静态编译与动态编译的区别:
  1、动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令。
  所以其优点一方面是缩小了执行文件本身的体积,另一方面是加快了编译速度,节省了系统资源。
  缺点一是哪怕是很简单的程序,只用到了链接库中的一两条命令,也需要附带一个相对庞大的链接库;二是如果其他计算机上没有安装对应的运行库,则用动态编译的可执行文件就不能运行。
  2、静态编译就是编译器在编译可执行文件的时候,将可执行文件需要调用的对应动态链接库(.so)中的部分提取出来,链接到可执行文件中去,使可执行文件在运行的时候不依赖于动态链接库。所以其优缺点与动态编译的可执行文件正好互补。
静态编译:在编译时确定类型,绑定对象,即通过。
动态编译:运行时确定类型,绑定对象。

动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。

java中的反射就是运用了动态编译创建对象。

19.git命令rebase和merge的区别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值