1.对于结构体的各个成员,第一个成员位于偏移为0的位置,结构体第一个成员的偏移量(offset)为0,以后每个成员相对于结构体首地址的offset都是该成员大小与有效对齐值中较小那个的整数倍,如有需要编译器会在成员之间加上填充字节。
2.除了结构成员需要对齐,结构本身也需要对齐,结构的长度必须是编译器默认的对齐长度和成员中最长类型中最小的数据大小的倍数对齐。
//32位系统,最小对齐数为4 #include<stdio.h> struct { int i; //占用0-3 char c1; //占用4 char c2; //占用5(因为CHAR的字节为1小于最小字节数,偏移量为1的倍数即可)6,7为补字节 }x1; struct{ char c1; //占用0 int i; //1,2,3为补字节,4-7为i所占用字节,因为i的大小为4字节,所以偏移量必须是4的倍数,补齐字节。 char c2; //占用8 9,10,11为补字节,struct的大小必须为最大变量和对齐数的最小值的倍数,即为4的倍数 }x2; struct{ char c1; char c2; int i; }x3; int main() { printf(%d\n,sizeof(x1)); // 输出8 printf(%d\n,sizeof(x2)); // 输出12 printf(%d\n,sizeof(x3)); // 输出8 return 0; } 参考链接:https://blog.csdn.net/qq_39397165/article/details/119745975
LocalMachine:
C:\Program Files\PowerShell\7\powershell.config.json CurrentUser:
C:\Users\pretentious\Documents\PowerShell\powershell.config.json 使用Set-ExecutionPolicy -ExecutionPolicy -Scope 验证
CentOS 7 x64 安装 nginx 先安装 nginx 依赖 # 在任意目录执行 yum install gcc -y yum install pcre-devel -y yum install zlib-devel -y yum install openssl openssl-devel -y 下载安装 nginx nginx下载官网:http://nginx.org/en/download.html
# 在任意目录执行 # wget在线下载nginx(如果没有wget,先yum install wget -y) wget https://nginx.org/download/nginx-1.20.2.tar.gz # 解压nginx压缩包 tar -zxvf nginx-1.20.2.tar.gz # 进入 nginx1.20.2 目录 cd nginx-1.20.2 # 检查初始化nginx安装配置 ./configure --with-http_ssl_module # 编译、安装 make && make install 现在可以去 /usr/local目录看看是不是多了个 nginx
启动 nginx # 进入nginx/sbin目录,里面的nginx就是启动程序 cd /usr/local/nginx/sbin # 启动nginx .
1.选择MySQL连接,需要在点击SSH选择远程连接,如下:
2.输完SSH的信息后点击常规,然后填写信息如下:
这样,就完成了远程连接Ubuntu中的MySQL了
1、harbor相关配置
编辑harbor.yaml,修改external_url配置
external_url: http://10.1.117.xxx:8094 2、nginx相关配置
server { listen 8094; server_name 10.1.117.xxx; #charset koi8-r; client_max_body_size 500m; access_log log/host-harbor.access.log main; location / { #proxy_redirect off; #proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header referer $http_referer; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://10.28.143.141:8094; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } 3、推送镜像
4、拉取镜像
1、sort -u实现
root@PC1:/home/test# ls a.txt root@PC1:/home/test# cat a.txt a b c x y z a b c m n o m n o root@PC1:/home/test# sort -u a.txt ## sort -u删除重复行 a b c m n o x y z 2、 sort + awk实现
root@PC1:/home/test# ls a.txt root@PC1:/home/test# cat a.txt a b c x y z a b c m n o m n o root@PC1:/home/test# sort a.txt | awk '{if( a !
db.inventory.insertMany([ { _id: 1, item: null }, { _id: 2 }, { _id: 3, item: 1} ]) 这三条数据的item字段,分别为null,不存在,为数字1。 db.inventory.find({item:null}),该{ item : null }查询匹配包含item其值为null 或不包含该item字段的字段的文档。 db.inventory.find( { item : { $type: 10 } } ),只查询出item为null的文档。 db.inventory.find( { item : { $exists: false } } ),只查询出item缺失的文档。 db.inventory.find( { item : { $exists: true } } ),只查询出item存在的文档,包括item为null的文档。
什么是存储过程: 是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。
优点:
1、在生产环境下可以直接修改存储过程来修改业务逻辑(或者bug),不用重启服务器;
2、执行速度快,存储过程经过编译之后会比单条sql一条一条执行速度要快;
3、减少网络传输流量;
4、方便优化; 缺点:
1、过程化编程,维护成本高;(比如复杂存储过程后续新人员进行维护会看不懂)
2、调试不便;
3、数据库移植性较差;(数据库直接语法可能不同);
数据库中存储过程必须要进行创建,就像创建表一样,后续再执行;MYSQL中创建后的存储过程在 函数 列中可以看到,MYSQL后续更新存储过程需要先删除原先的存储过程,在创建新存储过程;
语法: 存储过程结束符: 正常sql语句会将分号 ;作为sql语句结束符,存储过程中也是如此,分号;会作为sql语句结束符,但存储过程结束符需要自定义,使用 delimiter关键字,后面接 自定义符号
关键字 delimiter
自定义符号 $$
delimiter $$ -- 自定义$$符号作为存储过程结束符号 存储过程基本结构: CREATE PROCEDURE sp_name( [proc_parameter]) [characteristic...] routine_body CREATE PROCEDURE:是用来创建存储过程的关键字,
sp_name:存储过程名称
proc_parameter:指定存储过程的参数列表,列表如下
[ IN | OUT | INOUT ] param_name type
其中,IN是输入参数,out是输出参数 ,INOUT是即可输入也可输出,param_name 是参数名称,type是参数类型。
characteristic:指定存储过程的特性,有以下取值。
1.请分析SparkSQL出现的原因,并简述SparkSQL的起源与发展。
因为关系数据库已经很流行,而且关系数据库在大数据时代已经不能满足要求。首先,用户需要从不同数据源执行各种操作,包括结构化、半结构化和非结构化数据。其次,用户需要执行高级分析,比如机器学习和图像处理。在实际大数据应用中,经常需要融合关系查询和复杂分析算法(比如机器学习或图像处理),但是,缺少这样的系统。
Spark SQL填补了这个鸿沟:首先,可以提供DataFrame API,可以对内部和外部各种数据源执行各种关系型操作。其次,可以支持大数据中的大量数据源和数据分析算法Spark SQL可以融合:传统关系数据库的结构化数据管理能力和机器学习算法的数据处理能力。
2.简述RDD和DataFrame的联系与区别?
区别:RDD是分布式的java对象的集合,但是对象内部结构对于RDD而言却是不可知的。DataFrame是一种以RDD为基础的分布式数据集,提供了详细的结构信息,相当于关系数据库中的一张表。
联系:1.都是spark平台下的分布式弹性数据集,为处理超大型数据提供便利。2、都有惰性机制,在进行创建、转换,如map方法时,不会立即执行,只有在遇到Action才会运算。3.都会根据spark的内存情况自动缓存运算,这样即使数据量很大,也不用担心会内存溢出4、三者都有partition的概念。5.三者有许多共同的函数,如filter,排序等。
3.DataFrame的创建
spark.read.text(url)
spark.read.json(url)
spark.read.format(text).load(people.txt)
spark.read.format(json).load(people.json)
4. PySpark-DataFrame各种常用操作基于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] 基于sparksql的操作:
创建临时表虚拟表 df.registerTempTable('people')spark.sql执行SQL语句 spark.sql('select name from people').show() 5. Pyspark中DataFrame与pandas中DataFrame
分别从文件创建DataFrame
比较两者的异同
pandas中DataFrame转换为Pyspark中DataFrame
Pyspark中DataFrame转换为pandas中DataFrame
6.从RDD转换得到DataFrame
6.1 利用反射机制推断RDD模式
创建RDD sc.textFile(url).map(),读文件,分割数据项
每个RDD元素转换成 Row
由Row-RDD转换到DataFrame
//将原有字段改名
alter table CHHM_DICT_DEPT rename column ORG_CODE to ORG_CODE1;
//添加新字段,命名为原有列名并设置类型 长度alter table CHHM_DICT_DEPT add ORG_CODE varchar2(50);
//添加备注comment on column CHHM_DICT_DEPT.ORG_CODE is '机构编码';
//将旧的字段的值赋值给新字段update CHHM_DICT_DEPT t set t.ORG_CODE=t.ORG_CODE1;
//删除旧的字段
alter table CHHM_DICT_DEPT drop column ORG_CODE1;
//将新字段设置为非空,与原有的保持一致alter table CHHM_DICT_DEPT MODIFY (ORG_CODE not null);