1Panel安装密码管理服务bitwarden
不久前刷到Chrome上乱安装插件导致密码泄漏的,想着能够有一个多端的密码管理器。
于是找到了vaultwarden,能够实现多端的密码管理服务Github开源地址
部署前提
一个稳定运行的服务器
一个域名本教程为用1panel面板安装
部署
安装1panel
按图示操作应用商店搜索bitwardendocker容器配置,端口外部配置不用配置,因为配了也没用,必须https访问才行。
配置SSL证书
创建Acme账户按图示配置,邮箱随便填
创建DNS账户以Cloudflare为例email填创建账户的邮箱API Token获取打开此链接,创建令牌->编辑区域 DNS->使用模板令牌名称选改成自己的域名,便于记忆区域资源选要做的域名。其他不用改,拉到下面点击显示摘要。注意只出现一次,注意保管。
申请SSL证书dns中添加一条A记录,地址指向服务器。按图示配置申请成功
配置反向代理搭建成功
导入密码以 chrome 导出密码并导入进 bitwarden 为例:
依次进入设置->自动填充->密码->导出密码
将刚刚得到的 .csv 文件导入到密码库中
...
Golang-os标准库
os标准库
os包提供了操作系统函数,但和操作系统无关。
os包的接口规定为在所有操作系统中都是一致的。
设计为Unix风格的。
1. 权限说明os标准库有大量的文件操作,在创建文件等操作中,需要指的perm。
在go语言中perm是一个uint32类型
在go语言中一般使用0777这样的形式进行表示。
0代表是8进制
777 是 - rwx rwx rwx的形式计算得出
权限项
文件类型
读
写
执行
读
写
执行
读
写
执行
字符表示
(d|l|c|s|p)
r
w
x
r
w
x
r
w
x
数字表示
4
2
1
4
2
1
4
2
1
权限分配
文件所有者
文件所有者
文件所有者
文件所属组用户
文件所属组用户
文件所属组用户
其他用户
其他用户
其他用户
第一位:
- : 代表这是一个普通文件(regular)d:目录文件(directory)l : 链接文件(link)b: 块设备文件(block)c: 字符设备文件(character)s : 套接字文件(socket)p: 管道文件(pipe)
一共有三组rwx
第一组:该文件拥 ...
VScode SSH 连接配置和免密SSH连接
安装Remote – SSH扩展打开vscode,选择左边扩展,搜索SSH,选择第一项Remote – SSH安装。左边会出现远程资源管理器左边资源管理器,按图点击,点击SSH配置文件后选择"C:\Users\你的用户名\.ssh\config"(后置文件为“.ssh\config“即可)选择以后按下列格式输入内容。其中HostName是虚拟机的IP地址,User是连接虚拟机的用户名。
123Host 192.168.202.153 HostName 192.168.202.153 User rui
本地虚拟机配置
查看Linux本机网络地址1ip addr
检查SSH是否安装1systemctl status sshd
表示已经成功安装如果有 active (running) 表示已经运行,否则则执行安装步骤
如果 SSH 服务未安装或未启动,使用以下命令来安装和启动它12sudo apt install openssh-serversudo systemctl start ssh
确认虚拟机的防火墙设置: 确保虚拟机的防火墙允许通过 SSH 端口(默认 ...
Golang-builtin标准库
builtin标准库builtin包提供了一些类型声明、变量和常量声明,还有一些便利函数,这个包不需要导入,这些变量和函数就可以直接使用
1. 常用函数1.1 append1func append(slice []Type, elems ...Type) []Type
slice = append(slice, elem1, elem2)
直接在slice后面添加单个元素,添加元素类型可以和slice相同,也可以不同
slice = append(slice, anotherSlice)
直接将另外一个slice添加到slice后面,但其本质还是将anotherSlice中的元素一个一个添加到slice中,和上一种方式类似
1234567891011121314package mainimport "fmt"func main() { s1 := []int{1, 2, 3} i := append(s1, 4) fmt.Printf("i: %v\n", i) s2 := []int ...
Golang-sort标准库
sort标准库sort包提供了排序切片和用户自定义数据集以及相关功能的函数。
sort包主要针对[]int、[]float64、[]string、以及其他自定义切片的排序。
主要包括:
对基本数据类型切片的排序支持。
基本数据元素查找。
判断基本数据类型切片是否已经排好序。
对排好序的数据集合逆序
1. 排序接口1234567type Interface interface { Len() int // 获取数据集合元素个数 Less(i, j int) bool // 如果i索引的数据小于j索引的数据,返回true,Swap(),即数据升序排序,false 不调用swap。 Swap(i, j int) // 交换i和j索引的两个元素的位置}
实例演示:
12345678910111213141516171819202122232425262728package mainimport ( "fmt" "sort")type NewInts []uintfunc (n NewInts) ...
Golang-math标准库
math标准库math包包含一些常量和一些有用的数学计算函数,例如:三角函数、随机数、绝对值、平方等
1. 常量12345678910111213141516fmt.Printf("Float64的最大值: %.f\n", math.MaxFloat64)fmt.Printf("Float64最小值: %.f\n", math.SmallestNonzeroFloat64)fmt.Printf("Float32最大值: %.f\n", math.MaxFloat32)fmt.Printf("Float32最小值: %.f\n", math.SmallestNonzeroFloat32)fmt.Printf("Int8最大值: %d\n", math.MaxInt8)fmt.Printf("Int8最小值: %d\n", math.MinInt8)fmt.Printf("Uint8最大值: %d\n", math.MaxUint8)fmt.Print ...
LeetCode每日一题(24-11)
3259. 超级饮料的最大强化能量date:2024-11-1 tag:动态规划
题解使用动态规划解题,分别定义dpA[i]``dpB[i]为时间i时的最大总强化能量。结果为long long型,定义vectordpA(n,0)同时初始化dpA[0]。动态转移方程dpA[i]=max(dp[i-1],dpB[i-2])+energyDrinkA[i]考虑i=1时,可能为选i=0后就2切换。(i>1?dpB[i-2]:0)返回max(dpA[n-1],dpB[n-1])
代码123456789101112131415class Solution {public: long long maxEnergyBoost(vector<int>& energyDrinkA, vector<int>& energyDrinkB) { int n=energyDrinkA.size(); vector<long long>dpA(n,0); vector&l ...
Redis哨兵(sentinel)
什么是Redis哨兵监控后台的预警者负责持续检查主服务器(master主机)的运行状态。一旦发现主服务器出现故障,系统将启动一个自动化的切换机制。这个机制会根据预设的投票规则,从多个备用服务器(从库)中选择一个来接替主服务器的角色。被选中的备用服务器将升级为新的主服务器,并继续无缝地对外提供服务,确保整个系统的持续稳定运行。这种机制有效避免了单点故障带来的风险,并提升了系统的整体可靠性和容错能力。
Redis哨兵作用
主从状态监测:监控主从redis库运行是否正常
哨兵系统负责不断检测Redis主服务器及其从服务器的运行状态,确保它们都正常运行。
通过实时的心跳检测和状态检查,哨兵能够迅速发现任何主从节点的问题。
消息通知:哨兵可以将故障转移的结果发送给客户端
在发生主服务器故障转移等重要事件时,哨兵有能力向连接的客户端发送通知。
客户端可以接收到这些事件通知,并据此更新其连接配置或执行其他必要的操作。
自动故障恢复:如果master异常,则会进行主从切换,将其中一个slave作为新master
一旦检测到主服务器出现异常,哨兵系统会立即启动故障恢复流程。
这个过程 ...
Redis主从复制原理及配置
Redis主从复制介绍Redis的持久化功能在一定程度上保证了数据的安全性,即便是服务器宕机的情况下,也可以保证数据的丢失非常少。通常,为了避免服务的单点故障,会把数据复制到多个副本放在不同的服务器上,且这些拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能。
主从复制的好处:
数据冗余,实现数据的热备份
故障恢复,避免单点故障带来的服务不可用
读写分离,负载均衡。主节点负载读写,从节点负责读,提高服务器并发量
高可用基础,是哨兵机制和集群实现的基础
主从复制,master以写为主,slave以读为主,当master数据变化的时候,自动将新的数据异步同步到其他的slave数据库
主从复制配置准备三台虚拟机,构成一主二仆的结构
修改配置文件redis6379.conf为例,步骤如下:
开启daemonize yes12# 设置为后台运行daemonize yes
注释掉bind 127.0.0.1
protected-mode no
指定端口
指定当前工作目录,dir
pid文件名字,pidfile
log文件名字,logfile
requiredpass,密码
dum ...
Redis持久化:AOF介绍及优劣
AOF介绍AOF持久化会把被执行的写命令写到AOF文件的末尾,记录数据的变化。默认情况下,Redis是没有开启AOF持久化的,开启后,每执行一条更改Redis数据的命令,都会把该命令追加到AOF文件中,这是会降低Redis的性能,但大部分情况下这个影响是能够接受的,另外使用较快的硬盘可以提高AOF的性能
默认情况下,redis是没有开启AOF的。开启AOF功能需要设置配置:appendonly yes
AOF持久化工作流程
Client作为命令的来源,会有多个源头以及源源不断的请求命令。
在这些命令到达Redis Server 以后并不是直接写入AOF文件,会将其这些命令先放入AOF缓存中进行保存。这里的AOF缓冲区实际上是内存中的一片区域,存在的目的是当这些命令达到一定量以后再写入磁盘,避免频繁的磁盘IO操作。
AOF缓冲会根据AOF缓冲区同步文件的三种写回策略将命令写入磁盘上的AOF文件。
随着写入AOF内容的增加为避免文件膨胀,会根据规则进行命令的合并(又称AOF重写),从而起到AOF文件压缩的目的。
当Redis Server服务器重启的时候会队AOF文件载入数据。
...