- 博客(46)
- 收藏
- 关注
原创 leetcode128最长连续序列 golang版
题目:给定一个未排序的整数数组 nums 找出数字连续的最长序列,不要求序列 元素在原数组中连续 的长度请你设计并实现时间复杂度为On的算法解决此问题示例 1:输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。关键 用哈希表来记录这个字符是否出现过 然后遍历数组 对于每个数字 检查它是否是某个序列的开始,并更新最大长度做不出来可以先看看题目,实在没思路再往下看看思路。
2024-10-15 22:46:30
498
原创 go基础知识归纳总结
行为:有缓冲的 channel 容许在 channel 中存储一定数量的数据元素,发送方可以在 channel 未满时继续发送数据,而无需等待接收方。由于是无缓冲的 channel,main goroutine 在发送 42 时会阻塞,直到 goroutine 从 channel 中接收到这个值,程序才会继续执行。有缓冲的 channel 提供更多的灵活性,允许在并发处理中有更大的自由度,不需要完全同步。由于有缓冲的存在,可能会导致发送和接收之间的时间不同步,增加调试和排查问题的难度。
2024-09-08 11:13:13
1680
原创 leetcode198打家劫舍
dp[i] 的值取决于是否选择偷窃当前的房屋 i,以及偷窃之前房屋的情况。递推公式 dp[i] = max(dp[i-1], dp[i-2] + nums[i]) 就是基于这两种选择所能获得的最大金额计算出来的。最终,dp[n-1] 就是小偷在 n 间房屋内所能获得的最大金额。动态规划(Dynamic Programming,简称 DP)是一种算法设计技巧,用于解决具有重叠子问题和最优子结构性质的问题。它的核心思想是通过将问题分解为更小的子问题,逐步求解并保存这些子问题的解,从而构建出原问题的解。
2024-08-15 14:30:46
1032
原创 leetcode39组合总和
给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。candidates 中的 同一个 数字可以 无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的。对于给定的输入,保证和为 target 的不同组合数少于 150 个。示例 1:输入:candidates = [2,3,6,7], target = 7。
2024-08-12 18:43:52
2027
原创 leetcode11盛最多水的容器
双指针是一种常用的算法技巧,特别适用于数组和链表等线性数据结构。它通过使用两个指针(或索引)来迭代或扫描数据结构,常用于以下几类问题:对撞指针(Two Pointers Technique):两个指针分别从数据结构的两端向中间移动,直到它们相遇。这种方法常用于求解数组中的特定对(例如,两数之和问题、盛最多水的容器问题)。快慢指针(Tortoise and Hare Algorithm):一个指针每次移动一步,另一个指针每次移动两步。这种方法常用于检测链表中的环或找到链表的中间节点。
2024-08-11 12:59:24
980
原创 leetcode205 同构字符串 golang版
在这个算法中使用 byte 作为 map 的键类型主要是因为:字符串的每个字符在 Go 中可以直接被表示为 byte 类型(如果字符是 ASCII 字符)。byte 类型的存储和处理更加高效,节省了内存和计算资源。避免了不必要的类型转换,提高了代码的性能和可读性。因此,使用 byte 作为键类型是一个符合 Go 语言设计理念的选择,特别是在处理字符串时。两个字符串是同构的,如果 s 中的字符可以通过某种一对一的映射关系被替换为 t 中的字符,且所有字符的出现顺序必须保持一致。例子分析。
2024-08-09 13:30:45
925
原创 go包管理
通过glide.yaml记录包的版本依赖信息,glide.lock文件追踪每个包的具体修改。依赖查找顺序: vendor目录(没有) ->GOPATH(没有)->(GOROOT)依赖包存储目录 GOMODULE模式下 依赖包 GOPATH/pkg/mod。go.mod只在依赖包不含go.mod文件时,才会记录间接依赖包版本。依赖包存储目录 GOPATH模式下 依赖包 GOPATH/src。若有本地缓存有依赖包,计算包的hash并与go.sum记录对比。
2024-07-29 12:01:50
331
原创 ubuntu20.4安装docker
sudo apt-get install docker-ce= docker-ce-cli= containerd.io # 将需要的版本替换VERSION_STRING进行安装,例如 5:20.10.17。查看状态:sudo systemctl status docker。启动:sudo systemctl start docker。停止:sudo systemctl stop docker。其他:安装特定版docker。
2024-07-26 10:15:08
589
原创 消息队列设计一个幂等的消费逻辑golang版
设计幂等的消费逻辑的关键是确保每条消息只被处理一次,即使在网络故障或消费者重启的情况下。通常使用唯一的消息ID和持久化存储来记录处理过的消息ID。
2024-06-30 15:06:32
315
原创 一致性哈希算法golang版本
一致性哈希(Consistent Hashing)是一种分布式系统中常用的算法,用于在节点(如缓存服务器)之间均匀分配数据。它的核心思想是将所有可能的哈希值组织成一个环形结构,并将数据和节点通过哈希值映射到这个环上。这样在添加或删除节点时,只需重新分配极少量的数据,从而实现负载均衡和高可用性。简单说:将节点均匀的分布,由一个环形结构,来将这些节点映射,实现负载均衡和高可用效果。
2024-06-30 14:35:02
397
原创 leetcode 35题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
【代码】leetcode 35题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
2024-06-29 22:58:05
190
原创 golang-b站外包面试题-解析
https://cloud.tencent.com/developer/article/2003084 腾讯大佬示例。mysql常用存储引擎 MyISAM、InnoDB、Memory, InnoDB在mysql5.5之后的默认引擎。它是如何存储数据,如何为存储的数据建立索引、更新、查询的实现方法。b+tree的叶子节点存储数据是有序的,方便范围查询。b树的I/O磁盘次数比b+tree多。b树的子节点存储的是主键索引。聚簇和非聚簇索引有什么区别?建立联合索引和联合索引使用。索引充当的是数据的目录。
2024-06-25 10:45:38
987
1
原创 mysql解压版本安装5.7
id=523570 mysql官网。net stop server 可以停止mysql服务。让输入密码 此处还未设置 直接回车确认就进入数据库啦。运行这个命令 就会出现上面data文件目录。执行 quit重新输入密码登录即可。运行此命令成功启动Mysql。创建 my.ini文件。
2024-06-24 16:08:44
276
原创 golang-map简单入门
统计map中数字出现的次数。判断是否有值存在map中。map初始化,简单使用。delete删除map。切片值为map如何赋值。map值为切片如何赋值。
2024-06-21 14:21:04
371
原创 01-基于原生golang实现一个简单blog-项目搭建-模板简单使用
第一步当然是go mod init youremail.com。通过{{.}}语法可以获取到自己创建的信息。
2024-06-12 16:19:36
173
原创 redis知识点总结
redis是一个基于内存的数据库,对数据的读写都在内存中完成,因此读写速度非常快,常用于缓存,消息队列,分布式锁等场景。除此之外,redis还支持事务,持久化,Lua脚本,多种集群方案,哨兵模式,切片集群,主从复制模式,发布/订阅模式,内存淘汰机制,过期删除机制。
2024-06-12 11:59:11
376
原创 如何实现LRU LFU算法 缓存淘汰算法
链表的不同在于,它并不需要一块连续的内存空间,它通过指针将一组零散的内存串联一起。一般在程序中声明一块连续的存储空间来存储,对内存的要求比较高。
2024-06-11 22:45:46
218
原创 orderby工作原理总结
参考文章https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/MySQL%E5%AE%9E%E6%88%9845%E8%AE%B2/16%20%20%E2%80%9Corder%20by%E2%80%9D%E6%98%AF%E6%80%8E%E4%B9%88%E5%B7%A5%E4%BD%9C%E7%9A%84%EF%BC%9F.md。
2024-06-05 12:44:46
200
原创 解决Mysql:1055SELECT list is not in GROUP BY clause and contains nonaggregated
具体来说,当MySQL的sql_mode设置为only_full_group_by时,它要求SELECT列表中的非聚合列必顋在GROUP BY子句中,或者是函数依赖于GROUP BY子句中的列。换句话说,如果在GROUP BY子句中指定了某些列进行分组,那么SELECT列表中的非聚合列必须与GROUP BY子句中的列相关联。这个错误提示是因为在使用了GROUP BY子句的情况下,SELECT列表中的非聚合列(没有使用聚合函数进行处理的列)必须出现在GROUP BY子句中。
2024-06-03 10:30:40
502
原创 数据结构与算法数组两题two_sum和three_sum写好详细注释
【代码】数据结构与算法数组两题two_sum和three_sum写好详细注释。
2024-05-29 16:42:48
88
原创 kali安装docker命令
Compose 文件:Docker Compose 使用 YAML 格式的配置文件,定义了应用程序的各个组件、每个组件对应的 Docker 镜像、相应的服务、网络等。容器(Container):Docker 中的基本单位,它是一个轻量级的实例化软件包,可以将应用程序和其依赖项打包在一起,在不同的环境中快速、一致地运行。Dockerfile:一个文本文件,用于定义 Docker 镜像,包含了创建镜像的所有指令,例如从哪个基础镜像构建、安装哪些软件等。
2024-05-18 11:25:38
441
原创 go微服务初探
众所周知把大象放进冰箱只需三步那么开发一个基本的user_service需要几步呢1.首先建表数据库2.创建protobuf消息3.创建消息实例接口4.启动服务5.测试。
2024-05-17 21:24:53
370
原创 golang关于md5加密
3.抗修改性 对元数据进行任何一个字节修改,md5值差别就很大。1.压缩性 任意长度数据 算出的md5值固定长度。2.容易计算 从源数据计算出md5值很容易。生成一个指定长度的摘要字符串。进行密码随机生成和加密。5.不可逆,不可反解。
2024-05-15 18:05:09
581
原创 2024 docker创建一个自定义网络
注意:确保你的容器内部的服务确实在 27017 端口上运行,否则端口映射不会工作。同时,确保宿主机上的 27017 端口没有被其他服务占用。-p 27017:27017 将宿主机的 27017 端口映射到容器的 27017 端口。name my_container 给容器命名为 my_container。–network yapi 将容器连接到 yapi 网络。my_container_image是你要运行的镜像名称。-d 表示在后台运行容器。
2024-05-12 19:48:56
259
原创 mysql:一条sql的新路历程
参考https://xiaolincoding.com/mysql。通过这个参数控制默认是8个小时,如果空闲超过八小时就会断开连接。mysql是进行TCP协议连接的需要三次握手进行连接。可以通过max_connections参数来控制数量。如果连接处于空闲状态会一直占用连接器资源吗?连接器 进行用户的身份和权限进行校验。mysql定义了最大空闲连接时间。成功 保存信息 进行下一步操作。失败 返回错误信息 给客户端。如何解决连接长期占用问题?如何查看客户端有多少个?
2024-04-17 17:38:34
144
原创 go环境变量补充
用于指定Go语言环境的根目录,也就是Go语言的安装目录。除了Go语言的自带工具外,${GOROOT}/src下面的.go文件中的函数都可以被导入和引用。例如fmt.Printf()…等。
2024-04-06 12:32:00
149
1
原创 02 golang入门之顺序编程变量流程控制
预定义常量有这些 true,false,iotaconst (c1 //1c2 //2c3 //3。
2024-03-08 14:52:53
435
1
原创 01-go基础之Hello world
package main 是一个特殊的package main是程序的主入口。fmt.Println()可以打印一个字符串 并换行。可以使用go run main.go执行主程序。import 声明必须跟在package之后。fmt 是一个go内置包。
2024-03-08 14:13:50
92
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人