- 博客(520)
- 收藏
- 关注
原创 c++编译动态库,go语言进行调用报不存在函数定义错误
函数名前后增加Z15等字符是C++名称修饰的结果。使用extern "C"可以避免名称修饰,方便在动态库中直接通过原始函数名调用。使用nm命令可以查看动态库中的符号,帮助确认函数名的变化。
2025-03-21 07:01:11
185
原创 git bundle创建和复制分支的方法
git bundle是一个非常实用的 Git 工具,它允许你将一个 Git 仓库的提交历史打包成一个单独的文件,方便在没有网络连接或者不方便直接克隆仓库的情况下传输和分享代码。以下是git bundle常见使用场景及对应的实例。
2025-03-17 22:25:35
318
原创 go回调函数的使用
在Go语言中,回调函数可以有参数,也可以没有参数。它们的定义和使用方式略有不同,但本质上都是将函数作为参数传递给另一个函数,并在适当的时候调用它。以下是带参数和不带参数的回调函数的示例和说明。无论是带参数还是不带参数的回调函数,都可以使用匿名函数来实现。匿名函数可以在调用时直接定义,而不需要提前声明。带参数的回调函数可以传递数据给回调函数,使其更加灵活。不带参数的回调函数是最简单的形式,通常用于简单的事件处理或状态通知。通过合理使用回调函数,可以实现更灵活的代码结构和更高效的程序设计。
2025-03-14 22:56:02
445
原创 go中实现子模块调用main包中函数的方法
推荐方法:将共享逻辑提取到独立的包中,避免循环依赖。替代方法:使用回调函数传递逻辑,避免直接导入main包。在实际开发中,尽量避免在子模块中直接调用main包的逻辑,这样可以保持代码的清晰性和模块化。
2025-03-14 22:12:43
486
原创 git subtree在本地合并子仓库到主仓库
以上是几种补充的合并方法,每种方法都有其适用场景和优缺点。如果需要保留历史记录,可以使用的--rejoin或。如果只需要当前状态,可以使用或手动复制文件。如果需要选择性合并提交,可以使用git rebase或。如果需要更灵活的工作环境,可以使用。希望这些方法能帮助你更灵活地完成子仓库到主仓库的合并!
2025-03-13 00:23:37
1026
原创 转和git subtree管理方式为git submodule的管理方式
通过以上步骤,你可以将 Git 子树转换为子模块,从而更灵活地管理依赖关系。找到当前项目中子树的路径以及对应的远程仓库地址。例如,假设子树的路径为。,对应的远程仓库地址为。
2025-03-10 23:08:03
388
原创 git worktree的使用
是 Git 提供的一个强大功能,允许你在同一个仓库中同时创建多个工作目录,每个目录对应一个分支,从而实现并行开发。以下是。
2025-03-10 20:43:56
469
原创 git子仓库管理的两种方式
取决于项目的需求和团队的工作方式。根据团队的工作方式和项目需求,选择合适的工具可以显著提高协作效率。在团队协作中选择使用。
2025-03-10 19:57:46
552
原创 go语言for循环中嵌套defer的执行顺序
如果defer函数是否捕获变量的值或引用如果捕获的是值(通过参数传递),则每次迭代都会记录当前迭代的值。如果捕获的是引用(直接访问变量),则所有defer调用可能会打印相同的值(循环结束后的值)。闭包的使用:如果使用闭包捕获变量的值,每次迭代都会记录当前迭代的值。因此,使用defer时需要注意变量捕获的细节,以避免意外的行为。在for循环中嵌套defer时,defer语句会在每次迭代结束时被记录,但实际执行时机是在包含它的函数返回时。理解defer的执行规则和上下文非常重要,以避免意外行为。
2025-03-04 21:06:09
939
原创 go语言转换json字符串为json数据
在 Go 语言中,可以使用标准库 中的 函数将 JSON 字符串转换为 JSON 数据(通常是 Go 中的结构体或 map 类型)。以下是一个简单的示例:代码说明定义结构体: 函数:错误处理:运行上述代码后,输出如下:使用 解析 JSON如果 JSON 结构不固定,也可以使用 来解析 JSON 数据,示例如下:这种方式更加灵活,但需要通过类型断言来访问具体字段的值。希望这些示例对你有帮助!
2025-03-03 20:03:43
332
原创 git从本地其他设备上fetch分支
在 Git 中,如果你想从本地其他设备上获取分支,可以通过以下几种方式实现。不过,需要注意的是,Git 本身是分布式版本控制系统,通常我们是从远程仓库(如 GitHub、GitLab 等)拉取分支,而不是直接从本地其他设备上操作。
2025-02-22 15:22:04
955
原创 go语言闭包的立即执行和不立即执行
闭包是一种函数,它捕获了其定义时所在的作用域中的变量。在这个例子中,makeAdder 返回了一个闭包,这个闭包可以访问其定义时的 base 变量定义闭包后,将其存储在变量中,后续再调用。
2025-02-22 15:15:23
469
原创 我的nvim的init.lua配置
coc.nvim插件安装其他插件的路径(例如:coc-go,coc-clangd等等):~/.config/coc。其他插件的下载路径:~/.local/share/nvim。
2025-01-06 09:55:20
741
原创 cgo中各种类型转换
定义一个c结构体的Go版本,然后使用C.stuct_name来创建一个C结构体,注意Go结构体的字段与c结构体的字段顺序和类型匹配。:使用C.CString函数将Go字符串转换为C字符串,返回值是一个*C.char类型的指针。c指针到Go指针:使用(*T)(unsafe.Pointr©)将c指针转换为Go指针,其中T是go中的类型,c是c指针。Go浮点数到C浮点数, 可以直接赋值, Go会自动转换为适当的C浮点数类型(如C.float, C.double等):使用C.GoBytes函数。
2024-12-22 11:10:51
273
转载 使用typora进行画图
概述一、流程图二、UML时序图三、甘特图四、类图五、状态图六、饼图七、导出八、总结使用方法:首先在 Typora 中,输入```//三个反斜的上引号mermaid 然后敲击回车,即可初始化一张空白图。上面的三个```也就是esc健对应下面的健。在空白处输入下面的源码即可,按照mermaid语法格式来操作即可。一、流程图1)、竖向(TD 表示从上到下)graph TD; A-->B; A-->C; B-->D; D-->
2024-11-10 10:56:38
3110
3
原创 升腾c92刷bios(一)
原机的bios是不允许设备通过usb接口进行系统更换,需要输入boot的正好和密码才可以,可惜的是我们并不知道原机的密码是什么。进入盘符,并对原bios进行备份,其中。(文章结尾提供文件)
2024-07-25 23:37:40
2134
转载 Linux开机顺序详解
在设定了运行等级后,Linux系统执行的第一个用户层文件就是/etc/rc.d/rc.sysinit脚本程序,它做的工作非常多,包括设定PATH、设定网络配置(/etc/sysconfig/network)、启动swap分区、设定/proc等等。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。众所周知,硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
2024-07-18 00:15:12
106
转载 linux下添加简单的开机自启动脚本
这里要注意的是,systemd是linux发行版上的预装工具,用来管理系统软件的启动运行和结束,所以通常来说,这套东西是依赖于发行版的,如果系统使用了这一套工具,那么就可以使用它来管理进程,如果不是,即使你安装了它,它也不会被默认配置为系统管理工具。可以看到,这里在/etc/systemd/system/multi-user.target.wants/目录下创建了一个/usr/lib/systemd/system/test.service文件的软链接,到这里设置开机自启动就完成了。
2024-07-18 00:05:46
171
转载 几种TCP连接中出现RST的情况( 比较详细)
总结,本文讲了几种TCP连接中出现RST的情况。实际上肯定还有无数种的RST发生,我以后会慢慢收集把更多的例子加入这篇文章。
2024-06-19 11:25:41
3762
原创 mac地址一样,ip不同,能ping通么?
在第一次未链接设备的情况下,地址表是空的,在进行第一次ping时,先发送arp包,此时进入设备的mac地址和端口,会被记录在交换机中,出去的mac地址和端口号也会记录在交换机中,此时相同的mac地址存在两个端口,此时可能会认为 两个相同的mac地址都存在,那一定会导致网络时断时续,但现象是两个网络正常通信,不受到任何的影响。这是因为在进入的端口只会通过除了本端口之外的其他的端口,而该对应的mac和端口是存在的。C-> A 第一次通信,可以设备可以ping通,此时C -> B两个设备ping不通。
2024-06-01 15:32:37
2089
转载 go中函数高级用法:匿名、闭包及高阶函数
有了闭包后函数就成为了一个变量的值,只要变量没被释放,函数就会一直处于存活并独享的状态,因此可以后期更改函数中变量的值(因为这样就不会被go给回收内存了,会一直缓存在那里)。然后在下面声明的函数printToStd的签名与Printer的是一致的,因此前者是后者的一个实现,即使它们的名称以及有的结果名称是不同的。只要两个函数的参数列表和结果列表中的元素顺序及其类型是一致的,我们就可以说它们是一样的函数,或者说是实现了同一个函数类型的函数。只要满足了其中任意一个特点,我们就可以说这个函数是一个高阶函数。
2024-05-09 22:45:40
115
转载 安装node的版本问题记录
在服务器中离线安装node.js环境,下载官网下载最新的Linux 二进制文件 (x64),node-v16.16.0-linux-x64.tar.xz。通过命令strings /lib/i386-linux-gnu/libc.so.6 | grep ^GLIBC查看当前系统glibc的版本。是因为高版本的nodejs需要更高版本的glibc编译环境,目前我的服务器对应的glibc最高只能支持到2.27。贸然更新glibc的版本存在较大的风险,所以建议降低node.js的版本,去兼容低版本glibc。
2024-05-05 22:44:34
273
转载 linux——nm命令:查看符号表
nm 命令显示关于指定 File 中符号的信息,文件可以是对象文件、可执行文件或对象文件库。所谓符号,通常指定义出的函数,全局变量等等。A 在每个符号信息的前面打印所在对象文件名称;C 输出demangle过了的符号名称;D 打印动态符号;l 使用对象文件中的调试信息打印出所在源文件及行号;n 按照地址/符号值来排序;u 打印出那些未定义的符号;A 该符号的值在今后的链接中将不再改变;B 该符号放在BSS段中,通常是那些未初始化的全局变量;
2024-03-22 23:25:04
1169
原创 binary.write 和 binary.read
此包实现了对数据与byte之间的转换,以及varint的编解码。2、binary为我们开发者提供了哪些内容?二、binary为我们开发者提供了哪些内容?转化成二进制格式与原本数据转字符串相比会更节省空间。golang中encoding/binary包。1、golang包中的binary包是什么?一、golang包中的binary包是什么?uvarint和varint的编解码。3、编解码有哪几种方法?数据的byte序列化转换。
2024-03-17 12:17:28
873
原创 ranger的使用
注意:如果要使用~/.config/ranger目录下的配置生效,需要把。.开头主要是文件过滤,后面跟一些过滤规则筛选出满足条件的文件或目录。g开头主要是目录跳转,后面可以跟一些参数指定要跳转的位置。可以使用以下命令复制默认配置文件到这个目录。z开头主要是设置,后面跟一些具体要设置什么。s开头主要是排序,后面跟一些排序规则。启动之后ranger会创建一个目录。这些快捷键都是与vim的操作一样。变量设置为false。
2024-03-06 23:53:43
678
转载 git fsck 恢复误删 stash 贮藏的数据
可以通过 git show 来查看是否是自己想要的代码,排列顺序是最新的在最上面。stash 之后的内容没有应用到代码上就直接给删除了。找到想要的代码 id 后,执行 git merge 来恢复代码。执行完之后会得到很多 id ,其中会标明哪个是 commit。
2024-02-23 22:36:27
493
1
原创 Git 提交指定文件的部分修改
被分配了两个Bug,已经改好了A, 正在处理B, 但被要求先提交A, AB有修改在同一文件里,那么问题来了:Git 如何提交文件的部分修改?
2023-12-15 00:46:40
719
原创 go的结构体作为返回值
2、getinfo1() 结构体指针 即使在函数外有实体也会报错崩溃,是因为此时给返回的结构体指针声明了一个结构体指针,但这个结构体指针没有实体,在赋值时会报错。1、getinfo() 结构体指针 需要在返回的结构体在函数外有实体。3、getinfo2() 结构体作为返回值 外层可以有实体也可以没有。
2023-12-12 22:29:41
966
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人