优秀是一种习惯
开发环境:自己电脑
测试环境:测试人员 测试软件
生产环境:平时上网使用的环境
海量数据
从海量数据中提取有用的价值
数据的产生
1.业务数据库(用户产生的数据)
2.日志服务器(记录互联网上每一次操作)
3.爬虫爬取的数据(爬取同行的信息)
4.购买的信息
数据的抽取
Kettle
数据的存储
数据仓库
数据的计算
数据的应用
1.数据运营
2.用户画像
3.实施推荐
4.机器学习
5.数据挖掘
6.金融风控
冯诺依曼 提出冯诺依曼体系
计算机包括软件和硬件
软件:系统软件,操作系统,应用系统
硬件:CPU、输入输出设备
1.输入设备
2.输出设备
3.存储器 (硬盘:存储的数据不会丢失 内存:断电、重启即消失 读取速度远远快于硬盘)
4.运算器 (CPU=运算器+控制器)
5.控制器
1.开源、免费,拥有最为庞大的源码贡献者。
2.多用户、多任务。
3.良好的用户界面,优异的性能和稳定性。
快照:保存当前虚拟机状态 当虚拟机出现问题时 可以恢复到这个节点。
redhat:全球最大的linux发行商 被IBM收购。
ubuntu:目前,是Linux桌面操作系统做的最好的。
centos:免费版的redhat,基于redhat发行版的基础上 再重新编译发布的版本,目前被Redhat收购。
deepin:深度 目前国内做到的最好的一款Linux发行版。
/根目录
~用户家目录
#超级用户标识
¥普通用户标识
bin 二进制可执行的文件
sbin 二进制的命令 需要超级用户权限才可以执行
etc 系统配置文件 如网卡配置文件
home 用户的家目录
root 超级用户家目录
tmp 临时文件
dev 存放设备文件
usr 用于存放共享的系统资源
-rwxr-xr-- 21 root root 1292 Jun 28 18:59 anaconda-ks.cfg
长格式显示
-文件/d目录 当前用户的权限 当前用户所在组的权限 非当前用户所在组的权限 链接数 文件创建者名字 文件创建者所在组 文件大小 时间 文件名或目录名
r 可读 4
w可写 2
x可执行 1
-无 0
u 属主
g 属组
o 其他
- chmod 777 文件/目录
- chmod u+x 文件/目录 给属主加可执行权限
- chmod u=x 文件/目录 属主只可执行
- chmod -R 777 目录 给当前目录及目录下的所有文件加权限
. 开头的为隐藏文件
./ 或. 代表当前目录
…/或… 上一级目录
相对路径:相对于当前位置 省略当前所在路径
绝对路径:全路径
cd 回到用户家目录
cd …回到上一级目录
cd - 在最近两次打开的目录之间切换
ls -a 显示所有文件包含隐藏文件 记
ls -h 友好的显示文件大小
ls -l 全格式显示文件信息
ls -R 递归展示文件
mkdir -p 文件夹/文件夹 一次创建多级目录 记
touch 文件名.后缀 文件名.后缀 创建文件
tar -zcvf 压缩名.tar.gz Demo1.txt Demo2.txt
tar -zxvf 解压缩名.tar.gz -C 指定得到解压的地址 记
systemctl status/start/stop/restart firewalld/network/sshd CentOS 7
service firewalld/network/sshd status/start/stop/restart CentOS 6
rm -r 递归删除
rm -f 强制删除
cp -f 若目标文件已存在 直接覆盖原文件
cat -n 显示行数 包括 空行
grep -ni 关键字 文件名 查询文件中是否有关键字 显示行数 和 忽略大小写
grep -i 关键字 文件名 查询文件中是否有关键字 忽略大小写 记
rz上传
sz下载
scp 本地文件路径url - 用户名@IP地址: 目的路径 本机远端传文件
control+shift+c/v 复制 粘贴
control+l/clear清屏
ps -e 显示全部进程
ps -f长格式显示
ps -u 用户状态下运行的进程
| 管道 上一个输出 是下一个的输入 记
eg: ps -ef |grep -i mysql |…
kill -9 进程号 强杀
find 位置 【-type】 -name ‘内容’ 【-size 大小】-ls 记
find -type d 目录 f文件
vi/vim 三种模式 命令模式、编辑模式、末行模式。记
命令模式:
i 进入编辑模式 光标前
I 行头
a 光标后
A行尾
o当前行后插入一空行
O当前行前插入一空行
eg:
O 空行
I ---i【光标】a----A 当前行
o 空行
gg 回到文件顶部
G 回到文件末尾
q 不保存退出
q!强制不保存退出
wq 保存退出
wq!强制保存退出
x退出
编辑模式:
vi 文件名 +20 打开文件第20行 记
yy 复制
nyy
dd剪切
ndd
p粘贴
np
末行模式:
/内容 查找 记
N向前查找
n向后查找
:%/旧文本/新文本/g 全部替换
:%/旧文本/新文本/gc 会有提示 记
y 代替光标所在的单词
a 全部替换
n 不替换光标所在的单词
q 退出
hostname 查看主机名
hostname 主机名 临时修改主机名
reboot 重启
halt 关机
vi /etc/hostname 修改主机
ifconfig 查看ip地址
ip addr 查看ip地址 记
ipconfig windows系统查看ip
yum install -y vim yum下载
ping ip地址 心跳
ping www.baidu.com 可以抓包 进行分析
rpm 相当于windows 中的exe
tar.gz 相当于windows中的zip
rpm -i 安装应用软件(install)
rpm -e 卸载应用程序
rpm -vh 显示安装进度
rpm -U 升级软件包
rpm -qa 显示所有已安装的软件
方法对于当前的虚拟机来说因为网络ip是自动获取所以ip会经常发生变动,为了使ip固定并且可以联网所以可以搭建双网卡环境
添加nat类型的网络适配器一
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens37
vi ifcfg-ens37 修改配置信息
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp 将动态获取改为静态 static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 改为ens37
UUID=5a48b8d2-0563-4f1e-acff-789fb3cde5af 删除
DEVICE=ens33 改为ens37
ONBOOT=yes
添加选项
IPADDR=192.168.网段.100
注意:
网段设置为对应Vm8所在的网段
ip不能设置为1,不能于ens33冲突
重启网络服务
systemctl restart network
reboot
查看ip地址 ip addr
注意:连接静态ip
网卡1:
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.134.99
NETMASK=255.255.255.0
BROADCAST=192.168.134.255
#解释: 双网卡配置之网卡一 使用只粘贴上方文字
#网卡1使用NAT模式
#静态IP
#网段与自身虚拟机配置保持一致 即可
#作为虚拟机之前通信使用
网卡2:
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=dhcp
#解释: 双网卡配置之网卡二 使用只粘贴上方文字
#网卡1使用桥接模式
#动态IP
#作为连接公网使用
相关操作:
vi /etc/sysconfig/network-scripts/ifcfg-eth0 #配置网卡
rm -rf /etc/udev/rules.d/70-persistent-net.rules #删除MAC地址
service network restart #重启网络
service iptables stop #关闭防火墙
chkconfig iptables off # 关闭防火墙自启
ifconfig # 查看网络信息
vi /etc/hosts # 主机名和IP的映射
1.下载jdk的rpm包
2.上传rpm包到linux系统 默认上传目录为家目录
3.安装jdk rpm -ivh jdk.rpm
4.测试java -version
1.下载jdk的tar.gz包
2.上传
3.解压缩 tar -zxvf jdk-8u171-linux-x64.tar.gz
4.移动到usr 目录 mv jdk1.8.0_171/ /usr/
5.配置环境变量
全局环境变量 /etc/profile 推荐
用户环境变量 /root/.bash_profile
export JAVA_HOME=/usr/jdk1.8.0_171
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.
6.使配置生效(两种方式)
reboot
source /etc/profile
1.官网获取安装包
2.将安装包上传到linux系统 tar.gz
3.解压 tar -zxvf tomcat.tar.gz
4.改名 (选做)
5.移动tomcat到 /usr目录下
6.启动或者停止tomcat
startup.sh 启动 ./startup.sh
shutdown.sh 停止
7.查看tomncat的进程
ps -aux |grep tomcat 查看前台和后台进程(只需要关注后台进程)
jps 查看所有和java相关的服务进程(Bootstrap)
8.网页形式访问
http://192.168.65.128:8080/
9.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
10.修改tomcat端口号
修改conf目录里面的server.xml
11.查看tomcat的实时日志
tail -f /usr/tomcat8/logs/catalina.out
方法一:
rpm安装
1.预装配置
a.安装 vim vim是一个强大的文本编辑工具 (高亮的展示文件内容)
yum install -y vim
b.卸载centos7中默认安装的有数据库mariadb(mysql和mariadb有冲突)
查看是否存在mariadb
rpm -qa | grep mariadb
卸载
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64
--nodeps(表示只卸载mariadb不卸载mariadb相关的依赖)
再次查看是否卸载成功
rpm -qa | grep mariadb
2.获取mysql安装包
3.上传到linux系统中
4.安装mysql
a)执行 rpm -ivh perl-*
(perl-PlRPC-0.2020-14.el7.noarch.rpm
perl-Net-Daemon-0.48-5.el7.noarch.rpm
perl-IO-Compress-2.061-2.el7.noarch.rpm
perl-DBI-1.627-4.el7.x86_64.rpm
perl-Data-Dumper-2.145-3.el7.x86_64rpm
perl-Compress-Raw-Zlib-2.061-4.el7.x86_64,rpm
perl-Compress-Raw-Bzip2-2.061-3.el7.x86_64.rpm)
b)执行 rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
c)执行 rpm -ivh mysql-community-common-5.6.42-2.el7.x86_64.rpm
d)执行 rpm -ivh mysql-community-libs-5.6.42-2.el7.x86_64.rpm
e)执行 rpm -ivh mysql-community-client-5.6.42-2.el7.x86_64.rpm
f)执行 rpm -ivh mysql-community-server-5.6.42-2.el7.x86_64.rpm
5.安装成功之后 会形成一个mysql服务(mysqld)
systemctl start mysqld
systemctl stop mysqld
systemctl restart mysqld
6.账号设置 (设置一个新密码)
mysqladmin -u root -p password
第一个回车 需要输入原始密码(如果没有原始密码直接回车)
第二个回车 输入新密码
第三个回车 确认新密码
7.mysql -uroot -proot 登录到mysql服务
注意:默认安装的mysql数据库没有远程访问权限
1.远程无法连接的原因有哪些?
a.防火墙
b.默认远程主机无法访问 本地访问开启(localhost但是其他的不行)
如何开启mysql的远程主机访问?
a.登录到当前的mysql
mysql -uroot -proot
b.操作mysql库
use mysql;
c.查看当前库中的所用表,关注user表
d.查看表中数据
select host,user,password from user \G;
e.删除没有密码的数据
delete from user where password=""
f.需要将host的字段设置为"%"
%意思就是所有主机都可以访问
g.刷新权限
FLUSH PRIVILEGES;
方法二:简单方法
https://blog.csdn.net/qq_45925467/article/details/115914020?spm=1001.2014.3001.5501#10MySQLJDK_924
MySQL 开源免费的中型的数据库,被Oracle收购,6.x版本后开始收费。
Oracle 收费的大型数据库 Oracle公司的产品 Oracle收购SUN公司,收购mysql。
DB2 IBM公司的数据库产品,收费的 常用于银行。
sqlserver microsoft公司收费的中型数据库,c# .net等语言常用。
SQLite 嵌入式小型数据库 。
Redis 键值存储 读写性能极佳 小型数据据库
HBase 列式存储 高效存储大量数据的数据库
MongoDB 文档型数据库
DDL 数据的定义语言 create alter rename
DQL 数据的查询语言 select
DML 数据的操作语言 update insert delete
DCL 数据的控制语言 权限 安全级别的操作
TCL 数据的事务语言 transaction
- mysql -u root -p 回车 输入密码
- mysql -u root -p密码
- mysql -u root -h IP地址 -P 3306 -p 回车 密码
- 主键 primary key :唯一非空
- 外键 foreign key :用于关联表 一个表外键 指向另一个表的主键
- 唯一 unique :唯一 可以为空
- 不为空 not null :不能为空 可以重复
- 检查 check
- show databases; 显示所有数据库
- create database 数据库名; 创建数据库 方法1
- create database if not exists 数据库名; 创建数据库 方法2
- create database 数据库名 character set 字符集; 创建数据库 方法3
- drop database 数据库名; 删除数据库
- alter database 数据库名 character set 字符集; 修改数据库编码格式
- show create database 库名; 查看数据库字符集
- show create table 表名 查看表结构包含字符集
- select database(); 查看所在的数据库名称;
- create table 表名( 字段名 类型 约束,字段名 类型 约束,…); 创建表
- create table if not exists 表名( 字段名 类型 约束,字段名 类型 约束,…); 创建表
- create table 表名(字段名 类型,字段名 类型… 【constraint pk_表名】 primary key(字段1 ,字段2) ); 创建表
- alter table 表名 auto_increment =100; 设置自增长起始值
- alter table 表名 drop primary key; 删除主键
- rename table `旧表名` to 新表名; 修改表名称
- alter table 表名 change `旧字段名` 新字段名 类型 约束; 修改字段名及类型
- alter table 表名 modify 字段名 类型 约束; 修改约束及数据类型
- alter table 表名 add `字段` 类型 约束; 添加字段
- alter table 表名 drop `字段`; 删除字段
- drop table 表名; 删除表;
- use 数据库名; 切换数据库
- insert into 表名【(字段名,字段名,…)】 value(值,值,值…); 数据插入
- insert into 表名 values(值,值,值…)(值,值,值…)…; 数据插入 值与字段相对应
- update 表名 set 字段名=’ '; 更新该字段全部数据信息
- update 表名 set 字段名=’’ where 字段名 =‘ ’; 筛选数据进行修改对应的数据信息
- delete from 表名 where 字段名=‘ ’; 筛选数据进行删除对应的数据信息
- delete from 表名; DML 语言, 删除表所有信息, 一条条删除, 可以根据条件进行删除, 效率低 如果设置自增auto_increment,不清空记录数,配合事务 数据可以恢复。
- truncate 【table 】表名; DDL, 直接将表删除,重新建, 只能全部删除, 效率高 如果设置自增auto_increment , 清空记录数, 删除的数据无法恢复。
- select * from 表名; 查询表所有信息
- select version(); 查看数据库版本号
- select distinct 字段1,字段2,from 表名; 如果distinct后面是一个字段就只看当前字段,如果后面是多个字段 需要看多个字段的的值是否的都一样 都一样则去重
- select * from 表名 where 字段名=‘ ’ order by 字段名 默认升序asc/降序desc ; 条件查询并根据字段进行排序
- select 别1.字段名,别2.字段名 from 表1 as 别1, 表2 别2 where 别1.字段名=别2.字段名; 多表查询,并起别名。
组函数:记
- count() 统计个数
- sum() 计算求和
- avg() 求平均值
- max() 求最大数
- min() 求最小数
单行函数:
abs() 绝对值
sysdate() 查询当前日期
eg: select sysdate() from dual【哑表/空表 无意义】 ;查询当前日期
to_char(date日期值,‘字符串格式’) 给指定的日期值按照字符串要求转换成字符串类型值
eg:select to_char(sysdate,‘yyyy-mm-dd,day,hh24:mi:ss’) from dual;
to_date(string,‘格式字符串’) 将给定的string按照字符串要求变换成数据库支持的日期值
eg: to_char(to_date(‘1997-11-09’,‘yyyy-mm-dd’),‘day’)
- group by 分组
- group by having
硬性语法规定 首尾呼应 前后一致
- 只有出现在group by里的字段,才能够单独出现在select里 记
- 没有出现在group by里的字段,必须配合组函数才能出现在select里
- 如果在group by 里对字段应用了某个单行函数,那么这个字段select里必须使用同样的单行函数才能出现
- having 在分组后对数据过滤,where 在分组前对数据过滤。
- having 后面可以使用分组函数,where后面不可以使用分组函数。
limit offset,count
offseet:整数,偏移量 ,计算方式 (页数-1)*每页显示条数
count:整数,标识查询多少条数据
eg: 查询pro表前5条数据;
select * from pro limit 0,5;
select * from pro limit 5;
- row_number() 不管排名是否相同 按照 1,2,3…N
- rank() 排名相同的次名相同 ,后面排名就会跳过几次 1,2,2,4…
- dense_rank() 排名相同的名次一样 且后面名词不跳跃1,2,2,3…
新建表2,将表1内容插入表2中。
insert into table2 select name from table1;
将表1内容插入表2中 帮助创建表2。
Create into 表2 as select name from 表1;
% 代表零个或多个任意字符
_ 代表一个字符
like 模糊查询
is null 为空
is not null 不为空
!= 不等于
<> 不等于
not 不等于
<= 小于等于
>=大于等于
between …and … 显示在某一区间内 (包含头尾)
in(x,y) 显示在in列表中的值
and 和
or 或
|| 字符串连接符 eg:邮箱
select 字段 from 表1,表2
select 字段 from 表1 cross join 表2;
查询结果:笛卡尔积,两张表的乘积,产生大量的脏数据。
select 字段 from 表1 inner join 表2 ;
select 字段 from 表1 inner join 表2 where 条件;
查询结果:交集
select 字段 from 表1 left join 表2 on 条件
查询结果:左表全部 加 右表关联部分
select 字段 from 表1 right join 表2 on条件
查询结果:右表全部 加 左边关联部分
一对一: 两张表主键一一的对应, 任意一张表上创建一个外键 指向另一张表的主键 外间添加唯一约束
一对多:再多的一方创建外键 指向另一张表的主键
多对多:创建一个中间表 在中间表上创建外键 存放外键 分别指向主表的主键
foregin key
- create table 表名(字段 类型长度 约束,… [constraint 外键名] foregin key (外键字段) references 主表名(主键) 创建外键约束
- alter table 表名 add [constraint 外键名] foregin key (外键字段) references 主表名(主键); 添加外键
- alter table 表名 drop foreign key 外键名; 删除外键
加速查询速度
索引:一般会加载where的条件字段上
查询速度快,但增删改操作会影响速度 ,因为不仅要保存数据,还要保存索引的文件。
create index 索引名 on 表名(字段); 创建索引
create table 表名(字段 类型长度 约束,… index 索引名 (字段));
alter table 表名 add index 索引名(字段); 添加索引
show index from 表名; 显示索引
alter table 表名 drop index 索引名; 删除索引
drop index 索引名 on 表名 ; 删除索引
唯一索引
create unique index 索引名 on 表名(字段); 创建索引
create table 表名(字段 类型长度 约束,… unique 索引名 (字段));
alter table 表名 add unique 索引名(字段); 添加索引
select * from mysql.innodb_index_status where database_name=‘数据库名’; 显示索引
alter table 表名 drop index 索引名; 删除索引
Primary key
原子性 、一致性、隔离性、持久性
事务:由一组不可再分的sql命令组成的集合。
连接客户端,系统开辟一块内存空间(回滚段),用来暂时保存SQL命令执行结果,在事务没有结束前,回滚段里的数据只有当前客户端可见,当事务结束,需要客户端明确处理回滚段中的数据,事务成功发出commit,数据库将回滚段的数据写入数据文件,如果失败 则回滚 删除回滚段数据。
- DQL 自动提交 (select)
- DML 手动提交 (updata,delete,insert),commit提交,rollback 回滚。