postgresql数据库 测评方法

下图为服务器为centos服务器中postgresql数据库,通过其他服务器navicat远程连接,navicat填写的IP为内网服务器IP😐

show shared_preload_libraries;//密码策略  

有shared_preload_libraries = ' pg_stat_statements,passwordcheck'才行(没有密码策略就只会有前面的这个即pg_stat_statements)

Passwordcheck代表的密码策略如下:

1.密码长度至少为8位

2.密码中必须同时包含字母和非字母(非字母可以是数字或特殊字符)

3.密码中不能包含用户名

Select * from pg_shadow;//查看密码加密方式

下图为md加密

select * from pg_user; //密码有效期

通过命令查看字段valuntil,即可查看密码有效期

select * from pg_settings ps where ps.name like '%timeout%'; //登录超时

查看字段idle_in_transaction_session_time即为会话超时时间

我的测评的服务器是centos然后利用navicat连接的postgresql数据库,于是在centos服务器中输入命令find / -name postgresql,即可找到postgresql数据库对应的路径,找到其中的配置文件路径conf

查看pgpresql.conf配置文件,cat pgpresql.conf//登录失败

找到参数share_prelload_libraries若为空,将该参数的参数值中加入auth_delay模块,同时找到auth_delay.milliseconds参数,设置延迟时间,单位为毫秒,示例5000代表5秒,若文件中没有该参数,添加即可,10分钟则为5000*12*10=6000000

shared_preload_libraries = 'auth_delay'

auth_delay.milliseconds='5000'

如图代表没有设置登录失败策略,该文档是复制的服务器中postgresql数据库配置文件

show * from pg_roles;//查找用户权限

rolname:角色名称

rolsuper:角色拥有超级管理员权限

rolcreaterole:角色可以创建更多角色

rolcreatedb:角色可以创建数据库

show ssl//查看是否启用ssl协议

show logging_collector//查看是否开启日志

show log_directory//查看日志路径

如图代表为默认位置,可通过前面这个命令find / -name 查询到postgresql数据库的路径来找到对应的日志

Show server_version//查找数据库版本

在C语言中,你可以使用嵌套循环以及qsort函数(快速排序)来实现这一功能。首先,你需要定义一个结构体来存储数组元素及其索引,然后创建一个辅助函数对单列进行排序,最后主函数处理整个数组。以下是基本的代码框架: ```c #include <stdio.h> #include <stdlib.h> #include <time.h> // 定义一个结构体用于存储元素和索引 typedef struct { int value; int index; } SortElement; // 辅助函数,用于比较并排序单列 int compare(const void *a, const void *b) { SortElement *ea = (SortElement *) a, *eb = (SortElement *) b; return ea->value - eb->value; } // 排序单列 void sortColumn(int arr[][5], int col, int rows) { SortElement elements[rows]; for (int i = 0; i < rows; i++) { elements[i].value = arr[i][col]; elements[i].index = i; } qsort(elements, rows, sizeof(SortElement), compare); // 将排序后的值放回原数组 for (int i = 0; i < rows; i++) { arr[elements[i].index][col] = elements[i].value; } } // 主函数 void printSortedArray(int arr[][5], int rows, int cols) { printf("原始数组:\n"); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { printf("%d ", arr[i][j]); } printf("\n"); } for (int col = 0; col < cols; col++) { printf("排序后第%2d列:\n", col+1); sortColumn(arr, col, rows); for (int i = 0; i < rows; i++) { printf("%d ", arr[i][col]); } printf("\n"); } } int main() { srand(time(0)); // 设置随机种子以便演示 int arr[4][5] = { {rand(), rand(), rand(), rand(), rand()}, {rand(), rand(), rand(), rand(), rand()}, {rand(), rand(), rand(), rand(), rand()}, {rand(), rand(), rand(), rand(), rand()} }; printSortedArray(arr, 4, 5); return 0; } ``` 这段代码会打印出原始数组和每一列经过排序后的结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值