一: oracle序列 Sequences : 查詢序列: select uafowner.SDT_DMS_STAFF_TRF_SEQ.nextVal from dual (每查詢一次,值增加一次)
Ceil(value) 函数返回大于等于指定值(value)的最小整数,取整,没有四舍五入这一说法
提示不信任证书,导致无法上传
解决办法:
① 退出登录,登录https://10.61.72.88//也就是vcenter管理。
②页面下载好CA证书,解压CA证书,即可获得linux/win/mac三个版本的CA签名证书
③将证书导入浏览器
1.请分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。
Shark提供了类似于Hive的功能,与Hive不同的是,Shark把SQL语句转换成Spark作业,而不是MAPreduce作业。为了实现Hive的兼容,Shark重用了Hive中的Hive SQL解析、逻辑执行计划翻译、执行计划优化等逻辑。可以近似的认为,Sark仅仅将物理执行计划从Map Reduce作业替换成了Spark作业,也就是通过Hive的HiveSQL解析功能,把Hive SQL翻译成Spark上的RDD操作。Shark的出现,使得SQL-on-Hadoop的性能比Hive有了10~100倍的提高。
2.简述RDD 和DataFrame的联系与区别?
Rdd是分布式的Java对象的集合,但是,对象内部的结构对于RDD来说是不可知的。Data Frame是一种以RDD为基础的分布式数据集,提供详细的结构信息,就相当于关系数据库的一张表。
3.DataFrame的创建
spark.read.text(url)
spark.read.json(url) spark.read.format(text).load(people.txt)
spark.read.format(json).load(people.json)
描述从不同文件类型生成DataFrame的区别。
用相同的txt或json文件,同时创建RDD,比较RDD与DataFrame的区别。
区别:RDD是直接输出对象,DataFrame是以对象里面的的详细结构进行输出
4.PySpark-DataFrame各种常用操作
4.1基于df的操作:
打印数据 df.show()默认打印前20条数据
打印概要 df.printSchema()
查询总行数 df.count()
df.head(3) #list类型,list中每个元素是Row类
输出全部行 df.collect() #list类型,list中每个元素是Row类
查询概况 df.describe().show()
取列 的三种方式 df[‘name’], df.name, df[1]
4.2基于spark.sql的操作:
创建临时表虚拟表 df.registerTempTable('people')
spark.sql执行SQL语句 spark.sql('select name from people').show()
数据库实验课课后习题的SQL语句,题目如下: 用到的表的结构如下: 各题具体代码如下: 1.查询成绩在 80~90分之间的记录。 /*第一问*/ SELECT * FROM SC WHERE SCORE>80 AND SCORE<90 GO 2.查询至少有 4 个同学选修的课程名。
/*第二问*/ select CN from Course where CNO in (select CNO from SC group by CNO having count(SNO)>=4) go 3.查询其他系中比“信息系”所有学生年龄都大的学生名单及年龄, 并按年龄降序输出。
/*第三问*/ SELECT SNO,SN,AGE from Student WHERE SNO IN(SELECT SNO FROM Student WHERE AGE > (SELECT MAX (AGE) FROM Student GROUP BY DEPT HAVING DEPT='信息系')) ORDER BY AGE DESC GO 4.查询与学生张建国同岁的所有学生的学号、姓名和系别。
/*第四问*/ select SNO,SN,DEPT from Student WHERE AGE IN (SELECT AGE from Student where SN='张建国') go 5.
目录一、SNAT原理与应用1、SNAT应用环境2、SNAT原理3、SNAT转换前提条件3.1 临时打开IP路由转发:3.2 永久打开IP路由转发:4、SNAT转换4.1 SNAT转换1:固定的公网IP地址:4.2 SNAT转换2:非固定的公网IP地址(共享动态IP地址) :5、SNAT转换实例操作:实现内网主机通过一个固定的公网IP地址上网5.1 Linux网关服务器的相关配置5.1.1 添加网卡,并设置ens33、ens37的IP地址5.1.2 iptables的安装5.1.3 linux网关服务器打开IP路由转发5.1.4 在linux网关服务器上做SNAT转换5.2 内网PC端win10设置内网IP以及网关5.3 外网Linux的web服务器的相关设置5.3.1 设置外网web服务器的IP地址5.3.2 安装httpd服务,并开启httpd服务,关闭防火墙和selinux5.4 测试5.4.1 内网PC端ping外网和网关测试5.4.2 内网访问httpd测试5.4.3 查看外网web服务器的日志文件tail /var/log/httpd/access_log,查看访问网址是否修改为12.0.0.1,即SNAT转换是否成功二、DNAT原理与应用1、DNAT转换前提条件:2、DNAT转换1:发布内网的Web服务3、DNAT转换2:发布时修改目标端口三、防火墙规则的备份和还原1、导出 (备份)所有表的规则2、导入(还原)规则3、将iptables规则文件保存在 /etc/sysconfig/iptables 中,iptables服务启动时会自动还原规则 iptables-save >/etc/sysconfig/iptables四、Linux抓包
一、SNAT原理与应用 1、SNAT应用环境 局域网主机共享单个公网IP地址接入Internet (私有IP不能在Internet中正常路由)
2、SNAT原理 修改数据包的源地址
3、SNAT转换前提条件 局域网各主机已正确设置IP地址、子网掩码、默认网关地址 Linux网关开启IP路由转发 3.1 临时打开IP路由转发: echo 1 >/proc/sys/net/ipv4/ip_forward 或 sysctl -w net.ipv4.ip forward=1 3.2 永久打开IP路由转发: vim /etc/sysctl.conf net.ipv4.ip_forward = 1 #将此行写入配置文件 sysctl -P #读取修改后的配置 4、SNAT转换 4.1 SNAT转换1:固定的公网IP地址: iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o ens36 j SNAT --to 12.
错误1、 报错: 所有的匹配结果均已经被参数的模块化过滤条件筛除: mysql-community-server 错误:没有任何匹配: mysql-community-server 解决办法: yum module disable mysql 再次执行 [root@localhost ~]# yum install -y mysql-community-server
错误2: 报错:导入公钥成功,导入的密钥没有公钥,错误的公钥? 错误:GPG 检查失败 办法: [root@localhost ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 [root@localhost ~]# yum install -y mysql-community-server
一直以来对Linux网络这块都感觉比较乱
遇到一个UDP丢包的问题:在测试中,一台VM虚拟机,CPU利用率55%左右,内存利用率7%左右,网卡流量也远没到限制的时候出现了丢包情况
使用netstat -su|grep packet receive errors|awk '{print $1}' ,每30s查看一次,计算这次和上次之间的数值差值发现存在UDP丢包现象。
首先要看问题出现在哪儿,网络流量的路径是怎样的?
1、网络流量通过有线/无线发送到网卡
2、网卡驱动读取报文放到ring buffer(此时调用DMA,不经过CPU)
3、内核从ring buffer中读取报文进行处理,执行IP层,TCP/UDP层逻辑
4、把报文发到用户态的socket buffer中,应用程序读取socket buffer并进行处理
可能出现问题的阶段:1、网卡处理时丢包 2、内核处理时丢包 3、应用程序处理时
1、网卡阶段:
两种方法:1. ifconfig 查看RX errors dropped
2. ethtool -S eth0 |egrep err|drop 如果存在丢包,可以查看网卡的ring buffer size是否设置太小达到瓶颈,使用ethtool -g eth0查看最大值和当前值,使用ethtool -G eth0 rx 1024 进行修改
如果网卡方面没问题,那么尝试内核方面查看
2、内核阶段
linux 系统在接收报文之后,会把报文保存到缓存区中。因为缓存区的大小是有限的,如果出现 UDP 报文过大(超过缓存区大小或者 MTU 大小)、接收到报文的速率太快,都可能导致 linux 因为缓存满而直接丢包的情况。
使用sysctl -a |grep net.core 查看相关参数设置
重点看这几个参数:
/proc/sys/net/core/rmem_max:允许设置的 receive buffer 最大值
/proc/sys/net/core/rmem_default:默认使用的 receive buffer 值
1. 更新apt软件包索引并安装软件包以允许apt通过HTTPS使用存储库
因为apt默认不支持https, 而docker的仓库是https的, 所以要先安装软件让apt支持https,命令如下:
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common 2. 添加 Docker 的官方 GPG 密钥
命令如下:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 3. 设置稳定版仓库
查看当前系统架构,命令如下:
dpkg --print-architecture 根据架构选用以下对应命令执行:
amd64:
sudo add-apt-repository \ deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable armhf:
sudo add-apt-repository \ deb [arch=armhf] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable arm64:
转载自 https://www.cnblogs.com/qmhuang/p/8196132.html 配置supervisor实现进程守护 1.安装supervisor yum install Supervisor 2.启动服务 supervisord -c /etc/supervisord.conf 进入 cd /etc 目录 找到supervisord.conf 配置文件 和 supervisord.d 文件夹,使用vim编辑supervisord.conf文件,拉到最底部我们可以看到
files = supervisord.d/*.ini 这句代码说明它会加载supervisord.d文件夹中的所有.ini配置文件 3.编辑配置文件 随后我们在supervosprd.d中创建一个delploy.ini文件并编辑如下 [program:DeployLinux] #DeployLinux 为程序的名称 command=dotnet DeployLinux.dll #需要执行的命令 directory=/home/publish #命令执行的目录 environment=ASPNETCORE__ENVIRONMENT=Production #环境变量 user=root #用户 stopsignal=INT autostart=true #是否自启动 autorestart=true #是否自动重启 startsecs=3 #自动重启时间间隔(s) stderr_logfile=/var/log/ossoffical.err.log #错误日志文件 stdout_logfile=/var/log/ossoffical.out.log #输出日志文件 # 下面是我自己的项目示例[program:odin-agent] stopasgroup=false # 默认为false,如果为true,当supervisorctl关闭项目时,会项目main启动的mysql一起关闭 user=root directory=/u01/agent/odin-agent # 工作路径 command=nohup /usr/bin/python3 main.py >/dev/null 2>&1 & # 执行命令 redirect_stderr=true # 默认为false,为true的话,stderr的log会并入stdout的log中 autorestart=true # 自动重启 stdout_logfile=/u01/agent/logs/odin-agent-out.
Reason 最近在帮公司在客户的PaaS平台部署程序,本来想吐槽一波中国移动的磐舟(CI)和磐基(CD)平台基础设施没做好,流程没打通来着。。。
想来吐槽也没啥用,人家没给你基础镜像,但Harbor有外网也还好,自己打吧。。
所以这篇就简单记录下用AlpineLinux构建一个Tomcat的Docker镜像,无论是基于X86_64还是aarch64,只要基于Alpine镜像的都支持。
仓库地址 https://github.com/hellxz/AlpineLinux-Tomcat-Image.git 镜像拉取命令 docker pull hellxz/alpine-tomcat:openjdk8-tomcat-8.5.78 Dockerfile FROM alpine:3.14.3 COPY glibc/ . ADD apache-tomcat-8.5.78.tar.gz /usr/local RUN \ #install glibc6 mv sgerrand.rsa.pub /etc/apk/keys/sgerrand.rsa.pub; \ apk add *.apk; \ rm -rf *.apk; \ #install jdk and useful utils echo http://mirrors.aliyun.com/alpine/latest-stable/main/ > /etc/apk/repositories; \ echo http://mirrors.aliyun.com/alpine/latest-stable/community/ >> /etc/apk/repositories; \ apk upgrade; \ apk add --no-cache ca-certificates unzip curl bash bash-completion bash wget vim net-tools tzdata openjdk8; \ rm -rf /tmp/* /var/cache/apk/*; \ #make soft link to /usr/local/tomcat ln -s /usr/local/apache-tomcat-8.