- 博客(119)
- 收藏
- 关注
原创 Go语言-->并发-->goruntine
串行:我们都是先读小学,小学毕业后再读初中,读完初中再读高中。并发:同一时间段内执行多个任务(你在用微信和两个女朋友聊天)。并行:同一时刻执行多个任务(你和你朋友都在用微信和女朋友聊天)。
2025-12-03 11:31:06
934
原创 GO语言-->Gin 框架 HTTP 路由
客户端请求 → 中间件1 → 中间件2 → 中间件3 → 处理函数 → 响应(日志) (认证) (权限)路由 = URL + HTTP方法 → 处理函数支持参数(:param)和通配符(param)路由分组便于组织和管理中间件提供强大的扩展能力基于 Radix Tree,性能优异。
2025-10-31 18:06:00
501
原创 Go语言-->sync.WaitGroup 详细解释
是 Go 语言中用于的工具。它允许主 goroutine 等待所有子 goroutine 执行完毕后再继续。
2025-10-28 17:38:14
335
原创 GORM库用法查漏补缺
结构体名称转换为表名称通常使用,此外gorm库还会自动将名称设置为复数。当然,对于那些单复数相同的名词gorm是区分不出来的。如:Good->goods,gorm转复数只会无脑加s。那有什么办法可以让gorm只使用蛇形命名法而不加复数吗?
2025-09-22 17:46:28
833
原创 Go语言-->切片注意点及理解
fmt.Println("=== Go切片核心概念总结 ===")fmt.Println("\n1. 切片的本质:")fmt.Println(" - 切片是一个结构体,包含指针、长度、容量")fmt.Println(" - 切片本身是值类型,但包含指向底层数组的指针")fmt.Println(" - 切片传递时复制结构体,但共享底层数组")fmt.Println("\n2. 内存分配:")fmt.Println(" - 切片结构体通常在栈上")
2025-09-22 14:17:36
1128
原创 Go语言-->if判断中的;
分号在 if 语句中的用途在 Go 的 if 语句中,分号(;)用于分隔初始化语句和条件表达式。这是 Go 语言特有的语法结构,允许在条件判断之前执行一个初始化操作。
2025-08-29 11:55:55
460
原创 Go语言-->数组
Go中的数组是固定大小的、值类型的,必须在声明时指定大小。数组的长度是类型的一部分,长度不同的数组视为不同类型。数组传递是值传递,通常建议通过切片来操作数组,以避免不必要的数组复制。数组初始化可以通过默认值或显式赋值来完成,未初始化的元素会被赋予类型的零值。切片是数组的引用类型,更灵活,支持动态增长,并且是Go中更常用的数据结构。
2025-08-01 16:42:39
655
原创 Go语言-->变量
var age int = 30 // 定义变量并赋初值var name string = "Alice" // 定义变量并赋初值使用var关键字可以声明变量,并指定类型或初始化值。使用:=可以简洁地声明并初始化变量(仅限函数内部)。使用const定义常量,值不可修改。Go 自动推断变量的类型,简化代码书写。
2025-07-28 19:51:55
1029
原创 Go 的第一类对象与闭包
Go 的垃圾回收机制会确保闭包中的变量在不再使用时被正确清理。在 Go 中,闭包是一种非常强大的概念,允许函数在其外部环境中“记住”并。来创建的,返回的函数可以访问外部函数的局部变量。闭包使得 Go 支持许多。不再被引用时,闭包才会释放相关的内存。的特性,如高阶函数、回调函数等。在 Go 中,闭包是通过。,它不仅包含了函数的。外部作用域中的变量。
2025-07-22 17:36:43
564
原创 C++函数 vs Go函数
特性C++Go函数定义显式返回类型,支持重载显式返回类型,不支持重载函数作为对象通过函数指针和 Lambda 表达式函数是第一类对象,支持闭包内存管理静态分配内存,栈上分配局部变量静态分配内存,支持垃圾回收函数重载支持函数重载不支持函数重载C++的函数更侧重于通过指针、重载和类的成员函数来实现灵活性,而Go则通过函数作为值、闭包和垃圾回收等特性,使得函数的使用更加简洁和灵活。
2025-07-22 17:06:24
956
原创 Go语言初识--标识符 可见性
标识符组成:Go 中的标识符由字母、数字和下划线组成,但首字符必须是字母或下划线。导出和未导出大写字母开头的标识符(如MyStructMyFunction)是导出的,可以被外部包访问。小写字母开头的标识符(如namemyFunction)是未导出的,只能在当前包内访问。导出:类似于其他语言中的public,表示对外部可见。未导出:类似于其他语言中的private,表示对外部不可见。
2025-07-22 16:43:03
617
原创 Go语言学习-->go的跨平台编译
默认我们go build的可执行文件都是当前操作系统可执行的文件,Go语言支持跨平台编译——在当前平台下编译其他平台的可执行文件。eg:在windows界面的代码,编译完成后在linux上面运行实现方式:在编译时指定目标操作系统的平台和处理器架构即可。注意:无论你在Windows电脑上使用VsCode编辑器还是Goland编辑器,都要注意你使用的终端类型,因为不同的终端下命令不一样!!!目前的Windows通常默认使用的是PowerShell终端。
2025-06-04 13:49:46
733
原创 Go语言学习-->编译器安装
vscode我之前已经安装过了 这里大概贴一下VS Code官方下载地址:https://code.visualstudio.com/Download
2025-06-03 18:02:04
617
原创 Go语言学习-->从零开始搭建环境
Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/windos 平台下载:我这里下载1.22稳定版双击下载好的.msi文件修改安装路径验证安装是否成功。
2025-06-03 17:51:16
589
原创 QString 写时拷贝简介 实现函数
来源于:Qt 5.15.9源码,地址:https://codebrowser.dev/qt5/qtbase/src/corelib/tools/qshareddata.h.html。
2025-05-23 16:37:35
395
原创 QString 写时拷贝简介
写时拷贝是一种优化内存使用和性能多个对象共享同一份数据(例如字符串内容)。当某个对象要修改数据时,才会真正复制一份数据(即“写时”才“拷贝”)。避免了不必要的内存分配和复制操作。特性QString写时拷贝行为拷贝快速,共享数据修改检查引用计数,必要时复制性能优化减少内存分配与数据复制对开发者透明像值类型一样使用// 判断数据是否共享。
2025-05-23 16:27:23
699
原创 【网络协议】【http】http 简单介绍
HTTP 是一种请求-响应协议,客户端向服务器发送请求,服务器返回响应。状态码是的,用于表示请求的执行结果。状态码按照100-199200-299300-399400-499500-599。
2025-03-28 20:10:36
962
原创 【c++】【STL】unordered_set 底层实现总结
我大概花了一个图 总结了一下 (ps:我自己看的不保证完全正确)ps:我写这个的初衷 是想确定1 c++11里面的unordered_set是否存在红黑树这个数据结构–>否2 他的扩容是怎样设计的–>rehash3 内部的扩容因子究竟是多少–>1.0(最大扩容因子)大概解决这几个问题 并不是整个 unordered_set的内部结构这个图是大概总结了一下调用逻辑 下面写一下参数解释例子存储的键的类型,哈希函数键比较器分配器是
2025-03-24 16:47:30
1546
原创 【c++】【STL】unordered_set 底层实现(简略版)
模板参数解释参数作用_Kty关键字类型(key type)_Hasher哈希函数类型_Keyeq键值比较器类型。
2025-03-19 21:07:21
1235
原创 【c++】【STL】unordered_set 和 multiset
定义空的 unordered_set定义并初始化通过迭代器初始化// 自动去重拷贝构造初始化//拷贝构造赋值初始化。
2025-03-17 15:23:20
553
原创 【c++】【STL】set的常用用法
set<int> s;可以使用greater<>使set 以降序方式存储。(默认为升序)可以通过传入仿函数或 Lambda 表达式自定义排序规则。操作set 复杂度解释插入O(log n)基于红黑树的平衡插入删除O(log n)通过旋转和调整保持平衡查找O(log n)二叉搜索树的搜索。
2025-03-17 14:36:01
1878
原创 【c++】【智能指针】什么情况下不适合智能指针
会引入额外的性能开销,std::unique_ptr。,但在某些场景下仍存在额外的构造、析构或转移开销。【c++】【智能指针】什么情况下不适合智能指针。大多数场景下用到的都是 unique_ptr。shared_ptr:共享所有权。
2025-03-16 21:46:26
621
原创 【c++】【线程】【信号量】三个线程顺序打印1--100
这样可以确保在后续的代码中,只有获得该锁的线程能够进入临界区,从而防止多个线程同时访问共享资源导致数据竞争。是 C++ 标准库中用于管理互斥锁(mutex)的一个对象创建语句,它在作用域内自动管理锁的获取与释放。,你可以确保进入临界区的代码在离开作用域时自动释放锁,从而避免死锁和资源泄漏问题。这会唤醒线程 A,使其结束等待,重新获取锁后检查条件,然后继续执行后续代码。当 unique_lock 对象离开作用域时,自动释放锁。当线程 B 修改了某个数据,并使。的构造函数会自动调用。当执行到这行代码时,
2025-03-15 14:37:20
1391
原创 【linux】【文件】文件权限基础
只有所有者有读、写权限,其它用户没有任何权限(在符号表示法中,go= 表示将用户组和其他用户的权限全部清除。这意味着所有人都对该文件或目录拥有完全的权限,这在某些情况下可能会带来安全风险,因此使用时需谨慎。使用数字(八进制)表示权限时,三个数字分别对应所有者、用户组和其他用户的权限。除了数字表示法外,还可以使用符号表示法来修改权限。命令用于修改文件或目录的权限。只有所有者有读、写权限,其它用户没有任何权限。(所有者、用户组、其他人)对。的读、写、执行权限。例如,下面的命令将为。
2025-03-10 19:49:01
478
原创 【算法】【c++】两个栈实现一个队列
入队时:直接将新元素压入 inStack,保持 O(1) 时间。出队时:如果 outStack 为空,将 inStack 全部转移到 outStack,这个转移过程会将元素顺序反转,从而使得最早入队的元素出现在 outStack 栈顶;如果 outStack 非空,直接操作其栈顶。由于每个元素最多只转移一次,所以整体的均摊时间复杂度是 O(1)。这种设计利用了两个栈之间的顺序反转特性,有效地模拟了队列的 FIFO 行为,同时在实际应用中表现出了高效性。
2025-03-10 19:28:37
1848
原创 【git】【网络】【项目配置运行】HTTP 协议的微型简易 Web 服务器---tinyEasyMuduoWebServer
csdn项目:原文链接:https://blog.youkuaiyun.com/weixin_45178775/article/details/122257814github链接:https://github.com/wyewyewye/tinyEasyMuduoWebServer/blob/main/README.md项目介绍:项目基于C++语言、陈硕老师的muduo网络库、mysql数据库以及jsoncpp,服务器监听两个端口,一个端口用于处理http请求、另一个端口用于处理发送来的json数据。
2025-03-09 23:13:21
1416
原创 【git】ssh配置提交 gitcode-ssh提交
之前一直用的是gitee和阿里云的仓库,前两天想在gitcode上面备份一下我的打洞代码和一些资料 就直接使用http克隆了下来。在提交的时候他一直会让我输入账号和密码,但是我之前根本没有设置过这个,根本没法搞,后来试了登陆的账号和密码也不是,找了半天也找不到,后来还是干脆配置一下ssh算了在这里设置:我用的是RSA类型。
2025-03-07 18:48:12
739
原创 【AI】【大模型】deepseek本地部署
大模型部署这里,我之前确实没有接触过,只是大概知道可以将大模型下载下来在本地跑,并且大部分使用的语言是python,此次也只是一个简单的尝试。使用到的软件分别是 ollama+AnythingLLM,下载的大模型是 deepseek-r1:1.5b。
2025-03-06 14:40:05
785
原创 【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(成功版)
【Linux】【网络】UDP打洞–>不同子网下的客户端和服务器通信(成功版)根据上个文章的分析 问题可能出现在上面 我这里重新查找资料怀疑:1 NAT映射可能。2 NAT映射保存,并且 NAT 可能会在短时间内,需要一直保持映射。有些 NAT 设备会因为短时间内没有数据而回收端口映射,导致服务器提供的 IP:Port 失效。:双方定期发送保活包以防 NAT 超时关闭映射。3 服务器只是向双方发送了IP和端口后直接退出了,并未发送数据包给客户端,导致。
2025-03-04 20:36:15
1520
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