- 博客(13)
- 收藏
- 关注
原创 go的高并发原理
Go语言由Google工程师团队于2007年开始设计,2009年正式发布。它是一门天生支持高并发的语言,那它为什么天生支持高并发呢?下面是笔者对此发表的一些见解。协程革命:用户态轻量线程+智能调度,解决传统线程资源瓶颈并发原语:Channel+CSP模型实现安全的并发通信运行时优化:Netpoller统一网络IO模型,GC演进保障内存安全工具链支撑:内置race detector、pprof等工具完善开发生态。
2025-02-26 15:37:40
950
原创 go语言实现跳表
跳表(Skip List)是一种用于有序元素快速检索的概率性数据结构,由 William Pugh 于1989年提出。它结合了链表和二叉搜索树的特点,在平均情况下能实现**O(log n)**时间复杂度的插入、删除和查找操作。head *node // 头节点(哨兵节点)maxLevel int // 当前最大层数key int // 存储的键val int // 存储的值next []*node // 各层的后继指针数组实现简单:相比红黑树等平衡树结构,代码量减少50%以上高效并发。
2025-02-23 20:42:42
829
原创 URL 动态加密的 Go 实践
URL 动态加密是指通过对 URL 中的查询参数进行加密,使得 URL 本身和其参数在传输过程中具有一定的安全性。加密数据:对 URL 中的敏感数据进行加密,确保数据在传输过程中不被第三方窃取。签名:通过生成签名,确保 URL 内容没有被篡改。动态密钥:采用动态生成的密钥来进行加密和解密,以增强安全性。通过这篇文章,我们学习了如何使用 Go 实现 URL 动态加密,包括了密钥管理、RSA 和 AES 加密算法的应用、签名验证等关键技术。
2025-01-13 20:36:54
876
原创 三台ubuntu22.0.4虚拟机搭建Hadoop+Hive集群
在搭建 Hadoop 和 Hive 集群的过程中,笔者遇到了一些常见的坑。为了帮助其他同学减少踩坑的机会,特此总结这篇文章,希望能帮助大家顺利完成环境搭建。本文介绍了如何在 VMware 上搭建一个简单的 Hadoop 集群和 Hive 环境。关键步骤包括配置主机名、设置 SSH 免密登录、安装 Java 和 Hadoop、配置 Hive 与 MySQL,以及启动相关服务。完成这些步骤后,你将拥有一个可以处理大数据的基础环境,能够使用 Hive 进行 SQL 查询和数据分析。
2024-12-26 23:51:17
1245
原创 解析倒排索引
倒排索引是一种高效的数据结构,用于快速存储和检索文档中的词项。它将多个关键词映射到包含这些词项的文档ID,特别适合文本检索和搜索引擎。相比于正排索引,倒排索引能快速响应复杂查询,利用空间更高效,并在文档和词项数量增加时保持良好的性能。广泛应用于搜索引擎、文档检索系统和自然语言处理等领域。其实现方式多样,使用位图等结构可以提高检索速度和效率。
2024-11-05 00:14:42
1289
原创 BitMap代码实现(go语言版本)
Bitmap 是一种空间效率高、查询效率快的数据结构,特别适合海量布尔数据的存储与集合操作。本实现采用高精度数处理、大规模并行操作与并发控制的设计,既支持超大数据集,又保证了数据的并发安全性,非常适合在大数据处理、权限控制、去重等应用场景中使用。
2024-11-02 21:58:01
997
原创 根据go结构体反编译生成proto的message
你别说还真有用, 当你想重构你的项目的时候, 或者你想rpc调用其他语言时, 这个就不用你一个一个去编写message了,而是根据你的go结构体直接生成, 简洁高效(好吧, 一般人也不会有这种需求, 有也直接发给ai就行, 不过各位看官就当看个乐子, 学习下也可以)随机读取包含go的结构体文件, 然后读取每个结构的内容, 以及结构体名字, 通过fmt.Sprintf嵌入到准备好的模板中, 生成新的可执行go文件, 这样就可以生成proto文件了。读取go 文件, 根据type 分割 go 结构体,
2024-08-26 21:31:58
506
原创 yaml文件转成go结构体
这是程序的主要函数, 通过遍历每一个键值对(map), 使用determineType函数获取对应的go的类型, 如果该类型为map[string]interface{}, 说明该函数为嵌套的结构体, 应该递归去生成, 如果 为[]interface{}, 则说明是数组类型. toCamelCase将yaml下划线的命名规范改成驼峰式。你是不是有过这种烦恼?自己写的配置yaml文件要把配置信息弄到go的结构体里, 需要我们一个一个把go的结构体代码敲出来, 过程很繁琐, 很影响开发的效率和开发的热情.
2024-08-22 23:39:15
372
原创 【Ubuntu22.04配置k8s集群】
为了防止机器之间的请求被防火墙拦截, 需要把3台机器的防火墙都关了(这里是为了省事, 测试环境中使用, 上线时请开放对应所需端口), 另外我们要把iptables也关了。这个只是示例, master启动完成后会有展示一行类似的命令, copy到从机上运行即可, 如果找不到命令。编辑/etc/resolv.conf, 将nameserver后面跟着的地址改成master的地址。同时在3台机子上进行下列操作, ip地址改成自己的,使用ifconfig命令查看。需要保证3台机器上的时间是同步的, 这里我们使用。
2024-07-12 14:26:49
1828
1
原创 微信小程序+gorm+gin+jwt实现登录认证
gorm.Model} //创建用户登录标签var Msk []byte = []byte("nbyyyds666")//加密串// WxSession 微信登陆接口返回session。
2023-04-24 22:36:40
1181
2
原创 ubuntu初始修改MySQL root密码
如果提示如下错误的话,可能是密码等级太低导致,可以执行下列语句修改限制。这里不同版本可能修改的语句不同。首先使用查看初始账户和密码。切换到mysql这个用户。
2023-04-24 14:54:35
916
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人