clash在终端设置代理
前言github 提交代码总是失败,还是老老实实使用VPN吧。但是VPN打开了,git终端命令还是不行,原来是要进行终端代理设置。一起来看看吧! 开启代理前置条件:手动开打 clash 等VPN软件 12export http_proxy=http://127.0.0.1:7890export https_proxy=http://127.0.0.1:7890 对应的网址是在settings- static-Host; 对应port 为General-Prot clash Verge复制环境变量 去github 执行 12export https_proxy=http://127.0.0.1:7897 http_proxy=http://127.0.0.1:7897 all_proxy=socks5://127.0.0.1:7897 取消代理12unset http_proxyunset http_proxy git 里设置开启代理 alias 命令别名新建 .bashrc123456789101112131415161718cd ~vi .bashrc#...
leetcode 2594修车的最少时间
2594. 修车的最少时间 - 力扣(LeetCode) 思路能力值为 r 的机械工可以在 t= r * n2 分钟内修好 n 辆车。可以看到 n = 根号(t/r), t 对于car 的数量是单调增的,所以可以适用二分法来不断逼近car 的数量。 12345678910111213141516171819202122func repairCars(ranks []int, cars int) int64 { l , r := 1, ranks[0] * cars * cars var check = func(m int) bool { cnt := 0 for _, x := range ranks { cnt += int(math.Sqrt(float64(m / x))) } return cnt >= cars } for l < r { ...
设计模式-抽象工厂
抽象工厂模式结构多个工厂模式; 有抽象工厂(现代工厂,和古代工厂),具体工厂(现代工程和古代风格工厂实现),抽象产品(接口 ,椅子和桌子) 和具体产品(实现具体的桌子和椅子)
设计模式-工厂方法模式
网站链接:工厂方法设计模式 (refactoringguru.cn) 简介工厂方法模式 她是一种创建型设计模式,其在父类中提供一种船舰对象的方法,允许子类决定实例化对象的类型。 简单工厂‘简单工厂模式’,也就是说,到底要实例化谁,将来会不会增加实例化的对象,比如增加开根运算,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂简单工厂就是在需要的时候, 创建对应的类. 每个类都相互独立,互不影响, 如果增加代码,不会编译之前的类, 减少编译时间. 工厂方法模式结构不同的类实现相同的动作,例如运输等 产品 (Product) 将会对接口进行声明。 对于所有由创建者及其子类构建的对象, 这些接口都是通用的。 具体产品 (Concrete Products) 是产品接口的不同实现。 创建者 (Creator) 类声明返回产品对象的工厂方法。 该方法的返回对象类型必须与产品接口相匹配。 你可以将工厂方法声明为抽象方法, 强制要求每个子类以不同方式实现该方法。 或者, 你也可以在基础工厂方法中返回默认产品类型。 ...
leetcode 2511 最多可以摧毁的敌人城堡数目
2511. 最多可以摧毁的敌人城堡数目 - 力扣(LeetCode) 思路抽象出来就是求1和-1间最大连续0 的数量。 有两种情况,开始是1 结尾是-1,中间都是0;第二种情况开始是-1结尾是1,中间都是0;上边怎么保证终点和起点不一样呢? 1.当然可以分类讨论,代码会很复杂,判断很多,容易出错 使用 一个变量pre记录开始节点,变更当1或者-1 进来的时候,pre 更新为index,判断当前节点是否和pre 不相等,符合条件则更新res 12345678910111213141516171819202122232425262728293031323334353637383940func captureForts(forts []int) int { ans, pre := 0, -1 //pre 记录的是 1 或 -1 的位置 for i, fort := range forts { if fort == -1 || fort == 1 { if pre >= 0...
LRU
146. LRU 缓存 - 力扣(LeetCode) list Elemet 双向列表; 123456789101112131415161718192021222324252627282930313233343536373839404142434445import "container/list"type LRUCache struct { cap int // 缓存容量 cache map[int]*list.Element//!!! 双向链表 使用Element // 双向链表节点 指向的map list *list.List // 双向链表}type keyVal struct { key, val int // 节点的Key和Value}func Constructor(capacity int) LRUCache { return LRUCache{ cap: capacity,...
leetcode 最大深度和最小深度
题目104. 二叉树的最大深度 - 力扣(LeetCode) 111. 二叉树的最小深度 - 力扣(LeetCode) 思路深度 是指从根节点到该节点的距离(节点数量)高度 是指从该节点到叶子节点的角力(节点数量) 最大深度 可以通过迭代法,计算总共有多少层。 可以使用递归分治的思想,1 + maxDepth(左子树) + maxDepth(右子树)最小子树 其实和最大深度类似,但是这里要注意的是,不能直接套用最大深度的代码。最小子树的要求是,到叶子节点的距离。而上边最大深度没有这个要求。所以要对一侧子树为空的情况需要单独讨论。以下是代码实现: 最大深度递归分治后序遍历 需要调用自生函数,需要严格按照定义调用递归。 1234567891011121314151617// 定义:输入根节点,返回这棵二叉树的最大深度func maxDepth(root *TreeNode) int { if root == nil { return 0 } rightMaxDepth := maxDepth(root.Right) ...
Go语言中的byte类型与Unicode码点与整数的转换
byte类型与Unicode码点的转换在Go语言中,byte 类型是无符号的8位整数类型,而字符类型 rune 则用于表示Unicode码点。 当我们将一个 byte 类型的值转换为对应的 int 类型时,它实际上是将字节的数值直接转换为 int。这种转换通常用于将ASCII字符转换为对应的整数。 123456789101112package mainimport ( "fmt")func main() { b := byte('A') i := int(b) fmt.Printf("Byte: %c, Unicode码点: %d, 转换后的整数: %d\n", b, b, i)} 在上面的示例代码中,我们将字符 ‘A’ 转换为 byte 类型并赋值给变量 b,然后再将 b 转换为 int 类型并赋值给变量 i。输出结果如下: 1Byte: A, Unicode码点: 65, 转换后的整数: 65 可以看到,转换后的整数值与字符 ‘A’...
Mesh组网:家庭路由和无线连接新方式
在当今互联的世界中,传统的网络常常面临覆盖范围、可靠性和可扩展性方面的限制。Mesh组网作为一种解决方案应运而生,通过创建一个动态网络,使设备能够直接相互通信,形成一个弹性和高效的网络基础设施。本文将从what、how和why的角度探讨Mesh组网。 what Mesh组网是什么? Mesh组网是一种分散式无线通信系统,允许设备直接相互连接,形成交织在一起的节点网状结构。与传统的网络不同,依赖于中心接入点,Mesh网络使得设备能够同时充当客户端和路由器的角色。Mesh中的每个设备可以将数据中继到其他节点,扩大网络的覆盖范围并增强其鲁棒性。 how Mesh组网如何实现?...
链表总结
链表的合并 虚拟头节点 拉拉链 1234567891011121314151617181920212223242526272829303132func mergeTwoLists(l1 *ListNode, l2 *ListNode) *ListNode { // 虚拟头结点 dummy := &ListNode{-1, nil} p := dummy p1 := l1 p2 := l2 for p1 != nil && p2 != nil { // 比较 p1 和 p2 两个指针 // 将值较小的的节点接到 p 指针 if p1.Val > p2.Val { p.Next = p2 p2 = p2.Next } else { p.Next = p1 p1 = p1.Next ...