1.3 MySQL概述

什么是MySQL

MySQL,是Oracle公司开发、推广、支持的开源SQL数据管理系统。

官网地址

  • MySQL 是一个数据库管理系统

数据库是结构化的数据集合.它可能是任何东西,从简单的购物单到图片库,或者是企业网络中的大量信息。为了添加、访问、处理存储在计算机数据库中数据,就需要像MySQL一样的数据库管理系统。由于计算机擅长处理大量数据,数据库管理系统作为独立工具或其他应用的一部分在计算任务中扮演了很重要的角色。

  • MySQL是关系型数据库

关系型数据库将数据分别存储在单独的表中,而不是将所有数据都存储在一个存储空间中。为优化速度,数据库结构被组织成物理文件。通过数据库,表,视图,行,列等逻辑模型为编程提供了灵活的操作环境。你可以设置规则来管理不同数据字段间的关系,例如一对一,一对多,唯一,必选,可选和不同表间的“指针”。数据库强制执行这些规则,因此,在一个设计良好的数据库中,应该不会看到不一致,重复,孤立,过期,丢失的数据。

MySQL的SQL代表’structured query language’,SQL是访问数据库的通用标准。根据你的编程环境,你可以直接执行SQL,在其他语言中嵌入SQL语法,或者通过语言特定API隐藏SQL语法

  • MySQL是开源软件

  • MySQL数据库服务快,可靠,可拓展,易用

文章链接 https://fangzongzhou.github.io/2019/05/13/计算机/技术文档/MYSQL/Chapter_1_通用信息/1-3-MySQL概述/

javap

javap可以用来反编译class文件

命令参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-help  --help  -?                输出此用法消息
-version 版本信息
-v -verbose 输出附加信息
-l 输出行号和本地变量表
-public 仅显示公共类和成员
-protected 显示受保护的/公共类和成员
-package 显示程序包/受保护的/公共类
和成员 (默认)
-p -private 显示所有类和成员
-c 对代码进行反汇编
-s 输出内部类型签名
-sysinfo 显示正在处理的类的
系统信息 (路径, 大小, 日期, MD5 散列)
-constants 显示最终常量
--module <模块>, -m <模块> 指定包含要反汇编的类的模块
--module-path <路径> 指定查找应用程序模块的位置
--system <jdk> 指定查找系统模块的位置
--class-path <路径> 指定查找用户类文件的位置
-classpath <路径> 指定查找用户类文件的位置
-cp <路径> 指定查找用户类文件的位置
-bootclasspath <路径> 覆盖引导类文件的位置

verbose结果组成

1.基本信息

  • class文件版本号(对应的是jre版本,高版本编译的文件不能用低版本的javap反编译)
  • 类的访问权限
  • 类及父类名
  • 接口、字段、属性、方法及对应数量

2.常量池

存放各种常量以及符号引用

3.字段区域

列举该类中的各个字段,里边包含字段类型和访问权限

4.方法区域

包含方法描述符和访问权限,以及代码区域,代码区域开始位置声明了操作数栈及局部变量的最大值,方法接收参数的数量。这里的局部变量指的是字节码文件中变量的数量。

  • 字节码
  • 异常表
  • 行数映射表

文章链接 https://fangzongzhou.github.io/2018/10/08/计算机/技术栈/Java/javap/

Elasticsearch-索引

Elasticsearch中所有文档都是被存储在一个有一个的索引中

创建索引

最基本的创建索引的命令:

1
PUT twitter

使用所有默认配置创建一个叫做Twitter的索引

索引名称限制
这里有几个命名索引的限制。所有限制包含:

  • 只能小写字符
  • 不能包含, /, *, ?, “, <, >, |, ` ` (空格字符), ,, #
  • 不能以-, _, +开始
  • 不能是.或..
  • 不能长于255字节

索引设置

每个创建的索引可以有一个定义在body中的关联配置:

Read More

Elasticsearch-Mapping

Mapping是定义文档和其包含的字段的存储和索引的过程,可以使用它来定义:

  • 哪些string字段应该被看做全文字段
  • 哪些字段包含数字,日期或地理位置
  • 是否应将文档中所有字段的值索引到catch-all字段中
  • 日期数据的格式
  • 动态添加字段控制映射的自定义规则

