- 博客(34)
- 收藏
- 关注
原创 Backend Tuning--auto tuning
相似的算子:normalization 、layer normalization 这些算子的计算模式相似可以抽象出来一种固定优化的pattern或者方式。
2025-04-08 12:48:06
233
原创 C++ Upcast向上造型
如果B继承A,则A能用的地方,B同样适用。这称为 B Upcast A。B对象的内存空间,起始的那块内容仍然装的是父类A。
2025-02-16 16:54:46
116
原创 C++ references
C++复杂在于提供了太多的内存模型或者说: 提供了两种东西:2、提供了很多访问对象的方式3 * 3 = 9 种访问对象的方式。
2025-02-15 16:46:15
333
原创 git 沙盒体验(下)
沙盒url : Learn Git Branching使用相对引用最多的就是移动分支。可以直接使用 选项让分支指向另一个提交。例如:上面的命令会将 main 分支强制指向 HEAD 的第 3 级 parent 提交。在 Git 里撤销变更的方法很多。和提交一样,撤销变更由底层部分(暂存区的独立文件或者片段)和上层部分(变更到底是通过哪种方式被撤销的)组成。我们这个应用主要关注的是后者。主要有两种方法用来撤销变更 —— 一是 ,还有就是 。接下来咱们逐个进行讲解。 通过把分支记录回退几个提交记录来实现撤销改
2025-02-12 16:20:02
917
原创 Git 沙盒体验
你的同事这周写了一堆代码,还改了许多你的功能中使用的 API,这些变动会导致你新开发的功能变得不可用。不会移动你的工作(它会创建新的合并提交),但是它会告诉 Git 你已经合并了远程仓库的所有变更。这是因为远程分支现在是你本地分支的祖先,也就是说你的提交已经包含了远程分支的所有变化。Git 这么做是出于不能直接在这些分支上进行操作的原因, 你必须在别的地方完成你的工作, (更新了远程分支之后)再用远程分享你的工作成果。还是直接在新代码的基础上添加你的代码,亦或由于你的提交已经过时而直接忽略你的提交?
2025-02-10 18:08:39
868
原创 Linux学习(一)
本书将上述内容一网打尽,一个不漏。红帽认证考试的形式为上机实操,且在一天内考完。上午的 RHCSA 认证的考试时长是 2.5 小时,对应的是 RH124 和 RH134 的课程内容,下午的 RHCE 认证的考试时长是 3.5 小时,对应 的是 RH294 课程内容。两门考试的成绩通常会在考试结束后的 72 小时内公布。RHCSA 和 RHCE 认证考试的满分均为 300 分,达到 210 分为合格,会连同成绩和电子证书发送到考试邮箱中。
2024-04-28 19:54:44
1049
原创 go语言基础学习-通道(续)
当互斥锁释放后,等待的goroutine才可以获取锁进入临界区,多个goroutine同时等待一个锁时,唤醒的策略是随机的。互斥锁是完全互斥的,但是有很多实际的场景下是读多写少的,当我们并发的去读取一个资源不涉及资源修改的时候是没有必要加锁的,这种场景下使用读写锁是更好的一种选择。互斥锁是一种常用的控制共享资源访问的方法,它能够保证同时只有一个goroutine可以访问共享资源。当一个goroutine获取读锁之后,其他的goroutine如果是获取读锁会继续获得锁,如果是获取写锁就会等待。
2024-03-31 20:48:16
528
原创 go语言基础学习(九)--并发篇
Go运行时的调度器使用GOMAXPROCS参数来确定需要使用多少个OS线程来同时执行Go代码。默认值是机器上的CPU核心数。例如在一个8核心的机器上,调度器会把Go代码同时调度到8个OS线程上(GOMAXPROCS是m:n调度中的n)。Go语言中可以通过runtime.GOMAXPROCS()函数设置当前程序并发时占用的CPU逻辑核心数。Go1.5版本之前,默认使用的是单核心执行。Go1.5版本之后,默认使用全部的CPU逻辑核心数。
2024-03-25 21:03:35
840
原创 go语言基础学习(八)- I/O操作
客户不应假定它们对于并行执行是安全的。io.Reader 表示一个读取器,它将数据从某个资源读取到传输缓冲区。在缓冲区中,数据可以被流式传输和使用。
2024-03-20 17:01:10
802
1
原创 go语言基础学习笔记(七)-接口
type 接口类型名 interface{方法名1( 参数列表1 ) 返回值列表1方法名2( 参数列表2 ) 返回值列表2接口类型名:使用 type 将接口定义为自定义的类型名。Go语言的接口在命名时,一般会在单词后面添加 er,如有写操作的接口叫 Writer,有字符串功能的接口叫 Stringer,有关闭功能的接口叫 Closer 等。方法名:当方法名首字母是大写时,且这个接口类型名首字母也是大写时,这个方法可以被接口所在的包(package)之外的代码访问。
2024-03-19 17:38:04
385
1
原创 go语言基础学习笔记(六)-并发篇
接上篇问题:主协程 退出了,子协程还会执行吗?GPM是Go语言运行时(runtime)层面的实现,是go语言自己实现的一套调度系统。区别于操作系统调度OS线程。调度P与M一般也是一一对应的。他们关系是: P管理着一组G挂载在M上运行。当一个G长久阻塞在一个M上时,runtime会新建一个M,阻塞G所在的P会把其他的G 挂载在新建的M上。当旧的G阻塞完成或者认为其已经死掉时 回收旧的M。P的个数是通过runtime.GOMAXPROCS设定(最大256),Go1.5版本之后默认为物理线程数。
2024-03-15 21:35:03
702
1
原创 gin基础学习笔记(六)-gin中间件
所有的请求先经过此中间件在Gin框架中,中间件(Middleware)是一种机制,用于在请求到达路由处理函数之前或之后执行一些通用的逻辑。中间件可以对HTTP请求进行预处理、后处理或者进行一些额外的操作,例如身份验证、日志记录、错误处理、性能监控等。中间件的作用包括但不限于以下几点:身份验证和授权中间件可以用于验证用户身份、检查权限,确保只有经过授权的用户可以访问特定的路由或资源。中间件可以记录请求的信息,如请求路径、请求方法、请求参数等,以便进行日志记录和监控。
2024-03-15 20:43:19
768
1
原创 gin基础学习笔记(五)
简单解释一下protobuf,在Golang中,Gin是一个流行的Web框架,而Protobuf(Protocol Buffers)是一种用于序列化结构化数据的语言无关、平台无关、可扩展的机制。使用Protobuf可以减少数据传输的大小,提高数据传输效率,从而加快网络通信速度,减少带宽消耗。Protobuf提供了代码生成工具,可以根据定义的消息结构自动生成对应的数据结构和序列化/反序列化方法,简化开发过程。使用Protobuf定义数据结构后,可以在编译阶段进行类型检查,避免一些潜在的数据传输错误。
2024-03-13 18:08:39
672
原创 GO语言基础学习笔记(五)
进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。线程是进程的一个执行实体,是CPU 调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程可以创建和撤销多个线程,同一个进程中的多个线程之间可以并发执行。多线程程序在单核心的 cpu 上运行,称为并发;多线程程序在多核心的 cpu 上运行,称为并行。
2024-03-12 21:00:31
405
1
原创 gin基础学习笔记(三)
借助postman发送请求,但是有些问题,明天解决。httproter会将所有路由规则构造一颗前缀树。例如有 com -> baidu -> www。
2024-03-12 20:25:39
167
1
原创 gin基础学习笔记(二)
multipart/form-data格式用于文件上传gin文件上传与原生的net/http方法类似,不同在于gin把原生的request封装到c.Request中在 Go 语言中,<<是位运算符,表示按位左移操作。8 << 20的含义是将整数 8 左移 20 位,即将二进制表示的数值 8 左移 20 位。在这种情况下,8的二进制表示是0000 1000,将其左移 20 位后,即在低位添加 20 个 0,结果为。将这个二进制数转换为十进制数,即为8388608。因此,在 Go 中,8 << 20。
2024-03-11 12:09:42
564
原创 gin基础学习笔记(一)
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。
2024-03-09 12:21:39
1114
原创 go get -u github.com/gin-gonic/gin GO安装gin时报错
表示不能在这个路径下的文件夹里写入内容。今天安装gin时,出现了报错如下。那么修改权限即可具体参考这篇博客。按照网上得排查完错误都不是,仔细阅读报错的内容,发现是。文件权限显示为只可读。
2024-03-08 22:04:52
555
1
原创 GO语言基础学习笔记(三)
/ 相反,当函数 g 返回时,变量 y 不再被使用,也就是说可以马上被回收的。因此,y 并没有从函数 g 中逃逸,编译器可以选择在栈上分配 *y 的存储空间,也可以选择在堆上分配,然后由Go语言的 GC(// 上述代码中,函数 f 里的变量 x 必须在堆上分配,因为它在函数退出后依然可以通过包一级的 global 变量找到,虽然它是在函数内部定义的。Go语言内置的 flag 包实现了对命令行参数的解析,flag 包使得开发命令行工具更为简单。// 用Go语言的术语说,这个局部变量 x 从函数 f 中。
2024-03-07 11:34:26
322
1
原创 GO语言基础学习笔记(二)
字符串替换, 比如将 "Hello, 码神之路Java教程" 替换为 "Hello, 码神之路Go教程"// strings.LastIndex():反向搜索子字符串。// strings.Index(): 正向搜索子字符串。// 如何获取字符串中的某一段字符?
2024-03-06 17:43:03
155
原创 mac m1使用vscode配置go开发环境时遇到的离谱报错解决
于是开始brew安装gccmac不会自动把gcc写入环境变量,还需要手动添加gcc的环境变量注意⚠️,brew下载安装的gcc需要自己手动找到gcc的位置,命令如下输出如下:使用命令行添加系统的PATH之后会到vscode,键盘ctl + shift + p点击第一个,下载所有的tools(!!!!!注意要用魔法,才能过这关)但是还是会报错以为还是环境变量的问题,所以添加了无数遍,并没有什么卵用最后无意间翻到一篇博客,找不到了,说是重新安装一遍vscode就可以的。
2024-02-22 15:51:42
1368
2
原创 电脑图标变成白纸如何恢复
电脑图标变成白纸如何恢复文章目录电脑图标变成白纸如何恢复原因:修改软件所在文件的名字,导致系统无法找到图标所在位置以Typora为例(因为修改成功,所以无法做演示,按照步骤走能解决99%的图标问题)如何快速定位软件的位置原因:修改软件所在文件的名字,导致系统无法找到图标所在位置以Typora为例(因为修改成功,所以无法做演示,按照步骤走能解决99%的图标问题)鼠标右击打开软件的属性修改这两项第一项目标:需要找到应用位于哪个文件夹中(绝对位置)第二项起始位置:把最后一个反斜杠以及后
2021-10-07 10:05:51
6073
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人