- 博客(28)
- 收藏
- 关注
原创 经典算法整理(Go语言实现)
回溯算法(Backtracking Algorithm)也可以叫做回溯搜索法,它是一种经典的搜索算法,它基于深度优先搜索(DFS)的思想,通过递归地尝试每一种可能的情况来解决问题。
2024-10-19 17:52:32
1044
原创 Kubernetes学习笔记
Kubernetes 集群由一个控制面和一组用于运行容器化应用的工作机器组成,这些工作机器称作节点(Node)。每个集群至少需要一个工作节点来运行 Pod。工作节点托管着组成应用负载的 Pod。控制面管理集群中的工作节点和 Pod。在生产环境中,控制面通常跨多台计算机运行,而一个集群通常运行多个节点,以提供容错和高可用。控制面组件:控制面组件会为集群做出全局决策,比如资源的调度。以及检测和响应集群事件,例如当不满足 Deployment 的 replicas 字段时,要启动新的 Pod)。
2024-10-16 09:29:09
791
原创 二叉树基础
如果节点 X 存储在数组中下标为 i 的位置,下标为 2 * i 的位置存储的就是左子节点,下标为 2 * i + 1 的位置存储的就是右子节点。从前面画的前、中、后序遍历的顺序图,可以看出来,每个节点最多会被访问两次,所以遍历操作的时间复杂度,跟节点的个数 n 成正比,也就是说二叉树遍历的时间复杂度是 O(n)。经典的方法有三种,前序遍历、中序遍历和后序遍历。编号3的二叉树中,叶子节点都在最底下两层,最后一层的叶子节点都靠左排列,并且除了最后一层,其他层的节点个数都要达到最大,这种二叉树叫做完全二叉树。
2024-03-13 00:12:34
603
原创 Go 编程模式:Functional Options学习笔记
这组代码传入一个参数,然后返回一个函数,返回的这个函数会设置自己的 Server 参数。上述编码不但解决了“使用 Config 对象方式的需要有一个 config 参数,但在不需要的时候,是放 nil 还是放 Config{}”的选择困难问题,也不需要引用一个 Builder 的控制对象,直接使用函数式编程,在代码阅读上也很优雅。再定一个 NewServer()的函数,其中,有一个可变参数 options ,它可以传出多个上面的函数,然后使用一个 for-loop 来设置 Server 对象。
2024-03-12 00:03:14
421
原创 Go语言var prev *ListNode和pre := &ListNode{}的区别
var prev *ListNode 只声明了一个指针变量 prev,并没有分配或初始化任何 ListNode 实例。pre := &ListNode{} 不仅声明了一个指针变量 pre,还分配并初始化了一个 ListNode 实例,并将 pre 指向这个新实例。
2024-03-11 19:42:46
436
原创 认识Go语言空结构体
需要注意的是,虽然空结构体不占用任何额外的空间来存储字段,但在某些情况下(例如作为映射的键或通道的元素),它们仍然会占用一些内存来标识唯一的实例。本质上来讲,使用空结构体的初衷只有一个:节省内存,但是更多的情况,节省的内存其实很有限,这种情况使用空结构体的考量其实是:根本不关心结构体变量的值。golang 正常的 struct 就是普通的一个内存块,必定是占用一小块内存的,并且结构体的大小是要经过边界,长度的对齐的。结构体名称是你为结构体定义的名称,字段是结构体的成员变量,类型是字段的数据类型。
2024-03-11 18:01:29
1010
原创 Go 编程模式:错误处理学习笔记
nil 的情况,退出循环后有一个 scanner.Err() 的检查,看来使用了结构体的方式。这段代码通过使用 Closure 的方式把相同的代码给抽出来重新定义一个函数,这样大量的 if err!=nil 处理得很干净了,但是会带来一个问题,那就是有一个 err 变量和一个内部的函数,感觉不是很干净。Go 语言的函数支持多返回值,所以,可以在返回接口把业务语义(业务返回值)和控制语义(出错返回值)区分开。Go语言的错误处理的方式,本质上是返回值检查,但它兼顾了异常的一些好处——对错误的扩展。
2024-03-11 00:18:26
316
原创 Go编程模式:切片、接口、时间和性能学习笔记
这种编程模式在 Go 的标准库有很多的示例,最著名的就是 io.Read 和 ioutil.ReadAll 的玩法,其中 io.Read 是一个接口,你需要实现它的一个 Read(p []byte) (n int, err error) 接口方法,只要满足这个规则,就可以被 ioutil.ReadAll这个方法所使用。a[1:16] 的切片赋给 b ,此时,a 和 b 的内存空间是共享的,然后,对 a 做了一个 append()的操作,这个操作会让 a 重新分配内存,这就会导致 a 和 b 不再共享。
2024-02-23 00:12:10
958
1
原创 Go语言练习——罗马数字转整数
数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。若存在小的数字在大的数字的左边的情况,根据规则需要减去小的数字。对于这种情况,我们也可以将每个字符视作一个单独的值,若一个数字右侧的数字比它大,则将该数字的符号取反。若输入的字符串满足该情况,那么可以将每个字符视作一个单独的值,累加每个字符对应的数值即可。例如 XXVII 可视作 X+X+V+I+I=10+10+5+1+1=27。罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。输入: s = “IV”
2023-10-26 00:05:21
86
原创 Go语言Select chan用法详解
select 语句是 Go 语言中用于处理多个通道操作的关键字,它允许你在多个通道上进行非阻塞的选择操作。select 语句可以用于以下几种情况:监听多个通道:你可以同时监听多个通道,一旦其中任何一个通道就绪(有数据可读或可写),select 就会选择第一个就绪的通道执行相关操作。超时操作:你可以使用 select 结合定时器通道来实现超时操作,以确保不会无限期地等待通道操作完成。避免阻塞:当某个通道操作可能导致程序阻塞时,select 可以帮助你避免阻塞,以保持程序的响应性。
2023-09-11 16:38:16
239
原创 为什么要实例化对象
在Go中,你可以使用结构体来表示对象,并通过实例化结构体来创建对象的具体实例。总之,对象实例化是面向对象编程中的基本概念,它允许你创建具体的对象,封装数据和行为,并在程序中使用这些对象来表示和操作实际问题。我们可以使用Go中的结构体来表示矩形对象,并通过实例化结构体来创建具体的矩形实例。在面向对象编程中,实例化对象是为了创建类的具体实例,以便在程序中使用这些实例来表示和操作某种数据或行为。模块化和重用:我们可以创建多个不同的矩形实例,每个实例都可以独立使用,从而实现了代码的模块化和重用。
2023-09-08 10:47:07
712
原创 Go语言实现C方法的调用
这涉及到使用 import “C” 来导入 C 代码,并将 Go 数据类型映射到 C 数据类型。在这个示例中,使用 -I 指定包含 C 头文件的目录,并使用 -L 指定 C 库的目录和 -l 指定库的名称。在 Windows 上,可能需要将 C 代码编译为 DLL,并在链接选项中使用 -ldflags -lmylibrary.dll,以加载动态链接库。在上述 Go 代码中使用 import “C” 导入了 C 代码,并在 main 函数中调用了 C.helloFromC()。
2023-09-08 09:04:48
240
原创 Go语言实现监听某方法调用返回值并与上一次的结果进行比较的方法
在这个示例中,创建了一个通道 resultChan 和一个变量 prevResult 来存储上一次的结果。在匿名函数的协程中,循环调用 SomeFunction 并将当前结果和上一次结果发送到通道中。要实现监听某个方法调用的返回值,并与上一次的结果进行比较,可以在监听方法调用的返回值时,将上一次的结果也传递到通道中。然后,在接收通道中的返回值时,你可以比较新旧值并执行相应的逻辑。在主协程中,循环接收通道中的结果,并比较当前结果和上一次结果。根据比较结果,执行相应的逻辑。
2023-09-07 17:41:29
192
原创 时间数据处理
以上代码中,我们首先定义了要转换的时间字符串格式,然后使用。类型转换为Unix时间戳,输出2716704646。包来将时间字符串转换为时间戳。函数将时间字符串转换为。
2023-06-08 21:37:40
269
原创 Go对象切片排序与map排序
3.实现Less方法,该方法定义了对象的比较规则。按照员工的年龄从小到大对员工列表进行排序输出。4.使用sort包中的sort方法,进行排序。2.实现sort.Interface接口。
2023-06-08 16:45:34
178
原创 Go判断对象是否为空结构
在Go语言中,判断一个对象是否为空结构体可以通过reflect包中的IsZero方法来实现。此外还可以通过判断类型和零值来判断一个结构体是否为空。
2023-05-31 10:45:12
1343
1
原创 Go计算某段代码运行所耗时间
类型的值,表示两个时间之间的时间差。默认情况单位为纳秒。如需要以秒为单位的结果,可以用。函数,记录代码的开始和结束时间,计算时间差来得到代码运行耗时。方法将其转换为浮点数。
2023-05-30 21:24:26
1793
1
原创 Go语言字节切片转换
可以使用Go语言中的内置函数"String()"可以将字节切片转换为字符串。执行上述代码会输出字符串abcd。在转换过程中,Go语言会将字节切片中的每个字节都转换为对应的Unicode字符,并组成一个字符串返回。注意:在使用string()函数将字节切片转换为字符串是,字节切片中的每个字符必须都是有效的ASCII或Unicode码。如果字节切片中包含无效的字符,则转换结果将变得不可预测。
2023-05-30 21:15:19
1194
1
原创 Anaconda3在windows环境下安装记录
Anaconda3在windows环境下安装记录一、下载Anaconda3二、安装Anaconda3三、修改jupyter_notebook起始路径一、下载Anaconda3进入Anaconda3官网下载页面下载指定版本的安装包二、安装Anaconda3傻瓜式安装,双击安装包,根据提示完成Anaconda3本地安装。三、修改jupyter_notebook起始路径进入jupyter_notebook快捷方式所在路径右键点击该快捷方式,进入属性提示框,将图中标记框中的路径改为期望的起始路径,
2021-04-07 16:42:53
130
原创 Deepson在Jetson Nano上进行视频分析的入门
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档Deepson在Jetson Nano上进行视频分析的入门系列文章目录前言一、DeepStream简介1.什么是DeepStream应用程序?2.什么是DeepStream SDK?3.DeepStream SDK参考应用程序4.GStreamer插件5.TensorRT6.视频分析7.DeepStr
2021-04-02 16:35:13
1088
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人