字段数据类型

每个字段都有一个数据类型,它可以是:

  • 一个简单类型,例如:text,keyword,date,long,double,booleanip
  • 支持json分层特性的类型,例如:objectnested
  • 或是一些专业类型geo_point,geo_shapecompletion

Read More

Elasticsearch-配置

Elasticsearch提供了不错的默认配置,只需要进行很少的配置即可。多数设置可以在运行的集群上通过[Cluster Update Settings] API来进行修改。

配置文件应该包含节点特定的配置(node.name paths)或是节点加入集群需要的配置(cluster.name network.host)

配置文件位置

Elasticsearch有三个配置文件:

  • elasticsearch.yml 用来配置Elasticsearch
  • jvm.options 用来配置Elasticsearch的JVM配置
  • log4j2.properties 来配置Elasticsearch的日志

这些文件在配置目录下,默认依赖于你的文档分发位置(tar.gz 或zip)或包分发(Debian或RPM包)位置.

Read More

Elasticsearch-过滤器

在前边的章节中,我们跳过了一个document score的小细节(_score 字段在查询结果中),分数是一个数值,是文档与我们指定的查询的匹配程度的相对度量。数值越高,文档的相关性越强。

但是查询并不总是需要产生分数,特别是当它们只是被用来过滤文档集时,Elasticsearch会发现这些场景并自动优化查询的执行来避免计算无用的分数。

之前章节中介绍的bool query 同样支持filter从句,它可以使用query来限制文档被其他从句匹配,无论它被计算出的得分有多少,为了示范一个例子,让我们介绍下range query,它允许通过范围值来过滤文档,它通常被用做数值或数据过滤。

Read More

Elasticsearch-聚合

聚合为你的数据提供分组和提取统计数据的能力,最简单的理解聚合的方式是粗略的认为它和SQL GROUP BY 和SQL 聚合函数相同。在Elasticsearch中,你可以在一个查询返回结果中同时返回命中结果和各自的聚合结果。这是非常高效的方式,你可以使用简洁的API在一次网络调用中执行查询和复杂聚合并获取结果(同时或各自)。


开始,这个例子中我们通过state为accounts分组,按照数量倒序(默认)返回前十(默认)个结果:

1
2
3
4
5
6
7
8
9
10
11
12

GET /bank/_search
{
"size": 0,
"aggs": {
"group_by_state": {
"terms": {
"field": "state.keyword"
}
}
}
}

在SQL中,上边的聚合相当于:

1
SELECT state, COUNT(*) FROM bank GROUP BY state ORDER BY COUNT(*) DESC LIMIT 10;

Read More

Elasticsearch-查询

Query 介绍

Elasticsearch 提供一个可用来执行查询指令的JSON风格的语言。参照 Query DSL ,这个查询语句十分全面,并且在你第一次看上去感觉很恐怖,最好通过基本的示例来进行学习。

返回我们的上个例子,执行这个查询:

1
2
3
4
GET /bank/_search
{
"query": { "match_all": {} }
}

query 部分告诉我们查询是如何定义的,match_all 部分简单的定义了我们想要进行的查询。match_all是用来简单的对指定的索引进行全文档查询。

Read More

Search_API

让我们通过一些简单的查询来开始.这里是两个进行查询的基本方式;一种是通过REST request URL发送查询参数,另一种是通过https://www.elastic.co/guide/en/elasticsearch/reference/6.4/search-request-body.html发送查询参数。request body 的方式允许你通过更有表现力并且更为可读的JSON格式来定义你的查询,我们将会通过一个例子来讲解request URL查询,但在接下来的教程中,我们将仅仅使用request body的方式进行查询。

REST API从_search终端获取数据,这里的例子返回所有bank索引的文档。

1
GET /bank/_search?q=*&sort=account_number:asc&pretty

让我们一起来剖析这个查询的调用.我们在bank索引中查询(_search endpoint),q=*参数标明Elasticsearch匹配索引中的所有文档。sort=account_number:asc参数表明使用account_number 属性来对文档做升序排列,pretty参数同样的是为了告诉Elasticsearch来返回一个美化后的json结果。

Read More