LeetCode每日一题(25-1)
3280. 将日期转换为二进制表示date:2025-1-1
题解按”-“分割字符串,遍历字符串数值,转会为Int型,二进制型,拼接字符串数组。
代码12345678func convertDateToBinary(date string) string { a:=strings.Split(date,"-") for i:=range a{ x,_:= strconv.Atoi(a[i]) a[i]= strconv.FormatUint(uint64(x),2) } return strings.Join(a,"-")}
729. 我的日程安排表 Idate:2025-1-2
题解代码3019. 按键变更的次数date:2025-1-7
题解tolower转化成小写
代码123456789101112class Solution {public: int countKeyChanges(string s) { i ...
LeetCode每日一题(24-12)
51. N 皇后date:2024-12-1 tag:回溯
题解这道题一行一行地放置皇后,尝试在每一列放置皇后,放置前用isValid判断这个位置是否可以放置。
代码1234567891011121314151617181920212223242526272829303132333435363738394041class Solution {public: vector<vector<string>> solveNQueens(int n) { vector<vector<string>>res; vector<string>board(n,string(n,'.')); backtrack(res,board,0,n); return res; }private: void backtrack(vector<vector<string>>&res,vector<st ...
1Panel安装密码管理服务bitwarden
不久前刷到Chrome上乱安装插件导致密码泄漏的,想着能够有一个多端的密码管理器。
于是找到了vaultwarden,能够实现多端的密码管理服务Github开源地址
部署前提
一个稳定运行的服务器
一个域名本教程为用1panel面板安装
部署
安装1panel
按图示操作应用商店搜索bitwardendocker容器配置,端口外部配置不用配置,因为配了也没用,必须https访问才行。
配置SSL证书
创建Acme账户按图示配置,邮箱随便填
创建DNS账户以Cloudflare为例email填创建账户的邮箱API Token获取打开此链接,创建令牌->编辑区域 DNS->使用模板令牌名称选改成自己的域名,便于记忆区域资源选要做的域名。其他不用改,拉到下面点击显示摘要。注意只出现一次,注意保管。
申请SSL证书dns中添加一条A记录,地址指向服务器。按图示配置申请成功
配置反向代理搭建成功
导入密码以 chrome 导出密码并导入进 bitwarden 为例:
依次进入设置->自动填充->密码->导出密码
将刚刚得到的 .csv 文件导入到密码库中
...
Golang-并发
2.7 并发有人把Go比作21世纪的C语言,第一是因为Go语言设计简单,第二,21世纪最重要的就是并行程序设计,而Go从语言层面就支持了并行。
goroutinegoroutine是Go并行设计的核心。goroutine说到底其实就是协程,但是它比线程更小,十几个goroutine可能体现在底层就是五六个线程,Go语言内部帮你实现了这些goroutine之间的内存共享。执行goroutine只需极少的栈内存(大概是4~5KB),当然会根据相应的数据伸缩。也正因为如此,可同时运行成千上万个并发任务。goroutine比thread更易用、更高效、更轻便。
goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过go关键字实现了,其实就是一个普通的函数。
12go hello(a, b, c)
通过关键字go就启动了一个goroutine。我们来看一个例子
123456789101112131415161718192021222324252627282930package mainimport ( "fmt" "runtime& ...
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 ...