PostgreSQL中的archive_command详解

什么是归档(Archiving)?

归档是指将过时或不再频繁使用的数据迁移到存储介质的过程。 PostgreSQL支持通过归档机制保存事务日志(WAL),以便在需要时进行数据库的恢复。这是确保数据安全和完整性的重要措施。

使用PostgreSQL的archive_command功能,你能够增强数据安全性,确保在发生故障时能够快速恢复。

- 阅读剩余部分 -

多因素认证(MFA)动态令牌PHP实现

两步验证(Two-Factor Authentication,2FA)是一种增加账户安全性的方式,它要求用户提供两种不同类型的身份验证凭据才能访问服务或数据。这种核心思想建立在“知道”和“拥有”两种安全因素上:一种是用户知道的信息(如密码或PIN码),另一种是用户拥有的物理设备(如手机或安全令牌)。这样,即使攻击者窃取了用户的密码,没有物理设备也无法完成认证过程。

多因素认证(MFA)的实现主要包含以下几个核心环节和技术要点,其流程设计兼顾安全性与用户体验:

一、核心实现流程

MFA 实现需平衡安全性与易用性,生物识别虽便捷但需考虑隐私合规(如 GDPR 生物数据特殊保护)。

密钥初始化与绑定‌

  • 用户启用 MFA 时,系统生成唯一密钥(如 Base32 编码字符串),并通过加密 QR 码展示给用户扫描绑定认证器(如 Google Authenticator、Authy)。
  • 密钥安全存储于服务器端,并与用户账号关联。

- 阅读剩余部分 -

js变量间赋值,修改变量值后原变量随之改变问题

vue项目的开发过程中,需要多次用到一份基础数据,为减少代码量,提高一下复用效果,便用变量A来定义,在项目中需要用到时就用变量A进行赋值。在项目中调用时,新定义一个变量B,再将变量A赋值给变量B,即B=A;
期望的效果是,赋值之后,A和B是两份数据,对变量B进行操作时不影响变量A。

B=A的方式只是将B指向A的存储地址,实际上只有同一份数据,因此无论修改A还是B都是会互相影响的。

解决方法:
B = JSON.parse(JSON.stringify(A))

OA系统信创迁移流程

需要对3000余套律所OA系统进行迁移,按天逐步迁移。基本流程如下:

1.申请瀚高测试license兼容适配
2.适配前对现有系统进行升级,提高后期迁移效率
3.编写相关脚本

- 阅读剩余部分 -

使用sshpass实现ssh、scp等免密登录

ssh 登陆不能在命令行中指定密码,sshpass 的出现则解决了这一问题。它允许你用 -p 参数指定明文密码,然后直接登录远程服务器,它支持密码从命令行、文件、环境变量中读取。

安装:yum install -y sshpass

sshpass [-f|-d|-p|-e] [-hV] command parameters

-f filename   Take password to use from file
-d number     Use number as file descriptor for getting password
-p password   Provide password as argument (security unwise)
-e            Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-P prompt     Which string should sshpass search for to detect a password prompt
-v            Be verbose about what you're doing
-h            Show help (this screen)
-V            Print version information

如:sshpass -p 'root' scp /opt/file.txt root@192.168.126.135:/home

PostgreSQL常用操作

  • 创建数据库:CREATE DATABASE db_name template tpl_name;
  • 删除数据库:drop database xxx;
  • 创建用户:CREATE USER xxx WITH PASSWORD 'admin';
  • 删除用户:drop user username;
  • 授权:GRANT ALL PRIVILEGES ON DATABASE my_database TO my_user;

- 阅读剩余部分 -

nginx中的server_names_hash_max_size和server_names_hash_bucket_size

使用宝塔批量创建完几百个网站后,使用 nginx -t 检查配置时,提示 nginx: [warn] could not build optimal server_names_hash, you should increase either server_names_hash_max_size: 512 or server_names_hash_bucket_size: 64; ignoring server_names_hash_bucket_size

通过优化服务器名称哈希大小,可以提高Nginx在处理大量域名时的性能。根据实际情况,适当增大哈希大小可以减少冲突,提高查找速度。记住在修改哈希大小之前进行性能测试,并确保服务器有足够的内存支持。

server_names_hash_bucket_size
默认:server_names_hash_bucket_size 32|64|128;
配置块: http、server、location
为了提高快速寻找到相应server name的能力,Nginx使用散列表来存储server name。server_names_hash_bucket_size设置了每个散列桶占用的内存大小

server_names_hash_max_size
默认: server_names_hash_max_size 512;
配置块: http、server、location
server_names_hash_max_size越大,消耗的内存就越多,但散列key的冲突率则会降低,检索速度也更快。

解决方案:
修改nginx配置如下:

http {
    ....
    server_names_hash_max_size 2048;
    server_names_hash_bucket_size 512;
    ....
}

- 阅读剩余部分 -