git更新仓库地址
使用如下命令 1git remote set-url origin https://gitee.com/xxxxx
设置github 同步到gitee
复制自己电脑的私钥到github 复制自己电脑的公钥到gitee 获取gitee 的私人令牌 创建.github/workflows/xxx.ymal 12345678910111213141516171819202122232425name: Pageson: push: branches: - master # default branchjobs: pages: runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v2 - name: Sync to Gitee uses: wearerequired/git-mirror-action@master env: # 注意在 Settings->Secrets 配置 GITEE_RSA_PRIVATE_KEY SSH_PRIVATE_KEY:...
Golang 使用new创建slice
在 Go 语言中,new 关键字用于分配类型为 T 的零值并返回其地址,即类型为 *T 的值。对于 slice 来说,可以使用 new 来分配一个指向 slice 的指针,但是通常我们不这样做,因为 slice 是引用类型,我们更倾向于直接使用 make 函数来创建 slice。 然而,如果确实需要使用 new 来创建一个 slice 的指针,可以这样做: 12var s *[]int // 声明一个指向int类型slice的指针s = new([]int) // 分配一个int类型的slice,并将其地址赋给s 但是,这样创建的 slice 是一个空的 slice,它没有任何底层数组(即 nil 的数组),并且长度和容量都是 0。如果需要一个具有特定长度和容量的 slice,应该使用 make 函数: 1s := make([]int, length, capacity) // 创建一个长度为 length,容量为 capacity 的int类型slice 如果使用 new 创建了一个 slice 指针,并且想要初始化它,可以这样做: 12s :=...
依赖注入
依赖注入使用接口来实现依赖注入,降低模块间的耦合。概念: 依赖注入是一种设计模式,它允许你将组件的依赖关系(即其他组件或服务)从组件本身中分离出来,并在组件外部进行配置。这样做可以减少组件之间的耦合,使得代码更加模块化,易于测试和维护。 Go 语言实现: 在 Go 语言中,可以通过接口来实现依赖注入。接口定义了组件所需的行为,然后你可以在运行时注入任何实现了这些行为的具体类型。 优点: 降低耦合:组件不直接依赖于具体的实现类,而是依赖于接口,这降低了组件之间的耦合度。 提高灵活性:可以轻易地替换依赖的具体实现,而不需要修改组件的代码。 易于测试:可以为测试注入模拟对象(mocks),从而可以隔离测试组件,不依赖于外部服务或组件。 1234567891011121314151617181920212223242526272829303132333435package maintype Logger interface { Log(message string)}type ConsoleLogger struct{}func (l...
回调函数和直接调用的区别
...
vue3快速实践
教程 | Vue.js (vuejs.org) 声明式渲染你在编辑器中看到的是一个 Vue 单文件组件 (Single-File Component,缩写为 SFC)。SFC 是一种可复用的代码组织形式,它将从属于同一个组件的 HTML、CSS 和 JavaScript 封装在使用 .vue 后缀的文件中。 Vue 的核心功能是声明式渲染:通过扩展于标准 HTML 的模板语法,我们可以根据 JavaScript 的状态来描述 HTML 应该是什么样子的。当状态改变时,HTML 会自动更新。能在改变时触发更新的状态被称作是响应式的。我们可以使用 Vue 的 reactive() API 来声明响应式状态。由 reactive() 创建的对象都是 JavaScript Proxy 123456789import { reactive } from 'vue'const counter = reactive({ count: 0})console.log(counter.count) //...
jupyter
安装pip install notebook 用于启动 Jupyter Notebook 服务的一系列命令 12345jupyter-notebook stop 8888JUPYTER_TOKEN=$(< /dev/urandom tr -dc A-Za-z0-9 | head -c16; echo)echo $JUPYTER_TOKENnohup jupyter-notebook --ip 0.0.0.0 --port 8888 --no-browser --allow-root --NotebookApp.token=$JUPYTER_TOKEN &jupyter-notebook list 这里是每条命令的简要说明: 12345jupyter-notebook stop 8888:停止端口为 8888 的 Jupyter Notebook 服务。JUPYTER_TOKEN=$(< /dev/urandom tr -dc A-Za-z0-9 | head -c16; echo):生成一个随机的 16 位的 token,用于 Jupyter...
leetcode 每日温度 单调栈
739. 每日温度 - 力扣(LeetCode) 栈里边存放的是还没有找到后边更大值的元素 123456789101112131415func dailyTemperatures(temperatures []int) []int { n := len(temperatures) ans := make([]int, n) st := []int{} for i, t := range temperatures { for len(st) > 0 && t > temperatures[st[len(st)-1]] { j := st[len(st)-1] st = st[:len(st)-1] ans[j] = i - j } st = append(st, i) } return ans}...
go语言实现优先队列
Go 语言中实现优先队列,最大堆和最小堆通常可以通过使用容器/heap包来完成。Go 语言的heap包提供了一个堆操作的接口,它允许用户实现任意类型的堆,包括最大堆和最小堆。 1. 优先队列优先队列是一种特殊的队列,元素出队顺序是根据优先级来决定的,而不是按照元素入队顺序。在Go语言中,优先队列可以通过heap包来实现。 2. 最大堆最大堆是一种特殊的完全二叉树,其中每个父节点的值都大于或等于其子节点的值。在Go语言中,可以通过实现heap.Interface接口来创建最大堆。 3. 最小堆最小堆与最大堆相反,其中每个父节点的值都小于或等于其子节点的值。最小堆也可以通过实现heap.Interface接口来创建。 实现步骤定义堆的元素类型首先,你需要定义一个元素类型,这个类型将用于存储在堆中的元素。 1type IntHeap []int 实现heap.Interface接口要使用heap包的功能,你需要实现heap.Interface接口。这个接口包括三个方法:Push, Pop, 和 Less。 123456789101112131415func (h...