Kubernetes
Kubernetes镜像
简介
Kubernetes是一个开源系统,用于容器化应用的自动部署、扩缩和管理。它将构成应用的容器按逻辑单位进行分组以便于管理和发现。
下载地址:https://mirrors.aliyun.com/kubernetes/
配置方法
Debian / Ubuntu
1 | apt-get update && apt-get install -y apt-transport-https |
CentOS / RHEL / Fedora
1 | cat <<EOF > /etc/yum.repos.d/kubernetes.repo |
ps: 由于官网未开放同步方式, 可能会有索引gpg检查失败的情况, 这时请用 yum install -y --nogpgcheck kubelet kubeadm kubectl
安装
相关链接
jdbc连接数据库SSL
在Java8及高版本以上的版本在调用ssl时会出现javax.net.ssl.SSLHandshakeException: No appropriate protocol
的异常。
1 | javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or cipher suites are inappropriate) |
解决办法如下:
- 修改
jre/lib/security/java.security
中的disabledAlgorithms
,删除SSLv3, TLSv1, TLSv1.1
,然后重启应用即可。在vim下,可以使用/disabledAlgorithms
快速查找。
jdk.tls.disabledAlgorithms=RC4, DES, MD5withRSA, \ DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, \ include jdk.disabled.namedCurves
如果修改了,保存了,重启了还是没有效果,就看下面这个方法:
- 修改jdk配置文件
/etc/crypto-policies/back-ends/java.config
,类似上面方法一样,删除SSLv3, TLSv1, TLSv1.1
,保存重启应用。
jdk.tls.disabledAlgorithms=DH keySize < 2048, SSLv2, SSLv3, TLSv1.1, DHE_DSS, RSA_EXPORT, DHE_DSS_EXPORT, DHE_RSA_EXPORT, DH_DSS_EXPORT, DH_RSA_EXPORT, DH_anon, ECDH_anon, DH_RSA, DH_DSS, ECDH, 3DES_EDE_CBC, DES_CBC, RC4_40, RC4_128, DES40_CBC, RC2, HmacMD5
另外jdk奇数版本可用,偶数版本有上面这个问题,可用通过
yum --showduplicate list java* | grep 1.8.0
查看可用的版本,选择奇数版本安装也能解决这个问题。更新crypto-policies
update-crypto-policies --set LEGACY
docker安装mysql
1 | docker run -d -p 3306:3306 \ |
docker安装oracle
docker安装oracle
1、安装docker环境。
2、开始拉取oracle镜像
1 | docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g |
3、下载完成后,查看镜像
1 | docker images |
4、创建容器
1 | docker run -d -p 1521:1521 --name oracle11g registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g |
可以写成shell脚本,下次打开oracle数据库就可以一条命令创建容器。
shell脚本如下:
1 | # BEGIN ANSIBLE MANAGED BLOCK |
但为了保存上一次容易的配置值,是不建议写这个shell脚本的,下次打开直接用docker start oracle11命令打开。
如果创建成功能会返回容器id
5、进入镜像进行配置
1 | docker exec -it oracle11 bash |
6、进行sql登录
1 | sqlplus /nolog |
发现没有该命令,需要先配置环境变量,所以切换root用户。
1 | su root |
输入密码:helowin
7、编辑profile文件配置ORACLE环境变量
打开:vi /etc/profile ,在文件最后写上下面内容:
1 | export ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2 |
8、保存后执行source /etc/profile
加载环境变量;
9、创建软连接
1 | ln -s $ORACLE_HOME/bin/sqlplus /usr/bin |
10、切换到oracle 用户
1 | su - oracle |
这里还要说一下,一定要写中间的短横线 - 必须要,否则软连接无效
11、登录sqlplus并修改sys、system用户密码
1 | sqlplus /nolog --登录 |
12、修改以上信息后,需要重新启动数据库;
1 | conn /as sysdba |
*上面提到的其中一个坑说明:*
当执行修改密码的时候出现 : database not open
提示数据库没有打开,不急按如下操作
输入:
1 | alter database open; |
注意了:这里也许还会提示 : ORA-01507: database not mounted
解决办法:
输入:
1 | alter database mount; |
输入 :alter database open;
然后就可执行 修改数据库密码的命令了
改完之后输入:
1 | ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED; |
刷新下表 exit 是退出sql 软连接
13、复制oracle的数据及配置
1 | sudo docker cp id:/home/oracle/app/oracle /opt/oracle |
数据库SQL语言
- DDL (Data Definition Language): 数据定义语言
- DML (Data Manipulation Language):数据操作语言
- DCL (Data Control Language): 数据控制语言
- DQL (Data Query Language): 数据查询语言
- ddl:数据库或表的结构操作(****)
- dml:对表的记录进行更新(增、删、改)(****)
- dql:对表的记录的查询(****,难点)
- dcl:对用户的创建及授权(****)
DDL
一、数据库
查看所有数据库:
1
SHOW DATABASES
切换数据库:
1
USE DATABASENAME
创建数据库:
1
CREATE DATABASE IF NOT EXISTS MYDB CHARSET=utf8
修改数据库:
1
AlTER DATABASE MYDB CHARSET SET utf8
删除数据库
1
drop database MYDB
数据类型
- int:整型;
- double :浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
- decimal:浮点型 ,在表单钱方面使用该类型,因为不会出现精度缺失问题;
- char:固定长度字符串类型,char(255);
- varchar: 可变字符串类型:varchar(65535);
- text(clob):字符串类型;
- tinytext 2^8-1 Byte
- text 2^16-1 Byte
- mediumtext 2^24-1 Byte
- longtext 2^34-1 Byte
- blob :字节类型;
- tinyblob 2^8-1 Byte
- blob 2^16-1 Byte
- mediumblob 2^24-1 Byte
- longblob 2^34-1 Byte
- date:日期类型,格式为:yyyy-MM-dd;
- time: 时间类型 格式为:hh:mm:ss
- timestamp: 时间戳类型;
二、表
- 创建表:
1
CREATE TABLE [IF NOT EXISTS] TABLENAME (cloumn01 type01,cloumn02 type02,cloumn03 type03);
- 查看当前数据库中所有表名称:SHOW TABLES;
- 查看指定表的创建语句:SHOW CREATE TABLE 表名(了解);
- 查看表结构:DESC 表名;
- 删除表结构:DROP TABLE 表名;
- 修改表:前缀:ALTER TABLE 表名;
- 修改之添加列:
AlTER TABLE 表名 ADD (
列名 列类型,
列名 列类型,
…
) - 修改列类型(如果被修改的列已存在数据,那么新的列类型可能会影响到已存在数据):ALTER TABLE 表名 MODIFY 列名 列类型
- 修改列名:ALTER TABLE 表名 CHANGE 原列名 新列名 新类型
- 删除列:ALTER TABLE 表名 DROP 列名
- 修改表名称:ALTER TABLE 原表名 RENAME TO 新表名
DML
- 添加表记录
1
INSERT INTO tableName (c1,c2,c3)values(v1,v2,v3);
- 修改表记录
1
2
3update tableName set c1 = v1,c2 = v2;
update tableName set c1 = v1,c2 = v2 where c3 = v3 or c4 = v4;
delete * from stu where gender is null;
DCL
- 一个项目创建一个用户!一个项目对应的数据库只有一个!
- 这个用户只能对这个数据库有权限,其他数据库不能操作
- 创建用户
- 在指定的IP地址上登录
1 | CREATE USER username@IP IDENTIFIED BY 'password' |
- 在任意的IP地址上登录
1 | CREATE USER username@'%' IDENTIFIED BY 'password' |
- 给用户授权
1
2
3
4-- 部分权限授权
GRANT CREATE,ALTER,DROP,INSERT,UPDATE,DELETE,SELECT ON mydb.* TO shawn@IP
-- 所有权限授权
GRANT ALL ON mydb.* TO username@IP - 撤销授权
1
REVOKE CREATE,ALTER,DROP,UPDATE,DELETE ON mydb.* FROM username@IP
- 查看权限
1
SHOW GRANTS FOR username@IP
- 删除用户
1
DROP USER username@IP
DQL
1 | SELECT * FROM tableName; |
常用函数
1 | IFNUll(c1,v1); |
聚合函数
联合查询
聚合函数
Java_Stream_API
2.1. Empty Stream
We should use the empty() method in case of the creation of an empty stream:
Stream
We often use the empty() method upon creation to avoid returning null for streams with no element:
public Stream
return list == null || list.isEmpty() ? Stream.empty() : list.stream();
}
idea快捷键
常用快捷键1
常用快捷键2
- ctrl + alt + o 代码优化(自动删除多余的包与变量)
- Alt + F12 打开terminal(终端)
- ctrl+shift+(+/-) 展开全部折叠全部
- ctrl+(+/-) 展开折叠当前方法
- shift + f6 重命名(重构)
- ctrl + alt + l 代码格式化
- alt + insert 创建内容
- psvm main方法
- sout 输出语句
- Ctrl + d 复制一行
- Ctrl + y 删除一行
- Ctrl + Shift + Up/Down 代码向上/下移动
- Ctrl + n 搜索类
- alt + insert 生成代码
- alt + Enter 导包,生成变量
- Ctrl + / 或 Ctrl + Shift+ / 单行注释或多行注释
- fori 回车即可 for循环
- ctrl + alt + t 代码包围try-catch,if,while等
- ctrl + alt + -> 向后 ctrl + alt + <- 向前
- 显示代码结构:alt + 7
- 显示导航栏:alt + 1
- 撤销 ctrl + Z
- REDO 操作 ctrl + shif + z
- Tab 缩进 shift+Tab 撤销缩进
- Ctrl + u 选择行
- alt + f8 查看变量值
- ctrl + alt +B 查找接口实现类
- ctrl + h 查看类或接口的继承关系
- ctrl + o 覆写方法
替换
- ctrl + r 替换
- ctrl + shift + r 路径中替换
调试debug
- F9 调试
容器数据卷
Docker容器数据卷
原理:将容器目录挂载到Linux的目录
容器的持久化和同步操作 !容器间也是可以数据共享的
使用数据卷
方式一:直接使用命令来挂载 -v
1 | docker run -it -v 主机目录:容器内目录 |
安装MySQL
1 | # 获取镜像 |
具名与匿名挂载
1 | # 查看卷的命令 |
1 | # 如何确定是具名挂载还是匿名挂载,还是指定路径挂载! |
初识Dockerfile
Dockerfile 就是用来构建 docker 镜像的构建文件 ! 命令脚本!
通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!
1 | # 编写dockerfile脚本 |
结论:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。
但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的
DockerFile构建过程
基础知识
1、每个保留关键字(指令)都是必须是大写字母
2、执行从上到下顺序执行
3、#表示注释
4、每个指令都会创建提交一个新的镜像层,并提交!
1 | 可写容器(container) |
dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!
Docker镜像逐渐成为企业交付的标准,必须要掌握 !
步骤:开发 部署 运维 缺一不可 !
DockerFile:构建文件,定义了一切的步骤,源代码
DockerImages:通过DockerFile构建生成镜像,最终发布与运行的产品
Docker容器:容器就是镜像运行起来提供服务的
Dockerfile指令
1 | FROM # 基础镜像,一切从这里开始构建 |
1 | FROM |